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,190 @@
|
|
|
1
|
+
# ADR-001: Dependency Injection Framework
|
|
2
|
+
|
|
3
|
+
**Status**: Accepted
|
|
4
|
+
**Date**: 2026-02-24
|
|
5
|
+
**Deciders**: Engineering Team
|
|
6
|
+
**Phase**: Phase 1 - Dependency Injection Infrastructure
|
|
7
|
+
**Related Tasks**: T009, T010
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
The Gofer extension suffered from pervasive global state and tight coupling:
|
|
14
|
+
|
|
15
|
+
- **God objects**: `extension.ts` (1200 LOC) and `goferMigrator.ts` (2499 LOC)
|
|
16
|
+
with excessive responsibilities
|
|
17
|
+
- **Global mutable state**: Services stored in module-level variables, making
|
|
18
|
+
testing difficult
|
|
19
|
+
- **Tight coupling**: Direct instantiation with `new` throughout the codebase
|
|
20
|
+
- **Hidden dependencies**: Service dependencies not explicit in constructors
|
|
21
|
+
- **Testing challenges**: Difficult to mock dependencies or reset state between
|
|
22
|
+
tests
|
|
23
|
+
|
|
24
|
+
These issues led to:
|
|
25
|
+
|
|
26
|
+
- Poor testability (mocking required global state manipulation)
|
|
27
|
+
- Fragile refactoring (changes rippled unpredictably)
|
|
28
|
+
- Concurrency bugs (shared mutable state without coordination)
|
|
29
|
+
- Difficulty reasoning about service lifecycles
|
|
30
|
+
|
|
31
|
+
We needed a dependency injection framework to:
|
|
32
|
+
|
|
33
|
+
1. Make dependencies explicit via constructor injection
|
|
34
|
+
2. Enable singleton lifecycle management
|
|
35
|
+
3. Facilitate testing through dependency mocking
|
|
36
|
+
4. Support incremental refactoring without breaking existing code
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Decision
|
|
41
|
+
|
|
42
|
+
We will use **TSyringe** as our dependency injection container.
|
|
43
|
+
|
|
44
|
+
**Implementation**:
|
|
45
|
+
|
|
46
|
+
- Services decorated with `@injectable()`
|
|
47
|
+
- Container configured in `extension/src/di/container.ts`
|
|
48
|
+
- Singletons registered in `registerServices()` function
|
|
49
|
+
- Container resolved via `getContainer()` accessor
|
|
50
|
+
- Test isolation via `resetContainer()` utility
|
|
51
|
+
|
|
52
|
+
**Example**:
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// Service definition
|
|
56
|
+
@injectable()
|
|
57
|
+
export class Logger {
|
|
58
|
+
public info(context: string, message: string): void {
|
|
59
|
+
/* ... */
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Container registration
|
|
64
|
+
import { container } from 'tsyringe';
|
|
65
|
+
container.registerSingleton(Logger);
|
|
66
|
+
|
|
67
|
+
// Service resolution
|
|
68
|
+
const logger = container.resolve(Logger);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Rationale
|
|
74
|
+
|
|
75
|
+
### Why TSyringe?
|
|
76
|
+
|
|
77
|
+
1. **Lightweight**: Minimal API surface (~5 core methods)
|
|
78
|
+
2. **TypeScript-native**: Built specifically for TypeScript with strong typing
|
|
79
|
+
3. **Zero-config**: Works out-of-the-box with standard decorators
|
|
80
|
+
4. **Microsoft-backed**: Official Microsoft project, well-maintained
|
|
81
|
+
5. **VSCode proven**: Used successfully in other VSCode extensions
|
|
82
|
+
6. **Incremental adoption**: Can adopt gradually without rewriting everything
|
|
83
|
+
|
|
84
|
+
### Why not alternatives?
|
|
85
|
+
|
|
86
|
+
**InversifyJS**:
|
|
87
|
+
|
|
88
|
+
- ❌ Heavier weight (~3x larger bundle size)
|
|
89
|
+
- ❌ More complex API (requires binding syntax, custom decorators)
|
|
90
|
+
- ❌ Steeper learning curve for team
|
|
91
|
+
- ✅ More features (multi-injection, contextual bindings)
|
|
92
|
+
- **Verdict**: Over-engineered for our needs
|
|
93
|
+
|
|
94
|
+
**Manual Factory Pattern**:
|
|
95
|
+
|
|
96
|
+
- ✅ No external dependencies
|
|
97
|
+
- ❌ Verbose boilerplate (factory functions for every service)
|
|
98
|
+
- ❌ Manual lifecycle management (no automatic singletons)
|
|
99
|
+
- ❌ No metadata-based injection (lose decorator benefits)
|
|
100
|
+
- **Verdict**: Too much manual work
|
|
101
|
+
|
|
102
|
+
**TypeDI**:
|
|
103
|
+
|
|
104
|
+
- ✅ Similar API to TSyringe
|
|
105
|
+
- ❌ Less active maintenance (last major release 2019)
|
|
106
|
+
- ❌ Smaller community
|
|
107
|
+
- ❌ Not Microsoft-backed
|
|
108
|
+
- **Verdict**: Less confidence in long-term support
|
|
109
|
+
|
|
110
|
+
**No DI Framework (status quo)**:
|
|
111
|
+
|
|
112
|
+
- ✅ No new dependencies
|
|
113
|
+
- ❌ Continues existing problems (global state, tight coupling)
|
|
114
|
+
- ❌ Blocks all other refactoring efforts
|
|
115
|
+
- **Verdict**: Unacceptable - problems only worsen over time
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Consequences
|
|
120
|
+
|
|
121
|
+
### Positive
|
|
122
|
+
|
|
123
|
+
1. **Explicit dependencies**: Constructor signatures now document dependencies
|
|
124
|
+
clearly
|
|
125
|
+
2. **Testability improved**: Can inject mocks via `container.register()` in
|
|
126
|
+
tests
|
|
127
|
+
3. **Singleton management**: Container handles instance lifecycle automatically
|
|
128
|
+
4. **Incremental refactoring**: Can migrate services one at a time
|
|
129
|
+
5. **Type safety**: TypeScript enforces dependency types at compile-time
|
|
130
|
+
6. **Reduced coupling**: Services depend on abstractions, not concrete
|
|
131
|
+
implementations
|
|
132
|
+
|
|
133
|
+
### Negative
|
|
134
|
+
|
|
135
|
+
1. **Build configuration**: Requires `experimentalDecorators` and
|
|
136
|
+
`emitDecoratorMetadata` in tsconfig.json
|
|
137
|
+
2. **Runtime dependency**: Adds `tsyringe` (~50KB) and `reflect-metadata`
|
|
138
|
+
(~20KB) to bundle
|
|
139
|
+
3. **Learning curve**: Team must understand DI concepts and TSyringe API
|
|
140
|
+
4. **Decorator overhead**: Metadata reflection adds small runtime cost
|
|
141
|
+
5. **Breaking change risk**: Migrating existing services requires careful
|
|
142
|
+
coordination
|
|
143
|
+
|
|
144
|
+
### Neutral
|
|
145
|
+
|
|
146
|
+
1. **Import overhead**: Must import `reflect-metadata` at extension entry point
|
|
147
|
+
2. **Testing pattern**: Tests must call `resetContainer()` for isolation
|
|
148
|
+
3. **Resolution syntax**: `container.resolve(Service)` instead of `new Service()`
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Implementation Notes
|
|
153
|
+
|
|
154
|
+
### Phase 1 (Completed)
|
|
155
|
+
|
|
156
|
+
- ✅ Installed `tsyringe` and `reflect-metadata`
|
|
157
|
+
- ✅ Enabled decorator support in tsconfig.json
|
|
158
|
+
- ✅ Created `extension/src/di/container.ts` with registration functions
|
|
159
|
+
- ✅ Registered core services: Logger, DisposalService, EventHandlers,
|
|
160
|
+
InitializationService, CommandRegistry, StateManager
|
|
161
|
+
|
|
162
|
+
### Phase 4 (Completed)
|
|
163
|
+
|
|
164
|
+
- ✅ Registered migration services: VersionDetector, UpgradeService,
|
|
165
|
+
ResourceSyncer, PathMigrator
|
|
166
|
+
- ✅ Migrated goferMigrator.ts to use DI (reduced from 2499 LOC to 467 LOC)
|
|
167
|
+
|
|
168
|
+
### Future Phases
|
|
169
|
+
|
|
170
|
+
- **Phase 2-3**: Register cache services (SpecCache, MemoryCache) when extracted
|
|
171
|
+
- **Testing**: Create helper utilities for container mocking in test setup
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## References
|
|
176
|
+
|
|
177
|
+
- [TSyringe GitHub](https://github.com/microsoft/tsyringe)
|
|
178
|
+
- [TSyringe Documentation](https://github.com/microsoft/tsyringe#readme)
|
|
179
|
+
- [Engineering Review](../../specs/001-gofer-engineering-remediation/ENGINEERING_REVIEW.md) -
|
|
180
|
+
Architecture section
|
|
181
|
+
- [Phase 1 Tasks](../../specs/001-gofer-engineering-remediation/tasks.md#phase-1-dependency-injection-infrastructure-p1---high) -
|
|
182
|
+
T009, T010
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Approval
|
|
187
|
+
|
|
188
|
+
- **Approved by**: Engineering Team
|
|
189
|
+
- **Date**: 2026-02-24
|
|
190
|
+
- **Implementation**: Phase 1 (T009-T010), Phase 4 (T026-T030)
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# ADR-002: Module Extraction Strategy
|
|
2
|
+
|
|
3
|
+
**Status**: Accepted
|
|
4
|
+
**Date**: 2026-02-24
|
|
5
|
+
**Deciders**: Engineering Team
|
|
6
|
+
**Phase**: Phase 3-4 - God Object Refactoring
|
|
7
|
+
**Related Tasks**: T020-T025 (extension.ts), T026-T030 (goferMigrator.ts)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
The codebase had two severe God object anti-patterns:
|
|
14
|
+
|
|
15
|
+
1. **extension.ts**: 1200 LOC monolithic activation function
|
|
16
|
+
- Mixed concerns: initialization, event handling, command registration,
|
|
17
|
+
disposal
|
|
18
|
+
- Dense nested callbacks and promise chains
|
|
19
|
+
- Difficult to test individual responsibilities
|
|
20
|
+
- High cognitive load for maintenance
|
|
21
|
+
|
|
22
|
+
2. **goferMigrator.ts**: 2499 LOC migration orchestrator
|
|
23
|
+
- 30+ public methods doing unrelated tasks
|
|
24
|
+
- Mixed concerns: version detection, resource syncing, path migration,
|
|
25
|
+
upgrade orchestration
|
|
26
|
+
- No separation between coordination logic and implementation details
|
|
27
|
+
- Impossible to test individual migration steps
|
|
28
|
+
|
|
29
|
+
These God objects violated Single Responsibility Principle and blocked:
|
|
30
|
+
|
|
31
|
+
- Unit testing (too many responsibilities to mock)
|
|
32
|
+
- Feature velocity (changes in one area affected unrelated code)
|
|
33
|
+
- Parallel development (merge conflicts from touching same file)
|
|
34
|
+
- Onboarding (understanding 1000+ LOC functions overwhelming)
|
|
35
|
+
|
|
36
|
+
**Engineering Review Scores**:
|
|
37
|
+
|
|
38
|
+
- Architecture & Design: **7/10** (God objects primary issue)
|
|
39
|
+
- Code Quality: **7/10** (complexity from monolithic structure)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Decision
|
|
44
|
+
|
|
45
|
+
We will use **phased extraction with facade pattern**:
|
|
46
|
+
|
|
47
|
+
1. **Extract focused services** from God objects (<600 LOC each)
|
|
48
|
+
2. **Keep facades** as orchestrators (preserve public API)
|
|
49
|
+
3. **Migrate incrementally** (service by service, not big bang rewrite)
|
|
50
|
+
4. **Use DI container** for service composition
|
|
51
|
+
5. **Maintain backward compatibility** (no breaking API changes)
|
|
52
|
+
|
|
53
|
+
**Implementation**:
|
|
54
|
+
|
|
55
|
+
### Phase 3: extension.ts Extraction (T020-T025)
|
|
56
|
+
|
|
57
|
+
- T020: DisposalService (disposal logic)
|
|
58
|
+
- T021: EventHandlers (workspace events)
|
|
59
|
+
- T022: InitializationService (workspace initialization)
|
|
60
|
+
- T023: CommandRegistry (command registration)
|
|
61
|
+
- T024: Refactor extension.ts as orchestrator
|
|
62
|
+
|
|
63
|
+
Result: extension.ts 1200 LOC → ~800 LOC (33% reduction)
|
|
64
|
+
|
|
65
|
+
### Phase 4: goferMigrator.ts Extraction (T026-T030)
|
|
66
|
+
|
|
67
|
+
- T026: VersionDetector (247 LOC) - format detection, version comparison
|
|
68
|
+
- T027: UpgradeService (437 LOC) - upgrade orchestration with progress
|
|
69
|
+
- T028: ResourceSyncer (496 LOC) - file/resource synchronization
|
|
70
|
+
- T029: PathMigrator (332 LOC) - path reference migration
|
|
71
|
+
- T030: Refactor goferMigrator.ts as facade
|
|
72
|
+
|
|
73
|
+
Result: goferMigrator.ts 2499 LOC → 467 LOC (81% reduction)
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Rationale
|
|
78
|
+
|
|
79
|
+
### Why Phased Extraction?
|
|
80
|
+
|
|
81
|
+
1. **Risk mitigation**: Each service can be tested independently before
|
|
82
|
+
integration
|
|
83
|
+
2. **Incremental progress**: Show progress without waiting for complete rewrite
|
|
84
|
+
3. **Easier review**: Small PRs (200-500 LOC) vs. massive rewrite (2000+ LOC)
|
|
85
|
+
4. **Maintain stability**: Extension keeps working throughout refactoring
|
|
86
|
+
5. **Learn and adapt**: Discover better patterns as we extract
|
|
87
|
+
|
|
88
|
+
### Why Facade Pattern?
|
|
89
|
+
|
|
90
|
+
1. **Backward compatibility**: Existing callers see same API
|
|
91
|
+
2. **Gradual migration**: Callers can migrate to services when ready
|
|
92
|
+
3. **Clear boundary**: Facade shows public API, services are implementation
|
|
93
|
+
details
|
|
94
|
+
4. **Simplifies testing**: Mock facades easily, test services in isolation
|
|
95
|
+
|
|
96
|
+
### Why Service LOC Limits?
|
|
97
|
+
|
|
98
|
+
- **<600 LOC per service**: Fits on ~2 screens, easier to comprehend
|
|
99
|
+
- **Forces focus**: Service must have single, clear responsibility
|
|
100
|
+
- **Prevents regression**: Service can't grow back into God object
|
|
101
|
+
- **Code review friendly**: Reviewers can understand full service in one sitting
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Alternatives Considered
|
|
106
|
+
|
|
107
|
+
### 1. Big Bang Rewrite
|
|
108
|
+
|
|
109
|
+
**Approach**: Rewrite entire extension from scratch in new architecture.
|
|
110
|
+
|
|
111
|
+
**Pros**:
|
|
112
|
+
|
|
113
|
+
- ✅ Perfect architecture from day one
|
|
114
|
+
- ✅ No legacy baggage or compromises
|
|
115
|
+
- ✅ Clean slate for naming, patterns, conventions
|
|
116
|
+
|
|
117
|
+
**Cons**:
|
|
118
|
+
|
|
119
|
+
- ❌ Months of development with no shipped features
|
|
120
|
+
- ❌ High risk (might miss edge cases current code handles)
|
|
121
|
+
- ❌ Difficult to test (can't compare behavior to production)
|
|
122
|
+
- ❌ Merge conflicts if features land during rewrite
|
|
123
|
+
- ❌ Loses institutional knowledge embedded in existing code
|
|
124
|
+
|
|
125
|
+
**Verdict**: Too risky for production extension with active users.
|
|
126
|
+
|
|
127
|
+
### 2. Leave As-Is
|
|
128
|
+
|
|
129
|
+
**Approach**: Keep God objects, address issues with linting/documentation.
|
|
130
|
+
|
|
131
|
+
**Pros**:
|
|
132
|
+
|
|
133
|
+
- ✅ Zero refactoring effort
|
|
134
|
+
- ✅ No risk of introducing bugs
|
|
135
|
+
- ✅ Team already familiar with code
|
|
136
|
+
|
|
137
|
+
**Cons**:
|
|
138
|
+
|
|
139
|
+
- ❌ Problems only worsen over time (God objects grow)
|
|
140
|
+
- ❌ Continues to block testing improvements
|
|
141
|
+
- ❌ Maintenance burden increases
|
|
142
|
+
- ❌ Engineering Review scores won't improve
|
|
143
|
+
|
|
144
|
+
**Verdict**: Unacceptable - technical debt compounds if not addressed.
|
|
145
|
+
|
|
146
|
+
### 3. Microservices (Separate Processes)
|
|
147
|
+
|
|
148
|
+
**Approach**: Split extension into multiple processes communicating via IPC.
|
|
149
|
+
|
|
150
|
+
**Pros**:
|
|
151
|
+
|
|
152
|
+
- ✅ True isolation between services
|
|
153
|
+
- ✅ Independent deployment/versioning
|
|
154
|
+
- ✅ Fault isolation (one crash doesn't kill extension)
|
|
155
|
+
|
|
156
|
+
**Cons**:
|
|
157
|
+
|
|
158
|
+
- ❌ Massive architectural change (not incremental)
|
|
159
|
+
- ❌ Performance overhead (IPC latency)
|
|
160
|
+
- ❌ Complex debugging (multiple processes)
|
|
161
|
+
- ❌ VSCode extension model doesn't support this pattern
|
|
162
|
+
- ❌ Over-engineered for monolithic VSCode extension
|
|
163
|
+
|
|
164
|
+
**Verdict**: Wrong tool for the job - VSCode extensions are in-process.
|
|
165
|
+
|
|
166
|
+
### 4. Extract Functions (No Services)
|
|
167
|
+
|
|
168
|
+
**Approach**: Break God objects into many small functions in same file.
|
|
169
|
+
|
|
170
|
+
**Pros**:
|
|
171
|
+
|
|
172
|
+
- ✅ Simple refactoring (just move code)
|
|
173
|
+
- ✅ No DI overhead
|
|
174
|
+
- ✅ Easy to understand (all in one file)
|
|
175
|
+
|
|
176
|
+
**Cons**:
|
|
177
|
+
|
|
178
|
+
- ❌ Still have 1000+ LOC files (hard to navigate)
|
|
179
|
+
- ❌ No dependency management (functions share file-level state)
|
|
180
|
+
- ❌ Difficult to test (functions not isolated)
|
|
181
|
+
- ❌ Doesn't solve God object problem (just God file instead)
|
|
182
|
+
|
|
183
|
+
**Verdict**: Insufficient - doesn't achieve separation goals.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Consequences
|
|
188
|
+
|
|
189
|
+
### Positive
|
|
190
|
+
|
|
191
|
+
1. **Testability**: Services can be unit tested in isolation (easier mocking)
|
|
192
|
+
2. **Maintainability**: <600 LOC services fit in mental model
|
|
193
|
+
3. **Velocity**: Parallel development (different services, no conflicts)
|
|
194
|
+
4. **Onboarding**: New developers understand one service at a time
|
|
195
|
+
5. **Code quality**: Forces adherence to Single Responsibility Principle
|
|
196
|
+
6. **Risk reduction**: Incremental changes tested in production before next step
|
|
197
|
+
7. **Clear boundaries**: Service interfaces make dependencies explicit
|
|
198
|
+
|
|
199
|
+
### Negative
|
|
200
|
+
|
|
201
|
+
1. **Temporary duplication**: During migration, some code exists in both places
|
|
202
|
+
2. **Extra indirection**: Facades add one level of call depth
|
|
203
|
+
3. **Migration effort**: Each God object extraction takes 1-2 days
|
|
204
|
+
4. **Breaking changes risk**: Must preserve exact API behavior during migration
|
|
205
|
+
5. **Testing overhead**: Must test both facade delegation AND service
|
|
206
|
+
implementation
|
|
207
|
+
|
|
208
|
+
### Neutral
|
|
209
|
+
|
|
210
|
+
1. **File count increase**: 2 God files become 10+ service files (more
|
|
211
|
+
navigation)
|
|
212
|
+
2. **Import overhead**: More `import` statements in facades
|
|
213
|
+
3. **Container dependency**: Services must be registered in DI container
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Implementation Results
|
|
218
|
+
|
|
219
|
+
### extension.ts Extraction (Phase 3)
|
|
220
|
+
|
|
221
|
+
**Before**:
|
|
222
|
+
|
|
223
|
+
- 1200 LOC in single activate() function
|
|
224
|
+
- Mixed initialization, events, commands, disposal
|
|
225
|
+
- 80% code coverage difficult due to coupling
|
|
226
|
+
|
|
227
|
+
**After**:
|
|
228
|
+
|
|
229
|
+
- ~800 LOC facade (33% reduction)
|
|
230
|
+
- 4 focused services: DisposalService, EventHandlers, InitializationService,
|
|
231
|
+
CommandRegistry
|
|
232
|
+
- Each service <300 LOC, testable independently
|
|
233
|
+
- Same public API (backward compatible)
|
|
234
|
+
|
|
235
|
+
### goferMigrator.ts Extraction (Phase 4)
|
|
236
|
+
|
|
237
|
+
**Before**:
|
|
238
|
+
|
|
239
|
+
- 2499 LOC God object
|
|
240
|
+
- 30+ public methods, no clear separation
|
|
241
|
+
- Impossible to test migration steps individually
|
|
242
|
+
|
|
243
|
+
**After**:
|
|
244
|
+
|
|
245
|
+
- 467 LOC facade (81% reduction)
|
|
246
|
+
- 4 focused services: VersionDetector (247 LOC), UpgradeService (437 LOC),
|
|
247
|
+
ResourceSyncer (496 LOC), PathMigrator (332 LOC)
|
|
248
|
+
- All services under 600 LOC target
|
|
249
|
+
- Same public API (backward compatible)
|
|
250
|
+
- Services independently testable
|
|
251
|
+
|
|
252
|
+
**Total Reduction**: 3699 LOC → 1267 LOC (66% reduction in God object code)
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Lessons Learned
|
|
257
|
+
|
|
258
|
+
### What Worked Well
|
|
259
|
+
|
|
260
|
+
1. **IResourceOperations interface**: Allowed UpgradeService creation before
|
|
261
|
+
ResourceSyncer existed
|
|
262
|
+
2. **Backing up originals**: Kept `.old.ts` files for reference during
|
|
263
|
+
migration
|
|
264
|
+
3. **Compilation as validation**: TypeScript caught missing methods
|
|
265
|
+
immediately
|
|
266
|
+
4. **Parallel extraction**: T027-T029 developed concurrently (3x faster than
|
|
267
|
+
sequential)
|
|
268
|
+
|
|
269
|
+
### What We'd Do Differently
|
|
270
|
+
|
|
271
|
+
1. **Earlier interface extraction**: Define interfaces first, implement later
|
|
272
|
+
(enables parallel work)
|
|
273
|
+
2. **Test migration alongside code**: Some tests broke due to API changes not
|
|
274
|
+
caught early
|
|
275
|
+
3. **Document runtime configuration needs**: setWorkspacePath() pattern
|
|
276
|
+
discovered mid-migration
|
|
277
|
+
|
|
278
|
+
### Future Applications
|
|
279
|
+
|
|
280
|
+
- **Cache services** (Phase 2): Extract SpecCache, MemoryCache using same
|
|
281
|
+
pattern
|
|
282
|
+
- **Other God objects**: Apply to any future 500+ LOC classes
|
|
283
|
+
- **Service boundaries**: Use <600 LOC limit as design guideline going forward
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## References
|
|
288
|
+
|
|
289
|
+
- [Engineering Review](../../specs/001-gofer-engineering-remediation/ENGINEERING_REVIEW.md) -
|
|
290
|
+
Architecture section
|
|
291
|
+
- [Phase 3 Tasks](../../specs/001-gofer-engineering-remediation/tasks.md#phase-3-god-object-refactoring---extensionts) -
|
|
292
|
+
T020-T025
|
|
293
|
+
- [Phase 4 Tasks](../../specs/001-gofer-engineering-remediation/tasks.md#phase-4-god-object-refactoring---gofermigratorts) -
|
|
294
|
+
T026-T030
|
|
295
|
+
- [Facade Pattern](https://refactoring.guru/design-patterns/facade)
|
|
296
|
+
- [God Object Anti-Pattern](https://sourcemaking.com/antipatterns/the-blob)
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Approval
|
|
301
|
+
|
|
302
|
+
- **Approved by**: Engineering Team
|
|
303
|
+
- **Date**: 2026-02-24
|
|
304
|
+
- **Implementation**: Phase 3 (T020-T025), Phase 4 (T026-T030)
|
|
305
|
+
- **Status**: Successfully delivered - 66% God object LOC reduction
|