73 Commits

Author SHA1 Message Date
YueGuobin
54775faaf4 feat(copilot): rename copilot modes for clarity and add mode-specific tools
- Rename "teaching" mode to "teaching_assistant" for better clarity
- Rename "lab_assistant" mode to "lab_automation_assistant" to reflect expanded capabilities
- Implement mode-specific tool sets: teaching_assistant gets read-only diagnostic tools only, while lab_automation_assistant gets full diagnostic and configuration tools
- Update API documentation examples to reflect new mode names
- Maintain backward compatibility with default tool set initialization
2026-03-05 21:44:36 +08:00
YueGuobin
2485bfec46 docs: add temperature parameter documentation and code formatting improvements
- Added `temperature` parameter to Chat API documentation with implementation notes
- Improved code formatting in context_manager.py with consistent string quotes and line breaks
- Added section on future runtime LLM parameter override capabilities
- Updated API schemas to include temperature parameter (currently unused but reserved for future implementation)
2026-03-05 20:58:14 +08:00
YueGuobin
a777c36a29 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
2026-03-05 16:31:02 +08:00
YueGuobin
7368ac098a docs: add context limit and strategy to LLM model configs API
- Add `context_limit` as required field for LLM model configurations
- Add `context_strategy` as optional field with three trimming strategies
- Update API documentation with detailed examples for GPT-4o and Claude 3.5 Sonnet
- Clarify that context limit is specified in K tokens (thousands of tokens)
- Update example payloads to reflect current model versions and new fields
2026-03-05 00:40:46 +08:00
YueGuobin
4a017b1a7f feat(chat): add session pinning feature with database migration
- Add `pinned` column to chat_sessions table with default FALSE
- Implement database migration for existing installations using PRAGMA table_info
- Create composite index for pinned + updated_at sorting
- Add pin/unpin API endpoints (PUT/DELETE /sessions/{id}/pin)
- Update session listing to sort by pinned status then updated_at
- Extend ChatSessionsRepository with pin_session method
- Update API documentation to reflect new pinning functionality

The feature allows users to pin important chat sessions to the top of the list. Sessions are sorted with pinned sessions first (by updated_at), followed by regular sessions (by updated_at). Database migration ensures backward compatibility with existing installations.
2026-03-04 23:18:30 +08:00
YueGuobin
03ab9cdf6c feat(chat-api): refactor design document with concise architecture overview
- Replace detailed implementation plan with high-level architecture design
- Focus on core features: project isolation, streaming responses, session management
- Remove FlowNet-Lab reference and implementation specifics
- Streamline document from 1172 to 483 lines for better maintainability
2026-03-04 21:58:23 +08:00
YueGuobin
2df05dff6e feat(api): nest chat endpoints under projects and refactor dependencies
- Change chat router prefix from `/chat` to `/projects/{project_id}/chat`
- Add `dep_project` dependency to inject Project instance into endpoints
- Remove manual project validation in `stream_chat` and use dependency instead
- Add placeholder `list_sessions` endpoint for future session listing
- Update `get_history` endpoint to use project dependency and adjust path
- Improve code organization and error handling for project retrieval
2026-03-04 12:43:36 +08:00
YueGuobin
73de248381 feat(copilot): add user-aware LLM calls and project cleanup
- Modified `llm_call` and `generate_title` functions to accept `config` parameter, extracting `user_id` and `jwt_token` for per-user LLM configuration and API authentication
- Updated `create_base_model_with_tools` and `create_title_model` calls to pass user authentication details
- Added `jwt_token` to state for tool usage in GNS3 API calls
- Integrated chat router into controller API routes under `/chat` endpoint
- Implemented `_cleanup_copilot_agent` method in `Project` class to remove AgentService resources upon project closure, preventing resource leaks
- Enhanced error handling in agent cleanup to avoid interrupting project close operations
2026-03-04 12:26:19 +08:00
YueGuobin
f4723cd083 docs: restructure LLM model configs API documentation for nested config object
Update API documentation to reflect new nested `config` object structure in LLM model configurations endpoints. The response format now encapsulates provider-specific fields (provider, base_url, model, temperature, api_key, max_tokens) within a `config` object, while moving ownership metadata (user_id, group_id, is_default, version, created_at, updated_at) to the top level. This aligns the user-facing endpoints with the group configuration structure and improves API consistency.
2026-03-03 22:47:36 +08:00
YueGuobin
176b39145b docs: update LLM model configs API documentation for group endpoints
- Add note clarifying that GET endpoints for groups return the same structure as user endpoints
- Document LLMModelConfigListResponse schema with default configuration selection logic
- Add comprehensive example for GET group configurations endpoint
- Update endpoint numbering to accommodate new group endpoints
- Ensure consistency between user and group API documentation
2026-03-03 22:39:38 +08:00
YueGuobin
d42fff49a5 feat(docs): enhance LLM model configs API documentation with schema updates
- Add `model_type` field to database schema with supported values (text, vision, stt, tts, multimodal, embedding, reranking, other)
- Add `name` field as table-level column for indexing and filtering
- Add reserved JSONB fields for future extensibility
- Update API request/response schemas to include `model_type` and `name` fields
- Add new `LLMModelConfigWithSource` schema for detailed configuration responses
- Update usage examples to reflect new required fields
- Improve database constraints and indexing documentation
2026-03-03 17:54:30 +08:00
YueGuobin
161b7feb01 feat(api): add optimistic locking to LLM model config updates
- Include `version` field in all LLM model config response schemas
- Add `expected_version` parameter to update endpoints for optimistic locking
- Handle concurrent modification errors with HTTP 409 Conflict status
- Update both user and group config endpoints consistently
2026-03-03 16:59:12 +08:00
YueGuobin
bbd34f1f67 feat(api): add LLM model configurations endpoint and schemas
- Introduce new API route `/access` for managing LLM model configurations
- Add LLMModelConfig model to database models
- Include comprehensive schemas for LLM model config CRUD operations
- Register new router with tags for LLM Model Configurations
2026-03-03 16:34:48 +08:00
grossmj
bdcb6445c7
Use lists for tags instead of dicts 2026-02-23 23:26:42 +08:00
Guobin Yue
66f32cecf2
Merge branch 'GNS3:3.0' into 3.0 2026-02-23 01:37:05 +08:00
YueGuobin
a3616e6d33 feat(api): add tag filtering to nodes and templates endpoints
- Add optional `tags` query parameter to `/nodes` and `/templates` endpoints
- Support filtering by tags in format "key:value" with multiple tags ANDed together
- Example: `?tags=vendor:cisco&tags=model:7200` filters nodes/templates with both tags
- Maintain backward compatibility for existing API usage without tags parameter
2026-02-22 22:52:28 +08:00
grossmj
be4b87e8cd
Update project schema and fix tests 2026-02-22 18:13:08 +08:00
Felix Schulz
8ab34924b5 Add 'created_by' field to track project creator 2026-02-21 22:15:21 +01:00
YueGuobin
56ece7ce88 Add vendor, model and netmiko_device_type fields to templates
Add three new optional fields to the template schema:
- vendor: Device vendor (e.g., Cisco, Juniper, Huawei)
- model: Device model (e.g., ISR4451-X, MX204, NE40E)
- netmiko_device_type: Netmiko device type for automation (e.g., cisco_ios, juniper_junos, huawei)

