sudocode 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +222 -0
- package/build.js +75 -0
- package/node_modules/@sudocode-ai/cli/README.md +330 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts +53 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js +274 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts +22 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js +148 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts +45 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js +310 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts +18 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js +61 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts +22 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js +136 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts +14 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js +76 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts +17 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js +99 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts +38 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js +321 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts +17 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js +131 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts +24 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js +416 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts +12 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js +78 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts +6 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.js +426 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts +21 -0
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/db.js +54 -0
- package/node_modules/@sudocode-ai/cli/dist/db.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts +79 -0
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/export.js +195 -0
- package/node_modules/@sudocode-ai/cli/dist/export.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts +30 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js +93 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts +26 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js +123 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts +118 -0
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/import.js +608 -0
- package/node_modules/@sudocode-ai/cli/dist/import.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts +13 -0
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/index.js +13 -0
- package/node_modules/@sudocode-ai/cli/dist/index.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts +69 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js +333 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts +146 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.js +357 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/migrations.d.ts +23 -0
- package/node_modules/@sudocode-ai/cli/dist/migrations.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/migrations.js +57 -0
- package/node_modules/@sudocode-ai/cli/dist/migrations.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts +53 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js +108 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts +92 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js +444 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts +76 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js +234 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts +10 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js +10 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts +82 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js +411 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts +34 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js +117 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts +57 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js +236 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts +64 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js +290 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts +42 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js +127 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts +41 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js +111 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts +47 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.js +442 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts +5 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js +46 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts +7 -0
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/types.js +7 -0
- package/node_modules/@sudocode-ai/cli/dist/types.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts +24 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js +151 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts +12 -0
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/version.js +23 -0
- package/node_modules/@sudocode-ai/cli/dist/version.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts +63 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.js +438 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/package.json +65 -0
- package/node_modules/@sudocode-ai/local-server/README.md +19 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.js +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.d.ts +103 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.d.ts +190 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.js +611 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.d.ts +116 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts +176 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js +438 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.d.ts +96 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.js +96 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.d.ts +321 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.js +769 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts +18 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts +421 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js +22 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts +86 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js +59 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.d.ts +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.js +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.d.ts +133 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.d.ts +102 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.js +336 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.d.ts +105 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.d.ts +53 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.js +97 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.d.ts +170 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.js +291 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.d.ts +109 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.d.ts +14 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.js +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.d.ts +86 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.js +261 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.d.ts +161 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.js +234 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.d.ts +226 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.js +30 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts +119 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js +208 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts +146 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js +282 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts +176 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js +231 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.d.ts +13 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.js +13 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.d.ts +216 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.js +683 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.d.ts +54 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.js +68 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.d.ts +158 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.js +9 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.d.ts +172 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.js +9 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.d.ts +89 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.js +152 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts +74 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js +280 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts +151 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js +189 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts +16 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts +184 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js +452 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts +90 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js +42 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.js +356 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-C4SmlXoo.js +568 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-C4SmlXoo.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-DE59j7ti.css +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-LX0UoTxg.js +60 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-LX0UoTxg.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-_cxVHaqZ.js +54 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-_cxVHaqZ.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/favicon.ico +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/index.html +16 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/logo.png +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts +24 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js +55 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts +19 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js +267 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js +329 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js +280 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js +308 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js +270 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts +33 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js +85 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts +108 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js +286 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts +185 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js +676 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts +59 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js +164 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts +24 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js +106 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts +40 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js +54 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts +27 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js +35 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts +108 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js +212 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts +97 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js +236 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts +35 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js +42 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts +27 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js +35 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts +50 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js +69 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts +127 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js +389 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts +6 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js +9 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/package.json +72 -0
- package/node_modules/@sudocode-ai/mcp/LICENSE +21 -0
- package/node_modules/@sudocode-ai/mcp/README.md +226 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts +33 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.js +159 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts +6 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.js +64 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts +26 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.js +575 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts +41 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts +19 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js +24 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts +17 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js +15 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts +44 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js +106 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js +49 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts +15 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js +18 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts +35 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js +85 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts +35 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.js +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/package.json +67 -0
- package/node_modules/@sudocode-ai/types/README.md +7 -0
- package/node_modules/@sudocode-ai/types/dist/schema.d.ts +45 -0
- package/node_modules/@sudocode-ai/types/dist/schema.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/types/dist/schema.js +338 -0
- package/node_modules/@sudocode-ai/types/dist/schema.js.map +1 -0
- package/node_modules/@sudocode-ai/types/package.json +46 -0
- package/package.json +51 -12
- package/index.js +0 -5
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export SQLite data to JSONL files
|
|
3
|
+
*/
|
|
4
|
+
import type Database from "better-sqlite3";
|
|
5
|
+
import type { Spec, Issue, SpecJSONL, IssueJSONL } from "./types.js";
|
|
6
|
+
export interface ExportOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Output directory for JSONL files
|
|
9
|
+
*/
|
|
10
|
+
outputDir?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Only export entities that have been updated since this timestamp
|
|
13
|
+
*/
|
|
14
|
+
since?: Date;
|
|
15
|
+
/**
|
|
16
|
+
* Custom file names
|
|
17
|
+
*/
|
|
18
|
+
specsFile?: string;
|
|
19
|
+
issuesFile?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Convert a Spec to SpecJSONL format with embedded relationships and tags
|
|
23
|
+
*/
|
|
24
|
+
export declare function specToJSONL(db: Database.Database, spec: Spec): SpecJSONL;
|
|
25
|
+
/**
|
|
26
|
+
* Convert an Issue to IssueJSONL format with embedded relationships and tags
|
|
27
|
+
*/
|
|
28
|
+
export declare function issueToJSONL(db: Database.Database, issue: Issue): IssueJSONL;
|
|
29
|
+
/**
|
|
30
|
+
* Export all specs to JSONL format
|
|
31
|
+
*/
|
|
32
|
+
export declare function exportSpecsToJSONL(db: Database.Database, options?: ExportOptions): SpecJSONL[];
|
|
33
|
+
/**
|
|
34
|
+
* Export all issues to JSONL format
|
|
35
|
+
*/
|
|
36
|
+
export declare function exportIssuesToJSONL(db: Database.Database, options?: ExportOptions): IssueJSONL[];
|
|
37
|
+
/**
|
|
38
|
+
* Export both specs and issues to JSONL files
|
|
39
|
+
*/
|
|
40
|
+
export declare function exportToJSONL(db: Database.Database, options?: ExportOptions): Promise<{
|
|
41
|
+
specsCount: number;
|
|
42
|
+
issuesCount: number;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Debouncer for export operations
|
|
46
|
+
*/
|
|
47
|
+
export declare class ExportDebouncer {
|
|
48
|
+
private db;
|
|
49
|
+
private delayMs;
|
|
50
|
+
private options;
|
|
51
|
+
private timeoutId;
|
|
52
|
+
private pending;
|
|
53
|
+
constructor(db: Database.Database, delayMs?: number, options?: ExportOptions);
|
|
54
|
+
/**
|
|
55
|
+
* Trigger an export (will be debounced)
|
|
56
|
+
*/
|
|
57
|
+
trigger(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Execute the export immediately
|
|
60
|
+
*/
|
|
61
|
+
execute(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Cancel any pending export
|
|
64
|
+
*/
|
|
65
|
+
cancel(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Check if an export is pending
|
|
68
|
+
*/
|
|
69
|
+
isPending(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Wait for any pending export to complete
|
|
72
|
+
*/
|
|
73
|
+
flush(): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create a debounced export function
|
|
77
|
+
*/
|
|
78
|
+
export declare function createDebouncedExport(db: Database.Database, delayMs?: number, options?: ExportOptions): ExportDebouncer;
|
|
79
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EACV,IAAI,EACJ,KAAK,EACL,SAAS,EACT,UAAU,EAGX,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,CAqBxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAwC5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,aAAkB,GAC1B,SAAS,EAAE,CAab;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,aAAkB,GAC1B,UAAU,EAAE,CAad;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBtD;AAED;;GAEG;AACH,qBAAa,eAAe;IAKxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAkB;gBAGvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,MAAa,EACtB,OAAO,GAAE,aAAkB;IAGrC;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,MAAa,EACtB,OAAO,GAAE,aAAkB,GAC1B,eAAe,CAEjB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export SQLite data to JSONL files
|
|
3
|
+
*/
|
|
4
|
+
import { listSpecs } from "./operations/specs.js";
|
|
5
|
+
import { listIssues } from "./operations/issues.js";
|
|
6
|
+
import { getOutgoingRelationships } from "./operations/relationships.js";
|
|
7
|
+
import { getTags } from "./operations/tags.js";
|
|
8
|
+
import { listFeedback } from "./operations/feedback.js";
|
|
9
|
+
import { writeJSONL } from "./jsonl.js";
|
|
10
|
+
/**
|
|
11
|
+
* Convert a Spec to SpecJSONL format with embedded relationships and tags
|
|
12
|
+
*/
|
|
13
|
+
export function specToJSONL(db, spec) {
|
|
14
|
+
// Get outgoing relationships
|
|
15
|
+
const relationships = getOutgoingRelationships(db, spec.id, "spec");
|
|
16
|
+
// Convert to JSONL format
|
|
17
|
+
const relationshipsJSONL = relationships.map((rel) => ({
|
|
18
|
+
from: rel.from_id,
|
|
19
|
+
from_type: rel.from_type,
|
|
20
|
+
to: rel.to_id,
|
|
21
|
+
to_type: rel.to_type,
|
|
22
|
+
type: rel.relationship_type,
|
|
23
|
+
}));
|
|
24
|
+
// Get tags
|
|
25
|
+
const tags = getTags(db, spec.id, "spec");
|
|
26
|
+
return {
|
|
27
|
+
...spec,
|
|
28
|
+
relationships: relationshipsJSONL,
|
|
29
|
+
tags,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Convert an Issue to IssueJSONL format with embedded relationships and tags
|
|
34
|
+
*/
|
|
35
|
+
export function issueToJSONL(db, issue) {
|
|
36
|
+
// Get outgoing relationships
|
|
37
|
+
const relationships = getOutgoingRelationships(db, issue.id, "issue");
|
|
38
|
+
// Convert to JSONL format
|
|
39
|
+
const relationshipsJSONL = relationships.map((rel) => ({
|
|
40
|
+
from: rel.from_id,
|
|
41
|
+
from_type: rel.from_type,
|
|
42
|
+
to: rel.to_id,
|
|
43
|
+
to_type: rel.to_type,
|
|
44
|
+
type: rel.relationship_type,
|
|
45
|
+
}));
|
|
46
|
+
// Get tags
|
|
47
|
+
const tags = getTags(db, issue.id, "issue");
|
|
48
|
+
// Get feedback provided by this issue
|
|
49
|
+
const feedbackList = listFeedback(db, { issue_id: issue.id });
|
|
50
|
+
const feedbackJSONL = feedbackList.map((feedback) => ({
|
|
51
|
+
id: feedback.id,
|
|
52
|
+
issue_id: feedback.issue_id,
|
|
53
|
+
spec_id: feedback.spec_id,
|
|
54
|
+
feedback_type: feedback.feedback_type,
|
|
55
|
+
content: feedback.content,
|
|
56
|
+
agent: feedback.agent,
|
|
57
|
+
anchor: feedback.anchor && typeof feedback.anchor === "string"
|
|
58
|
+
? JSON.parse(feedback.anchor)
|
|
59
|
+
: feedback.anchor,
|
|
60
|
+
dismissed: feedback.dismissed,
|
|
61
|
+
created_at: feedback.created_at,
|
|
62
|
+
updated_at: feedback.updated_at,
|
|
63
|
+
}));
|
|
64
|
+
return {
|
|
65
|
+
...issue,
|
|
66
|
+
relationships: relationshipsJSONL,
|
|
67
|
+
tags,
|
|
68
|
+
feedback: feedbackJSONL.length > 0 ? feedbackJSONL : undefined,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Export all specs to JSONL format
|
|
73
|
+
*/
|
|
74
|
+
export function exportSpecsToJSONL(db, options = {}) {
|
|
75
|
+
const { since } = options;
|
|
76
|
+
// Get all specs (including archived)
|
|
77
|
+
const specs = listSpecs(db);
|
|
78
|
+
// Filter by timestamp if requested
|
|
79
|
+
const filtered = since
|
|
80
|
+
? specs.filter((spec) => new Date(spec.updated_at) > since)
|
|
81
|
+
: specs;
|
|
82
|
+
// Convert to JSONL format with relationships and tags
|
|
83
|
+
return filtered.map((spec) => specToJSONL(db, spec));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Export all issues to JSONL format
|
|
87
|
+
*/
|
|
88
|
+
export function exportIssuesToJSONL(db, options = {}) {
|
|
89
|
+
const { since } = options;
|
|
90
|
+
// Get all issues (including archived)
|
|
91
|
+
const issues = listIssues(db);
|
|
92
|
+
// Filter by timestamp if requested
|
|
93
|
+
const filtered = since
|
|
94
|
+
? issues.filter((issue) => new Date(issue.updated_at) > since)
|
|
95
|
+
: issues;
|
|
96
|
+
// Convert to JSONL format with relationships and tags
|
|
97
|
+
return filtered.map((issue) => issueToJSONL(db, issue));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Export both specs and issues to JSONL files
|
|
101
|
+
*/
|
|
102
|
+
export async function exportToJSONL(db, options = {}) {
|
|
103
|
+
const { outputDir = ".sudocode", specsFile = "specs.jsonl", issuesFile = "issues.jsonl", } = options;
|
|
104
|
+
const specsPath = `${outputDir}/${specsFile}`;
|
|
105
|
+
const issuesPath = `${outputDir}/${issuesFile}`;
|
|
106
|
+
// Export specs
|
|
107
|
+
const specs = exportSpecsToJSONL(db, options);
|
|
108
|
+
await writeJSONL(specsPath, specs);
|
|
109
|
+
// Export issues
|
|
110
|
+
const issues = exportIssuesToJSONL(db, options);
|
|
111
|
+
await writeJSONL(issuesPath, issues);
|
|
112
|
+
return {
|
|
113
|
+
specsCount: specs.length,
|
|
114
|
+
issuesCount: issues.length,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Debouncer for export operations
|
|
119
|
+
*/
|
|
120
|
+
export class ExportDebouncer {
|
|
121
|
+
db;
|
|
122
|
+
delayMs;
|
|
123
|
+
options;
|
|
124
|
+
timeoutId = null;
|
|
125
|
+
pending = false;
|
|
126
|
+
constructor(db, delayMs = 5000, options = {}) {
|
|
127
|
+
this.db = db;
|
|
128
|
+
this.delayMs = delayMs;
|
|
129
|
+
this.options = options;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Trigger an export (will be debounced)
|
|
133
|
+
*/
|
|
134
|
+
trigger() {
|
|
135
|
+
this.pending = true;
|
|
136
|
+
if (this.timeoutId) {
|
|
137
|
+
clearTimeout(this.timeoutId);
|
|
138
|
+
}
|
|
139
|
+
this.timeoutId = setTimeout(() => {
|
|
140
|
+
this.execute();
|
|
141
|
+
}, this.delayMs);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Execute the export immediately
|
|
145
|
+
*/
|
|
146
|
+
async execute() {
|
|
147
|
+
if (!this.pending) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
this.pending = false;
|
|
151
|
+
this.timeoutId = null;
|
|
152
|
+
try {
|
|
153
|
+
await exportToJSONL(this.db, this.options);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.error("Export failed:", error);
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Cancel any pending export
|
|
162
|
+
*/
|
|
163
|
+
cancel() {
|
|
164
|
+
if (this.timeoutId) {
|
|
165
|
+
clearTimeout(this.timeoutId);
|
|
166
|
+
this.timeoutId = null;
|
|
167
|
+
}
|
|
168
|
+
this.pending = false;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if an export is pending
|
|
172
|
+
*/
|
|
173
|
+
isPending() {
|
|
174
|
+
return this.pending;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Wait for any pending export to complete
|
|
178
|
+
*/
|
|
179
|
+
async flush() {
|
|
180
|
+
if (this.pending) {
|
|
181
|
+
if (this.timeoutId) {
|
|
182
|
+
clearTimeout(this.timeoutId);
|
|
183
|
+
this.timeoutId = null;
|
|
184
|
+
}
|
|
185
|
+
await this.execute();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create a debounced export function
|
|
191
|
+
*/
|
|
192
|
+
export function createDebouncedExport(db, delayMs = 5000, options = {}) {
|
|
193
|
+
return new ExportDebouncer(db, delayMs, options);
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate human-readable filenames from spec titles
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Convert a title to snake_case filename
|
|
6
|
+
* - Lowercase
|
|
7
|
+
* - Replace spaces and special chars with underscores
|
|
8
|
+
* - Remove consecutive underscores
|
|
9
|
+
* - Trim underscores from start/end
|
|
10
|
+
* - Truncate to reasonable length
|
|
11
|
+
*/
|
|
12
|
+
export declare function titleToFilename(title: string, maxLength?: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generate a unique filename based on title, with ID suffix if collision
|
|
15
|
+
* @param title - The spec title
|
|
16
|
+
* @param id - The spec ID (used for collision resolution)
|
|
17
|
+
* @param directory - Directory to check for collisions
|
|
18
|
+
* @param extension - File extension (default: .md)
|
|
19
|
+
* @returns Unique filename
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateUniqueFilename(title: string, id: string, directory: string, extension?: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Find existing markdown file for a spec (supports both naming conventions)
|
|
24
|
+
* @param specId - The spec ID
|
|
25
|
+
* @param directory - Directory to search
|
|
26
|
+
* @param title - Optional title for title-based search
|
|
27
|
+
* @returns Path to existing file if found, null otherwise
|
|
28
|
+
*/
|
|
29
|
+
export declare function findExistingSpecFile(specId: string, directory: string, title?: string): string | null;
|
|
30
|
+
//# sourceMappingURL=filename-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename-generator.d.ts","sourceRoot":"","sources":["../src/filename-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAO7E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAc,GACxB,MAAM,CA4BR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAgCf"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate human-readable filenames from spec titles
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
/**
|
|
7
|
+
* Convert a title to snake_case filename
|
|
8
|
+
* - Lowercase
|
|
9
|
+
* - Replace spaces and special chars with underscores
|
|
10
|
+
* - Remove consecutive underscores
|
|
11
|
+
* - Trim underscores from start/end
|
|
12
|
+
* - Truncate to reasonable length
|
|
13
|
+
*/
|
|
14
|
+
export function titleToFilename(title, maxLength = 50) {
|
|
15
|
+
return title
|
|
16
|
+
.toLowerCase()
|
|
17
|
+
.replace(/[^a-z0-9]+/g, '_') // Replace non-alphanumeric with underscore
|
|
18
|
+
.replace(/_+/g, '_') // Replace multiple underscores with single
|
|
19
|
+
.replace(/^_|_$/g, '') // Trim underscores from start/end
|
|
20
|
+
.slice(0, maxLength); // Truncate to max length
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate a unique filename based on title, with ID suffix if collision
|
|
24
|
+
* @param title - The spec title
|
|
25
|
+
* @param id - The spec ID (used for collision resolution)
|
|
26
|
+
* @param directory - Directory to check for collisions
|
|
27
|
+
* @param extension - File extension (default: .md)
|
|
28
|
+
* @returns Unique filename
|
|
29
|
+
*/
|
|
30
|
+
export function generateUniqueFilename(title, id, directory, extension = '.md') {
|
|
31
|
+
const baseFilename = titleToFilename(title);
|
|
32
|
+
// Try base filename first
|
|
33
|
+
const baseFile = baseFilename + extension;
|
|
34
|
+
const basePath = path.join(directory, baseFile);
|
|
35
|
+
// If file doesn't exist, use base filename
|
|
36
|
+
if (!fs.existsSync(basePath)) {
|
|
37
|
+
return baseFile;
|
|
38
|
+
}
|
|
39
|
+
// Check if existing file is for the same spec (by reading its frontmatter ID)
|
|
40
|
+
try {
|
|
41
|
+
const existingContent = fs.readFileSync(basePath, 'utf8');
|
|
42
|
+
const idMatch = existingContent.match(/^---\s*\n[\s\S]*?^id:\s*['"]?([^'"\n]+)['"]?\s*$/m);
|
|
43
|
+
if (idMatch && idMatch[1] === id) {
|
|
44
|
+
// Same spec, use the existing filename
|
|
45
|
+
return baseFile;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
// If we can't read the file, assume it's a collision
|
|
50
|
+
}
|
|
51
|
+
// Collision detected - append ID
|
|
52
|
+
const collisionFilename = `${baseFilename}_${id}${extension}`;
|
|
53
|
+
return collisionFilename;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Find existing markdown file for a spec (supports both naming conventions)
|
|
57
|
+
* @param specId - The spec ID
|
|
58
|
+
* @param directory - Directory to search
|
|
59
|
+
* @param title - Optional title for title-based search
|
|
60
|
+
* @returns Path to existing file if found, null otherwise
|
|
61
|
+
*/
|
|
62
|
+
export function findExistingSpecFile(specId, directory, title) {
|
|
63
|
+
// Try ID-based filename first (legacy)
|
|
64
|
+
const idBasedFile = path.join(directory, `${specId}.md`);
|
|
65
|
+
if (fs.existsSync(idBasedFile)) {
|
|
66
|
+
return idBasedFile;
|
|
67
|
+
}
|
|
68
|
+
// Try title-based filename
|
|
69
|
+
if (title) {
|
|
70
|
+
const titleBasedFile = path.join(directory, `${titleToFilename(title)}.md`);
|
|
71
|
+
if (fs.existsSync(titleBasedFile)) {
|
|
72
|
+
// Verify it's the right spec by checking ID in frontmatter
|
|
73
|
+
try {
|
|
74
|
+
const content = fs.readFileSync(titleBasedFile, 'utf8');
|
|
75
|
+
const idMatch = content.match(/^---\s*\n[\s\S]*?^id:\s*['"]?([^'"\n]+)['"]?\s*$/m);
|
|
76
|
+
if (idMatch && idMatch[1] === specId) {
|
|
77
|
+
return titleBasedFile;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
// Continue searching
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Try title-based with ID suffix
|
|
85
|
+
const titleWithIdFile = path.join(directory, `${titleToFilename(title)}_${specId}.md`);
|
|
86
|
+
if (fs.existsSync(titleWithIdFile)) {
|
|
87
|
+
return titleWithIdFile;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Not found
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=filename-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename-generator.js","sourceRoot":"","sources":["../src/filename-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID generation utilities
|
|
3
|
+
*/
|
|
4
|
+
import type Database from "better-sqlite3";
|
|
5
|
+
import type { Config } from "@sudocode-ai/types";
|
|
6
|
+
/**
|
|
7
|
+
* Generate next spec ID based on database contents
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateSpecId(db: Database.Database, outputDir: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Generate next issue ID based on database contents
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateIssueId(db: Database.Database, outputDir: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get current config
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConfig(outputDir: string): Config;
|
|
18
|
+
/**
|
|
19
|
+
* Update config (version-controlled)
|
|
20
|
+
*/
|
|
21
|
+
export declare function updateConfig(outputDir: string, updates: Partial<Config>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a UUID v4
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateUUID(): string;
|
|
26
|
+
//# sourceMappingURL=id-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../src/id-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CAKR;AA6FD;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GACvB,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID generation utilities
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import * as crypto from "crypto";
|
|
7
|
+
import { VERSION } from "./version.js";
|
|
8
|
+
/**
|
|
9
|
+
* Generate next spec ID based on database contents
|
|
10
|
+
*/
|
|
11
|
+
export function generateSpecId(db, outputDir) {
|
|
12
|
+
const config = readConfig(outputDir);
|
|
13
|
+
const nextNumber = getNextSpecNumber(db);
|
|
14
|
+
return `${config.id_prefix.spec}-${String(nextNumber).padStart(3, "0")}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate next issue ID based on database contents
|
|
18
|
+
*/
|
|
19
|
+
export function generateIssueId(db, outputDir) {
|
|
20
|
+
const config = readConfig(outputDir);
|
|
21
|
+
const nextNumber = getNextIssueNumber(db);
|
|
22
|
+
return `${config.id_prefix.issue}-${String(nextNumber).padStart(3, "0")}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get next spec number from database
|
|
26
|
+
* Strategy:
|
|
27
|
+
* 1. Find the latest spec by created_at
|
|
28
|
+
* 2. Extract number from its ID
|
|
29
|
+
* 3. Increment by 1
|
|
30
|
+
* 4. Fallback to count + 1 if extraction fails
|
|
31
|
+
*/
|
|
32
|
+
function getNextSpecNumber(db) {
|
|
33
|
+
const stmt = db.prepare(`
|
|
34
|
+
SELECT id FROM specs
|
|
35
|
+
ORDER BY created_at DESC
|
|
36
|
+
LIMIT 1
|
|
37
|
+
`);
|
|
38
|
+
const latest = stmt.get();
|
|
39
|
+
if (latest) {
|
|
40
|
+
const match = latest.id.match(/(\d+)$/);
|
|
41
|
+
if (match) {
|
|
42
|
+
return parseInt(match[1], 10) + 1;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Fallback: count + 1
|
|
46
|
+
const countStmt = db.prepare(`SELECT COUNT(*) as count FROM specs`);
|
|
47
|
+
const result = countStmt.get();
|
|
48
|
+
return result.count + 1;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get next issue number from database
|
|
52
|
+
* Strategy:
|
|
53
|
+
* 1. Find the latest issue by created_at
|
|
54
|
+
* 2. Extract number from its ID
|
|
55
|
+
* 3. Increment by 1
|
|
56
|
+
* 4. Fallback to count + 1 if extraction fails
|
|
57
|
+
*/
|
|
58
|
+
function getNextIssueNumber(db) {
|
|
59
|
+
const stmt = db.prepare(`
|
|
60
|
+
SELECT id FROM issues
|
|
61
|
+
ORDER BY created_at DESC
|
|
62
|
+
LIMIT 1
|
|
63
|
+
`);
|
|
64
|
+
const latest = stmt.get();
|
|
65
|
+
if (latest) {
|
|
66
|
+
const match = latest.id.match(/(\d+)$/);
|
|
67
|
+
if (match) {
|
|
68
|
+
return parseInt(match[1], 10) + 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Fallback: count + 1
|
|
72
|
+
const countStmt = db.prepare(`SELECT COUNT(*) as count FROM issues`);
|
|
73
|
+
const result = countStmt.get();
|
|
74
|
+
return result.count + 1;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Read config file (version-controlled)
|
|
78
|
+
*/
|
|
79
|
+
function readConfig(outputDir) {
|
|
80
|
+
const configPath = path.join(outputDir, "config.json");
|
|
81
|
+
if (!fs.existsSync(configPath)) {
|
|
82
|
+
// Create default config if not exists
|
|
83
|
+
const defaultConfig = {
|
|
84
|
+
version: VERSION,
|
|
85
|
+
id_prefix: {
|
|
86
|
+
spec: "SPEC",
|
|
87
|
+
issue: "ISSUE",
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
writeConfig(outputDir, defaultConfig);
|
|
91
|
+
return defaultConfig;
|
|
92
|
+
}
|
|
93
|
+
const content = fs.readFileSync(configPath, "utf8");
|
|
94
|
+
return JSON.parse(content);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Write config file (version-controlled)
|
|
98
|
+
*/
|
|
99
|
+
function writeConfig(outputDir, config) {
|
|
100
|
+
const configPath = path.join(outputDir, "config.json");
|
|
101
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf8");
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get current config
|
|
105
|
+
*/
|
|
106
|
+
export function getConfig(outputDir) {
|
|
107
|
+
return readConfig(outputDir);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Update config (version-controlled)
|
|
111
|
+
*/
|
|
112
|
+
export function updateConfig(outputDir, updates) {
|
|
113
|
+
const config = readConfig(outputDir);
|
|
114
|
+
Object.assign(config, updates);
|
|
115
|
+
writeConfig(outputDir, config);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Generate a UUID v4
|
|
119
|
+
*/
|
|
120
|
+
export function generateUUID() {
|
|
121
|
+
return crypto.randomUUID();
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../src/id-generator.ts"],"names":[],"mappings":"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"}
|