eai-cli 0.0.0-bootstrap.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/LICENSE +183 -0
- package/NOTICE +4 -0
- package/README.md +14 -0
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +69 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/blocks.d.ts +3 -0
- package/dist/commands/blocks.d.ts.map +1 -0
- package/dist/commands/blocks.js +249 -0
- package/dist/commands/blocks.js.map +1 -0
- package/dist/commands/chat.d.ts +6 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +105 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/deploy.d.ts +36 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +712 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +15 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +133 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs.d.ts +6 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +118 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/env.d.ts +10 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +200 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/errors.d.ts +3 -0
- package/dist/commands/errors.d.ts.map +1 -0
- package/dist/commands/errors.js +72 -0
- package/dist/commands/errors.js.map +1 -0
- package/dist/commands/gofer.d.ts +3 -0
- package/dist/commands/gofer.d.ts.map +1 -0
- package/dist/commands/gofer.js +134 -0
- package/dist/commands/gofer.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1437 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +7 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +117 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/provision.d.ts +6 -0
- package/dist/commands/provision.d.ts.map +1 -0
- package/dist/commands/provision.js +855 -0
- package/dist/commands/provision.js.map +1 -0
- package/dist/commands/publicapi.d.ts +6 -0
- package/dist/commands/publicapi.d.ts.map +1 -0
- package/dist/commands/publicapi.js +184 -0
- package/dist/commands/publicapi.js.map +1 -0
- package/dist/commands/resources.d.ts +38 -0
- package/dist/commands/resources.d.ts.map +1 -0
- package/dist/commands/resources.js +1010 -0
- package/dist/commands/resources.js.map +1 -0
- package/dist/commands/runtime.d.ts +3 -0
- package/dist/commands/runtime.d.ts.map +1 -0
- package/dist/commands/runtime.js +78 -0
- package/dist/commands/runtime.js.map +1 -0
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +365 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/tenant.d.ts +45 -0
- package/dist/commands/tenant.d.ts.map +1 -0
- package/dist/commands/tenant.js +1036 -0
- package/dist/commands/tenant.js.map +1 -0
- package/dist/commands/types.d.ts +130 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +1636 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +163 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/user.d.ts +6 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +359 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/verify.d.ts +40 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +1442 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/vertical.d.ts +24 -0
- package/dist/commands/vertical.d.ts.map +1 -0
- package/dist/commands/vertical.js +301 -0
- package/dist/commands/vertical.js.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +73 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/workflow.d.ts +6 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +400 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +272 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/agent-guide.d.ts +24 -0
- package/dist/lib/agent-guide.d.ts.map +1 -0
- package/dist/lib/agent-guide.js +155 -0
- package/dist/lib/agent-guide.js.map +1 -0
- package/dist/lib/api.d.ts +338 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +991 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth.d.ts +65 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +592 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/azure-cli.d.ts +6 -0
- package/dist/lib/azure-cli.d.ts.map +1 -0
- package/dist/lib/azure-cli.js +13 -0
- package/dist/lib/azure-cli.js.map +1 -0
- package/dist/lib/block-catalog-normalize.d.ts +47 -0
- package/dist/lib/block-catalog-normalize.d.ts.map +1 -0
- package/dist/lib/block-catalog-normalize.js +355 -0
- package/dist/lib/block-catalog-normalize.js.map +1 -0
- package/dist/lib/block-catalog-types.d.ts +111 -0
- package/dist/lib/block-catalog-types.d.ts.map +1 -0
- package/dist/lib/block-catalog-types.js +41 -0
- package/dist/lib/block-catalog-types.js.map +1 -0
- package/dist/lib/block-catalog-utils.d.ts +7 -0
- package/dist/lib/block-catalog-utils.d.ts.map +1 -0
- package/dist/lib/block-catalog-utils.js +47 -0
- package/dist/lib/block-catalog-utils.js.map +1 -0
- package/dist/lib/block-catalog-validation.d.ts +5 -0
- package/dist/lib/block-catalog-validation.d.ts.map +1 -0
- package/dist/lib/block-catalog-validation.js +112 -0
- package/dist/lib/block-catalog-validation.js.map +1 -0
- package/dist/lib/block-catalog.d.ts +3 -0
- package/dist/lib/block-catalog.d.ts.map +1 -0
- package/dist/lib/block-catalog.js +284 -0
- package/dist/lib/block-catalog.js.map +1 -0
- package/dist/lib/cloud-env.d.ts +25 -0
- package/dist/lib/cloud-env.d.ts.map +1 -0
- package/dist/lib/cloud-env.js +79 -0
- package/dist/lib/cloud-env.js.map +1 -0
- package/dist/lib/config.d.ts +116 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +195 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/context.d.ts +43 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +68 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/error-codes.d.ts +56 -0
- package/dist/lib/error-codes.d.ts.map +1 -0
- package/dist/lib/error-codes.js +211 -0
- package/dist/lib/error-codes.js.map +1 -0
- package/dist/lib/error-guidance/catalog.d.ts +648 -0
- package/dist/lib/error-guidance/catalog.d.ts.map +1 -0
- package/dist/lib/error-guidance/catalog.js +940 -0
- package/dist/lib/error-guidance/catalog.js.map +1 -0
- package/dist/lib/error-guidance/match.d.ts +3 -0
- package/dist/lib/error-guidance/match.d.ts.map +1 -0
- package/dist/lib/error-guidance/match.js +46 -0
- package/dist/lib/error-guidance/match.js.map +1 -0
- package/dist/lib/error-guidance/render.d.ts +5 -0
- package/dist/lib/error-guidance/render.d.ts.map +1 -0
- package/dist/lib/error-guidance/render.js +92 -0
- package/dist/lib/error-guidance/render.js.map +1 -0
- package/dist/lib/error-guidance/types.d.ts +76 -0
- package/dist/lib/error-guidance/types.d.ts.map +1 -0
- package/dist/lib/error-guidance/types.js +2 -0
- package/dist/lib/error-guidance/types.js.map +1 -0
- package/dist/lib/error-guidance/validate.d.ts +3 -0
- package/dist/lib/error-guidance/validate.d.ts.map +1 -0
- package/dist/lib/error-guidance/validate.js +59 -0
- package/dist/lib/error-guidance/validate.js.map +1 -0
- package/dist/lib/gofer-installer.d.ts +32 -0
- package/dist/lib/gofer-installer.d.ts.map +1 -0
- package/dist/lib/gofer-installer.js +589 -0
- package/dist/lib/gofer-installer.js.map +1 -0
- package/dist/lib/gofer-refresh.d.ts +46 -0
- package/dist/lib/gofer-refresh.d.ts.map +1 -0
- package/dist/lib/gofer-refresh.js +536 -0
- package/dist/lib/gofer-refresh.js.map +1 -0
- package/dist/lib/next-route-exports.d.ts +6 -0
- package/dist/lib/next-route-exports.d.ts.map +1 -0
- package/dist/lib/next-route-exports.js +127 -0
- package/dist/lib/next-route-exports.js.map +1 -0
- package/dist/lib/npm.d.ts +2 -0
- package/dist/lib/npm.d.ts.map +1 -0
- package/dist/lib/npm.js +4 -0
- package/dist/lib/npm.js.map +1 -0
- package/dist/lib/object-type-defaults.d.ts +4 -0
- package/dist/lib/object-type-defaults.d.ts.map +1 -0
- package/dist/lib/object-type-defaults.js +72 -0
- package/dist/lib/object-type-defaults.js.map +1 -0
- package/dist/lib/output.d.ts +35 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +166 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/profile.d.ts +52 -0
- package/dist/lib/profile.d.ts.map +1 -0
- package/dist/lib/profile.js +116 -0
- package/dist/lib/profile.js.map +1 -0
- package/dist/lib/project-manifest.d.ts +42 -0
- package/dist/lib/project-manifest.d.ts.map +1 -0
- package/dist/lib/project-manifest.js +191 -0
- package/dist/lib/project-manifest.js.map +1 -0
- package/dist/lib/resourceapi-bundle.d.ts +33 -0
- package/dist/lib/resourceapi-bundle.d.ts.map +1 -0
- package/dist/lib/resourceapi-bundle.js +79 -0
- package/dist/lib/resourceapi-bundle.js.map +1 -0
- package/dist/lib/runtime-contract.d.ts +84 -0
- package/dist/lib/runtime-contract.d.ts.map +1 -0
- package/dist/lib/runtime-contract.js +318 -0
- package/dist/lib/runtime-contract.js.map +1 -0
- package/dist/lib/schema-builder.d.ts +28 -0
- package/dist/lib/schema-builder.d.ts.map +1 -0
- package/dist/lib/schema-builder.js +69 -0
- package/dist/lib/schema-builder.js.map +1 -0
- package/dist/lib/tenant-context.d.ts +127 -0
- package/dist/lib/tenant-context.d.ts.map +1 -0
- package/dist/lib/tenant-context.js +573 -0
- package/dist/lib/tenant-context.js.map +1 -0
- package/dist/lib/update-check.d.ts +52 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +271 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/update-maintenance.d.ts +15 -0
- package/dist/lib/update-maintenance.d.ts.map +1 -0
- package/dist/lib/update-maintenance.js +187 -0
- package/dist/lib/update-maintenance.js.map +1 -0
- package/dist/lib/utils.d.ts +23 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +48 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/workflow-provisioning.d.ts +54 -0
- package/dist/lib/workflow-provisioning.d.ts.map +1 -0
- package/dist/lib/workflow-provisioning.js +281 -0
- package/dist/lib/workflow-provisioning.js.map +1 -0
- package/package.json +51 -0
- package/resources/gofer/.gofer-version +7 -0
- package/resources/gofer/agents-skills/0_gofer_start/SKILL.md +1287 -0
- package/resources/gofer/agents-skills/0a_problem_validation/SKILL.md +429 -0
- package/resources/gofer/agents-skills/10_gofer_cloud/SKILL.md +635 -0
- package/resources/gofer/agents-skills/1_gofer_research/SKILL.md +1159 -0
- package/resources/gofer/agents-skills/2_gofer_specify/SKILL.md +860 -0
- package/resources/gofer/agents-skills/3_gofer_plan/SKILL.md +886 -0
- package/resources/gofer/agents-skills/4_gofer_tasks/SKILL.md +748 -0
- package/resources/gofer/agents-skills/5_gofer_implement/SKILL.md +924 -0
- package/resources/gofer/agents-skills/6_gofer_validate/SKILL.md +2269 -0
- package/resources/gofer/agents-skills/7_gofer_save/SKILL.md +423 -0
- package/resources/gofer/agents-skills/7a_stakeholder_comms/SKILL.md +508 -0
- package/resources/gofer/agents-skills/8_gofer_branding/SKILL.md +315 -0
- package/resources/gofer/agents-skills/9_gofer_tests/SKILL.md +558 -0
- package/resources/gofer/agents-skills/gofer_bootstrap_workspace/SKILL.md +148 -0
- package/resources/gofer/agents-skills/gofer_check_workspace/SKILL.md +119 -0
- package/resources/gofer/agents-skills/gofer_constitution/SKILL.md +612 -0
- package/resources/gofer/agents-skills/gofer_diagnose/SKILL.md +114 -0
- package/resources/gofer/agents-skills/gofer_eai_first_run/SKILL.md +397 -0
- package/resources/gofer/agents-skills/gofer_hydrate/SKILL.md +561 -0
- package/resources/gofer/agents-skills/gofer_personality/SKILL.md +44 -0
- package/resources/gofer/agents-skills/gofer_plan/SKILL.md +40 -0
- package/resources/gofer/agents-skills/gofer_side/SKILL.md +45 -0
- package/resources/gofer/agents-skills/gofer_spec_summary/SKILL.md +112 -0
- package/resources/gofer/agents-skills/gofer_tdd/SKILL.md +112 -0
- package/resources/gofer/agents-skills/gofer_vocabulary/SKILL.md +112 -0
- package/resources/gofer/agents-skills/gofer_zoom_out/SKILL.md +112 -0
- package/resources/gofer/bash-scripts/check-context-health.sh +365 -0
- package/resources/gofer/bash-scripts/check-persona-pack.sh +81 -0
- package/resources/gofer/bash-scripts/check-prerequisites.sh +168 -0
- package/resources/gofer/bash-scripts/common.sh +192 -0
- package/resources/gofer/bash-scripts/create-new-feature.sh +260 -0
- package/resources/gofer/bash-scripts/install-optional-tools.sh +270 -0
- package/resources/gofer/bash-scripts/log-stage.sh +224 -0
- package/resources/gofer/bash-scripts/mark-task-complete.sh +74 -0
- package/resources/gofer/bash-scripts/pipeline-state.sh +306 -0
- package/resources/gofer/bash-scripts/read-failed-approaches.sh +114 -0
- package/resources/gofer/bash-scripts/read-session-memories.sh +96 -0
- package/resources/gofer/bash-scripts/save-checkpoint.sh +407 -0
- package/resources/gofer/bash-scripts/setup-plan.sh +62 -0
- package/resources/gofer/bash-scripts/sync-implementation-status.sh +47 -0
- package/resources/gofer/bash-scripts/update-agent-context.sh +772 -0
- package/resources/gofer/bash-scripts/validate-artifact.sh +335 -0
- package/resources/gofer/bash-scripts/verify-task.sh +384 -0
- package/resources/gofer/bash-scripts/write-failed-approach.sh +110 -0
- package/resources/gofer/bash-scripts/write-periodic-checkpoint.sh +128 -0
- package/resources/gofer/bash-scripts/write-session-memory.sh +118 -0
- package/resources/gofer/claude-agents/assumption-tracker.md +168 -0
- package/resources/gofer/claude-agents/business-metrics-analyzer.md +169 -0
- package/resources/gofer/claude-agents/business-problem-validator.md +168 -0
- package/resources/gofer/claude-agents/codebase-analyzer.md +124 -0
- package/resources/gofer/claude-agents/codebase-locator.md +95 -0
- package/resources/gofer/claude-agents/codebase-pattern-finder.md +180 -0
- package/resources/gofer/claude-agents/comms-writer.md +158 -0
- package/resources/gofer/claude-agents/engineer-review.md +169 -0
- package/resources/gofer/claude-agents/implement-bug-triangulator.md +94 -0
- package/resources/gofer/claude-agents/implement-code-review-council.md +89 -0
- package/resources/gofer/claude-agents/implement-doc-writer.md +89 -0
- package/resources/gofer/claude-agents/implement-error-hardener.md +84 -0
- package/resources/gofer/claude-agents/implement-performance-explorer.md +95 -0
- package/resources/gofer/claude-agents/implement-test-diversifier.md +82 -0
- package/resources/gofer/claude-agents/implement-variant-generator.md +80 -0
- package/resources/gofer/claude-agents/multi-perspective-judge.md +114 -0
- package/resources/gofer/claude-agents/plan-api-comparator.md +90 -0
- package/resources/gofer/claude-agents/plan-architecture-diverger.md +100 -0
- package/resources/gofer/claude-agents/plan-data-model-stress-tester.md +95 -0
- package/resources/gofer/claude-agents/plan-migration-path-finder.md +95 -0
- package/resources/gofer/claude-agents/plan-refactor-rewrite-advisor.md +97 -0
- package/resources/gofer/claude-agents/research-dependency-evaluator.md +106 -0
- package/resources/gofer/claude-agents/research-horizon-scanner.md +100 -0
- package/resources/gofer/claude-agents/research-market-scanner.md +137 -0
- package/resources/gofer/claude-agents/research-perspective-multiplier.md +102 -0
- package/resources/gofer/claude-agents/scope-creep-detector.md +152 -0
- package/resources/gofer/claude-agents/specify-ambiguity-detector.md +95 -0
- package/resources/gofer/claude-agents/specify-journey-stress-tester.md +92 -0
- package/resources/gofer/claude-agents/tasks-cross-cutting-scanner.md +91 -0
- package/resources/gofer/claude-agents/tasks-rollback-planner.md +89 -0
- package/resources/gofer/claude-agents/validate-security-red-team.md +102 -0
- package/resources/gofer/claude-agents/validation-correctness.md +103 -0
- package/resources/gofer/claude-agents/validation-integration.md +129 -0
- package/resources/gofer/claude-agents/validation-performance.md +120 -0
- package/resources/gofer/claude-agents/validation-security.md +115 -0
- package/resources/gofer/claude-agents/validation-standards.md +151 -0
- package/resources/gofer/claude-agents/validation-test-quality.md +146 -0
- package/resources/gofer/claude-agents/visual-bounded-context-writer.md +40 -0
- package/resources/gofer/claude-agents/visual-c4-writer.md +45 -0
- package/resources/gofer/claude-agents/visual-erd-writer.md +34 -0
- package/resources/gofer/claude-agents/visual-heatmap-writer.md +63 -0
- package/resources/gofer/claude-agents/visual-risk-writer.md +64 -0
- package/resources/gofer/claude-commands/0_gofer_start.md +1282 -0
- package/resources/gofer/claude-commands/0a_problem_validation.md +424 -0
- package/resources/gofer/claude-commands/10_gofer_cloud.md +630 -0
- package/resources/gofer/claude-commands/1_gofer_research.md +1154 -0
- package/resources/gofer/claude-commands/2_gofer_specify.md +855 -0
- package/resources/gofer/claude-commands/3_gofer_plan.md +881 -0
- package/resources/gofer/claude-commands/4_gofer_tasks.md +743 -0
- package/resources/gofer/claude-commands/5_gofer_implement.md +919 -0
- package/resources/gofer/claude-commands/6_gofer_validate.md +2264 -0
- package/resources/gofer/claude-commands/7_gofer_save.md +418 -0
- package/resources/gofer/claude-commands/7a_stakeholder_comms.md +503 -0
- package/resources/gofer/claude-commands/8_gofer_branding.md +310 -0
- package/resources/gofer/claude-commands/9_gofer_tests.md +553 -0
- package/resources/gofer/claude-commands/gofer_bootstrap_workspace.md +143 -0
- package/resources/gofer/claude-commands/gofer_check_workspace.md +114 -0
- package/resources/gofer/claude-commands/gofer_constitution.md +607 -0
- package/resources/gofer/claude-commands/gofer_diagnose.md +109 -0
- package/resources/gofer/claude-commands/gofer_eai_first_run.md +392 -0
- package/resources/gofer/claude-commands/gofer_hydrate.md +556 -0
- package/resources/gofer/claude-commands/gofer_personality.md +39 -0
- package/resources/gofer/claude-commands/gofer_plan.md +35 -0
- package/resources/gofer/claude-commands/gofer_side.md +40 -0
- package/resources/gofer/claude-commands/gofer_spec_summary.md +107 -0
- package/resources/gofer/claude-commands/gofer_tdd.md +107 -0
- package/resources/gofer/claude-commands/gofer_vocabulary.md +107 -0
- package/resources/gofer/claude-commands/gofer_zoom_out.md +107 -0
- package/resources/gofer/claude-skills/eai-gofer/SKILL.md +56 -0
- package/resources/gofer/commands/.gitkeep +0 -0
- package/resources/gofer/commands/0_gofer_start.md +1299 -0
- package/resources/gofer/commands/0a_problem_validation.md +405 -0
- package/resources/gofer/commands/10_gofer_cloud.md +611 -0
- package/resources/gofer/commands/1_gofer_research.md +1135 -0
- package/resources/gofer/commands/2_gofer_specify.md +836 -0
- package/resources/gofer/commands/3_gofer_plan.md +862 -0
- package/resources/gofer/commands/4_gofer_tasks.md +724 -0
- package/resources/gofer/commands/5_gofer_implement.md +900 -0
- package/resources/gofer/commands/6_gofer_validate.md +2245 -0
- package/resources/gofer/commands/7_gofer_save.md +399 -0
- package/resources/gofer/commands/7a_stakeholder_comms.md +484 -0
- package/resources/gofer/commands/8_gofer_branding.md +291 -0
- package/resources/gofer/commands/9_gofer_tests.md +534 -0
- package/resources/gofer/commands/gofer_bootstrap_workspace.md +159 -0
- package/resources/gofer/commands/gofer_check_workspace.md +130 -0
- package/resources/gofer/commands/gofer_constitution.md +588 -0
- package/resources/gofer/commands/gofer_diagnose.md +89 -0
- package/resources/gofer/commands/gofer_eai_first_run.md +392 -0
- package/resources/gofer/commands/gofer_hydrate.md +537 -0
- package/resources/gofer/commands/gofer_personality.md +61 -0
- package/resources/gofer/commands/gofer_plan.md +51 -0
- package/resources/gofer/commands/gofer_side.md +56 -0
- package/resources/gofer/commands/gofer_spec_summary.md +87 -0
- package/resources/gofer/commands/gofer_tdd.md +87 -0
- package/resources/gofer/commands/gofer_vocabulary.md +87 -0
- package/resources/gofer/commands/gofer_zoom_out.md +87 -0
- package/resources/gofer/copilot-instructions/gofer-cost.instructions.md +13 -0
- package/resources/gofer/copilot-instructions/language-server.instructions.md +49 -0
- package/resources/gofer/copilot-instructions/typescript.instructions.md +47 -0
- package/resources/gofer/copilot-instructions/vscode-extension.instructions.md +46 -0
- package/resources/gofer/copilot-prompts/0_gofer_start.prompt.md +1308 -0
- package/resources/gofer/copilot-prompts/0a_problem_validation.prompt.md +429 -0
- package/resources/gofer/copilot-prompts/10_gofer_cloud.prompt.md +644 -0
- package/resources/gofer/copilot-prompts/1_gofer_research.prompt.md +1177 -0
- package/resources/gofer/copilot-prompts/2_gofer_specify.prompt.md +878 -0
- package/resources/gofer/copilot-prompts/3_gofer_plan.prompt.md +904 -0
- package/resources/gofer/copilot-prompts/4_gofer_tasks.prompt.md +766 -0
- package/resources/gofer/copilot-prompts/5_gofer_implement.prompt.md +942 -0
- package/resources/gofer/copilot-prompts/6_gofer_validate.prompt.md +2277 -0
- package/resources/gofer/copilot-prompts/7_gofer_save.prompt.md +433 -0
- package/resources/gofer/copilot-prompts/7a_stakeholder_comms.prompt.md +516 -0
- package/resources/gofer/copilot-prompts/8_gofer_branding.prompt.md +323 -0
- package/resources/gofer/copilot-prompts/9_gofer_tests.prompt.md +566 -0
- package/resources/gofer/copilot-prompts/gofer_bootstrap_workspace.prompt.md +161 -0
- package/resources/gofer/copilot-prompts/gofer_check_workspace.prompt.md +132 -0
- package/resources/gofer/copilot-prompts/gofer_constitution.prompt.md +621 -0
- package/resources/gofer/copilot-prompts/gofer_diagnose.prompt.md +127 -0
- package/resources/gofer/copilot-prompts/gofer_eai_first_run.prompt.md +410 -0
- package/resources/gofer/copilot-prompts/gofer_hydrate.prompt.md +571 -0
- package/resources/gofer/copilot-prompts/gofer_personality.prompt.md +57 -0
- package/resources/gofer/copilot-prompts/gofer_plan.prompt.md +53 -0
- package/resources/gofer/copilot-prompts/gofer_side.prompt.md +58 -0
- package/resources/gofer/copilot-prompts/gofer_spec_summary.prompt.md +125 -0
- package/resources/gofer/copilot-prompts/gofer_tdd.prompt.md +125 -0
- package/resources/gofer/copilot-prompts/gofer_vocabulary.prompt.md +125 -0
- package/resources/gofer/copilot-prompts/gofer_zoom_out.prompt.md +125 -0
- package/resources/gofer/gemini/agents/assumption-tracker.md +171 -0
- package/resources/gofer/gemini/agents/business-metrics-analyzer.md +172 -0
- package/resources/gofer/gemini/agents/business-problem-validator.md +171 -0
- package/resources/gofer/gemini/agents/codebase-analyzer.md +127 -0
- package/resources/gofer/gemini/agents/codebase-locator.md +98 -0
- package/resources/gofer/gemini/agents/codebase-pattern-finder.md +183 -0
- package/resources/gofer/gemini/agents/comms-writer.md +161 -0
- package/resources/gofer/gemini/agents/engineer-review.md +172 -0
- package/resources/gofer/gemini/agents/implement-bug-triangulator.md +97 -0
- package/resources/gofer/gemini/agents/implement-code-review-council.md +92 -0
- package/resources/gofer/gemini/agents/implement-doc-writer.md +92 -0
- package/resources/gofer/gemini/agents/implement-error-hardener.md +87 -0
- package/resources/gofer/gemini/agents/implement-performance-explorer.md +98 -0
- package/resources/gofer/gemini/agents/implement-test-diversifier.md +85 -0
- package/resources/gofer/gemini/agents/implement-variant-generator.md +83 -0
- package/resources/gofer/gemini/agents/multi-perspective-judge.md +117 -0
- package/resources/gofer/gemini/agents/plan-api-comparator.md +93 -0
- package/resources/gofer/gemini/agents/plan-architecture-diverger.md +103 -0
- package/resources/gofer/gemini/agents/plan-data-model-stress-tester.md +98 -0
- package/resources/gofer/gemini/agents/plan-migration-path-finder.md +98 -0
- package/resources/gofer/gemini/agents/plan-refactor-rewrite-advisor.md +100 -0
- package/resources/gofer/gemini/agents/research-dependency-evaluator.md +109 -0
- package/resources/gofer/gemini/agents/research-horizon-scanner.md +103 -0
- package/resources/gofer/gemini/agents/research-market-scanner.md +140 -0
- package/resources/gofer/gemini/agents/research-perspective-multiplier.md +105 -0
- package/resources/gofer/gemini/agents/scope-creep-detector.md +155 -0
- package/resources/gofer/gemini/agents/specify-ambiguity-detector.md +98 -0
- package/resources/gofer/gemini/agents/specify-journey-stress-tester.md +95 -0
- package/resources/gofer/gemini/agents/tasks-cross-cutting-scanner.md +94 -0
- package/resources/gofer/gemini/agents/tasks-rollback-planner.md +92 -0
- package/resources/gofer/gemini/agents/validate-security-red-team.md +105 -0
- package/resources/gofer/gemini/agents/validation-correctness.md +106 -0
- package/resources/gofer/gemini/agents/validation-integration.md +132 -0
- package/resources/gofer/gemini/agents/validation-performance.md +123 -0
- package/resources/gofer/gemini/agents/validation-security.md +118 -0
- package/resources/gofer/gemini/agents/validation-standards.md +154 -0
- package/resources/gofer/gemini/agents/validation-test-quality.md +149 -0
- package/resources/gofer/gemini/agents/visual-bounded-context-writer.md +40 -0
- package/resources/gofer/gemini/agents/visual-c4-writer.md +44 -0
- package/resources/gofer/gemini/agents/visual-erd-writer.md +36 -0
- package/resources/gofer/gemini/agents/visual-heatmap-writer.md +63 -0
- package/resources/gofer/gemini/agents/visual-risk-writer.md +64 -0
- package/resources/gofer/gemini/commands/gofer/.gitkeep +0 -0
- package/resources/gofer/gemini/commands/gofer/0_gofer_start.md +1282 -0
- package/resources/gofer/gemini/commands/gofer/0_gofer_start.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/0a_problem_validation.md +424 -0
- package/resources/gofer/gemini/commands/gofer/0a_problem_validation.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/10_gofer_cloud.md +630 -0
- package/resources/gofer/gemini/commands/gofer/10_gofer_cloud.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/1_gofer_research.md +1154 -0
- package/resources/gofer/gemini/commands/gofer/1_gofer_research.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/2_gofer_specify.md +855 -0
- package/resources/gofer/gemini/commands/gofer/2_gofer_specify.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/3_gofer_plan.md +881 -0
- package/resources/gofer/gemini/commands/gofer/3_gofer_plan.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/4_gofer_tasks.md +743 -0
- package/resources/gofer/gemini/commands/gofer/4_gofer_tasks.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/5_gofer_implement.md +919 -0
- package/resources/gofer/gemini/commands/gofer/5_gofer_implement.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/6_gofer_validate.md +2264 -0
- package/resources/gofer/gemini/commands/gofer/6_gofer_validate.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/7_gofer_save.md +418 -0
- package/resources/gofer/gemini/commands/gofer/7_gofer_save.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/7a_stakeholder_comms.md +503 -0
- package/resources/gofer/gemini/commands/gofer/7a_stakeholder_comms.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/8_gofer_branding.md +310 -0
- package/resources/gofer/gemini/commands/gofer/8_gofer_branding.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/9_gofer_tests.md +553 -0
- package/resources/gofer/gemini/commands/gofer/9_gofer_tests.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_bootstrap_workspace.md +143 -0
- package/resources/gofer/gemini/commands/gofer/gofer_bootstrap_workspace.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_check_workspace.md +114 -0
- package/resources/gofer/gemini/commands/gofer/gofer_check_workspace.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_constitution.md +607 -0
- package/resources/gofer/gemini/commands/gofer/gofer_constitution.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_diagnose.md +109 -0
- package/resources/gofer/gemini/commands/gofer/gofer_diagnose.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_eai_first_run.md +392 -0
- package/resources/gofer/gemini/commands/gofer/gofer_eai_first_run.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_hydrate.md +556 -0
- package/resources/gofer/gemini/commands/gofer/gofer_hydrate.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_personality.md +39 -0
- package/resources/gofer/gemini/commands/gofer/gofer_personality.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_plan.md +35 -0
- package/resources/gofer/gemini/commands/gofer/gofer_plan.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_side.md +40 -0
- package/resources/gofer/gemini/commands/gofer/gofer_side.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_spec_summary.md +107 -0
- package/resources/gofer/gemini/commands/gofer/gofer_spec_summary.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_tdd.md +107 -0
- package/resources/gofer/gemini/commands/gofer/gofer_tdd.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_vocabulary.md +107 -0
- package/resources/gofer/gemini/commands/gofer/gofer_vocabulary.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/gofer_zoom_out.md +107 -0
- package/resources/gofer/gemini/commands/gofer/gofer_zoom_out.toml +2 -0
- package/resources/gofer/gemini/commands/gofer/manifest.json +32 -0
- package/resources/gofer/gemini/extension.json +16 -0
- package/resources/gofer/github-agents/gofer-business.agent.md +20 -0
- package/resources/gofer/github-agents/gofer-implement.agent.md +15 -0
- package/resources/gofer/github-agents/gofer-plan.agent.md +15 -0
- package/resources/gofer/github-agents/gofer-research.agent.md +15 -0
- package/resources/gofer/github-agents/gofer-validate.agent.md +10 -0
- package/resources/gofer/github-skills/eai-gofer/SKILL.md +56 -0
- package/resources/gofer/hook-scripts/agent-stop.mjs +655 -0
- package/resources/gofer/hook-scripts/log-stage-launch-time.mjs +77 -0
- package/resources/gofer/hook-scripts/post-tool-use.mjs +333 -0
- package/resources/gofer/hook-scripts/queued-input.mjs +188 -0
- package/resources/gofer/hook-scripts/session-lifecycle.mjs +93 -0
- package/resources/gofer/hook-scripts/user-prompt-submit.mjs +228 -0
- package/resources/gofer/instruction-templates/base/agents-base.md +37 -0
- package/resources/gofer/instruction-templates/base/claude-base.md +7 -0
- package/resources/gofer/instruction-templates/base/copilot-base.md +26 -0
- package/resources/gofer/instruction-templates/gofer/gofer-claude.md +5 -0
- package/resources/gofer/instruction-templates/gofer/gofer-copilot.md +9 -0
- package/resources/gofer/instruction-templates/languages/generic.md +7 -0
- package/resources/gofer/instruction-templates/languages/go.md +8 -0
- package/resources/gofer/instruction-templates/languages/java.md +8 -0
- package/resources/gofer/instruction-templates/languages/python.md +9 -0
- package/resources/gofer/instruction-templates/languages/rust.md +9 -0
- package/resources/gofer/instruction-templates/languages/typescript.md +19 -0
- package/resources/gofer/instruction-templates/workflow/principles.md +52 -0
- package/resources/gofer/memory/constitution.md +391 -0
- package/resources/gofer/memory/context-profiles.yaml +74 -0
- package/resources/gofer/memory/decisions/000-use-adr-for-decisions.md +67 -0
- package/resources/gofer/memory/decisions/001-di-framework.md +190 -0
- package/resources/gofer/memory/decisions/002-module-extraction.md +305 -0
- package/resources/gofer/memory/decisions/003-error-handling.md +368 -0
- package/resources/gofer/memory/decisions/004-cache-eviction.md +436 -0
- package/resources/gofer/memory/decisions/005-constants-management.md +520 -0
- package/resources/gofer/memory/decisions/README.md +129 -0
- package/resources/gofer/memory/diagrams/di-container.mmd +321 -0
- package/resources/gofer/memory/diagrams/extension-activation.mmd +184 -0
- package/resources/gofer/memory/diagrams/module-dependencies.mmd +264 -0
- package/resources/gofer/memory/gofer-model-policy.yaml +97 -0
- package/resources/gofer/memory/lessons.md +46 -0
- package/resources/gofer/node-scripts/canonical-descriptions.mjs +86 -0
- package/resources/gofer/node-scripts/check-version-alignment.mjs +131 -0
- package/resources/gofer/node-scripts/codex-doctor.mjs +425 -0
- package/resources/gofer/node-scripts/generate-commands.mjs +1366 -0
- package/resources/gofer/node-scripts/generate-issues.js +563 -0
- package/resources/gofer/node-scripts/gofer-closed-loop-audit.mjs +893 -0
- package/resources/gofer/node-scripts/gofer-loop-audit.mjs +541 -0
- package/resources/gofer/node-scripts/gofer-performance-report.mjs +306 -0
- package/resources/gofer/node-scripts/gofer-workspace-bootstrap.mjs +56 -0
- package/resources/gofer/node-scripts/gofer-workspace-check.mjs +56 -0
- package/resources/gofer/node-scripts/lib/ai-leverage-tagger.mjs +103 -0
- package/resources/gofer/node-scripts/lib/assemble-stakeholder-pack.mjs +114 -0
- package/resources/gofer/node-scripts/lib/marp-deck.mjs +87 -0
- package/resources/gofer/node-scripts/lib/mermaid-tabular-fallback.mjs +264 -0
- package/resources/gofer/node-scripts/lib/render-visual.mjs +54 -0
- package/resources/gofer/node-scripts/lib/validate-aliases.mjs +85 -0
- package/resources/gofer/node-scripts/lib/visual-counts.mjs +44 -0
- package/resources/gofer/node-scripts/lib/visual-pass-pipeline.mjs +134 -0
- package/resources/gofer/node-scripts/mermaid-export.mjs +72 -0
- package/resources/gofer/node-scripts/package-agent-plugin.mjs +940 -0
- package/resources/gofer/node-scripts/parse-stage-command.mjs +211 -0
- package/resources/gofer/node-scripts/schemas/.gitkeep +0 -0
- package/resources/gofer/node-scripts/schemas/stage-command.schema.json +72 -0
- package/resources/gofer/node-scripts/sync-extension-resources.mjs +110 -0
- package/resources/gofer/node-scripts/workspace-bootstrap-lib.mjs +1166 -0
- package/resources/gofer/powershell-scripts/install-optional-tools.ps1 +214 -0
- package/resources/gofer/references/platform/README.md +17 -0
- package/resources/gofer/references/platform/deployment-repo.md +9 -0
- package/resources/gofer/references/platform/eai-app-template.md +45 -0
- package/resources/gofer/references/platform/eai-config-driven-ui.md +156 -0
- package/resources/gofer/references/platform/eai-error-catalog.yaml +197 -0
- package/resources/gofer/references/platform/eai-repo-contract.md +134 -0
- package/resources/gofer/references/platform/eai-service-patterns.md +56 -0
- package/resources/gofer/references/platform/eai.md +85 -0
- package/resources/gofer/references/platform/vertical-template.md +49 -0
- package/resources/gofer/specify-commands/.gitkeep +0 -0
- package/resources/gofer/specify-commands/0_gofer_start.md +1299 -0
- package/resources/gofer/specify-commands/0a_problem_validation.md +405 -0
- package/resources/gofer/specify-commands/10_gofer_cloud.md +611 -0
- package/resources/gofer/specify-commands/1_gofer_research.md +1135 -0
- package/resources/gofer/specify-commands/2_gofer_specify.md +836 -0
- package/resources/gofer/specify-commands/3_gofer_plan.md +862 -0
- package/resources/gofer/specify-commands/4_gofer_tasks.md +724 -0
- package/resources/gofer/specify-commands/5_gofer_implement.md +900 -0
- package/resources/gofer/specify-commands/6_gofer_validate.md +2245 -0
- package/resources/gofer/specify-commands/7_gofer_save.md +399 -0
- package/resources/gofer/specify-commands/7a_stakeholder_comms.md +484 -0
- package/resources/gofer/specify-commands/8_gofer_branding.md +291 -0
- package/resources/gofer/specify-commands/9_gofer_tests.md +534 -0
- package/resources/gofer/specify-commands/gofer_bootstrap_workspace.md +159 -0
- package/resources/gofer/specify-commands/gofer_check_workspace.md +130 -0
- package/resources/gofer/specify-commands/gofer_constitution.md +588 -0
- package/resources/gofer/specify-commands/gofer_diagnose.md +89 -0
- package/resources/gofer/specify-commands/gofer_eai_first_run.md +392 -0
- package/resources/gofer/specify-commands/gofer_hydrate.md +537 -0
- package/resources/gofer/specify-commands/gofer_personality.md +61 -0
- package/resources/gofer/specify-commands/gofer_plan.md +51 -0
- package/resources/gofer/specify-commands/gofer_side.md +56 -0
- package/resources/gofer/specify-commands/gofer_spec_summary.md +87 -0
- package/resources/gofer/specify-commands/gofer_tdd.md +87 -0
- package/resources/gofer/specify-commands/gofer_vocabulary.md +87 -0
- package/resources/gofer/specify-commands/gofer_zoom_out.md +87 -0
- package/resources/gofer/system-skills/0_gofer_start/SKILL.md +1287 -0
- package/resources/gofer/system-skills/0a_problem_validation/SKILL.md +429 -0
- package/resources/gofer/system-skills/10_gofer_cloud/SKILL.md +635 -0
- package/resources/gofer/system-skills/1_gofer_research/SKILL.md +1159 -0
- package/resources/gofer/system-skills/2_gofer_specify/SKILL.md +860 -0
- package/resources/gofer/system-skills/3_gofer_plan/SKILL.md +886 -0
- package/resources/gofer/system-skills/4_gofer_tasks/SKILL.md +748 -0
- package/resources/gofer/system-skills/5_gofer_implement/SKILL.md +924 -0
- package/resources/gofer/system-skills/6_gofer_validate/SKILL.md +2269 -0
- package/resources/gofer/system-skills/7_gofer_save/SKILL.md +423 -0
- package/resources/gofer/system-skills/7a_stakeholder_comms/SKILL.md +508 -0
- package/resources/gofer/system-skills/8_gofer_branding/SKILL.md +315 -0
- package/resources/gofer/system-skills/9_gofer_tests/SKILL.md +558 -0
- package/resources/gofer/system-skills/gofer_bootstrap_workspace/SKILL.md +148 -0
- package/resources/gofer/system-skills/gofer_check_workspace/SKILL.md +119 -0
- package/resources/gofer/system-skills/gofer_constitution/SKILL.md +612 -0
- package/resources/gofer/system-skills/gofer_diagnose/SKILL.md +114 -0
- package/resources/gofer/system-skills/gofer_eai_first_run/SKILL.md +397 -0
- package/resources/gofer/system-skills/gofer_hydrate/SKILL.md +561 -0
- package/resources/gofer/system-skills/gofer_personality/SKILL.md +44 -0
- package/resources/gofer/system-skills/gofer_plan/SKILL.md +40 -0
- package/resources/gofer/system-skills/gofer_side/SKILL.md +45 -0
- package/resources/gofer/system-skills/gofer_spec_summary/SKILL.md +112 -0
- package/resources/gofer/system-skills/gofer_tdd/SKILL.md +112 -0
- package/resources/gofer/system-skills/gofer_vocabulary/SKILL.md +112 -0
- package/resources/gofer/system-skills/gofer_zoom_out/SKILL.md +112 -0
- package/resources/gofer/templates/agent-file-template.md +28 -0
- package/resources/gofer/templates/assumptions-template.md +94 -0
- package/resources/gofer/templates/audit-history-template.md +35 -0
- package/resources/gofer/templates/brand/brand-profile-template.json +45 -0
- package/resources/gofer/templates/brand/document-style-template.md +50 -0
- package/resources/gofer/templates/brand/marp-theme-template.css +58 -0
- package/resources/gofer/templates/brownfield-analysis.md +44 -0
- package/resources/gofer/templates/business-metrics-template.md +120 -0
- package/resources/gofer/templates/business-owner-summary-template.md +83 -0
- package/resources/gofer/templates/checklist-template.md +40 -0
- package/resources/gofer/templates/ciso-security-summary-template.md +70 -0
- package/resources/gofer/templates/context-bundle-template.md +76 -0
- package/resources/gofer/templates/contract-pack-template.md +109 -0
- package/resources/gofer/templates/cto-architecture-summary-template.md +83 -0
- package/resources/gofer/templates/discovery-template.md +92 -0
- package/resources/gofer/templates/eai-preflight-template.md +144 -0
- package/resources/gofer/templates/goal-ledger-template.json +69 -0
- package/resources/gofer/templates/gofer-model-policy.yaml +97 -0
- package/resources/gofer/templates/issues-template.md +106 -0
- package/resources/gofer/templates/journey/base-journey.md +95 -0
- package/resources/gofer/templates/journey/industry-variants.yaml +277 -0
- package/resources/gofer/templates/loop-contract-template.json +68 -0
- package/resources/gofer/templates/plan-template.md +215 -0
- package/resources/gofer/templates/problem-brief-template.md +85 -0
- package/resources/gofer/templates/proposal-review-template.md +79 -0
- package/resources/gofer/templates/research-template.md +222 -0
- package/resources/gofer/templates/reuse-scan-template.md +43 -0
- package/resources/gofer/templates/sequence-diagrams/option-spectrum.yaml +178 -0
- package/resources/gofer/templates/service-fit-matrix-template.md +29 -0
- package/resources/gofer/templates/session-handoff-template.md +172 -0
- package/resources/gofer/templates/spec-summary-template.md +118 -0
- package/resources/gofer/templates/spec-template.md +196 -0
- package/resources/gofer/templates/stakeholder-comms-template.md +330 -0
- package/resources/gofer/templates/stakeholder-review-index-template.md +54 -0
- package/resources/gofer/templates/tasks-template.md +323 -0
- package/resources/gofer/templates/ui-approval-template.md +32 -0
- package/resources/gofer/templates/ui-preview-brief-template.md +65 -0
- package/resources/gofer/templates/ui-review-log-template.md +11 -0
- package/resources/gofer/templates/visuals/.gitkeep +0 -0
- package/resources/gofer/templates/visuals/bounded-context-map.md +19 -0
- package/resources/gofer/templates/visuals/bounded-context-template.md +47 -0
- package/resources/gofer/templates/visuals/c4-container-template.md +38 -0
- package/resources/gofer/templates/visuals/c4-container.md +20 -0
- package/resources/gofer/templates/visuals/c4-context-template.md +46 -0
- package/resources/gofer/templates/visuals/capability-heatmap-template.md +54 -0
- package/resources/gofer/templates/visuals/data-model-erd-template.md +41 -0
- package/resources/gofer/templates/visuals/erd.md +19 -0
- package/resources/gofer/templates/visuals/impact-canvas.md +40 -0
- package/resources/gofer/templates/visuals/risk-heatmap-template.md +51 -0
- package/resources/gofer/templates/visuals/roi-projection.md +17 -0
- package/resources/gofer/templates/visuals/value-stream-asis.md +16 -0
- package/resources/gofer/templates/visuals/value-stream-tobe.md +18 -0
- package/resources/gofer/templates/working-backwards-prfaq-template.md +165 -0
- package/resources/linked-sources.json +25 -0
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
# ADR-005: Constants Management Strategy
|
|
2
|
+
|
|
3
|
+
**Status**: Accepted
|
|
4
|
+
**Date**: 2026-02-24
|
|
5
|
+
**Deciders**: Engineering Team
|
|
6
|
+
**Phase**: Phase 0 - Magic Number Elimination
|
|
7
|
+
**Related Tasks**: T001-T008 (Magic Number Replacement)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
The codebase had **magic numbers** scattered throughout:
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// Anti-pattern: Magic numbers with no explanation
|
|
17
|
+
if (response.length > 100000) {
|
|
18
|
+
// Why 100000? What does it represent?
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
setTimeout(callback, 300000); // Why 5 minutes?
|
|
22
|
+
|
|
23
|
+
if (cacheSize > 50) {
|
|
24
|
+
// Why 50? Can this change?
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Problems**:
|
|
29
|
+
|
|
30
|
+
1. **Unclear intent**: What does the number represent? (bytes? tokens? count?)
|
|
31
|
+
2. **Difficult to change**: Must find all occurrences across codebase
|
|
32
|
+
3. **Inconsistency**: Same concept different values (200000 vs 200k tokens)
|
|
33
|
+
4. **No documentation**: Why this value? Can it be tuned?
|
|
34
|
+
5. **Hard to test**: Can't easily test boundary conditions
|
|
35
|
+
|
|
36
|
+
**Engineering Review Score**: Code Quality **7/10** (magic numbers primary
|
|
37
|
+
issue)
|
|
38
|
+
|
|
39
|
+
**Examples**:
|
|
40
|
+
|
|
41
|
+
- Context health thresholds: 100000, 140000, 180000 (50%, 70%, 90% of 200k)
|
|
42
|
+
- Cache limits: 50, 100, 20 (max entries for different caches)
|
|
43
|
+
- Timeouts: 300000, 30000, 60000 (5min, 30s, 1min in milliseconds)
|
|
44
|
+
- Retry delays: 1000, 5000, 10000 (1s, 5s, 10s exponential backoff)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Decision
|
|
49
|
+
|
|
50
|
+
We will organize constants **hierarchically by domain** in config files:
|
|
51
|
+
|
|
52
|
+
1. **extension/src/config/**: Domain-specific constant modules
|
|
53
|
+
2. **Named exports**: Descriptive variable names (not just numbers)
|
|
54
|
+
3. **Documentation**: JSDoc explaining what, why, and tunability
|
|
55
|
+
4. **Centralized**: Single source of truth per domain
|
|
56
|
+
5. **Type-safe**: Use TypeScript `const` assertions and enums
|
|
57
|
+
|
|
58
|
+
**File Structure**:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
extension/src/config/
|
|
62
|
+
├── index.ts # Re-exports all constants
|
|
63
|
+
├── context.ts # Context window constants
|
|
64
|
+
├── cache.ts # Cache configuration constants
|
|
65
|
+
├── timeouts.ts # Timeout and retry constants
|
|
66
|
+
├── limits.ts # General size/count limits
|
|
67
|
+
└── paths.ts # Default file paths
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Example - context.ts**:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
/**
|
|
74
|
+
* Context Window Configuration
|
|
75
|
+
*
|
|
76
|
+
* Gofer targets Claude models with 200k token context windows.
|
|
77
|
+
* These thresholds define when to warn users about context pressure.
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
/** Maximum context window size (tokens) - Claude Sonnet/Opus 4 */
|
|
81
|
+
export const MAX_CONTEXT_TOKENS = 200_000;
|
|
82
|
+
|
|
83
|
+
/** Healthy usage threshold (50% of max) - continue normally */
|
|
84
|
+
export const CONTEXT_HEALTHY_THRESHOLD = 100_000;
|
|
85
|
+
|
|
86
|
+
/** Warning usage threshold (70% of max) - recommend compaction */
|
|
87
|
+
export const CONTEXT_WARNING_THRESHOLD = 140_000;
|
|
88
|
+
|
|
89
|
+
/** Critical usage threshold (90% of max) - must save and restart */
|
|
90
|
+
export const CONTEXT_CRITICAL_THRESHOLD = 180_000;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Estimated average tokens per character
|
|
94
|
+
*
|
|
95
|
+
* Used for rough token estimation. More accurate estimation requires
|
|
96
|
+
* tiktoken library (~200KB bundle size).
|
|
97
|
+
*/
|
|
98
|
+
export const TOKENS_PER_CHAR = 0.25; // 1 token ~= 4 characters
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Rationale
|
|
104
|
+
|
|
105
|
+
### Why Hierarchical Organization?
|
|
106
|
+
|
|
107
|
+
1. **Discoverability**: Related constants grouped together
|
|
108
|
+
2. **Maintainability**: Change cache limits in one place (cache.ts)
|
|
109
|
+
3. **Testability**: Import specific config module in tests
|
|
110
|
+
4. **Scalability**: Add new domains without cluttering single file
|
|
111
|
+
5. **Ownership**: Clear which team/feature owns which constants
|
|
112
|
+
|
|
113
|
+
### Why Named Exports (Not Default)?
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// ✅ Named exports - explicit, tree-shakeable
|
|
117
|
+
export const MAX_RETRIES = 3;
|
|
118
|
+
|
|
119
|
+
// ❌ Default export - implicit, harder to tree-shake
|
|
120
|
+
export default { MAX_RETRIES: 3 };
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Advantages:
|
|
124
|
+
|
|
125
|
+
- **Tree-shaking**: Bundler can eliminate unused constants
|
|
126
|
+
- **Explicit imports**: `import { MAX_RETRIES }` vs. `import config`
|
|
127
|
+
- **IDE support**: Autocomplete suggests available constants
|
|
128
|
+
- **Refactoring**: Rename refactors work better
|
|
129
|
+
|
|
130
|
+
### Why JSDoc Documentation?
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
/**
|
|
134
|
+
* Maximum cache entries before LRU eviction
|
|
135
|
+
*
|
|
136
|
+
* Tuning: Increase if cache hit rate <80%
|
|
137
|
+
* Trade-off: Higher limit = more memory usage
|
|
138
|
+
*/
|
|
139
|
+
export const MAX_CACHE_ENTRIES = 50;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Benefits:
|
|
143
|
+
|
|
144
|
+
- **Explains intent**: Why this value chosen
|
|
145
|
+
- **Tuning guidance**: How to adjust for different workloads
|
|
146
|
+
- **Trade-offs**: What changes if increased/decreased
|
|
147
|
+
- **IDE tooltips**: Hover shows documentation
|
|
148
|
+
|
|
149
|
+
### Why TypeScript const Assertions?
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
// ✅ const assertion - immutable, literal type
|
|
153
|
+
export const CACHE_LIMITS = {
|
|
154
|
+
spec: 50,
|
|
155
|
+
memory: 100,
|
|
156
|
+
research: 20,
|
|
157
|
+
} as const;
|
|
158
|
+
|
|
159
|
+
// ❌ mutable object - can be modified at runtime
|
|
160
|
+
export const CACHE_LIMITS = {
|
|
161
|
+
spec: 50,
|
|
162
|
+
memory: 100,
|
|
163
|
+
research: 20,
|
|
164
|
+
};
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Benefits:
|
|
168
|
+
|
|
169
|
+
- **Immutability**: Prevents accidental modification
|
|
170
|
+
- **Literal types**: `CACHE_LIMITS.spec` is `50` (not `number`)
|
|
171
|
+
- **Type narrowing**: Enables better type inference
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Alternatives Considered
|
|
176
|
+
|
|
177
|
+
### 1. Single Constants File
|
|
178
|
+
|
|
179
|
+
**Approach**: All constants in `extension/src/config/constants.ts`.
|
|
180
|
+
|
|
181
|
+
**Pros**:
|
|
182
|
+
|
|
183
|
+
- ✅ Simple - one place to look
|
|
184
|
+
- ✅ Easy to import - single import statement
|
|
185
|
+
- ✅ No directory structure needed
|
|
186
|
+
|
|
187
|
+
**Cons**:
|
|
188
|
+
|
|
189
|
+
- ❌ Becomes God file (100+ constants, hard to navigate)
|
|
190
|
+
- ❌ No logical grouping (cache, context, timeouts all mixed)
|
|
191
|
+
- ❌ Merge conflicts (everyone edits same file)
|
|
192
|
+
- ❌ Difficult to test (import everything or nothing)
|
|
193
|
+
|
|
194
|
+
**Verdict**: Doesn't scale - will become unmanageable.
|
|
195
|
+
|
|
196
|
+
### 2. Per-Module Constants
|
|
197
|
+
|
|
198
|
+
**Approach**: Constants defined in same file as usage.
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// extension/src/services/SpecCache.ts
|
|
202
|
+
const MAX_ENTRIES = 50; // Local constant
|
|
203
|
+
|
|
204
|
+
export class SpecCache {
|
|
205
|
+
/* ... */
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Pros**:
|
|
210
|
+
|
|
211
|
+
- ✅ Locality - constant near usage
|
|
212
|
+
- ✅ No import needed
|
|
213
|
+
- ✅ Scoped - not globally visible
|
|
214
|
+
|
|
215
|
+
**Cons**:
|
|
216
|
+
|
|
217
|
+
- ❌ Duplication - same constant redefined in multiple places
|
|
218
|
+
- ❌ Inconsistency - MAX_ENTRIES differs across modules
|
|
219
|
+
- ❌ Hard to find - must search codebase for all occurrences
|
|
220
|
+
- ❌ Difficult to test - can't override for testing
|
|
221
|
+
|
|
222
|
+
**Verdict**: Loses centralization benefits - not recommended.
|
|
223
|
+
|
|
224
|
+
### 3. Environment Variables
|
|
225
|
+
|
|
226
|
+
**Approach**: Load constants from `.env` file at runtime.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# .env
|
|
230
|
+
MAX_CONTEXT_TOKENS=200000
|
|
231
|
+
CACHE_LIMIT_SPEC=50
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Pros**:
|
|
235
|
+
|
|
236
|
+
- ✅ Runtime configuration (no rebuild to change)
|
|
237
|
+
- ✅ Environment-specific (dev vs. prod)
|
|
238
|
+
- ✅ Secrets support (API keys, tokens)
|
|
239
|
+
|
|
240
|
+
**Cons**:
|
|
241
|
+
|
|
242
|
+
- ❌ Type safety - all values are strings (need parsing)
|
|
243
|
+
- ❌ Validation - must check/convert at runtime
|
|
244
|
+
- ❌ Default values - need fallbacks if not set
|
|
245
|
+
- ❌ Deployment complexity - must manage .env files
|
|
246
|
+
- ❌ Not needed - extension config is compile-time
|
|
247
|
+
|
|
248
|
+
**Verdict**: Over-engineered for constants - use for secrets only.
|
|
249
|
+
|
|
250
|
+
### 4. JSON Configuration Files
|
|
251
|
+
|
|
252
|
+
**Approach**: Store constants in `config.json`.
|
|
253
|
+
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"context": {
|
|
257
|
+
"maxTokens": 200000,
|
|
258
|
+
"warningThreshold": 140000
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Pros**:
|
|
264
|
+
|
|
265
|
+
- ✅ Human-readable
|
|
266
|
+
- ✅ No code changes to modify
|
|
267
|
+
- ✅ Can be validated with JSON schema
|
|
268
|
+
|
|
269
|
+
**Cons**:
|
|
270
|
+
|
|
271
|
+
- ❌ No type safety (must validate at runtime)
|
|
272
|
+
- ❌ No JSDoc (documentation separate from values)
|
|
273
|
+
- ❌ Extra I/O (must read file)
|
|
274
|
+
- ❌ Not idiomatic TypeScript
|
|
275
|
+
|
|
276
|
+
**Verdict**: JSON better for user-facing config, not code constants.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Consequences
|
|
281
|
+
|
|
282
|
+
### Positive
|
|
283
|
+
|
|
284
|
+
1. **Clarity**: Named constants document intent (MAX_RETRIES vs. 3)
|
|
285
|
+
2. **Consistency**: Single source of truth (no duplicate definitions)
|
|
286
|
+
3. **Maintainability**: Change value in one place, propagates everywhere
|
|
287
|
+
4. **Testability**: Mock config module to test boundary conditions
|
|
288
|
+
5. **Discoverability**: IDE autocomplete shows available constants
|
|
289
|
+
6. **Documentation**: JSDoc explains rationale and tuning guidance
|
|
290
|
+
|
|
291
|
+
### Negative
|
|
292
|
+
|
|
293
|
+
1. **Import overhead**: Must import constants explicitly
|
|
294
|
+
2. **Indirection**: One more hop to find value (navigate to config file)
|
|
295
|
+
3. **Verbosity**: `MAX_CACHE_ENTRIES` longer than `50`
|
|
296
|
+
|
|
297
|
+
### Neutral
|
|
298
|
+
|
|
299
|
+
1. **File count**: +5 config files (minimal)
|
|
300
|
+
2. **Bundle size**: No impact (constants tree-shaken if unused)
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Implementation Guidelines
|
|
305
|
+
|
|
306
|
+
### Constant Naming Conventions
|
|
307
|
+
|
|
308
|
+
- **UPPER_SNAKE_CASE**: For primitive constants
|
|
309
|
+
(`MAX_RETRIES`, `DEFAULT_TIMEOUT_MS`)
|
|
310
|
+
- **PascalCase**: For complex objects/enums (`CacheLimits`, `RetryStrategy`)
|
|
311
|
+
- **Descriptive**: Include unit in name (`TIMEOUT_MS` not `TIMEOUT`)
|
|
312
|
+
|
|
313
|
+
### Organization Rules
|
|
314
|
+
|
|
315
|
+
**context.ts**:
|
|
316
|
+
|
|
317
|
+
- Context window sizes, thresholds, token estimations
|
|
318
|
+
- Example: `MAX_CONTEXT_TOKENS`, `CONTEXT_WARNING_THRESHOLD`
|
|
319
|
+
|
|
320
|
+
**cache.ts**:
|
|
321
|
+
|
|
322
|
+
- Cache entry limits, TTL values, token budgets
|
|
323
|
+
- Example: `MAX_CACHE_ENTRIES`, `CACHE_TTL_MS`
|
|
324
|
+
|
|
325
|
+
**timeouts.ts**:
|
|
326
|
+
|
|
327
|
+
- Operation timeouts, retry delays, polling intervals
|
|
328
|
+
- Example: `DEFAULT_TIMEOUT_MS`, `RETRY_DELAYS_MS`
|
|
329
|
+
|
|
330
|
+
**limits.ts**:
|
|
331
|
+
|
|
332
|
+
- General size/count limits not fitting other categories
|
|
333
|
+
- Example: `MAX_FILE_SIZE_BYTES`, `MAX_ARRAY_LENGTH`
|
|
334
|
+
|
|
335
|
+
**paths.ts**:
|
|
336
|
+
|
|
337
|
+
- Default file paths, directory names
|
|
338
|
+
- Example: `DEFAULT_SPECIFY_PATH`, `MEMORY_DIR_NAME`
|
|
339
|
+
|
|
340
|
+
### Documentation Template
|
|
341
|
+
|
|
342
|
+
```typescript
|
|
343
|
+
/**
|
|
344
|
+
* [Brief description of what this constant represents]
|
|
345
|
+
*
|
|
346
|
+
* [Longer explanation if needed: why this value, how it was chosen]
|
|
347
|
+
*
|
|
348
|
+
* Tuning: [How to adjust for different scenarios]
|
|
349
|
+
* Trade-off: [What changes if increased/decreased]
|
|
350
|
+
* Related: [Other constants affected by changing this]
|
|
351
|
+
*/
|
|
352
|
+
export const CONSTANT_NAME = value;
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Example - cache.ts
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
/**
|
|
359
|
+
* Cache Configuration Constants
|
|
360
|
+
*/
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Maximum entries in SpecCache before LRU eviction
|
|
364
|
+
*
|
|
365
|
+
* Workspaces typically have <50 specs. Higher limit improves hit rate
|
|
366
|
+
* but increases memory usage (~1MB per 10 specs).
|
|
367
|
+
*
|
|
368
|
+
* Tuning: Increase if cache hit rate <80% (check logs)
|
|
369
|
+
* Trade-off: +10 entries ~= +1MB memory
|
|
370
|
+
* Related: SPEC_CACHE_TTL_MS, SPEC_CACHE_TOKEN_BUDGET
|
|
371
|
+
*/
|
|
372
|
+
export const SPEC_CACHE_MAX_ENTRIES = 50;
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Time-to-live for SpecCache entries (milliseconds)
|
|
376
|
+
*
|
|
377
|
+
* Spec files change infrequently, so 5 minutes balances freshness
|
|
378
|
+
* with cache hit rate.
|
|
379
|
+
*
|
|
380
|
+
* Tuning: Decrease if specs change frequently (rapid iteration)
|
|
381
|
+
* Trade-off: Lower TTL = more disk reads, higher TTL = staler data
|
|
382
|
+
*/
|
|
383
|
+
export const SPEC_CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Maximum tokens in SpecCache before eviction
|
|
387
|
+
*
|
|
388
|
+
* Reserves ~25% of context window for spec content. Large specs
|
|
389
|
+
* (10k tokens) won't overflow context.
|
|
390
|
+
*
|
|
391
|
+
* Tuning: Increase if loading many large specs simultaneously
|
|
392
|
+
* Trade-off: Higher budget = less room for other context (memories, hints)
|
|
393
|
+
* Related: MAX_CONTEXT_TOKENS
|
|
394
|
+
*/
|
|
395
|
+
export const SPEC_CACHE_TOKEN_BUDGET = 50_000;
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Implementation Results
|
|
401
|
+
|
|
402
|
+
### Phase 0: Magic Number Replacement (T001-T008)
|
|
403
|
+
|
|
404
|
+
**T001-T003**: ✅ Create config files
|
|
405
|
+
|
|
406
|
+
- Created extension/src/config/context.ts
|
|
407
|
+
- Created extension/src/config/cache.ts
|
|
408
|
+
- Created extension/src/config/index.ts (barrel export)
|
|
409
|
+
|
|
410
|
+
**T004**: ✅ Partial - ContextHealthMonitor.ts
|
|
411
|
+
|
|
412
|
+
- Replaced 9 magic numbers with named constants:
|
|
413
|
+
- 100000 → CONTEXT_HEALTHY_THRESHOLD
|
|
414
|
+
- 140000 → CONTEXT_WARNING_THRESHOLD
|
|
415
|
+
- 180000 → CONTEXT_CRITICAL_THRESHOLD
|
|
416
|
+
- 200000 → MAX_CONTEXT_TOKENS
|
|
417
|
+
- Before: `if (tokens > 140000)`
|
|
418
|
+
- After: `if (tokens > CONTEXT_WARNING_THRESHOLD)`
|
|
419
|
+
|
|
420
|
+
**T005-T008**: ❌ Deferred to Phase 3
|
|
421
|
+
|
|
422
|
+
- Remaining magic numbers easier to replace after module extraction
|
|
423
|
+
- Will be addressed when refactoring extracted services
|
|
424
|
+
|
|
425
|
+
**Audit Results**:
|
|
426
|
+
|
|
427
|
+
- Found 47 magic numbers total
|
|
428
|
+
- Replaced 9 in Phase 0 (19%)
|
|
429
|
+
- Deferred 38 to Phase 3 (81%)
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Testing Strategy
|
|
434
|
+
|
|
435
|
+
### Unit Tests
|
|
436
|
+
|
|
437
|
+
```typescript
|
|
438
|
+
import { MAX_CACHE_ENTRIES, CACHE_TTL_MS } from '../config/cache';
|
|
439
|
+
|
|
440
|
+
it('should evict when cache exceeds MAX_CACHE_ENTRIES', () => {
|
|
441
|
+
const cache = new Cache({ maxEntries: MAX_CACHE_ENTRIES });
|
|
442
|
+
|
|
443
|
+
for (let i = 0; i < MAX_CACHE_ENTRIES + 1; i++) {
|
|
444
|
+
cache.set(`key${i}`, `value${i}`);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
expect(cache.size).toBe(MAX_CACHE_ENTRIES); // Evicted one
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
it('should allow overriding config for testing', () => {
|
|
451
|
+
vi.mock('../config/cache', () => ({
|
|
452
|
+
MAX_CACHE_ENTRIES: 2, // Override for test
|
|
453
|
+
}));
|
|
454
|
+
|
|
455
|
+
const cache = new Cache({ maxEntries: MAX_CACHE_ENTRIES });
|
|
456
|
+
// Test with smaller limit
|
|
457
|
+
});
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Integration Tests
|
|
461
|
+
|
|
462
|
+
- Verify config values actually used (not hardcoded elsewhere)
|
|
463
|
+
- Test boundary conditions (cache at limit, context at threshold)
|
|
464
|
+
- Validate documentation accuracy (tuning guidance works)
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## Future Enhancements
|
|
469
|
+
|
|
470
|
+
### Runtime Configuration
|
|
471
|
+
|
|
472
|
+
For **user-tunable** constants (not development constants):
|
|
473
|
+
|
|
474
|
+
- Expose via VSCode settings (`gofer.cache.maxEntries`)
|
|
475
|
+
- Load from settings, fall back to config defaults
|
|
476
|
+
- Validate user inputs (prevent invalid values)
|
|
477
|
+
|
|
478
|
+
Example:
|
|
479
|
+
|
|
480
|
+
```typescript
|
|
481
|
+
export function getCacheMaxEntries(): number {
|
|
482
|
+
const userValue = vscode.workspace
|
|
483
|
+
.getConfiguration('gofer')
|
|
484
|
+
.get<number>('cache.maxEntries');
|
|
485
|
+
return userValue ?? SPEC_CACHE_MAX_ENTRIES; // Default if not set
|
|
486
|
+
}
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
### Configuration Validation
|
|
490
|
+
|
|
491
|
+
- Schema validation on startup (catch invalid values early)
|
|
492
|
+
- Warn if values outside recommended ranges
|
|
493
|
+
- Log configuration snapshot for debugging
|
|
494
|
+
|
|
495
|
+
### Documentation Generation
|
|
496
|
+
|
|
497
|
+
- Auto-generate config reference doc from JSDoc comments
|
|
498
|
+
- Include in extension README or docs site
|
|
499
|
+
- Keep documentation in sync with code
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## References
|
|
504
|
+
|
|
505
|
+
- [Engineering Review](../../specs/001-gofer-engineering-remediation/ENGINEERING_REVIEW.md) -
|
|
506
|
+
Code Quality section
|
|
507
|
+
- [Phase 0 Tasks](../../specs/001-gofer-engineering-remediation/tasks.md#phase-0-prerequisites-magic-numbers-p0---critical) -
|
|
508
|
+
T001-T008
|
|
509
|
+
- [TypeScript const assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions)
|
|
510
|
+
- [Magic Numbers Code Smell](https://refactoring.guru/smells/magic-numbers)
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Approval
|
|
515
|
+
|
|
516
|
+
- **Approved by**: Engineering Team
|
|
517
|
+
- **Date**: 2026-02-24
|
|
518
|
+
- **Implementation**: Phase 0 (T001-T004 complete, T005-T008 deferred)
|
|
519
|
+
- **Status**: Partial implementation, remaining magic numbers deferred to Phase
|
|
520
|
+
3
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Architectural Decision Records (ADRs)
|
|
2
|
+
|
|
3
|
+
This directory contains Architectural Decision Records (ADRs) that document
|
|
4
|
+
significant design decisions made during feature implementation.
|
|
5
|
+
|
|
6
|
+
## Purpose
|
|
7
|
+
|
|
8
|
+
ADRs capture the context, decision, and consequences of architectural choices.
|
|
9
|
+
They serve as:
|
|
10
|
+
|
|
11
|
+
1. **Historical record** - Why decisions were made
|
|
12
|
+
2. **Onboarding resource** - Help new contributors understand the codebase
|
|
13
|
+
3. **Conflict resolution** - Authoritative reference for disputed approaches
|
|
14
|
+
4. **Learning repository** - Avoid repeating past mistakes
|
|
15
|
+
|
|
16
|
+
## File Naming Convention
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
NNN-short-topic-description.md
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Where:
|
|
23
|
+
|
|
24
|
+
- `NNN` is a sequential 3-digit number (001, 002, 003...)
|
|
25
|
+
- `short-topic-description` is a lowercase, hyphenated summary
|
|
26
|
+
|
|
27
|
+
Examples:
|
|
28
|
+
|
|
29
|
+
- `001-authentication-strategy.md`
|
|
30
|
+
- `002-database-migration-approach.md`
|
|
31
|
+
- `003-api-versioning-scheme.md`
|
|
32
|
+
|
|
33
|
+
## Template
|
|
34
|
+
|
|
35
|
+
Each ADR should follow this structure:
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
---
|
|
39
|
+
id: NNN
|
|
40
|
+
title: [Decision Title]
|
|
41
|
+
status: [proposed | accepted | deprecated | superseded]
|
|
42
|
+
date: [ISO date]
|
|
43
|
+
feature: [Feature Name or "project-wide"]
|
|
44
|
+
supersedes: [ID of superseded ADR, if any]
|
|
45
|
+
superseded_by: [ID of new ADR, if this one is superseded]
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
# [Decision Title]
|
|
49
|
+
|
|
50
|
+
## Context
|
|
51
|
+
|
|
52
|
+
[What is the issue that we're seeing that is motivating this decision or
|
|
53
|
+
change?]
|
|
54
|
+
|
|
55
|
+
## Decision
|
|
56
|
+
|
|
57
|
+
[What is the change that we're proposing and/or doing?]
|
|
58
|
+
|
|
59
|
+
## Consequences
|
|
60
|
+
|
|
61
|
+
### Positive
|
|
62
|
+
|
|
63
|
+
- [What becomes easier or possible as a result of this change?]
|
|
64
|
+
|
|
65
|
+
### Negative
|
|
66
|
+
|
|
67
|
+
- [What becomes more difficult or impossible as a result of this change?]
|
|
68
|
+
|
|
69
|
+
## Alternatives Considered
|
|
70
|
+
|
|
71
|
+
1. **[Alternative 1]**
|
|
72
|
+
- Description: [Brief description]
|
|
73
|
+
- Rejected because: [Reason]
|
|
74
|
+
|
|
75
|
+
2. **[Alternative 2]**
|
|
76
|
+
- Description: [Brief description]
|
|
77
|
+
- Rejected because: [Reason]
|
|
78
|
+
|
|
79
|
+
## References
|
|
80
|
+
|
|
81
|
+
- [Links to related documents, issues, or discussions]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Status Values
|
|
85
|
+
|
|
86
|
+
| Status | Meaning |
|
|
87
|
+
| ------------ | ---------------------------------------------- |
|
|
88
|
+
| `proposed` | Under discussion, not yet accepted |
|
|
89
|
+
| `accepted` | Decision is in effect |
|
|
90
|
+
| `deprecated` | No longer recommended, but may still be in use |
|
|
91
|
+
| `superseded` | Replaced by a newer decision |
|
|
92
|
+
|
|
93
|
+
## When to Create an ADR
|
|
94
|
+
|
|
95
|
+
Create an ADR when:
|
|
96
|
+
|
|
97
|
+
- Choosing between multiple valid architectural approaches
|
|
98
|
+
- Making a decision that affects multiple components or features
|
|
99
|
+
- Establishing a new pattern or convention for the codebase
|
|
100
|
+
- Introducing a new technology or dependency
|
|
101
|
+
- Changing an existing architectural decision
|
|
102
|
+
- Making a tradeoff with significant consequences
|
|
103
|
+
|
|
104
|
+
Do NOT create an ADR for:
|
|
105
|
+
|
|
106
|
+
- Trivial implementation details
|
|
107
|
+
- Feature-specific decisions (document in feature's research.md instead)
|
|
108
|
+
- Temporary workarounds (use inline comments)
|
|
109
|
+
- Decisions already covered by existing conventions in CLAUDE.md
|
|
110
|
+
|
|
111
|
+
## Reviewing Decisions
|
|
112
|
+
|
|
113
|
+
Before implementing a feature, review existing ADRs to ensure:
|
|
114
|
+
|
|
115
|
+
1. Your approach aligns with accepted decisions
|
|
116
|
+
2. You're not unknowingly contradicting established patterns
|
|
117
|
+
3. Any conflicts are explicitly acknowledged and justified
|
|
118
|
+
|
|
119
|
+
## Updating Decisions
|
|
120
|
+
|
|
121
|
+
When a decision needs to change:
|
|
122
|
+
|
|
123
|
+
1. Do NOT modify the original ADR
|
|
124
|
+
2. Create a new ADR with status `accepted`
|
|
125
|
+
3. Update the old ADR's status to `superseded`
|
|
126
|
+
4. Add `superseded_by` reference to the old ADR
|
|
127
|
+
5. Add `supersedes` reference to the new ADR
|
|
128
|
+
|
|
129
|
+
This preserves the historical record and reasoning.
|