create-genia-os 2.4.0 → 3.0.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/bin/index.js +332 -332
- package/package.json +42 -42
- package/template/.aiox-core/constitution.md +171 -0
- package/template/.aiox-core/core-config.yaml +388 -0
- package/template/.aiox-core/development/README.md +142 -0
- package/template/.aiox-core/development/agent-teams/team-all.yaml +15 -0
- package/template/.aiox-core/development/agent-teams/team-fullstack.yaml +18 -0
- package/template/.aiox-core/development/agent-teams/team-ide-minimal.yaml +10 -0
- package/template/.aiox-core/development/agent-teams/team-no-ui.yaml +13 -0
- package/template/.aiox-core/development/agent-teams/team-qa-focused.yaml +155 -0
- package/template/.aiox-core/development/agents/aiox-master.md +463 -0
- package/template/.aiox-core/development/agents/analyst/MEMORY.md +33 -0
- package/template/.aiox-core/development/agents/analyst.md +271 -0
- package/template/.aiox-core/development/agents/architect/MEMORY.md +39 -0
- package/template/.aiox-core/development/agents/architect.md +472 -0
- package/template/.aiox-core/development/agents/data-engineer/MEMORY.md +32 -0
- package/template/.aiox-core/development/agents/data-engineer.md +493 -0
- package/template/.aiox-core/development/agents/dev/MEMORY.md +46 -0
- package/template/.aiox-core/development/agents/dev.md +558 -0
- package/template/.aiox-core/development/agents/devops/MEMORY.md +39 -0
- package/template/.aiox-core/development/agents/devops.md +537 -0
- package/template/.aiox-core/development/agents/pm/MEMORY.md +38 -0
- package/template/.aiox-core/development/agents/pm.md +375 -0
- package/template/.aiox-core/development/agents/po/MEMORY.md +45 -0
- package/template/.aiox-core/development/agents/po.md +333 -0
- package/template/.aiox-core/development/agents/qa/MEMORY.md +42 -0
- package/template/.aiox-core/development/agents/qa.md +447 -0
- package/template/.aiox-core/development/agents/sm/MEMORY.md +31 -0
- package/template/.aiox-core/development/agents/sm.md +285 -0
- package/template/.aiox-core/development/agents/squad-creator.md +342 -0
- package/template/.aiox-core/development/agents/ux/MEMORY.md +31 -0
- package/template/.aiox-core/development/agents/ux-design-expert.md +493 -0
- package/template/.aiox-core/development/checklists/agent-quality-gate.md +559 -0
- package/template/.aiox-core/development/checklists/brownfield-compatibility-checklist.md +114 -0
- package/template/.aiox-core/development/checklists/issue-triage-checklist.md +35 -0
- package/template/.aiox-core/development/checklists/memory-audit-checklist.md +53 -0
- package/template/.aiox-core/development/checklists/self-critique-checklist.md +273 -0
- package/template/.aiox-core/development/data/decision-heuristics-framework.md +621 -0
- package/template/.aiox-core/development/data/quality-dimensions-framework.md +426 -0
- package/template/.aiox-core/development/data/tier-system-framework.md +475 -0
- package/template/.aiox-core/development/scripts/activation-runtime.js +63 -0
- package/template/.aiox-core/development/scripts/agent-assignment-resolver.js +231 -0
- package/template/.aiox-core/development/scripts/agent-config-loader.js +626 -0
- package/template/.aiox-core/development/scripts/agent-exit-hooks.js +96 -0
- package/template/.aiox-core/development/scripts/apply-inline-greeting-all-agents.js +146 -0
- package/template/.aiox-core/development/scripts/approval-workflow.js +643 -0
- package/template/.aiox-core/development/scripts/audit-agent-config.js +380 -0
- package/template/.aiox-core/development/scripts/backlog-manager.js +407 -0
- package/template/.aiox-core/development/scripts/backup-manager.js +607 -0
- package/template/.aiox-core/development/scripts/batch-update-agents-session-context.js +95 -0
- package/template/.aiox-core/development/scripts/branch-manager.js +390 -0
- package/template/.aiox-core/development/scripts/code-quality-improver.js +1329 -0
- package/template/.aiox-core/development/scripts/commit-message-generator.js +850 -0
- package/template/.aiox-core/development/scripts/conflict-resolver.js +675 -0
- package/template/.aiox-core/development/scripts/decision-context.js +228 -0
- package/template/.aiox-core/development/scripts/decision-log-generator.js +293 -0
- package/template/.aiox-core/development/scripts/decision-log-indexer.js +284 -0
- package/template/.aiox-core/development/scripts/decision-recorder.js +168 -0
- package/template/.aiox-core/development/scripts/dependency-analyzer.js +638 -0
- package/template/.aiox-core/development/scripts/dev-context-loader.js +296 -0
- package/template/.aiox-core/development/scripts/diff-generator.js +352 -0
- package/template/.aiox-core/development/scripts/elicitation-engine.js +385 -0
- package/template/.aiox-core/development/scripts/elicitation-session-manager.js +300 -0
- package/template/.aiox-core/development/scripts/generate-greeting.js +109 -0
- package/template/.aiox-core/development/scripts/git-wrapper.js +462 -0
- package/template/.aiox-core/development/scripts/greeting-builder.js +1404 -0
- package/template/.aiox-core/development/scripts/greeting-config-cli.js +85 -0
- package/template/.aiox-core/development/scripts/greeting-preference-manager.js +169 -0
- package/template/.aiox-core/development/scripts/issue-triage.js +171 -0
- package/template/.aiox-core/development/scripts/manifest-preview.js +245 -0
- package/template/.aiox-core/development/scripts/metrics-tracker.js +776 -0
- package/template/.aiox-core/development/scripts/migrate-task-to-v2.js +377 -0
- package/template/.aiox-core/development/scripts/modification-validator.js +555 -0
- package/template/.aiox-core/development/scripts/pattern-learner.js +1225 -0
- package/template/.aiox-core/development/scripts/performance-analyzer.js +758 -0
- package/template/.aiox-core/development/scripts/populate-entity-registry.js +673 -0
- package/template/.aiox-core/development/scripts/refactoring-suggester.js +1148 -0
- package/template/.aiox-core/development/scripts/rollback-handler.js +531 -0
- package/template/.aiox-core/development/scripts/security-checker.js +359 -0
- package/template/.aiox-core/development/scripts/skill-validator.js +341 -0
- package/template/.aiox-core/development/scripts/squad/README.md +112 -0
- package/template/.aiox-core/development/scripts/squad/index.js +123 -0
- package/template/.aiox-core/development/scripts/squad/squad-analyzer.js +637 -0
- package/template/.aiox-core/development/scripts/squad/squad-designer.js +1010 -0
- package/template/.aiox-core/development/scripts/squad/squad-downloader.js +510 -0
- package/template/.aiox-core/development/scripts/squad/squad-extender.js +871 -0
- package/template/.aiox-core/development/scripts/squad/squad-generator.js +1405 -0
- package/template/.aiox-core/development/scripts/squad/squad-loader.js +359 -0
- package/template/.aiox-core/development/scripts/squad/squad-migrator.js +627 -0
- package/template/.aiox-core/development/scripts/squad/squad-publisher.js +629 -0
- package/template/.aiox-core/development/scripts/squad/squad-validator.js +855 -0
- package/template/.aiox-core/development/scripts/story-index-generator.js +337 -0
- package/template/.aiox-core/development/scripts/story-manager.js +375 -0
- package/template/.aiox-core/development/scripts/story-update-hook.js +259 -0
- package/template/.aiox-core/development/scripts/task-identifier-resolver.js +145 -0
- package/template/.aiox-core/development/scripts/template-engine.js +240 -0
- package/template/.aiox-core/development/scripts/template-validator.js +279 -0
- package/template/.aiox-core/development/scripts/test-generator.js +844 -0
- package/template/.aiox-core/development/scripts/test-greeting-system.js +142 -0
- package/template/.aiox-core/development/scripts/transaction-manager.js +590 -0
- package/template/.aiox-core/development/scripts/unified-activation-pipeline.js +815 -0
- package/template/.aiox-core/development/scripts/usage-tracker.js +674 -0
- package/template/.aiox-core/development/scripts/validate-filenames.js +226 -0
- package/template/.aiox-core/development/scripts/validate-task-v2.js +319 -0
- package/template/.aiox-core/development/scripts/verify-workflow-gaps.js +1032 -0
- package/template/.aiox-core/development/scripts/version-tracker.js +527 -0
- package/template/.aiox-core/development/scripts/workflow-navigator.js +327 -0
- package/template/.aiox-core/development/scripts/workflow-state-manager.js +650 -0
- package/template/.aiox-core/development/scripts/workflow-validator.js +769 -0
- package/template/.aiox-core/development/scripts/yaml-validator.js +397 -0
- package/template/.aiox-core/development/tasks/add-mcp.md +436 -0
- package/template/.aiox-core/development/tasks/advanced-elicitation.md +319 -0
- package/template/.aiox-core/development/tasks/analyst-facilitate-brainstorming.md +342 -0
- package/template/.aiox-core/development/tasks/analyze-brownfield.md +456 -0
- package/template/.aiox-core/development/tasks/analyze-cross-artifact.md +357 -0
- package/template/.aiox-core/development/tasks/analyze-framework.md +697 -0
- package/template/.aiox-core/development/tasks/analyze-performance.md +637 -0
- package/template/.aiox-core/development/tasks/analyze-project-structure.md +669 -0
- package/template/.aiox-core/development/tasks/apply-qa-fixes.md +347 -0
- package/template/.aiox-core/development/tasks/architect-analyze-impact.md +834 -0
- package/template/.aiox-core/development/tasks/audit-codebase.md +429 -0
- package/template/.aiox-core/development/tasks/audit-tailwind-config.md +270 -0
- package/template/.aiox-core/development/tasks/audit-utilities.md +358 -0
- package/template/.aiox-core/development/tasks/blocks/README.md +178 -0
- package/template/.aiox-core/development/tasks/blocks/agent-prompt-template.md +115 -0
- package/template/.aiox-core/development/tasks/blocks/context-loading.md +108 -0
- package/template/.aiox-core/development/tasks/blocks/execution-pattern.md +121 -0
- package/template/.aiox-core/development/tasks/blocks/finalization.md +123 -0
- package/template/.aiox-core/development/tasks/bootstrap-shadcn-library.md +286 -0
- package/template/.aiox-core/development/tasks/brownfield-create-epic.md +573 -0
- package/template/.aiox-core/development/tasks/brownfield-create-story.md +364 -0
- package/template/.aiox-core/development/tasks/build-autonomous.md +199 -0
- package/template/.aiox-core/development/tasks/build-component.md +478 -0
- package/template/.aiox-core/development/tasks/build-resume.md +125 -0
- package/template/.aiox-core/development/tasks/build-status.md +155 -0
- package/template/.aiox-core/development/tasks/build.md +141 -0
- package/template/.aiox-core/development/tasks/calculate-roi.md +455 -0
- package/template/.aiox-core/development/tasks/check-docs-links.md +114 -0
- package/template/.aiox-core/development/tasks/ci-cd-configuration.md +764 -0
- package/template/.aiox-core/development/tasks/cleanup-utilities.md +670 -0
- package/template/.aiox-core/development/tasks/cleanup-worktrees.md +39 -0
- package/template/.aiox-core/development/tasks/collaborative-edit.md +1109 -0
- package/template/.aiox-core/development/tasks/compose-molecule.md +284 -0
- package/template/.aiox-core/development/tasks/consolidate-patterns.md +414 -0
- package/template/.aiox-core/development/tasks/correct-course.md +280 -0
- package/template/.aiox-core/development/tasks/create-agent.md +1198 -0
- package/template/.aiox-core/development/tasks/create-brownfield-story.md +727 -0
- package/template/.aiox-core/development/tasks/create-deep-research-prompt.md +506 -0
- package/template/.aiox-core/development/tasks/create-doc.md +360 -0
- package/template/.aiox-core/development/tasks/create-next-story.md +791 -0
- package/template/.aiox-core/development/tasks/create-service.md +414 -0
- package/template/.aiox-core/development/tasks/create-suite.md +291 -0
- package/template/.aiox-core/development/tasks/create-task.md +390 -0
- package/template/.aiox-core/development/tasks/create-workflow.md +430 -0
- package/template/.aiox-core/development/tasks/create-worktree.md +437 -0
- package/template/.aiox-core/development/tasks/db-analyze-hotpaths.md +572 -0
- package/template/.aiox-core/development/tasks/db-apply-migration.md +381 -0
- package/template/.aiox-core/development/tasks/db-bootstrap.md +642 -0
- package/template/.aiox-core/development/tasks/db-domain-modeling.md +693 -0
- package/template/.aiox-core/development/tasks/db-dry-run.md +293 -0
- package/template/.aiox-core/development/tasks/db-env-check.md +260 -0
- package/template/.aiox-core/development/tasks/db-explain.md +631 -0
- package/template/.aiox-core/development/tasks/db-impersonate.md +495 -0
- package/template/.aiox-core/development/tasks/db-load-csv.md +593 -0
- package/template/.aiox-core/development/tasks/db-policy-apply.md +653 -0
- package/template/.aiox-core/development/tasks/db-rls-audit.md +411 -0
- package/template/.aiox-core/development/tasks/db-rollback.md +739 -0
- package/template/.aiox-core/development/tasks/db-run-sql.md +613 -0
- package/template/.aiox-core/development/tasks/db-schema-audit.md +1011 -0
- package/template/.aiox-core/development/tasks/db-seed.md +390 -0
- package/template/.aiox-core/development/tasks/db-smoke-test.md +351 -0
- package/template/.aiox-core/development/tasks/db-snapshot.md +569 -0
- package/template/.aiox-core/development/tasks/db-squad-integration.md +663 -0
- package/template/.aiox-core/development/tasks/db-supabase-setup.md +712 -0
- package/template/.aiox-core/development/tasks/db-verify-order.md +515 -0
- package/template/.aiox-core/development/tasks/deprecate-component.md +957 -0
- package/template/.aiox-core/development/tasks/dev-apply-qa-fixes.md +318 -0
- package/template/.aiox-core/development/tasks/dev-backlog-debt.md +469 -0
- package/template/.aiox-core/development/tasks/dev-develop-story.md +924 -0
- package/template/.aiox-core/development/tasks/dev-improve-code-quality.md +873 -0
- package/template/.aiox-core/development/tasks/dev-optimize-performance.md +1034 -0
- package/template/.aiox-core/development/tasks/dev-suggest-refactoring.md +877 -0
- package/template/.aiox-core/development/tasks/dev-validate-next-story.md +349 -0
- package/template/.aiox-core/development/tasks/document-gotchas.md +477 -0
- package/template/.aiox-core/development/tasks/document-project.md +553 -0
- package/template/.aiox-core/development/tasks/environment-bootstrap.md +1389 -0
- package/template/.aiox-core/development/tasks/execute-checklist.md +308 -0
- package/template/.aiox-core/development/tasks/execute-epic-plan.md +885 -0
- package/template/.aiox-core/development/tasks/export-design-tokens-dtcg.md +274 -0
- package/template/.aiox-core/development/tasks/extend-pattern.md +269 -0
- package/template/.aiox-core/development/tasks/extract-patterns.md +397 -0
- package/template/.aiox-core/development/tasks/extract-tokens.md +467 -0
- package/template/.aiox-core/development/tasks/facilitate-brainstorming-session.md +518 -0
- package/template/.aiox-core/development/tasks/generate-ai-frontend-prompt.md +261 -0
- package/template/.aiox-core/development/tasks/generate-documentation.md +284 -0
- package/template/.aiox-core/development/tasks/generate-migration-strategy.md +522 -0
- package/template/.aiox-core/development/tasks/generate-shock-report.md +501 -0
- package/template/.aiox-core/development/tasks/github-devops-github-pr-automation.md +720 -0
- package/template/.aiox-core/development/tasks/github-devops-pre-push-quality-gate.md +860 -0
- package/template/.aiox-core/development/tasks/github-devops-repository-cleanup.md +374 -0
- package/template/.aiox-core/development/tasks/github-devops-version-management.md +483 -0
- package/template/.aiox-core/development/tasks/github-issue-triage.md +118 -0
- package/template/.aiox-core/development/tasks/gotcha.md +136 -0
- package/template/.aiox-core/development/tasks/gotchas.md +153 -0
- package/template/.aiox-core/development/tasks/health-check.yaml +265 -0
- package/template/.aiox-core/development/tasks/ids-governor.md +94 -0
- package/template/.aiox-core/development/tasks/ids-health.md +89 -0
- package/template/.aiox-core/development/tasks/ids-query.md +154 -0
- package/template/.aiox-core/development/tasks/improve-self.md +823 -0
- package/template/.aiox-core/development/tasks/index-docs.md +388 -0
- package/template/.aiox-core/development/tasks/init-project-status.md +506 -0
- package/template/.aiox-core/development/tasks/integrate-squad.md +314 -0
- package/template/.aiox-core/development/tasks/kb-mode-interaction.md +284 -0
- package/template/.aiox-core/development/tasks/learn-patterns.md +901 -0
- package/template/.aiox-core/development/tasks/list-mcps.md +33 -0
- package/template/.aiox-core/development/tasks/list-worktrees.md +342 -0
- package/template/.aiox-core/development/tasks/mcp-workflow.md +437 -0
- package/template/.aiox-core/development/tasks/merge-worktree.md +42 -0
- package/template/.aiox-core/development/tasks/modify-agent.md +398 -0
- package/template/.aiox-core/development/tasks/modify-task.md +441 -0
- package/template/.aiox-core/development/tasks/modify-workflow.md +510 -0
- package/template/.aiox-core/development/tasks/next.md +325 -0
- package/template/.aiox-core/development/tasks/orchestrate-resume.md +59 -0
- package/template/.aiox-core/development/tasks/orchestrate-status.md +63 -0
- package/template/.aiox-core/development/tasks/orchestrate-stop.md +54 -0
- package/template/.aiox-core/development/tasks/orchestrate.md +65 -0
- package/template/.aiox-core/development/tasks/patterns.md +334 -0
- package/template/.aiox-core/development/tasks/plan-create-context.md +856 -0
- package/template/.aiox-core/development/tasks/plan-create-implementation.md +852 -0
- package/template/.aiox-core/development/tasks/plan-execute-subtask.md +960 -0
- package/template/.aiox-core/development/tasks/po-backlog-add.md +370 -0
- package/template/.aiox-core/development/tasks/po-close-story.md +434 -0
- package/template/.aiox-core/development/tasks/po-manage-story-backlog.md +523 -0
- package/template/.aiox-core/development/tasks/po-pull-story-from-clickup.md +540 -0
- package/template/.aiox-core/development/tasks/po-pull-story.md +316 -0
- package/template/.aiox-core/development/tasks/po-stories-index.md +351 -0
- package/template/.aiox-core/development/tasks/po-sync-story-to-clickup.md +457 -0
- package/template/.aiox-core/development/tasks/po-sync-story.md +303 -0
- package/template/.aiox-core/development/tasks/pr-automation.md +701 -0
- package/template/.aiox-core/development/tasks/project-status.md +280 -0
- package/template/.aiox-core/development/tasks/propose-modification.md +843 -0
- package/template/.aiox-core/development/tasks/publish-npm.md +257 -0
- package/template/.aiox-core/development/tasks/qa-after-creation.md +519 -0
- package/template/.aiox-core/development/tasks/qa-backlog-add-followup.md +425 -0
- package/template/.aiox-core/development/tasks/qa-browser-console-check.md +343 -0
- package/template/.aiox-core/development/tasks/qa-create-fix-request.md +630 -0
- package/template/.aiox-core/development/tasks/qa-evidence-requirements.md +314 -0
- package/template/.aiox-core/development/tasks/qa-false-positive-detection.md +374 -0
- package/template/.aiox-core/development/tasks/qa-fix-issues.md +692 -0
- package/template/.aiox-core/development/tasks/qa-gate.md +430 -0
- package/template/.aiox-core/development/tasks/qa-generate-tests.md +1175 -0
- package/template/.aiox-core/development/tasks/qa-library-validation.md +496 -0
- package/template/.aiox-core/development/tasks/qa-migration-validation.md +583 -0
- package/template/.aiox-core/development/tasks/qa-nfr-assess.md +558 -0
- package/template/.aiox-core/development/tasks/qa-review-build.md +1224 -0
- package/template/.aiox-core/development/tasks/qa-review-proposal.md +1158 -0
- package/template/.aiox-core/development/tasks/qa-review-story.md +714 -0
- package/template/.aiox-core/development/tasks/qa-risk-profile.md +567 -0
- package/template/.aiox-core/development/tasks/qa-run-tests.md +277 -0
- package/template/.aiox-core/development/tasks/qa-security-checklist.md +551 -0
- package/template/.aiox-core/development/tasks/qa-test-design.md +388 -0
- package/template/.aiox-core/development/tasks/qa-trace-requirements.md +477 -0
- package/template/.aiox-core/development/tasks/release-management.md +759 -0
- package/template/.aiox-core/development/tasks/remove-mcp.md +35 -0
- package/template/.aiox-core/development/tasks/remove-worktree.md +433 -0
- package/template/.aiox-core/development/tasks/resolve-github-issue.md +608 -0
- package/template/.aiox-core/development/tasks/review-contributor-pr.md +152 -0
- package/template/.aiox-core/development/tasks/run-design-system-pipeline.md +640 -0
- package/template/.aiox-core/development/tasks/run-workflow-engine.md +859 -0
- package/template/.aiox-core/development/tasks/run-workflow.md +387 -0
- package/template/.aiox-core/development/tasks/search-mcp.md +309 -0
- package/template/.aiox-core/development/tasks/security-audit.md +554 -0
- package/template/.aiox-core/development/tasks/security-scan.md +790 -0
- package/template/.aiox-core/development/tasks/session-resume.md +192 -0
- package/template/.aiox-core/development/tasks/setup-database.md +741 -0
- package/template/.aiox-core/development/tasks/setup-design-system.md +462 -0
- package/template/.aiox-core/development/tasks/setup-github.md +874 -0
- package/template/.aiox-core/development/tasks/setup-llm-routing.md +229 -0
- package/template/.aiox-core/development/tasks/setup-mcp-docker.md +627 -0
- package/template/.aiox-core/development/tasks/setup-project-docs.md +440 -0
- package/template/.aiox-core/development/tasks/shard-doc.md +538 -0
- package/template/.aiox-core/development/tasks/sm-create-next-story.md +480 -0
- package/template/.aiox-core/development/tasks/spec-assess-complexity.md +461 -0
- package/template/.aiox-core/development/tasks/spec-critique.md +603 -0
- package/template/.aiox-core/development/tasks/spec-gather-requirements.md +552 -0
- package/template/.aiox-core/development/tasks/spec-research-dependencies.md +449 -0
- package/template/.aiox-core/development/tasks/spec-write-spec.md +536 -0
- package/template/.aiox-core/development/tasks/squad-creator-analyze.md +315 -0
- package/template/.aiox-core/development/tasks/squad-creator-create.md +312 -0
- package/template/.aiox-core/development/tasks/squad-creator-design.md +334 -0
- package/template/.aiox-core/development/tasks/squad-creator-download.md +167 -0
- package/template/.aiox-core/development/tasks/squad-creator-extend.md +411 -0
- package/template/.aiox-core/development/tasks/squad-creator-list.md +225 -0
- package/template/.aiox-core/development/tasks/squad-creator-migrate.md +243 -0
- package/template/.aiox-core/development/tasks/squad-creator-publish.md +229 -0
- package/template/.aiox-core/development/tasks/squad-creator-sync-ide-command.md +402 -0
- package/template/.aiox-core/development/tasks/squad-creator-sync-synkra.md +315 -0
- package/template/.aiox-core/development/tasks/squad-creator-validate.md +159 -0
- package/template/.aiox-core/development/tasks/story-checkpoint.md +360 -0
- package/template/.aiox-core/development/tasks/sync-documentation.md +865 -0
- package/template/.aiox-core/development/tasks/sync-registry-intel.md +79 -0
- package/template/.aiox-core/development/tasks/tailwind-upgrade.md +294 -0
- package/template/.aiox-core/development/tasks/test-as-user.md +621 -0
- package/template/.aiox-core/development/tasks/test-validation-task.md +171 -0
- package/template/.aiox-core/development/tasks/triage-github-issues.md +356 -0
- package/template/.aiox-core/development/tasks/undo-last.md +347 -0
- package/template/.aiox-core/development/tasks/update-aiox.md +151 -0
- package/template/.aiox-core/development/tasks/update-manifest.md +410 -0
- package/template/.aiox-core/development/tasks/update-source-tree.md +137 -0
- package/template/.aiox-core/development/tasks/ux-create-wireframe.md +617 -0
- package/template/.aiox-core/development/tasks/ux-ds-scan-artifact.md +672 -0
- package/template/.aiox-core/development/tasks/ux-user-research.md +559 -0
- package/template/.aiox-core/development/tasks/validate-agents.md +119 -0
- package/template/.aiox-core/development/tasks/validate-next-story.md +472 -0
- package/template/.aiox-core/development/tasks/validate-tech-preset.md +186 -0
- package/template/.aiox-core/development/tasks/validate-workflow.md +321 -0
- package/template/.aiox-core/development/tasks/verify-subtask.md +235 -0
- package/template/.aiox-core/development/tasks/waves.md +205 -0
- package/template/.aiox-core/development/tasks/yolo-toggle.md +113 -0
- package/template/.aiox-core/development/templates/agent-handoff-tmpl.yaml +48 -0
- package/template/.aiox-core/development/templates/aiox-doc-template.md +494 -0
- package/template/.aiox-core/development/templates/code-intel-integration-pattern.md +199 -0
- package/template/.aiox-core/development/templates/ptc-entity-validation.md +113 -0
- package/template/.aiox-core/development/templates/ptc-qa-gate.md +100 -0
- package/template/.aiox-core/development/templates/ptc-research-aggregation.md +94 -0
- package/template/.aiox-core/development/templates/research-prompt-tmpl.md +486 -0
- package/template/.aiox-core/development/templates/service-template/README.md.hbs +158 -0
- package/template/.aiox-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -0
- package/template/.aiox-core/development/templates/service-template/client.ts.hbs +403 -0
- package/template/.aiox-core/development/templates/service-template/errors.ts.hbs +182 -0
- package/template/.aiox-core/development/templates/service-template/index.ts.hbs +120 -0
- package/template/.aiox-core/development/templates/service-template/jest.config.js +89 -0
- package/template/.aiox-core/development/templates/service-template/package.json.hbs +87 -0
- package/template/.aiox-core/development/templates/service-template/tsconfig.json +45 -0
- package/template/.aiox-core/development/templates/service-template/types.ts.hbs +145 -0
- package/template/.aiox-core/development/templates/squad/agent-template.md +80 -0
- package/template/.aiox-core/development/templates/squad/checklist-template.md +82 -0
- package/template/.aiox-core/development/templates/squad/data-template.yaml +105 -0
- package/template/.aiox-core/development/templates/squad/script-template.js +179 -0
- package/template/.aiox-core/development/templates/squad/task-template.md +146 -0
- package/template/.aiox-core/development/templates/squad/template-template.md +97 -0
- package/template/.aiox-core/development/templates/squad/tool-template.js +103 -0
- package/template/.aiox-core/development/templates/squad/workflow-template.yaml +123 -0
- package/template/.aiox-core/development/templates/squad-template/LICENSE +21 -0
- package/template/.aiox-core/development/templates/squad-template/README.md +37 -0
- package/template/.aiox-core/development/templates/squad-template/agents/example-agent.yaml +36 -0
- package/template/.aiox-core/development/templates/squad-template/package.json +19 -0
- package/template/.aiox-core/development/templates/squad-template/squad.yaml +25 -0
- package/template/.aiox-core/development/templates/squad-template/tasks/example-task.yaml +46 -0
- package/template/.aiox-core/development/templates/squad-template/templates/example-template.md +24 -0
- package/template/.aiox-core/development/templates/squad-template/tests/example-agent.test.js +53 -0
- package/template/.aiox-core/development/templates/squad-template/workflows/example-workflow.yaml +75 -0
- package/template/.aiox-core/development/templates/subagent-step-prompt.md +120 -0
- package/template/.aiox-core/development/workflows/README.md +88 -0
- package/template/.aiox-core/development/workflows/auto-worktree.yaml +421 -0
- package/template/.aiox-core/development/workflows/brownfield-discovery.yaml +932 -0
- package/template/.aiox-core/development/workflows/brownfield-fullstack.yaml +367 -0
- package/template/.aiox-core/development/workflows/brownfield-service.yaml +244 -0
- package/template/.aiox-core/development/workflows/brownfield-ui.yaml +258 -0
- package/template/.aiox-core/development/workflows/design-system-build-quality.yaml +227 -0
- package/template/.aiox-core/development/workflows/development-cycle.yaml +515 -0
- package/template/.aiox-core/development/workflows/epic-orchestration.yaml +326 -0
- package/template/.aiox-core/development/workflows/greenfield-fullstack.yaml +384 -0
- package/template/.aiox-core/development/workflows/greenfield-service.yaml +276 -0
- package/template/.aiox-core/development/workflows/greenfield-ui.yaml +282 -0
- package/template/.aiox-core/development/workflows/qa-loop.yaml +443 -0
- package/template/.aiox-core/development/workflows/spec-pipeline.yaml +576 -0
- package/template/.aiox-core/development/workflows/story-development-cycle.yaml +284 -0
- package/template/.aiox-core/elicitation/agent-elicitation.js +272 -0
- package/template/.aiox-core/elicitation/task-elicitation.js +281 -0
- package/template/.aiox-core/elicitation/workflow-elicitation.js +315 -0
- package/template/.aiox-core/framework-config.yaml +158 -0
- package/template/.aiox-core/hooks/gemini/after-tool.js +77 -0
- package/template/.aiox-core/hooks/gemini/before-agent.js +79 -0
- package/template/.aiox-core/hooks/gemini/before-tool.js +114 -0
- package/template/.aiox-core/hooks/gemini/rewind-handler.js +68 -0
- package/template/.aiox-core/hooks/gemini/session-end.js +90 -0
- package/template/.aiox-core/hooks/gemini/session-start.js +90 -0
- package/template/.aiox-core/hooks/ids-post-commit.js +116 -0
- package/template/.aiox-core/hooks/ids-pre-push.js +123 -0
- package/template/.aiox-core/hooks/unified/README.md +338 -0
- package/template/.aiox-core/hooks/unified/hook-interface.js +159 -0
- package/template/.aiox-core/hooks/unified/hook-registry.js +143 -0
- package/template/.aiox-core/hooks/unified/index.js +36 -0
- package/template/.aiox-core/hooks/unified/runners/precompact-runner.js +96 -0
- package/template/.aiox-core/manifests/schema/manifest-schema.json +190 -0
- package/template/.aiox-core/presets/README.md +358 -0
- package/template/.aiox-core/product/README.md +56 -0
- package/template/.aiox-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/template/.aiox-core/product/checklists/architect-checklist.md +444 -0
- package/template/.aiox-core/product/checklists/change-checklist.md +183 -0
- package/template/.aiox-core/product/checklists/component-quality-checklist.md +74 -0
- package/template/.aiox-core/product/checklists/database-design-checklist.md +119 -0
- package/template/.aiox-core/product/checklists/dba-predeploy-checklist.md +97 -0
- package/template/.aiox-core/product/checklists/dba-rollback-checklist.md +99 -0
- package/template/.aiox-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/template/.aiox-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/template/.aiox-core/product/checklists/pm-checklist.md +376 -0
- package/template/.aiox-core/product/checklists/po-master-checklist.md +442 -0
- package/template/.aiox-core/product/checklists/pre-push-checklist.md +108 -0
- package/template/.aiox-core/product/checklists/release-checklist.md +122 -0
- package/template/.aiox-core/product/checklists/self-critique-checklist.md +386 -0
- package/template/.aiox-core/product/checklists/story-dod-checklist.md +102 -0
- package/template/.aiox-core/product/checklists/story-draft-checklist.md +216 -0
- package/template/.aiox-core/product/data/atomic-design-principles.md +108 -0
- package/template/.aiox-core/product/data/brainstorming-techniques.md +37 -0
- package/template/.aiox-core/product/data/consolidation-algorithms.md +142 -0
- package/template/.aiox-core/product/data/database-best-practices.md +182 -0
- package/template/.aiox-core/product/data/design-token-best-practices.md +107 -0
- package/template/.aiox-core/product/data/elicitation-methods.md +135 -0
- package/template/.aiox-core/product/data/integration-patterns.md +207 -0
- package/template/.aiox-core/product/data/migration-safety-guide.md +329 -0
- package/template/.aiox-core/product/data/mode-selection-best-practices.md +471 -0
- package/template/.aiox-core/product/data/postgres-tuning-guide.md +300 -0
- package/template/.aiox-core/product/data/rls-security-patterns.md +333 -0
- package/template/.aiox-core/product/data/roi-calculation-guide.md +142 -0
- package/template/.aiox-core/product/data/supabase-patterns.md +330 -0
- package/template/.aiox-core/product/data/test-levels-framework.md +149 -0
- package/template/.aiox-core/product/data/test-priorities-matrix.md +175 -0
- package/template/.aiox-core/product/data/wcag-compliance-guide.md +267 -0
- package/template/.aiox-core/product/templates/activation-instructions-inline-greeting.yaml +63 -0
- package/template/.aiox-core/product/templates/activation-instructions-template.md +258 -0
- package/template/.aiox-core/product/templates/adr.hbs +125 -0
- package/template/.aiox-core/product/templates/agent-template.yaml +121 -0
- package/template/.aiox-core/product/templates/aiox-ai-config.yaml +106 -0
- package/template/.aiox-core/product/templates/architecture-tmpl.yaml +651 -0
- package/template/.aiox-core/product/templates/brainstorming-output-tmpl.yaml +156 -0
- package/template/.aiox-core/product/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/template/.aiox-core/product/templates/brownfield-prd-tmpl.yaml +280 -0
- package/template/.aiox-core/product/templates/brownfield-risk-report-tmpl.yaml +277 -0
- package/template/.aiox-core/product/templates/changelog-template.md +134 -0
- package/template/.aiox-core/product/templates/command-rationalization-matrix.md +152 -0
- package/template/.aiox-core/product/templates/competitor-analysis-tmpl.yaml +293 -0
- package/template/.aiox-core/product/templates/component-react-tmpl.tsx +98 -0
- package/template/.aiox-core/product/templates/current-approach-tmpl.md +56 -0
- package/template/.aiox-core/product/templates/dbdr.hbs +241 -0
- package/template/.aiox-core/product/templates/design-story-tmpl.yaml +587 -0
- package/template/.aiox-core/product/templates/ds-artifact-analysis.md +70 -0
- package/template/.aiox-core/product/templates/engine/elicitation.js +297 -0
- package/template/.aiox-core/product/templates/engine/index.js +308 -0
- package/template/.aiox-core/product/templates/engine/loader.js +231 -0
- package/template/.aiox-core/product/templates/engine/renderer.js +343 -0
- package/template/.aiox-core/product/templates/engine/schemas/adr.schema.json +102 -0
- package/template/.aiox-core/product/templates/engine/schemas/dbdr.schema.json +205 -0
- package/template/.aiox-core/product/templates/engine/schemas/epic.schema.json +175 -0
- package/template/.aiox-core/product/templates/engine/schemas/pmdr.schema.json +175 -0
- package/template/.aiox-core/product/templates/engine/schemas/prd-v2.schema.json +300 -0
- package/template/.aiox-core/product/templates/engine/schemas/prd.schema.json +152 -0
- package/template/.aiox-core/product/templates/engine/schemas/story.schema.json +222 -0
- package/template/.aiox-core/product/templates/engine/schemas/task.schema.json +154 -0
- package/template/.aiox-core/product/templates/engine/validator.js +294 -0
- package/template/.aiox-core/product/templates/epic.hbs +212 -0
- package/template/.aiox-core/product/templates/eslintrc-security.json +32 -0
- package/template/.aiox-core/product/templates/front-end-architecture-tmpl.yaml +206 -0
- package/template/.aiox-core/product/templates/front-end-spec-tmpl.yaml +349 -0
- package/template/.aiox-core/product/templates/fullstack-architecture-tmpl.yaml +805 -0
- package/template/.aiox-core/product/templates/gemini/settings.json +79 -0
- package/template/.aiox-core/product/templates/github-actions-cd.yml +212 -0
- package/template/.aiox-core/product/templates/github-actions-ci.yml +172 -0
- package/template/.aiox-core/product/templates/github-pr-template.md +67 -0
- package/template/.aiox-core/product/templates/gordon-mcp.yaml +140 -0
- package/template/.aiox-core/product/templates/ide-rules/antigravity-rules.md +115 -0
- package/template/.aiox-core/product/templates/ide-rules/claude-rules.md +356 -0
- package/template/.aiox-core/product/templates/ide-rules/codex-rules.md +65 -0
- package/template/.aiox-core/product/templates/ide-rules/copilot-rules.md +92 -0
- package/template/.aiox-core/product/templates/ide-rules/cursor-rules.md +115 -0
- package/template/.aiox-core/product/templates/ide-rules/gemini-rules.md +87 -0
- package/template/.aiox-core/product/templates/index-strategy-tmpl.yaml +53 -0
- package/template/.aiox-core/product/templates/market-research-tmpl.yaml +252 -0
- package/template/.aiox-core/product/templates/mcp-workflow.js +271 -0
- package/template/.aiox-core/product/templates/migration-plan-tmpl.yaml +1022 -0
- package/template/.aiox-core/product/templates/migration-strategy-tmpl.md +524 -0
- package/template/.aiox-core/product/templates/personalized-agent-template.md +258 -0
- package/template/.aiox-core/product/templates/personalized-checklist-template.md +340 -0
- package/template/.aiox-core/product/templates/personalized-task-template-v2.md +905 -0
- package/template/.aiox-core/product/templates/personalized-task-template.md +344 -0
- package/template/.aiox-core/product/templates/personalized-template-file.yaml +322 -0
- package/template/.aiox-core/product/templates/personalized-workflow-template.yaml +460 -0
- package/template/.aiox-core/product/templates/pmdr.hbs +186 -0
- package/template/.aiox-core/product/templates/prd-tmpl.yaml +202 -0
- package/template/.aiox-core/product/templates/prd-v2.0.hbs +216 -0
- package/template/.aiox-core/product/templates/prd.hbs +201 -0
- package/template/.aiox-core/product/templates/project-brief-tmpl.yaml +221 -0
- package/template/.aiox-core/product/templates/qa-gate-tmpl.yaml +240 -0
- package/template/.aiox-core/product/templates/qa-report-tmpl.md +234 -0
- package/template/.aiox-core/product/templates/rls-policies-tmpl.yaml +1203 -0
- package/template/.aiox-core/product/templates/schema-design-tmpl.yaml +428 -0
- package/template/.aiox-core/product/templates/shock-report-tmpl.html +502 -0
- package/template/.aiox-core/product/templates/spec-tmpl.md +234 -0
- package/template/.aiox-core/product/templates/state-persistence-tmpl.yaml +219 -0
- package/template/.aiox-core/product/templates/statusline/statusline-script.js +188 -0
- package/template/.aiox-core/product/templates/statusline/track-agent.sh +68 -0
- package/template/.aiox-core/product/templates/story-tmpl.yaml +368 -0
- package/template/.aiox-core/product/templates/story.hbs +263 -0
- package/template/.aiox-core/product/templates/task-execution-report.md +495 -0
- package/template/.aiox-core/product/templates/task-template.md +123 -0
- package/template/.aiox-core/product/templates/task.hbs +170 -0
- package/template/.aiox-core/product/templates/tmpl-comment-on-examples.sql +158 -0
- package/template/.aiox-core/product/templates/tmpl-migration-script.sql +91 -0
- package/template/.aiox-core/product/templates/tmpl-rls-granular-policies.sql +104 -0
- package/template/.aiox-core/product/templates/tmpl-rls-kiss-policy.sql +10 -0
- package/template/.aiox-core/product/templates/tmpl-rls-roles.sql +135 -0
- package/template/.aiox-core/product/templates/tmpl-rls-simple.sql +77 -0
- package/template/.aiox-core/product/templates/tmpl-rls-tenant.sql +152 -0
- package/template/.aiox-core/product/templates/tmpl-rollback-script.sql +77 -0
- package/template/.aiox-core/product/templates/tmpl-seed-data.sql +140 -0
- package/template/.aiox-core/product/templates/tmpl-smoke-test.sql +16 -0
- package/template/.aiox-core/product/templates/tmpl-staging-copy-merge.sql +139 -0
- package/template/.aiox-core/product/templates/tmpl-stored-proc.sql +140 -0
- package/template/.aiox-core/product/templates/tmpl-trigger.sql +152 -0
- package/template/.aiox-core/product/templates/tmpl-view-materialized.sql +133 -0
- package/template/.aiox-core/product/templates/tmpl-view.sql +177 -0
- package/template/.aiox-core/product/templates/token-exports-css-tmpl.css +240 -0
- package/template/.aiox-core/product/templates/token-exports-tailwind-tmpl.js +395 -0
- package/template/.aiox-core/product/templates/tokens-schema-tmpl.yaml +305 -0
- package/template/.aiox-core/product/templates/workflow-template.yaml +151 -0
- package/template/.aiox-core/project-config.yaml +166 -0
- package/template/.aiox-core/quality/metrics-collector.js +599 -0
- package/template/.aiox-core/quality/metrics-hook.js +260 -0
- package/template/.aiox-core/quality/schemas/quality-metrics.schema.json +233 -0
- package/template/.aiox-core/quality/seed-metrics.js +336 -0
- package/template/.aiox-core/schemas/README.md +403 -0
- package/template/.aiox-core/schemas/agent-v3-schema.json +394 -0
- package/template/.aiox-core/schemas/squad-design-schema.json +299 -0
- package/template/.aiox-core/schemas/squad-schema.json +185 -0
- package/template/.aiox-core/schemas/task-v3-schema.json +353 -0
- package/template/.aiox-core/schemas/validate-v3-schema.js +430 -0
- package/template/.aiox-core/user-guide.md +1409 -0
- package/template/.aiox-core/utils/aiox-validator.js +25 -0
- package/template/.aiox-core/utils/filters/constants.js +10 -0
- package/template/.aiox-core/utils/filters/content-filter.js +223 -0
- package/template/.aiox-core/utils/filters/field-filter.js +126 -0
- package/template/.aiox-core/utils/filters/index.js +180 -0
- package/template/.aiox-core/utils/filters/schema-filter.js +157 -0
- package/template/.aiox-core/utils/format-duration.js +95 -0
- package/template/.aiox-core/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
- package/template/.aiox-core/workflow-intelligence/__tests__/integration.test.js +339 -0
- package/template/.aiox-core/workflow-intelligence/__tests__/suggestion-engine.test.js +437 -0
- package/template/.aiox-core/workflow-intelligence/__tests__/wave-analyzer.test.js +447 -0
- package/template/.aiox-core/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
- package/template/.aiox-core/workflow-intelligence/engine/confidence-scorer.js +306 -0
- package/template/.aiox-core/workflow-intelligence/engine/output-formatter.js +299 -0
- package/template/.aiox-core/workflow-intelligence/engine/suggestion-engine.js +797 -0
- package/template/.aiox-core/workflow-intelligence/engine/wave-analyzer.js +683 -0
- package/template/.aiox-core/workflow-intelligence/index.js +329 -0
- package/template/.aiox-core/workflow-intelligence/learning/capture-hook.js +147 -0
- package/template/.aiox-core/workflow-intelligence/learning/gotcha-registry.js +653 -0
- package/template/.aiox-core/workflow-intelligence/learning/index.js +305 -0
- package/template/.aiox-core/workflow-intelligence/learning/pattern-capture.js +329 -0
- package/template/.aiox-core/workflow-intelligence/learning/pattern-store.js +497 -0
- package/template/.aiox-core/workflow-intelligence/learning/pattern-validator.js +309 -0
- package/template/.aiox-core/workflow-intelligence/learning/qa-feedback.js +585 -0
- package/template/.aiox-core/workflow-intelligence/learning/semantic-search.js +521 -0
- package/template/.aiox-core/workflow-intelligence/registry/workflow-registry.js +357 -0
- package/template/.aiox-core/working-in-the-brownfield.md +361 -0
- package/template/.antigravity/rules/agents/aiox-master.md +97 -0
- package/template/.antigravity/rules/agents/analyst.md +41 -0
- package/template/.antigravity/rules/agents/architect.md +50 -0
- package/template/.antigravity/rules/agents/data-engineer.md +43 -0
- package/template/.antigravity/rules/agents/dev.md +74 -0
- package/template/.antigravity/rules/agents/devops.md +71 -0
- package/template/.antigravity/rules/agents/pm.md +50 -0
- package/template/.antigravity/rules/agents/po.md +45 -0
- package/template/.antigravity/rules/agents/qa.md +57 -0
- package/template/.antigravity/rules/agents/sm.md +34 -0
- package/template/.antigravity/rules/agents/squad-creator.md +41 -0
- package/template/.antigravity/rules/agents/ux-design-expert.md +12 -0
- package/template/.claude/CLAUDE.md +313 -97
- package/template/.claude/commands/AIOX/agents/aiox-master.md +465 -0
- package/template/.claude/commands/AIOX/agents/analyst.md +273 -0
- package/template/.claude/commands/AIOX/agents/architect.md +474 -0
- package/template/.claude/commands/AIOX/agents/data-engineer.md +495 -0
- package/template/.claude/commands/AIOX/agents/dev.md +560 -0
- package/template/.claude/commands/AIOX/agents/devops.md +539 -0
- package/template/.claude/commands/AIOX/agents/pm.md +377 -0
- package/template/.claude/commands/AIOX/agents/po.md +335 -0
- package/template/.claude/commands/AIOX/agents/qa.md +449 -0
- package/template/.claude/commands/AIOX/agents/sm.md +287 -0
- package/template/.claude/commands/AIOX/agents/squad-creator.md +344 -0
- package/template/.claude/commands/AIOX/agents/ux-design-expert.md +495 -0
- package/template/.claude/commands/AIOX/scripts/agent-config-loader.js +624 -0
- package/template/.claude/commands/AIOX/scripts/generate-greeting.js +160 -0
- package/template/.claude/commands/AIOX/scripts/greeting-builder.js +866 -0
- package/template/.claude/commands/AIOX/scripts/session-context-loader.js +286 -0
- package/template/.claude/commands/AIOX/stories/story-6.1.4.md +1404 -0
- package/template/.claude/commands/cohort-squad/agents/cohort-manager.md +145 -0
- package/template/.claude/commands/design-system/agents/brad-frost.md +1097 -0
- package/template/.claude/commands/design-system/agents/dan-mall.md +857 -0
- package/template/.claude/commands/design-system/agents/dave-malouf.md +2272 -0
- package/template/.claude/commands/design-system/agents/design-chief.md +102 -0
- package/template/.claude/commands/design-system/agents/nano-banana-generator.md +162 -0
- package/template/.claude/commands/greet.md +101 -0
- package/template/.claude/commands/synapse/manager.md +75 -0
- package/template/.claude/commands/synapse/tasks/add-rule.md +94 -0
- package/template/.claude/commands/synapse/tasks/create-command.md +109 -0
- package/template/.claude/commands/synapse/tasks/create-domain.md +127 -0
- package/template/.claude/commands/synapse/tasks/diagnose-synapse.md +245 -0
- package/template/.claude/commands/synapse/tasks/edit-rule.md +109 -0
- package/template/.claude/commands/synapse/tasks/suggest-domain.md +116 -0
- package/template/.claude/commands/synapse/tasks/toggle-domain.md +83 -0
- package/template/.claude/commands/synapse/templates/domain-template +8 -0
- package/template/.claude/commands/synapse/templates/manifest-entry-template +4 -0
- package/template/.claude/commands/synapse/utils/manifest-parser-reference.md +134 -0
- package/template/.claude/hooks/README.md +194 -0
- package/template/.claude/hooks/enforce-architecture-first.py +196 -0
- package/template/.claude/hooks/enforce-git-push-authority.sh +33 -0
- package/template/.claude/hooks/install-hooks.sh +41 -0
- package/template/.claude/hooks/mind-clone-governance.py +192 -0
- package/template/.claude/hooks/pre-commit-version-check.sh +156 -0
- package/template/.claude/hooks/precompact-session-digest.cjs +141 -87
- package/template/.claude/hooks/precompact-wrapper.cjs +46 -0
- package/template/.claude/hooks/read-protection.py +151 -0
- package/template/.claude/hooks/slug-validation.py +176 -0
- package/template/.claude/hooks/sql-governance.py +155 -38
- package/template/.claude/hooks/synapse-engine.cjs +91 -324
- package/template/.claude/hooks/synapse-wrapper.cjs +57 -0
- package/template/.claude/hooks/write-path-validation.py +169 -34
- package/template/.claude/rules/agent-authority.md +105 -39
- package/template/.claude/rules/agent-handoff.md +97 -71
- package/template/.claude/rules/agent-memory-imports.md +15 -0
- package/template/.claude/rules/coderabbit-integration.md +101 -0
- package/template/.claude/rules/ids-principles.md +119 -52
- package/template/.claude/rules/mcp-usage.md +176 -49
- package/template/.claude/rules/story-lifecycle.md +145 -87
- package/template/.claude/rules/tool-examples.md +64 -0
- package/template/.claude/rules/tool-response-filtering.md +57 -0
- package/template/.claude/rules/workflow-execution.md +150 -68
- package/template/.claude/settings.json +26 -58
- package/template/.synapse/agent-aiox-master +15 -0
- package/template/.synapse/agent-analyst +14 -38
- package/template/.synapse/agent-architect +16 -44
- package/template/.synapse/agent-data-engineer +17 -0
- package/template/.synapse/agent-dev +18 -8
- package/template/.synapse/agent-devops +17 -53
- package/template/.synapse/agent-pm +16 -37
- package/template/.synapse/agent-po +15 -48
- package/template/.synapse/agent-qa +16 -42
- package/template/.synapse/agent-sm +13 -68
- package/template/.synapse/agent-squad-creator +14 -0
- package/template/.synapse/agent-ux +15 -0
- package/template/.synapse/commands +109 -0
- package/template/.synapse/constitution +49 -44
- package/template/.synapse/context +25 -8
- package/template/.synapse/global +24 -47
- package/template/.synapse/manifest +56 -14
- package/template/.synapse/workflow-arch-review +15 -0
- package/template/.synapse/workflow-epic-create +16 -0
- package/template/.synapse/workflow-story-dev +20 -0
- package/template/AGENTS.md +75 -0
- package/template/README.md +746 -53
- package/template/.claude/agent-memory/analyst/MEMORY.md +0 -20
- package/template/.claude/agent-memory/architect/MEMORY.md +0 -20
- package/template/.claude/agent-memory/dev/MEMORY.md +0 -20
- package/template/.claude/agent-memory/devops/MEMORY.md +0 -20
- package/template/.claude/agent-memory/pm/MEMORY.md +0 -20
- package/template/.claude/agent-memory/po/MEMORY.md +0 -20
- package/template/.claude/agent-memory/qa/MEMORY.md +0 -20
- package/template/.claude/agent-memory/reviewer/MEMORY.md +0 -20
- package/template/.claude/agent-memory/sm/MEMORY.md +0 -20
- package/template/.claude/commands/analyst.md +0 -55
- package/template/.claude/commands/architect.md +0 -56
- package/template/.claude/commands/dev.md +0 -63
- package/template/.claude/commands/devops.md +0 -64
- package/template/.claude/commands/plan-story.md +0 -70
- package/template/.claude/commands/pm.md +0 -51
- package/template/.claude/commands/po.md +0 -69
- package/template/.claude/commands/project-state.md +0 -35
- package/template/.claude/commands/project-sync.md +0 -44
- package/template/.claude/commands/qa.md +0 -67
- package/template/.claude/commands/reviewer.md +0 -63
- package/template/.claude/commands/sm.md +0 -82
- package/template/.claude/commands/squad.md +0 -56
- package/template/.claude/hooks/enforce-git-push-authority.py +0 -70
- package/template/.claude/hooks/metrics-tracker.cjs +0 -65
- package/template/.claude/rules/agent-memory.md +0 -61
- package/template/.claude/rules/new-project.md +0 -157
- package/template/.claude/settings.local.json +0 -14
- package/template/.genia/CONSTITUTION.md +0 -129
- package/template/.genia/contexts/api-patterns.md +0 -134
- package/template/.genia/contexts/nextjs-react.md +0 -210
- package/template/.genia/contexts/projeto.md +0 -18
- package/template/.genia/contexts/supabase.md +0 -152
- package/template/.genia/contexts/whatsapp-cloud.md +0 -176
- package/template/.genia/core-config.yaml +0 -192
- package/template/.genia/development/agents/analyst.md +0 -138
- package/template/.genia/development/agents/architect.md +0 -171
- package/template/.genia/development/agents/dev.md +0 -160
- package/template/.genia/development/agents/devops.md +0 -200
- package/template/.genia/development/agents/pm.md +0 -142
- package/template/.genia/development/agents/po.md +0 -165
- package/template/.genia/development/agents/qa.md +0 -183
- package/template/.genia/development/agents/reviewer.md +0 -198
- package/template/.genia/development/agents/sm.md +0 -230
- package/template/.genia/development/checklists/architecture-review.md +0 -189
- package/template/.genia/development/checklists/pre-commit.md +0 -205
- package/template/.genia/development/checklists/pre-deploy.md +0 -230
- package/template/.genia/development/checklists/qa-gate.md +0 -216
- package/template/.genia/development/checklists/story-dod.md +0 -155
- package/template/.genia/development/tasks/code-review.md +0 -197
- package/template/.genia/development/tasks/criar-prd.md +0 -170
- package/template/.genia/development/tasks/criar-spec.md +0 -188
- package/template/.genia/development/tasks/criar-story.md +0 -185
- package/template/.genia/development/tasks/debug-sistematico.md +0 -230
- package/template/.genia/development/tasks/dev-implement.md +0 -199
- package/template/.genia/development/tasks/qa-review.md +0 -224
- package/template/.genia/development/workflows/brownfield.md +0 -178
- package/template/.genia/development/workflows/delivery.md +0 -208
- package/template/.genia/development/workflows/development.md +0 -189
- package/template/.genia/development/workflows/greenfield.md +0 -166
- package/template/.genia/development/workflows/planning.md +0 -167
- package/template/.genia/development/workflows/qa-loop.md +0 -179
- package/template/.genia/development/workflows/spec-pipeline.md +0 -192
- package/template/.genia/development/workflows/story-development-cycle.md +0 -252
- package/template/.genia/guidelines/clean-code.md +0 -98
- package/template/.genia/guidelines/testing.md +0 -176
- package/template/.genia/skills/design/canvas-design.md +0 -109
- package/template/.genia/skills/design/frontend-design.md +0 -140
- package/template/.genia/skills/dev/mcp-builder.md +0 -172
- package/template/.genia/skills/dev/webapp-testing.md +0 -150
- package/template/.genia/skills/documents/docx.md +0 -153
- package/template/.genia/skills/documents/pdf.md +0 -134
- package/template/.genia/skills/documents/pptx.md +0 -118
- package/template/.genia/skills/documents/xlsx.md +0 -140
- package/template/.synapse/agent-reviewer +0 -43
|
@@ -0,0 +1,815 @@
|
|
|
1
|
+
// SYN-14: Boot time captured before ANY require — measures cold start
|
|
2
|
+
const _BOOT_TIME = process.hrtime.bigint();
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unified Activation Pipeline - Single Entry Point for All 12 Agents
|
|
6
|
+
*
|
|
7
|
+
* Story ACT-6: Eliminates divergence between Path A (9 agents) and Path B (3 agents)
|
|
8
|
+
* by providing a single activation pipeline with identical context richness for ALL agents.
|
|
9
|
+
*
|
|
10
|
+
* Story ACT-11: Pipeline Performance Optimization & Loader Prioritization
|
|
11
|
+
* - Tiered loading: Critical > High > Best-effort (instead of flat Promise.all)
|
|
12
|
+
* - Per-loader profiling via _profileLoader() with context.metrics output
|
|
13
|
+
* - Partial greeting support (between full and fallback)
|
|
14
|
+
* - Configurable timeout budgets via core-config.yaml and env vars
|
|
15
|
+
* - CoreConfig shared with GreetingBuilder to eliminate double read
|
|
16
|
+
*
|
|
17
|
+
* Story ACT-12: Native Language Delegation
|
|
18
|
+
* - Language handling delegated to Claude Code's native `language` setting in settings.json
|
|
19
|
+
* - Removed language extraction/propagation from pipeline
|
|
20
|
+
* - FALLBACK_PHRASES simplified to single English FALLBACK_PHRASE constant
|
|
21
|
+
*
|
|
22
|
+
* Architecture (ACT-11 Tiered):
|
|
23
|
+
* Phase 0: Load CoreConfig (shared, fast)
|
|
24
|
+
* Phase 1 (Critical, 80ms): AgentConfigLoader — greeting is broken without this
|
|
25
|
+
* Phase 2 (High, parallel with remaining budget): PermissionMode + GitConfigDetector
|
|
26
|
+
* Phase 3 (Best-effort, parallel with remaining budget): SessionContext + ProjectStatus
|
|
27
|
+
* Sequential: GreetingPreferenceManager, ContextDetector, WorkflowNavigator
|
|
28
|
+
* Final: GreetingBuilder.buildGreeting(enrichedContext)
|
|
29
|
+
*
|
|
30
|
+
* Performance Targets (ACT-11):
|
|
31
|
+
* - Pipeline p50 (warm): <150ms
|
|
32
|
+
* - Pipeline p95 (cold): <250ms
|
|
33
|
+
* - Fallback rate: <5%
|
|
34
|
+
*
|
|
35
|
+
* @module development/scripts/unified-activation-pipeline
|
|
36
|
+
* @see greeting-builder.js - Core greeting class
|
|
37
|
+
* @see generate-greeting.js - CLI wrapper (now thin wrapper around this pipeline)
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
'use strict';
|
|
41
|
+
|
|
42
|
+
const path = require('path');
|
|
43
|
+
const fs = require('fs').promises;
|
|
44
|
+
const fsSync = require('fs');
|
|
45
|
+
const yaml = require('js-yaml');
|
|
46
|
+
|
|
47
|
+
const GreetingBuilder = require('./greeting-builder');
|
|
48
|
+
const { AgentConfigLoader } = require('./agent-config-loader');
|
|
49
|
+
const SessionContextLoader = require('../../core/session/context-loader');
|
|
50
|
+
// NOG-18: loadProjectStatus removed — gitStatus is native in Claude Code system prompt.
|
|
51
|
+
// const { loadProjectStatus } = require('../../infrastructure/scripts/project-status-loader');
|
|
52
|
+
const GitConfigDetector = require('../../infrastructure/scripts/git-config-detector');
|
|
53
|
+
const { PermissionMode } = require('../../core/permissions');
|
|
54
|
+
const GreetingPreferenceManager = require('./greeting-preference-manager');
|
|
55
|
+
const ContextDetector = require('../../core/session/context-detector');
|
|
56
|
+
const WorkflowNavigator = require('./workflow-navigator');
|
|
57
|
+
const { atomicWriteSync } = require('../../core/synapse/utils/atomic-write');
|
|
58
|
+
// BUG-1 fix (INS-1): Graceful degradation when pro-detector is not available
|
|
59
|
+
// In installed projects, bin/utils/pro-detector.js does not exist
|
|
60
|
+
let isProAvailable, loadProModule;
|
|
61
|
+
try {
|
|
62
|
+
({ isProAvailable, loadProModule } = require('../../../bin/utils/pro-detector'));
|
|
63
|
+
} catch {
|
|
64
|
+
isProAvailable = () => false;
|
|
65
|
+
loadProModule = () => null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* ACT-11: Loader importance tiers with per-tier timeout budgets.
|
|
70
|
+
* Tier 1 (Critical) must complete for a meaningful greeting.
|
|
71
|
+
* Tier 2 (High) adds important visual elements (badge, branch).
|
|
72
|
+
* Tier 3 (Best-effort) adds optional context (status, session).
|
|
73
|
+
* @type {Object}
|
|
74
|
+
*/
|
|
75
|
+
const LOADER_TIERS = {
|
|
76
|
+
critical: {
|
|
77
|
+
loaders: ['agentConfig'],
|
|
78
|
+
timeout: 80,
|
|
79
|
+
description: 'Agent identity — greeting is broken without this',
|
|
80
|
+
},
|
|
81
|
+
high: {
|
|
82
|
+
loaders: ['permissionMode', 'gitConfig'],
|
|
83
|
+
timeout: 120,
|
|
84
|
+
description: 'Permission badge + branch name — visually degraded without these',
|
|
85
|
+
},
|
|
86
|
+
bestEffort: {
|
|
87
|
+
loaders: ['sessionContext'],
|
|
88
|
+
timeout: 180,
|
|
89
|
+
description: 'Session awareness — greeting works fine without this. NOG-18: projectStatus removed (native gitStatus)',
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Default total pipeline timeout (ms).
|
|
95
|
+
* Can be overridden via core-config.yaml pipeline.timeout_ms or AIOX_PIPELINE_TIMEOUT env var.
|
|
96
|
+
* @type {number}
|
|
97
|
+
*/
|
|
98
|
+
const DEFAULT_PIPELINE_TIMEOUT_MS = 500;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* All 12 supported agent IDs.
|
|
102
|
+
* @type {string[]}
|
|
103
|
+
*/
|
|
104
|
+
const ALL_AGENT_IDS = [
|
|
105
|
+
'dev', 'qa', 'architect', 'pm', 'po', 'sm',
|
|
106
|
+
'analyst', 'data-engineer', 'ux-design-expert',
|
|
107
|
+
'devops', 'aiox-master', 'squad-creator',
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* ACT-12: Fallback phrase for minimal greeting (English-only safety net).
|
|
112
|
+
* Language handling is delegated to Claude Code's native `language` setting in settings.json.
|
|
113
|
+
* @type {string}
|
|
114
|
+
*/
|
|
115
|
+
const FALLBACK_PHRASE = 'Type `*help` to see available commands.';
|
|
116
|
+
|
|
117
|
+
class UnifiedActivationPipeline {
|
|
118
|
+
constructor(options = {}) {
|
|
119
|
+
this.projectRoot = options.projectRoot || process.cwd();
|
|
120
|
+
this.greetingBuilder = options.greetingBuilder || new GreetingBuilder();
|
|
121
|
+
this.preferenceManager = options.preferenceManager || new GreetingPreferenceManager();
|
|
122
|
+
this.contextDetector = options.contextDetector || new ContextDetector();
|
|
123
|
+
this.workflowNavigator = options.workflowNavigator || new WorkflowNavigator();
|
|
124
|
+
this.gitConfigDetector = options.gitConfigDetector || new GitConfigDetector();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Static convenience method — creates instance and activates.
|
|
129
|
+
* Allows both `UnifiedActivationPipeline.activate('dev')` and
|
|
130
|
+
* `new UnifiedActivationPipeline().activate('dev')`.
|
|
131
|
+
*
|
|
132
|
+
* @param {string} agentId - Agent identifier (e.g., 'dev', 'qa', 'pm')
|
|
133
|
+
* @param {Object} [options] - Activation options
|
|
134
|
+
* @returns {Promise<{greeting: string, context: Object, duration: number, quality: string, metrics: Object}>}
|
|
135
|
+
*/
|
|
136
|
+
static activate(agentId, options = {}) {
|
|
137
|
+
return new UnifiedActivationPipeline().activate(agentId, options);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Activate an agent through the unified pipeline.
|
|
142
|
+
*
|
|
143
|
+
* ACT-11: Uses tiered loading with graceful degradation.
|
|
144
|
+
* Returns 'full', 'partial', or 'fallback' quality level instead of boolean.
|
|
145
|
+
*
|
|
146
|
+
* @param {string} agentId - Agent identifier (e.g., 'dev', 'qa', 'pm')
|
|
147
|
+
* @param {Object} [options] - Activation options
|
|
148
|
+
* @param {Array} [options.conversationHistory] - Conversation history for context detection
|
|
149
|
+
* @returns {Promise<{greeting: string, context: Object, duration: number, quality: string, metrics: Object}>}
|
|
150
|
+
* greeting - Formatted greeting string ready for display
|
|
151
|
+
* context - The enriched context object assembled by the pipeline
|
|
152
|
+
* duration - Total activation time in ms
|
|
153
|
+
* quality - 'full' | 'partial' | 'fallback'
|
|
154
|
+
* metrics - Loader timing data
|
|
155
|
+
*/
|
|
156
|
+
async activate(agentId, options = {}) {
|
|
157
|
+
const startTime = Date.now();
|
|
158
|
+
|
|
159
|
+
try {
|
|
160
|
+
// ACT-11: Load config early for timeout settings
|
|
161
|
+
const coreConfig = await this._loadCoreConfig();
|
|
162
|
+
const pipelineTimeout = this._resolvePipelineTimeout(coreConfig);
|
|
163
|
+
|
|
164
|
+
// Race: full pipeline vs timeout (clear timer to prevent leak)
|
|
165
|
+
const { promise: timeoutPromise, timerId } = this._timeoutFallback(agentId, pipelineTimeout);
|
|
166
|
+
const result = await Promise.race([
|
|
167
|
+
this._runPipeline(agentId, options, coreConfig, startTime),
|
|
168
|
+
timeoutPromise,
|
|
169
|
+
]);
|
|
170
|
+
clearTimeout(timerId);
|
|
171
|
+
|
|
172
|
+
result.duration = Date.now() - startTime;
|
|
173
|
+
return result;
|
|
174
|
+
|
|
175
|
+
} catch (error) {
|
|
176
|
+
console.warn(`[UnifiedActivationPipeline] Activation failed for ${agentId}:`, error.message);
|
|
177
|
+
const fallbackGreeting = this._generateFallbackGreeting(agentId);
|
|
178
|
+
return {
|
|
179
|
+
greeting: fallbackGreeting,
|
|
180
|
+
context: this._getDefaultContext(agentId),
|
|
181
|
+
duration: Date.now() - startTime,
|
|
182
|
+
quality: 'fallback',
|
|
183
|
+
// ACT-11: backward compat — keep fallback field
|
|
184
|
+
fallback: true,
|
|
185
|
+
metrics: { loaders: {} },
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* ACT-11: Run the tiered activation pipeline.
|
|
192
|
+
*
|
|
193
|
+
* Instead of flat Promise.all() for all 5 loaders, uses tiered execution:
|
|
194
|
+
* - Tier 1 (Critical): AgentConfigLoader must complete
|
|
195
|
+
* - Tier 2 (High): PermissionMode + GitConfigDetector, best-effort
|
|
196
|
+
* - Tier 3 (Best-effort): SessionContext + ProjectStatus, optional
|
|
197
|
+
*
|
|
198
|
+
* After each tier, remaining budget is checked. Slow lower-tier loaders
|
|
199
|
+
* cannot prevent the greeting from being built with available context.
|
|
200
|
+
*
|
|
201
|
+
* @private
|
|
202
|
+
* @param {string} agentId - Agent identifier
|
|
203
|
+
* @param {Object} options - Activation options
|
|
204
|
+
* @param {Object} coreConfig - Pre-loaded core config (shared, not read again)
|
|
205
|
+
* @returns {Promise<{greeting: string, context: Object, quality: string, metrics: Object}>}
|
|
206
|
+
*/
|
|
207
|
+
async _runPipeline(agentId, options = {}, coreConfig = {}, startTime = Date.now()) {
|
|
208
|
+
const pipelineStart = Date.now();
|
|
209
|
+
const metrics = { loaders: {} };
|
|
210
|
+
|
|
211
|
+
// --- Tier 1: Critical (AgentConfig) ---
|
|
212
|
+
const tier1Budget = LOADER_TIERS.critical.timeout;
|
|
213
|
+
const agentComplete = await this._profileLoader('agentConfig', metrics, tier1Budget, () => {
|
|
214
|
+
const loader = new AgentConfigLoader(agentId);
|
|
215
|
+
return loader.loadComplete(coreConfig);
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
// If Tier 1 failed, we can still build a minimal greeting but mark as fallback
|
|
219
|
+
const agentDefinition = this._buildAgentDefinition(agentId, agentComplete);
|
|
220
|
+
|
|
221
|
+
if (!agentComplete) {
|
|
222
|
+
// Tier 1 failure: return fallback greeting
|
|
223
|
+
const greeting = this._generateFallbackGreeting(agentId);
|
|
224
|
+
return {
|
|
225
|
+
greeting,
|
|
226
|
+
context: this._getDefaultContext(agentId),
|
|
227
|
+
quality: 'fallback',
|
|
228
|
+
fallback: true,
|
|
229
|
+
metrics,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// --- Tier 2: High (PermissionMode + GitConfig) — parallel ---
|
|
234
|
+
const tier2Budget = LOADER_TIERS.high.timeout;
|
|
235
|
+
const elapsedAfterT1 = Date.now() - pipelineStart;
|
|
236
|
+
const tier2Remaining = Math.max(tier2Budget - elapsedAfterT1, 20);
|
|
237
|
+
|
|
238
|
+
const [permissionData, gitConfig] = await Promise.all([
|
|
239
|
+
this._profileLoader('permissionMode', metrics, tier2Remaining, async () => {
|
|
240
|
+
const mode = new PermissionMode(this.projectRoot);
|
|
241
|
+
await mode.load();
|
|
242
|
+
return { mode: mode.currentMode, badge: mode.getBadge() };
|
|
243
|
+
}),
|
|
244
|
+
this._profileLoader('gitConfig', metrics, tier2Remaining, () => {
|
|
245
|
+
return this.gitConfigDetector.get();
|
|
246
|
+
}),
|
|
247
|
+
]);
|
|
248
|
+
|
|
249
|
+
// --- Memory Loader (MIS-6): Load agent memories if pro available ---
|
|
250
|
+
let memories = [];
|
|
251
|
+
try {
|
|
252
|
+
if (isProAvailable()) {
|
|
253
|
+
const MemoryLoader = loadProModule('memory/memory-loader');
|
|
254
|
+
if (MemoryLoader) {
|
|
255
|
+
// Check feature gate for memory.extended
|
|
256
|
+
const featureGate = loadProModule('license/feature-gate');
|
|
257
|
+
const isMemoryEnabled = featureGate?.featureGate?.isAvailable('pro.memory.extended') ?? false;
|
|
258
|
+
|
|
259
|
+
if (isMemoryEnabled) {
|
|
260
|
+
const memoryBudget = agentComplete?.config?.memoryBudget || 2000;
|
|
261
|
+
const memoryTimeout = 500; // 500ms timeout for memory load
|
|
262
|
+
|
|
263
|
+
memories = await this._profileLoader('memories', metrics, memoryTimeout, async () => {
|
|
264
|
+
const loader = new MemoryLoader(this.projectRoot);
|
|
265
|
+
const result = await loader.loadForAgent(agentId, { budget: memoryBudget });
|
|
266
|
+
return result?.memories || [];
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
} catch (error) {
|
|
272
|
+
// Graceful degradation: log error but continue with empty memories
|
|
273
|
+
if (metrics?.loaders?.memories) {
|
|
274
|
+
metrics.loaders.memories.error = error.message;
|
|
275
|
+
}
|
|
276
|
+
memories = [];
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// --- Tier 3: Best-effort (SessionContext + ProjectStatus) — parallel ---
|
|
280
|
+
const tier3Budget = LOADER_TIERS.bestEffort.timeout;
|
|
281
|
+
const elapsedAfterT2 = Date.now() - pipelineStart;
|
|
282
|
+
const tier3Remaining = Math.max(tier3Budget - elapsedAfterT2, 20);
|
|
283
|
+
|
|
284
|
+
// NOG-18: projectStatus loader removed — gitStatus is native in Claude Code system prompt.
|
|
285
|
+
// The loadProjectStatus() function ran 5+ git commands (~76ms) duplicating native features.
|
|
286
|
+
// GreetingBuilder handles projectStatus: null gracefully (null-checks everywhere).
|
|
287
|
+
const [sessionContext] = await Promise.all([
|
|
288
|
+
this._profileLoader('sessionContext', metrics, tier3Remaining, () => {
|
|
289
|
+
const loader = new SessionContextLoader();
|
|
290
|
+
return loader.loadContext(agentId);
|
|
291
|
+
}),
|
|
292
|
+
]);
|
|
293
|
+
const projectStatus = null;
|
|
294
|
+
|
|
295
|
+
// --- Sequential steps with data dependencies ---
|
|
296
|
+
|
|
297
|
+
// Step 6: Greeting preference (sync, fast)
|
|
298
|
+
// ACT-11: Share coreConfig with GreetingBuilder to avoid double resolveConfig()
|
|
299
|
+
const userProfile = this.greetingBuilder.loadUserProfile(coreConfig);
|
|
300
|
+
const preference = this._resolvePreference(agentDefinition, userProfile);
|
|
301
|
+
|
|
302
|
+
// Step 7: Session type detection
|
|
303
|
+
const sessionType = this._detectSessionType(sessionContext, options);
|
|
304
|
+
|
|
305
|
+
// Step 8: Workflow state detection
|
|
306
|
+
const workflowState = this._detectWorkflowState(sessionContext, sessionType);
|
|
307
|
+
|
|
308
|
+
// --- Assemble enriched context ---
|
|
309
|
+
const enrichedContext = {
|
|
310
|
+
agent: agentDefinition,
|
|
311
|
+
config: agentComplete?.config || {},
|
|
312
|
+
session: sessionContext || this._getDefaultSessionContext(),
|
|
313
|
+
projectStatus: projectStatus || null,
|
|
314
|
+
gitConfig: gitConfig || { configured: false, type: null, branch: null },
|
|
315
|
+
permissions: permissionData || { mode: 'ask', badge: '[Ask]' },
|
|
316
|
+
preference,
|
|
317
|
+
sessionType,
|
|
318
|
+
workflowState,
|
|
319
|
+
userProfile,
|
|
320
|
+
// MIS-6: Agent memories from progressive retrieval
|
|
321
|
+
memories: memories || [],
|
|
322
|
+
// ACT-11: Share coreConfig with GreetingBuilder to eliminate double resolveConfig()
|
|
323
|
+
_coreConfig: coreConfig,
|
|
324
|
+
// Legacy context fields for backward compatibility with GreetingBuilder
|
|
325
|
+
conversationHistory: options.conversationHistory || [],
|
|
326
|
+
lastCommands: sessionContext?.lastCommands || [],
|
|
327
|
+
previousAgent: sessionContext?.previousAgent || null,
|
|
328
|
+
sessionMessage: sessionContext?.message || null,
|
|
329
|
+
workflowActive: sessionContext?.workflowActive || null,
|
|
330
|
+
sessionStory: sessionContext?.currentStory || null,
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// --- Build greeting via GreetingBuilder ---
|
|
334
|
+
const greeting = await this.greetingBuilder.buildGreeting(agentDefinition, enrichedContext);
|
|
335
|
+
|
|
336
|
+
// ACT-11: Determine quality level based on what loaded successfully
|
|
337
|
+
const quality = this._determineQuality(metrics);
|
|
338
|
+
|
|
339
|
+
// SYN-13: Write active agent to SYNAPSE session (fire-and-forget, 20ms budget)
|
|
340
|
+
this._writeSynapseSession(agentId, quality, metrics);
|
|
341
|
+
|
|
342
|
+
// SYN-14: Persist UAP metrics for diagnostics (fire-and-forget)
|
|
343
|
+
this._persistUapMetrics(agentId, quality, metrics, Date.now() - startTime);
|
|
344
|
+
|
|
345
|
+
return {
|
|
346
|
+
greeting,
|
|
347
|
+
context: enrichedContext,
|
|
348
|
+
quality,
|
|
349
|
+
// ACT-11: backward compat — fallback is false unless quality is 'fallback'
|
|
350
|
+
fallback: quality === 'fallback',
|
|
351
|
+
metrics,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* ACT-11: Profile a loader with timing and status tracking.
|
|
357
|
+
*
|
|
358
|
+
* Wraps a loader function with:
|
|
359
|
+
* - Start/end/duration timing in milliseconds
|
|
360
|
+
* - Status: 'ok' | 'timeout' | 'error'
|
|
361
|
+
* - Per-loader timeout with graceful null return
|
|
362
|
+
*
|
|
363
|
+
* Results are recorded in metrics.loaders[name].
|
|
364
|
+
*
|
|
365
|
+
* @private
|
|
366
|
+
* @param {string} name - Loader name for metrics
|
|
367
|
+
* @param {Object} metrics - Metrics object to populate
|
|
368
|
+
* @param {number} timeoutMs - Timeout budget for this loader
|
|
369
|
+
* @param {Function} loaderFn - Async function that performs the load
|
|
370
|
+
* @returns {Promise<*>} Loaded data or null on failure/timeout
|
|
371
|
+
*/
|
|
372
|
+
async _profileLoader(name, metrics, timeoutMs, loaderFn) {
|
|
373
|
+
const start = Date.now();
|
|
374
|
+
let timer;
|
|
375
|
+
try {
|
|
376
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
377
|
+
timer = setTimeout(() => reject(new Error(`${name} timeout (${timeoutMs}ms)`)), timeoutMs);
|
|
378
|
+
});
|
|
379
|
+
const result = await Promise.race([
|
|
380
|
+
loaderFn(),
|
|
381
|
+
timeoutPromise,
|
|
382
|
+
]);
|
|
383
|
+
clearTimeout(timer);
|
|
384
|
+
const duration = Date.now() - start;
|
|
385
|
+
metrics.loaders[name] = { duration, status: 'ok', start, end: start + duration };
|
|
386
|
+
return result;
|
|
387
|
+
} catch (error) {
|
|
388
|
+
clearTimeout(timer);
|
|
389
|
+
const duration = Date.now() - start;
|
|
390
|
+
const status = error.message.includes('timeout') ? 'timeout' : 'error';
|
|
391
|
+
metrics.loaders[name] = { duration, status, start, end: start + duration, error: error.message };
|
|
392
|
+
console.warn(`[UnifiedActivationPipeline] ${name} ${status}: ${error.message}`);
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* ACT-11: Determine greeting quality based on loader results.
|
|
399
|
+
*
|
|
400
|
+
* - 'full': All loaders succeeded (or at least Tier 1 + Tier 2)
|
|
401
|
+
* - 'partial': Tier 1 succeeded but some Tier 2/3 loaders failed
|
|
402
|
+
* - 'fallback': Tier 1 (agentConfig) failed
|
|
403
|
+
*
|
|
404
|
+
* @private
|
|
405
|
+
* @param {Object} metrics - Metrics object with loader results
|
|
406
|
+
* @returns {string} 'full' | 'partial' | 'fallback'
|
|
407
|
+
*/
|
|
408
|
+
_determineQuality(metrics) {
|
|
409
|
+
const loaders = metrics.loaders;
|
|
410
|
+
|
|
411
|
+
// Tier 1 failure = fallback
|
|
412
|
+
if (!loaders.agentConfig || loaders.agentConfig.status !== 'ok') {
|
|
413
|
+
return 'fallback';
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Check if any loader failed
|
|
417
|
+
const allLoaderNames = Object.keys(loaders);
|
|
418
|
+
const failedLoaders = allLoaderNames.filter(name => loaders[name].status !== 'ok');
|
|
419
|
+
|
|
420
|
+
if (failedLoaders.length === 0) {
|
|
421
|
+
return 'full';
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
return 'partial';
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Load core configuration from YAML.
|
|
429
|
+
* ACT-11: This is read once and shared with GreetingBuilder and all loaders.
|
|
430
|
+
* @private
|
|
431
|
+
* @returns {Promise<Object>} Core config object
|
|
432
|
+
*/
|
|
433
|
+
async _loadCoreConfig() {
|
|
434
|
+
try {
|
|
435
|
+
const configPath = path.join(this.projectRoot, '.aiox-core', 'core-config.yaml');
|
|
436
|
+
const content = await fs.readFile(configPath, 'utf8');
|
|
437
|
+
return yaml.load(content);
|
|
438
|
+
} catch (error) {
|
|
439
|
+
console.warn('[UnifiedActivationPipeline] Failed to load core config:', error.message);
|
|
440
|
+
return {};
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* ACT-11: Resolve pipeline timeout from config hierarchy.
|
|
446
|
+
* Priority: AIOX_PIPELINE_TIMEOUT env > core-config.yaml pipeline.timeout_ms > default
|
|
447
|
+
* @private
|
|
448
|
+
* @param {Object} coreConfig - Core config object
|
|
449
|
+
* @returns {number} Pipeline timeout in ms
|
|
450
|
+
*/
|
|
451
|
+
_resolvePipelineTimeout(coreConfig) {
|
|
452
|
+
// Env var override (for CI/testing)
|
|
453
|
+
const envTimeout = process.env.AIOX_PIPELINE_TIMEOUT;
|
|
454
|
+
if (envTimeout) {
|
|
455
|
+
const parsed = parseInt(envTimeout, 10);
|
|
456
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
457
|
+
return parsed;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// Config override
|
|
462
|
+
const configTimeout = coreConfig?.pipeline?.timeout_ms;
|
|
463
|
+
if (configTimeout && typeof configTimeout === 'number' && configTimeout > 0) {
|
|
464
|
+
return configTimeout;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
return DEFAULT_PIPELINE_TIMEOUT_MS;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Build agent definition from loaded config data.
|
|
472
|
+
* @private
|
|
473
|
+
* @param {string} agentId - Agent ID
|
|
474
|
+
* @param {Object|null} agentComplete - Data from AgentConfigLoader.loadComplete()
|
|
475
|
+
* @returns {Object} Agent definition object suitable for GreetingBuilder
|
|
476
|
+
*/
|
|
477
|
+
_buildAgentDefinition(agentId, agentComplete) {
|
|
478
|
+
if (agentComplete && agentComplete.agent) {
|
|
479
|
+
return {
|
|
480
|
+
...agentComplete.agent,
|
|
481
|
+
id: agentComplete.agent.id || agentId,
|
|
482
|
+
persona_profile: agentComplete.persona_profile || agentComplete.definition?.persona_profile,
|
|
483
|
+
persona: agentComplete.definition?.persona || agentComplete.persona,
|
|
484
|
+
commands: agentComplete.commands || agentComplete.definition?.commands || [],
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// Fallback: minimal agent definition
|
|
489
|
+
return {
|
|
490
|
+
id: agentId,
|
|
491
|
+
name: agentId,
|
|
492
|
+
icon: this._getDefaultIcon(agentId),
|
|
493
|
+
persona_profile: {
|
|
494
|
+
greeting_levels: {
|
|
495
|
+
minimal: `${this._getDefaultIcon(agentId)} ${agentId} Agent ready`,
|
|
496
|
+
named: `${this._getDefaultIcon(agentId)} ${agentId} ready`,
|
|
497
|
+
archetypal: `${this._getDefaultIcon(agentId)} ${agentId} ready`,
|
|
498
|
+
},
|
|
499
|
+
},
|
|
500
|
+
persona: { role: agentId },
|
|
501
|
+
commands: [],
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Resolve greeting preference, accounting for bob mode and PM agent.
|
|
507
|
+
* @private
|
|
508
|
+
* @param {Object} agentDefinition - Agent definition
|
|
509
|
+
* @param {string} userProfile - User profile ('bob' | 'advanced')
|
|
510
|
+
* @returns {string} Effective preference
|
|
511
|
+
*/
|
|
512
|
+
_resolvePreference(agentDefinition, userProfile) {
|
|
513
|
+
// PM agent bypasses bob mode restriction (PM is primary interface in bob mode)
|
|
514
|
+
const effectiveProfile = (userProfile === 'bob' && agentDefinition.id === 'pm')
|
|
515
|
+
? 'advanced'
|
|
516
|
+
: userProfile;
|
|
517
|
+
|
|
518
|
+
return this.preferenceManager.getPreference(effectiveProfile);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Detect session type from session context.
|
|
523
|
+
* @private
|
|
524
|
+
* @param {Object|null} sessionContext - Session context data
|
|
525
|
+
* @param {Object} options - Activation options
|
|
526
|
+
* @returns {string} 'new' | 'existing' | 'workflow'
|
|
527
|
+
*/
|
|
528
|
+
_detectSessionType(sessionContext, options) {
|
|
529
|
+
try {
|
|
530
|
+
// If conversation history provided, prefer that
|
|
531
|
+
if (options.conversationHistory && options.conversationHistory.length > 0) {
|
|
532
|
+
return this.contextDetector.detectSessionType(options.conversationHistory);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// Use pre-detected session type from SessionContextLoader
|
|
536
|
+
if (sessionContext && sessionContext.sessionType) {
|
|
537
|
+
return sessionContext.sessionType;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// Fallback to file-based detection
|
|
541
|
+
return this.contextDetector.detectSessionType([]);
|
|
542
|
+
} catch (error) {
|
|
543
|
+
console.warn('[UnifiedActivationPipeline] Session type detection failed:', error.message);
|
|
544
|
+
return 'new';
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Detect workflow state from session context and session type.
|
|
550
|
+
* Story ACT-5: Relaxed trigger - now detects workflows for any non-new session.
|
|
551
|
+
* @private
|
|
552
|
+
* @param {Object|null} sessionContext - Session context data
|
|
553
|
+
* @param {string} sessionType - Detected session type
|
|
554
|
+
* @returns {Object|null} Workflow state or null
|
|
555
|
+
*/
|
|
556
|
+
_detectWorkflowState(sessionContext, sessionType) {
|
|
557
|
+
try {
|
|
558
|
+
if (sessionType === 'new' || !sessionContext) {
|
|
559
|
+
return null;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
const commandHistory = sessionContext.lastCommands || [];
|
|
563
|
+
if (commandHistory.length === 0) {
|
|
564
|
+
return null;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
return this.workflowNavigator.detectWorkflowState(commandHistory, sessionContext);
|
|
568
|
+
} catch (error) {
|
|
569
|
+
console.warn('[UnifiedActivationPipeline] Workflow detection failed:', error.message);
|
|
570
|
+
return null;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Create a timeout promise that resolves with a fallback greeting.
|
|
576
|
+
* ACT-12: Language delegated to Claude Code native settings.json.
|
|
577
|
+
* @private
|
|
578
|
+
* @param {string} agentId - Agent ID
|
|
579
|
+
* @param {number} timeoutMs - Timeout in milliseconds
|
|
580
|
+
* @returns {{promise: Promise, timerId: NodeJS.Timeout}} Promise and timer ID
|
|
581
|
+
*/
|
|
582
|
+
_timeoutFallback(agentId, timeoutMs) {
|
|
583
|
+
let timerId;
|
|
584
|
+
const promise = new Promise((resolve) => {
|
|
585
|
+
timerId = setTimeout(() => {
|
|
586
|
+
console.warn(`[UnifiedActivationPipeline] Pipeline timeout (${timeoutMs}ms) for ${agentId}`);
|
|
587
|
+
resolve({
|
|
588
|
+
greeting: this._generateFallbackGreeting(agentId),
|
|
589
|
+
context: this._getDefaultContext(agentId),
|
|
590
|
+
quality: 'fallback',
|
|
591
|
+
fallback: true,
|
|
592
|
+
metrics: { loaders: {} },
|
|
593
|
+
});
|
|
594
|
+
}, timeoutMs);
|
|
595
|
+
});
|
|
596
|
+
return { promise, timerId };
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Generate fallback greeting when pipeline fails.
|
|
601
|
+
* ACT-12: Language delegated to Claude Code native settings.json.
|
|
602
|
+
* Fallback is English-only safety net — Claude Code translates natively.
|
|
603
|
+
* @private
|
|
604
|
+
* @param {string} agentId - Agent ID
|
|
605
|
+
* @returns {string} Simple fallback greeting
|
|
606
|
+
*/
|
|
607
|
+
_generateFallbackGreeting(agentId) {
|
|
608
|
+
const icon = this._getDefaultIcon(agentId);
|
|
609
|
+
return `${icon} ${agentId} Agent ready\n\n${FALLBACK_PHRASE}`;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Get default icon for agent.
|
|
614
|
+
* @private
|
|
615
|
+
* @param {string} agentId - Agent ID
|
|
616
|
+
* @returns {string} Default icon emoji
|
|
617
|
+
*/
|
|
618
|
+
_getDefaultIcon(agentId) {
|
|
619
|
+
const icons = {
|
|
620
|
+
'dev': '\uD83D\uDCBB',
|
|
621
|
+
'qa': '\uD83D\uDD0D',
|
|
622
|
+
'architect': '\uD83C\uDFD7\uFE0F',
|
|
623
|
+
'pm': '\uD83D\uDCCA',
|
|
624
|
+
'po': '\uD83D\uDCCB',
|
|
625
|
+
'sm': '\uD83C\uDFC3',
|
|
626
|
+
'analyst': '\uD83D\uDD2C',
|
|
627
|
+
'data-engineer': '\uD83D\uDDC4\uFE0F',
|
|
628
|
+
'ux-design-expert': '\uD83C\uDFA8',
|
|
629
|
+
'devops': '\u2699\uFE0F',
|
|
630
|
+
'aiox-master': '\uD83D\uDC51',
|
|
631
|
+
'squad-creator': '\uD83D\uDC65',
|
|
632
|
+
};
|
|
633
|
+
return icons[agentId] || '\uD83E\uDD16';
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Get default session context when loader fails.
|
|
638
|
+
* @private
|
|
639
|
+
* @returns {Object} Default session context
|
|
640
|
+
*/
|
|
641
|
+
_getDefaultSessionContext() {
|
|
642
|
+
return {
|
|
643
|
+
sessionType: 'new',
|
|
644
|
+
message: null,
|
|
645
|
+
previousAgent: null,
|
|
646
|
+
lastCommands: [],
|
|
647
|
+
workflowActive: null,
|
|
648
|
+
currentStory: null,
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/**
|
|
653
|
+
* Get default enriched context when pipeline fails.
|
|
654
|
+
* @private
|
|
655
|
+
* @param {string} agentId - Agent ID
|
|
656
|
+
* @returns {Object} Default context
|
|
657
|
+
*/
|
|
658
|
+
_getDefaultContext(agentId) {
|
|
659
|
+
return {
|
|
660
|
+
agent: { id: agentId, name: agentId, icon: this._getDefaultIcon(agentId) },
|
|
661
|
+
config: {},
|
|
662
|
+
session: this._getDefaultSessionContext(),
|
|
663
|
+
projectStatus: null,
|
|
664
|
+
gitConfig: { configured: false, type: null, branch: null },
|
|
665
|
+
permissions: { mode: 'ask', badge: '[Ask]' },
|
|
666
|
+
preference: 'auto',
|
|
667
|
+
sessionType: 'new',
|
|
668
|
+
workflowState: null,
|
|
669
|
+
userProfile: 'advanced',
|
|
670
|
+
// MIS-6: Include memories field in fallback context
|
|
671
|
+
memories: [],
|
|
672
|
+
conversationHistory: [],
|
|
673
|
+
lastCommands: [],
|
|
674
|
+
previousAgent: null,
|
|
675
|
+
sessionMessage: null,
|
|
676
|
+
workflowActive: null,
|
|
677
|
+
sessionStory: null,
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* SYN-13: Write active agent to SYNAPSE session bridge file.
|
|
683
|
+
*
|
|
684
|
+
* Writes `.synapse/sessions/_active-agent.json` as a singleton file.
|
|
685
|
+
* Uses fs.writeFileSync directly (not updateSession) to avoid prompt_count
|
|
686
|
+
* side effects. Fire-and-forget with try/catch — never blocks activation.
|
|
687
|
+
*
|
|
688
|
+
* @private
|
|
689
|
+
* @param {string} agentId - Agent ID being activated
|
|
690
|
+
* @param {string} quality - Activation quality ('full'|'partial'|'fallback')
|
|
691
|
+
* @param {Object} metrics - Metrics object for profiling
|
|
692
|
+
*/
|
|
693
|
+
_writeSynapseSession(agentId, quality, metrics) {
|
|
694
|
+
const start = Date.now();
|
|
695
|
+
try {
|
|
696
|
+
const sessionsDir = path.join(this.projectRoot, '.synapse', 'sessions');
|
|
697
|
+
if (!fsSync.existsSync(path.join(this.projectRoot, '.synapse'))) {
|
|
698
|
+
// .synapse/ does not exist — project may not have SYNAPSE installed
|
|
699
|
+
const duration = Date.now() - start;
|
|
700
|
+
metrics.loaders.synapseSession = { duration, status: 'skipped', start, end: start + duration };
|
|
701
|
+
return;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
if (!fsSync.existsSync(sessionsDir)) {
|
|
705
|
+
fsSync.mkdirSync(sessionsDir, { recursive: true });
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
const bridgeData = {
|
|
709
|
+
id: agentId,
|
|
710
|
+
activated_at: new Date().toISOString(),
|
|
711
|
+
activation_quality: quality,
|
|
712
|
+
source: 'uap',
|
|
713
|
+
};
|
|
714
|
+
|
|
715
|
+
const bridgePath = path.join(sessionsDir, '_active-agent.json');
|
|
716
|
+
atomicWriteSync(bridgePath, JSON.stringify(bridgeData, null, 2));
|
|
717
|
+
|
|
718
|
+
const duration = Date.now() - start;
|
|
719
|
+
metrics.loaders.synapseSession = { duration, status: 'ok', start, end: start + duration };
|
|
720
|
+
} catch (error) {
|
|
721
|
+
const duration = Date.now() - start;
|
|
722
|
+
metrics.loaders.synapseSession = { duration, status: 'error', start, end: start + duration, error: error.message };
|
|
723
|
+
console.warn(`[UnifiedActivationPipeline] SYNAPSE session write failed: ${error.message}`);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* SYN-14: Persist UAP metrics to .synapse/metrics/uap-metrics.json.
|
|
729
|
+
* Fire-and-forget — never blocks activation pipeline.
|
|
730
|
+
*
|
|
731
|
+
* @private
|
|
732
|
+
* @param {string} agentId - Agent ID
|
|
733
|
+
* @param {string} quality - Activation quality ('full'|'partial'|'fallback')
|
|
734
|
+
* @param {Object} metrics - Metrics object with loader timings
|
|
735
|
+
* @param {number} totalDuration - Total activation duration in ms
|
|
736
|
+
*/
|
|
737
|
+
_persistUapMetrics(agentId, quality, metrics, totalDuration) {
|
|
738
|
+
try {
|
|
739
|
+
const synapsePath = path.join(this.projectRoot, '.synapse');
|
|
740
|
+
if (!fsSync.existsSync(synapsePath)) return;
|
|
741
|
+
const metricsDir = path.join(synapsePath, 'metrics');
|
|
742
|
+
if (!fsSync.existsSync(metricsDir)) {
|
|
743
|
+
fsSync.mkdirSync(metricsDir, { recursive: true });
|
|
744
|
+
}
|
|
745
|
+
const requireChainMs = typeof _BOOT_TIME !== 'undefined'
|
|
746
|
+
? Number(process.hrtime.bigint() - _BOOT_TIME) / 1e6
|
|
747
|
+
: 0;
|
|
748
|
+
const data = {
|
|
749
|
+
agentId,
|
|
750
|
+
quality,
|
|
751
|
+
totalDuration,
|
|
752
|
+
requireChainMs,
|
|
753
|
+
loaders: {},
|
|
754
|
+
timestamp: new Date().toISOString(),
|
|
755
|
+
};
|
|
756
|
+
for (const [name, info] of Object.entries(metrics.loaders || {})) {
|
|
757
|
+
data.loaders[name] = {
|
|
758
|
+
duration: info.duration || 0,
|
|
759
|
+
status: info.status || 'unknown',
|
|
760
|
+
};
|
|
761
|
+
}
|
|
762
|
+
atomicWriteSync(
|
|
763
|
+
path.join(metricsDir, 'uap-metrics.json'),
|
|
764
|
+
JSON.stringify(data, null, 2),
|
|
765
|
+
);
|
|
766
|
+
} catch {
|
|
767
|
+
// Fire-and-forget: never block the activation pipeline
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* Get list of all supported agent IDs.
|
|
773
|
+
* @returns {string[]} Array of agent IDs
|
|
774
|
+
*/
|
|
775
|
+
static getAllAgentIds() {
|
|
776
|
+
return [...ALL_AGENT_IDS];
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Validate that an agent ID is supported.
|
|
781
|
+
* @param {string} agentId - Agent ID to validate
|
|
782
|
+
* @returns {boolean} True if valid
|
|
783
|
+
*/
|
|
784
|
+
static isValidAgentId(agentId) {
|
|
785
|
+
return ALL_AGENT_IDS.includes(agentId);
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
module.exports = {
|
|
790
|
+
UnifiedActivationPipeline,
|
|
791
|
+
ALL_AGENT_IDS,
|
|
792
|
+
// ACT-11: Export for testing
|
|
793
|
+
LOADER_TIERS,
|
|
794
|
+
DEFAULT_PIPELINE_TIMEOUT_MS,
|
|
795
|
+
// ACT-12: Single English fallback (language delegated to Claude Code settings.json)
|
|
796
|
+
FALLBACK_PHRASE,
|
|
797
|
+
};
|
|
798
|
+
|
|
799
|
+
// CLI entrypoint: `node unified-activation-pipeline.js <agentId>`
|
|
800
|
+
if (require.main === module) {
|
|
801
|
+
const agentId = process.argv[2];
|
|
802
|
+
if (!agentId || !ALL_AGENT_IDS.includes(agentId)) {
|
|
803
|
+
console.error(`Usage: node unified-activation-pipeline.js <agentId>\nValid agents: ${ALL_AGENT_IDS.join(', ')}`);
|
|
804
|
+
process.exit(1);
|
|
805
|
+
}
|
|
806
|
+
UnifiedActivationPipeline.activate(agentId)
|
|
807
|
+
.then(result => {
|
|
808
|
+
console.log(result.greeting);
|
|
809
|
+
process.exit(0);
|
|
810
|
+
})
|
|
811
|
+
.catch(err => {
|
|
812
|
+
console.error(`Activation error: ${err.message}`);
|
|
813
|
+
process.exit(1);
|
|
814
|
+
});
|
|
815
|
+
}
|