sinapse-ai 9.4.0 → 9.5.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.
- package/.claude/CLAUDE.md +10 -4
- package/.claude/hooks/enforce-architecture-first.py +197 -197
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/mind-clone-governance.py +193 -193
- package/.claude/hooks/read-protection.py +152 -152
- package/.claude/hooks/sql-governance.py +183 -183
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/hooks/write-path-validation.py +195 -195
- package/.claude/rules/hook-governance.md +1 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/response-format.md +4 -0
- package/.claude/rules/safe-collaboration.md +4 -2
- package/.claude/rules/security-data-protection.md +18 -0
- package/.claude/rules/squad-awareness.md +93 -67
- package/.claude/rules/token-economy.md +148 -0
- package/.codex/agents/analyst.md +90 -0
- package/.codex/agents/architect.md +78 -0
- package/.codex/agents/data-engineer.md +38 -0
- package/.codex/agents/developer.md +97 -0
- package/.codex/agents/devops.md +121 -0
- package/.codex/agents/product-lead.md +27 -0
- package/.codex/agents/project-lead.md +28 -0
- package/.codex/agents/quality-gate.md +89 -0
- package/.codex/agents/sprint-lead.md +28 -0
- package/.codex/agents/squad-creator.md +58 -0
- package/.codex/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
- package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
- package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
- package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
- package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
- package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
- package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
- package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
- package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
- package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
- package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
- package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
- package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
- package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
- package/.sinapse-ai/core/doctor/index.js +157 -50
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/logger/index.js +319 -0
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/core/telemetry/index.js +247 -0
- package/.sinapse-ai/data/entity-registry.yaml +1384 -944
- package/.sinapse-ai/development/agents/architect.md +5 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +28 -0
- package/.sinapse-ai/development/agents/devops.md +4 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +4 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
- package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
- package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
- package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
- package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
- package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
- package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
- package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
- package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
- package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
- package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
- package/.sinapse-ai/install-manifest.yaml +275 -140
- package/.sinapse-ai/local-config.yaml.template +65 -65
- package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
- package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
- package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
- package/.sinapse-ai/monitor/hooks/notification.py +30 -30
- package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
- package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
- package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
- package/.sinapse-ai/monitor/hooks/stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
- package/.sinapse-ai/product/templates/adr.hbs +126 -126
- package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
- package/.sinapse-ai/product/templates/epic.hbs +213 -213
- package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
- package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
- package/.sinapse-ai/product/templates/prd.hbs +202 -202
- package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
- package/.sinapse-ai/product/templates/story.hbs +264 -264
- package/.sinapse-ai/product/templates/task.hbs +171 -171
- package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
- package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
- package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
- package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
- package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
- package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
- package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
- package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
- package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
- package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
- package/LICENSE +34 -34
- package/README.en.md +167 -20
- package/README.md +190 -22
- package/bin/cli.js +510 -196
- package/bin/postinstall.js +564 -0
- package/bin/sinapse-cli +283 -283
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-init.js +36 -4
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +202 -122
- package/bin/utils/deprecation-warning.js +46 -0
- package/bin/utils/pre-push-safety.js +14 -0
- package/docs/TELEMETRY.md +131 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +20 -8
- package/packages/installer/src/config/configure-environment.js +19 -44
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +8 -39
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
- package/packages/sinapse-install/bin/edmcp.js +0 -0
- package/packages/sinapse-install/bin/sinapse-install.js +0 -0
- package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
- package/scripts/check-markdown-links.py +353 -353
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/test-install-matrix-local.sh +153 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/squad.yaml +19 -4
- package/.sinapse-ai/core/registry/service-registry.json +0 -6346
- package/.sinapse-ai/data/registry-update-log.jsonl +0 -1323
- package/.sinapse-ai/manifests/agents.csv +0 -29
- package/.sinapse-ai/manifests/tasks.csv +0 -204
- package/.sinapse-ai/manifests/workers.csv +0 -196
- package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
- package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@sinapse/{{kebabCase serviceName}}",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "{{description}}",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.js",
|
|
12
|
-
"require": "./dist/index.cjs"
|
|
13
|
-
},
|
|
14
|
-
"./types": {
|
|
15
|
-
"types": "./dist/types.d.ts",
|
|
16
|
-
"import": "./dist/types.js"
|
|
17
|
-
},
|
|
18
|
-
"./errors": {
|
|
19
|
-
"types": "./dist/errors.d.ts",
|
|
20
|
-
"import": "./dist/errors.js"
|
|
21
|
-
}{{#if isApiIntegration}},
|
|
22
|
-
"./client": {
|
|
23
|
-
"types": "./dist/client.d.ts",
|
|
24
|
-
"import": "./dist/client.js"
|
|
25
|
-
}{{/if}}
|
|
26
|
-
},
|
|
27
|
-
"files": [
|
|
28
|
-
"dist",
|
|
29
|
-
"README.md"
|
|
30
|
-
],
|
|
31
|
-
"scripts": {
|
|
32
|
-
"build": "tsc",
|
|
33
|
-
"build:watch": "tsc --watch",
|
|
34
|
-
"clean": "rimraf dist coverage",
|
|
35
|
-
"test": "jest",
|
|
36
|
-
"test:watch": "jest --watch",
|
|
37
|
-
"test:coverage": "jest --coverage",
|
|
38
|
-
"typecheck": "tsc --noEmit",
|
|
39
|
-
"lint": "eslint . --ext .ts",
|
|
40
|
-
"lint:fix": "eslint . --ext .ts --fix",
|
|
41
|
-
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
42
|
-
},
|
|
43
|
-
"keywords": [
|
|
44
|
-
"sinapse",
|
|
45
|
-
"{{kebabCase serviceName}}",
|
|
46
|
-
"service"{{#if isApiIntegration}},
|
|
47
|
-
"api",
|
|
48
|
-
"integration"{{/if}}
|
|
49
|
-
],
|
|
50
|
-
"author": "SINAPSE-FullStack",
|
|
51
|
-
"license": "MIT",
|
|
52
|
-
"engines": {
|
|
53
|
-
"node": ">=18.0.0"
|
|
54
|
-
},
|
|
55
|
-
"devDependencies": {
|
|
56
|
-
"@types/jest": "^29.5.12",
|
|
57
|
-
"@types/node": "^20.11.0",
|
|
58
|
-
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
59
|
-
"@typescript-eslint/parser": "^6.19.0",
|
|
60
|
-
"eslint": "^8.56.0",
|
|
61
|
-
"jest": "^29.7.0",
|
|
62
|
-
"rimraf": "^5.0.5",
|
|
63
|
-
"ts-jest": "^29.1.2",
|
|
64
|
-
"typescript": "^5.3.3"
|
|
65
|
-
},
|
|
66
|
-
"peerDependencies": {
|
|
67
|
-
"typescript": ">=5.0.0"
|
|
68
|
-
},
|
|
69
|
-
"peerDependenciesMeta": {
|
|
70
|
-
"typescript": {
|
|
71
|
-
"optional": true
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
"repository": {
|
|
75
|
-
"type": "git",
|
|
76
|
-
"url": "https://github.com/sinapse-fullstack/{{kebabCase serviceName}}.git"
|
|
77
|
-
},
|
|
78
|
-
"bugs": {
|
|
79
|
-
"url": "https://github.com/sinapse-fullstack/{{kebabCase serviceName}}/issues"
|
|
80
|
-
},
|
|
81
|
-
"homepage": "https://github.com/sinapse-fullstack/{{kebabCase serviceName}}#readme",
|
|
82
|
-
"sinapse": {
|
|
83
|
-
"storyId": "{{storyId}}",
|
|
84
|
-
"type": "{{#if isApiIntegration}}api-integration{{else}}utility-service{{/if}}",
|
|
85
|
-
"generatedAt": "{{generatedAt}}"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@sinapse/{{kebabCase serviceName}}",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "{{description}}",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs"
|
|
13
|
+
},
|
|
14
|
+
"./types": {
|
|
15
|
+
"types": "./dist/types.d.ts",
|
|
16
|
+
"import": "./dist/types.js"
|
|
17
|
+
},
|
|
18
|
+
"./errors": {
|
|
19
|
+
"types": "./dist/errors.d.ts",
|
|
20
|
+
"import": "./dist/errors.js"
|
|
21
|
+
}{{#if isApiIntegration}},
|
|
22
|
+
"./client": {
|
|
23
|
+
"types": "./dist/client.d.ts",
|
|
24
|
+
"import": "./dist/client.js"
|
|
25
|
+
}{{/if}}
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc",
|
|
33
|
+
"build:watch": "tsc --watch",
|
|
34
|
+
"clean": "rimraf dist coverage",
|
|
35
|
+
"test": "jest",
|
|
36
|
+
"test:watch": "jest --watch",
|
|
37
|
+
"test:coverage": "jest --coverage",
|
|
38
|
+
"typecheck": "tsc --noEmit",
|
|
39
|
+
"lint": "eslint . --ext .ts",
|
|
40
|
+
"lint:fix": "eslint . --ext .ts --fix",
|
|
41
|
+
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"sinapse",
|
|
45
|
+
"{{kebabCase serviceName}}",
|
|
46
|
+
"service"{{#if isApiIntegration}},
|
|
47
|
+
"api",
|
|
48
|
+
"integration"{{/if}}
|
|
49
|
+
],
|
|
50
|
+
"author": "SINAPSE-FullStack",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=18.0.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/jest": "^29.5.12",
|
|
57
|
+
"@types/node": "^20.11.0",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
59
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
60
|
+
"eslint": "^8.56.0",
|
|
61
|
+
"jest": "^29.7.0",
|
|
62
|
+
"rimraf": "^5.0.5",
|
|
63
|
+
"ts-jest": "^29.1.2",
|
|
64
|
+
"typescript": "^5.3.3"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"typescript": ">=5.0.0"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"typescript": {
|
|
71
|
+
"optional": true
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"repository": {
|
|
75
|
+
"type": "git",
|
|
76
|
+
"url": "https://github.com/sinapse-fullstack/{{kebabCase serviceName}}.git"
|
|
77
|
+
},
|
|
78
|
+
"bugs": {
|
|
79
|
+
"url": "https://github.com/sinapse-fullstack/{{kebabCase serviceName}}/issues"
|
|
80
|
+
},
|
|
81
|
+
"homepage": "https://github.com/sinapse-fullstack/{{kebabCase serviceName}}#readme",
|
|
82
|
+
"sinapse": {
|
|
83
|
+
"storyId": "{{storyId}}",
|
|
84
|
+
"type": "{{#if isApiIntegration}}api-integration{{else}}utility-service{{/if}}",
|
|
85
|
+
"generatedAt": "{{generatedAt}}"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for {{pascalCase serviceName}} service.
|
|
3
|
-
* @module @sinapse/{{kebabCase serviceName}}/types
|
|
4
|
-
* @story {{storyId}}
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Configuration options for the {{pascalCase serviceName}} service.
|
|
9
|
-
*/
|
|
10
|
-
export interface {{pascalCase serviceName}}Config {
|
|
11
|
-
{{#each envVars}}
|
|
12
|
-
/**
|
|
13
|
-
* {{this.description}}
|
|
14
|
-
{{#if this.required}}
|
|
15
|
-
* @required
|
|
16
|
-
{{/if}}
|
|
17
|
-
*/
|
|
18
|
-
{{camelCase this.name}}{{#unless this.required}}?{{/unless}}: string;
|
|
19
|
-
|
|
20
|
-
{{/each}}
|
|
21
|
-
{{#if isApiIntegration}}
|
|
22
|
-
/**
|
|
23
|
-
* Base URL for the API.
|
|
24
|
-
* @default '{{apiBaseUrl}}'
|
|
25
|
-
*/
|
|
26
|
-
baseUrl?: string;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Request timeout in milliseconds.
|
|
30
|
-
* @default 30000
|
|
31
|
-
*/
|
|
32
|
-
timeout?: number;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Maximum number of retry attempts.
|
|
36
|
-
* @default 3
|
|
37
|
-
*/
|
|
38
|
-
maxRetries?: number;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Enable debug logging.
|
|
42
|
-
* @default false
|
|
43
|
-
*/
|
|
44
|
-
debug?: boolean;
|
|
45
|
-
|
|
46
|
-
{{/if}}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* The {{pascalCase serviceName}} service interface.
|
|
51
|
-
*/
|
|
52
|
-
export interface {{pascalCase serviceName}}Service {
|
|
53
|
-
/**
|
|
54
|
-
* Execute the primary service operation.
|
|
55
|
-
*/
|
|
56
|
-
execute(): Promise<void>;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Get the current configuration (without sensitive values).
|
|
60
|
-
*/
|
|
61
|
-
getConfig(): Partial<{{pascalCase serviceName}}Config>;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Check if the service is properly configured and operational.
|
|
65
|
-
*/
|
|
66
|
-
healthCheck(): Promise<boolean>;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
{{#if isApiIntegration}}
|
|
70
|
-
/**
|
|
71
|
-
* Base API response structure.
|
|
72
|
-
*/
|
|
73
|
-
export interface {{pascalCase serviceName}}ApiResponse<T = unknown> {
|
|
74
|
-
success: boolean;
|
|
75
|
-
data?: T;
|
|
76
|
-
error?: {
|
|
77
|
-
code: string;
|
|
78
|
-
message: string;
|
|
79
|
-
details?: Record<string, unknown>;
|
|
80
|
-
};
|
|
81
|
-
meta?: {
|
|
82
|
-
requestId?: string;
|
|
83
|
-
rateLimit?: {
|
|
84
|
-
remaining: number;
|
|
85
|
-
reset: number;
|
|
86
|
-
};
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Request options for API calls.
|
|
92
|
-
*/
|
|
93
|
-
export interface {{pascalCase serviceName}}RequestOptions {
|
|
94
|
-
/**
|
|
95
|
-
* HTTP method.
|
|
96
|
-
*/
|
|
97
|
-
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Request headers.
|
|
101
|
-
*/
|
|
102
|
-
headers?: Record<string, string>;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Request body.
|
|
106
|
-
*/
|
|
107
|
-
body?: unknown;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Query parameters.
|
|
111
|
-
*/
|
|
112
|
-
params?: Record<string, string | number | boolean>;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Request timeout override.
|
|
116
|
-
*/
|
|
117
|
-
timeout?: number;
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Skip retry on failure.
|
|
121
|
-
*/
|
|
122
|
-
noRetry?: boolean;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Rate limit information.
|
|
127
|
-
*/
|
|
128
|
-
export interface {{pascalCase serviceName}}RateLimit {
|
|
129
|
-
/**
|
|
130
|
-
* Maximum requests allowed.
|
|
131
|
-
*/
|
|
132
|
-
limit: number;
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Remaining requests in current window.
|
|
136
|
-
*/
|
|
137
|
-
remaining: number;
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Unix timestamp when the rate limit resets.
|
|
141
|
-
*/
|
|
142
|
-
reset: number;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
{{/if}}
|
|
146
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for {{pascalCase serviceName}} service.
|
|
3
|
+
* @module @sinapse/{{kebabCase serviceName}}/types
|
|
4
|
+
* @story {{storyId}}
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Configuration options for the {{pascalCase serviceName}} service.
|
|
9
|
+
*/
|
|
10
|
+
export interface {{pascalCase serviceName}}Config {
|
|
11
|
+
{{#each envVars}}
|
|
12
|
+
/**
|
|
13
|
+
* {{this.description}}
|
|
14
|
+
{{#if this.required}}
|
|
15
|
+
* @required
|
|
16
|
+
{{/if}}
|
|
17
|
+
*/
|
|
18
|
+
{{camelCase this.name}}{{#unless this.required}}?{{/unless}}: string;
|
|
19
|
+
|
|
20
|
+
{{/each}}
|
|
21
|
+
{{#if isApiIntegration}}
|
|
22
|
+
/**
|
|
23
|
+
* Base URL for the API.
|
|
24
|
+
* @default '{{apiBaseUrl}}'
|
|
25
|
+
*/
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Request timeout in milliseconds.
|
|
30
|
+
* @default 30000
|
|
31
|
+
*/
|
|
32
|
+
timeout?: number;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Maximum number of retry attempts.
|
|
36
|
+
* @default 3
|
|
37
|
+
*/
|
|
38
|
+
maxRetries?: number;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Enable debug logging.
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
debug?: boolean;
|
|
45
|
+
|
|
46
|
+
{{/if}}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The {{pascalCase serviceName}} service interface.
|
|
51
|
+
*/
|
|
52
|
+
export interface {{pascalCase serviceName}}Service {
|
|
53
|
+
/**
|
|
54
|
+
* Execute the primary service operation.
|
|
55
|
+
*/
|
|
56
|
+
execute(): Promise<void>;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get the current configuration (without sensitive values).
|
|
60
|
+
*/
|
|
61
|
+
getConfig(): Partial<{{pascalCase serviceName}}Config>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Check if the service is properly configured and operational.
|
|
65
|
+
*/
|
|
66
|
+
healthCheck(): Promise<boolean>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
{{#if isApiIntegration}}
|
|
70
|
+
/**
|
|
71
|
+
* Base API response structure.
|
|
72
|
+
*/
|
|
73
|
+
export interface {{pascalCase serviceName}}ApiResponse<T = unknown> {
|
|
74
|
+
success: boolean;
|
|
75
|
+
data?: T;
|
|
76
|
+
error?: {
|
|
77
|
+
code: string;
|
|
78
|
+
message: string;
|
|
79
|
+
details?: Record<string, unknown>;
|
|
80
|
+
};
|
|
81
|
+
meta?: {
|
|
82
|
+
requestId?: string;
|
|
83
|
+
rateLimit?: {
|
|
84
|
+
remaining: number;
|
|
85
|
+
reset: number;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Request options for API calls.
|
|
92
|
+
*/
|
|
93
|
+
export interface {{pascalCase serviceName}}RequestOptions {
|
|
94
|
+
/**
|
|
95
|
+
* HTTP method.
|
|
96
|
+
*/
|
|
97
|
+
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Request headers.
|
|
101
|
+
*/
|
|
102
|
+
headers?: Record<string, string>;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Request body.
|
|
106
|
+
*/
|
|
107
|
+
body?: unknown;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Query parameters.
|
|
111
|
+
*/
|
|
112
|
+
params?: Record<string, string | number | boolean>;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Request timeout override.
|
|
116
|
+
*/
|
|
117
|
+
timeout?: number;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Skip retry on failure.
|
|
121
|
+
*/
|
|
122
|
+
noRetry?: boolean;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Rate limit information.
|
|
127
|
+
*/
|
|
128
|
+
export interface {{pascalCase serviceName}}RateLimit {
|
|
129
|
+
/**
|
|
130
|
+
* Maximum requests allowed.
|
|
131
|
+
*/
|
|
132
|
+
limit: number;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Remaining requests in current window.
|
|
136
|
+
*/
|
|
137
|
+
remaining: number;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Unix timestamp when the rate limit resets.
|
|
141
|
+
*/
|
|
142
|
+
reset: number;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
{{/if}}
|
|
146
|
+
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) {{year}} {{author}}
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
22
|
-
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) {{year}} {{author}}
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -272,14 +272,53 @@ workflow:
|
|
|
272
272
|
|
|
273
273
|
Retornando para Dev corrigir...
|
|
274
274
|
|
|
275
|
+
# ──────────────────────────────────────────────────────────────────────────
|
|
276
|
+
# Agent Handoff Compaction — wired v1.1 (fw-v2.6, EPIC-framework-upgrade-v2)
|
|
277
|
+
# ──────────────────────────────────────────────────────────────────────────
|
|
278
|
+
# Operational enforcement of the handoff compaction protocol. The outgoing
|
|
279
|
+
# agent of each phase MUST run `generate-agent-handoff` task before the
|
|
280
|
+
# incoming agent is activated. This collapses persona context from ~3-5K
|
|
281
|
+
# tokens to ~379 per switch (90%+ compaction).
|
|
282
|
+
#
|
|
283
|
+
# Reference:
|
|
284
|
+
# - Task: .sinapse-ai/development/tasks/generate-agent-handoff.md
|
|
285
|
+
# - Rule: .claude/rules/agent-handoff.md
|
|
286
|
+
# - Template: .sinapse-ai/development/templates/agent-handoff-tmpl.yaml
|
|
287
|
+
handoff_hooks:
|
|
288
|
+
enabled: true
|
|
289
|
+
task: generate-agent-handoff
|
|
290
|
+
transitions:
|
|
291
|
+
- from: create # sprint-lead (sm)
|
|
292
|
+
to: validate # product-lead (po)
|
|
293
|
+
required: true
|
|
294
|
+
- from: validate # product-lead (po)
|
|
295
|
+
to: implement # developer (dev)
|
|
296
|
+
required: true
|
|
297
|
+
- from: implement # developer (dev)
|
|
298
|
+
to: review # quality-gate (qa)
|
|
299
|
+
required: true
|
|
300
|
+
storage: ".sinapse/handoffs/"
|
|
301
|
+
max_tokens_per_artifact: 500
|
|
302
|
+
on_failure: "warn-and-proceed" # per graceful-degradation principle in ids-principles.md
|
|
303
|
+
|
|
275
304
|
metadata:
|
|
276
305
|
author: Orion (SINAPSE Master)
|
|
277
306
|
created_date: 2025-01-30
|
|
278
|
-
version: 1.
|
|
307
|
+
version: 1.1.0
|
|
308
|
+
version_history:
|
|
309
|
+
- version: 1.0.0
|
|
310
|
+
date: 2025-01-30
|
|
311
|
+
author: Orion
|
|
312
|
+
notes: "Initial 4-phase SDC workflow"
|
|
313
|
+
- version: 1.1.0
|
|
314
|
+
date: 2026-04-12
|
|
315
|
+
author: "Imperator (sinapse-orqx) via fw-v2.6"
|
|
316
|
+
notes: "Wired handoff_hooks to enforce agent handoff compaction between phase transitions. No breaking changes — existing sequence untouched."
|
|
279
317
|
tags:
|
|
280
318
|
- story
|
|
281
319
|
- development-cycle
|
|
282
320
|
- quality-gate
|
|
283
321
|
- agile
|
|
284
322
|
- generic
|
|
323
|
+
- handoff-compaction
|
|
285
324
|
|
|
@@ -111,6 +111,28 @@ async function main() {
|
|
|
111
111
|
// Post-commit hook should NEVER block workflow
|
|
112
112
|
console.error(`[IDS-Hook] Registry update failed (non-blocking): ${err.message}`);
|
|
113
113
|
}
|
|
114
|
+
|
|
115
|
+
// Story 10.27 — When .sinapse-ai/ files changed, the registry update we
|
|
116
|
+
// just ran (and any other auto-managed file under .sinapse-ai/) needs the
|
|
117
|
+
// install-manifest.yaml to be refreshed too, otherwise the next commit's
|
|
118
|
+
// pre-commit hook will print "manifest outdated". Regenerate it here so
|
|
119
|
+
// the working tree converges to a clean state after every commit.
|
|
120
|
+
const sinapseChanges = changes.some(
|
|
121
|
+
(c) => c.relativePath && c.relativePath.startsWith('.sinapse-ai/'),
|
|
122
|
+
);
|
|
123
|
+
if (sinapseChanges) {
|
|
124
|
+
try {
|
|
125
|
+
const { generateManifest, writeManifest } = require(
|
|
126
|
+
path.resolve(REPO_ROOT, 'scripts/generate-install-manifest.js'),
|
|
127
|
+
);
|
|
128
|
+
const manifest = await generateManifest();
|
|
129
|
+
await writeManifest(manifest);
|
|
130
|
+
console.log('[IDS-Hook] install-manifest.yaml regenerated to stay in sync.');
|
|
131
|
+
} catch (err) {
|
|
132
|
+
// Same non-blocking philosophy as the registry update
|
|
133
|
+
console.error(`[IDS-Hook] Manifest regen failed (non-blocking): ${err.message}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
114
136
|
}
|
|
115
137
|
|
|
116
138
|
main();
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Compatibility Contracts
|
|
2
|
+
|
|
3
|
+
This directory stores the cross-IDE compatibility contracts read by
|
|
4
|
+
`.sinapse-ai/infrastructure/scripts/validate-parity.js`.
|
|
5
|
+
|
|
6
|
+
## Files
|
|
7
|
+
|
|
8
|
+
| File | Purpose | When to edit |
|
|
9
|
+
|------|---------|--------------|
|
|
10
|
+
| `sinapse-current.yaml` | Authoritative contract for the current release | Whenever the IDE matrix, required-checks, or expected statuses change |
|
|
11
|
+
| `sinapse-4.0.4.yaml` | Historical snapshot of the 4.0.4-era contract | Never (kept as a frozen reference for diffing) |
|
|
12
|
+
|
|
13
|
+
## Resolution Policy
|
|
14
|
+
|
|
15
|
+
The validator's `getDefaultContractPath()` always prefers `sinapse-current.yaml`
|
|
16
|
+
when it exists on disk. The legacy `sinapse-4.0.4.yaml` is read only as a
|
|
17
|
+
fallback for repositories that have not yet been migrated.
|
|
18
|
+
|
|
19
|
+
Story 10.18 introduced this split because pinning the validator to a single
|
|
20
|
+
versioned filename caused the contract to silently track a stale release for
|
|
21
|
+
five major versions (4.0.4 → 9.4.0 → v10.0.0 target).
|
|
22
|
+
|
|
23
|
+
## Updating the Contract
|
|
24
|
+
|
|
25
|
+
1. Edit `sinapse-current.yaml` in place.
|
|
26
|
+
2. Bump the `release` field to the new SINAPSE version label (e.g. `SINAPSE 10.1.0`).
|
|
27
|
+
3. Bump `updated_at` to today's date (ISO format).
|
|
28
|
+
4. Run `npm run validate:parity` to verify the new contract still passes.
|
|
29
|
+
5. If the change adds or removes a required check, run `npm test` to make
|
|
30
|
+
sure no parity unit test is hard-coded to the old shape.
|
|
31
|
+
|
|
32
|
+
## Diffing Two Contracts
|
|
33
|
+
|
|
34
|
+
Use the validator's `--diff` flag to compare the current contract against
|
|
35
|
+
any historical snapshot:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run validate:parity -- --diff=.sinapse-ai/infrastructure/contracts/compatibility/sinapse-4.0.4.yaml
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The diff output is shown both in the human-readable report and in `--json`
|
|
42
|
+
mode under `contractDiff`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Compatibility Contract — current
|
|
2
|
+
#
|
|
3
|
+
# This file is the authoritative compatibility contract for the CURRENT release.
|
|
4
|
+
# When the IDE matrix or required-checks set changes, edit this file in place
|
|
5
|
+
# and bump the release/updated_at fields.
|
|
6
|
+
#
|
|
7
|
+
# A snapshot of the previous contract may be kept under a versioned name
|
|
8
|
+
# (e.g. sinapse-4.0.4.yaml) to support contract diffing via the validator's
|
|
9
|
+
# --diff=<path> flag, but the loader always prefers sinapse-current.yaml.
|
|
10
|
+
#
|
|
11
|
+
# See README.md in this directory for the versioning policy.
|
|
12
|
+
|
|
13
|
+
release: "SINAPSE 10.0.0"
|
|
14
|
+
updated_at: "2026-04-12"
|
|
15
|
+
source_of_truth:
|
|
16
|
+
docs_matrix: "docs/ide-integration.md"
|
|
17
|
+
validator: ".sinapse-ai/infrastructure/scripts/validate-parity.js"
|
|
18
|
+
|
|
19
|
+
global_required_checks:
|
|
20
|
+
- paths
|
|
21
|
+
|
|
22
|
+
ide_matrix:
|
|
23
|
+
- ide: "claude-code"
|
|
24
|
+
display_name: "Claude Code"
|
|
25
|
+
expected_status: "Works"
|
|
26
|
+
required_checks:
|
|
27
|
+
- claude-sync
|
|
28
|
+
- claude-integration
|
|
29
|
+
- ide: "codex"
|
|
30
|
+
display_name: "Codex CLI"
|
|
31
|
+
expected_status: "Limited"
|
|
32
|
+
required_checks:
|
|
33
|
+
- codex-sync
|
|
34
|
+
- codex-integration
|
|
35
|
+
- codex-skills
|