synapse-hub 2.6.0 → 2.7.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 (71) hide show
  1. package/.agents/agents/failure-analyst.md +4 -0
  2. package/.agents/agents/orchestrator.md +16 -0
  3. package/.agents/agents/pom-crafter.md +8 -0
  4. package/.agents/agents/quality-gatekeeper.md +5 -0
  5. package/.agents/agents/test-runner.md +5 -0
  6. package/.agents/rules/git-push-protocol.md +1 -1
  7. package/.agents/rules/graphify.md +2 -0
  8. package/.agents/rules/mandatory-playwright-live.md +9 -9
  9. package/.agents/rules/mobile_appium_rules.md +8 -1
  10. package/.agents/skills/actor-qa-swarm/SKILL.md +77 -0
  11. package/.agents/skills/actor-qa-swarm/examples/broker_sharding_sample.json +12 -0
  12. package/.agents/skills/agentless-qa-repair/SKILL.md +69 -0
  13. package/.agents/skills/agentless-qa-repair/examples/healing_report_sample.json +17 -0
  14. package/.agents/skills/api-spec-to-e2e-matrix/SKILL.md +1 -1
  15. package/.agents/skills/clean-pom-crafter/SKILL.md +2 -2
  16. package/.agents/skills/db-state-verifier-and-seeder/SKILL.md +4 -4
  17. package/.agents/skills/event-stream-qa-orchestrator/SKILL.md +79 -0
  18. package/.agents/skills/event-stream-qa-orchestrator/examples/timeline_sample.jsonl +2 -0
  19. package/.agents/skills/failure-autopsy-and-healing/SKILL.md +2 -2
  20. package/.agents/skills/failure-autopsy-and-healing/scripts/triage_failures.sh +6 -21
  21. package/.agents/skills/katalon-cli-runner/SKILL.md +1 -1
  22. package/.agents/skills/mipro-prompt-compiler/SKILL.md +59 -0
  23. package/.agents/skills/mipro-prompt-compiler/examples/compiled_module_sample.json +22 -0
  24. package/.agents/skills/qa-aci-interface/SKILL.md +67 -0
  25. package/.agents/skills/qa-aci-interface/examples/surgical_edit_sample.json +12 -0
  26. package/.agents/skills/qa-memory-os/SKILL.md +80 -0
  27. package/.agents/skills/qa-memory-os/examples/archival_memory_sample.json +21 -0
  28. package/.agents/skills/review-spec/SKILL.md +60 -0
  29. package/.agents/skills/review-spec/examples/sample_spec_review.md +33 -0
  30. package/.agents/skills/synthetic-test-data-generator/SKILL.md +2 -2
  31. package/.agents/skills/tot-exploratory-testing/SKILL.md +59 -0
  32. package/.agents/skills/tot-exploratory-testing/examples/tot_graph_sample.json +35 -0
  33. package/.agents/skills/wcag-audit-patterns/SKILL.md +2 -2
  34. package/.agents/skills/web-agent-gym-benchmarking/SKILL.md +62 -0
  35. package/.agents/skills/web-agent-gym-benchmarking/examples/benchmark_report_sample.json +22 -0
  36. package/CLAUDE.md +1 -1
  37. package/README.en.md +5 -5
  38. package/README.md +3 -3
  39. package/docs/ARCHITECTURE.md +8 -8
  40. package/docs/research/EXTERNAL_AGENT_SKILLS_SURVEY.md +1062 -0
  41. package/package.json +1 -1
  42. package/skills_manifest.json +88 -7
  43. package/synapse.config.json +1 -1
  44. package/templates/ai_bridges/CLAUDE.md +1 -1
  45. package/tools/TOOLS_RUNBOOK.md +1 -1
  46. package/tools/__init__.py +1 -1
  47. package/tools/_openapi_parser.py +158 -0
  48. package/tools/agentless_patcher.py +417 -0
  49. package/tools/analyze_project.py +9 -6
  50. package/tools/auto_heal.py +19 -0
  51. package/tools/autogen_qa_broker.py +318 -0
  52. package/tools/browser_helpers.js +2 -2
  53. package/tools/browsergym_eval.py +237 -0
  54. package/tools/ci_healing_hook.py +1 -1
  55. package/tools/cli.py +3 -3
  56. package/tools/dashboard_generator.py +4 -4
  57. package/tools/db_sandbox.py +4 -0
  58. package/tools/heal_pr_automator.py +25 -0
  59. package/tools/mcp_excel_server.py +1 -1
  60. package/tools/mcp_server.py +1 -1
  61. package/tools/mipro_assertion_tuner.py +207 -0
  62. package/tools/pinpoint_failure.py +12 -0
  63. package/tools/project_state.py +4 -0
  64. package/tools/qa_event_stream.py +336 -0
  65. package/tools/reversible_sandbox.py +4 -0
  66. package/tools/swe_qa_aci.py +369 -0
  67. package/tools/sync_agent_rules.py +1 -1
  68. package/tools/test_memory_os.py +409 -0
  69. package/tools/tot_exploratory_tester.py +240 -0
  70. package/tools/update_sentinel.py +3 -3
  71. package/tools/welcome_page.py +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synapse-hub",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "description": "Enterprise AI Agent Intelligence Hub & Autonomous Skill Network",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,15 +1,18 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "name": "Enterprise Agent Skills Hub",
