feat(copilot): add copilot_mode field and config command tool

- Add `copilot_mode` field to LLM model configs API with "teaching" (diagnostics only) and "lab_assistant" (full configuration access) modes
- Introduce new `ExecuteMultipleDeviceConfigCommands` tool for executing configuration commands on multiple devices
- Include `tags` field in node data structure for enhanced project management
- Update API documentation examples to reflect new `copilot_mode` field and context limit additions
This commit is contained in:
YueGuobin committed 2026-03-05 16:31:02 +08:00
1 parent 8dc8facb13
commit a777c36a29
10 files changed
+426 -53

No files matched your search

@@ -48,9 +48,14 @@ class LLMModelConfigData(BaseModel):
context_strategy: Literal["conservative", "balanced", "aggressive"] = Field(
"balanced", description="Context trimming strategy: conservative (60%), balanced (75%), aggressive (85%)"
)
copilot_mode: Optional[str] = Field(
None,
description="GNS3-Copilot mode: 'teaching' (diagnostics only) or 'lab_assistant' (full configuration access)"
)
# Allow extra fields for extensibility
model_config = ConfigDict(extra="allow")
# Ensure all fields are included in serialization, even if None
model_config = ConfigDict(extra="allow", populate_by_name=True)
# Request schemas
@@ -71,6 +76,10 @@ class LLMModelConfigCreate(BaseModel):
context_strategy: Literal["conservative", "balanced", "aggressive"] = Field(
"balanced", description="Context trimming strategy"
)
copilot_mode: Optional[str] = Field(
None,
description="GNS3-Copilot mode: 'teaching' (diagnostics only) or 'lab_assistant' (full configuration access)"
)
# Allow extra config fields
model_config = ConfigDict(extra="allow")
@@ -96,6 +105,10 @@ class LLMModelConfigUpdate(BaseModel):
context_strategy: Optional[Literal["conservative", "balanced", "aggressive"]] = Field(
None, description="Context trimming strategy"
)
copilot_mode: Optional[str] = Field(
None,
description="GNS3-Copilot mode: 'teaching' (diagnostics only) or 'lab_assistant' (full configuration access)"
)
# Allow extra config fields
model_config = ConfigDict(extra="allow")