sofia-cli 0.1.1
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/.github/agents/copilot-instructions.md +39 -0
- package/.github/agents/speckit.analyze.agent.md +184 -0
- package/.github/agents/speckit.checklist.agent.md +294 -0
- package/.github/agents/speckit.clarify.agent.md +181 -0
- package/.github/agents/speckit.constitution.agent.md +84 -0
- package/.github/agents/speckit.implement.agent.md +135 -0
- package/.github/agents/speckit.plan.agent.md +90 -0
- package/.github/agents/speckit.specify.agent.md +258 -0
- package/.github/agents/speckit.tasks.agent.md +137 -0
- package/.github/agents/speckit.taskstoissues.agent.md +30 -0
- package/.github/copilot-instructions.md +257 -0
- package/.github/prompts/speckit.analyze.prompt.md +3 -0
- package/.github/prompts/speckit.checklist.prompt.md +3 -0
- package/.github/prompts/speckit.clarify.prompt.md +3 -0
- package/.github/prompts/speckit.constitution.prompt.md +3 -0
- package/.github/prompts/speckit.implement.prompt.md +3 -0
- package/.github/prompts/speckit.plan.prompt.md +3 -0
- package/.github/prompts/speckit.specify.prompt.md +3 -0
- package/.github/prompts/speckit.tasks.prompt.md +3 -0
- package/.github/prompts/speckit.taskstoissues.prompt.md +3 -0
- package/.github/workflows/ci.yml +38 -0
- package/.prettierrc +6 -0
- package/.specify/memory/constitution.md +181 -0
- package/.specify/scripts/bash/check-prerequisites.sh +166 -0
- package/.specify/scripts/bash/common.sh +156 -0
- package/.specify/scripts/bash/create-new-feature.sh +297 -0
- package/.specify/scripts/bash/setup-plan.sh +61 -0
- package/.specify/scripts/bash/update-agent-context.sh +810 -0
- package/.specify/templates/agent-file-template.md +28 -0
- package/.specify/templates/checklist-template.md +40 -0
- package/.specify/templates/constitution-template.md +50 -0
- package/.specify/templates/plan-template.md +113 -0
- package/.specify/templates/spec-template.md +115 -0
- package/.specify/templates/tasks-template.md +251 -0
- package/.vscode/mcp.json +42 -0
- package/.vscode/settings.json +19 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/LICENSE +21 -0
- package/README.md +213 -0
- package/dist/src/cli/developCommand.js +240 -0
- package/dist/src/cli/directCommands.js +143 -0
- package/dist/src/cli/envLoader.js +16 -0
- package/dist/src/cli/exportCommand.js +53 -0
- package/dist/src/cli/index.js +203 -0
- package/dist/src/cli/ioContext.js +109 -0
- package/dist/src/cli/preflight.js +57 -0
- package/dist/src/cli/statusCommand.js +110 -0
- package/dist/src/cli/workshopCommand.js +400 -0
- package/dist/src/develop/checkpointState.js +86 -0
- package/dist/src/develop/codeGenerator.js +319 -0
- package/dist/src/develop/dynamicScaffolder.js +226 -0
- package/dist/src/develop/githubMcpAdapter.js +122 -0
- package/dist/src/develop/index.js +15 -0
- package/dist/src/develop/mcpContextEnricher.js +195 -0
- package/dist/src/develop/pocScaffolder.js +542 -0
- package/dist/src/develop/ralphLoop.js +659 -0
- package/dist/src/develop/templateRegistry.js +364 -0
- package/dist/src/develop/testRunner.js +202 -0
- package/dist/src/logging/logger.js +58 -0
- package/dist/src/loop/conversationLoop.js +227 -0
- package/dist/src/loop/phaseSummarizer.js +87 -0
- package/dist/src/mcp/mcpManager.js +267 -0
- package/dist/src/mcp/mcpTransport.js +391 -0
- package/dist/src/mcp/retryPolicy.js +47 -0
- package/dist/src/mcp/webSearch.js +254 -0
- package/dist/src/phases/contextSummarizer.js +101 -0
- package/dist/src/phases/discoveryEnricher.js +156 -0
- package/dist/src/phases/phaseExtractors.js +222 -0
- package/dist/src/phases/phaseHandlers.js +328 -0
- package/dist/src/prompts/design.md +51 -0
- package/dist/src/prompts/develop-boundary.md +51 -0
- package/dist/src/prompts/develop.md +111 -0
- package/dist/src/prompts/discover.md +58 -0
- package/dist/src/prompts/ideate.md +56 -0
- package/dist/src/prompts/plan.md +51 -0
- package/dist/src/prompts/promptLoader.js +167 -0
- package/dist/src/prompts/promptLoader.ts +198 -0
- package/dist/src/prompts/select.md +47 -0
- package/dist/src/prompts/summarize/README.md +8 -0
- package/dist/src/prompts/summarize/design-summary.md +37 -0
- package/dist/src/prompts/summarize/develop-summary.md +25 -0
- package/dist/src/prompts/summarize/ideate-summary.md +27 -0
- package/dist/src/prompts/summarize/plan-summary.md +27 -0
- package/dist/src/prompts/summarize/select-summary.md +21 -0
- package/dist/src/prompts/system.md +28 -0
- package/dist/src/sessions/exportPaths.js +22 -0
- package/dist/src/sessions/exportWriter.js +406 -0
- package/dist/src/sessions/sessionManager.js +81 -0
- package/dist/src/sessions/sessionStore.js +65 -0
- package/dist/src/shared/activitySpinner.js +91 -0
- package/dist/src/shared/copilotClient.js +129 -0
- package/dist/src/shared/data/cards.json +1249 -0
- package/dist/src/shared/data/cardsLoader.js +51 -0
- package/dist/src/shared/errorClassifier.js +120 -0
- package/dist/src/shared/events.js +28 -0
- package/dist/src/shared/markdownRenderer.js +34 -0
- package/dist/src/shared/schemas/session.js +265 -0
- package/dist/src/shared/tableRenderer.js +20 -0
- package/dist/src/vendor/chalk.js +2 -0
- package/dist/src/vendor/cli-table3.js +3 -0
- package/dist/src/vendor/commander.js +2 -0
- package/dist/src/vendor/marked-terminal.js +3 -0
- package/dist/src/vendor/marked.js +2 -0
- package/dist/src/vendor/ora.js +2 -0
- package/dist/src/vendor/pino.js +2 -0
- package/dist/src/vendor/zod.js +2 -0
- package/dist/tests/e2e/developE2e.spec.js +126 -0
- package/dist/tests/e2e/developFailureE2e.spec.js +247 -0
- package/dist/tests/e2e/developPty.spec.js +75 -0
- package/dist/tests/e2e/discoveryWebSearchRelevance.spec.js +84 -0
- package/dist/tests/e2e/harness.spec.js +83 -0
- package/dist/tests/e2e/mcpLive.spec.js +120 -0
- package/dist/tests/e2e/newSession.e2e.spec.js +177 -0
- package/dist/tests/e2e/ralphLoopEnrichmentComparison.spec.js +62 -0
- package/dist/tests/e2e/workiqEnrichment.spec.js +56 -0
- package/dist/tests/e2e/zavaSimulation.spec.js +452 -0
- package/dist/tests/fixtures/test-fixture-project/src/add.js +3 -0
- package/dist/tests/fixtures/test-fixture-project/tests/failing.test.js +6 -0
- package/dist/tests/fixtures/test-fixture-project/tests/hanging.test.js +8 -0
- package/dist/tests/fixtures/test-fixture-project/tests/passing.test.js +10 -0
- package/dist/tests/fixtures/test-fixture-project/vitest.config.js +6 -0
- package/dist/tests/integration/autoStartConversation.spec.js +138 -0
- package/dist/tests/integration/defaultCommand.spec.js +147 -0
- package/dist/tests/integration/directCommandNonTty.spec.js +224 -0
- package/dist/tests/integration/directCommandTty.spec.js +151 -0
- package/dist/tests/integration/discoveryEnrichmentFlow.spec.js +175 -0
- package/dist/tests/integration/exportArtifacts.spec.js +202 -0
- package/dist/tests/integration/exportFallbackFlow.spec.js +99 -0
- package/dist/tests/integration/mcpDegradationFlow.spec.js +190 -0
- package/dist/tests/integration/mcpTransportFlow.spec.js +139 -0
- package/dist/tests/integration/newSessionFlow.spec.js +343 -0
- package/dist/tests/integration/pocGithubMcp.spec.js +186 -0
- package/dist/tests/integration/pocLocalFallback.spec.js +171 -0
- package/dist/tests/integration/pocScaffold.spec.js +163 -0
- package/dist/tests/integration/ralphLoopFlow.spec.js +359 -0
- package/dist/tests/integration/ralphLoopPartial.spec.js +368 -0
- package/dist/tests/integration/resumeAndBacktrack.spec.js +247 -0
- package/dist/tests/integration/spinnerLifecycle.spec.js +220 -0
- package/dist/tests/integration/summarizationFlow.spec.js +115 -0
- package/dist/tests/integration/testRunnerReal.spec.js +52 -0
- package/dist/tests/integration/webSearchAgent.spec.js +128 -0
- package/dist/tests/live/copilotSdkLive.spec.js +107 -0
- package/dist/tests/live/zavaFullWorkshop.spec.js +392 -0
- package/dist/tests/setup/loadEnv.js +3 -0
- package/dist/tests/unit/cli/developCommand.spec.js +567 -0
- package/dist/tests/unit/cli/directCommands.spec.js +279 -0
- package/dist/tests/unit/cli/envLoader.spec.js +58 -0
- package/dist/tests/unit/cli/ioContext.spec.js +119 -0
- package/dist/tests/unit/cli/preflight.spec.js +108 -0
- package/dist/tests/unit/cli/statusCommand.spec.js +111 -0
- package/dist/tests/unit/cli/workshopClientFallback.spec.js +80 -0
- package/dist/tests/unit/cli/workshopCommand.spec.js +329 -0
- package/dist/tests/unit/config/vitestEnvSetup.spec.js +13 -0
- package/dist/tests/unit/develop/checkpointState.spec.js +315 -0
- package/dist/tests/unit/develop/codeGenerator.spec.js +355 -0
- package/dist/tests/unit/develop/githubMcpAdapter.spec.js +231 -0
- package/dist/tests/unit/develop/mcpContextEnricher.spec.js +433 -0
- package/dist/tests/unit/develop/outputValidator.spec.js +119 -0
- package/dist/tests/unit/develop/pocScaffolder.spec.js +353 -0
- package/dist/tests/unit/develop/ralphLoop.spec.js +1248 -0
- package/dist/tests/unit/develop/templateRegistry.spec.js +85 -0
- package/dist/tests/unit/develop/testRunner.spec.js +249 -0
- package/dist/tests/unit/infraBicep.spec.js +92 -0
- package/dist/tests/unit/infraDeploy.spec.js +82 -0
- package/dist/tests/unit/infraTeardown.spec.js +63 -0
- package/dist/tests/unit/logging/logger.spec.js +43 -0
- package/dist/tests/unit/loop/conversationLoop.spec.js +592 -0
- package/dist/tests/unit/loop/phaseSummarizer.spec.js +141 -0
- package/dist/tests/unit/loop/streamingMarkdown.spec.js +147 -0
- package/dist/tests/unit/mcp/mcpManager.spec.js +279 -0
- package/dist/tests/unit/mcp/mcpTransport.spec.js +529 -0
- package/dist/tests/unit/mcp/retryPolicy.spec.js +218 -0
- package/dist/tests/unit/mcp/timeoutValidation.spec.js +46 -0
- package/dist/tests/unit/mcp/webSearch.spec.js +567 -0
- package/dist/tests/unit/phases/contextSummarizer.spec.js +140 -0
- package/dist/tests/unit/phases/discoveryEnricher.repeatCalls.spec.js +93 -0
- package/dist/tests/unit/phases/discoveryEnricher.spec.js +411 -0
- package/dist/tests/unit/phases/phaseExtractors.spec.js +352 -0
- package/dist/tests/unit/phases/phaseHandlers.spec.js +425 -0
- package/dist/tests/unit/prompts/promptLoader.spec.js +118 -0
- package/dist/tests/unit/schemas/pocSchemas.spec.js +412 -0
- package/dist/tests/unit/schemas/session.spec.js +257 -0
- package/dist/tests/unit/sessions/exportPaths.spec.js +31 -0
- package/dist/tests/unit/sessions/exportWriter.spec.js +655 -0
- package/dist/tests/unit/sessions/sessionManager.spec.js +151 -0
- package/dist/tests/unit/sessions/sessionStore.spec.js +116 -0
- package/dist/tests/unit/shared/activitySpinner.spec.js +175 -0
- package/dist/tests/unit/shared/cardsLoader.spec.js +76 -0
- package/dist/tests/unit/shared/copilotClient.spec.js +155 -0
- package/dist/tests/unit/shared/errorClassifier.spec.js +131 -0
- package/dist/tests/unit/shared/events.spec.js +55 -0
- package/dist/tests/unit/shared/markdownRenderer.spec.js +35 -0
- package/dist/tests/unit/shared/markdownRendererChunks.spec.js +70 -0
- package/dist/tests/unit/shared/tableRenderer.spec.js +34 -0
- package/dist/vitest.config.js +14 -0
- package/dist/vitest.live.config.js +18 -0
- package/docs/README.md +35 -0
- package/docs/architecture.md +169 -0
- package/docs/cli-usage.md +207 -0
- package/docs/environment.md +66 -0
- package/docs/export-format.md +146 -0
- package/docs/session-model.md +113 -0
- package/eslint.config.js +35 -0
- package/infra/deploy.sh +193 -0
- package/infra/gather-env.sh +211 -0
- package/infra/main.bicep +90 -0
- package/infra/main.bicepparam +18 -0
- package/infra/resources.bicep +134 -0
- package/infra/teardown.sh +114 -0
- package/package.json +63 -0
- package/specs/001-cli-workshop-rebuild/checklists/requirements.md +35 -0
- package/specs/001-cli-workshop-rebuild/contracts/cli.md +59 -0
- package/specs/001-cli-workshop-rebuild/contracts/export-summary-json.md +23 -0
- package/specs/001-cli-workshop-rebuild/contracts/session-json.md +30 -0
- package/specs/001-cli-workshop-rebuild/data-model.md +210 -0
- package/specs/001-cli-workshop-rebuild/plan.md +361 -0
- package/specs/001-cli-workshop-rebuild/quickstart.md +83 -0
- package/specs/001-cli-workshop-rebuild/research.md +116 -0
- package/specs/001-cli-workshop-rebuild/spec.md +240 -0
- package/specs/001-cli-workshop-rebuild/tasks.md +476 -0
- package/specs/002-poc-generation/contracts/poc-output.md +172 -0
- package/specs/002-poc-generation/contracts/ralph-loop.md +113 -0
- package/specs/002-poc-generation/data-model.md +172 -0
- package/specs/002-poc-generation/plan.md +109 -0
- package/specs/002-poc-generation/quickstart.md +97 -0
- package/specs/002-poc-generation/research.md +786 -0
- package/specs/002-poc-generation/spec.md +81 -0
- package/specs/002-poc-generation/tasks-fix.md +198 -0
- package/specs/002-poc-generation/tasks.md +252 -0
- package/specs/003-mcp-transport-integration/checklists/requirements.md +37 -0
- package/specs/003-mcp-transport-integration/contracts/context-enricher.md +220 -0
- package/specs/003-mcp-transport-integration/contracts/discovery-enricher.md +267 -0
- package/specs/003-mcp-transport-integration/contracts/github-adapter.md +149 -0
- package/specs/003-mcp-transport-integration/contracts/mcp-transport.md +288 -0
- package/specs/003-mcp-transport-integration/data-model.md +326 -0
- package/specs/003-mcp-transport-integration/plan.md +114 -0
- package/specs/003-mcp-transport-integration/quickstart.md +311 -0
- package/specs/003-mcp-transport-integration/research.md +395 -0
- package/specs/003-mcp-transport-integration/spec.md +234 -0
- package/specs/003-mcp-transport-integration/tasks.md +324 -0
- package/specs/003-next-spec-gaps.md +150 -0
- package/specs/004-dev-resume-hardening/checklists/requirements.md +37 -0
- package/specs/004-dev-resume-hardening/contracts/cli.md +160 -0
- package/specs/004-dev-resume-hardening/data-model.md +321 -0
- package/specs/004-dev-resume-hardening/plan.md +107 -0
- package/specs/004-dev-resume-hardening/quickstart.md +115 -0
- package/specs/004-dev-resume-hardening/research.md +142 -0
- package/specs/004-dev-resume-hardening/spec.md +221 -0
- package/specs/004-dev-resume-hardening/tasks.md +333 -0
- package/specs/005-ai-search-deploy/checklists/requirements.md +39 -0
- package/specs/005-ai-search-deploy/contracts/web-search-tool.md +241 -0
- package/specs/005-ai-search-deploy/data-model.md +130 -0
- package/specs/005-ai-search-deploy/plan.md +93 -0
- package/specs/005-ai-search-deploy/quickstart.md +96 -0
- package/specs/005-ai-search-deploy/research.md +187 -0
- package/specs/005-ai-search-deploy/spec.md +143 -0
- package/specs/005-ai-search-deploy/tasks.md +284 -0
- package/specs/006-workshop-extraction-fixes/checklists/requirements.md +61 -0
- package/specs/006-workshop-extraction-fixes/contracts/summarization-and-export.md +131 -0
- package/specs/006-workshop-extraction-fixes/data-model.md +149 -0
- package/specs/006-workshop-extraction-fixes/plan.md +123 -0
- package/specs/006-workshop-extraction-fixes/quickstart.md +101 -0
- package/specs/006-workshop-extraction-fixes/research.md +143 -0
- package/specs/006-workshop-extraction-fixes/spec.md +210 -0
- package/specs/006-workshop-extraction-fixes/tasks.md +316 -0
- package/src/cli/developCommand.ts +308 -0
- package/src/cli/directCommands.ts +195 -0
- package/src/cli/envLoader.ts +17 -0
- package/src/cli/exportCommand.ts +65 -0
- package/src/cli/index.ts +249 -0
- package/src/cli/ioContext.ts +139 -0
- package/src/cli/preflight.ts +86 -0
- package/src/cli/statusCommand.ts +118 -0
- package/src/cli/workshopCommand.ts +496 -0
- package/src/develop/checkpointState.ts +121 -0
- package/src/develop/codeGenerator.ts +402 -0
- package/src/develop/dynamicScaffolder.ts +284 -0
- package/src/develop/githubMcpAdapter.ts +199 -0
- package/src/develop/index.ts +34 -0
- package/src/develop/mcpContextEnricher.ts +279 -0
- package/src/develop/pocScaffolder.ts +646 -0
- package/src/develop/ralphLoop.ts +1044 -0
- package/src/develop/templateRegistry.ts +427 -0
- package/src/develop/testRunner.ts +276 -0
- package/src/logging/logger.ts +73 -0
- package/src/loop/conversationLoop.ts +355 -0
- package/src/loop/phaseSummarizer.ts +114 -0
- package/src/mcp/mcpManager.ts +365 -0
- package/src/mcp/mcpTransport.ts +562 -0
- package/src/mcp/retryPolicy.ts +87 -0
- package/src/mcp/webSearch.ts +388 -0
- package/src/originalPrompts/design_thinking.md +178 -0
- package/src/originalPrompts/design_thinking_persona.md +76 -0
- package/src/originalPrompts/document_generator_example.md +77 -0
- package/src/originalPrompts/document_generator_persona.md +47 -0
- package/src/originalPrompts/facilitator_persona.md +125 -0
- package/src/originalPrompts/guardrails.md +47 -0
- package/src/phases/contextSummarizer.ts +154 -0
- package/src/phases/discoveryEnricher.ts +223 -0
- package/src/phases/phaseExtractors.ts +247 -0
- package/src/phases/phaseHandlers.ts +450 -0
- package/src/prompts/design.md +51 -0
- package/src/prompts/develop-boundary.md +51 -0
- package/src/prompts/develop.md +111 -0
- package/src/prompts/discover.md +58 -0
- package/src/prompts/ideate.md +56 -0
- package/src/prompts/plan.md +51 -0
- package/src/prompts/promptLoader.ts +198 -0
- package/src/prompts/select.md +47 -0
- package/src/prompts/summarize/README.md +8 -0
- package/src/prompts/summarize/design-summary.md +37 -0
- package/src/prompts/summarize/develop-summary.md +25 -0
- package/src/prompts/summarize/ideate-summary.md +27 -0
- package/src/prompts/summarize/plan-summary.md +27 -0
- package/src/prompts/summarize/select-summary.md +21 -0
- package/src/prompts/system.md +28 -0
- package/src/sessions/exportPaths.ts +28 -0
- package/src/sessions/exportWriter.ts +490 -0
- package/src/sessions/sessionManager.ts +119 -0
- package/src/sessions/sessionStore.ts +69 -0
- package/src/shared/activitySpinner.ts +108 -0
- package/src/shared/copilotClient.ts +291 -0
- package/src/shared/data/cards.json +1249 -0
- package/src/shared/data/cardsLoader.ts +70 -0
- package/src/shared/errorClassifier.ts +160 -0
- package/src/shared/events.ts +103 -0
- package/src/shared/markdownRenderer.ts +44 -0
- package/src/shared/schemas/session.ts +346 -0
- package/src/shared/tableRenderer.ts +28 -0
- package/src/types/marked-terminal.d.ts +5 -0
- package/src/vendor/chalk.ts +2 -0
- package/src/vendor/cli-table3.ts +3 -0
- package/src/vendor/commander.ts +2 -0
- package/src/vendor/marked-terminal.ts +3 -0
- package/src/vendor/marked.ts +2 -0
- package/src/vendor/ora.ts +2 -0
- package/src/vendor/pino.ts +3 -0
- package/src/vendor/zod.ts +3 -0
- package/tests/e2e/developE2e.spec.ts +152 -0
- package/tests/e2e/developFailureE2e.spec.ts +289 -0
- package/tests/e2e/developPty.spec.ts +86 -0
- package/tests/e2e/discoveryWebSearchRelevance.spec.ts +103 -0
- package/tests/e2e/harness.spec.ts +104 -0
- package/tests/e2e/mcpLive.spec.ts +149 -0
- package/tests/e2e/newSession.e2e.spec.ts +245 -0
- package/tests/e2e/ralphLoopEnrichmentComparison.spec.ts +70 -0
- package/tests/e2e/workiqEnrichment.spec.ts +72 -0
- package/tests/e2e/zava-assessment/agent-interaction-script.md +258 -0
- package/tests/e2e/zava-assessment/company-profile.md +98 -0
- package/tests/e2e/zava-assessment/expected-results-checklist.md +454 -0
- package/tests/e2e/zavaSimulation.spec.ts +511 -0
- package/tests/fixtures/completedSession.json +141 -0
- package/tests/fixtures/test-fixture-project/package-lock.json +1585 -0
- package/tests/fixtures/test-fixture-project/package.json +12 -0
- package/tests/fixtures/test-fixture-project/src/add.ts +3 -0
- package/tests/fixtures/test-fixture-project/tests/failing.test.ts +7 -0
- package/tests/fixtures/test-fixture-project/tests/hanging.test.ts +9 -0
- package/tests/fixtures/test-fixture-project/tests/passing.test.ts +13 -0
- package/tests/fixtures/test-fixture-project/vitest.config.ts +7 -0
- package/tests/integration/autoStartConversation.spec.ts +168 -0
- package/tests/integration/defaultCommand.spec.ts +179 -0
- package/tests/integration/directCommandNonTty.spec.ts +260 -0
- package/tests/integration/directCommandTty.spec.ts +185 -0
- package/tests/integration/discoveryEnrichmentFlow.spec.ts +209 -0
- package/tests/integration/exportArtifacts.spec.ts +232 -0
- package/tests/integration/exportFallbackFlow.spec.ts +115 -0
- package/tests/integration/mcpDegradationFlow.spec.ts +231 -0
- package/tests/integration/mcpTransportFlow.spec.ts +178 -0
- package/tests/integration/newSessionFlow.spec.ts +406 -0
- package/tests/integration/pocGithubMcp.spec.ts +224 -0
- package/tests/integration/pocLocalFallback.spec.ts +205 -0
- package/tests/integration/pocScaffold.spec.ts +220 -0
- package/tests/integration/ralphLoopFlow.spec.ts +430 -0
- package/tests/integration/ralphLoopPartial.spec.ts +416 -0
- package/tests/integration/resumeAndBacktrack.spec.ts +278 -0
- package/tests/integration/spinnerLifecycle.spec.ts +270 -0
- package/tests/integration/summarizationFlow.spec.ts +135 -0
- package/tests/integration/testRunnerReal.spec.ts +63 -0
- package/tests/integration/webSearchAgent.spec.ts +155 -0
- package/tests/live/copilotSdkLive.spec.ts +149 -0
- package/tests/live/zavaFullWorkshop.spec.ts +515 -0
- package/tests/setup/loadEnv.ts +5 -0
- package/tests/unit/cli/developCommand.spec.ts +679 -0
- package/tests/unit/cli/directCommands.spec.ts +325 -0
- package/tests/unit/cli/envLoader.spec.ts +73 -0
- package/tests/unit/cli/ioContext.spec.ts +148 -0
- package/tests/unit/cli/preflight.spec.ts +125 -0
- package/tests/unit/cli/statusCommand.spec.ts +134 -0
- package/tests/unit/cli/workshopClientFallback.spec.ts +100 -0
- package/tests/unit/cli/workshopCommand.spec.ts +378 -0
- package/tests/unit/config/vitestEnvSetup.spec.ts +24 -0
- package/tests/unit/develop/checkpointState.spec.ts +378 -0
- package/tests/unit/develop/codeGenerator.spec.ts +447 -0
- package/tests/unit/develop/githubMcpAdapter.spec.ts +283 -0
- package/tests/unit/develop/mcpContextEnricher.spec.ts +564 -0
- package/tests/unit/develop/outputValidator.spec.ts +134 -0
- package/tests/unit/develop/pocScaffolder.spec.ts +451 -0
- package/tests/unit/develop/ralphLoop.spec.ts +1439 -0
- package/tests/unit/develop/templateRegistry.spec.ts +106 -0
- package/tests/unit/develop/testRunner.spec.ts +294 -0
- package/tests/unit/infraBicep.spec.ts +116 -0
- package/tests/unit/infraDeploy.spec.ts +102 -0
- package/tests/unit/infraTeardown.spec.ts +77 -0
- package/tests/unit/logging/logger.spec.ts +50 -0
- package/tests/unit/loop/conversationLoop.spec.ts +719 -0
- package/tests/unit/loop/phaseSummarizer.spec.ts +169 -0
- package/tests/unit/loop/streamingMarkdown.spec.ts +180 -0
- package/tests/unit/mcp/mcpManager.spec.ts +336 -0
- package/tests/unit/mcp/mcpTransport.spec.ts +689 -0
- package/tests/unit/mcp/retryPolicy.spec.ts +278 -0
- package/tests/unit/mcp/timeoutValidation.spec.ts +55 -0
- package/tests/unit/mcp/webSearch.spec.ts +718 -0
- package/tests/unit/phases/contextSummarizer.spec.ts +158 -0
- package/tests/unit/phases/discoveryEnricher.repeatCalls.spec.ts +125 -0
- package/tests/unit/phases/discoveryEnricher.spec.ts +512 -0
- package/tests/unit/phases/phaseExtractors.spec.ts +406 -0
- package/tests/unit/phases/phaseHandlers.spec.ts +483 -0
- package/tests/unit/prompts/promptLoader.spec.ts +144 -0
- package/tests/unit/schemas/pocSchemas.spec.ts +457 -0
- package/tests/unit/schemas/session.spec.ts +328 -0
- package/tests/unit/sessions/exportPaths.spec.ts +38 -0
- package/tests/unit/sessions/exportWriter.spec.ts +737 -0
- package/tests/unit/sessions/sessionManager.spec.ts +174 -0
- package/tests/unit/sessions/sessionStore.spec.ts +136 -0
- package/tests/unit/shared/activitySpinner.spec.ts +211 -0
- package/tests/unit/shared/cardsLoader.spec.ts +89 -0
- package/tests/unit/shared/copilotClient.spec.ts +185 -0
- package/tests/unit/shared/errorClassifier.spec.ts +152 -0
- package/tests/unit/shared/events.spec.ts +71 -0
- package/tests/unit/shared/markdownRenderer.spec.ts +42 -0
- package/tests/unit/shared/markdownRendererChunks.spec.ts +83 -0
- package/tests/unit/shared/tableRenderer.spec.ts +38 -0
- package/tsconfig.json +20 -0
- package/vitest.config.ts +15 -0
- package/vitest.live.config.ts +19 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
# teardown.sh — Remove Azure AI Foundry resources deployed by deploy.sh
|
|
4
|
+
#
|
|
5
|
+
# Deletes the specified resource group and all contained resources.
|
|
6
|
+
# Clean exit (0) when the resource group doesn't exist.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
# ./infra/teardown.sh --resource-group <name> [--yes]
|
|
10
|
+
#
|
|
11
|
+
# Exit codes:
|
|
12
|
+
# 0 — Teardown succeeded or resource group doesn't exist
|
|
13
|
+
# 1 — Prerequisite check failed
|
|
14
|
+
# 2 — Deletion failed
|
|
15
|
+
# ──────────────────────────────────────────────────────────────────────────────
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
# ── Defaults ──────────────────────────────────────────────────────────────────
|
|
19
|
+
|
|
20
|
+
RESOURCE_GROUP=""
|
|
21
|
+
AUTO_CONFIRM=false
|
|
22
|
+
|
|
23
|
+
# ── Parameter parsing ─────────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
usage() {
|
|
26
|
+
cat <<EOF
|
|
27
|
+
Usage: $(basename "$0") [options]
|
|
28
|
+
|
|
29
|
+
Required:
|
|
30
|
+
-g, --resource-group <name> Resource group to delete
|
|
31
|
+
|
|
32
|
+
Optional:
|
|
33
|
+
--yes Skip confirmation prompt
|
|
34
|
+
-h, --help Show this help message
|
|
35
|
+
EOF
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
while [[ $# -gt 0 ]]; do
|
|
39
|
+
case "$1" in
|
|
40
|
+
-g|--resource-group)
|
|
41
|
+
RESOURCE_GROUP="$2"; shift 2 ;;
|
|
42
|
+
--yes)
|
|
43
|
+
AUTO_CONFIRM=true; shift ;;
|
|
44
|
+
-h|--help)
|
|
45
|
+
usage; exit 0 ;;
|
|
46
|
+
*)
|
|
47
|
+
echo "❌ Unknown option: $1" >&2
|
|
48
|
+
usage >&2
|
|
49
|
+
exit 1 ;;
|
|
50
|
+
esac
|
|
51
|
+
done
|
|
52
|
+
|
|
53
|
+
# ── Validate required parameters ─────────────────────────────────────────────
|
|
54
|
+
|
|
55
|
+
if [[ -z "$RESOURCE_GROUP" ]]; then
|
|
56
|
+
echo "❌ Missing required parameter: --resource-group (-g)" >&2
|
|
57
|
+
usage >&2
|
|
58
|
+
exit 1
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# ── Prerequisite checks ──────────────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
echo "🔍 Checking prerequisites..."
|
|
64
|
+
|
|
65
|
+
if ! command -v az &>/dev/null; then
|
|
66
|
+
echo "❌ Azure CLI (az) is not installed." >&2
|
|
67
|
+
echo " Install: https://learn.microsoft.com/en-us/cli/azure/install-azure-cli" >&2
|
|
68
|
+
exit 1
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
if ! az account show &>/dev/null; then
|
|
72
|
+
echo "❌ Not logged in to Azure. Run 'az login' first." >&2
|
|
73
|
+
exit 1
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
echo "✅ Prerequisites passed"
|
|
77
|
+
|
|
78
|
+
# ── Check if resource group exists ────────────────────────────────────────────
|
|
79
|
+
|
|
80
|
+
echo ""
|
|
81
|
+
echo "🔍 Checking resource group: $RESOURCE_GROUP"
|
|
82
|
+
|
|
83
|
+
RG_EXISTS=$(az group exists --name "$RESOURCE_GROUP" 2>/dev/null || echo "false")
|
|
84
|
+
|
|
85
|
+
if [[ "$RG_EXISTS" != "true" ]]; then
|
|
86
|
+
echo "ℹ️ Resource group '$RESOURCE_GROUP' does not exist. Nothing to delete."
|
|
87
|
+
exit 0
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# ── Confirm deletion ─────────────────────────────────────────────────────────
|
|
91
|
+
|
|
92
|
+
if [[ "$AUTO_CONFIRM" != "true" ]]; then
|
|
93
|
+
echo ""
|
|
94
|
+
echo "⚠️ This will delete resource group '$RESOURCE_GROUP' and ALL its resources."
|
|
95
|
+
read -rp "Are you sure? (y/N): " confirm
|
|
96
|
+
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
|
97
|
+
echo "Cancelled."
|
|
98
|
+
exit 0
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
# ── Delete resource group ────────────────────────────────────────────────────
|
|
103
|
+
|
|
104
|
+
echo ""
|
|
105
|
+
echo "🗑️ Deleting resource group: $RESOURCE_GROUP"
|
|
106
|
+
|
|
107
|
+
if ! az group delete --name "$RESOURCE_GROUP" --yes --no-wait; then
|
|
108
|
+
echo "" >&2
|
|
109
|
+
echo "❌ Failed to delete resource group '$RESOURCE_GROUP'." >&2
|
|
110
|
+
exit 2
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
echo "✅ Resource group '$RESOURCE_GROUP' deletion initiated (non-blocking)."
|
|
114
|
+
echo " Resources will be fully removed within a few minutes."
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sofia-cli",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/src/cli/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"sofia": "dist/src/cli/index.js"
|
|
9
|
+
},
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=20"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc -p tsconfig.json && npm run build:assets",
|
|
15
|
+
"build:assets": "cp -r src/prompts/ dist/src/ && cp src/shared/data/cards.json dist/src/shared/data/",
|
|
16
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
17
|
+
"start": "tsx src/cli/index.ts",
|
|
18
|
+
"clean": "rimraf dist coverage .nyc_output",
|
|
19
|
+
"lint": "eslint src tests",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"format": "prettier --check .",
|
|
22
|
+
"format:fix": "prettier --write .",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"test:unit": "vitest run tests/unit",
|
|
26
|
+
"test:integration": "vitest run tests/integration",
|
|
27
|
+
"test:e2e": "vitest run tests/e2e",
|
|
28
|
+
"test:live": "vitest run --config vitest.live.config.ts",
|
|
29
|
+
"sofiacli": "node --enable-source-maps dist/cli/index.js",
|
|
30
|
+
"sofia": "npm run sofiacli"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@azure/ai-projects": "^2.0.0-beta.5",
|
|
34
|
+
"@azure/identity": "^4.13.0",
|
|
35
|
+
"@github/copilot-sdk": "^0.1.28",
|
|
36
|
+
"@inquirer/prompts": "^8.3.0",
|
|
37
|
+
"chalk": "^5.2.0",
|
|
38
|
+
"cli-table3": "^0.6.3",
|
|
39
|
+
"commander": "^11.1.0",
|
|
40
|
+
"dotenv": "^17.3.1",
|
|
41
|
+
"marked": "^11.0.0",
|
|
42
|
+
"marked-terminal": "^6.2.0",
|
|
43
|
+
"ora": "^7.0.1",
|
|
44
|
+
"pino": "^8.17.2",
|
|
45
|
+
"zod": "^4.3.6"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/node": "^20.11.30",
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^7.1.1",
|
|
50
|
+
"@typescript-eslint/parser": "^7.1.1",
|
|
51
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
52
|
+
"eslint": "^8.57.0",
|
|
53
|
+
"eslint-config-prettier": "^9.1.0",
|
|
54
|
+
"eslint-plugin-import": "^2.29.1",
|
|
55
|
+
"node-pty": "^1.0.0",
|
|
56
|
+
"prettier": "^3.2.4",
|
|
57
|
+
"rimraf": "^5.0.5",
|
|
58
|
+
"tsx": "^4.21.0",
|
|
59
|
+
"typescript": "^5.3.3",
|
|
60
|
+
"typescript-eslint": "^8.56.1",
|
|
61
|
+
"vitest": "^4.0.18"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Specification Quality Checklist: sofIA Unified Build-From-Scratch CLI
|
|
2
|
+
|
|
3
|
+
**Purpose**: Validate specification completeness and quality before proceeding to planning
|
|
4
|
+
**Created**: 2026-02-26
|
|
5
|
+
**Feature**: [../spec.md](../spec.md)
|
|
6
|
+
|
|
7
|
+
## Content Quality
|
|
8
|
+
|
|
9
|
+
- [x] No implementation details (languages, frameworks, APIs) — N/A: technology constraints (Copilot SDK, MCP, BXT) are non-negotiable project requirements, not implementation choices
|
|
10
|
+
- [x] Focused on user value and business needs
|
|
11
|
+
- [x] Written for non-technical stakeholders
|
|
12
|
+
- [x] All mandatory sections completed
|
|
13
|
+
|
|
14
|
+
## Requirement Completeness
|
|
15
|
+
|
|
16
|
+
- [x] No [NEEDS CLARIFICATION] markers remain
|
|
17
|
+
- [x] Requirements are testable and unambiguous
|
|
18
|
+
- [x] Success criteria are measurable
|
|
19
|
+
- [x] Success criteria are technology-agnostic (no implementation details) — N/A: technology constraints are non-negotiable project requirements, not implementation choices
|
|
20
|
+
- [x] All acceptance scenarios are defined
|
|
21
|
+
- [x] Edge cases are identified
|
|
22
|
+
- [x] Scope is clearly bounded
|
|
23
|
+
- [x] Dependencies and assumptions identified
|
|
24
|
+
|
|
25
|
+
## Feature Readiness
|
|
26
|
+
|
|
27
|
+
- [x] All functional requirements have clear acceptance criteria
|
|
28
|
+
- [x] User scenarios cover primary flows
|
|
29
|
+
- [x] Feature meets measurable outcomes defined in Success Criteria
|
|
30
|
+
- [x] No implementation details leak into specification — N/A: technology constraints are non-negotiable project requirements, not implementation choices
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- This spec intentionally includes technology constraints (Copilot SDK, MCP integrations, BXT framework) because they are explicit non-negotiables for the sofIA rebuild.
|
|
35
|
+
- Clarifications captured in spec: repo-local persistence (`./.sofia/`), one JSON file per session, local scaffolding fallback for Develop when GitHub MCP is unavailable, default export to `./exports/<sessionId>/`, and persistence after every user turn.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Contract: CLI Surface
|
|
2
|
+
|
|
3
|
+
This document defines the public CLI contract. Exact flags/subcommands may evolve, but breaking changes must be deliberate.
|
|
4
|
+
|
|
5
|
+
## Binary
|
|
6
|
+
|
|
7
|
+
- Name: `sofia`
|
|
8
|
+
|
|
9
|
+
## Global options
|
|
10
|
+
|
|
11
|
+
- `--help`
|
|
12
|
+
- `--version`
|
|
13
|
+
- `--session <id>`: target an existing session
|
|
14
|
+
- `--new-session`: create a new session
|
|
15
|
+
- `--non-interactive`: disallow prompts; fail with actionable error if input is missing
|
|
16
|
+
- `--json`: emit machine-readable JSON **only** on stdout (no spinners/telemetry)
|
|
17
|
+
- `--debug`: enable debug telemetry
|
|
18
|
+
- `--log-file <path>`: write structured logs to file
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### 1) `sofia workshop`
|
|
23
|
+
|
|
24
|
+
Starts or resumes the governed workshop flow.
|
|
25
|
+
|
|
26
|
+
- Interactive by default (TTY).
|
|
27
|
+
- In non-interactive mode, requires sufficient args or input file (defined in implementation).
|
|
28
|
+
|
|
29
|
+
Outputs:
|
|
30
|
+
- Human: streamed narrative + activity stream (stderr).
|
|
31
|
+
- JSON mode: JSON events only on stdout.
|
|
32
|
+
|
|
33
|
+
### 2) `sofia status`
|
|
34
|
+
|
|
35
|
+
Displays session status and next expected action.
|
|
36
|
+
|
|
37
|
+
Outputs:
|
|
38
|
+
- Human: concise summary.
|
|
39
|
+
- JSON: `{ sessionId, phase, status, updatedAt, nextAction }`.
|
|
40
|
+
|
|
41
|
+
### 3) `sofia export`
|
|
42
|
+
|
|
43
|
+
Exports artifacts for a session.
|
|
44
|
+
|
|
45
|
+
- Default output: `./exports/<sessionId>/`
|
|
46
|
+
- Output includes `summary.json` and phase markdown files.
|
|
47
|
+
|
|
48
|
+
### 4) `sofia dev` (optional)
|
|
49
|
+
|
|
50
|
+
Developer utilities (may be hidden) for local PoC scaffolding and diagnostics.
|
|
51
|
+
|
|
52
|
+
## Error contract
|
|
53
|
+
|
|
54
|
+
- Exit codes are stable and documented in implementation.
|
|
55
|
+
- In JSON mode, errors are emitted as JSON objects with:
|
|
56
|
+
- `error.code`
|
|
57
|
+
- `error.message`
|
|
58
|
+
- `error.details?`
|
|
59
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Contract: Export `summary.json`
|
|
2
|
+
|
|
3
|
+
**Path**: `./exports/<sessionId>/summary.json`
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
- Encoding: UTF-8
|
|
8
|
+
- JSON object
|
|
9
|
+
|
|
10
|
+
## Minimum fields
|
|
11
|
+
|
|
12
|
+
- `sessionId: string`
|
|
13
|
+
- `exportedAt: string` (ISO-8601)
|
|
14
|
+
- `phase: string`
|
|
15
|
+
- `status: string`
|
|
16
|
+
- `files: Array<{ path: string; type: string }>`
|
|
17
|
+
- `highlights?: string[]`
|
|
18
|
+
|
|
19
|
+
## Notes
|
|
20
|
+
|
|
21
|
+
- `files[].path` is relative to the export directory.
|
|
22
|
+
- Do not include secrets.
|
|
23
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Contract: Session JSON
|
|
2
|
+
|
|
3
|
+
**Path**: `./.sofia/sessions/<sessionId>.json`
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
- Encoding: UTF-8
|
|
8
|
+
- JSON object
|
|
9
|
+
- Overwrite the file after each user turn (atomic write in implementation)
|
|
10
|
+
|
|
11
|
+
## Minimum required fields
|
|
12
|
+
|
|
13
|
+
- `sessionId: string`
|
|
14
|
+
- `schemaVersion: string`
|
|
15
|
+
- `createdAt: string` (ISO-8601)
|
|
16
|
+
- `updatedAt: string` (ISO-8601)
|
|
17
|
+
- `phase: string`
|
|
18
|
+
- `status: string`
|
|
19
|
+
- `artifacts.generatedFiles: array`
|
|
20
|
+
|
|
21
|
+
## Compatibility
|
|
22
|
+
|
|
23
|
+
- `schemaVersion` supports forward migration.
|
|
24
|
+
- Unknown fields must be preserved when loading/saving.
|
|
25
|
+
|
|
26
|
+
## Safety
|
|
27
|
+
|
|
28
|
+
- Must not persist secrets/tokens.
|
|
29
|
+
- Redact/omit any sensitive values from tool responses before writing.
|
|
30
|
+
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Data Model: sofIA CLI workshop rebuild
|
|
2
|
+
|
|
3
|
+
**Feature**: ./spec.md
|
|
4
|
+
**Research**: ./research.md
|
|
5
|
+
**Date**: 2026-02-26
|
|
6
|
+
|
|
7
|
+
This is a conceptual data model for persistence and exports. It is not an implementation.
|
|
8
|
+
|
|
9
|
+
## Entities
|
|
10
|
+
|
|
11
|
+
### 1) Session
|
|
12
|
+
|
|
13
|
+
**Storage**: `./.sofia/sessions/<sessionId>.json`
|
|
14
|
+
|
|
15
|
+
**Fields (minimum)**
|
|
16
|
+
- `sessionId: string`
|
|
17
|
+
- `createdAt: string` (ISO-8601)
|
|
18
|
+
- `updatedAt: string` (ISO-8601)
|
|
19
|
+
- `schemaVersion: string`
|
|
20
|
+
- `phase: Phase`
|
|
21
|
+
- `status: SessionStatus`
|
|
22
|
+
- `participants: Participant[]`
|
|
23
|
+
- `businessContext?: BusinessContext`
|
|
24
|
+
- `topic?: TopicSelection`
|
|
25
|
+
- `activities?: Activity[]`
|
|
26
|
+
- `workflow?: WorkflowMap`
|
|
27
|
+
- `cards?: CardSelection`
|
|
28
|
+
- `ideas?: IdeaCard[]`
|
|
29
|
+
- `evaluation?: IdeaEvaluation`
|
|
30
|
+
- `selection?: SelectedIdea`
|
|
31
|
+
- `plan?: ImplementationPlan`
|
|
32
|
+
- `poc?: PocDevelopmentState`
|
|
33
|
+
- `artifacts: ArtifactIndex`
|
|
34
|
+
- `errors?: ErrorRecord[]`
|
|
35
|
+
|
|
36
|
+
**Validation rules**
|
|
37
|
+
- `sessionId` is stable across the session.
|
|
38
|
+
- `updatedAt` is monotonically increasing.
|
|
39
|
+
- `phase` must follow state machine (see below).
|
|
40
|
+
- Every user turn persists the session to disk.
|
|
41
|
+
|
|
42
|
+
### 2) Phase
|
|
43
|
+
|
|
44
|
+
`Phase` is an enum representing the governed progression:
|
|
45
|
+
- `Discover`
|
|
46
|
+
- `Ideate`
|
|
47
|
+
- `Design`
|
|
48
|
+
- `Select`
|
|
49
|
+
- `Plan`
|
|
50
|
+
- `Develop`
|
|
51
|
+
- `Complete`
|
|
52
|
+
|
|
53
|
+
**Rule**: Phase changes require an explicit “Proceed?” decision gate in UX.
|
|
54
|
+
|
|
55
|
+
### 3) SessionStatus
|
|
56
|
+
|
|
57
|
+
- `Active`
|
|
58
|
+
- `Paused`
|
|
59
|
+
- `Completed`
|
|
60
|
+
- `Errored`
|
|
61
|
+
|
|
62
|
+
### 4) Participant
|
|
63
|
+
|
|
64
|
+
- `id: string`
|
|
65
|
+
- `displayName: string`
|
|
66
|
+
- `role: "Facilitator" | "Attendee" | "Observer"`
|
|
67
|
+
|
|
68
|
+
### 5) BusinessContext
|
|
69
|
+
|
|
70
|
+
- `businessDescription: string`
|
|
71
|
+
- `challenges: string[]`
|
|
72
|
+
- `constraints?: string[]`
|
|
73
|
+
- `successMetrics?: Metric[]`
|
|
74
|
+
|
|
75
|
+
### 6) TopicSelection
|
|
76
|
+
|
|
77
|
+
- `topicArea: string`
|
|
78
|
+
- `scopeNotes?: string`
|
|
79
|
+
|
|
80
|
+
### 7) WorkflowMap
|
|
81
|
+
|
|
82
|
+
- `activities: WorkflowStep[]`
|
|
83
|
+
- `edges: WorkflowEdge[]`
|
|
84
|
+
|
|
85
|
+
`WorkflowStep`
|
|
86
|
+
- `id: string`
|
|
87
|
+
- `name: string`
|
|
88
|
+
- `description?: string`
|
|
89
|
+
- `metrics?: Metric[]` (e.g., hours/week, NSAT)
|
|
90
|
+
|
|
91
|
+
`WorkflowEdge`
|
|
92
|
+
- `fromStepId: string`
|
|
93
|
+
- `toStepId: string`
|
|
94
|
+
|
|
95
|
+
### 8) CardSelection
|
|
96
|
+
|
|
97
|
+
- `selectedCards: EnvisioningCard[]`
|
|
98
|
+
- `scores?: CardScore[]`
|
|
99
|
+
|
|
100
|
+
`EnvisioningCard`
|
|
101
|
+
- `id: string`
|
|
102
|
+
- `title: string`
|
|
103
|
+
- `category?: string`
|
|
104
|
+
- `notes?: string`
|
|
105
|
+
|
|
106
|
+
`CardScore`
|
|
107
|
+
- `cardId: string`
|
|
108
|
+
- `dimensions: Record<string, number>`
|
|
109
|
+
|
|
110
|
+
### 9) IdeaCard
|
|
111
|
+
|
|
112
|
+
- `id: string`
|
|
113
|
+
- `title: string`
|
|
114
|
+
- `description: string`
|
|
115
|
+
- `workflowStepIds: string[]`
|
|
116
|
+
- `aspirationalScope?: string`
|
|
117
|
+
- `assumptions?: string[]`
|
|
118
|
+
|
|
119
|
+
### 10) IdeaEvaluation
|
|
120
|
+
|
|
121
|
+
- `ideas: IdeaEvaluationItem[]`
|
|
122
|
+
- `method: "feasibility-value-matrix" | "custom"`
|
|
123
|
+
|
|
124
|
+
`IdeaEvaluationItem`
|
|
125
|
+
- `ideaId: string`
|
|
126
|
+
- `feasibility: number` (normalized 0..1 or 1..5; decide in implementation)
|
|
127
|
+
- `value: number`
|
|
128
|
+
- `risks?: string[]`
|
|
129
|
+
- `dataNeeded?: string[]`
|
|
130
|
+
- `humanValue?: string[]`
|
|
131
|
+
- `kpisInfluenced?: string[]`
|
|
132
|
+
|
|
133
|
+
### 11) SelectedIdea
|
|
134
|
+
|
|
135
|
+
- `ideaId: string`
|
|
136
|
+
- `selectionRationale: string`
|
|
137
|
+
- `confirmedByUser: boolean`
|
|
138
|
+
- `confirmedAt?: string`
|
|
139
|
+
|
|
140
|
+
### 12) ImplementationPlan
|
|
141
|
+
|
|
142
|
+
- `milestones: Milestone[]`
|
|
143
|
+
- `architectureNotes?: string`
|
|
144
|
+
- `dependencies?: string[]`
|
|
145
|
+
|
|
146
|
+
`Milestone`
|
|
147
|
+
- `id: string`
|
|
148
|
+
- `title: string`
|
|
149
|
+
- `items: string[]`
|
|
150
|
+
|
|
151
|
+
### 13) PocDevelopmentState
|
|
152
|
+
|
|
153
|
+
- `repoPath?: string` (local path or external repo location, populated by Develop feature 002)
|
|
154
|
+
- `iterations: PocIteration[]` (high-level record of Develop iterations; detailed behavior defined in feature 002)
|
|
155
|
+
- `finalStatus?: "success" | "failed"`
|
|
156
|
+
|
|
157
|
+
`PocIteration`
|
|
158
|
+
- `iteration: number`
|
|
159
|
+
- `startedAt: string`
|
|
160
|
+
- `endedAt?: string`
|
|
161
|
+
- `changesSummary?: string`
|
|
162
|
+
- `testsRun?: string[]`
|
|
163
|
+
|
|
164
|
+
### 14) Activity
|
|
165
|
+
|
|
166
|
+
This replaces “LLM thoughts” with a compliant activity/telemetry stream.
|
|
167
|
+
|
|
168
|
+
- `id: string`
|
|
169
|
+
- `timestamp: string`
|
|
170
|
+
- `kind: "phase" | "tool" | "io" | "warning" | "error" | "progress"`
|
|
171
|
+
- `message: string`
|
|
172
|
+
- `data?: Record<string, unknown>`
|
|
173
|
+
|
|
174
|
+
### 15) ArtifactIndex
|
|
175
|
+
|
|
176
|
+
- `exportDir?: string` (e.g., `./exports/<sessionId>/`)
|
|
177
|
+
- `generatedFiles: GeneratedFile[]`
|
|
178
|
+
|
|
179
|
+
`GeneratedFile`
|
|
180
|
+
- `relativePath: string`
|
|
181
|
+
- `type: "markdown" | "json" | "text"`
|
|
182
|
+
- `createdAt: string`
|
|
183
|
+
|
|
184
|
+
### 16) ErrorRecord
|
|
185
|
+
|
|
186
|
+
- `timestamp: string`
|
|
187
|
+
- `code: string`
|
|
188
|
+
- `message: string`
|
|
189
|
+
- `details?: Record<string, unknown>`
|
|
190
|
+
|
|
191
|
+
## State machine
|
|
192
|
+
|
|
193
|
+
Valid transitions:
|
|
194
|
+
- `Discover → Ideate → Design → Select → Plan → Develop → Complete`
|
|
195
|
+
|
|
196
|
+
Failure transitions:
|
|
197
|
+
- Any phase may set `status=Errored` but **must** persist the session before exit.
|
|
198
|
+
|
|
199
|
+
Resume:
|
|
200
|
+
- `Paused → Active` without phase change.
|
|
201
|
+
|
|
202
|
+
## Export model
|
|
203
|
+
|
|
204
|
+
**Export root**: `./exports/<sessionId>/`
|
|
205
|
+
|
|
206
|
+
Minimum contents:
|
|
207
|
+
- `summary.json` (export index + top-level summary)
|
|
208
|
+
- Phase markdown files (names finalized in implementation):
|
|
209
|
+
- `discover.md`, `ideate.md`, `design.md`, `select.md`, `plan.md`, `develop.md`
|
|
210
|
+
|