4
- "version": "2.6.0",
5
- "description": "Unified Catalog of 42 Specialized Skills for Autonomous AI Agents in Enterprise Software Quality Engineering, Performance, and Architecture.",
6
- "totalSkills": 42,
4
+ "version": "2.7.0",
5
+ "description": "Unified Catalog of 51 Specialized Skills for Autonomous AI Agents in Enterprise Software Quality Engineering, Performance, and Architecture.",
6
+ "totalSkills": 51,
7
7
  "categories": {
8
8
  "context_and_optimization": [
9
9
  "token-and-context-optimizer",
10
10
  "agent-orchestration-multi-agent-optimize",
11
11
  "persistent-planning-files",
12
- "meta-prompt-crafter"
12
+ "meta-prompt-crafter",
13
+ "qa-memory-os",
14
+ "event-stream-qa-orchestrator",
15
+ "actor-qa-swarm"
13
16
  ],
14
17
  "test_automation_and_execution": [
15
18
  "clean-pom-crafter",
@@ -22,7 +25,9 @@
22
25
  "gherkin-to-suite",
23
26
  "auth-session-and-cookie-manager",
24
27
  "backend-load-and-stress-patterns",
25
- "rbt-manual-testing"
28
+ "rbt-manual-testing",
29
+ "web-agent-gym-benchmarking",
30
+ "tot-exploratory-testing"
26
31
  ],
27
32
  "verification_and_resilience": [
28
33
  "antigravity-test-sentinel",
@@ -38,7 +43,8 @@
38
43
  "flaky-test-sentinel-and-quarantine",
39
44
  "test-driven-development",
40
45
  "systematic-debugging",
41
- "verification-before-completion"
46
+ "verification-before-completion",
47
+ "agentless-qa-repair"
42
48
  ],
43
49
  "architecture_and_analysis": [
44
50
  "api-spec-to-e2e-matrix",
@@ -53,7 +59,10 @@
53
59
  "graphify-impact-analyzer",
54
60
  "wcag-audit-patterns",
55
61
  "github-actions-templates",
56
- "web-vitals-and-performance-profiler"
62
+ "web-vitals-and-performance-profiler",
63
+ "qa-aci-interface",
64
+ "mipro-prompt-compiler",
65
+ "review-spec"
57
66
  ]
58
67
  },
