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
package/README.md
ADDED
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
# task-o-matic-core
|
|
2
|
+
|
|
3
|
+
Core library for Task-O-Matic - AI-powered task management for TUI, web applications, and custom integrations.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`task-o-matic-core` is the foundational library that provides all the core functionality for task management, PRD processing, AI operations, and workflow automation. It's designed to be framework-agnostic and can be integrated into any Node.js application.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install task-o-matic-core
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- 🤖 **AI-Powered Task Management**: Create, enhance, and manage tasks with AI assistance
|
|
18
|
+
- 📋 **PRD Processing**: Parse and refine Product Requirements Documents
|
|
19
|
+
- 🎯 **Workflow Automation**: Complete project lifecycle management
|
|
20
|
+
- 📊 **Benchmarking**: Compare AI model performance and quality
|
|
21
|
+
- 💾 **Local Storage**: File-based storage in `.task-o-matic/` directory
|
|
22
|
+
- 🌊 **Streaming Support**: Real-time AI response streaming
|
|
23
|
+
- 🔧 **Multi-Provider AI**: Support for OpenAI, Anthropic, OpenRouter, and custom providers
|
|
24
|
+
- 🎭 **Framework-Agnostic**: Use in CLI, TUI, web apps, or any Node.js project
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
### Basic Task Management
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { TaskService } from "task-o-matic-core";
|
|
32
|
+
|
|
33
|
+
const taskService = new TaskService();
|
|
34
|
+
|
|
35
|
+
// Create a task with AI enhancement
|
|
36
|
+
const result = await taskService.createTask({
|
|
37
|
+
title: "Implement user authentication",
|
|
38
|
+
content: "Add login and signup functionality",
|
|
39
|
+
aiEnhance: true,
|
|
40
|
+
aiOptions: {
|
|
41
|
+
aiProvider: "anthropic",
|
|
42
|
+
aiModel: "claude-3-5-sonnet",
|
|
43
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
44
|
+
},
|
|
45
|
+
callbacks: {
|
|
46
|
+
onProgress: (event) => {
|
|
47
|
+
console.log(`Progress: ${event.message}`);
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
console.log("Task created:", result.task);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Complete Workflow Setup
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import { WorkflowService } from "task-o-matic-core";
|
|
59
|
+
|
|
60
|
+
const workflowService = new WorkflowService();
|
|
61
|
+
|
|
62
|
+
const result = await workflowService.initializeProject({
|
|
63
|
+
projectName: "my-app",
|
|
64
|
+
initMethod: "quick",
|
|
65
|
+
bootstrap: true,
|
|
66
|
+
aiOptions: {
|
|
67
|
+
aiProvider: "anthropic",
|
|
68
|
+
aiModel: "claude-3-5-sonnet",
|
|
69
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
70
|
+
},
|
|
71
|
+
callbacks: {
|
|
72
|
+
onProgress: (event) => {
|
|
73
|
+
console.log(`Progress: ${event.message}`);
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
console.log("Project initialized:", result.projectName);
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Core Services
|
|
82
|
+
|
|
83
|
+
### TaskService
|
|
84
|
+
|
|
85
|
+
Manages task lifecycle including creation, enhancement, splitting, and execution.
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { TaskService } from "task-o-matic-core";
|
|
89
|
+
|
|
90
|
+
const taskService = new TaskService();
|
|
91
|
+
|
|
92
|
+
// Create a task
|
|
93
|
+
const createResult = await taskService.createTask({
|
|
94
|
+
title: "Add payment integration",
|
|
95
|
+
content: "Integrate Stripe for payment processing",
|
|
96
|
+
aiEnhance: true,
|
|
97
|
+
aiOptions: {
|
|
98
|
+
aiProvider: "openai",
|
|
99
|
+
aiModel: "gpt-4",
|
|
100
|
+
aiKey: process.env.OPENAI_API_KEY,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// List all tasks
|
|
105
|
+
const tasks = await taskService.listTasks();
|
|
106
|
+
|
|
107
|
+
// Get a specific task
|
|
108
|
+
const task = await taskService.getTask(createResult.task.id);
|
|
109
|
+
|
|
110
|
+
// Update a task
|
|
111
|
+
const updated = await taskService.updateTask(createResult.task.id, {
|
|
112
|
+
status: "in-progress",
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Split a complex task into subtasks
|
|
116
|
+
const splitResult = await taskService.splitTask({
|
|
117
|
+
taskId: createResult.task.id,
|
|
118
|
+
aiOptions: {
|
|
119
|
+
aiProvider: "anthropic",
|
|
120
|
+
aiModel: "claude-3-5-sonnet",
|
|
121
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Execute a task
|
|
126
|
+
const executionResult = await taskService.executeTask({
|
|
127
|
+
taskId: createResult.task.id,
|
|
128
|
+
aiOptions: {
|
|
129
|
+
aiProvider: "anthropic",
|
|
130
|
+
aiModel: "claude-3-5-sonnet",
|
|
131
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### PRDService
|
|
137
|
+
|
|
138
|
+
Handles Product Requirements Document parsing, refinement, and question generation.
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
import { PRDService } from "task-o-matic-core";
|
|
142
|
+
|
|
143
|
+
const prdService = new PRDService();
|
|
144
|
+
|
|
145
|
+
// Parse a PRD file
|
|
146
|
+
const parseResult = await prdService.parsePRD({
|
|
147
|
+
file: "./requirements.md",
|
|
148
|
+
aiOptions: {
|
|
149
|
+
aiProvider: "anthropic",
|
|
150
|
+
aiModel: "claude-3-5-sonnet",
|
|
151
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
152
|
+
},
|
|
153
|
+
callbacks: {
|
|
154
|
+
onProgress: (event) => {
|
|
155
|
+
console.log(event.message);
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
console.log("PRD parsed:", parseResult.prd);
|
|
161
|
+
|
|
162
|
+
// Generate questions and refine PRD with AI answering
|
|
163
|
+
const refineResult = await prdService.refinePRDWithQuestions({
|
|
164
|
+
file: "./requirements.md",
|
|
165
|
+
questionMode: "ai", // or "user" for interactive
|
|
166
|
+
questionAIOptions: {
|
|
167
|
+
// Optional: use a different AI for answering
|
|
168
|
+
aiProvider: "openrouter",
|
|
169
|
+
aiModel: "anthropic/claude-3-opus",
|
|
170
|
+
aiReasoning: "enabled", // Enable reasoning for better answers
|
|
171
|
+
},
|
|
172
|
+
workingDirectory: process.cwd(),
|
|
173
|
+
aiOptions: {
|
|
174
|
+
aiProvider: "anthropic",
|
|
175
|
+
aiModel: "claude-3-5-sonnet",
|
|
176
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
177
|
+
},
|
|
178
|
+
callbacks: {
|
|
179
|
+
onProgress: (event) => {
|
|
180
|
+
console.log(event.message);
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
console.log(`Refined PRD with ${refineResult.questions.length} questions`);
|
|
186
|
+
refineResult.questions.forEach((q, i) => {
|
|
187
|
+
console.log(`Q${i + 1}: ${q}`);
|
|
188
|
+
console.log(`A${i + 1}: ${refineResult.answers[q]}`);
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Rework PRD with feedback
|
|
192
|
+
const reworkResult = await prdService.reworkPRD({
|
|
193
|
+
file: "./requirements.md",
|
|
194
|
+
feedback: "Add more details about security requirements",
|
|
195
|
+
aiOptions: {
|
|
196
|
+
aiProvider: "anthropic",
|
|
197
|
+
aiModel: "claude-3-5-sonnet",
|
|
198
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### WorkflowService
|
|
204
|
+
|
|
205
|
+
Provides complete project lifecycle management from initialization to task generation.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
import { WorkflowService } from "task-o-matic-core";
|
|
209
|
+
|
|
210
|
+
const workflowService = new WorkflowService();
|
|
211
|
+
|
|
212
|
+
// Initialize project with quick setup
|
|
213
|
+
const initResult = await workflowService.initializeProject({
|
|
214
|
+
projectName: "my-saas-app",
|
|
215
|
+
initMethod: "quick",
|
|
216
|
+
bootstrap: true,
|
|
217
|
+
aiOptions: {
|
|
218
|
+
aiProvider: "anthropic",
|
|
219
|
+
aiModel: "claude-3-5-sonnet",
|
|
220
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
221
|
+
},
|
|
222
|
+
callbacks: {
|
|
223
|
+
onProgress: (event) => {
|
|
224
|
+
console.log(`Progress: ${event.message}`);
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// Define PRD from description
|
|
230
|
+
const prdResult = await workflowService.definePRD({
|
|
231
|
+
method: "ai",
|
|
232
|
+
description: "A SaaS platform for team collaboration with real-time chat, file sharing, and task management",
|
|
233
|
+
aiOptions: {
|
|
234
|
+
aiProvider: "anthropic",
|
|
235
|
+
aiModel: "claude-3-5-sonnet",
|
|
236
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
237
|
+
},
|
|
238
|
+
callbacks: {
|
|
239
|
+
onProgress: (event) => {
|
|
240
|
+
console.log(event.message);
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// Refine PRD with questions
|
|
246
|
+
const refineResult = await workflowService.refinePRD({
|
|
247
|
+
questionMode: "ai",
|
|
248
|
+
aiOptions: {
|
|
249
|
+
aiProvider: "anthropic",
|
|
250
|
+
aiModel: "claude-3-5-sonnet",
|
|
251
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
252
|
+
},
|
|
253
|
+
callbacks: {
|
|
254
|
+
onProgress: (event) => {
|
|
255
|
+
console.log(event.message);
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
// Generate tasks from PRD
|
|
261
|
+
const tasksResult = await workflowService.generateTasks({
|
|
262
|
+
instructions: "Break down into 2-4 hour tasks",
|
|
263
|
+
aiOptions: {
|
|
264
|
+
aiProvider: "anthropic",
|
|
265
|
+
aiModel: "claude-3-5-sonnet",
|
|
266
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
267
|
+
},
|
|
268
|
+
callbacks: {
|
|
269
|
+
onProgress: (event) => {
|
|
270
|
+
console.log(event.message);
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
// Split complex tasks
|
|
276
|
+
const splitResult = await workflowService.splitTasks({
|
|
277
|
+
splitAll: true,
|
|
278
|
+
aiOptions: {
|
|
279
|
+
aiProvider: "anthropic",
|
|
280
|
+
aiModel: "claude-3-5-sonnet",
|
|
281
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
282
|
+
},
|
|
283
|
+
callbacks: {
|
|
284
|
+
onProgress: (event) => {
|
|
285
|
+
console.log(event.message);
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
});
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### BenchmarkService
|
|
292
|
+
|
|
293
|
+
Compare AI model performance and quality across different operations.
|
|
294
|
+
|
|
295
|
+
```typescript
|
|
296
|
+
import { BenchmarkService } from "task-o-matic-core";
|
|
297
|
+
|
|
298
|
+
const benchmarkService = new BenchmarkService();
|
|
299
|
+
|
|
300
|
+
// Benchmark PRD parsing
|
|
301
|
+
const prdBenchmark = await benchmarkService.runBenchmark({
|
|
302
|
+
type: "prd-parse",
|
|
303
|
+
input: {
|
|
304
|
+
file: "./requirements.md",
|
|
305
|
+
},
|
|
306
|
+
models: [
|
|
307
|
+
{
|
|
308
|
+
provider: "openai",
|
|
309
|
+
model: "gpt-4o",
|
|
310
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
provider: "anthropic",
|
|
314
|
+
model: "claude-3-5-sonnet",
|
|
315
|
+
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
316
|
+
},
|
|
317
|
+
],
|
|
318
|
+
concurrency: 2,
|
|
319
|
+
delay: 1000,
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
console.log("Benchmark results:", prdBenchmark.results);
|
|
323
|
+
|
|
324
|
+
// Benchmark task breakdown
|
|
325
|
+
const taskBenchmark = await benchmarkService.runBenchmark({
|
|
326
|
+
type: "task-breakdown",
|
|
327
|
+
input: {
|
|
328
|
+
taskId: "task-id-here",
|
|
329
|
+
},
|
|
330
|
+
models: [
|
|
331
|
+
{
|
|
332
|
+
provider: "openai",
|
|
333
|
+
model: "gpt-4o",
|
|
334
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
provider: "anthropic",
|
|
338
|
+
model: "claude-3-5-sonnet",
|
|
339
|
+
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
340
|
+
},
|
|
341
|
+
],
|
|
342
|
+
concurrency: 2,
|
|
343
|
+
});
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Streaming Support
|
|
347
|
+
|
|
348
|
+
Stream AI responses in real-time for better user experience.
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
import { TaskService } from "task-o-matic-core";
|
|
352
|
+
|
|
353
|
+
const taskService = new TaskService();
|
|
354
|
+
|
|
355
|
+
// Create task with streaming
|
|
356
|
+
const result = await taskService.createTask({
|
|
357
|
+
title: "Add payment integration",
|
|
358
|
+
aiEnhance: true,
|
|
359
|
+
streamingOptions: {
|
|
360
|
+
enabled: true,
|
|
361
|
+
onChunk: (chunk) => {
|
|
362
|
+
// Process each chunk as it arrives
|
|
363
|
+
console.log(chunk);
|
|
364
|
+
},
|
|
365
|
+
onFinish: ({ text }) => {
|
|
366
|
+
console.log("Streaming complete!");
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
aiOptions: {
|
|
370
|
+
aiProvider: "anthropic",
|
|
371
|
+
aiModel: "claude-3-5-sonnet",
|
|
372
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
373
|
+
},
|
|
374
|
+
});
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
## TUI Integration Example
|
|
378
|
+
|
|
379
|
+
```typescript
|
|
380
|
+
import { TaskService } from "task-o-matic-core";
|
|
381
|
+
import type { ProgressCallback } from "task-o-matic-core";
|
|
382
|
+
|
|
383
|
+
const taskService = new TaskService();
|
|
384
|
+
|
|
385
|
+
// Progress callback for TUI updates
|
|
386
|
+
const progressCallback: ProgressCallback = {
|
|
387
|
+
onProgress: (event) => {
|
|
388
|
+
// Update your TUI with progress
|
|
389
|
+
tuiStatusBar.update(event.message);
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
// Create task with streaming
|
|
394
|
+
const result = await taskService.createTask({
|
|
395
|
+
title: "Add payment integration",
|
|
396
|
+
aiEnhance: true,
|
|
397
|
+
streamingOptions: {
|
|
398
|
+
enabled: true,
|
|
399
|
+
onChunk: (chunk) => {
|
|
400
|
+
// Update TUI in real-time
|
|
401
|
+
tuiTextArea.append(chunk);
|
|
402
|
+
},
|
|
403
|
+
onFinish: ({ text }) => {
|
|
404
|
+
tuiStatusBar.success("Task enhanced!");
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
callbacks: progressCallback,
|
|
408
|
+
});
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
## Utility Functions
|
|
412
|
+
|
|
413
|
+
Access core utilities directly:
|
|
414
|
+
|
|
415
|
+
```typescript
|
|
416
|
+
import {
|
|
417
|
+
getStorage,
|
|
418
|
+
getAIOperations,
|
|
419
|
+
buildAIConfig,
|
|
420
|
+
configManager,
|
|
421
|
+
} from "task-o-matic-core";
|
|
422
|
+
|
|
423
|
+
// Get singleton instances
|
|
424
|
+
const storage = getStorage();
|
|
425
|
+
const aiOps = getAIOperations();
|
|
426
|
+
|
|
427
|
+
// Build AI configuration
|
|
428
|
+
const aiConfig = buildAIConfig({
|
|
429
|
+
provider: "openai",
|
|
430
|
+
model: "gpt-4",
|
|
431
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
// Use storage directly
|
|
435
|
+
const allTasks = await storage.getAllTasks();
|
|
436
|
+
|
|
437
|
+
// Use config manager
|
|
438
|
+
await configManager.load();
|
|
439
|
+
const aiProvider = configManager.getAIProvider();
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
## TypeScript Types
|
|
443
|
+
|
|
444
|
+
Full TypeScript type definitions are included:
|
|
445
|
+
|
|
446
|
+
```typescript
|
|
447
|
+
import type {
|
|
448
|
+
Task,
|
|
449
|
+
AIConfig,
|
|
450
|
+
StreamingOptions,
|
|
451
|
+
CreateTaskOptions,
|
|
452
|
+
PRDParseResult,
|
|
453
|
+
TaskAIMetadata,
|
|
454
|
+
// Workflow types
|
|
455
|
+
WorkflowService,
|
|
456
|
+
InitializeResult,
|
|
457
|
+
DefinePRDResult,
|
|
458
|
+
RefinePRDResult,
|
|
459
|
+
GenerateTasksResult,
|
|
460
|
+
SplitTasksResult,
|
|
461
|
+
// Benchmark types
|
|
462
|
+
BenchmarkService,
|
|
463
|
+
BenchmarkConfig,
|
|
464
|
+
BenchmarkResult,
|
|
465
|
+
// Callback types
|
|
466
|
+
ProgressCallback,
|
|
467
|
+
StorageCallbacks,
|
|
468
|
+
} from "task-o-matic-core";
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
## AI Providers
|
|
472
|
+
|
|
473
|
+
### Supported Providers
|
|
474
|
+
|
|
475
|
+
- **OpenAI**: GPT models with full feature support
|
|
476
|
+
- **Anthropic**: Claude models with enhanced reasoning
|
|
477
|
+
- **OpenRouter**: Access to multiple models through one API
|
|
478
|
+
- **Custom**: Any OpenAI-compatible API endpoint
|
|
479
|
+
|
|
480
|
+
### AI Configuration
|
|
481
|
+
|
|
482
|
+
```typescript
|
|
483
|
+
import { buildAIConfig } from "task-o-matic-core";
|
|
484
|
+
|
|
485
|
+
// OpenAI
|
|
486
|
+
const openaiConfig = buildAIConfig({
|
|
487
|
+
provider: "openai",
|
|
488
|
+
model: "gpt-4",
|
|
489
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
// Anthropic
|
|
493
|
+
const anthropicConfig = buildAIConfig({
|
|
494
|
+
provider: "anthropic",
|
|
495
|
+
model: "claude-3-5-sonnet",
|
|
496
|
+
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
497
|
+
});
|
|
498
|
+
|
|
499
|
+
// OpenRouter
|
|
500
|
+
const openrouterConfig = buildAIConfig({
|
|
501
|
+
provider: "openrouter",
|
|
502
|
+
model: "anthropic/claude-3.5-sonnet",
|
|
503
|
+
apiKey: process.env.OPENROUTER_API_KEY,
|
|
504
|
+
});
|
|
505
|
+
|
|
506
|
+
// Custom provider
|
|
507
|
+
const customConfig = buildAIConfig({
|
|
508
|
+
provider: "custom",
|
|
509
|
+
model: "custom-model",
|
|
510
|
+
apiKey: process.env.CUSTOM_API_KEY,
|
|
511
|
+
baseUrl: "https://api.custom.com/v1",
|
|
512
|
+
});
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
### Model Recommendations
|
|
516
|
+
|
|
517
|
+
- **PRD Parsing**: `claude-3.5-sonnet` or `gpt-4`
|
|
518
|
+
- **Task Enhancement**: `claude-3-haiku` or `gpt-3.5-turbo`
|
|
519
|
+
- **Task Breakdown**: `claude-3.5-sonnet` for complex tasks
|
|
520
|
+
- **Workflow Testing**: Use benchmarking to find optimal performance
|
|
521
|
+
|
|
522
|
+
## Storage Structure
|
|
523
|
+
|
|
524
|
+
All data is stored locally in the `.task-o-matic/` directory:
|
|
525
|
+
|
|
526
|
+
```
|
|
527
|
+
your-project/
|
|
528
|
+
├── .task-o-matic/
|
|
529
|
+
│ ├── config.json # AI configuration
|
|
530
|
+
│ ├── bts-config.json # Better-T-Stack configuration (if bootstrapped)
|
|
531
|
+
│ ├── tasks/ # Task JSON files
|
|
532
|
+
│ │ ├── {task-id}.json
|
|
533
|
+
│ │ └── ...
|
|
534
|
+
│ ├── prd/ # PRD versions and logs
|
|
535
|
+
│ │ ├── parsed-prd.json
|
|
536
|
+
│ │ └── ...
|
|
537
|
+
│ └── logs/ # Operation logs
|
|
538
|
+
│ └── ...
|
|
539
|
+
└── your-project-files...
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
## Error Handling
|
|
543
|
+
|
|
544
|
+
```typescript
|
|
545
|
+
import { TaskService, TaskOMaticError } from "task-o-matic-core";
|
|
546
|
+
|
|
547
|
+
const taskService = new TaskService();
|
|
548
|
+
|
|
549
|
+
try {
|
|
550
|
+
const result = await taskService.createTask({
|
|
551
|
+
title: "New task",
|
|
552
|
+
aiEnhance: true,
|
|
553
|
+
aiOptions: {
|
|
554
|
+
aiProvider: "anthropic",
|
|
555
|
+
aiModel: "claude-3-5-sonnet",
|
|
556
|
+
aiKey: process.env.ANTHROPIC_API_KEY,
|
|
557
|
+
},
|
|
558
|
+
});
|
|
559
|
+
} catch (error) {
|
|
560
|
+
if (error instanceof TaskOMaticError) {
|
|
561
|
+
console.error(`TaskOMatic Error: ${error.message}`);
|
|
562
|
+
console.error(`Code: ${error.code}`);
|
|
563
|
+
console.error(`Details:`, error.details);
|
|
564
|
+
} else {
|
|
565
|
+
console.error(`Unexpected error:`, error);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
## Hooks System
|
|
571
|
+
|
|
572
|
+
Register hooks to customize behavior:
|
|
573
|
+
|
|
574
|
+
```typescript
|
|
575
|
+
import { registerLoggerHooks } from "task-o-matic-core";
|
|
576
|
+
|
|
577
|
+
// Register logger hooks
|
|
578
|
+
registerLoggerHooks({
|
|
579
|
+
onLog: (level, message) => {
|
|
580
|
+
console.log(`[${level}] ${message}`);
|
|
581
|
+
},
|
|
582
|
+
onError: (error) => {
|
|
583
|
+
console.error(`Error:`, error);
|
|
584
|
+
},
|
|
585
|
+
});
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
## Development
|
|
589
|
+
|
|
590
|
+
### Building from Source
|
|
591
|
+
|
|
592
|
+
```bash
|
|
593
|
+
# Clone and install
|
|
594
|
+
git clone https://github.com/DimitriGilbert/task-o-matic.git
|
|
595
|
+
cd task-o-matic
|
|
596
|
+
npm install
|
|
597
|
+
|
|
598
|
+
# Build the core package
|
|
599
|
+
cd packages/core
|
|
600
|
+
npm run build
|
|
601
|
+
|
|
602
|
+
# Type checking
|
|
603
|
+
npm run check-types
|
|
604
|
+
|
|
605
|
+
# Run tests
|
|
606
|
+
npm run test
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
### Testing
|
|
610
|
+
|
|
611
|
+
```bash
|
|
612
|
+
# Run all tests
|
|
613
|
+
npm test
|
|
614
|
+
|
|
615
|
+
# Run specific test file
|
|
616
|
+
npm test -- --grep "TaskService"
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
## Documentation
|
|
620
|
+
|
|
621
|
+
For more detailed documentation, see:
|
|
622
|
+
|
|
623
|
+
- [Configuration](../../docs/configuration.md) - AI providers and settings
|
|
624
|
+
- [Task Management](../../docs/tasks.md) - Full task lifecycle with AI features
|
|
625
|
+
- [PRD Processing](../../docs/prd.md) - Parse and rework Product Requirements Documents
|
|
626
|
+
- [Interactive Workflow](../../docs/workflow-command.md) - Guided setup with AI assistance
|
|
627
|
+
- [AI Integration](../../docs/ai-integration.md) - AI providers and prompt engineering
|
|
628
|
+
- [Project Initialization](../../docs/projects.md) - Project setup and bootstrapping
|
|
629
|
+
- [Streaming Output](../../docs/streaming.md) - Real-time AI streaming capabilities
|
|
630
|
+
- [Model Benchmarking](../../docs/benchmarking.md) - Compare AI models and workflow performance
|
|
631
|
+
|
|
632
|
+
## License
|
|
633
|
+
|
|
634
|
+
MIT License - see LICENSE file for details.
|
|
635
|
+
|
|
636
|
+
## Contributing
|
|
637
|
+
|
|
638
|
+
1. Fork the repository
|
|
639
|
+
2. Create a feature branch
|
|
640
|
+
3. Make your changes
|
|
641
|
+
4. Add tests if applicable
|
|
642
|
+
5. Submit a pull request
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
**Built with ❤️ using Vercel AI SDK and modern TypeScript**
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export * from "./lib/config";
|
|
3
|
+
export * from "./lib/logger";
|
|
4
|
+
export * from "./lib/better-t-stack-cli";
|
|
5
|
+
export * from "./lib/validation";
|
|
6
|
+
export * from "./lib/context-builder";
|
|
7
|
+
export * from "./lib/ai-service/ai-operations";
|
|
8
|
+
export * from "./lib/ai-service/task-operations";
|
|
9
|
+
export * from "./lib/ai-service/prd-operations";
|
|
10
|
+
export * from "./lib/ai-service/documentation-operations";
|
|
11
|
+
export * from "./lib/executors/executor-factory";
|
|
12
|
+
export * from "./lib/prompt-builder";
|
|
13
|
+
export * from "./lib/task-execution";
|
|
14
|
+
export * from "./lib/task-loop-execution";
|
|
15
|
+
export * from "./services/tasks";
|
|
16
|
+
export * from "./services/workflow";
|
|
17
|
+
export * from "./services/prd";
|
|
18
|
+
export * from "./services/benchmark";
|
|
19
|
+
export * from "./lib/benchmark/registry";
|
|
20
|
+
export * from "./lib/benchmark/types";
|
|
21
|
+
export * from "./utils/ai-service-factory";
|
|
22
|
+
export * from "./utils/task-o-matic-error";
|
|
23
|
+
export * from "./lib/hooks";
|
|
24
|
+
export * from "./utils/model-executor-parser";
|
|
25
|
+
export * from "./utils/model-parser";
|
|
26
|
+
export * from "./prompts";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,aAAa,CAAC;AAO5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AAErC,cAAc,WAAW,CAAC"}
|