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,428 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.BetterTStackIntegration = exports.BetterTStackService = void 0;
|
|
37
|
+
exports.runBetterTStackCLI = runBetterTStackCLI;
|
|
38
|
+
const config_1 = require("./config");
|
|
39
|
+
const fs_1 = require("fs");
|
|
40
|
+
// import { glob } from "glob";
|
|
41
|
+
const path_1 = require("path");
|
|
42
|
+
const logger_1 = require("./logger");
|
|
43
|
+
class BetterTStackService {
|
|
44
|
+
async createProject(name, config, workingDirectory) {
|
|
45
|
+
try {
|
|
46
|
+
logger_1.logger.info(`🚀 Bootstrapping Better-T-Stack project: ${name}`);
|
|
47
|
+
// Change to working directory if provided
|
|
48
|
+
const originalCwd = process.cwd();
|
|
49
|
+
if (workingDirectory) {
|
|
50
|
+
process.chdir(workingDirectory);
|
|
51
|
+
logger_1.logger.info(`🔥 Changed working directory to: ${workingDirectory}`);
|
|
52
|
+
}
|
|
53
|
+
// Convert our config to Better-T-Stack API format
|
|
54
|
+
const apiConfig = this.convertToAPIConfig(config);
|
|
55
|
+
logger_1.logger.info(`🔥 Calling Better-T-Stack programmatic API...`);
|
|
56
|
+
// Use dynamic import with eval to bypass TypeScript module resolution
|
|
57
|
+
// The module exports `init` as a named export, but depending on how it's bundled,
|
|
58
|
+
// it might be directly on the module or wrapped in a default export
|
|
59
|
+
const btsModule = await eval(`import("create-better-t-stack")`);
|
|
60
|
+
// Handle different module structures and API versions
|
|
61
|
+
// The package renamed 'init' to 'create' in a recent update
|
|
62
|
+
const initFn = btsModule.create ||
|
|
63
|
+
btsModule.init ||
|
|
64
|
+
btsModule.default?.create ||
|
|
65
|
+
btsModule.default?.init ||
|
|
66
|
+
btsModule.default;
|
|
67
|
+
if (typeof initFn !== "function") {
|
|
68
|
+
throw new Error(`Could not find 'create' or 'init' function in create-better-t-stack module. ` +
|
|
69
|
+
`Available exports: ${Object.keys(btsModule).join(", ")}`);
|
|
70
|
+
}
|
|
71
|
+
const result = await initFn(name, apiConfig);
|
|
72
|
+
// Restore original directory
|
|
73
|
+
if (workingDirectory) {
|
|
74
|
+
process.chdir(originalCwd);
|
|
75
|
+
}
|
|
76
|
+
if (result.success) {
|
|
77
|
+
// Save configuration
|
|
78
|
+
await this.saveBTSConfig(name, config, result.projectDirectory);
|
|
79
|
+
// Post-bootstrap enhancements
|
|
80
|
+
try {
|
|
81
|
+
const projectDir = result.projectDirectory;
|
|
82
|
+
// 1. Add check-types script to packages
|
|
83
|
+
await this.addCheckTypesScript(projectDir);
|
|
84
|
+
// 2. Copy documentation if requested
|
|
85
|
+
if (config.includeDocs) {
|
|
86
|
+
await this.copyDocumentation(projectDir);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
logger_1.logger.error(`⚠ Post-bootstrap enhancements failed: ${error}`);
|
|
91
|
+
// Don't fail the whole process, just log warning
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
projectPath: result.relativePath,
|
|
96
|
+
message: `Better-T-Stack project ${name} created successfully at ${result.projectDirectory}`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return {
|
|
101
|
+
success: false,
|
|
102
|
+
projectPath: "",
|
|
103
|
+
message: `Better-T-Stack bootstrap failed: ${result.error}`,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return {
|
|
109
|
+
success: false,
|
|
110
|
+
projectPath: "",
|
|
111
|
+
message: `Better-T-Stack initialization failed: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
convertToAPIConfig(config) {
|
|
116
|
+
// Ensure frontend is always an array for Better-T-Stack API
|
|
117
|
+
const frontend = Array.isArray(config.frontend)
|
|
118
|
+
? config.frontend
|
|
119
|
+
: [config.frontend];
|
|
120
|
+
return {
|
|
121
|
+
// Don't use 'yes' flag when providing explicit configuration
|
|
122
|
+
frontend,
|
|
123
|
+
backend: config.backend,
|
|
124
|
+
runtime: config.runtime,
|
|
125
|
+
api: config.api,
|
|
126
|
+
auth: config.auth,
|
|
127
|
+
database: config.database,
|
|
128
|
+
orm: config.orm,
|
|
129
|
+
dbSetup: config.dbSetup,
|
|
130
|
+
packageManager: config.packageManager,
|
|
131
|
+
webDeploy: config.webDeploy,
|
|
132
|
+
serverDeploy: config.serverDeploy,
|
|
133
|
+
git: config.git,
|
|
134
|
+
install: config.install,
|
|
135
|
+
addons: config.addons,
|
|
136
|
+
examples: config.examples &&
|
|
137
|
+
config.examples.length > 0 &&
|
|
138
|
+
config.examples[0] !== "none"
|
|
139
|
+
? config.examples
|
|
140
|
+
: ["none"],
|
|
141
|
+
disableAnalytics: true,
|
|
142
|
+
payments: config.payments,
|
|
143
|
+
template: config.template, // v3.13.0: mern, pern, t3, uniwind
|
|
144
|
+
// Non-interactive options (yes: true conflicts with explicit config)
|
|
145
|
+
manualDb: true, // Skip DB setup prompts
|
|
146
|
+
renderTitle: false, // Cleaner output
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
async saveBTSConfig(name, config, projectPath) {
|
|
150
|
+
const taskOMaticDir = projectPath
|
|
151
|
+
? (0, path_1.join)(projectPath, ".task-o-matic")
|
|
152
|
+
: config_1.configManager.getTaskOMaticDir();
|
|
153
|
+
// Ensure directory exists if we're using a specific project path
|
|
154
|
+
if (projectPath && !require("fs").existsSync(taskOMaticDir)) {
|
|
155
|
+
require("fs").mkdirSync(taskOMaticDir, { recursive: true });
|
|
156
|
+
}
|
|
157
|
+
const configData = JSON.stringify({
|
|
158
|
+
...config,
|
|
159
|
+
projectName: config.projectName || name,
|
|
160
|
+
createdAt: new Date().toISOString(),
|
|
161
|
+
}, null, 2);
|
|
162
|
+
// Save with project-specific name for tracking multiple projects
|
|
163
|
+
const namedConfigPath = (0, path_1.join)(taskOMaticDir, `${name}-bts-config.json`);
|
|
164
|
+
(0, fs_1.writeFileSync)(namedConfigPath, configData);
|
|
165
|
+
// Also save as canonical stack.json for easy discovery by context-builder
|
|
166
|
+
const stackConfigPath = (0, path_1.join)(taskOMaticDir, "stack.json");
|
|
167
|
+
(0, fs_1.writeFileSync)(stackConfigPath, configData);
|
|
168
|
+
}
|
|
169
|
+
async addCheckTypesScript(projectDir) {
|
|
170
|
+
const { glob } = await Promise.resolve().then(() => __importStar(require("glob")));
|
|
171
|
+
// const { readFileSync, writeFileSync } = await import("fs");
|
|
172
|
+
logger_1.logger.info("🔍 Adding check-types scripts to packages...");
|
|
173
|
+
// Find all package.json files in apps and backend directories
|
|
174
|
+
const packageFiles = await glob(["apps/*/package.json", "backend/*/package.json"], { cwd: projectDir, absolute: true });
|
|
175
|
+
for (const file of packageFiles) {
|
|
176
|
+
try {
|
|
177
|
+
const content = JSON.parse((0, fs_1.readFileSync)(file, "utf-8"));
|
|
178
|
+
if (!content.scripts) {
|
|
179
|
+
content.scripts = {};
|
|
180
|
+
}
|
|
181
|
+
// Add check-types script if not present
|
|
182
|
+
if (!content.scripts["check-types"]) {
|
|
183
|
+
content.scripts["check-types"] = "tsc --noEmit";
|
|
184
|
+
(0, fs_1.writeFileSync)(file, JSON.stringify(content, null, 2) + "\n");
|
|
185
|
+
logger_1.logger.success(` ✓ Added check-types to ${file.split("/").slice(-3).join("/")}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
logger_1.logger.warn(` ⚠ Failed to update ${file}: ${err}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async copyDocumentation(projectDir) {
|
|
194
|
+
const { copyFileSync, mkdirSync, existsSync } = await Promise.resolve().then(() => __importStar(require("fs")));
|
|
195
|
+
const { resolve, dirname } = await Promise.resolve().then(() => __importStar(require("path")));
|
|
196
|
+
logger_1.logger.info("📚 Copying documentation...");
|
|
197
|
+
try {
|
|
198
|
+
// Source: docs/agents/cli.md in the current package
|
|
199
|
+
// We need to find where the package is installed or running from
|
|
200
|
+
// Assuming we are running from dist/lib/better-t-stack-cli.js or similar
|
|
201
|
+
// The docs should be in ../../docs/agents/cli.md relative to this file's location in source
|
|
202
|
+
// Or in the package root if installed
|
|
203
|
+
let sourcePath = resolve(__dirname, "../../../docs/agents/cli.md");
|
|
204
|
+
// Check if we're in dist
|
|
205
|
+
if (!existsSync(sourcePath)) {
|
|
206
|
+
// Try to find it relative to package root (cwd when running dev)
|
|
207
|
+
sourcePath = resolve(process.cwd(), "docs/agents/cli.md");
|
|
208
|
+
}
|
|
209
|
+
if (!existsSync(sourcePath)) {
|
|
210
|
+
// Try to find it in node_modules if installed as dependency
|
|
211
|
+
try {
|
|
212
|
+
sourcePath = require.resolve("task-o-matic/docs/agents/cli.md");
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
// Ignore
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (existsSync(sourcePath)) {
|
|
219
|
+
const destPath = (0, path_1.join)(projectDir, "docs/task-o-matic.md");
|
|
220
|
+
const destDir = dirname(destPath);
|
|
221
|
+
if (!existsSync(destDir)) {
|
|
222
|
+
mkdirSync(destDir, { recursive: true });
|
|
223
|
+
}
|
|
224
|
+
copyFileSync(sourcePath, destPath);
|
|
225
|
+
logger_1.logger.success(` ✓ Copied documentation to docs/task-o-matic.md`);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
logger_1.logger.warn(" ⚠ Could not locate source documentation file");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
logger_1.logger.warn(` ⚠ Failed to copy documentation: ${err}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.BetterTStackService = BetterTStackService;
|
|
237
|
+
// Helper methods for multi-frontend support
|
|
238
|
+
class BetterTStackIntegration {
|
|
239
|
+
btsService;
|
|
240
|
+
constructor() {
|
|
241
|
+
this.btsService = new BetterTStackService();
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Parse frontend option into array of frontends
|
|
245
|
+
*/
|
|
246
|
+
parseFrontends(frontendOption) {
|
|
247
|
+
if (!frontendOption)
|
|
248
|
+
return [];
|
|
249
|
+
// If already array, return it
|
|
250
|
+
if (Array.isArray(frontendOption))
|
|
251
|
+
return frontendOption;
|
|
252
|
+
// If string, split by comma or space
|
|
253
|
+
if (typeof frontendOption === "string") {
|
|
254
|
+
return frontendOption
|
|
255
|
+
.split(/[\s,]+/)
|
|
256
|
+
.map((f) => f.trim())
|
|
257
|
+
.filter(Boolean);
|
|
258
|
+
}
|
|
259
|
+
// Single value
|
|
260
|
+
return [frontendOption];
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Split frontends into Better-T-Stack frontends vs custom frontends
|
|
264
|
+
*/
|
|
265
|
+
splitFrontends(frontends) {
|
|
266
|
+
const customTypes = new Set(["cli", "medusa"]);
|
|
267
|
+
return {
|
|
268
|
+
btsFrontends: frontends.filter((f) => !customTypes.has(f)),
|
|
269
|
+
customFrontends: frontends.filter((f) => customTypes.has(f)),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Create project with support for multiple frontends
|
|
274
|
+
*/
|
|
275
|
+
async createProject(name, options, workingDirectory) {
|
|
276
|
+
const workingDir = workingDirectory || config_1.configManager.getWorkingDirectory();
|
|
277
|
+
const frontends = this.parseFrontends(options.frontend);
|
|
278
|
+
const { btsFrontends, customFrontends } = this.splitFrontends(frontends);
|
|
279
|
+
const isMonorepo = frontends.length > 1;
|
|
280
|
+
let projectPath = (0, path_1.join)(workingDir, name);
|
|
281
|
+
const results = [];
|
|
282
|
+
try {
|
|
283
|
+
// Step 1: Bootstrap Better-T-Stack project FIRST (if any BTS frontends)
|
|
284
|
+
// This creates the monorepo structure that CLI/TUI will be added to
|
|
285
|
+
if (btsFrontends.length > 0) {
|
|
286
|
+
const result = await this.bootstrapBetterTStackProject(name, btsFrontends, options, workingDir);
|
|
287
|
+
if (!result.success)
|
|
288
|
+
throw new Error(result.message);
|
|
289
|
+
// Get the actual project path from Better-T-Stack result
|
|
290
|
+
// This is the full path where the project was created
|
|
291
|
+
projectPath = (0, path_1.join)(workingDir, name);
|
|
292
|
+
results.push(result.message);
|
|
293
|
+
}
|
|
294
|
+
else if (isMonorepo) {
|
|
295
|
+
// Create monorepo structure manually if no BTS frontends
|
|
296
|
+
// (e.g., just cli + tui with no web/native)
|
|
297
|
+
(0, fs_1.mkdirSync)(projectPath, { recursive: true });
|
|
298
|
+
(0, fs_1.mkdirSync)((0, path_1.join)(projectPath, "apps"), { recursive: true });
|
|
299
|
+
logger_1.logger.info(`📁 Created monorepo structure at ${projectPath}`);
|
|
300
|
+
}
|
|
301
|
+
// Step 2: AFTER Better-T-Stack creates the structure, add custom frontends
|
|
302
|
+
// These get added into the apps/ directory that Better-T-Stack created
|
|
303
|
+
for (const frontend of customFrontends) {
|
|
304
|
+
if (frontend === "cli") {
|
|
305
|
+
const result = await this.addCliToProject(name, projectPath, isMonorepo, options);
|
|
306
|
+
results.push(result.message);
|
|
307
|
+
}
|
|
308
|
+
if (frontend === "medusa") {
|
|
309
|
+
const result = await this.addMedusaToProject(name, projectPath, isMonorepo, options);
|
|
310
|
+
results.push(result.message);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return {
|
|
314
|
+
success: true,
|
|
315
|
+
message: results.join("\n"),
|
|
316
|
+
projectPath,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
321
|
+
return {
|
|
322
|
+
success: false,
|
|
323
|
+
message: `Project creation failed: ${message}`,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Bootstrap Better-T-Stack project with one or more frontends
|
|
329
|
+
*/
|
|
330
|
+
async bootstrapBetterTStackProject(name, frontends, options, workingDir) {
|
|
331
|
+
const backend = options.backend || "hono";
|
|
332
|
+
const isConvex = backend === "convex";
|
|
333
|
+
const btsConfig = {
|
|
334
|
+
projectName: options.name || options.projectName || name,
|
|
335
|
+
frontend: frontends.length === 1 ? frontends[0] : frontends, // Pass array if multiple
|
|
336
|
+
backend: backend || "hono",
|
|
337
|
+
database: isConvex
|
|
338
|
+
? "none"
|
|
339
|
+
: options.database || "sqlite",
|
|
340
|
+
auth: options.noAuth
|
|
341
|
+
? "none"
|
|
342
|
+
: options.auth || "better-auth",
|
|
343
|
+
addons: options.addons || ["turborepo"],
|
|
344
|
+
runtime: (isConvex || backend === "self"
|
|
345
|
+
? "none"
|
|
346
|
+
: options.runtime || "node"),
|
|
347
|
+
api: options.api || "none",
|
|
348
|
+
payments: options.payment || "none",
|
|
349
|
+
orm: (isConvex ? "none" : options.orm || "drizzle"),
|
|
350
|
+
dbSetup: (isConvex
|
|
351
|
+
? "none"
|
|
352
|
+
: options.dbSetup || "none"),
|
|
353
|
+
packageManager: options.packageManager || "npm",
|
|
354
|
+
git: !options.noGit,
|
|
355
|
+
webDeploy: options.webDeploy || "none",
|
|
356
|
+
serverDeploy: options.serverDeploy || "none",
|
|
357
|
+
install: !options.noInstall,
|
|
358
|
+
examples: options.examples || ["none"],
|
|
359
|
+
template: options.template, // Optional shortcut, don't default
|
|
360
|
+
// Non-interactive options (yes: true conflicts with explicit config)
|
|
361
|
+
manualDb: true,
|
|
362
|
+
renderTitle: false,
|
|
363
|
+
includeDocs: options.includeDocs,
|
|
364
|
+
};
|
|
365
|
+
const result = await this.btsService.createProject(name, btsConfig, workingDir);
|
|
366
|
+
return {
|
|
367
|
+
success: result.success,
|
|
368
|
+
message: result.message,
|
|
369
|
+
projectPath: result.projectPath,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Add CLI app to project (standalone or monorepo)
|
|
374
|
+
*/
|
|
375
|
+
async addCliToProject(projectName, projectPath, isMonorepo, options) {
|
|
376
|
+
const { bootstrapCliProject } = await Promise.resolve().then(() => __importStar(require("./bootstrap/cli-bootstrap.js")));
|
|
377
|
+
const cliPath = isMonorepo ? (0, path_1.join)(projectPath, "apps", "cli") : projectPath;
|
|
378
|
+
const cliName = isMonorepo ? `${projectName}-cli` : projectName;
|
|
379
|
+
const result = await bootstrapCliProject({
|
|
380
|
+
projectName: cliName,
|
|
381
|
+
projectPath: cliPath,
|
|
382
|
+
dependencyLevel: options.cliDeps || "standard",
|
|
383
|
+
packageManager: options.packageManager || "npm",
|
|
384
|
+
runtime: options.runtime || "node",
|
|
385
|
+
typescript: true,
|
|
386
|
+
});
|
|
387
|
+
if (!result.success)
|
|
388
|
+
throw new Error(result.message);
|
|
389
|
+
return {
|
|
390
|
+
success: true,
|
|
391
|
+
message: isMonorepo
|
|
392
|
+
? `✅ CLI app added to apps/cli/`
|
|
393
|
+
: `✅ CLI project "${projectName}" created successfully!`,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Add MedusaJS app to project (standalone or monorepo)
|
|
398
|
+
*/
|
|
399
|
+
async addMedusaToProject(projectName, projectPath, isMonorepo, options) {
|
|
400
|
+
const { bootstrapMedusaProject } = await Promise.resolve().then(() => __importStar(require("./bootstrap/medusa-bootstrap.js")));
|
|
401
|
+
const medusaPath = isMonorepo
|
|
402
|
+
? (0, path_1.join)(projectPath, "apps", "medusa")
|
|
403
|
+
: projectPath;
|
|
404
|
+
const medusaName = isMonorepo ? `${projectName}-medusa` : projectName;
|
|
405
|
+
const result = await bootstrapMedusaProject({
|
|
406
|
+
projectName: medusaName,
|
|
407
|
+
projectPath: medusaPath,
|
|
408
|
+
packageManager: options.packageManager || "npm",
|
|
409
|
+
database: options.database || "sqlite",
|
|
410
|
+
skipDb: options.noInstall, // Skip DB setup if not installing deps
|
|
411
|
+
skipInstall: options.noInstall,
|
|
412
|
+
});
|
|
413
|
+
if (!result.success)
|
|
414
|
+
throw new Error(result.message);
|
|
415
|
+
return {
|
|
416
|
+
success: true,
|
|
417
|
+
message: isMonorepo
|
|
418
|
+
? `✅ MedusaJS app added to apps/medusa/`
|
|
419
|
+
: `✅ MedusaJS project "${projectName}" created successfully!`,
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
exports.BetterTStackIntegration = BetterTStackIntegration;
|
|
424
|
+
// Export backward-compatible function
|
|
425
|
+
async function runBetterTStackCLI(options, workingDirectory) {
|
|
426
|
+
const integration = new BetterTStackIntegration();
|
|
427
|
+
return integration.createProject(options.projectName || options.name || "default-project", options, workingDirectory);
|
|
428
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CliDependencyLevel } from "../../types";
|
|
2
|
+
export interface CliBootstrapOptions {
|
|
3
|
+
projectName: string;
|
|
4
|
+
projectPath: string;
|
|
5
|
+
dependencyLevel: CliDependencyLevel;
|
|
6
|
+
packageManager: "npm" | "pnpm" | "bun";
|
|
7
|
+
runtime: "node" | "bun";
|
|
8
|
+
typescript: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function bootstrapCliProject(options: CliBootstrapOptions): Promise<{
|
|
11
|
+
success: boolean;
|
|
12
|
+
message: string;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=cli-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-bootstrap.d.ts","sourceRoot":"","sources":["../../../src/lib/bootstrap/cli-bootstrap.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKtD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,kBAAkB,CAAC;IACpC,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACvC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA4GhD"}
|