sinapse-ai 1.16.0 → 1.19.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/hooks/doc-first-gate.cjs +156 -0
- package/.claude/hooks/enforce-story-gate.cjs +6 -2
- package/.claude/rules/documentation-first.md +6 -0
- package/.claude/rules/hook-governance.md +1 -0
- package/.sinapse-ai/constitution.md +3 -3
- package/.sinapse-ai/core/atlas/atlas-data.js +278 -0
- package/.sinapse-ai/core/atlas/flows-pt.js +253 -0
- package/.sinapse-ai/core/atlas/flows.js +266 -0
- package/.sinapse-ai/core/atlas/index.js +62 -0
- package/.sinapse-ai/core/atlas/render-html.js +216 -0
- package/.sinapse-ai/core/atlas/render-markdown.js +313 -0
- package/.sinapse-ai/core/atlas/render-research-card.js +164 -0
- package/.sinapse-ai/core/code-intel/registry-syncer.js +5 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +7 -5
- package/.sinapse-ai/core/doctor/checks/claude-md.js +13 -0
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +1 -0
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +11 -0
- package/.sinapse-ai/core/doctor/checks/settings-json.js +16 -2
- package/.sinapse-ai/core/doctor/index.js +27 -0
- package/.sinapse-ai/core/execution/build-orchestrator.js +192 -8
- package/.sinapse-ai/core/external-executors/delegate-cli.js +6 -2
- package/.sinapse-ai/core/health-check/checks/project/constitution-consistency.js +2 -1
- package/.sinapse-ai/core/ideation/ideation-engine.js +10 -8
- package/.sinapse-ai/core/mcp/config-migrator.js +8 -5
- package/.sinapse-ai/core/mcp/global-config-manager.js +4 -1
- package/.sinapse-ai/core/mcp/symlink-manager.js +6 -3
- package/.sinapse-ai/core/orchestration/brownfield-handler.js +5 -4
- package/.sinapse-ai/core/orchestration/build-command.js +136 -0
- package/.sinapse-ai/core/orchestration/doc-first-resolver.js +322 -0
- package/.sinapse-ai/core/orchestration/executors/epic-4-executor.js +3 -0
- package/.sinapse-ai/core/orchestration/gate-evaluator.js +58 -9
- package/.sinapse-ai/core/orchestration/route-command.js +97 -0
- package/.sinapse-ai/core/orchestration/session-state.js +19 -2
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +24 -1
- package/.sinapse-ai/core/orchestration/workflow-executor.js +102 -3
- package/.sinapse-ai/core/quality-gates/focus-area-recommender.js +15 -11
- package/.sinapse-ai/core/registry/build-registry.js +3 -2
- package/.sinapse-ai/core/synapse/scripts/generate-constitution.js +1 -0
- package/.sinapse-ai/core/synapse/utils/atomic-write.js +34 -9
- package/.sinapse-ai/core-config.yaml +5 -1
- package/.sinapse-ai/data/capability-detection.js +3 -3
- package/.sinapse-ai/data/entity-registry.yaml +288 -90
- package/.sinapse-ai/data/mcp-discipline.js +1 -1
- package/.sinapse-ai/data/mcp-tool-examples.yaml +8 -8
- package/.sinapse-ai/data/tok2-validation.js +1 -1
- package/.sinapse-ai/data/tool-registry.yaml +4 -3
- package/.sinapse-ai/development/agents/snps-orqx.md +14 -5
- package/.sinapse-ai/development/scripts/migrate-task-to-v2.js +1 -1
- package/.sinapse-ai/development/scripts/validate-task-v2.js +67 -4
- package/.sinapse-ai/development/tasks/advanced-elicitation.md +3 -3
- package/.sinapse-ai/development/tasks/analyst-facilitate-brainstorming.md +3 -3
- package/.sinapse-ai/development/tasks/analyze-framework.md +1 -8
- package/.sinapse-ai/development/tasks/analyze-performance.md +1 -8
- package/.sinapse-ai/development/tasks/apply-qa-fixes.md +3 -3
- package/.sinapse-ai/development/tasks/architect-analyze-impact.md +3 -3
- package/.sinapse-ai/development/tasks/audit-codebase.md +1 -8
- package/.sinapse-ai/development/tasks/audit-tailwind-config.md +1 -4
- package/.sinapse-ai/development/tasks/audit-utilities.md +1 -8
- package/.sinapse-ai/development/tasks/bootstrap-shadcn-library.md +3 -3
- package/.sinapse-ai/development/tasks/brownfield-create-epic.md +3 -3
- package/.sinapse-ai/development/tasks/brownfield-create-story.md +3 -3
- package/.sinapse-ai/development/tasks/build-component.md +2 -5
- package/.sinapse-ai/development/tasks/calculate-roi.md +3 -3
- package/.sinapse-ai/development/tasks/ci-cd-configuration.md +1 -1
- package/.sinapse-ai/development/tasks/cleanup-utilities.md +3 -3
- package/.sinapse-ai/development/tasks/collaborative-edit.md +3 -3
- package/.sinapse-ai/development/tasks/compose-molecule.md +2 -5
- package/.sinapse-ai/development/tasks/consolidate-patterns.md +3 -3
- package/.sinapse-ai/development/tasks/correct-course.md +3 -3
- package/.sinapse-ai/development/tasks/create-brownfield-story.md +2 -5
- package/.sinapse-ai/development/tasks/create-deep-research-prompt.md +2 -5
- package/.sinapse-ai/development/tasks/create-doc.md +3 -6
- package/.sinapse-ai/development/tasks/create-next-story.md +4 -8
- package/.sinapse-ai/development/tasks/create-suite.md +2 -5
- package/.sinapse-ai/development/tasks/create-task.md +2 -5
- package/.sinapse-ai/development/tasks/create-workflow.md +2 -5
- package/.sinapse-ai/development/tasks/db-analyze-hotpaths.md +1 -8
- package/.sinapse-ai/development/tasks/db-apply-migration.md +1 -8
- package/.sinapse-ai/development/tasks/db-bootstrap.md +1 -8
- package/.sinapse-ai/development/tasks/db-domain-modeling.md +1 -8
- package/.sinapse-ai/development/tasks/db-dry-run.md +1 -8
- package/.sinapse-ai/development/tasks/db-env-check.md +1 -8
- package/.sinapse-ai/development/tasks/db-explain.md +1 -8
- package/.sinapse-ai/development/tasks/db-impersonate.md +1 -8
- package/.sinapse-ai/development/tasks/db-load-csv.md +1 -8
- package/.sinapse-ai/development/tasks/db-policy-apply.md +1 -8
- package/.sinapse-ai/development/tasks/db-rls-audit.md +1 -8
- package/.sinapse-ai/development/tasks/db-rollback.md +1 -8
- package/.sinapse-ai/development/tasks/db-run-sql.md +1 -8
- package/.sinapse-ai/development/tasks/db-schema-audit.md +1 -8
- package/.sinapse-ai/development/tasks/db-seed.md +1 -8
- package/.sinapse-ai/development/tasks/db-smoke-test.md +1 -8
- package/.sinapse-ai/development/tasks/db-snapshot.md +1 -8
- package/.sinapse-ai/development/tasks/db-squad-integration.md +1 -8
- package/.sinapse-ai/development/tasks/db-supabase-setup.md +1 -8
- package/.sinapse-ai/development/tasks/db-verify-order.md +1 -8
- package/.sinapse-ai/development/tasks/deprecate-component.md +3 -3
- package/.sinapse-ai/development/tasks/dev-apply-qa-fixes.md +3 -3
- package/.sinapse-ai/development/tasks/dev-backlog-debt.md +3 -3
- package/.sinapse-ai/development/tasks/dev-develop-story.md +1 -1
- package/.sinapse-ai/development/tasks/dev-improve-code-quality.md +3 -3
- package/.sinapse-ai/development/tasks/dev-optimize-performance.md +3 -3
- package/.sinapse-ai/development/tasks/dev-suggest-refactoring.md +3 -3
- package/.sinapse-ai/development/tasks/dev-validate-next-story.md +3 -3
- package/.sinapse-ai/development/tasks/document-project.md +3 -3
- package/.sinapse-ai/development/tasks/environment-bootstrap.md +0 -4
- package/.sinapse-ai/development/tasks/execute-checklist.md +3 -3
- package/.sinapse-ai/development/tasks/export-design-tokens-dtcg.md +3 -3
- package/.sinapse-ai/development/tasks/extend-pattern.md +1 -8
- package/.sinapse-ai/development/tasks/extract-tokens.md +3 -3
- package/.sinapse-ai/development/tasks/facilitate-brainstorming-session.md +1 -1
- package/.sinapse-ai/development/tasks/generate-ai-frontend-prompt.md +2 -5
- package/.sinapse-ai/development/tasks/generate-documentation.md +2 -5
- package/.sinapse-ai/development/tasks/generate-migration-strategy.md +2 -5
- package/.sinapse-ai/development/tasks/generate-shock-report.md +2 -5
- package/.sinapse-ai/development/tasks/github-devops-github-pr-automation.md +3 -3
- package/.sinapse-ai/development/tasks/github-devops-repository-cleanup.md +3 -3
- package/.sinapse-ai/development/tasks/github-devops-version-management.md +3 -3
- package/.sinapse-ai/development/tasks/improve-self.md +1 -16
- package/.sinapse-ai/development/tasks/index-docs.md +1 -4
- package/.sinapse-ai/development/tasks/init-project-status.md +1 -7
- package/.sinapse-ai/development/tasks/integrate-squad.md +3 -3
- package/.sinapse-ai/development/tasks/kb-mode-interaction.md +3 -3
- package/.sinapse-ai/development/tasks/learn-patterns.md +3 -3
- package/.sinapse-ai/development/tasks/modify-agent.md +1 -8
- package/.sinapse-ai/development/tasks/modify-task.md +1 -8
- package/.sinapse-ai/development/tasks/modify-workflow.md +1 -8
- package/.sinapse-ai/development/tasks/po-backlog-add.md +3 -3
- package/.sinapse-ai/development/tasks/po-manage-story-backlog.md +3 -3
- package/.sinapse-ai/development/tasks/po-pull-story-from-clickup.md +3 -3
- package/.sinapse-ai/development/tasks/po-pull-story.md +3 -3
- package/.sinapse-ai/development/tasks/po-stories-index.md +3 -3
- package/.sinapse-ai/development/tasks/po-sync-story-to-clickup.md +3 -3
- package/.sinapse-ai/development/tasks/po-sync-story.md +3 -3
- package/.sinapse-ai/development/tasks/pr-automation.md +1 -1
- package/.sinapse-ai/development/tasks/propose-modification.md +3 -3
- package/.sinapse-ai/development/tasks/qa-backlog-add-followup.md +1 -8
- package/.sinapse-ai/development/tasks/qa-create-fix-request.md +1 -4
- package/.sinapse-ai/development/tasks/qa-gate.md +1 -8
- package/.sinapse-ai/development/tasks/qa-generate-tests.md +1 -8
- package/.sinapse-ai/development/tasks/qa-nfr-assess.md +1 -8
- package/.sinapse-ai/development/tasks/qa-review-proposal.md +1 -8
- package/.sinapse-ai/development/tasks/qa-review-story.md +1 -8
- package/.sinapse-ai/development/tasks/qa-risk-profile.md +1 -8
- package/.sinapse-ai/development/tasks/qa-run-tests.md +1 -8
- package/.sinapse-ai/development/tasks/qa-test-design.md +1 -8
- package/.sinapse-ai/development/tasks/qa-trace-requirements.md +1 -8
- package/.sinapse-ai/development/tasks/release-management.md +1 -1
- package/.sinapse-ai/development/tasks/security-audit.md +1 -4
- package/.sinapse-ai/development/tasks/security-scan.md +1 -4
- package/.sinapse-ai/development/tasks/setup-database.md +2 -11
- package/.sinapse-ai/development/tasks/setup-design-system.md +2 -11
- package/.sinapse-ai/development/tasks/shard-doc.md +3 -3
- package/.sinapse-ai/development/tasks/sm-create-next-story.md +3 -3
- package/.sinapse-ai/development/tasks/spec-gather-requirements.md +11 -0
- package/.sinapse-ai/development/tasks/sync-documentation.md +1 -6
- package/.sinapse-ai/development/tasks/tailwind-upgrade.md +3 -3
- package/.sinapse-ai/development/tasks/test-as-user.md +3 -3
- package/.sinapse-ai/development/tasks/undo-last.md +2 -5
- package/.sinapse-ai/development/tasks/update-manifest.md +1 -8
- package/.sinapse-ai/development/tasks/ux-create-wireframe.md +1 -1
- package/.sinapse-ai/development/tasks/ux-ds-scan-artifact.md +3 -3
- package/.sinapse-ai/development/tasks/ux-user-research.md +3 -3
- package/.sinapse-ai/development/tasks/validate-next-story.md +1 -8
- package/.sinapse-ai/development/templates/approval-table.md +106 -0
- package/.sinapse-ai/development/templates/chrome-brain/scripts/chrome-ensure.cjs +1 -1
- package/.sinapse-ai/development/workflows/spec-pipeline.yaml +1 -0
- package/.sinapse-ai/git-hooks/post-commit +0 -0
- package/.sinapse-ai/git-hooks/pre-commit +0 -0
- package/.sinapse-ai/git-hooks/pre-push +0 -0
- package/.sinapse-ai/infrastructure/scripts/changelog-generator.js +5 -1
- package/.sinapse-ai/infrastructure/scripts/pattern-extractor.js +11 -2
- package/.sinapse-ai/infrastructure/scripts/test-utilities.js +34 -13
- package/.sinapse-ai/infrastructure/scripts/usage-analytics.js +9 -5
- package/.sinapse-ai/infrastructure/scripts/validate-claude-integration.js +10 -2
- package/.sinapse-ai/install-manifest.yaml +364 -320
- package/.sinapse-ai/lib/build.json +1 -0
- package/.sinapse-ai/product/templates/personalized-task-template-v2.md +4 -2
- package/.sinapse-ai/product/templates/prd-tmpl.yaml +6 -2
- package/.sinapse-ai/product/templates/statusline/statusline-script.js +7 -3
- package/CHANGELOG.md +85 -7
- package/README.en.md +5 -5
- package/README.md +5 -5
- package/bin/cli.js +1 -1
- package/bin/commands/install.js +288 -114
- package/bin/commands/local.js +11 -0
- package/bin/lib/command-generator.js +31 -2
- package/bin/sinapse.js +121 -0
- package/docs/README.md +1 -1
- package/docs/agent-reference-guide.md +1 -1
- package/docs/community/README-community-snippet-core.md +1 -1
- package/docs/community/README-community-snippet-mcp.md +1 -1
- package/docs/community/README-community-snippet-squads.md +1 -1
- package/docs/examples/quickstart-recording.md +1 -1
- package/docs/framework/README.md +1 -1
- package/docs/framework/architecture-overview.md +1 -0
- package/docs/framework/atlas/OPERATING-ATLAS.md +537 -0
- package/docs/framework/atlas/README.md +34 -0
- package/docs/framework/atlas/atlas-data.json +2810 -0
- package/docs/framework/atlas/atlas.html +392 -0
- package/docs/framework/coding-standards.md +1 -1
- package/docs/framework/core-architecture.md +1 -1
- package/docs/framework/guiding-principles.md +1 -1
- package/docs/framework/source-tree.md +1 -1
- package/docs/framework/tech-stack.md +1 -1
- package/docs/framework/versioning-and-releases.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/guides/agent-reference.md +1 -1
- package/docs/guides/agent-selection-guide.md +1 -1
- package/docs/guides/api-reference.md +1 -1
- package/docs/guides/contextual-greeting-system-guide.md +1 -1
- package/docs/guides/contributing-squads.md +1 -1
- package/docs/guides/development-setup.md +1 -1
- package/docs/guides/git-workflow-guide.md +1 -1
- package/docs/guides/installation-troubleshooting.md +1 -1
- package/docs/guides/llm-routing.md +1 -1
- package/docs/guides/mcp-global-setup.md +1 -1
- package/docs/guides/meta-agent-commands.md +1 -1
- package/docs/guides/project-status-feature.md +1 -1
- package/docs/guides/quality-dashboard.md +1 -1
- package/docs/guides/quality-gates.md +1 -1
- package/docs/guides/security-hardening.md +1 -1
- package/docs/guides/service-discovery.md +19 -22
- package/docs/guides/squad-examples/README.md +1 -1
- package/docs/guides/squad-migration.md +1 -1
- package/docs/guides/squads-guide.md +1 -1
- package/docs/guides/squads-overview.md +10 -13
- package/docs/guides/template-engine-v2.md +1 -1
- package/docs/guides/testing-guide.md +1 -1
- package/docs/guides/user-guide.md +30 -26
- package/docs/installation/README.md +3 -3
- package/docs/installation/faq.md +1 -1
- package/docs/installation/linux.md +2 -2
- package/docs/installation/macos.md +1 -1
- package/docs/installation/npx-install.md +1 -1
- package/docs/installation/troubleshooting.md +1 -1
- package/docs/installation/uninstallation.md +1 -1
- package/docs/installation/v4-quick-start.md +1 -1
- package/docs/installation/windows.md +2 -2
- package/docs/pt/CHANGELOG.md +1 -1
- package/docs/pt/DOCUMENTATION-ROADMAP.md +1 -1
- package/docs/pt/ENVIRONMENT.md +1 -1
- package/docs/pt/FEATURE_PROCESS.md +2 -2
- package/docs/pt/GUIDING-PRINCIPLES.md +2 -2
- package/docs/pt/agent-reference-guide.md +3 -3
- package/docs/pt/architecture/ARCHITECTURE-INDEX.md +2 -2
- package/docs/pt/architecture/ade-architecture.md +1 -1
- package/docs/pt/architecture/agent-config-audit.md +1 -1
- package/docs/pt/architecture/agent-responsibility-matrix.md +1 -1
- package/docs/pt/architecture/agent-tool-integration-guide.md +1 -1
- package/docs/pt/architecture/ci-cd.md +1 -1
- package/docs/pt/architecture/coding-standards.md +1 -1
- package/docs/pt/architecture/contribution-workflow-research.md +1 -1
- package/docs/pt/architecture/dashboard-architecture.md +1 -1
- package/docs/pt/architecture/dashboard-realtime.md +1 -1
- package/docs/pt/architecture/hcs-check-specifications.md +1 -1
- package/docs/pt/architecture/hcs-execution-modes.md +1 -1
- package/docs/pt/architecture/hcs-self-healing-spec.md +1 -1
- package/docs/pt/architecture/high-level-architecture.md +1 -1
- package/docs/pt/architecture/introduction.md +1 -1
- package/docs/pt/architecture/mcp-api-keys-management.md +3 -3
- package/docs/pt/architecture/mcp-system-diagrams.md +1 -1
- package/docs/pt/architecture/module-system.md +4 -4
- package/docs/pt/architecture/multi-repo-strategy.md +2 -2
- package/docs/pt/architecture/source-tree.md +1 -1
- package/docs/pt/architecture/squad-improvement-analysis.md +1 -1
- package/docs/pt/architecture/squad-improvement-recommended-approach.md +1 -1
- package/docs/pt/architecture/tech-stack.md +1 -1
- package/docs/pt/architecture/utility-integration-guide.md +1 -1
- package/docs/pt/code-of-conduct.md +1 -1
- package/docs/pt/community/README-community-snippet-core.md +1 -1
- package/docs/pt/community/README-community-snippet-mcp.md +2 -2
- package/docs/pt/contributing.md +7 -7
- package/docs/pt/core-architecture.md +1 -1
- package/docs/pt/docker-mcp-setup.md +1 -1
- package/docs/pt/framework/README.md +1 -1
- package/docs/pt/framework/coding-standards.md +1 -1
- package/docs/pt/framework/source-tree.md +1 -1
- package/docs/pt/framework/tech-stack.md +1 -1
- package/docs/pt/getting-started.md +1 -1
- package/docs/pt/git-workflow-guide.md +1 -1
- package/docs/pt/guides/README.md +3 -3
- package/docs/pt/guides/agent-selection-guide.md +2 -2
- package/docs/pt/guides/api-reference.md +1 -1
- package/docs/pt/guides/contextual-greeting-system-guide.md +1 -1
- package/docs/pt/guides/contributing-squads.md +1 -1
- package/docs/pt/guides/development-setup.md +1 -1
- package/docs/pt/guides/installation-troubleshooting.md +1 -1
- package/docs/pt/guides/llm-routing.md +1 -1
- package/docs/pt/guides/mcp/desktop-commander.md +1 -1
- package/docs/pt/guides/mcp/docker-gateway-tutorial.md +1 -1
- package/docs/pt/guides/mcp-global-setup.md +1 -1
- package/docs/pt/guides/project-status-feature.md +1 -1
- package/docs/pt/guides/quality-dashboard.md +1 -1
- package/docs/pt/guides/quality-gates.md +1 -1
- package/docs/pt/guides/security-hardening.md +2 -2
- package/docs/pt/guides/service-discovery.md +19 -22
- package/docs/pt/guides/squad-examples/README.md +1 -1
- package/docs/pt/guides/squad-migration.md +1 -1
- package/docs/pt/guides/squads-guide.md +1 -1
- package/docs/pt/guides/squads-overview.md +11 -13
- package/docs/pt/guides/template-engine-v2.md +1 -1
- package/docs/pt/guides/testing-guide.md +3 -3
- package/docs/pt/guides/user-guide.md +30 -26
- package/docs/pt/guides/workflows-guide.md +1 -1
- package/docs/pt/how-to-contribute-with-pull-requests.md +1 -1
- package/docs/pt/ide-integration.md +2 -2
- package/docs/pt/installation/README.md +1 -1
- package/docs/pt/installation/faq.md +1 -1
- package/docs/pt/installation/linux.md +1 -1
- package/docs/pt/installation/macos.md +1 -1
- package/docs/pt/installation/troubleshooting.md +1 -1
- package/docs/pt/installation/v4-quick-start.md +1 -1
- package/docs/pt/installation/windows.md +1 -1
- package/docs/pt/meta-agent-commands.md +1 -1
- package/docs/pt/migration-guide.md +1 -1
- package/docs/pt/npx-install.md +1 -1
- package/docs/pt/performance-tuning-guide.md +1 -1
- package/docs/pt/platforms/claude-code.md +2 -2
- package/docs/pt/roadmap.md +2 -2
- package/docs/pt/security-best-practices.md +2 -2
- package/docs/pt/security.md +1 -1
- package/docs/pt/sinapse-nomenclature-specification.md +1 -1
- package/docs/pt/troubleshooting.md +1 -1
- package/docs/pt/uninstallation.md +1 -1
- package/docs/pt/versioning-and-releases.md +1 -1
- package/docs/security/overview.md +1 -1
- package/docs/security/security-best-practices.md +2 -2
- package/docs/sinapse-workflows/README.md +1 -1
- package/package.json +2 -1
- package/packages/installer/package.json +1 -0
- package/packages/installer/src/wizard/feedback.js +18 -2
- package/packages/installer/src/wizard/i18n.js +78 -0
- package/packages/installer/src/wizard/ide-config-generator.js +14 -9
- package/packages/installer/src/wizard/index.js +16 -16
- package/packages/installer/src/wizard/validation/report-generator.js +22 -21
- package/packages/installer/src/wizard/validation/troubleshooting-system.js +19 -13
- package/scripts/gen-agent-badges.js +1 -1
- package/scripts/install-chrome-brain.sh +2 -2
- package/scripts/package-synapse.js +14 -5
- package/scripts/prepare-hooks.js +19 -0
- package/scripts/validate-agent-codenames.js +174 -0
- package/scripts/validate-all.js +1 -0
- package/scripts/validate-no-personal-leaks.js +24 -9
- package/sinapse/agents/sinapse-orqx.md +5 -5
- package/sinapse/agents/snps-orqx.md +5 -5
- package/squads/squad-brand/agents/brand-creative-engineer.md +5 -5
- package/squads/squad-brand/squad.yaml +6 -6
- package/squads/squad-content/agents/content-engineer.md +7 -7
- package/squads/squad-content/squad.yaml +5 -5
- package/squads/squad-copy/knowledge-base/consequence-headline-patterns.md +2 -2
- package/squads/squad-courses/agents/production-director.md +5 -5
- package/squads/squad-courses/squad.yaml +1 -1
- package/docs/guides/hooks-two-layers.md +0 -66
|
@@ -51,6 +51,45 @@ const TRANSLATIONS = {
|
|
|
51
51
|
installingDeps: 'Installing dependencies...',
|
|
52
52
|
configuringEnv: 'Configuring environment...',
|
|
53
53
|
validating: 'Validating installation...',
|
|
54
|
+
installingGlobalAgents: 'Installing global agent definitions...',
|
|
55
|
+
skippingGlobalAgentsCodex: 'Skipping global Claude agents (Codex-only install)',
|
|
56
|
+
ideSyncDriftWarning: 'IDE sync out of date — run: sinapse doctor --fix',
|
|
57
|
+
entityRegistrySkippedNoDeps:
|
|
58
|
+
'Core dependencies (.sinapse-ai) not found — skipping entity registry setup',
|
|
59
|
+
generatingBoundaryRules: 'Generating boundary rules...',
|
|
60
|
+
copyingSkills: 'Copying skills...',
|
|
61
|
+
copyingExtraCommands: 'Copying extra commands...',
|
|
62
|
+
runningIdeSync: 'Running IDE sync...',
|
|
63
|
+
runningCodexSync: 'Running Codex local-first sync...',
|
|
64
|
+
bootstrappingEntityRegistry: 'Setting up entity registry...',
|
|
65
|
+
installingLlmRouting: 'Installing LLM routing commands...',
|
|
66
|
+
dependencyInstallation: 'Dependency installation...',
|
|
67
|
+
|
|
68
|
+
// Validation report (AF-20260629 — i18n migration)
|
|
69
|
+
reportTitle: 'Installation Validation Report',
|
|
70
|
+
reportIdeConfig: 'IDE Configuration',
|
|
71
|
+
reportEnvConfig: 'Environment Configuration',
|
|
72
|
+
reportCoreConfig: 'Core Configuration',
|
|
73
|
+
reportMcpConfig: 'MCP Configuration',
|
|
74
|
+
reportMcpInstallation: 'MCP Installation',
|
|
75
|
+
reportMcpHealthy: 'healthy',
|
|
76
|
+
reportMcpWarnings: 'warnings',
|
|
77
|
+
reportMcpFailed: 'failed',
|
|
78
|
+
reportMcpsNotInstalled: 'MCPs not installed (skipped)',
|
|
79
|
+
reportDependencies: 'Dependencies',
|
|
80
|
+
reportChecksPassed: '{passed}/{total} checks passed',
|
|
81
|
+
reportWarnings: 'Warnings ({count}):',
|
|
82
|
+
reportErrors: 'Errors ({count}):',
|
|
83
|
+
reportSolution: 'Solution: {solution}',
|
|
84
|
+
reportNextSteps: 'Next Steps:',
|
|
85
|
+
reportNextStep1: '1. Review the errors above',
|
|
86
|
+
reportNextStep2: '2. Fix the critical issues',
|
|
87
|
+
reportNextStep3: '3. Re-run the installation: npx sinapse-ai@latest install',
|
|
88
|
+
reportOverallStatus: 'Overall Status',
|
|
89
|
+
reportAllPassed: 'All checks passed!',
|
|
90
|
+
reportPartialSuccess: 'PARTIAL SUCCESS ({count} issue(s) to review)',
|
|
91
|
+
reportFailedStatus: 'FAILED ({count} error(s))',
|
|
92
|
+
reportUnknownStatus: 'UNKNOWN',
|
|
54
93
|
|
|
55
94
|
// Status
|
|
56
95
|
success: 'Success',
|
|
@@ -134,6 +173,45 @@ const TRANSLATIONS = {
|
|
|
134
173
|
installingDeps: 'Instalando dependências...',
|
|
135
174
|
configuringEnv: 'Configurando ambiente...',
|
|
136
175
|
validating: 'Validando instalação...',
|
|
176
|
+
installingGlobalAgents: 'Instalando definições globais de agentes...',
|
|
177
|
+
skippingGlobalAgentsCodex: 'Pulando agentes globais do Claude (instalação somente Codex)',
|
|
178
|
+
ideSyncDriftWarning: 'Sincronização de IDE desatualizada — rode: sinapse doctor --fix',
|
|
179
|
+
entityRegistrySkippedNoDeps:
|
|
180
|
+
'Dependências do núcleo (.sinapse-ai) não encontradas — pulando o registro de entidades',
|
|
181
|
+
generatingBoundaryRules: 'Gerando regras de proteção...',
|
|
182
|
+
copyingSkills: 'Copiando skills...',
|
|
183
|
+
copyingExtraCommands: 'Copiando comandos extras...',
|
|
184
|
+
runningIdeSync: 'Sincronizando IDEs...',
|
|
185
|
+
runningCodexSync: 'Sincronizando Codex (local-first)...',
|
|
186
|
+
bootstrappingEntityRegistry: 'Preparando o registro de entidades...',
|
|
187
|
+
installingLlmRouting: 'Instalando comandos de roteamento de LLM...',
|
|
188
|
+
dependencyInstallation: 'Instalação de dependências...',
|
|
189
|
+
|
|
190
|
+
// Validation report (AF-20260629 — i18n migration)
|
|
191
|
+
reportTitle: 'Relatório de Validação da Instalação',
|
|
192
|
+
reportIdeConfig: 'Configuração de IDE',
|
|
193
|
+
reportEnvConfig: 'Configuração de Ambiente',
|
|
194
|
+
reportCoreConfig: 'Configuração do Núcleo',
|
|
195
|
+
reportMcpConfig: 'Configuração de MCP',
|
|
196
|
+
reportMcpInstallation: 'Instalação de MCP',
|
|
197
|
+
reportMcpHealthy: 'saudáveis',
|
|
198
|
+
reportMcpWarnings: 'avisos',
|
|
199
|
+
reportMcpFailed: 'falharam',
|
|
200
|
+
reportMcpsNotInstalled: 'MCPs não instalados (pulado)',
|
|
201
|
+
reportDependencies: 'Dependências',
|
|
202
|
+
reportChecksPassed: '{passed}/{total} verificações OK',
|
|
203
|
+
reportWarnings: 'Avisos ({count}):',
|
|
204
|
+
reportErrors: 'Erros ({count}):',
|
|
205
|
+
reportSolution: 'Solução: {solution}',
|
|
206
|
+
reportNextSteps: 'Próximos Passos:',
|
|
207
|
+
reportNextStep1: '1. Revise os erros acima',
|
|
208
|
+
reportNextStep2: '2. Corrija os problemas críticos',
|
|
209
|
+
reportNextStep3: '3. Rode a instalação novamente: npx sinapse-ai@latest install',
|
|
210
|
+
reportOverallStatus: 'Status Geral',
|
|
211
|
+
reportAllPassed: 'Todas as verificações passaram!',
|
|
212
|
+
reportPartialSuccess: 'SUCESSO PARCIAL ({count} ponto(s) a revisar)',
|
|
213
|
+
reportFailedStatus: 'FALHOU ({count} erro(s))',
|
|
214
|
+
reportUnknownStatus: 'DESCONHECIDO',
|
|
137
215
|
|
|
138
216
|
// Status
|
|
139
217
|
success: 'Sucesso',
|
|
@@ -11,7 +11,10 @@ const fs = require('fs-extra');
|
|
|
11
11
|
const path = require('path');
|
|
12
12
|
const yaml = require('js-yaml');
|
|
13
13
|
const ora = require('ora');
|
|
14
|
-
|
|
14
|
+
// cross-spawn resolves gemini's Windows .cmd/.ps1 shim WITHOUT a shell and
|
|
15
|
+
// escapes argv properly (CVE-2024-27980), so a path with spaces in extensionDir
|
|
16
|
+
// stays intact — shell:true would split it and break the link silently.
|
|
17
|
+
const crossSpawn = require('cross-spawn');
|
|
15
18
|
const { getIDEConfig } = require('../config/ide-configs');
|
|
16
19
|
const { validateProjectName } = require('./validators');
|
|
17
20
|
const { getMergeStrategy, hasMergeStrategy } = require('../merger/index.js');
|
|
@@ -539,6 +542,7 @@ async function copyClaudeHooksFolder(projectRoot) {
|
|
|
539
542
|
'enforce-architecture-first.cjs',
|
|
540
543
|
'enforce-delegation.cjs',
|
|
541
544
|
'enforce-story-gate.cjs',
|
|
545
|
+
'doc-first-gate.cjs',
|
|
542
546
|
'enforce-framework-boundary.cjs',
|
|
543
547
|
'secret-scanning.cjs',
|
|
544
548
|
'write-path-validation.cjs',
|
|
@@ -603,6 +607,11 @@ const HOOK_EVENT_MAP = {
|
|
|
603
607
|
matcher: 'Write|Edit',
|
|
604
608
|
timeout: 5,
|
|
605
609
|
},
|
|
610
|
+
'doc-first-gate.cjs': {
|
|
611
|
+
event: 'PreToolUse',
|
|
612
|
+
matcher: 'Write|Edit',
|
|
613
|
+
timeout: 5,
|
|
614
|
+
},
|
|
606
615
|
// Boundary L1-L4 — protects untouchable framework core when
|
|
607
616
|
// boundary.frameworkProtection=true (read dynamically from core-config.yaml).
|
|
608
617
|
'enforce-framework-boundary.cjs': {
|
|
@@ -931,19 +940,17 @@ async function linkGeminiExtension(projectRoot) {
|
|
|
931
940
|
|
|
932
941
|
// On Windows, `gemini` is a .cmd/.ps1 shim — spawnSync without a shell throws
|
|
933
942
|
// EINVAL. Run through the shell on win32 so the shim resolves.
|
|
934
|
-
const versionCheck =
|
|
943
|
+
const versionCheck = crossSpawn.sync('gemini', ['--version'], {
|
|
935
944
|
encoding: 'utf8',
|
|
936
|
-
shell: process.platform === 'win32',
|
|
937
945
|
});
|
|
938
946
|
if (versionCheck.status !== 0) {
|
|
939
947
|
return { status: 'skipped', reason: 'gemini-cli-not-available' };
|
|
940
948
|
}
|
|
941
949
|
|
|
942
|
-
let linkResult =
|
|
950
|
+
let linkResult = crossSpawn.sync('gemini', ['extensions', 'link', extensionDir, '--consent'], {
|
|
943
951
|
cwd: projectRoot,
|
|
944
952
|
encoding: 'utf8',
|
|
945
953
|
timeout: 30000,
|
|
946
|
-
shell: process.platform === 'win32',
|
|
947
954
|
});
|
|
948
955
|
|
|
949
956
|
if (linkResult.status === 0) {
|
|
@@ -954,22 +961,20 @@ async function linkGeminiExtension(projectRoot) {
|
|
|
954
961
|
|
|
955
962
|
// When already installed, perform idempotent relink.
|
|
956
963
|
if (output.includes('already installed')) {
|
|
957
|
-
const uninstall =
|
|
964
|
+
const uninstall = crossSpawn.sync('gemini', ['extensions', 'uninstall', 'sinapse'], {
|
|
958
965
|
cwd: projectRoot,
|
|
959
966
|
encoding: 'utf8',
|
|
960
967
|
timeout: 30000,
|
|
961
|
-
shell: process.platform === 'win32',
|
|
962
968
|
});
|
|
963
969
|
|
|
964
970
|
if (uninstall.status !== 0) {
|
|
965
971
|
return { status: 'skipped', reason: 'uninstall-failed' };
|
|
966
972
|
}
|
|
967
973
|
|
|
968
|
-
linkResult =
|
|
974
|
+
linkResult = crossSpawn.sync('gemini', ['extensions', 'link', extensionDir, '--consent'], {
|
|
969
975
|
cwd: projectRoot,
|
|
970
976
|
encoding: 'utf8',
|
|
971
977
|
timeout: 30000,
|
|
972
|
-
shell: process.platform === 'win32',
|
|
973
978
|
});
|
|
974
979
|
|
|
975
980
|
if (linkResult.status === 0) {
|
|
@@ -503,7 +503,7 @@ async function runWizard(options = {}) {
|
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
// Story 1.4: Install SINAPSE core framework (agents, tasks, workflows, templates)
|
|
506
|
-
console.log('\n📦
|
|
506
|
+
console.log('\n📦 ' + t('installingCore'));
|
|
507
507
|
let sinapseCoreResult = null;
|
|
508
508
|
try {
|
|
509
509
|
sinapseCoreResult = await installSinapseCore({
|
|
@@ -530,7 +530,7 @@ async function runWizard(options = {}) {
|
|
|
530
530
|
// Install global orqx agent definitions to ~/.claude/agents/ (only for Claude Code)
|
|
531
531
|
const selectedLLM = answers.selectedLLM || 'claude-code';
|
|
532
532
|
if (selectedLLM === 'claude-code' || selectedLLM === 'both') {
|
|
533
|
-
console.log('\n🤖
|
|
533
|
+
console.log('\n🤖 ' + t('installingGlobalAgents'));
|
|
534
534
|
try {
|
|
535
535
|
const globalAgentsResult = await installGlobalAgents();
|
|
536
536
|
if (globalAgentsResult.success) {
|
|
@@ -546,7 +546,7 @@ async function runWizard(options = {}) {
|
|
|
546
546
|
answers.globalAgentsInstalled = 0;
|
|
547
547
|
}
|
|
548
548
|
} else {
|
|
549
|
-
console.log('\n🤖
|
|
549
|
+
console.log('\n🤖 ' + t('skippingGlobalAgentsCodex'));
|
|
550
550
|
answers.globalAgentsInstalled = 0;
|
|
551
551
|
}
|
|
552
552
|
|
|
@@ -681,7 +681,7 @@ async function runWizard(options = {}) {
|
|
|
681
681
|
}
|
|
682
682
|
|
|
683
683
|
// Story INS-4.3: Wire settings.json boundary generator after .sinapse-ai/ copy
|
|
684
|
-
console.log('\n🔒
|
|
684
|
+
console.log('\n🔒 ' + t('generatingBoundaryRules'));
|
|
685
685
|
try {
|
|
686
686
|
const settingsGenerator = require('../../../../.sinapse-ai/infrastructure/scripts/generate-settings-json');
|
|
687
687
|
settingsGenerator.generate(process.cwd());
|
|
@@ -697,7 +697,7 @@ async function runWizard(options = {}) {
|
|
|
697
697
|
}
|
|
698
698
|
|
|
699
699
|
// Story INS-4.3: Copy skills (Gap #11)
|
|
700
|
-
console.log('\n📚
|
|
700
|
+
console.log('\n📚 ' + t('copyingSkills'));
|
|
701
701
|
try {
|
|
702
702
|
const skillsResult = await copySkillFiles(process.cwd());
|
|
703
703
|
if (skillsResult.skipped) {
|
|
@@ -713,7 +713,7 @@ async function runWizard(options = {}) {
|
|
|
713
713
|
}
|
|
714
714
|
|
|
715
715
|
// Story INS-4.3: Copy extra commands (Gap #12)
|
|
716
|
-
console.log('\n📋
|
|
716
|
+
console.log('\n📋 ' + t('copyingExtraCommands'));
|
|
717
717
|
try {
|
|
718
718
|
const commandsResult = await copyExtraCommandFiles(process.cwd());
|
|
719
719
|
if (commandsResult.skipped) {
|
|
@@ -729,7 +729,7 @@ async function runWizard(options = {}) {
|
|
|
729
729
|
}
|
|
730
730
|
|
|
731
731
|
// Story INS-4.5: IDE Sync — transform agents/skills/commands for each configured IDE
|
|
732
|
-
console.log('\n🔄
|
|
732
|
+
console.log('\n🔄 ' + t('runningIdeSync'));
|
|
733
733
|
const targetProjectRoot = process.cwd();
|
|
734
734
|
const savedCwd = process.cwd();
|
|
735
735
|
try {
|
|
@@ -750,7 +750,7 @@ async function runWizard(options = {}) {
|
|
|
750
750
|
console.log = _origLog;
|
|
751
751
|
}
|
|
752
752
|
if (answers.ideSyncValidation === 'drift') {
|
|
753
|
-
console.warn('⚠️
|
|
753
|
+
console.warn('⚠️ ' + t('ideSyncDriftWarning'));
|
|
754
754
|
}
|
|
755
755
|
} catch (syncError) {
|
|
756
756
|
console.warn(`⚠️ IDE sync failed: ${syncError.message} — run 'sinapse doctor --fix' post-install`);
|
|
@@ -765,7 +765,7 @@ async function runWizard(options = {}) {
|
|
|
765
765
|
// source (the static .codex payload — scripts/tasks/JSONs — was already
|
|
766
766
|
// copied by installSinapseCore when Codex was selected). Codex installs only.
|
|
767
767
|
if (selectedLLM === 'codex' || selectedLLM === 'both') {
|
|
768
|
-
console.log('\n🔄
|
|
768
|
+
console.log('\n🔄 ' + t('runningCodexSync'));
|
|
769
769
|
const savedCwdCodex = process.cwd();
|
|
770
770
|
try {
|
|
771
771
|
const { syncCodexLocalFirst } = require('../../../../.sinapse-ai/infrastructure/scripts/sync-codex-local-first');
|
|
@@ -786,14 +786,14 @@ async function runWizard(options = {}) {
|
|
|
786
786
|
// Story INS-4.12: Fix module resolution + bootstrap timing
|
|
787
787
|
// Bootstrap runs AFTER .sinapse-ai deps are installed (sinapse-ai-installer.js:324-345)
|
|
788
788
|
// NODE_PATH ensures spawned scripts can resolve packages from .sinapse-ai/node_modules/
|
|
789
|
-
console.log('\n📇
|
|
789
|
+
console.log('\n📇 ' + t('bootstrappingEntityRegistry'));
|
|
790
790
|
try {
|
|
791
791
|
const registryScript = path.join(process.cwd(), '.sinapse-ai', 'development', 'scripts', 'populate-entity-registry.js');
|
|
792
792
|
if (fse.existsSync(registryScript)) {
|
|
793
793
|
// INS-4.12 AC3: Guard — skip bootstrap if .sinapse-ai deps are not installed
|
|
794
794
|
const sinapseCoreNodeModules = path.join(process.cwd(), '.sinapse-ai', 'node_modules');
|
|
795
795
|
if (!fse.existsSync(sinapseCoreNodeModules)) {
|
|
796
|
-
console.warn('⚠️
|
|
796
|
+
console.warn('⚠️ ' + t('entityRegistrySkippedNoDeps'));
|
|
797
797
|
console.warn(' Run: cd .sinapse-ai && npm install --production');
|
|
798
798
|
answers.entityRegistryStatus = 'skipped-no-deps';
|
|
799
799
|
} else {
|
|
@@ -834,7 +834,7 @@ async function runWizard(options = {}) {
|
|
|
834
834
|
}
|
|
835
835
|
|
|
836
836
|
// Story 1.6: Environment Configuration
|
|
837
|
-
console.log('\n📝
|
|
837
|
+
console.log('\n📝 ' + t('configuringEnv'));
|
|
838
838
|
|
|
839
839
|
try {
|
|
840
840
|
const envResult = await configureEnvironment({
|
|
@@ -901,7 +901,7 @@ async function runWizard(options = {}) {
|
|
|
901
901
|
|
|
902
902
|
if (!packageJsonExists) {
|
|
903
903
|
// Greenfield project - no package.json, skip dependency installation
|
|
904
|
-
console.log('\n📦
|
|
904
|
+
console.log('\n📦 ' + t('dependencyInstallation'));
|
|
905
905
|
console.log(' ℹ️ No package.json found (greenfield project)');
|
|
906
906
|
console.log(' 💡 Dependencies will be installed when you add a package.json');
|
|
907
907
|
answers.depsInstalled = true; // Mark as success since there's nothing to install
|
|
@@ -909,7 +909,7 @@ async function runWizard(options = {}) {
|
|
|
909
909
|
answers.packageManager = detectPackageManager();
|
|
910
910
|
} else {
|
|
911
911
|
// Brownfield project or existing project - has package.json
|
|
912
|
-
console.log('\n📦
|
|
912
|
+
console.log('\n📦 ' + t('installingDeps'));
|
|
913
913
|
|
|
914
914
|
// Auto-detect package manager (no longer asked as question)
|
|
915
915
|
const detectedPM = detectPackageManager();
|
|
@@ -1015,7 +1015,7 @@ async function runWizard(options = {}) {
|
|
|
1015
1015
|
// }
|
|
1016
1016
|
|
|
1017
1017
|
// Story 6.7: LLM Routing Installation
|
|
1018
|
-
console.log('\
|
|
1018
|
+
console.log('\n' + t('installingLlmRouting'));
|
|
1019
1019
|
try {
|
|
1020
1020
|
// Check if already installed
|
|
1021
1021
|
if (isLLMRoutingInstalled()) {
|
|
@@ -1052,7 +1052,7 @@ async function runWizard(options = {}) {
|
|
|
1052
1052
|
answers.proInstalled = false;
|
|
1053
1053
|
|
|
1054
1054
|
// Story 1.8: Installation Validation
|
|
1055
|
-
console.log('\n🔍
|
|
1055
|
+
console.log('\n🔍 ' + t('validating') + '\n');
|
|
1056
1056
|
|
|
1057
1057
|
try {
|
|
1058
1058
|
const validation = await validateInstallation(
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const chalk = require('chalk');
|
|
9
|
+
const { t, tf } = require('../i18n');
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Generate formatted validation report
|
|
@@ -19,18 +20,18 @@ async function generateReport(validationResults) {
|
|
|
19
20
|
// Header
|
|
20
21
|
lines.push('');
|
|
21
22
|
lines.push(chalk.bold.cyan('═══════════════════════════════════════════════'));
|
|
22
|
-
lines.push(chalk.bold.cyan('🔍
|
|
23
|
+
lines.push(chalk.bold.cyan('🔍 ' + t('reportTitle')));
|
|
23
24
|
lines.push(chalk.bold.cyan('═══════════════════════════════════════════════'));
|
|
24
25
|
lines.push('');
|
|
25
26
|
|
|
26
27
|
// File Structure Section
|
|
27
28
|
if (validationResults.components.files) {
|
|
28
29
|
const fileResults = validationResults.components.files;
|
|
29
|
-
lines.push(formatComponentSection('
|
|
30
|
-
lines.push(formatComponentSection('
|
|
31
|
-
lines.push(formatComponentSection('
|
|
30
|
+
lines.push(formatComponentSection(t('reportIdeConfig'), fileResults, 'IDE Config'));
|
|
31
|
+
lines.push(formatComponentSection(t('reportEnvConfig'), fileResults, 'Environment'));
|
|
32
|
+
lines.push(formatComponentSection(t('reportCoreConfig'), fileResults, 'Core Config'));
|
|
32
33
|
if (fileResults.checks.some((c) => c.component === 'MCP Config')) {
|
|
33
|
-
lines.push(formatComponentSection('
|
|
34
|
+
lines.push(formatComponentSection(t('reportMcpConfig'), fileResults, 'MCP Config'));
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -56,11 +57,11 @@ async function generateReport(validationResults) {
|
|
|
56
57
|
);
|
|
57
58
|
if (importantWarnings.length > 0) {
|
|
58
59
|
lines.push('');
|
|
59
|
-
lines.push(chalk.bold.yellow(
|
|
60
|
+
lines.push(chalk.bold.yellow('⚠️ ' + tf('reportWarnings', { count: importantWarnings.length })));
|
|
60
61
|
importantWarnings.forEach((warning) => {
|
|
61
62
|
lines.push(chalk.yellow(` - ${warning.message}`));
|
|
62
63
|
if (warning.solution) {
|
|
63
|
-
lines.push(chalk.dim(
|
|
64
|
+
lines.push(chalk.dim(' ' + tf('reportSolution', { solution: warning.solution })));
|
|
64
65
|
}
|
|
65
66
|
});
|
|
66
67
|
}
|
|
@@ -68,11 +69,11 @@ async function generateReport(validationResults) {
|
|
|
68
69
|
// Errors Section
|
|
69
70
|
if (validationResults.errors.length > 0) {
|
|
70
71
|
lines.push('');
|
|
71
|
-
lines.push(chalk.bold.red(
|
|
72
|
+
lines.push(chalk.bold.red('❌ ' + tf('reportErrors', { count: validationResults.errors.length })));
|
|
72
73
|
validationResults.errors.forEach((error) => {
|
|
73
74
|
lines.push(chalk.red(` - ${error.message}`));
|
|
74
75
|
if (error.solution) {
|
|
75
|
-
lines.push(chalk.dim(
|
|
76
|
+
lines.push(chalk.dim(' ' + tf('reportSolution', { solution: error.solution })));
|
|
76
77
|
}
|
|
77
78
|
});
|
|
78
79
|
}
|
|
@@ -83,10 +84,10 @@ async function generateReport(validationResults) {
|
|
|
83
84
|
validationResults.overallStatus === 'failed'
|
|
84
85
|
) {
|
|
85
86
|
lines.push('');
|
|
86
|
-
lines.push(chalk.bold.red('❌
|
|
87
|
-
lines.push(chalk.red('
|
|
88
|
-
lines.push(chalk.red('
|
|
89
|
-
lines.push(chalk.red('
|
|
87
|
+
lines.push(chalk.bold.red('❌ ' + t('reportNextSteps')));
|
|
88
|
+
lines.push(chalk.red(' ' + t('reportNextStep1')));
|
|
89
|
+
lines.push(chalk.red(' ' + t('reportNextStep2')));
|
|
90
|
+
lines.push(chalk.red(' ' + t('reportNextStep3')));
|
|
90
91
|
}
|
|
91
92
|
// Success cases show completion message in showCompletion()
|
|
92
93
|
|
|
@@ -109,7 +110,7 @@ function formatComponentSection(title, componentResults, componentName) {
|
|
|
109
110
|
const allSuccess = passed === total;
|
|
110
111
|
const icon = allSuccess ? chalk.green('✅') : chalk.yellow('⚠️');
|
|
111
112
|
|
|
112
|
-
const lines = [`${icon} ${chalk.bold(title)}: ${passed
|
|
113
|
+
const lines = [`${icon} ${chalk.bold(title)}: ${tf('reportChecksPassed', { passed, total })}`];
|
|
113
114
|
|
|
114
115
|
// Only show individual checks if there are failures
|
|
115
116
|
if (!allSuccess) {
|
|
@@ -134,7 +135,7 @@ function formatMCPSection(mcpResults) {
|
|
|
134
135
|
const healthChecks = mcpResults.healthChecks;
|
|
135
136
|
|
|
136
137
|
if (!healthChecks || healthChecks.length === 0) {
|
|
137
|
-
return chalk.dim('
|
|
138
|
+
return chalk.dim(' ' + t('reportMcpsNotInstalled') + '\n');
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
const totalMCPs = healthChecks.length;
|
|
@@ -150,7 +151,7 @@ function formatMCPSection(mcpResults) {
|
|
|
150
151
|
: chalk.red('❌');
|
|
151
152
|
|
|
152
153
|
const lines = [
|
|
153
|
-
`${icon} ${chalk.bold('
|
|
154
|
+
`${icon} ${chalk.bold(t('reportMcpInstallation'))} (${healthyMCPs}/${totalMCPs} ${t('reportMcpHealthy')}${warningMCPs > 0 ? `, ${warningMCPs} ${t('reportMcpWarnings')}` : ''}${failedMCPs > 0 ? `, ${failedMCPs} ${t('reportMcpFailed')}` : ''})`,
|
|
154
155
|
];
|
|
155
156
|
|
|
156
157
|
healthChecks.forEach((health) => {
|
|
@@ -198,7 +199,7 @@ function formatDependenciesSection(depsResults) {
|
|
|
198
199
|
);
|
|
199
200
|
const icon = allSuccess ? chalk.green('✅') : chalk.yellow('⚠️');
|
|
200
201
|
|
|
201
|
-
const lines = [`${icon} ${chalk.bold('
|
|
202
|
+
const lines = [`${icon} ${chalk.bold(t('reportDependencies'))}`];
|
|
202
203
|
|
|
203
204
|
depsResults.checks.forEach((check) => {
|
|
204
205
|
let statusIcon, statusText;
|
|
@@ -237,20 +238,20 @@ function formatOverallStatus(validationResults) {
|
|
|
237
238
|
case 'success':
|
|
238
239
|
case 'warning':
|
|
239
240
|
// Treat warnings as success - they're just informational
|
|
240
|
-
return chalk.bold.green('
|
|
241
|
+
return chalk.bold.green(`${t('reportOverallStatus')}: ✅ ${t('reportAllPassed')}`);
|
|
241
242
|
|
|
242
243
|
case 'partial':
|
|
243
244
|
return chalk.bold.yellow(
|
|
244
|
-
|
|
245
|
+
`${t('reportOverallStatus')}: ⚠️ ${tf('reportPartialSuccess', { count: errorCount })}`,
|
|
245
246
|
);
|
|
246
247
|
|
|
247
248
|
case 'failed':
|
|
248
249
|
return chalk.bold.red(
|
|
249
|
-
|
|
250
|
+
`${t('reportOverallStatus')}: ❌ ${tf('reportFailedStatus', { count: errorCount })}`,
|
|
250
251
|
);
|
|
251
252
|
|
|
252
253
|
default:
|
|
253
|
-
return chalk.bold.gray('
|
|
254
|
+
return chalk.bold.gray(`${t('reportOverallStatus')}: ❓ ${t('reportUnknownStatus')}`);
|
|
254
255
|
}
|
|
255
256
|
}
|
|
256
257
|
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
const chalk = require('chalk');
|
|
9
9
|
const inquirer = require('inquirer');
|
|
10
10
|
|
|
11
|
+
// Canonical repo + docs locations. The legacy `docs.SinapseAI.com` domain never
|
|
12
|
+
// existed; every help link points at real, shipped docs in the GitHub repo
|
|
13
|
+
// (see package.json "bugs"/"repository").
|
|
14
|
+
const REPO_URL = 'https://github.com/caioimori/sinapse-ai';
|
|
15
|
+
const DOCS_BASE = `${REPO_URL}/blob/main/docs`;
|
|
16
|
+
|
|
11
17
|
/**
|
|
12
18
|
* Troubleshooting database
|
|
13
19
|
* Maps error codes to detailed troubleshooting information
|
|
@@ -21,11 +27,11 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
21
27
|
'.env accidentally deleted',
|
|
22
28
|
],
|
|
23
29
|
solutions: [
|
|
24
|
-
'Re-run wizard: npx
|
|
30
|
+
'Re-run wizard: npx sinapse-ai@latest install',
|
|
25
31
|
'Manually create .env from template: cp .env.example .env',
|
|
26
32
|
'Check file permissions in project directory',
|
|
27
33
|
],
|
|
28
|
-
docs:
|
|
34
|
+
docs: `${DOCS_BASE}/installation/troubleshooting.md`,
|
|
29
35
|
priority: 'critical',
|
|
30
36
|
},
|
|
31
37
|
|
|
@@ -37,11 +43,11 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
37
43
|
'File creation failed',
|
|
38
44
|
],
|
|
39
45
|
solutions: [
|
|
40
|
-
'Re-run wizard: npx
|
|
46
|
+
'Re-run wizard: npx sinapse-ai@latest install',
|
|
41
47
|
'Check .sinapse-ai directory exists',
|
|
42
48
|
'Manually create from template',
|
|
43
49
|
],
|
|
44
|
-
docs:
|
|
50
|
+
docs: `${DOCS_BASE}/troubleshooting.md`,
|
|
45
51
|
priority: 'high',
|
|
46
52
|
},
|
|
47
53
|
|
|
@@ -60,7 +66,7 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
60
66
|
'Check MCP service status',
|
|
61
67
|
'Verify npx can access package: npx -y [package-name] --version',
|
|
62
68
|
],
|
|
63
|
-
docs:
|
|
69
|
+
docs: `${DOCS_BASE}/troubleshooting.md`,
|
|
64
70
|
priority: 'medium',
|
|
65
71
|
},
|
|
66
72
|
|
|
@@ -79,7 +85,7 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
79
85
|
'Configure API keys in .env',
|
|
80
86
|
'Delete .mcp.json and reinstall',
|
|
81
87
|
],
|
|
82
|
-
docs:
|
|
88
|
+
docs: `${DOCS_BASE}/troubleshooting.md`,
|
|
83
89
|
priority: 'high',
|
|
84
90
|
},
|
|
85
91
|
|
|
@@ -95,7 +101,7 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
95
101
|
'Copy from template: .env, node_modules, *.key, *.pem',
|
|
96
102
|
'Initialize git if needed: git init',
|
|
97
103
|
],
|
|
98
|
-
docs:
|
|
104
|
+
docs: `${DOCS_BASE}/security/security-best-practices.md`,
|
|
99
105
|
priority: 'high',
|
|
100
106
|
},
|
|
101
107
|
|
|
@@ -114,7 +120,7 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
114
120
|
'Try different package manager: yarn or pnpm',
|
|
115
121
|
'Check disk space: df -h (Unix) or dir (Windows)',
|
|
116
122
|
],
|
|
117
|
-
docs:
|
|
123
|
+
docs: `${DOCS_BASE}/installation/troubleshooting.md`,
|
|
118
124
|
priority: 'critical',
|
|
119
125
|
},
|
|
120
126
|
|
|
@@ -131,7 +137,7 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
131
137
|
'Reinstall: npm install',
|
|
132
138
|
'Try clean install: npm ci',
|
|
133
139
|
],
|
|
134
|
-
docs:
|
|
140
|
+
docs: `${DOCS_BASE}/installation/troubleshooting.md`,
|
|
135
141
|
priority: 'high',
|
|
136
142
|
},
|
|
137
143
|
|
|
@@ -161,7 +167,7 @@ const TROUBLESHOOTING_DATABASE = {
|
|
|
161
167
|
'Run: chmod 600 .env',
|
|
162
168
|
'Verify: ls -la .env',
|
|
163
169
|
],
|
|
164
|
-
docs:
|
|
170
|
+
docs: `${DOCS_BASE}/security/security-best-practices.md`,
|
|
165
171
|
priority: 'medium',
|
|
166
172
|
},
|
|
167
173
|
};
|
|
@@ -244,15 +250,15 @@ async function offerTroubleshooting(errors) {
|
|
|
244
250
|
if (openDocs) {
|
|
245
251
|
console.log('');
|
|
246
252
|
console.log(chalk.green('📚 Documentation:'));
|
|
247
|
-
console.log(chalk.green(
|
|
253
|
+
console.log(chalk.green(` ${DOCS_BASE}/troubleshooting.md`));
|
|
248
254
|
console.log('');
|
|
249
255
|
}
|
|
250
256
|
|
|
251
257
|
// Offer support contact
|
|
252
258
|
console.log('');
|
|
253
259
|
console.log(chalk.bold('💬 Need Help?'));
|
|
254
|
-
console.log(chalk.dim(
|
|
255
|
-
console.log(chalk.dim(
|
|
260
|
+
console.log(chalk.dim(` - GitHub Issues: ${REPO_URL}/issues`));
|
|
261
|
+
console.log(chalk.dim(` - Documentation: ${DOCS_BASE}/troubleshooting.md`));
|
|
256
262
|
console.log('');
|
|
257
263
|
}
|
|
258
264
|
|
|
@@ -71,7 +71,7 @@ for (const line of fs.readFileSync(MANIFEST, 'utf8').split('\n')) {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
let squadDirs = [];
|
|
74
|
-
try { squadDirs = fs.readdirSync(SQUADS_DIR).filter((d) => fs.statSync(path.join(SQUADS_DIR, d)).isDirectory()); } catch {}
|
|
74
|
+
try { squadDirs = fs.readdirSync(SQUADS_DIR).filter((d) => fs.statSync(path.join(SQUADS_DIR, d)).isDirectory()); } catch { /* SQUADS_DIR absent — no squads to badge */ }
|
|
75
75
|
for (const squad of squadDirs) {
|
|
76
76
|
const dir = path.join(SQUADS_DIR, squad, 'agents');
|
|
77
77
|
let files = [];
|
|
@@ -504,8 +504,8 @@ Nao precisa rodar `chrome-debug` manualmente.
|
|
|
504
504
|
3. Testar em nova aba → comparar com original → iterar
|
|
505
505
|
|
|
506
506
|
**Casos validados:**
|
|
507
|
-
-
|
|
508
|
-
-
|
|
507
|
+
- Hero com orb WebGL (parallax, blend-mode) — ~15min
|
|
508
|
+
- Cena 3D facial (Three.js, modelo .obj, bloom) — ~20min
|
|
509
509
|
|
|
510
510
|
### Animacoes 3D via AI
|
|
511
511
|
|
|
@@ -150,11 +150,20 @@ function main() {
|
|
|
150
150
|
if (fs.existsSync(zipPath)) fs.unlinkSync(zipPath);
|
|
151
151
|
|
|
152
152
|
try {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
'
|
|
156
|
-
|
|
157
|
-
|
|
153
|
+
if (process.platform === 'win32') {
|
|
154
|
+
// PowerShell Compress-Archive on Windows
|
|
155
|
+
execFileSync('powershell', [
|
|
156
|
+
'-Command',
|
|
157
|
+
`Compress-Archive -Path '${OUT_DIR}${path.sep}*' -DestinationPath '${zipPath}' -Force`,
|
|
158
|
+
], { stdio: 'inherit' });
|
|
159
|
+
} else {
|
|
160
|
+
// `zip` is standard on macOS and most Linux; the surrounding catch degrades
|
|
161
|
+
// gracefully (keeps the unzipped dir) if it is not installed.
|
|
162
|
+
execFileSync('zip', ['-r', '-q', zipPath, path.basename(OUT_DIR)], {
|
|
163
|
+
cwd: path.dirname(OUT_DIR),
|
|
164
|
+
stdio: 'inherit',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
158
167
|
console.log(`\nZIP created: ${ZIP_NAME}`);
|
|
159
168
|
console.log(`Size: ${(fs.statSync(zipPath).size / 1024).toFixed(1)} KB`);
|
|
160
169
|
} catch (err) {
|
package/scripts/prepare-hooks.js
CHANGED
|
@@ -56,3 +56,22 @@ const managedReady = fs.existsSync(path.join(projectRoot, managedDir, 'pre-commi
|
|
|
56
56
|
if (inGitWorkTree && managedReady) {
|
|
57
57
|
runDirect('git', ['config', 'core.hooksPath', managedDir]);
|
|
58
58
|
}
|
|
59
|
+
|
|
60
|
+
// 3. On Unix, ensure the managed hook entrypoints are executable. Git SILENTLY
|
|
61
|
+
// ignores hooks that lack the +x bit, so without this the SINAPSE guards
|
|
62
|
+
// (secret scan, SQL guard, protected-files) would not run on macOS/Linux —
|
|
63
|
+
// they would only fire on Windows (which ignores the bit entirely). The
|
|
64
|
+
// tracked git mode is already 100755, but a Windows-side `npm pack` or a
|
|
65
|
+
// permissive checkout can drop it; this makes the executable bit deterministic.
|
|
66
|
+
if (managedReady && !onWindows) {
|
|
67
|
+
for (const hook of ['pre-commit', 'pre-push', 'post-commit']) {
|
|
68
|
+
const hookPath = path.join(projectRoot, managedDir, hook);
|
|
69
|
+
try {
|
|
70
|
+
if (fs.existsSync(hookPath)) {
|
|
71
|
+
fs.chmodSync(hookPath, 0o755);
|
|
72
|
+
}
|
|
73
|
+
} catch {
|
|
74
|
+
// best-effort — never break `npm install` over a chmod
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|