packet-tracer-skill 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +424 -73
  2. package/README.md +557 -442
  3. package/SKILL.md +337 -262
  4. package/bin/packet-tracer-skill.js +29 -2
  5. package/docs/github-launch-ops-0.2.3.md +37 -0
  6. package/docs/github-metadata.md +6 -4
  7. package/docs/hero-demo-plan.md +1 -1
  8. package/docs/home-iot-donor-proof.md +4 -4
  9. package/docs/l2-security-qos-proof.md +1 -1
  10. package/docs/packet-tracer-feature-gap-atlas.md +4 -4
  11. package/docs/post-launch-follow-up.md +9 -5
  12. package/docs/proof-readiness-dashboard.md +69 -0
  13. package/docs/publish-preview-roadmap.md +6 -5
  14. package/docs/release-checklist.md +17 -8
  15. package/docs/release-notes-0.2.4.md +20 -0
  16. package/docs/runtime-truth.md +33 -8
  17. package/docs/security-edge-deepening-proof.md +1 -1
  18. package/examples/README.md +98 -69
  19. package/examples/complex_campus_master_edit_v4.inventory.json +12 -2
  20. package/examples/gallery.md +94 -6
  21. package/examples/home_iot_cli_edit_v1.inventory.json +11 -2
  22. package/examples/index.json +932 -4
  23. package/examples/local-sample-evidence.json +24 -0
  24. package/examples/proof-cards.json +117 -0
  25. package/examples/service_heavy_cli_edit_v1.inventory.json +11 -2
  26. package/package.json +60 -53
  27. package/pytest.ini +9 -0
  28. package/references/packettracer-sample-catalog.json +45287 -4525
  29. package/references/packettracer-sample-catalog.md +599 -259
  30. package/references/proof-readiness-candidates.json +352 -0
  31. package/scripts/build_examples_index.py +228 -35
  32. package/scripts/build_sample_catalog.py +24 -44
  33. package/scripts/corpus_runner.py +430 -0
  34. package/scripts/coverage_matrix.py +1842 -1812
  35. package/scripts/donor_cache.py +354 -0
  36. package/scripts/donor_diagnostics.py +3 -1
  37. package/scripts/generate_pkt.py +8762 -4228
  38. package/scripts/intent_parser.py +2242 -1657
  39. package/scripts/local_donors.py +340 -0
  40. package/scripts/packet_tracer_env.py +846 -391
  41. package/scripts/pkt_annotate.py +218 -0
  42. package/scripts/pkt_codec.py +420 -181
  43. package/scripts/pkt_editor.py +2405 -1703
  44. package/scripts/pkt_transformer.py +1072 -727
  45. package/scripts/pkt_verify.py +461 -0
  46. package/scripts/runtime_doctor.py +80 -29
  47. package/scripts/sample_catalog.py +1372 -1250
  48. package/scripts/twofish_diagnostics.py +48 -31
  49. package/scripts/usage_ledger.py +218 -0
  50. package/scripts/vendor/README.md +44 -37
  51. package/scripts/vendor/twofish_pure.py +321 -0
  52. package/scripts/workspace_repair.py +548 -508
  53. package/templates/pt900/donors/README.md +15 -0
@@ -0,0 +1,24 @@
1
+ {
2
+ "schema_version": "examples.truth.v2",
3
+ "source": "examples/local-sample-evidence.json",
4
+ "available": true,
5
+ "policy": "Local user-supplied samples are evidence inputs only, not curated donor truth or npm package content.",
6
+ "audit_source": "output/local-sample-audit.json",
7
+ "total_files": 367,
8
+ "decode_success_count": 366,
9
+ "decode_fail_count": 1,
10
+ "top_capabilities": [
11
+ {"capability": "stp", "sample_count": 348, "examples": ["09. 2Switches_3Routers_Rime_New.pkt", "1-Securing Network Devices and Establish a SSH Session.pkt", "10-IPv4 Static and Default Routes.pkt"]},
12
+ {"capability": "static_route", "sample_count": 87, "examples": ["09. 2Switches_3Routers_Rime_New.pkt", "10-IPv4 Static and Default Routes.pkt", "13.3.2 lab.pkt"]},
13
+ {"capability": "ripv2", "sample_count": 61, "examples": ["10routerEGIRP.pkt", "10RouterRIP.pkt", "13.3.2 lab.pkt"]},
14
+ {"capability": "default_route", "sample_count": 56, "examples": ["10-IPv4 Static and Default Routes.pkt", "13.3.2 lab.pkt", "23i2110.pkt"]},
15
+ {"capability": "ospfv2", "sample_count": 50, "examples": ["11-Single-Area OSPFv2.pkt", "13routerOSPF.pkt", "2020-06-18 OSPF.pkt"]},
16
+ {"capability": "dhcp_pool", "sample_count": 48, "examples": ["10PORTDHCP.pkt", "20211220 VoIP, PortSec, DHCP - finished.pkt", "6-DHCPv4.pkt"]},
17
+ {"capability": "acl", "sample_count": 40, "examples": ["13.3.2 lab.pkt", "2020-06-18 OSPF.pkt", "23i2110.pkt"]},
18
+ {"capability": "ssh_ios", "sample_count": 27, "examples": ["1-Securing Network Devices and Establish a SSH Session.pkt", "16.4.7 lab.pkt", "2020-05-16 AAA NTP For Learnersv3.pkt"]},
19
+ {"capability": "dhcp_relay", "sample_count": 24, "examples": ["2020-04-19 HSRP OGIT PT Lab.pkt", "2020-05-16 AAA NTP For Learnersv3.pkt", "2020-05-20 Routing NTP and more WTW.pkt"]},
20
+ {"capability": "eigrp_ipv4", "sample_count": 22, "examples": ["10routerEGIRP.pkt", "13routerEigrp.pkt", "13routerEigrpFINALIZED.pkt"]},
21
+ {"capability": "etherchannel", "sample_count": 7, "examples": ["20211124 L2 EtherChannel, HSRP, OSPF - empty.pkt", "20211124 L2 EtherChannel, HSRP, OSPF - finished.pkt", "5-Implement Inter-VLAN Routing and Etherchannel.pkt"]},
22
+ {"capability": "bgp", "sample_count": 2, "examples": ["Cisco-networking-projects-main\\BGP\\BGP_3_Router\\BGP_3_ROUTERS.pkt", "Cisco-networking-projects-main\\BGP\\BGP_Class_C\\BGP_Class_C.pkt"]}
23
+ ]
24
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "schema_version": "examples.truth.v2",
3
+ "proof_cards": [
4
+ {
5
+ "schema_version": "examples.truth.v2",
6
+ "artifact_type": "proof_card",
7
+ "name": "ipv4_routing_management_edit_proof",
8
+ "title": "IPv4 Routing / NAT / IOS Management",
9
+ "scenario_family": "ipv4_routing_management",
10
+ "support_level": "edit_proven",
11
+ "capabilities": ["ospfv2", "eigrp_ipv4", "ripv2", "static_route", "default_route", "dhcp_relay", "nat_static", "nat_dynamic", "pat", "ssh_ios", "ntp_ios", "syslog_ios"],
12
+ "explicit_command": "set R1 ospfv2 1 network 10.0.0.0 wildcard 0.0.0.255 area 0",
13
+ "try_command": "set R1 ospfv2 1 network 10.0.0.0 wildcard 0.0.0.255 area 0",
14
+ "proof_doc": "docs/ipv4-routing-management-proof.md",
15
+ "parity_excerpt": "explicit IPv4 routing/NAT/IOS-management commands are edit_proven; generate_ready=false",
16
+ "refusal_boundary": "No topology synthesis, route convergence proof, ACL object inference, or broad NAT design generation.",
17
+ "does_not_claim": "No topology synthesis, route convergence proof, ACL object inference, or broad NAT design generation.",
18
+ "maturity_summary": {"atlas_status": "edit_proven", "example_status": "proof_card", "donor_backed_ready": false, "generate_ready": false}
19
+ },
20
+ {
21
+ "schema_version": "examples.truth.v2",
22
+ "artifact_type": "proof_card",
23
+ "name": "l2_resiliency_bgp_edit_proof",
24
+ "title": "L2 Resiliency + BGP",
25
+ "scenario_family": "l2_resiliency_routing",
26
+ "support_level": "edit_proven",
27
+ "capabilities": ["bgp", "stp", "rstp", "etherchannel", "lacp", "pagp", "vtp", "dtp"],
28
+ "explicit_command": "set SW1 etherchannel 1 mode active interfaces FastEthernet0/1 FastEthernet0/2",
29
+ "try_command": "set SW1 etherchannel 1 mode active interfaces FastEthernet0/1 FastEthernet0/2",
30
+ "proof_doc": "docs/l2-resiliency-bgp-proof.md",
31
+ "parity_excerpt": "explicit BGP/STP/EtherChannel/VTP/DTP IOS commands are edit_proven; generate_ready=false",
32
+ "refusal_boundary": "No redundant link creation, STP state validation, BGP convergence proof, or topology generation.",
33
+ "does_not_claim": "No redundant link creation, STP state validation, BGP convergence proof, or topology generation.",
34
+ "maturity_summary": {"atlas_status": "edit_proven", "example_status": "proof_card", "donor_backed_ready": false, "generate_ready": false}
35
+ },
36
+ {
37
+ "schema_version": "examples.truth.v2",
38
+ "artifact_type": "proof_card",
39
+ "name": "l2_security_qos_proof",
40
+ "title": "L2 Security + QoS",
41
+ "scenario_family": "l2_security_monitoring",
42
+ "support_level": "donor_backed_ready",
43
+ "capabilities": ["dot1x", "qos", "dhcp_snooping", "dai", "snmp", "netflow", "span"],
44
+ "explicit_command": "set SW1 dot1x interface FastEthernet0/1 mode auto radius 192.168.1.10 key radius123",
45
+ "try_command": "set SW1 dot1x interface FastEthernet0/1 mode auto radius 192.168.1.10 key radius123",
46
+ "proof_doc": "docs/l2-security-qos-proof.md",
47
+ "parity_excerpt": "dot1x is donor_backed_ready; QoS remains edit_proven; generate_ready=false",
48
+ "refusal_boundary": "No broad NAC design, RADIUS user synthesis, certificate workflow, or end-to-end QoS policy inference.",
49
+ "does_not_claim": "No broad NAC design, RADIUS user synthesis, certificate workflow, or end-to-end QoS policy inference.",
50
+ "maturity_summary": {"atlas_status": "donor_backed_ready", "example_status": "proof_card", "donor_backed_ready": true, "generate_ready": false}
51
+ },
52
+ {
53
+ "schema_version": "examples.truth.v2",
54
+ "artifact_type": "proof_card",
55
+ "name": "security_edge_deepening_proof",
56
+ "title": "Security Edge CBAC/ZFW",
57
+ "scenario_family": "wan_security_edge",
58
+ "support_level": "donor_backed_ready",
59
+ "capabilities": ["cbac", "zfw"],
60
+ "explicit_command": "set R1 zfw zone-pair INSIDE_OUT source inside destination outside policy POLICY1",
61
+ "try_command": "set R1 zfw zone-pair INSIDE_OUT source inside destination outside policy POLICY1",
62
+ "proof_doc": "docs/security-edge-deepening-proof.md",
63
+ "parity_excerpt": "ZFW is donor_backed_ready; CBAC remains edit_proven; generate_ready=false",
64
+ "refusal_boundary": "No ASA GUI/internal mutation, clientless VPN, service-policy synthesis, or broad security topology generation.",
65
+ "does_not_claim": "No ASA GUI/internal mutation, clientless VPN, service-policy synthesis, or broad security topology generation.",
66
+ "maturity_summary": {"atlas_status": "donor_backed_ready", "example_status": "proof_card", "donor_backed_ready": true, "generate_ready": false}
67
+ },
68
+ {
69
+ "schema_version": "examples.truth.v2",
70
+ "artifact_type": "proof_card",
71
+ "name": "voice_collaboration_proof",
72
+ "title": "Voice / Collaboration",
73
+ "scenario_family": "voice_collaboration",
74
+ "support_level": "donor_backed_ready",
75
+ "capabilities": ["voip", "ip_phone", "call_manager"],
76
+ "explicit_command": "set \"Router0\" telephony service source-address 192.168.10.1 port 2000 max-ephones 4 max-dn 4",
77
+ "try_command": "set \"Router0\" telephony service source-address 192.168.10.1 port 2000 max-ephones 4 max-dn 4",
78
+ "proof_doc": "docs/voice-collaboration-proof.md",
79
+ "parity_excerpt": "IOS telephony-service, ephone, and dial-peer paths are donor_backed_ready; generate_ready=false",
80
+ "refusal_boundary": "No Call Manager GUI synthesis, Linksys voice mutation, phone GUI internals, or broad VoIP topology generation.",
81
+ "does_not_claim": "No Call Manager GUI synthesis, Linksys voice mutation, phone GUI internals, or broad VoIP topology generation.",
82
+ "maturity_summary": {"atlas_status": "donor_backed_ready", "example_status": "proof_card", "donor_backed_ready": true, "generate_ready": false}
83
+ },
84
+ {
85
+ "schema_version": "examples.truth.v2",
86
+ "artifact_type": "proof_card",
87
+ "name": "automation_controller_proof",
88
+ "title": "Automation / Controller Scripts",
89
+ "scenario_family": "automation_controller",
90
+ "support_level": "donor_backed_ready",
91
+ "capabilities": ["python_programming", "javascript_programming", "tcp_udp_app"],
92
+ "explicit_command": "set \"Device\" script app \"App Name\" file \"main.py\" content \"print('hello')\"",
93
+ "try_command": "set \"Device\" script app \"App Name\" file \"main.py\" content \"print('hello')\"",
94
+ "proof_doc": "docs/automation-controller-proof.md",
95
+ "parity_excerpt": "existing Python, JavaScript, and TCP/UDP script files are donor_backed_ready; generate_ready=false",
96
+ "refusal_boundary": "No Network Controller GUI synthesis, Blockly graph mutation, VM/IOx workflow generation, or new app/file creation.",
97
+ "does_not_claim": "No Network Controller GUI synthesis, Blockly graph mutation, VM/IOx workflow generation, or new app/file creation.",
98
+ "maturity_summary": {"atlas_status": "donor_backed_ready", "example_status": "proof_card", "donor_backed_ready": true, "generate_ready": false}
99
+ },
100
+ {
101
+ "schema_version": "examples.truth.v2",
102
+ "artifact_type": "proof_card",
103
+ "name": "industrial_programming_proof",
104
+ "title": "Industrial Programming",
105
+ "scenario_family": "industrial_iot",
106
+ "support_level": "donor_backed_ready",
107
+ "capabilities": ["real_http", "real_websocket"],
108
+ "explicit_command": "set \"Py: real http server 2\" script app \"Real HTTP Server\" file \"main.py\" content \"print('updated')\"",
109
+ "try_command": "set \"Py: real http server 2\" script app \"Real HTTP Server\" file \"main.py\" content \"print('updated')\"",
110
+ "proof_doc": "docs/industrial-programming-proof.md",
111
+ "parity_excerpt": "Real HTTP and Real WebSocket script-file edits are donor_backed_ready; generate_ready=false",
112
+ "refusal_boundary": "No MQTT broker generation, Profinet/PTP/L2NAT mutation, CyberObserver workflow, or industrial topology generation.",
113
+ "does_not_claim": "No MQTT broker generation, Profinet/PTP/L2NAT mutation, CyberObserver workflow, or industrial topology generation.",
114
+ "maturity_summary": {"atlas_status": "donor_backed_ready", "example_status": "proof_card", "donor_backed_ready": true, "generate_ready": false}
115
+ }
116
+ ]
117
+ }
@@ -1,11 +1,20 @@
1
1
  {
2
+ "schema_version": "examples.truth.v2",
2
3
  "example_name": "service_heavy_cli_edit_v1",
4
+ "artifact_type": "showcase_example",
3
5
  "source_mode": "donor-backed edit",
4
6
  "scenario_family": "service_heavy",
5
- "public_repo_policy": {
7
+ "artifact_policy": {
6
8
  "commit_pkt_binary": false,
7
9
  "commit_inventory_json": true,
8
- "commit_screenshot": false
10
+ "commit_screenshots": true,
11
+ "raw_source_public": false
12
+ },
13
+ "maturity_summary": {
14
+ "atlas_status": "known_working_example",
15
+ "example_status": "known_working_example",
16
+ "donor_backed_ready": true,
17
+ "generate_ready": false
9
18
  },
10
19
  "artifact_paths": {
11
20
  "inventory_json": "examples/service_heavy_cli_edit_v1.inventory.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "packet-tracer-skill",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "description": "Donor-backed Cisco Packet Tracer 9.x skill for natural-language planning, safe-open generation, editing, parity reporting, and runtime diagnostics across coding hosts.",
6
6
  "keywords": [
@@ -54,62 +54,69 @@
54
54
  "doctor": "node bin/packet-tracer-skill.js --doctor",
55
55
  "smoke:parity": "python scripts/generate_pkt.py --parity-report \"campus with VLAN DHCP ACL\""
56
56
  },
57
- "files": [
58
- "SKILL.md",
59
- "LICENSE",
60
- "LICENSES",
61
- "README.md",
57
+ "files": [
58
+ "SKILL.md",
59
+ "LICENSE",
60
+ "LICENSES",
61
+ "README.md",
62
62
  "CONTRIBUTING.md",
63
63
  "CHANGELOG.md",
64
64
  "CITATION.cff",
65
65
  "SECURITY.md",
66
- "CODE_OF_CONDUCT.md",
67
- "requirements.txt",
68
- "requirements-dev.txt",
69
- "bin/packet-tracer-skill.js",
70
- "scripts/*.py",
71
- "scripts/*.ps1",
72
- "scripts/vendor/README.md",
73
- "scripts/vendor/twofish.py",
74
- "templates",
75
- "references/*.json",
76
- "references/*.md",
77
- "examples/README.md",
78
- "examples/gallery.md",
79
- "examples/index.json",
80
- "examples/blueprint_minimal.json",
81
- "examples/*.inventory.json",
82
- "examples/screenshots/*.png",
83
- "docs/curated-donor-registry.md",
84
- "docs/campus-donor-proof.md",
85
- "docs/home-iot-donor-proof.md",
86
- "docs/wan-security-donor-proof.md",
87
- "docs/wireless-advanced-proof.md",
88
- "docs/industrial-programming-proof.md",
89
- "docs/automation-controller-proof.md",
90
- "docs/voice-collaboration-proof.md",
91
- "docs/l2-resiliency-bgp-proof.md",
92
- "docs/ipv4-routing-management-proof.md",
93
- "docs/l2-security-qos-proof.md",
94
- "docs/security-edge-deepening-proof.md",
95
- "docs/generate-ready-pilot-design.md",
96
- "docs/packet-tracer-feature-gap-atlas.md",
97
- "docs/discovery-keywords.md",
98
- "docs/github-discussions-setup.md",
99
- "docs/github-launch-ops-0.2.1.md",
100
- "docs/github-launch-ops-0.2.2.md",
101
- "docs/github-metadata.md",
102
- "docs/hero-demo-plan.md",
103
- "docs/launch-announcement-0.2.1.md",
104
- "docs/launch-announcement-0.2.2.md",
105
- "docs/post-launch-follow-up.md",
106
- "docs/publish-preview-roadmap.md",
107
- "docs/release-checklist.md",
108
- "docs/release-notes-0.2.1.md",
109
- "docs/release-notes-0.2.2.md",
110
- "docs/release-notes-0.2.3.md",
111
- "docs/runtime-truth.md"
112
- ],
66
+ "CODE_OF_CONDUCT.md",
67
+ "requirements.txt",
68
+ "requirements-dev.txt",
69
+ "pytest.ini",
70
+ "bin/packet-tracer-skill.js",
71
+ "scripts/*.py",
72
+ "scripts/*.ps1",
73
+ "scripts/vendor/README.md",
74
+ "scripts/vendor/twofish.py",
75
+ "scripts/vendor/twofish_pure.py",
76
+ "templates",
77
+ "references/*.json",
78
+ "references/*.md",
79
+ "examples/README.md",
80
+ "examples/gallery.md",
81
+ "examples/index.json",
82
+ "examples/proof-cards.json",
83
+ "examples/local-sample-evidence.json",
84
+ "examples/blueprint_minimal.json",
85
+ "examples/*.inventory.json",
86
+ "examples/screenshots/*.png",
87
+ "docs/curated-donor-registry.md",
88
+ "docs/campus-donor-proof.md",
89
+ "docs/home-iot-donor-proof.md",
90
+ "docs/wan-security-donor-proof.md",
91
+ "docs/wireless-advanced-proof.md",
92
+ "docs/industrial-programming-proof.md",
93
+ "docs/automation-controller-proof.md",
94
+ "docs/voice-collaboration-proof.md",
95
+ "docs/l2-resiliency-bgp-proof.md",
96
+ "docs/ipv4-routing-management-proof.md",
97
+ "docs/l2-security-qos-proof.md",
98
+ "docs/security-edge-deepening-proof.md",
99
+ "docs/generate-ready-pilot-design.md",
100
+ "docs/proof-readiness-dashboard.md",
101
+ "docs/packet-tracer-feature-gap-atlas.md",
102
+ "docs/discovery-keywords.md",
103
+ "docs/github-discussions-setup.md",
104
+ "docs/github-launch-ops-0.2.1.md",
105
+ "docs/github-launch-ops-0.2.2.md",
106
+ "docs/github-launch-ops-0.2.3.md",
107
+ "docs/github-metadata.md",
108
+ "docs/hero-demo-plan.md",
109
+ "docs/launch-announcement-0.2.1.md",
110
+ "docs/launch-announcement-0.2.2.md",
111
+ "docs/post-launch-follow-up.md",
112
+ "docs/publish-preview-roadmap.md",
113
+ "docs/release-checklist.md",
114
+ "docs/release-notes-0.2.1.md",
115
+ "docs/release-notes-0.2.2.md",
116
+ "docs/release-notes-0.2.3.md",
117
+ "docs/release-notes-0.2.4.md",
118
+ "docs/runtime-truth.md"
119
+ ],
113
120
  "engines": {
114
121
  "node": ">=18"
115
122
  }
package/pytest.ini ADDED
@@ -0,0 +1,9 @@
1
+ [pytest]
2
+ # Generated labs and their scratch installs live under `output/`, and a bare
3
+ # `pytest` used to walk into them: a vendored `colorama` there ships its own
4
+ # test files, so collection failed with 8 errors before a single test of this
5
+ # repo ran. The suite lives in exactly one place, so say so.
6
+ testpaths = tests
7
+ norecursedirs = output .git .pydeps __pycache__ templates
8
+ markers =
9
+ requires_twofish: test requires a local Packet Tracer Twofish bridge and real .pkt decode/edit runtime