59
68
  "profiles": {
@@ -509,6 +518,78 @@
509
518
  "path": ".agents/skills/lean-impact-scoreboard/SKILL.md",
510
519
  "summary": "Display the measured impact scoreboard (code reduction %, token optimization %, cost reduction %, test rigor) from lean engineering benchmarks.",
511
520
  "version": "1.0.0"
521
+ },
522
+ {
523
+ "id": "agentless-qa-repair",
524
+ "name": "Agentless QA Repair",
525
+ "category": "verification_and_resilience",
526
+ "path": ".agents/skills/agentless-qa-repair/SKILL.md",
527
+ "summary": "Repair broken test scripts and Page Classes using an Agentless 3-phase flow: localization, candidate synthesis, and minimal diff validation.",
528
+ "version": "1.0.0"
529
+ },
530
+ {
531
+ "id": "qa-aci-interface",
532
+ "name": "QA Agent-Computer Interface",
533
+ "category": "architecture_and_analysis",
534
+ "path": ".agents/skills/qa-aci-interface/SKILL.md",
535
+ "summary": "Safe Agent-Computer Interface for inspecting code windows (40-50 lines), surgical editing with pre-commit AST checks, and distilled test execution.",
536
+ "version": "1.0.0"
537
+ },
538
+ {
539
+ "id": "qa-memory-os",
540
+ "name": "QA Test Memory OS",
541
+ "category": "context_and_optimization",
542
+ "path": ".agents/skills/qa-memory-os/SKILL.md",
543
+ "summary": "Hierarchical 3-tier memory operating system for test automation: Core Memory blocks, Recall step logs, and Archival semantic store with AUT version scoping.",
544
+ "version": "1.0.0"
545
+ },
546
+ {
547
+ "id": "event-stream-qa-orchestrator",
548
+ "name": "EventStream QA Orchestrator",
549
+ "category": "context_and_optimization",
550
+ "path": ".agents/skills/event-stream-qa-orchestrator/SKILL.md",
551
+ "summary": "Immutable EventStream orchestrator recording deterministic action/observation timelines with SHA-256 hash chains and reversible checkpoint rollbacks.",
552
+ "version": "1.0.0"
553
+ },
554
+ {
555
+ "id": "web-agent-gym-benchmarking",
556
+ "name": "Web Agent Gym Benchmarking",
557
+ "category": "test_automation_and_execution",
558
+ "path": ".agents/skills/web-agent-gym-benchmarking/SKILL.md",
559
+ "summary": "Empirical benchmark harness evaluating web agents and Page Classes against standardized enterprise tasks with headless <200ms latency budgets and ground-truth DB state verification.",
560
+ "version": "1.0.0"
561
+ },
562
+ {
563
+ "id": "tot-exploratory-testing",
564
+ "name": "Tree-of-Thoughts Exploratory Testing",
565
+ "category": "test_automation_and_execution",
566
+ "path": ".agents/skills/tot-exploratory-testing/SKILL.md",
567
+ "summary": "Non-linear Tree/Graph-of-Thoughts exploratory testing engine exploring Happy Path, Boundary/Race, and Negative/Chaos branches with Beam Search risk scoring and multi-hypothesis RCA.",
568
+ "version": "1.0.0"
569
+ },
570
+ {
571
+ "id": "actor-qa-swarm",
572
+ "name": "Actor QA Swarm",
573
+ "category": "context_and_optimization",
574
+ "path": ".agents/skills/actor-qa-swarm/SKILL.md",
575
+ "summary": "Asynchronous Actor Model message broker and matrix sharding coordinator for multi-agent test execution.",
576
+ "version": "1.0.0"
577
+ },
578
+ {
579
+ "id": "mipro-prompt-compiler",
580
+ "name": "MIPROv2 Prompt Compiler",
581
+ "category": "architecture_and_analysis",
582
+ "path": ".agents/skills/mipro-prompt-compiler/SKILL.md",
583
+ "summary": "MIPROv2 Bayesian teleprompter optimizer and few-shot compiler tuning prompt instructions against AST mutation kill scores.",
584
+ "version": "1.0.0"
585
+ },
586
+ {
587
+ "id": "review-spec",
588
+ "name": "Review Spec (Goldfish Protocol)",
589
+ "category": "architecture_and_analysis",
590
+ "path": ".agents/skills/review-spec/SKILL.md",
591
+ "summary": "Zero-context stress test and quality review of test specifications, user stories, BDD feature files, and acceptance criteria before code generation begins.",
592
+ "version": "1.0.0"
512
593
  }
513
594
  ]
514
595
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/TeeVee998/Synapse-Hub/main/docs/schemas/synapse.config.schema.json",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "quality_gates": {
5
5
  "mutation_min_score": 80,
6
6
  "gates": {
@@ -17,7 +17,7 @@ In accordance with the MIT License, the original copyright notice crediting **Th
17
17
  ---
18
18
 
19
19
  ## ⚡ Quick Commands
20
- - Verify 9 Quality Gates: `npx synapse-hub verify` (or `python tools/verify_all.py`)
20
+ - Verify 10 Quality Gates: `npx synapse-hub verify` (or `python tools/verify_all.py`)
21
21
  - Project Health Audit: `npx synapse-hub analyze` (or `python tools/analyze_project.py`)
22
22
  - Code Linter & Fake-Pass Sentinel: `npx synapse-hub lint` (or `python tools/infer_linter.py`)
23
23
  - Verify Author Attribution: `python tools/author_integrity.py`
@@ -15,7 +15,7 @@
15
15
  | **Flaky Test Detection & Quarantine Governance ("flaky")** | `tools/flaky_detector.py` | `agent-qa flaky --detect` (or `npx synapse-hub flaky`) |
16
16
  | **Executive Project Health & Quality Dashboard ("dashboard")** | `tools/dashboard_generator.py` | `agent-qa dashboard` (or `npx synapse-hub dashboard`) |
17
17
  | **Clean Uninstall of AI Bridges & Global Plugins ("uninstall")** | `tools/cli.py` | `agent-qa uninstall` (or `npx synapse-hub uninstall`) |
18
- | **Comprehensive Health & AST Analysis ("analyze project")** | `tools/analyze_project.py` | `python tools/analyze_project.py [target]` (or `agent-qa analyze`).<br/>*Post-Audit:* Stages, commits, and pushes `PROJECT_HEALTH_REPORT.md` & `repo_map.txt` to project Git. |
18
+ | **Comprehensive Health & AST Analysis ("analyze project")** | `tools/analyze_project.py` | `python tools/analyze_project.py [target]` (or `agent-qa analyze`).<br/>*Post-Audit:* Stages and commits `PROJECT_HEALTH_REPORT.md` & `repo_map.txt` locally; confirms with user before pushing to remote. |
19
19
  | **Action Safety Firewall (Environment Protection)** | `tools/safety_firewall.py` | `python tools/safety_firewall.py --text "Delete" --action click` (or `agent-qa safety-check`) |
20
20
  | **API Contract Drift (Breaking Change Detection)** | `tools/api_drift_sentinel.py` | `python tools/api_drift_sentinel.py --old base.json --new curr.json` (or `agent-qa contract-drift`) |
21
21
  | **Autonomous API Fuzzing & Chaos Breaker** | `tools/api_fuzzer.py` | `agent-qa fuzz-api --base-url <url> --spec <swagger.json>` (Catches 500, DB leaks, SLA breach) |
package/tools/__init__.py CHANGED
@@ -6,7 +6,7 @@ Repository: https://github.com/TeeVee998/Synapse-Hub
6
6
  License: MIT
7
7
  """
8
8
 
9
- __version__ = "2.6.0"
9
+ __version__ = "2.7.0"
10
10
  __author__ = "Thế Vị (@TeeVee998)"
11
11
 
12
12
  __all__ = [
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env python3
2
+ # SPDX-FileCopyrightText: Copyright (c) 2026 Thế Vị (@TeeVee998). All rights reserved.
3
+ # SPDX-License-Identifier: MIT
4
+ # Project: Synapse-Hub (https://github.com/TeeVee998/Synapse-Hub)
5
+
6
+ """
7
+ tools/_openapi_parser.py — Shared OpenAPI & Swagger Specification Parser
8
+ -------------------------------------------------------------------------
9
+ Internal shared helper module consolidating OpenAPI 3.0 and Swagger 2.0
10
+ schema ingestion, $ref dereferencing, endpoint extraction, and boundary
11
+ value test scenario synthesis across API testing tools.
12
+ """
13
+
14
+ import os
15
+ import sys
16
+ import json
17
+ from typing import Dict, Any, List, Optional, Tuple
18
+
19
+ if hasattr(sys.stdout, 'reconfigure'):
20
+ try:
21
+ sys.stdout.reconfigure(encoding='utf-8')
22
+ sys.stderr.reconfigure(encoding='utf-8')
23
+ except Exception:
24
+ pass
25
+
26
+
27
+ def load_spec(spec_input: Any) -> Dict[str, Any]:
28
+ """
29
+ Loads OpenAPI / Swagger spec from a file path, raw JSON string, or dict.
30
+ """
31
+ if isinstance(spec_input, dict):
32
+ return spec_input
33
+ if isinstance(spec_input, str):
34
+ if os.path.exists(spec_input):
35
+ with open(spec_input, "r", encoding="utf-8") as f:
36
+ return json.load(f)
37
+ try:
38
+ return json.loads(spec_input)
39
+ except Exception:
40
+ raise ValueError(f"Unable to parse spec input as JSON file or string: {spec_input[:100]}")
41
+ raise TypeError(f"Expected dict, str path, or JSON string; got {type(spec_input)}")
42
+
43
+
44
+ def resolve_ref(spec_data: Dict[str, Any], ref_str: str) -> Dict[str, Any]:
45
+ """
46
+ Resolves local JSON pointers such as '#/components/schemas/User' or '#/definitions/User'.
47
+ """
48
+ if not ref_str.startswith("#/"):
49
+ return {}
50
+ parts = ref_str[2:].split("/")
51
+ curr = spec_data
52
+ for p in parts:
53
+ if isinstance(curr, dict) and p in curr:
54
+ curr = curr[p]
55
+ else:
56
+ return {}
57
+ return curr if isinstance(curr, dict) else {}
58
+
59
+
60
+ def extract_endpoints(spec_data: Dict[str, Any]) -> List[Dict[str, Any]]:
61
+ """
62
+ Parses paths and HTTP operations into a normalized list of API endpoints.
63
+ """
64
+ endpoints = []
65
+ paths = spec_data.get("paths", {})
66
+
67
+ for path, methods in paths.items():
68
+ if not isinstance(methods, dict):
69
+ continue
70
+ for method, details in methods.items():
71
+ if method.lower() not in ("get", "post", "put", "delete", "patch", "options", "head"):
72
+ continue
73
+ if not isinstance(details, dict):
74
+ continue
75
+
76
+ summary = details.get("summary", details.get("operationId", f"{method.upper()} {path}"))
77
+ operation_id = details.get("operationId", f"{method.lower()}_{path.replace('/', '_').strip('_')}")
78
+ tags = details.get("tags", ["General"])
79
+
80
+ # Parameters (Path, Query, Header)
81
+ parameters = details.get("parameters", [])
82
+
83
+ # Request Body Schema (OpenAPI 3.0 application/json)
84
+ req_content = details.get("requestBody", {}).get("content", {})
85
+ schema = req_content.get("application/json", {}).get("schema", {})
86
+ if "$ref" in schema:
87
+ schema = resolve_ref(spec_data, schema["$ref"])
88
+
89
+ # Swagger 2.0 body parameter fallback
90
+ if not schema:
91
+ for param in parameters:
92
+ if param.get("in") == "body" and "schema" in param:
93
+ s = param["schema"]
94
+ schema = resolve_ref(spec_data, s["$ref"]) if "$ref" in s else s
95
+ break
96
+
97
+ # Response schemas
98
+ responses = details.get("responses", {})
99
+
100
+ endpoints.append({
101
+ "path": path,
102
+ "method": method.upper(),
103
+ "summary": summary,
104
+ "operation_id": operation_id,
105
+ "tags": tags,
106
+ "parameters": parameters,
107
+ "request_schema": schema,
108
+ "responses": responses
109
+ })
110
+
111
+ return endpoints
112
+
113
+
114
+ def generate_boundary_scenarios(field_name: str, field_schema: Dict[str, Any]) -> List[Dict[str, Any]]:
115
+ """
116
+ Generates standard positive and boundary value test scenarios for a given field schema.
117
+ """
118
+ boundaries = []
119
+ f_type = field_schema.get("type", "string")
120
+
121
+ if f_type == "string":
122
+ min_l = field_schema.get("minLength", 1)
123
+ max_l = field_schema.get("maxLength", 50)
124
+ boundaries.append({"scenario": f"{field_name} Empty String", "value": "", "expected": 400})
125
+ boundaries.append({
126
+ "scenario": f"{field_name} Below MinLength ({min_l - 1} chars)",
127
+ "value": "A" * max(0, min_l - 1),
128
+ "expected": 400 if min_l > 0 else 200
129
+ })
130
+ boundaries.append({
131
+ "scenario": f"{field_name} Exact MaxLength ({max_l} chars)",
132
+ "value": "A" * max_l,
133
+ "expected": 200
134
+ })
135
+ boundaries.append({
136
+ "scenario": f"{field_name} Exceed MaxLength ({max_l + 1} chars)",
137
+ "value": "A" * (max_l + 1),
138
+ "expected": 400
139
+ })
140
+ boundaries.append({
141
+ "scenario": f"{field_name} Special & XSS Payload",
142
+ "value": "<script>alert(1)</script>",
143
+ "expected": 400
144
+ })
145
+
146
+ elif f_type in ("integer", "number"):
147
+ minimum = field_schema.get("minimum", 0)
148
+ maximum = field_schema.get("maximum", 1000)
149
+ boundaries.append({"scenario": f"{field_name} Negative Value ({minimum - 1})", "value": minimum - 1, "expected": 400})
150
+ boundaries.append({"scenario": f"{field_name} Boundary Minimum ({minimum})", "value": minimum, "expected": 200})
151
+ boundaries.append({"scenario": f"{field_name} Boundary Maximum ({maximum})", "value": maximum, "expected": 200})
152
+ boundaries.append({"scenario": f"{field_name} Exceed Maximum ({maximum + 1})", "value": maximum + 1, "expected": 400})
153
+ boundaries.append({"scenario": f"{field_name} 32-bit Integer Overflow", "value": 2147483648, "expected": 400})
154
+
155
+ elif f_type == "boolean":
156
+ boundaries.append({"scenario": f"{field_name} Invalid String Instead of Boolean", "value": "not_a_bool", "expected": 400})
157
+
158
+ return boundaries