These fields enable AI/LLM integration to determine the appropriate
Netmiko device type when automating network device configuration.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-20 23:38:00 +08:00
grossmj
5019167098
Fix interface information API endpoint for Cloud/NAT devices 2025-04-16 15:26:56 +07:00
Mark Paronyan
bab173ee52
feat(get_iface): add type information in response 2025-03-23 14:28:27 +00:00
Mark Paronyan
ea2856289a
feat: add endpoint to get iface/udp tunnel from links with Cloud,Nat 2025-03-23 13:46:27 +00:00
grossmj
a7f2b1fddc
Require minimum 8 characters for passwords 2025-02-23 12:05:19 +10:00
grossmj
9122cab6c1
Update schemas to add constraints for values like ram, nvram etc. 2025-02-04 10:39:55 +10:00
grossmj
8c7c17b889
Upgrade dependencies and fix Pydantic warnings 2024-10-31 17:09:52 +10:00
grossmj
a1666dd247
Fix MAC address support for Docker containers 2024-09-18 18:02:35 +07:00
grossmj
990dabb7e4
Do not allow to create a builtin template using the API. 2024-05-17 00:05:25 +07:00
grossmj
998898a471
Fix CPU fractional values for Docker VMs. 2024-04-03 17:15:10 +07:00
grossmj
5475eedce7 Add igb Qemu adapter 2023-10-24 18:33:26 +10:00
grossmj
722512d851 Remove model validator. Fixes https://github.com/GNS3/gns3-gui/issues/3522
Default port name and port segment size are already set in the code when a new node is created.
2023-10-15 11:16:05 +10:00
grossmj
d53ef175f8 DB and API for resource pools 2023-09-07 17:31:11 +07:00
grossmj
0077fd98aa Add required privileges to all endpoints 2023-09-02 17:54:24 +07:00
grossmj
60ce1172e0 Use an ACL table to check for privileges 2023-08-27 18:20:42 +10:00
grossmj
9c456532d0 Pydantic v2 migration 2023-08-04 18:20:06 +10:00
grossmj
9357ac6035 Add builtin field in Appliance model 2023-07-03 21:02:17 +10:00
grossmj
40c265152b Add UEFI boot mode option for Qemu VMs 2023-06-21 17:56:34 +09:30
grossmj
72e3d8f0c1 Fix tests after merge 2023-01-05 12:57:00 +08:00
grossmj
31ae70894e Fix enum use in schemas 2022-07-26 23:17:39 +02:00
grossmj
bfbac2e93a Use generic symbol names 2022-07-25 12:33:40 +02:00
grossmj
b7f4a4cbda Fix VMware VM addition 2022-07-25 11:10:01 +02:00
grossmj
4a1da00601 Make 'vendor_url' and 'maintainer_email' optional for template validation. 2022-07-12 11:55:18 +02:00
grossmj
7d49b80e6b Add controller endpoints to get VirtualBox VMs, VMware VMs and Docker images 2022-06-07 00:38:59 +08:00
grossmj
8a964390f8 Add zstandard compression support for project export 2022-05-31 18:08:34 +07:00
grossmj
9b39bfb845 Detect image type instead of requesting it from user 2022-03-20 16:20:17 +10:00
grossmj
10fdd8fcf4 Add connect endpoint for computes
Param to connect to compute after creation
Report compute unauthorized HTTP errors to client
2021-12-24 13:05:39 +10:30
grossmj
ab4d964d69 Do not require the local server param to open a .gns3 file. Fixes https://github.com/GNS3/gns3-gui/issues/2421 Ref #1460 2021-12-10 15:52:57 +10:30
grossmj
25466a9958 Allow empty compute_id. Ref #1657 2021-11-24 17:25:55 +10:30
grossmj
7ce5e19a6e Fix issue when updating a template 2021-10-23 16:23:19 +10:30
Jeremy Grossmann
16ac9358df
Merge pull request #1986 from GNS3/remove-qemu-legacy-networking
Remove Qemu legacy networking support
2021-10-20 15:44:31 +10:30
grossmj
eab4c8c770 Remove Qemu legacy networking support 2021-10-19 15:32:27 +10:30