task-o-matic-core 0.1.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/README.md +646 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/lib/ai-service/ai-operations.d.ts +45 -0
- package/dist/lib/ai-service/ai-operations.d.ts.map +1 -0
- package/dist/lib/ai-service/ai-operations.js +60 -0
- package/dist/lib/ai-service/base-operations.d.ts +43 -0
- package/dist/lib/ai-service/base-operations.d.ts.map +1 -0
- package/dist/lib/ai-service/base-operations.js +119 -0
- package/dist/lib/ai-service/documentation-operations.d.ts +18 -0
- package/dist/lib/ai-service/documentation-operations.d.ts.map +1 -0
- package/dist/lib/ai-service/documentation-operations.js +308 -0
- package/dist/lib/ai-service/filesystem-tools.d.ts +69 -0
- package/dist/lib/ai-service/filesystem-tools.d.ts.map +1 -0
- package/dist/lib/ai-service/filesystem-tools.js +70 -0
- package/dist/lib/ai-service/json-parser.d.ts +34 -0
- package/dist/lib/ai-service/json-parser.d.ts.map +1 -0
- package/dist/lib/ai-service/json-parser.js +177 -0
- package/dist/lib/ai-service/mcp-client.d.ts +9 -0
- package/dist/lib/ai-service/mcp-client.d.ts.map +1 -0
- package/dist/lib/ai-service/mcp-client.js +48 -0
- package/dist/lib/ai-service/model-provider.d.ts +12 -0
- package/dist/lib/ai-service/model-provider.d.ts.map +1 -0
- package/dist/lib/ai-service/model-provider.js +146 -0
- package/dist/lib/ai-service/prd-operations.d.ts +25 -0
- package/dist/lib/ai-service/prd-operations.d.ts.map +1 -0
- package/dist/lib/ai-service/prd-operations.js +592 -0
- package/dist/lib/ai-service/research-tools.d.ts +4 -0
- package/dist/lib/ai-service/research-tools.d.ts.map +1 -0
- package/dist/lib/ai-service/research-tools.js +8 -0
- package/dist/lib/ai-service/retry-handler.d.ts +8 -0
- package/dist/lib/ai-service/retry-handler.d.ts.map +1 -0
- package/dist/lib/ai-service/retry-handler.js +63 -0
- package/dist/lib/ai-service/task-operations.d.ts +13 -0
- package/dist/lib/ai-service/task-operations.d.ts.map +1 -0
- package/dist/lib/ai-service/task-operations.js +220 -0
- package/dist/lib/benchmark/registry.d.ts +11 -0
- package/dist/lib/benchmark/registry.d.ts.map +1 -0
- package/dist/lib/benchmark/registry.js +212 -0
- package/dist/lib/benchmark/runner.d.ts +6 -0
- package/dist/lib/benchmark/runner.d.ts.map +1 -0
- package/dist/lib/benchmark/runner.js +150 -0
- package/dist/lib/benchmark/storage.d.ts +13 -0
- package/dist/lib/benchmark/storage.d.ts.map +1 -0
- package/dist/lib/benchmark/storage.js +100 -0
- package/dist/lib/benchmark/types.d.ts +104 -0
- package/dist/lib/benchmark/types.d.ts.map +1 -0
- package/dist/lib/benchmark/types.js +2 -0
- package/dist/lib/better-t-stack-cli.d.ts +50 -0
- package/dist/lib/better-t-stack-cli.d.ts.map +1 -0
- package/dist/lib/better-t-stack-cli.js +428 -0
- package/dist/lib/bootstrap/cli-bootstrap.d.ts +14 -0
- package/dist/lib/bootstrap/cli-bootstrap.d.ts.map +1 -0
- package/dist/lib/bootstrap/cli-bootstrap.js +322 -0
- package/dist/lib/bootstrap/index.d.ts +3 -0
- package/dist/lib/bootstrap/index.d.ts.map +1 -0
- package/dist/lib/bootstrap/index.js +18 -0
- package/dist/lib/bootstrap/medusa-bootstrap.d.ts +14 -0
- package/dist/lib/bootstrap/medusa-bootstrap.d.ts.map +1 -0
- package/dist/lib/bootstrap/medusa-bootstrap.js +215 -0
- package/dist/lib/config-validation.d.ts +215 -0
- package/dist/lib/config-validation.d.ts.map +1 -0
- package/dist/lib/config-validation.js +254 -0
- package/dist/lib/config.d.ts +55 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +351 -0
- package/dist/lib/context-builder.d.ts +66 -0
- package/dist/lib/context-builder.d.ts.map +1 -0
- package/dist/lib/context-builder.js +322 -0
- package/dist/lib/executors/claude-code-executor.d.ts +9 -0
- package/dist/lib/executors/claude-code-executor.d.ts.map +1 -0
- package/dist/lib/executors/claude-code-executor.js +69 -0
- package/dist/lib/executors/codex-executor.d.ts +9 -0
- package/dist/lib/executors/codex-executor.d.ts.map +1 -0
- package/dist/lib/executors/codex-executor.js +73 -0
- package/dist/lib/executors/executor-factory.d.ts +5 -0
- package/dist/lib/executors/executor-factory.d.ts.map +1 -0
- package/dist/lib/executors/executor-factory.js +27 -0
- package/dist/lib/executors/gemini-executor.d.ts +9 -0
- package/dist/lib/executors/gemini-executor.d.ts.map +1 -0
- package/dist/lib/executors/gemini-executor.js +67 -0
- package/dist/lib/executors/kilo-executor.d.ts +9 -0
- package/dist/lib/executors/kilo-executor.d.ts.map +1 -0
- package/dist/lib/executors/kilo-executor.js +69 -0
- package/dist/lib/executors/opencode-executor.d.ts +9 -0
- package/dist/lib/executors/opencode-executor.d.ts.map +1 -0
- package/dist/lib/executors/opencode-executor.js +67 -0
- package/dist/lib/git-utils.d.ts +88 -0
- package/dist/lib/git-utils.d.ts.map +1 -0
- package/dist/lib/git-utils.js +242 -0
- package/dist/lib/hooks.d.ts +73 -0
- package/dist/lib/hooks.d.ts.map +1 -0
- package/dist/lib/hooks.js +62 -0
- package/dist/lib/index.d.ts +100 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +143 -0
- package/dist/lib/logger.d.ts +20 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +32 -0
- package/dist/lib/notifications.d.ts +7 -0
- package/dist/lib/notifications.d.ts.map +1 -0
- package/dist/lib/notifications.js +81 -0
- package/dist/lib/prompt-builder.d.ts +70 -0
- package/dist/lib/prompt-builder.d.ts.map +1 -0
- package/dist/lib/prompt-builder.js +344 -0
- package/dist/lib/prompt-registry.d.ts +22 -0
- package/dist/lib/prompt-registry.d.ts.map +1 -0
- package/dist/lib/prompt-registry.js +409 -0
- package/dist/lib/provider-defaults.json +32 -0
- package/dist/lib/storage/file-system.d.ts +57 -0
- package/dist/lib/storage/file-system.d.ts.map +1 -0
- package/dist/lib/storage/file-system.js +638 -0
- package/dist/lib/storage/storage-callbacks.d.ts +17 -0
- package/dist/lib/storage/storage-callbacks.d.ts.map +1 -0
- package/dist/lib/storage/storage-callbacks.js +94 -0
- package/dist/lib/storage/types.d.ts +43 -0
- package/dist/lib/storage/types.d.ts.map +1 -0
- package/dist/lib/storage/types.js +2 -0
- package/dist/lib/task-execution-core.d.ts +7 -0
- package/dist/lib/task-execution-core.d.ts.map +1 -0
- package/dist/lib/task-execution-core.js +381 -0
- package/dist/lib/task-execution.d.ts +7 -0
- package/dist/lib/task-execution.d.ts.map +1 -0
- package/dist/lib/task-execution.js +40 -0
- package/dist/lib/task-loop-execution.d.ts +7 -0
- package/dist/lib/task-loop-execution.d.ts.map +1 -0
- package/dist/lib/task-loop-execution.js +156 -0
- package/dist/lib/task-planning.d.ts +29 -0
- package/dist/lib/task-planning.d.ts.map +1 -0
- package/dist/lib/task-planning.js +103 -0
- package/dist/lib/task-review.d.ts +27 -0
- package/dist/lib/task-review.d.ts.map +1 -0
- package/dist/lib/task-review.js +103 -0
- package/dist/lib/validation.d.ts +26 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +98 -0
- package/dist/prompts/documentation-detection.d.ts +2 -0
- package/dist/prompts/documentation-detection.d.ts.map +1 -0
- package/dist/prompts/documentation-detection.js +24 -0
- package/dist/prompts/documentation-recap.d.ts +3 -0
- package/dist/prompts/documentation-recap.d.ts.map +1 -0
- package/dist/prompts/documentation-recap.js +13 -0
- package/dist/prompts/index.d.ts +15 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +30 -0
- package/dist/prompts/prd-combination.d.ts +2 -0
- package/dist/prompts/prd-combination.d.ts.map +1 -0
- package/dist/prompts/prd-combination.js +35 -0
- package/dist/prompts/prd-generation.d.ts +2 -0
- package/dist/prompts/prd-generation.d.ts.map +1 -0
- package/dist/prompts/prd-generation.js +49 -0
- package/dist/prompts/prd-parsing.d.ts +3 -0
- package/dist/prompts/prd-parsing.d.ts.map +1 -0
- package/dist/prompts/prd-parsing.js +172 -0
- package/dist/prompts/prd-question-answer.d.ts +3 -0
- package/dist/prompts/prd-question-answer.d.ts.map +1 -0
- package/dist/prompts/prd-question-answer.js +27 -0
- package/dist/prompts/prd-question.d.ts +3 -0
- package/dist/prompts/prd-question.d.ts.map +1 -0
- package/dist/prompts/prd-question.js +40 -0
- package/dist/prompts/prd-rework.d.ts +3 -0
- package/dist/prompts/prd-rework.d.ts.map +1 -0
- package/dist/prompts/prd-rework.js +81 -0
- package/dist/prompts/prd-suggest-stack.d.ts +3 -0
- package/dist/prompts/prd-suggest-stack.d.ts.map +1 -0
- package/dist/prompts/prd-suggest-stack.js +99 -0
- package/dist/prompts/task-breakdown.d.ts +3 -0
- package/dist/prompts/task-breakdown.d.ts.map +1 -0
- package/dist/prompts/task-breakdown.js +151 -0
- package/dist/prompts/task-enhancement.d.ts +3 -0
- package/dist/prompts/task-enhancement.d.ts.map +1 -0
- package/dist/prompts/task-enhancement.js +140 -0
- package/dist/prompts/task-execution.d.ts +3 -0
- package/dist/prompts/task-execution.d.ts.map +1 -0
- package/dist/prompts/task-execution.js +24 -0
- package/dist/prompts/task-planning.d.ts +3 -0
- package/dist/prompts/task-planning.d.ts.map +1 -0
- package/dist/prompts/task-planning.js +66 -0
- package/dist/prompts/workflow-assistance.d.ts +32 -0
- package/dist/prompts/workflow-assistance.d.ts.map +1 -0
- package/dist/prompts/workflow-assistance.js +130 -0
- package/dist/prompts/workflow-prompts.d.ts +9 -0
- package/dist/prompts/workflow-prompts.d.ts.map +1 -0
- package/dist/prompts/workflow-prompts.js +93 -0
- package/dist/services/benchmark.d.ts +26 -0
- package/dist/services/benchmark.d.ts.map +1 -0
- package/dist/services/benchmark.js +343 -0
- package/dist/services/prd.d.ts +136 -0
- package/dist/services/prd.d.ts.map +1 -0
- package/dist/services/prd.js +550 -0
- package/dist/services/tasks.d.ts +388 -0
- package/dist/services/tasks.d.ts.map +1 -0
- package/dist/services/tasks.js +1150 -0
- package/dist/services/workflow-ai-assistant.d.ts +74 -0
- package/dist/services/workflow-ai-assistant.d.ts.map +1 -0
- package/dist/services/workflow-ai-assistant.js +175 -0
- package/dist/services/workflow-benchmark.d.ts +34 -0
- package/dist/services/workflow-benchmark.d.ts.map +1 -0
- package/dist/services/workflow-benchmark.js +318 -0
- package/dist/services/workflow.d.ts +107 -0
- package/dist/services/workflow.d.ts.map +1 -0
- package/dist/services/workflow.js +580 -0
- package/dist/test/hooks.test.d.ts +2 -0
- package/dist/test/hooks.test.d.ts.map +1 -0
- package/dist/test/hooks.test.js +67 -0
- package/dist/test/integration/callbacks.test.d.ts +2 -0
- package/dist/test/integration/callbacks.test.d.ts.map +1 -0
- package/dist/test/integration/callbacks.test.js +64 -0
- package/dist/test/lib/ai-service/task-operations.test.d.ts +2 -0
- package/dist/test/lib/ai-service/task-operations.test.d.ts.map +1 -0
- package/dist/test/lib/ai-service/task-operations.test.js +362 -0
- package/dist/test/lib/config.test.d.ts +2 -0
- package/dist/test/lib/config.test.d.ts.map +1 -0
- package/dist/test/lib/config.test.js +128 -0
- package/dist/test/lib/git-utils.test.d.ts +2 -0
- package/dist/test/lib/git-utils.test.d.ts.map +1 -0
- package/dist/test/lib/git-utils.test.js +168 -0
- package/dist/test/mocks/mock-ai-operations.d.ts +15 -0
- package/dist/test/mocks/mock-ai-operations.d.ts.map +1 -0
- package/dist/test/mocks/mock-ai-operations.js +107 -0
- package/dist/test/mocks/mock-context-builder.d.ts +10 -0
- package/dist/test/mocks/mock-context-builder.d.ts.map +1 -0
- package/dist/test/mocks/mock-context-builder.js +81 -0
- package/dist/test/mocks/mock-model-provider.d.ts +7 -0
- package/dist/test/mocks/mock-model-provider.d.ts.map +1 -0
- package/dist/test/mocks/mock-model-provider.js +21 -0
- package/dist/test/mocks/mock-service-factory.d.ts +11 -0
- package/dist/test/mocks/mock-service-factory.d.ts.map +1 -0
- package/dist/test/mocks/mock-service-factory.js +61 -0
- package/dist/test/mocks/mock-storage.d.ts +50 -0
- package/dist/test/mocks/mock-storage.d.ts.map +1 -0
- package/dist/test/mocks/mock-storage.js +145 -0
- package/dist/test/model-parsing.test.d.ts +2 -0
- package/dist/test/model-parsing.test.d.ts.map +1 -0
- package/dist/test/model-parsing.test.js +73 -0
- package/dist/test/services/task-service.test.d.ts +2 -0
- package/dist/test/services/task-service.test.d.ts.map +1 -0
- package/dist/test/services/task-service.test.js +459 -0
- package/dist/test/storage.test.d.ts +2 -0
- package/dist/test/storage.test.d.ts.map +1 -0
- package/dist/test/storage.test.js +207 -0
- package/dist/test/task-loop-git.test.d.ts +2 -0
- package/dist/test/task-loop-git.test.d.ts.map +1 -0
- package/dist/test/task-loop-git.test.js +95 -0
- package/dist/test/test-mock-setup.d.ts +26 -0
- package/dist/test/test-mock-setup.d.ts.map +1 -0
- package/dist/test/test-mock-setup.js +41 -0
- package/dist/test/test-setup.d.ts +9 -0
- package/dist/test/test-setup.d.ts.map +1 -0
- package/dist/test/test-setup.js +44 -0
- package/dist/test/test-utils.d.ts +22 -0
- package/dist/test/test-utils.d.ts.map +1 -0
- package/dist/test/test-utils.js +37 -0
- package/dist/test/utils/ai-operation-utility.test.d.ts +2 -0
- package/dist/test/utils/ai-operation-utility.test.d.ts.map +1 -0
- package/dist/test/utils/ai-operation-utility.test.js +290 -0
- package/dist/test/utils/error-handling.test.d.ts +2 -0
- package/dist/test/utils/error-handling.test.d.ts.map +1 -0
- package/dist/test/utils/error-handling.test.js +231 -0
- package/dist/test/utils/file-utils.test.d.ts +2 -0
- package/dist/test/utils/file-utils.test.d.ts.map +1 -0
- package/dist/test/utils/file-utils.test.js +76 -0
- package/dist/test/utils/id-generator.test.d.ts +2 -0
- package/dist/test/utils/id-generator.test.d.ts.map +1 -0
- package/dist/test/utils/id-generator.test.js +41 -0
- package/dist/test/utils/model-parser.test.d.ts +2 -0
- package/dist/test/utils/model-parser.test.d.ts.map +1 -0
- package/dist/test/utils/model-parser.test.js +65 -0
- package/dist/test/validation.test.d.ts +2 -0
- package/dist/test/validation.test.d.ts.map +1 -0
- package/dist/test/validation.test.js +22 -0
- package/dist/types/callbacks.d.ts +30 -0
- package/dist/types/callbacks.d.ts.map +1 -0
- package/dist/types/callbacks.js +2 -0
- package/dist/types/index.d.ts +435 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +30 -0
- package/dist/types/mcp.d.ts +3 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +3 -0
- package/dist/types/options.d.ts +112 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +2 -0
- package/dist/types/results.d.ts +200 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +2 -0
- package/dist/types/workflow-options.d.ts +82 -0
- package/dist/types/workflow-options.d.ts.map +1 -0
- package/dist/types/workflow-options.js +2 -0
- package/dist/types/workflow-results.d.ts +82 -0
- package/dist/types/workflow-results.d.ts.map +1 -0
- package/dist/types/workflow-results.js +2 -0
- package/dist/utils/ai-config-builder.d.ts +14 -0
- package/dist/utils/ai-config-builder.d.ts.map +1 -0
- package/dist/utils/ai-config-builder.js +22 -0
- package/dist/utils/ai-operation-utility.d.ts +142 -0
- package/dist/utils/ai-operation-utility.d.ts.map +1 -0
- package/dist/utils/ai-operation-utility.js +303 -0
- package/dist/utils/ai-service-factory.d.ts +34 -0
- package/dist/utils/ai-service-factory.d.ts.map +1 -0
- package/dist/utils/ai-service-factory.js +99 -0
- package/dist/utils/error-utils.d.ts +70 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/error-utils.js +104 -0
- package/dist/utils/file-utils.d.ts +107 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +171 -0
- package/dist/utils/id-generator.d.ts +92 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +146 -0
- package/dist/utils/metadata-utils.d.ts +40 -0
- package/dist/utils/metadata-utils.d.ts.map +1 -0
- package/dist/utils/metadata-utils.js +43 -0
- package/dist/utils/model-executor-parser.d.ts +38 -0
- package/dist/utils/model-executor-parser.d.ts.map +1 -0
- package/dist/utils/model-executor-parser.js +69 -0
- package/dist/utils/model-parser.d.ts +6 -0
- package/dist/utils/model-parser.d.ts.map +1 -0
- package/dist/utils/model-parser.js +49 -0
- package/dist/utils/stack-formatter.d.ts +12 -0
- package/dist/utils/stack-formatter.d.ts.map +1 -0
- package/dist/utils/stack-formatter.js +36 -0
- package/dist/utils/storage-utils.d.ts +49 -0
- package/dist/utils/storage-utils.d.ts.map +1 -0
- package/dist/utils/storage-utils.js +80 -0
- package/dist/utils/streaming-utils.d.ts +38 -0
- package/dist/utils/streaming-utils.d.ts.map +1 -0
- package/dist/utils/streaming-utils.js +64 -0
- package/dist/utils/task-o-matic-error.d.ts +206 -0
- package/dist/utils/task-o-matic-error.d.ts.map +1 -0
- package/dist/utils/task-o-matic-error.js +304 -0
- package/package.json +40 -0
- package/src/index.ts +36 -0
- package/src/lib/ai-service/ai-operations.ts +310 -0
- package/src/lib/ai-service/base-operations.ts +139 -0
- package/src/lib/ai-service/documentation-operations.ts +438 -0
- package/src/lib/ai-service/filesystem-tools.ts +73 -0
- package/src/lib/ai-service/gemini-proxy.ts.bak +52 -0
- package/src/lib/ai-service/json-parser.ts +203 -0
- package/src/lib/ai-service/mcp-client.ts +54 -0
- package/src/lib/ai-service/model-provider.ts +192 -0
- package/src/lib/ai-service/prd-operations.ts +854 -0
- package/src/lib/ai-service/research-tools.ts +207 -0
- package/src/lib/ai-service/retry-handler.ts +89 -0
- package/src/lib/ai-service/task-operations.ts +342 -0
- package/src/lib/benchmark/registry.ts +307 -0
- package/src/lib/benchmark/runner.ts +190 -0
- package/src/lib/benchmark/storage.ts +140 -0
- package/src/lib/benchmark/types.ts +121 -0
- package/src/lib/better-t-stack-cli.ts +524 -0
- package/src/lib/bootstrap/cli-bootstrap.ts +397 -0
- package/src/lib/bootstrap/index.ts +2 -0
- package/src/lib/bootstrap/medusa-bootstrap.ts +261 -0
- package/src/lib/config-validation.ts +278 -0
- package/src/lib/config.ts +435 -0
- package/src/lib/context-builder.ts +383 -0
- package/src/lib/executors/claude-code-executor.ts +83 -0
- package/src/lib/executors/codex-executor.ts +85 -0
- package/src/lib/executors/executor-factory.ts +28 -0
- package/src/lib/executors/gemini-executor.ts +80 -0
- package/src/lib/executors/kilo-executor.ts +83 -0
- package/src/lib/executors/opencode-executor.ts +81 -0
- package/src/lib/git-utils.ts +334 -0
- package/src/lib/hooks.ts +121 -0
- package/src/lib/index.ts +166 -0
- package/src/lib/logger.ts +43 -0
- package/src/lib/notifications.ts +103 -0
- package/src/lib/prompt-builder.ts +471 -0
- package/src/lib/prompt-registry.ts +491 -0
- package/src/lib/provider-defaults.json +32 -0
- package/src/lib/storage/file-system.ts +864 -0
- package/src/lib/storage/storage-callbacks.ts +120 -0
- package/src/lib/storage/types.ts +58 -0
- package/src/lib/task-execution-core.ts +591 -0
- package/src/lib/task-execution.ts +59 -0
- package/src/lib/task-loop-execution.ts +214 -0
- package/src/lib/task-planning.ts +157 -0
- package/src/lib/task-review.ts +138 -0
- package/src/lib/validation.ts +140 -0
- package/src/prompts/documentation-detection.ts +21 -0
- package/src/prompts/documentation-recap.ts +11 -0
- package/src/prompts/index.ts +14 -0
- package/src/prompts/prd-combination.ts +32 -0
- package/src/prompts/prd-generation.ts +46 -0
- package/src/prompts/prd-parsing.ts +170 -0
- package/src/prompts/prd-question-answer.ts +25 -0
- package/src/prompts/prd-question.ts +38 -0
- package/src/prompts/prd-rework.ts +79 -0
- package/src/prompts/prd-suggest-stack.ts +97 -0
- package/src/prompts/task-breakdown.ts +149 -0
- package/src/prompts/task-enhancement.ts +138 -0
- package/src/prompts/task-execution.ts +22 -0
- package/src/prompts/task-planning.ts +64 -0
- package/src/prompts/workflow-assistance.ts +151 -0
- package/src/prompts/workflow-prompts.ts +97 -0
- package/src/services/benchmark.ts +433 -0
- package/src/services/prd.ts +845 -0
- package/src/services/tasks.ts +1515 -0
- package/src/services/workflow-ai-assistant.ts +298 -0
- package/src/services/workflow-benchmark.ts +339 -0
- package/src/services/workflow.ts +779 -0
- package/src/test/hooks.test.ts +77 -0
- package/src/test/integration/callbacks.test.ts +39 -0
- package/src/test/lib/ai-service/task-operations.test.ts +430 -0
- package/src/test/lib/config.test.ts +150 -0
- package/src/test/lib/git-utils.test.ts +198 -0
- package/src/test/mocks/mock-ai-operations.ts +205 -0
- package/src/test/mocks/mock-context-builder.ts +84 -0
- package/src/test/mocks/mock-model-provider.ts +21 -0
- package/src/test/mocks/mock-service-factory.ts +64 -0
- package/src/test/mocks/mock-storage.ts +204 -0
- package/src/test/model-parsing.test.ts +78 -0
- package/src/test/services/task-service.test.ts +551 -0
- package/src/test/storage.test.ts +206 -0
- package/src/test/task-loop-git.test.ts +142 -0
- package/src/test/test-mock-setup.ts +46 -0
- package/src/test/test-setup.ts +48 -0
- package/src/test/test-utils.ts +45 -0
- package/src/test/utils/ai-operation-utility.test.ts +306 -0
- package/src/test/utils/error-handling.test.ts +241 -0
- package/src/test/utils/file-utils.test.ts +80 -0
- package/src/test/utils/id-generator.test.ts +44 -0
- package/src/test/utils/model-parser.test.ts +67 -0
- package/src/test/validation.test.ts +19 -0
- package/src/types/callbacks.ts +14 -0
- package/src/types/index.ts +628 -0
- package/src/types/mcp.ts +5 -0
- package/src/types/options.ts +165 -0
- package/src/types/results.ts +216 -0
- package/src/types/workflow-options.ts +113 -0
- package/src/types/workflow-results.ts +87 -0
- package/src/utils/ai-config-builder.ts +33 -0
- package/src/utils/ai-operation-utility.ts +380 -0
- package/src/utils/ai-service-factory.ts +125 -0
- package/src/utils/error-utils.ts +124 -0
- package/src/utils/file-utils.ts +197 -0
- package/src/utils/id-generator.ts +168 -0
- package/src/utils/metadata-utils.ts +48 -0
- package/src/utils/model-executor-parser.ts +80 -0
- package/src/utils/model-parser.ts +58 -0
- package/src/utils/stack-formatter.ts +53 -0
- package/src/utils/storage-utils.ts +94 -0
- package/src/utils/streaming-utils.ts +91 -0
- package/src/utils/task-o-matic-error.ts +393 -0
- package/tsconfig.json +20 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.configManager = exports.ConfigManager = exports.providerDefaults = void 0;
|
|
7
|
+
exports.createDefaultConfigCallbacks = createDefaultConfigCallbacks;
|
|
8
|
+
exports.setupWorkingDirectory = setupWorkingDirectory;
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const process_1 = require("process");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const dotenv_1 = require("dotenv");
|
|
13
|
+
const config_validation_1 = require("./config-validation");
|
|
14
|
+
const task_o_matic_error_1 = require("../utils/task-o-matic-error");
|
|
15
|
+
const logger_1 = require("./logger");
|
|
16
|
+
// Provider-specific sensible defaults for 2025
|
|
17
|
+
// Externalized to JSON for easy updates
|
|
18
|
+
const provider_defaults_json_1 = __importDefault(require("./provider-defaults.json"));
|
|
19
|
+
exports.providerDefaults = provider_defaults_json_1.default;
|
|
20
|
+
function getApiKeyFromEnv(provider, getEnv) {
|
|
21
|
+
switch (provider) {
|
|
22
|
+
case "openrouter":
|
|
23
|
+
return getEnv("OPENROUTER_API_KEY");
|
|
24
|
+
case "anthropic":
|
|
25
|
+
return getEnv("ANTHROPIC_API_KEY");
|
|
26
|
+
case "openai":
|
|
27
|
+
return getEnv("OPENAI_API_KEY");
|
|
28
|
+
case "custom":
|
|
29
|
+
return getEnv("CUSTOM_API_KEY");
|
|
30
|
+
case "zai":
|
|
31
|
+
return getEnv("ZAI_API_KEY");
|
|
32
|
+
default:
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function createDefaultConfigCallbacks(workingDir = (0, process_1.cwd)()) {
|
|
37
|
+
// Ensure dotenv is loaded for the default callbacks
|
|
38
|
+
const envPath = (0, path_1.join)(workingDir, ".env");
|
|
39
|
+
if ((0, fs_1.existsSync)(envPath)) {
|
|
40
|
+
(0, dotenv_1.config)({ path: envPath });
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
read: async (key) => {
|
|
44
|
+
// If key is relative, assume it's in .task-o-matic dir relative to workingDir
|
|
45
|
+
// But ConfigManager usually passes "config.json"
|
|
46
|
+
// We need to resolve it.
|
|
47
|
+
// For default callbacks, we replicate the original behavior:
|
|
48
|
+
// .task-o-matic/config.json in workingDir
|
|
49
|
+
const configPath = (0, path_1.join)(workingDir, ".task-o-matic", key);
|
|
50
|
+
if ((0, fs_1.existsSync)(configPath)) {
|
|
51
|
+
return (0, fs_1.readFileSync)(configPath, "utf-8");
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
},
|
|
55
|
+
write: async (key, value) => {
|
|
56
|
+
const taskOMaticDir = (0, path_1.join)(workingDir, ".task-o-matic");
|
|
57
|
+
if (!(0, fs_1.existsSync)(taskOMaticDir)) {
|
|
58
|
+
(0, fs_1.mkdirSync)(taskOMaticDir, { recursive: true });
|
|
59
|
+
}
|
|
60
|
+
const configPath = (0, path_1.join)(taskOMaticDir, key);
|
|
61
|
+
(0, fs_1.writeFileSync)(configPath, value, "utf-8");
|
|
62
|
+
},
|
|
63
|
+
getEnv: (key) => process.env[key],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
class ConfigManager {
|
|
67
|
+
config = null;
|
|
68
|
+
customWorkingDir = null;
|
|
69
|
+
callbacks;
|
|
70
|
+
constructor(callbacks, workingDirectory) {
|
|
71
|
+
if (workingDirectory) {
|
|
72
|
+
this.customWorkingDir = (0, path_1.resolve)(workingDirectory);
|
|
73
|
+
}
|
|
74
|
+
// If callbacks not provided, create defaults using the working directory
|
|
75
|
+
this.callbacks =
|
|
76
|
+
callbacks || createDefaultConfigCallbacks(this.getWorkingDirectory());
|
|
77
|
+
// We cannot await in constructor.
|
|
78
|
+
// Consumers MUST call load() or ensure it's loaded before accessing config.
|
|
79
|
+
// For backward compatibility in CLI (where sync access was common),
|
|
80
|
+
// we might need a way to force sync load if using default callbacks?
|
|
81
|
+
// But we want to support async callbacks.
|
|
82
|
+
// So we enforce async initialization pattern.
|
|
83
|
+
}
|
|
84
|
+
setWorkingDirectory(dir) {
|
|
85
|
+
this.customWorkingDir = (0, path_1.resolve)(dir);
|
|
86
|
+
// Re-create default callbacks to point to new dir
|
|
87
|
+
this.callbacks = createDefaultConfigCallbacks(this.getWorkingDirectory());
|
|
88
|
+
// Invalidate config so next access requires reload
|
|
89
|
+
this.config = null;
|
|
90
|
+
}
|
|
91
|
+
setCallbacks(callbacks) {
|
|
92
|
+
this.callbacks = callbacks;
|
|
93
|
+
this.config = null;
|
|
94
|
+
}
|
|
95
|
+
getWorkingDirectory() {
|
|
96
|
+
return this.customWorkingDir || (0, process_1.cwd)();
|
|
97
|
+
}
|
|
98
|
+
getTaskOMaticDir() {
|
|
99
|
+
return (0, path_1.join)(this.getWorkingDirectory(), ".task-o-matic");
|
|
100
|
+
}
|
|
101
|
+
loadEnvConfig() {
|
|
102
|
+
const providerStr = this.callbacks.getEnv("AI_PROVIDER")?.toLowerCase();
|
|
103
|
+
const provider = providerStr ? providerStr : undefined;
|
|
104
|
+
// Check if provider is valid if set
|
|
105
|
+
// (This validation is loose here, strict validation happens in validateConfig)
|
|
106
|
+
const maxTokensStr = this.callbacks.getEnv("AI_MAX_TOKENS");
|
|
107
|
+
const tempStr = this.callbacks.getEnv("AI_TEMPERATURE");
|
|
108
|
+
const modelStr = this.callbacks.getEnv("AI_MODEL");
|
|
109
|
+
const config = {};
|
|
110
|
+
if (provider)
|
|
111
|
+
config.provider = provider;
|
|
112
|
+
if (modelStr)
|
|
113
|
+
config.model = modelStr;
|
|
114
|
+
if (maxTokensStr)
|
|
115
|
+
config.maxTokens = parseInt(maxTokensStr);
|
|
116
|
+
if (tempStr)
|
|
117
|
+
config.temperature = parseFloat(tempStr);
|
|
118
|
+
// API Key logic needs to know the provider.
|
|
119
|
+
// If provider is not in env, we should check the resolved provider...
|
|
120
|
+
// But here we only return partial env overrides.
|
|
121
|
+
// The API key fetching logic in getApiKeyFromEnv depends on the provider.
|
|
122
|
+
// If the provider comes from file, we can't know it here easily if we are just returning overrides.
|
|
123
|
+
// However, getApiKeyFromEnv is a helper.
|
|
124
|
+
// We can fetch ALL potential API keys? No, that's messy.
|
|
125
|
+
// Or we just fetch the API key if AI_PROVIDER is set?
|
|
126
|
+
// If AI_PROVIDER is NOT set, we don't know which env var to read for the key yet
|
|
127
|
+
// (unless we assume the default or the file one).
|
|
128
|
+
// If we return undefined for apiKey here, it might overwrite the file one?
|
|
129
|
+
// No, undefined properties don't overwrite if we use spread correctly?
|
|
130
|
+
// { ...a, ...b } where b has undefined properties...
|
|
131
|
+
// In JS/TS spread { ...{a:1}, ...{a: undefined} } results in {a: undefined}.
|
|
132
|
+
// So we must NOT include undefined keys in the returned object.
|
|
133
|
+
if (provider) {
|
|
134
|
+
const key = getApiKeyFromEnv(provider, this.callbacks.getEnv);
|
|
135
|
+
if (key)
|
|
136
|
+
config.apiKey = key;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// If provider not in env, we might miss the API key from env if the user
|
|
140
|
+
// intended to use file-provider + env-key.
|
|
141
|
+
// This is a bit tricky with the current structure.
|
|
142
|
+
// But let's stick to the fix for provider override first.
|
|
143
|
+
// We will deal with API key resolution merging later or assume user sets both in env.
|
|
144
|
+
// Actually, we can check all possible keys?
|
|
145
|
+
// Or better: The merge logic in load() is complex.
|
|
146
|
+
// Let's defer API key resolution to after we know the final provider?
|
|
147
|
+
// But load() does: ai: { ...defaultConfig.ai, ...fileConfig.ai, ...envConfig }
|
|
148
|
+
// If I change loadEnvConfig to NOT return apiKey if provider is missing,
|
|
149
|
+
// then apiKey will come from fileConfig or defaultConfig.
|
|
150
|
+
}
|
|
151
|
+
return config;
|
|
152
|
+
}
|
|
153
|
+
async load() {
|
|
154
|
+
const envConfig = this.loadEnvConfig();
|
|
155
|
+
// Default provider is openrouter
|
|
156
|
+
const defaultProvider = envConfig.provider || "openrouter";
|
|
157
|
+
// We can try to get API key for default provider if not in envConfig
|
|
158
|
+
let defaultApiKey = envConfig.apiKey;
|
|
159
|
+
if (!defaultApiKey) {
|
|
160
|
+
defaultApiKey = getApiKeyFromEnv(defaultProvider, this.callbacks.getEnv);
|
|
161
|
+
}
|
|
162
|
+
const defaultConfig = {
|
|
163
|
+
ai: {
|
|
164
|
+
provider: "openrouter",
|
|
165
|
+
model: "z-ai/glm-4.6",
|
|
166
|
+
maxTokens: 32768,
|
|
167
|
+
temperature: 0.5,
|
|
168
|
+
apiKey: defaultApiKey, // This might be overwritten by file or envConfig later
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
try {
|
|
172
|
+
// Use relative path "config.json" - callbacks handle resolution
|
|
173
|
+
const configData = await this.callbacks.read("config.json");
|
|
174
|
+
if (configData) {
|
|
175
|
+
const fileConfig = JSON.parse(configData);
|
|
176
|
+
// We need to resolve the final provider to get the correct API key from env
|
|
177
|
+
// if it wasn't provided in envConfig.
|
|
178
|
+
const finalProvider = envConfig.provider || fileConfig.ai?.provider || defaultConfig.ai.provider;
|
|
179
|
+
// If envConfig didn't provide a key, check if we can get it based on finalProvider
|
|
180
|
+
let finalApiKey = envConfig.apiKey;
|
|
181
|
+
if (!finalApiKey) {
|
|
182
|
+
finalApiKey = getApiKeyFromEnv(finalProvider, this.callbacks.getEnv);
|
|
183
|
+
}
|
|
184
|
+
// We construct a refined envConfig that includes the correct API key
|
|
185
|
+
const refinedEnvConfig = { ...envConfig };
|
|
186
|
+
if (finalApiKey) {
|
|
187
|
+
refinedEnvConfig.apiKey = finalApiKey;
|
|
188
|
+
}
|
|
189
|
+
const mergedConfig = {
|
|
190
|
+
...defaultConfig,
|
|
191
|
+
...fileConfig,
|
|
192
|
+
ai: { ...defaultConfig.ai, ...fileConfig.ai, ...refinedEnvConfig },
|
|
193
|
+
};
|
|
194
|
+
// Validate the merged configuration
|
|
195
|
+
const validatedConfig = (0, config_validation_1.validateConfig)(mergedConfig);
|
|
196
|
+
this.config = validatedConfig;
|
|
197
|
+
if (this.config && this.config.workingDirectory) {
|
|
198
|
+
this.customWorkingDir = this.config.workingDirectory;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// Apply envConfig to defaults
|
|
203
|
+
const mergedConfig = {
|
|
204
|
+
...defaultConfig,
|
|
205
|
+
ai: { ...defaultConfig.ai, ...envConfig }
|
|
206
|
+
};
|
|
207
|
+
this.config = (0, config_validation_1.validateConfig)(mergedConfig);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
logger_1.logger.warn(`Failed to read or validate config, using defaults: ${error}`);
|
|
212
|
+
// Even defaults should be validated
|
|
213
|
+
this.config = (0, config_validation_1.validateConfig)(defaultConfig);
|
|
214
|
+
}
|
|
215
|
+
return this.config;
|
|
216
|
+
}
|
|
217
|
+
async save() {
|
|
218
|
+
if (!this.config) {
|
|
219
|
+
throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.CONFIGURATION_ERROR, "Config not loaded, cannot save.", {
|
|
220
|
+
suggestions: ["Call await configManager.load() before saving"],
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
try {
|
|
224
|
+
await this.callbacks.write("config.json", JSON.stringify(this.config, null, 2));
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
logger_1.logger.error(`Failed to save config: ${error}`);
|
|
228
|
+
throw error;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
getConfig() {
|
|
232
|
+
if (!this.config) {
|
|
233
|
+
// If we are here, it means load() wasn't called or hasn't finished.
|
|
234
|
+
// Since we can't be async here, we must throw or return defaults.
|
|
235
|
+
// Returning defaults might hide issues.
|
|
236
|
+
// Throwing forces users to await load().
|
|
237
|
+
throw (0, task_o_matic_error_1.createStandardError)(task_o_matic_error_1.TaskOMaticErrorCodes.CONFIGURATION_ERROR, "Config not loaded. Call await configManager.load() first.", {
|
|
238
|
+
context: "Configuration must be loaded before access",
|
|
239
|
+
suggestions: [
|
|
240
|
+
"Call await configManager.load() first",
|
|
241
|
+
"Check initialization order",
|
|
242
|
+
],
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
return this.config;
|
|
246
|
+
}
|
|
247
|
+
getAIConfig() {
|
|
248
|
+
return this.getConfig().ai;
|
|
249
|
+
}
|
|
250
|
+
async setAIConfig(aiConfig) {
|
|
251
|
+
if (!this.config) {
|
|
252
|
+
await this.load();
|
|
253
|
+
}
|
|
254
|
+
// Validate the partial config before merging
|
|
255
|
+
const validatedPartial = (0, config_validation_1.validatePartialAIConfig)(aiConfig);
|
|
256
|
+
// Merge and validate the full config
|
|
257
|
+
const mergedAIConfig = { ...this.config.ai, ...validatedPartial };
|
|
258
|
+
const validatedConfig = (0, config_validation_1.validateConfig)({
|
|
259
|
+
...this.config,
|
|
260
|
+
ai: mergedAIConfig,
|
|
261
|
+
});
|
|
262
|
+
this.config = validatedConfig;
|
|
263
|
+
await this.save();
|
|
264
|
+
}
|
|
265
|
+
setConfig(config) {
|
|
266
|
+
this.config = config;
|
|
267
|
+
}
|
|
268
|
+
// Helper for legacy code that might need path (deprecated for direct use)
|
|
269
|
+
getConfigFilePath() {
|
|
270
|
+
return (0, path_1.join)(this.getTaskOMaticDir(), "config.json");
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Validate configuration independently of load().
|
|
274
|
+
* Can be used to validate config before applying changes.
|
|
275
|
+
*/
|
|
276
|
+
validate(configToValidate) {
|
|
277
|
+
const errors = [];
|
|
278
|
+
const config = configToValidate || this.config;
|
|
279
|
+
if (!config) {
|
|
280
|
+
return {
|
|
281
|
+
valid: false,
|
|
282
|
+
errors: [
|
|
283
|
+
"No configuration to validate. Either provide a config or call load() first.",
|
|
284
|
+
],
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
// Validate AI config
|
|
288
|
+
if (config.ai) {
|
|
289
|
+
const { provider, model, apiKey, maxTokens, temperature } = config.ai;
|
|
290
|
+
// Validate provider
|
|
291
|
+
if (provider &&
|
|
292
|
+
![
|
|
293
|
+
"openrouter",
|
|
294
|
+
"anthropic",
|
|
295
|
+
"openai",
|
|
296
|
+
"custom",
|
|
297
|
+
"gemini",
|
|
298
|
+
"zai",
|
|
299
|
+
].includes(provider)) {
|
|
300
|
+
errors.push(`Invalid provider: ${provider}. Must be one of: openrouter, anthropic, openai, custom, gemini, zai`);
|
|
301
|
+
}
|
|
302
|
+
// Validate model
|
|
303
|
+
if (model !== undefined && typeof model !== "string") {
|
|
304
|
+
errors.push("Model must be a string");
|
|
305
|
+
}
|
|
306
|
+
// Validate maxTokens
|
|
307
|
+
if (maxTokens !== undefined) {
|
|
308
|
+
if (typeof maxTokens !== "number" ||
|
|
309
|
+
maxTokens < 1 ||
|
|
310
|
+
maxTokens > 200000) {
|
|
311
|
+
errors.push("maxTokens must be a number between 1 and 200000");
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// Validate temperature
|
|
315
|
+
if (temperature !== undefined) {
|
|
316
|
+
if (typeof temperature !== "number" ||
|
|
317
|
+
temperature < 0 ||
|
|
318
|
+
temperature > 2) {
|
|
319
|
+
errors.push("temperature must be a number between 0 and 2");
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// Warn about missing API key (not an error, just a warning)
|
|
323
|
+
if (!apiKey && provider !== "custom") {
|
|
324
|
+
// This is a soft validation - API key can be set via env vars
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
valid: errors.length === 0,
|
|
329
|
+
errors,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
exports.ConfigManager = ConfigManager;
|
|
334
|
+
exports.configManager = new ConfigManager();
|
|
335
|
+
/**
|
|
336
|
+
* Helper function to set working directory and reload config.
|
|
337
|
+
* Combines the common pattern of setWorkingDirectory + load.
|
|
338
|
+
*
|
|
339
|
+
* @param dir - Working directory path
|
|
340
|
+
* @param manager - ConfigManager instance (defaults to singleton)
|
|
341
|
+
* @returns Loaded config
|
|
342
|
+
*
|
|
343
|
+
* @example
|
|
344
|
+
* ```typescript
|
|
345
|
+
* await setupWorkingDirectory("/path/to/project");
|
|
346
|
+
* ```
|
|
347
|
+
*/
|
|
348
|
+
async function setupWorkingDirectory(dir, manager = exports.configManager) {
|
|
349
|
+
manager.setWorkingDirectory(dir);
|
|
350
|
+
return await manager.load();
|
|
351
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { TaskContext, TaskDocumentation } from "../types";
|
|
2
|
+
import { TaskRepository } from "./storage/types";
|
|
3
|
+
export interface FileStats {
|
|
4
|
+
mtime: number;
|
|
5
|
+
isDirectory: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ContextCallbacks {
|
|
8
|
+
readFile: (path: string) => Promise<string | null>;
|
|
9
|
+
fileExists: (path: string) => Promise<boolean>;
|
|
10
|
+
listFiles: (dir: string) => Promise<string[]>;
|
|
11
|
+
stat: (path: string) => Promise<FileStats | null>;
|
|
12
|
+
}
|
|
13
|
+
export declare function createDefaultContextCallbacks(): ContextCallbacks;
|
|
14
|
+
export declare class ContextBuilder {
|
|
15
|
+
private storage;
|
|
16
|
+
private callbacks;
|
|
17
|
+
private taskOMatic;
|
|
18
|
+
private initialized;
|
|
19
|
+
constructor(storage: TaskRepository, callbacks?: ContextCallbacks);
|
|
20
|
+
private ensureInitialized;
|
|
21
|
+
/**
|
|
22
|
+
* Build comprehensive context for AI operations
|
|
23
|
+
*/
|
|
24
|
+
buildContext(taskId: string): Promise<TaskContext>;
|
|
25
|
+
/**
|
|
26
|
+
* Build context for new tasks (without requiring existing task)
|
|
27
|
+
*/
|
|
28
|
+
buildContextForNewTask(title: string, description?: string, prdFile?: string): Promise<TaskContext>;
|
|
29
|
+
/**
|
|
30
|
+
* Get stack configuration from project (set by bootstrap)
|
|
31
|
+
*/
|
|
32
|
+
private getStackConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Get task documentation references
|
|
35
|
+
*/
|
|
36
|
+
private getTaskDocumentation;
|
|
37
|
+
/**
|
|
38
|
+
* Get full task content from MD file
|
|
39
|
+
*/
|
|
40
|
+
private getTaskFullContent;
|
|
41
|
+
/**
|
|
42
|
+
* Read documentation file content
|
|
43
|
+
*/
|
|
44
|
+
private readDocumentationFile;
|
|
45
|
+
/**
|
|
46
|
+
* Check if documentation is fresh (less than 7 days old)
|
|
47
|
+
*/
|
|
48
|
+
isDocumentationFresh(documentation: TaskDocumentation): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Check if documentation is stale (more than 30 days old)
|
|
51
|
+
*/
|
|
52
|
+
isDocumentationStale(documentation: TaskDocumentation): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Get PRD content from file path
|
|
55
|
+
*/
|
|
56
|
+
private getPRDContent;
|
|
57
|
+
/**
|
|
58
|
+
* Get relevant PRD content based on task title/description
|
|
59
|
+
*/
|
|
60
|
+
private getRelevantPRDContent;
|
|
61
|
+
/**
|
|
62
|
+
* Format context for AI prompts
|
|
63
|
+
*/
|
|
64
|
+
formatContextForAI(context: TaskContext): string;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=context-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/lib/context-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,WAAW,EAAa,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;CACnD;AAED,wBAAgB,6BAA6B,IAAI,gBAAgB,CA4BhE;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,gBAAgB;IAKjE,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsCxD;;OAEG;IACG,sBAAsB,CAC1B,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC;IAsBvB;;OAEG;YACW,cAAc;IA6C5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,qBAAqB;IAmBnC;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,iBAAiB,GAAG,OAAO;IAK/D;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,iBAAiB,GAAG,OAAO;IAK/D;;OAEG;YACW,aAAa;IAkB3B;;OAEG;YACW,qBAAqB;IAqDnC;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;CAmDjD"}
|