Merge branch '3.0' into docs/skills-editor-api

This commit is contained in:
Guobin Yue 2026-05-18 23:42:31 +08:00 committed by GitHub
commit 7444551a66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 548 additions and 523 deletions

View File

@ -16,14 +16,14 @@ jobs:
uses: actions/checkout@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}

View File

@ -18,7 +18,7 @@ jobs:
ref: "gh-pages"
- uses: actions/setup-python@v5
with:
python-version: 3.9
python-version: 3.12
- name: Merge changes from 3.0 branch
run: |
git config user.name github-actions

View File

@ -1,5 +1,64 @@
# Change Log
## 3.1.0a2 12/05/2026
* Bundle web-ui v3.1.0a2
* fix: surface tshark stderr errors to LLM, not just log them
* fix: hint LLM about -c behavior when tshark returns empty with -c
* fix: update search_fields examples to use existing field names
* fix: reject multi-keyword search_fields, single keyword only
* fix: document action/query params in PacketAnalysisTool description
* feat: add search_fields action to PacketAnalysisTool for real-time field lookup
* feat: validate tshark -e field names before running analysis
* fix: document -c behavior caveat in PacketAnalysisTool description
* fix: demote loader-level load logs to DEBUG, info already reported by manager
* fix: promote skills/prompts load logs to INFO level
* fix: load packet analysis protocols during skills initialization
* feat: add PacketAnalysisSkillsTool
* fix: remove remaining quoted example from tool input docstring
* fix: use shlex.split for tshark_args parsing
* feat: add packet analysis workflow to tool description
* refactor: remove old PacketCaptureTool, replaced by PacketAnalysisTool
* feat: add protocol-oriented packet analysis tool
* docs: add roadmap docs for planned features
* feat: require superadmin for /reload/skills endpoint
* fix: remove background init timeout and allow skills reload retry
* deps: add PyYAML and GitPython to ai-requirements.txt
* feat: add fault injection system and external skills repository
* fix: Disable DeepSeek thinking mode to avoid reasoning_content errors
* fix: Skip offline compute nodes during project import
* fix: Import status module in project.py
* fix: Handle connection errors when stopping node console
* refactor: Remove MD5 calculation from node files listing
* fix: Export NodeFile schema to schemas module
* feat: Add detailed metadata to node files listing
* feat: Add API endpoint to list node files
* Fix snapshot restore does not work after export/import of project
* Warn to use 64-bit IOU images. Fixes #2716 32-bit IOU image support has been removed from the GNS3 VM.
* Fix: Improve Docker container deletion error logging
* Fix: Add exponential backoff to compute reconnection attempts
* Fix: Check compute connectivity before node creation in open()
* Fix: Check compute connectivity before open() during project deletion
* Fix: Add error logging when closing/deleting projects on computes
* Fix: Skip add_compute for existing computes when opening projects
* feat: add AI provider config files to .gitignore
* Fix: Use _computes instead of _project_created_on_compute for deletion check
* Fix: Check compute connection status before project deletion
* fix: extend remote compute image path conversion to all node types
* fix: send relative image path to remote compute nodes
* fix: handle directory access for static web-ui routes
* fix: add duplicate name validation when updating templates
* fix: avoid AttributeError when password is not provided in compute update
* fix: improve hostname validation error messages with allowed characters
* feat(compute): Fix Dynamips to listen on the internal port when ssh is used for auxiliary console
* feat(compute): Fix ambiguous log message related to the active console transport.
* feat(compute): Updated server host key to use the secure ssh-ed25519 instead of old ssh-rsa algorithm
* feat(compute): Fix missing SSH wrapping for auxiliary console
* feat(compute): Added AsyncioSSHServer dedicated tests
* feat(compute): add SSH console type support
* fix: include error details in LLM model config failure response
* Fix telnet console silent-proxy hang on non-ConnectionError exit (#2344)
## 2.2.59 08/05/2026
* Sync appliances

View File

@ -34,4 +34,4 @@ COPY . /gns3server
RUN mkdir -p ~/.config/GNS3/3.0/
RUN cp scripts/gns3_server.conf ~/.config/GNS3/3.0/
RUN python3 -m pip install --break-system-packages .
RUN python3 -m pip install --break-system-packages --ignore-installed .

View File

@ -1,41 +1,56 @@
{
"appliance_id": "088df570-f637-46f5-8a68-85acde538e5e",
"appliance_id": "8fecbf89-5cd1-4aea-b735-5f36cf0efbb7",
"name": "BIRD",
"category": "router",
"description": "The BIRD project aims to develop a fully functional dynamic IP routing daemon primarily targeted on (but not limited to) Linux, FreeBSD and other UNIX-like systems and distributed under the GNU General Public License.",
"vendor_name": "CZ.NIC Labs",
"vendor_url": "http://bird.network.cz/",
"documentation_url": "http://bird.network.cz/?get_doc&f=bird.html",
"vendor_url": "https://bird.network.cz",
"documentation_url": "https://bird.network.cz/?get_doc&f=bird.html&v=20",
"product_name": "BIRD internet routing daemon",
"registry_version": 4,
"status": "stable",
"maintainer": "GNS3 Team",
"maintainer_email": "developers@gns3.net",
"usage": "\n*** BIRD v1 is end-of-life ***\nPlease use the BIRD2 appliance.\n\nConfigure interfaces in /opt/bootlocal.sh, BIRD configuration is done in /usr/local/etc/bird",
"maintainer": "Bernhard Ehlers",
"maintainer_email": "dev-ehlers@mailbox.org",
"usage": "Username:\tgns3\nPassword:\tgns3\nTo become root, use \"sudo -s\".\n\nNetwork configuration:\nsudo nano /etc/network/interfaces\nsudo systemctl restart networking\n\nBIRD:\nRestart: sudo systemctl restart bird\nReconfigure: birdc configure",
"port_name_format": "eth{0}",
"qemu": {
"adapter_type": "e1000",
"adapter_type": "virtio-net-pci",
"adapters": 4,
"ram": 128,
"hda_disk_interface": "ide",
"ram": 512,
"hda_disk_interface": "scsi",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "allow"
},
"images": [
{
"filename": "bird-tinycore64-1.5.0.img",
"version": "1.5.0",
"md5sum": "08d50ba2b1b262e2e03e4babf90abf69",
"filesize": 22413312,
"filename": "bird2-debian-2.14.qcow2",
"version": "2.14",
"md5sum": "029cf1756201ee79497c169502b08b88",
"filesize": 303717376,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "http://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/bird-tinycore64-1.5.0.img"
"direct_download_url": "https://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/bird2-debian-2.14.qcow2"
},
{
"filename": "bird2-debian-2.0.12.qcow2",
"version": "2.0.12",
"md5sum": "435218a2e90cba921cc7fde1d64a9419",
"filesize": 287965184,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "https://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/bird2-debian-2.0.12.qcow2"
}
],
"versions": [
{
"name": "1.5.0",
"name": "2.14",
"images": {
"hda_disk_image": "bird-tinycore64-1.5.0.img"
"hda_disk_image": "bird2-debian-2.14.qcow2"
}
},
{
"name": "2.0.12",
"images": {
"hda_disk_image": "bird2-debian-2.0.12.qcow2"
}
}
]

View File

@ -1,57 +0,0 @@
{
"appliance_id": "8fecbf89-5cd1-4aea-b735-5f36cf0efbb7",
"name": "BIRD2",
"category": "router",
"description": "The BIRD project aims to develop a fully functional dynamic IP routing daemon primarily targeted on (but not limited to) Linux, FreeBSD and other UNIX-like systems and distributed under the GNU General Public License.",
"vendor_name": "CZ.NIC Labs",
"vendor_url": "https://bird.network.cz",
"documentation_url": "https://bird.network.cz/?get_doc&f=bird.html&v=20",
"product_name": "BIRD internet routing daemon",
"registry_version": 4,
"status": "stable",
"maintainer": "Bernhard Ehlers",
"maintainer_email": "dev-ehlers@mailbox.org",
"usage": "Username:\tgns3\nPassword:\tgns3\nTo become root, use \"sudo -s\".\n\nNetwork configuration:\nsudo nano /etc/network/interfaces\nsudo systemctl restart networking\n\nBIRD:\nRestart: sudo systemctl restart bird\nReconfigure: birdc configure",
"port_name_format": "eth{0}",
"qemu": {
"adapter_type": "virtio-net-pci",
"adapters": 4,
"ram": 512,
"hda_disk_interface": "scsi",
"arch": "x86_64",
"console_type": "telnet",
"kvm": "allow"
},
"images": [
{
"filename": "bird2-debian-2.14.qcow2",
"version": "2.14",
"md5sum": "029cf1756201ee79497c169502b08b88",
"filesize": 303717376,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "https://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/bird2-debian-2.14.qcow2"
},
{
"filename": "bird2-debian-2.0.12.qcow2",
"version": "2.0.12",
"md5sum": "435218a2e90cba921cc7fde1d64a9419",
"filesize": 287965184,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "https://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/bird2-debian-2.0.12.qcow2"
}
],
"versions": [
{
"name": "2.14",
"images": {
"hda_disk_image": "bird2-debian-2.14.qcow2"
}
},
{
"name": "2.0.12",
"images": {
"hda_disk_image": "bird2-debian-2.0.12.qcow2"
}
}
]
}

View File

@ -58,7 +58,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://802f8f0336dbfdf312ac94641ea9e8ff@o19455.ingest.us.sentry.io/38482"
DSN = "https://2fe45e33c13e7f8cc1f5483e323765f8@o19455.ingest.us.sentry.io/38482"
_instance = None
def __init__(self):

View File

@ -0,0 +1 @@
import{$ as a}from"./chunk-6EPHFCHO.js";import"./chunk-LG2N72QL.js";export{a as TopologySummaryComponent};

View File

@ -1 +0,0 @@
import{Qf as a}from"./chunk-UKWNOQKZ.js";export{a as TopologySummaryComponent};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -22,8 +22,8 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "3.1.0.dev2"
__version_info__ = (3, 1, 0, 99)
__version__ = "3.1.0a2"
__version_info__ = (3, 1, 0, -99)
if "dev" in __version__:
try: