synapse-hub 2.2.4 → 2.4.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 (311) hide show
  1. package/.agents/agents/failure-analyst.md +11 -0
  2. package/.agents/agents/live-explorer.md +28 -0
  3. package/.agents/agents/orchestrator.md +20 -4
  4. package/.agents/agents/pom-crafter.md +12 -0
  5. package/.agents/agents/quality-gatekeeper.md +19 -4
  6. package/.agents/agents/test-runner.md +11 -0
  7. package/.agents/rules/communication-style.md +40 -0
  8. package/.agents/rules/context-engineering.md +23 -0
  9. package/.agents/rules/git-push-protocol.md +10 -16
  10. package/.agents/rules/graphify.md +14 -14
  11. package/.agents/rules/mandatory-playwright-live.md +29 -29
  12. package/.agents/rules/mobile_appium_rules.md +132 -0
  13. package/.agents/rules/performance_testing_rules.md +74 -0
  14. package/.agents/rules/systematic-debugging.md +6 -6
  15. package/.agents/skills/agent-orchestration-multi-agent-optimize/SKILL.md +64 -215
  16. package/.agents/skills/agent-orchestration-multi-agent-optimize/examples/swarm_workload_config.json +12 -0
  17. package/.agents/skills/antigravity-test-sentinel/SKILL.md +3 -3
  18. package/.agents/skills/antigravity-test-sentinel/examples/dod_gate_policy.json +11 -0
  19. package/.agents/skills/api-network-mocking-interception/SKILL.md +1 -1
  20. package/.agents/skills/api-network-mocking-interception/examples/network_route_stub.json +9 -0
  21. package/.agents/skills/api-spec-to-e2e-matrix/SKILL.md +9 -9
  22. package/.agents/skills/api-spec-to-e2e-matrix/examples/sample_openapi.json +19 -0
  23. package/.agents/skills/architecture-decision-records/SKILL.md +35 -412
  24. package/.agents/skills/architecture-decision-records/examples/0001-record-architecture-decisions.md +12 -0
  25. package/.agents/skills/auth-session-and-cookie-manager/SKILL.md +1 -1
  26. package/.agents/skills/auth-session-and-cookie-manager/examples/storage_state_sample.json +11 -0
  27. package/.agents/skills/backend-load-and-stress-patterns/SKILL.md +80 -186
  28. package/.agents/skills/backend-load-and-stress-patterns/examples/k6_load_test_sample.js +13 -0
  29. package/.agents/skills/bats-testing-patterns/SKILL.md +1 -1
  30. package/.agents/skills/bats-testing-patterns/examples/cli_runner_test.bats +6 -0
  31. package/.agents/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -614
  32. package/.agents/skills/clean-pom-crafter/SKILL.md +21 -3
  33. package/.agents/skills/clean-pom-crafter/examples/standard_test_case.groovy +28 -28
  34. package/.agents/skills/clean-pom-crafter/references/pom_patterns.groovy +138 -138
  35. package/.agents/skills/code-refactoring-refactor-clean/SKILL.md +2 -2
  36. package/.agents/skills/code-refactoring-refactor-clean/examples/refactored_page_sample.groovy +9 -0
  37. package/.agents/skills/db-state-verifier-and-seeder/SKILL.md +5 -5
  38. package/.agents/skills/db-state-verifier-and-seeder/examples/db_fixture_seed.json +12 -0
  39. package/.agents/skills/e2e-testing-patterns/SKILL.md +1 -1
  40. package/.agents/skills/e2e-testing-patterns/examples/playwright_sharded_config.ts +12 -0
  41. package/.agents/skills/e2e-testing-patterns/resources/implementation-playbook.md +522 -522
  42. package/.agents/skills/failure-autopsy-and-healing/SKILL.md +17 -3
  43. package/.agents/skills/failure-autopsy-and-healing/examples/sample_junit_failure.xml +8 -0
  44. package/.agents/skills/failure-autopsy-and-healing/references/healing_matrix.md +64 -64
  45. package/.agents/skills/failure-autopsy-and-healing/references/qa_investigation_protocol.md +56 -56
  46. package/.agents/skills/failure-autopsy-and-healing/scripts/triage_failures.sh +98 -98
  47. package/.agents/skills/file-and-report-validator/SKILL.md +1 -1
  48. package/.agents/skills/file-and-report-validator/examples/sample_export_schema.json +14 -0
  49. package/.agents/skills/flaky-test-sentinel-and-quarantine/SKILL.md +3 -3
  50. package/.agents/skills/flaky-test-sentinel-and-quarantine/examples/quarantine_registry.json +11 -0
  51. package/.agents/skills/gherkin-to-suite/SKILL.md +103 -0
  52. package/.agents/skills/gherkin-to-suite/examples/checkout.feature +39 -0
  53. package/.agents/skills/gherkin-to-suite/examples/suite_report_sample.json +334 -0
  54. package/.agents/skills/github-actions-templates/SKILL.md +47 -304
  55. package/.agents/skills/github-actions-templates/examples/matrix_test_pipeline.yml +8 -0
  56. package/.agents/skills/graphify-impact-analyzer/SKILL.md +6 -6
  57. package/.agents/skills/graphify-impact-analyzer/examples/dependency_blast_radius.json +8 -0
  58. package/.agents/skills/katalon-cli-runner/SKILL.md +2 -2
  59. package/.agents/skills/katalon-cli-runner/examples/headless_kre_exec.sh +3 -0
  60. package/.agents/skills/katalon-cli-runner/references/groovy-patterns.md +209 -209
  61. package/.agents/skills/katalon-cli-runner/references/katalon-api.md +155 -155
  62. package/.agents/skills/katalon-cli-runner/references/runner_commands.md +67 -67
  63. package/.agents/skills/lam-script-generator/SKILL.md +42 -1
  64. package/.agents/skills/lam-script-generator/examples/user_story_sample.md +8 -0
  65. package/.agents/skills/lean-code-ladder/SKILL.md +83 -0
  66. package/.agents/skills/lean-code-ladder/examples/ladder_walkthrough.md +37 -0
  67. package/.agents/skills/meta-prompt-crafter/SKILL.md +107 -0
  68. package/.agents/skills/meta-prompt-crafter/examples/qa_prompt_template.md +35 -0
  69. package/.agents/skills/persistent-planning-files/SKILL.md +108 -0
  70. package/.agents/skills/persistent-planning-files/examples/task_plan_example.md +56 -0
  71. package/.agents/skills/playwright-live-interaction/SKILL.md +49 -1
  72. package/.agents/skills/playwright-live-interaction/examples/live_probe_script.js +5 -0
  73. package/.agents/skills/playwright-live-interaction/references/advanced_superpowers.md +160 -160
  74. package/.agents/skills/playwright-live-interaction/references/compact_accessibility_snapshots.md +75 -75
  75. package/.agents/skills/playwright-live-interaction/references/recipes.md +388 -388
  76. package/.agents/skills/playwright-live-interaction/references/swarm_orchestration.md +134 -134
  77. package/.agents/skills/playwright-webapp-testing/SKILL.md +93 -0
  78. package/.agents/skills/playwright-webapp-testing/examples/server_lifecycle_playwright.py +63 -0
  79. package/.agents/skills/rbt-manual-testing/SKILL.md +150 -0
  80. package/.agents/skills/rbt-manual-testing/examples/checkout_rbt_manual_suite.md +25 -0
  81. package/.agents/skills/security-dast-sentinel/SKILL.md +54 -135
  82. package/.agents/skills/security-dast-sentinel/examples/dast_scan_config.json +10 -0
  83. package/.agents/skills/self-healing-locator/SKILL.md +24 -10
  84. package/.agents/skills/self-healing-locator/examples/aom_diff_sample.json +16 -0
  85. package/.agents/skills/skillspector-security-guard/SKILL.md +32 -90
  86. package/.agents/skills/skillspector-security-guard/examples/safe_mcp_config.json +12 -0
  87. package/.agents/skills/surgical-coding-principles/SKILL.md +89 -0
  88. package/.agents/skills/surgical-coding-principles/examples/surgical_vs_scope_creep.md +46 -0
  89. package/.agents/skills/synthetic-test-data-generator/SKILL.md +3 -3
  90. package/.agents/skills/synthetic-test-data-generator/examples/idempotent_data_recipe.json +9 -0
  91. package/.agents/skills/systematic-debugging/SKILL.md +100 -0
  92. package/.agents/skills/systematic-debugging/examples/four_phase_case.md +44 -0
  93. package/.agents/skills/test-driven-development/SKILL.md +114 -0
  94. package/.agents/skills/test-driven-development/examples/red_green_refactor_qa.md +78 -0
  95. package/.agents/skills/token-and-context-optimizer/SKILL.md +1 -1
  96. package/.agents/skills/token-and-context-optimizer/examples/distilled_log_sample.txt +3 -0
  97. package/.agents/skills/verification-before-completion/SKILL.md +100 -0
  98. package/.agents/skills/verification-before-completion/examples/evidence_log_example.md +46 -0
  99. package/.agents/skills/visual-regression-sentinel/SKILL.md +21 -1
  100. package/.agents/skills/visual-regression-sentinel/examples/visual_mask_rules.json +9 -0
  101. package/.agents/skills/wcag-audit-patterns/SKILL.md +3 -3
  102. package/.agents/skills/wcag-audit-patterns/examples/wcag_compliance_checklist.json +10 -0
  103. package/.agents/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -541
  104. package/.agents/skills/web-vitals-and-performance-profiler/SKILL.md +1 -1
  105. package/.agents/skills/web-vitals-and-performance-profiler/examples/cwv_budget_policy.json +6 -0
  106. package/.agents/templates/completion_report.md +57 -57
  107. package/.agents/workflows/analyze_requirement_document.md +18 -0
  108. package/.agents/workflows/export_testcases_excel.md +32 -0
  109. package/.agents/workflows/generate_combinatorial_test_data.md +28 -0
  110. package/.agents/workflows/generate_cross_module_test_plan.md +37 -0
  111. package/.agents/workflows/generate_manual_testcases_rbt.md +56 -0
  112. package/.agents/workflows/generate_requirements_from_website.md +25 -0
  113. package/.agents/workflows/generate_testcases_from_requirements.md +21 -0
  114. package/.agents/workflows/graphify.md +10 -10
  115. package/.agents/workflows/verify.md +2 -2
  116. package/.cursor/rules/language.mdc +7 -7
  117. package/.cursor/rules/synapse-qa.mdc +23 -0
  118. package/.cursorrules +7 -0
  119. package/.pre-commit-hooks.yaml +14 -0
  120. package/.windsurfrules +7 -0
  121. package/AGENTS.md +54 -15
  122. package/CLAUDE.md +35 -12
  123. package/LICENSE +30 -0
  124. package/NOTICE +180 -0
  125. package/README.en.md +325 -0
  126. package/README.md +247 -516
  127. package/action.yml +51 -0
  128. package/benchmarks/qa_eval/README.md +71 -0
  129. package/benchmarks/qa_eval/build_dataset.py +677 -0
  130. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-06_api_contract_drift.json +22 -0
  131. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-07_api_contract_drift.json +22 -0
  132. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-08_api_contract_drift.json +22 -0
  133. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-09_api_contract_drift.json +22 -0
  134. package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-10_api_contract_drift.json +22 -0
  135. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-21_fake_pass_tautology.json +21 -0
  136. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-22_fake_pass_tautology.json +21 -0
  137. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-23_fake_pass_tautology.json +21 -0
  138. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-24_fake_pass_tautology.json +21 -0
  139. package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-25_fake_pass_tautology.json +21 -0
  140. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-01_locator_drift.json +23 -0
  141. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-02_locator_drift.json +23 -0
  142. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-03_locator_drift.json +23 -0
  143. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-04_locator_drift.json +23 -0
  144. package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-05_locator_drift.json +23 -0
  145. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-16_stale_and_mutation.json +22 -0
  146. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-17_stale_and_mutation.json +22 -0
  147. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-18_stale_and_mutation.json +22 -0
  148. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-19_stale_and_mutation.json +22 -0
  149. package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-20_stale_and_mutation.json +23 -0
  150. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-11_timing_and_race.json +22 -0
  151. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-12_timing_and_race.json +22 -0
  152. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-13_timing_and_race.json +22 -0
  153. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-14_timing_and_race.json +22 -0
  154. package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-15_timing_and_race.json +22 -0
  155. package/benchmarks/qa_eval/eval_runner.py +418 -0
  156. package/benchmarks/qa_eval/reports/AB_METHODOLOGY_REPORT.md +83 -0
  157. package/benchmarks/qa_eval/reports/BENCHMARK_REPORT.md +69 -0
  158. package/benchmarks/qa_eval/reports/eval_results.json +105 -0
  159. package/bin/agent-qa.js +10 -3
  160. package/docs/ARCHITECTURE.md +107 -0
  161. package/docs/CI_CD_INTEGRATION.md +94 -0
  162. package/docs/CLI_REFERENCE.md +157 -0
  163. package/docs/CONTRIBUTING.md +91 -0
  164. package/docs/PLUGIN_DEVELOPMENT_GUIDE.md +126 -0
  165. package/docs/TOKEN_QUOTA_PLAYBOOK.md +41 -0
  166. package/docs/adopted-ecosystem-tools.md +87 -0
  167. package/docs/schemas/synapse.config.schema.json +64 -0
  168. package/examples/cypress-ecommerce-suite/README.md +45 -0
  169. package/examples/cypress-ecommerce-suite/cypress/e2e/checkout.cy.js +17 -0
  170. package/examples/cypress-ecommerce-suite/cypress/pages/BasePage.js +29 -0
  171. package/examples/cypress-ecommerce-suite/cypress/pages/CartPage.js +51 -0
  172. package/examples/cypress-ecommerce-suite/cypress.config.js +13 -0
  173. package/examples/cypress-ecommerce-suite/package.json +13 -0
  174. package/examples/katalon-suite/Keywords/pages/BasePage.groovy +19 -0
  175. package/examples/katalon-suite/Keywords/pages/DashboardPage.groovy +29 -0
  176. package/examples/katalon-suite/Keywords/pages/LoginPage.groovy +45 -0
  177. package/examples/katalon-suite/Profiles/default.glbl +12 -0
  178. package/examples/katalon-suite/README.md +18 -0
  179. package/examples/katalon-suite/Scripts/Auth/TC_LoginSuccess/Script1234567890.groovy +12 -0
  180. package/examples/katalon-suite/Scripts/Dashboard/TC_ViewSummary/Script1234567891.groovy +15 -0
  181. package/examples/katalon-suite/katalon_suite.prj +21 -0
  182. package/examples/playwright-crm-suite/README.md +40 -0
  183. package/examples/playwright-crm-suite/package.json +14 -0
  184. package/examples/playwright-crm-suite/pages/BasePage.ts +37 -0
  185. package/examples/playwright-crm-suite/pages/CustomerPage.ts +57 -0
  186. package/examples/playwright-crm-suite/pages/LoginPage.ts +32 -0
  187. package/examples/playwright-crm-suite/playwright.config.ts +27 -0
  188. package/examples/playwright-crm-suite/tests/auth.spec.ts +22 -0
  189. package/examples/playwright-crm-suite/tests/customers.spec.ts +33 -0
  190. package/examples/plugins/sample-custom-plugin/README.md +14 -0
  191. package/examples/plugins/sample-custom-plugin/plugin.json +16 -0
  192. package/examples/plugins/sample-custom-plugin/skills/custom-security-headers-audit/SKILL.md +29 -0
  193. package/examples/plugins/sample-custom-plugin/skills/custom-security-headers-audit/examples/audit_fixture.json +8 -0
  194. package/examples/plugins/sample-custom-plugin/tools/custom_security_headers.py +125 -0
  195. package/examples/practices/README.md +22 -0
  196. package/examples/practices/requirements/crm/requirements_contracts.md +292 -0
  197. package/examples/practices/requirements/crm/requirements_customers.md +462 -0
  198. package/examples/practices/requirements/crm/requirements_login.md +202 -0
  199. package/examples/practices/requirements/crm/requirements_projects.md +396 -0
  200. package/examples/practices/requirements/crm/requirements_tasks.md +343 -0
  201. package/examples/practices/requirements/ecommerce/requirements_category_brand.txt +402 -0
  202. package/examples/practices/requirements/jira/KAN-5/KAN-1/2026-04-03_04-28-27.png +0 -0
  203. package/examples/practices/requirements/jira/KAN-5/KAN-1/KAN-1_requirement.md +52 -0
  204. package/examples/practices/requirements/jira/KAN-5/KAN-4/2026-04-03_04-28-19.png +0 -0
  205. package/examples/practices/requirements/jira/KAN-5/KAN-4/2026-04-03_04-28-57.png +0 -0
  206. package/examples/practices/requirements/jira/KAN-5/KAN-4/KAN-4_requirement.md +119 -0
  207. package/examples/practices/requirements/jira/KAN-5/KAN-5_overview.md +9 -0
  208. package/examples/practices/requirements/jira/KAN-5/KAN-6/2026-04-03_05-58-08.png +0 -0
  209. package/examples/practices/requirements/jira/KAN-5/KAN-6/2026-04-03_05-58-23.png +0 -0
  210. package/examples/practices/requirements/jira/KAN-5/KAN-6/KAN-6_requirement.md +32 -0
  211. package/examples/practices/testcases/api/book_management_api_test_cases.md +144 -0
  212. package/examples/practices/testcases/api/user_management_api_test_cases.md +139 -0
  213. package/examples/practices/testcases/crm/test_cases_crm_login.md +148 -0
  214. package/examples/practices/testcases/crm/test_cases_customers.md +156 -0
  215. package/examples/pytest-api-suite/README.md +45 -0
  216. package/examples/pytest-api-suite/conftest.py +31 -0
  217. package/examples/pytest-api-suite/pages/user_api_client.py +36 -0
  218. package/examples/pytest-api-suite/requirements.txt +2 -0
  219. package/examples/pytest-api-suite/tests/test_user_api.py +44 -0
  220. package/examples/selenium-suite/README.md +18 -0
  221. package/examples/selenium-suite/pages/base_page.py +27 -0
  222. package/examples/selenium-suite/pages/login_page.py +29 -0
  223. package/examples/selenium-suite/pages/order_page.py +25 -0
  224. package/examples/selenium-suite/pytest.ini +6 -0
  225. package/examples/selenium-suite/requirements.txt +2 -0
  226. package/examples/selenium-suite/tests/test_login.py +10 -0
  227. package/examples/selenium-suite/tests/test_order.py +10 -0
  228. package/package.json +22 -7
  229. package/scripts/generate_skill_examples.py +244 -0
  230. package/scripts/install.ps1 +112 -0
  231. package/scripts/install_global_plugin.ps1 +94 -0
  232. package/scripts/install_global_plugin.sh +49 -0
  233. package/scripts/lint_skills.ps1 +57 -0
  234. package/scripts/package_dist.py +323 -0
  235. package/scripts/setup.sh +59 -0
  236. package/scripts/update_hub.ps1 +19 -0
  237. package/scripts/update_hub.sh +15 -0
  238. package/skills_manifest.json +209 -6
  239. package/synapse.config.json +30 -0
  240. package/templates/PROJECT_AI_GUIDE_TEMPLATE.md +7 -7
  241. package/templates/PROJECT_STATE_TEMPLATE.md +1 -1
  242. package/templates/ai_bridges/CLAUDE.md +33 -16
  243. package/templates/ai_bridges/copilot-instructions.md +14 -21
  244. package/templates/ai_bridges/cursor_synapse_qa.mdc +17 -20
  245. package/templates/ai_bridges/windsurfrules +21 -21
  246. package/templates/ci/github-actions-synapse.yml +71 -4
  247. package/templates/welcome.html.tmpl +1674 -0
  248. package/tools/.infer_baseline.json +1102 -0
  249. package/tools/TOOLS_RUNBOOK.md +92 -130
  250. package/tools/__init__.py +26 -0
  251. package/tools/agent_canary.py +501 -501
  252. package/tools/analyze_project.py +31 -17
  253. package/tools/api_fuzzer.py +278 -6
  254. package/tools/author_integrity.py +6 -6
  255. package/tools/auto_heal.py +1 -1
  256. package/tools/browser_helpers.js +105 -7
  257. package/tools/bug_reporter.py +31 -1
  258. package/tools/bump_version.py +23 -3
  259. package/tools/cache_resolver.py +248 -14
  260. package/tools/check_env.py +55 -14
  261. package/tools/check_version_sync.py +153 -0
  262. package/tools/ci_healing_hook.py +1 -1
  263. package/tools/cli.py +263 -13
  264. package/tools/count_tokens.py +1257 -0
  265. package/tools/dashboard_generator.py +2638 -0
  266. package/tools/db_sandbox.py +198 -20
  267. package/tools/e2e_flow_prober.ps1 +12 -64
  268. package/tools/e2e_flow_prober.py +99 -0
  269. package/tools/e2e_flow_prober.sh +4 -0
  270. package/tools/flaky_detector.py +4 -3
  271. package/tools/generate_allure_report.ps1 +12 -29
  272. package/tools/generate_allure_report.py +77 -0
  273. package/tools/generate_allure_report.sh +4 -0
  274. package/tools/generate_jmx_plan.py +257 -58
  275. package/tools/generate_test_reports.ps1 +12 -134
  276. package/tools/generate_test_reports.py +133 -0
  277. package/tools/generate_test_reports.sh +4 -0
  278. package/tools/gherkin_suite.py +758 -0
  279. package/tools/git_pre_commit_guard.py +12 -6
  280. package/tools/goldfish_review.py +366 -0
  281. package/tools/heal_pr_automator.py +1 -1
  282. package/tools/heuristic_locator_matcher.py +170 -21
  283. package/tools/infer_linter.py +612 -70
  284. package/tools/lint_ai_docs.py +64 -0
  285. package/tools/matrix_sharder.py +1 -1
  286. package/tools/mcp_excel_server.ps1 +12 -250
  287. package/tools/mcp_excel_server.py +249 -0
  288. package/tools/mcp_excel_server.sh +4 -0
  289. package/tools/mcp_server.py +368 -144
  290. package/tools/md_to_xlsx.py +307 -0
  291. package/tools/micro_mutator.py +300 -69
  292. package/tools/omni_transpiler.py +2 -2
  293. package/tools/output_formatter.py +128 -0
  294. package/tools/pinpoint_failure.py +88 -88
  295. package/tools/project_state.py +2 -2
  296. package/tools/repo_map.py +1 -1
  297. package/tools/safety_firewall.py +196 -45
  298. package/tools/setup_project.py +294 -30
  299. package/tools/spec_drift_sentinel.py +439 -0
  300. package/tools/sync_agent_rules.py +248 -0
  301. package/tools/telemetry_correlator.py +45 -0
  302. package/tools/test_impact.py +51 -12
  303. package/tools/tms_sync_bridge.py +21 -5
  304. package/tools/universal_ir.py +3 -0
  305. package/tools/update_sentinel.py +87 -15
  306. package/tools/verify_all.ps1 +13 -0
  307. package/tools/verify_all.py +463 -79
  308. package/tools/visual_diff_canvas.py +1 -0
  309. package/tools/visual_som_helper.py +1 -1
  310. package/tools/watch_mode.py +305 -0
  311. package/tools/welcome_page.py +291 -0
@@ -0,0 +1,323 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Enterprise Agent-Skills Hub Distribution Packager
4
+ ================================================
5
+ Packages the complete, clean repository into a release-ready zip file (agent-skills.zip).
6
+ Ensures 100% inclusion of all mandatory folders:
7
+ - .agents/ (skills, rules, workflows, agents)
8
+ - docs/ (ARCHITECTURE.md, CLI_REFERENCE.md, CONTRIBUTING.md)
9
+ - scripts/ (install.ps1, setup.sh, lint_skills.ps1)
10
+ - templates/ (PROJECT_AI_GUIDE_TEMPLATE.md)
11
+ - tools/ (all CLI tools and utilities)
12
+ - root configs (README.md, AGENTS.md, pyproject.toml, requirements.txt, skills_manifest.json)
13
+
14
+ Excludes ephemeral clutter (.git, .venv, __pycache__, reports, temp files).
15
+ """
16
+
17
+ import os
18
+ import sys
19
+ import zipfile
20
+ from pathlib import Path
21
+
22
+ # Enforce UTF-8 stdout encoding for Windows console compatibility
23
+ if hasattr(sys.stdout, 'reconfigure'):
24
+ try:
25
+ sys.stdout.reconfigure(encoding='utf-8')
26
+ sys.stderr.reconfigure(encoding='utf-8')
27
+ except Exception:
28
+ pass
29
+
30
+ REPO_ROOT = Path(__file__).resolve().parent.parent
31
+
32
+ EXCLUDE_DIRS = {
33
+ ".git",
34
+ ".venv",
35
+ "venv",
36
+ "env",
37
+ "__pycache__",
38
+ ".pytest_cache",
39
+ ".mypy_cache",
40
+ ".idea",
41
+ ".vscode",
42
+ "agent_qa.egg-info",
43
+ "archive",
44
+ "reports",
45
+ "graphify-out",
46
+ "claude-ecosystem-repos",
47
+ ".sandbox_snapshots",
48
+ ".zcode",
49
+ }
50
+
51
+ EXCLUDE_EXTS = {
52
+ ".pyc",
53
+ ".pyo",
54
+ ".pyd",
55
+ ".log",
56
+ ".tmp",
57
+ ".zip",
58
+ ".db",
59
+ ".sqlite",
60
+ ".sqlite3",
61
+ }
62
+
63
+ EXCLUDE_FILES = {
64
+ ".DS_Store",
65
+ "Thumbs.db",
66
+ "desktop.ini",
67
+ "repo_map.txt",
68
+ "repo_map.json",
69
+ }
70
+
71
+ MANDATORY_CHECKS = [
72
+ "docs/ARCHITECTURE.md",
73
+ "docs/CLI_REFERENCE.md",
74
+ "scripts/install.ps1",
75
+ "scripts/setup.sh",
76
+ "templates/PROJECT_AI_GUIDE_TEMPLATE.md",
77
+ "templates/PROJECT_STATE_TEMPLATE.md",
78
+ "templates/ai_bridges/cursor_synapse_qa.mdc",
79
+ "templates/ai_bridges/CLAUDE.md",
80
+ "templates/ai_bridges/copilot-instructions.md",
81
+ "templates/ai_bridges/windsurfrules",
82
+ "README.md",
83
+ "AGENTS.md",
84
+ "action.yml",
85
+ ".pre-commit-hooks.yaml",
86
+ "synapse.config.json",
87
+ "package.json",
88
+ "bin/agent-qa.js",
89
+ "tools/infer_linter.py",
90
+ "tools/verify_all.py",
91
+ "tools/analyze_project.py",
92
+ "tools/setup_project.py",
93
+ "tools/auto_heal.py",
94
+ "tools/project_state.py",
95
+ "tools/safety_firewall.py",
96
+ "tools/api_drift_sentinel.py",
97
+ "tools/mcp_server.py",
98
+ "tools/micro_mutator.py",
99
+ "tools/heal_pr_automator.py",
100
+ "tools/matrix_sharder.py",
101
+ "tools/browser_helpers.js",
102
+ "tools/config_decoupler.py",
103
+ "tools/omni_emitter.py",
104
+ "tools/omni_parser.py",
105
+ "tools/omni_transpiler.py",
106
+ "tools/universal_ir.py",
107
+ ]
108
+
109
+
110
+ def generate_spec_file() -> Path:
111
+ """Generates the enterprise PyInstaller spec file (omni-qc.spec) for Single-Binary distribution."""
112
+ spec_path = REPO_ROOT / "omni-qc.spec"
113
+ spec_content = """# -*- mode: python ; coding: utf-8 -*-
114
+ import sys
115
+ import os
116
+
117
+ block_cipher = None
118
+ repo_root = os.path.abspath(SPECPATH)
119
+
120
+ datas = [
121
+ (os.path.join(repo_root, 'tools'), 'tools'),
122
+ (os.path.join(repo_root, '.agents'), '.agents'),
123
+ (os.path.join(repo_root, 'templates'), 'templates'),
124
+ (os.path.join(repo_root, 'skills_manifest.json'), '.'),
125
+ ]
126
+
127
+ hiddenimports = [
128
+ 'sqlite3',
129
+ 'json',
130
+ 'math',
131
+ 're',
132
+ 'dataclasses',
133
+ 'enum',
134
+ 'typing',
135
+ 'collections',
136
+ 'argparse',
137
+ 'pathlib',
138
+ 'subprocess',
139
+ 'tempfile',
140
+ 'tools.universal_ir',
141
+ 'tools.omni_parser',
142
+ 'tools.omni_emitter',
143
+ 'tools.omni_transpiler',
144
+ 'tools.config_decoupler',
145
+ 'tools.cache_resolver',
146
+ 'tools.auto_heal',
147
+ 'tools.micro_mutator',
148
+ 'tools.verify_all',
149
+ ]
150
+
151
+ a = Analysis(
152
+ [os.path.join(repo_root, 'tools', 'cli.py')],
153
+ pathex=[repo_root, os.path.join(repo_root, 'tools')],
154
+ binaries=[],
155
+ datas=datas,
156
+ hiddenimports=hiddenimports,
157
+ hookspath=[],
158
+ hooksconfig={},
159
+ runtime_hooks=[],
160
+ excludes=['tkinter', 'matplotlib', 'numpy', 'scipy', 'pandas'],
161
+ win_no_prefer_redirects=False,
162
+ win_private_assemblies=False,
163
+ cipher=block_cipher,
164
+ noarchive=False,
165
+ )
166
+
167
+ pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
168
+
169
+ exe = EXE(
170
+ pyz,
171
+ a.scripts,
172
+ a.binaries,
173
+ a.zipfiles,
174
+ a.datas,
175
+ [],
176
+ name='omni-qc',
177
+ debug=False,
178
+ bootloader_ignore_signals=False,
179
+ strip=False,
180
+ upx=True,
181
+ upx_exclude=[],
182
+ runtime_tmpdir=None,
183
+ console=True,
184
+ disable_windowed_traceback=False,
185
+ argv_emulation=False,
186
+ target_arch=None,
187
+ codesign_identity=None,
188
+ entitlements_file=None,
189
+ )
190
+ """
191
+ with open(spec_path, "w", encoding="utf-8") as f:
192
+ f.write(spec_content)
193
+ print(f"📄 Generated PyInstaller spec: {spec_path.name}")
194
+ return spec_path
195
+
196
+
197
+ def build_binary() -> Path:
198
+ """Builds the single-file binary executable (omni-qc.exe / omni-qc) via PyInstaller."""
199
+ import subprocess
200
+ import shutil
201
+
202
+ spec_path = generate_spec_file()
203
+ dist_dir = REPO_ROOT / "dist"
204
+ dist_dir.mkdir(parents=True, exist_ok=True)
205
+
206
+ bat_path = dist_dir / "omni-qc.bat"
207
+ bat_content = """@echo off
208
+ setlocal
209
+ set "SCRIPT_DIR=%~dp0.."
210
+ python "%SCRIPT_DIR%\\tools\\cli.py" %*
211
+ """
212
+ with open(bat_path, "w", encoding="utf-8") as bf:
213
+ bf.write(bat_content)
214
+
215
+ sh_path = dist_dir / "omni-qc"
216
+ sh_content = """#!/usr/bin/env sh
217
+ SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
218
+ exec python3 "$SCRIPT_DIR/tools/cli.py" "$@"
219
+ """
220
+ with open(sh_path, "w", encoding="utf-8") as sf:
221
+ sf.write(sh_content)
222
+ try:
223
+ os.chmod(sh_path, 0o755)
224
+ except Exception:
225
+ pass
226
+
227
+ print("🔨 Checking for PyInstaller compilation toolchain...")
228
+ pyinstaller_exe = shutil.which("pyinstaller")
229
+
230
+ if pyinstaller_exe:
231
+ print("⚡ Running PyInstaller single-file build...")
232
+ cmd = [pyinstaller_exe, "--clean", "--noconfirm", str(spec_path)]
233
+ res = subprocess.run(cmd, cwd=REPO_ROOT)
234
+ if res.returncode == 0:
235
+ exe_ext = ".exe" if sys.platform == "win32" else ""
236
+ target_bin = dist_dir / f"omni-qc{exe_ext}"
237
+ print(f"✅ [BINARY COMPILED] Single portable executable ready: {target_bin}")
238
+ return target_bin
239
+ else:
240
+ print("⚠️ PyInstaller compilation failed. Falling back to portable distribution launcher.")
241
+ else:
242
+ print("💡 PyInstaller is not installed in the local environment.")
243
+ print(f"✅ Generated portable launchers in {dist_dir}/ (omni-qc.bat & omni-qc).")
244
+ print("👉 To compile full native binary: pip install pyinstaller && python scripts/package_dist.py --binary")
245
+
246
+ return dist_dir / ("omni-qc.bat" if sys.platform == "win32" else "omni-qc")
247
+
248
+
249
+ def create_package(output_zip: str = "agent-skills.zip") -> Path:
250
+ out_path = Path(output_zip).resolve() if os.path.isabs(str(output_zip)) else REPO_ROOT / output_zip
251
+ print(f"📦 Packaging Enterprise Agent-Skills Hub into: {out_path.name}")
252
+ print("=" * 60)
253
+
254
+ total_files = 0
255
+ total_size = 0
256
+
257
+ with zipfile.ZipFile(out_path, mode="w", compression=zipfile.ZIP_DEFLATED, compresslevel=9) as zf:
258
+ for root, dirs, files in os.walk(REPO_ROOT):
259
+ # Prune excluded directories
260
+ dirs[:] = [d for d in dirs if d not in EXCLUDE_DIRS and not d.startswith(".temp-")]
261
+
262
+ rel_root = Path(root).relative_to(REPO_ROOT)
263
+ if any(part in EXCLUDE_DIRS for part in rel_root.parts):
264
+ continue
265
+
266
+ for file_name in files:
267
+ if file_name in EXCLUDE_FILES:
268
+ continue
269
+ if any(file_name.endswith(ext) for ext in EXCLUDE_EXTS):
270
+ continue
271
+ if file_name == output_zip or file_name == out_path.name:
272
+ continue
273
+
274
+ full_path = Path(root) / file_name
275
+ rel_path = full_path.relative_to(REPO_ROOT)
276
+ arc_name = rel_path.as_posix()
277
+
278
+ zf.write(full_path, arcname=arc_name)
279
+ total_files += 1
280
+ total_size += full_path.stat().st_size
281
+
282
+ zip_size_mb = out_path.stat().st_size / (1024 * 1024)
283
+ print(f"✅ Packaging complete:")
284
+ print(f" • Total files packaged : {total_files}")
285
+ print(f" • Uncompressed size : {total_size / (1024 * 1024):.2f} MB")
286
+ print(f" • Archive size (.zip) : {zip_size_mb:.2f} MB")
287
+
288
+ # Verify mandatory files
289
+ print("\n🔍 Verifying mandatory files inside archive:")
290
+ with zipfile.ZipFile(out_path, mode="r") as zf:
291
+ namelist = set(zf.namelist())
292
+ all_ok = True
293
+ for chk in MANDATORY_CHECKS:
294
+ if chk in namelist:
295
+ print(f" [PASS] {chk}")
296
+ else:
297
+ print(f" [FAIL] Missing: {chk}")
298
+ all_ok = False
299
+
300
+ if not all_ok:
301
+ print("\n❌ Error: Archive is missing critical files!")
302
+ sys.exit(1)
303
+
304
+ print(f"\n✨ Archive is 100% intact and ready for distribution: {out_path}")
305
+ return out_path
306
+
307
+
308
+ if __name__ == "__main__":
309
+ import argparse
310
+ parser = argparse.ArgumentParser(description="Enterprise Hub Packager & Portable Binary Distribution")
311
+ parser.add_argument("--zip", action="store_true", help="Package clean repository archive into agent-skills.zip")
312
+ parser.add_argument("-o", "--output", default="agent-skills.zip", help="Target output path for ZIP distribution")
313
+ parser.add_argument("--binary", action="store_true", help="Build single-file portable executable (omni-qc)")
314
+ parser.add_argument("--all", action="store_true", help="Build both ZIP distribution and portable binary")
315
+ args = parser.parse_args()
316
+
317
+ if args.binary:
318
+ build_binary()
319
+ elif args.all:
320
+ create_package(output_zip=args.output)
321
+ build_binary()
322
+ else:
323
+ create_package(output_zip=args.output)
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env bash
2
+ # ==============================================================================
3
+ # Enterprise Agent-Skills Hub: Automated Bootstrap Setup (macOS / Linux)
4
+ # ==============================================================================
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
9
+ cd "$REPO_ROOT"
10
+
11
+ echo "=========================================================="
12
+ echo " Enterprise Agent-Skills Hub: Automated Bootstrap Setup "
13
+ echo "=========================================================="
14
+
15
+ # 1. Python 3 Runtime
16
+ echo -e "\n[1/4] Checking Python 3 Runtime..."
17
+ if command -v python3 &>/dev/null; then
18
+ echo " [OK] Found Python: $(python3 --version)"
19
+ else
20
+ echo " [FAIL] Python 3 is required. Please install via apt, brew, or dnf."
21
+ exit 1
22
+ fi
23
+
24
+ # 2. Virtual Environment
25
+ echo -e "\n[2/4] Setting up Virtual Environment (.venv)..."
26
+ if [ ! -d ".venv" ]; then
27
+ python3 -m venv .venv
28
+ fi
29
+ VENV_PY=".venv/bin/python"
30
+
31
+ # 3. Dependencies
32
+ echo -e "\n[3/5] Installing Core Dependencies..."
33
+ "$VENV_PY" -m pip install --upgrade pip setuptools wheel --quiet
34
+ if [ -f "requirements.txt" ]; then
35
+ "$VENV_PY" -m pip install -r requirements.txt --quiet
36
+ echo " [OK] Requirements installed successfully."
37
+ fi
38
+
39
+ # 4. Verification
40
+ echo -e "\n[4/5] Verifying Skills Catalog Integrity..."
41
+ if [ -f "tools/verify_all.py" ]; then
42
+ "$VENV_PY" tools/verify_all.py || true
43
+ fi
44
+
45
+ # 5. Initialize Central Agent Memory (SQLite Cache)
46
+ echo -e "\n[5/6] Initializing Global Central Agent Memory (~/.agent_memory/global_cache.db)..."
47
+ if [ -f "tools/cache_resolver.py" ]; then
48
+ "$VENV_PY" tools/cache_resolver.py init || true
49
+ echo " [OK] Central Agent Memory initialized and seeded."
50
+ fi
51
+
52
+ # 6. Launch Visual Landing Page on First Pull / Setup
53
+ if [ -f "tools/welcome_page.py" ]; then
54
+ "$VENV_PY" tools/welcome_page.py --first-run || true
55
+ fi
56
+
57
+ echo -e "\n=========================================================="
58
+ echo " Bootstrap Complete! Hub is ready for Multi-Agent Swarm."
59
+ echo "=========================================================="
@@ -0,0 +1,19 @@
1
+ # Enterprise Synapse-Hub 1-Click Update Script (Windows PowerShell)
2
+ # ======================================================================
3
+ # Pulls latest updates, refreshes Global Plugin, and syncs episodic memory.
4
+
5
+ [CmdletBinding()]
6
+ param(
7
+ [switch]$Check
8
+ )
9
+
10
+ $ErrorActionPreference = "Stop"
11
+ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
12
+ $RepoRoot = Resolve-Path "$ScriptDir\.."
13
+
14
+ if ($Check) {
15
+ python "$RepoRoot\tools\update_sentinel.py" --check
16
+ exit $LASTEXITCODE
17
+ }
18
+
19
+ python "$RepoRoot\tools\update_sentinel.py" --update
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+ # Enterprise Synapse-Hub 1-Click Update Script (macOS / Linux)
3
+ # ======================================================================
4
+ # Pulls latest updates, refreshes Global Plugin, and syncs episodic memory.
5
+
6
+ set -e
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
9
+
10
+ if [ "$1" = "--check" ]; then
11
+ python3 "$REPO_ROOT/tools/update_sentinel.py" --check 2>/dev/null || python "$REPO_ROOT/tools/update_sentinel.py" --check
12
+ exit $?
13
+ fi
14
+
15
+ python3 "$REPO_ROOT/tools/update_sentinel.py" --update 2>/dev/null || python "$REPO_ROOT/tools/update_sentinel.py" --update