@mc1global/opencode-jarvis 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/LICENSE +10 -0
- package/README.md +171 -0
- package/dist/application/context-memory/dtos.d.ts +100 -0
- package/dist/application/context-memory/dtos.d.ts.map +1 -0
- package/dist/application/context-memory/dtos.js +11 -0
- package/dist/application/context-memory/dtos.js.map +1 -0
- package/dist/application/context-memory/note-use-cases.d.ts +22 -0
- package/dist/application/context-memory/note-use-cases.d.ts.map +1 -0
- package/dist/application/context-memory/note-use-cases.js +76 -0
- package/dist/application/context-memory/note-use-cases.js.map +1 -0
- package/dist/application/context-memory/session-use-cases.d.ts +23 -0
- package/dist/application/context-memory/session-use-cases.d.ts.map +1 -0
- package/dist/application/context-memory/session-use-cases.js +63 -0
- package/dist/application/context-memory/session-use-cases.js.map +1 -0
- package/dist/application/context-memory/todo-use-cases.d.ts +25 -0
- package/dist/application/context-memory/todo-use-cases.d.ts.map +1 -0
- package/dist/application/context-memory/todo-use-cases.js +100 -0
- package/dist/application/context-memory/todo-use-cases.js.map +1 -0
- package/dist/application/domain-map/dtos.d.ts +58 -0
- package/dist/application/domain-map/dtos.d.ts.map +1 -0
- package/dist/application/domain-map/dtos.js +11 -0
- package/dist/application/domain-map/dtos.js.map +1 -0
- package/dist/application/domain-map/use-cases.d.ts +64 -0
- package/dist/application/domain-map/use-cases.d.ts.map +1 -0
- package/dist/application/domain-map/use-cases.js +217 -0
- package/dist/application/domain-map/use-cases.js.map +1 -0
- package/dist/application/environment/dtos.d.ts +74 -0
- package/dist/application/environment/dtos.d.ts.map +1 -0
- package/dist/application/environment/dtos.js +10 -0
- package/dist/application/environment/dtos.js.map +1 -0
- package/dist/application/environment/use-cases.d.ts +29 -0
- package/dist/application/environment/use-cases.d.ts.map +1 -0
- package/dist/application/environment/use-cases.js +232 -0
- package/dist/application/environment/use-cases.js.map +1 -0
- package/dist/application/governance/validation-use-cases.d.ts +45 -0
- package/dist/application/governance/validation-use-cases.d.ts.map +1 -0
- package/dist/application/governance/validation-use-cases.js +51 -0
- package/dist/application/governance/validation-use-cases.js.map +1 -0
- package/dist/application/kanban/board-use-cases.d.ts +45 -0
- package/dist/application/kanban/board-use-cases.d.ts.map +1 -0
- package/dist/application/kanban/board-use-cases.js +124 -0
- package/dist/application/kanban/board-use-cases.js.map +1 -0
- package/dist/application/kanban/card-use-cases.d.ts +32 -0
- package/dist/application/kanban/card-use-cases.d.ts.map +1 -0
- package/dist/application/kanban/card-use-cases.js +204 -0
- package/dist/application/kanban/card-use-cases.js.map +1 -0
- package/dist/application/kanban/dtos.d.ts +165 -0
- package/dist/application/kanban/dtos.d.ts.map +1 -0
- package/dist/application/kanban/dtos.js +11 -0
- package/dist/application/kanban/dtos.js.map +1 -0
- package/dist/application/kanban/sprint-use-cases.d.ts +34 -0
- package/dist/application/kanban/sprint-use-cases.d.ts.map +1 -0
- package/dist/application/kanban/sprint-use-cases.js +243 -0
- package/dist/application/kanban/sprint-use-cases.js.map +1 -0
- package/dist/application/rag/dtos.d.ts +113 -0
- package/dist/application/rag/dtos.d.ts.map +1 -0
- package/dist/application/rag/dtos.js +11 -0
- package/dist/application/rag/dtos.js.map +1 -0
- package/dist/application/rag/oracle-use-cases.d.ts +30 -0
- package/dist/application/rag/oracle-use-cases.d.ts.map +1 -0
- package/dist/application/rag/oracle-use-cases.js +91 -0
- package/dist/application/rag/oracle-use-cases.js.map +1 -0
- package/dist/application/rag/use-cases.d.ts +34 -0
- package/dist/application/rag/use-cases.d.ts.map +1 -0
- package/dist/application/rag/use-cases.js +234 -0
- package/dist/application/rag/use-cases.js.map +1 -0
- package/dist/application/token-metrics/dtos.d.ts +126 -0
- package/dist/application/token-metrics/dtos.d.ts.map +1 -0
- package/dist/application/token-metrics/dtos.js +11 -0
- package/dist/application/token-metrics/dtos.js.map +1 -0
- package/dist/application/token-metrics/tracking-use-cases.d.ts +33 -0
- package/dist/application/token-metrics/tracking-use-cases.d.ts.map +1 -0
- package/dist/application/token-metrics/tracking-use-cases.js +220 -0
- package/dist/application/token-metrics/tracking-use-cases.js.map +1 -0
- package/dist/application/vault/dtos.d.ts +91 -0
- package/dist/application/vault/dtos.d.ts.map +1 -0
- package/dist/application/vault/dtos.js +11 -0
- package/dist/application/vault/dtos.js.map +1 -0
- package/dist/application/vault/use-cases.d.ts +30 -0
- package/dist/application/vault/use-cases.d.ts.map +1 -0
- package/dist/application/vault/use-cases.js +307 -0
- package/dist/application/vault/use-cases.js.map +1 -0
- package/dist/application/vault/vault-manager.d.ts +47 -0
- package/dist/application/vault/vault-manager.d.ts.map +1 -0
- package/dist/application/vault/vault-manager.js +272 -0
- package/dist/application/vault/vault-manager.js.map +1 -0
- package/dist/application/workspace-registry/dtos.d.ts +91 -0
- package/dist/application/workspace-registry/dtos.d.ts.map +1 -0
- package/dist/application/workspace-registry/dtos.js +11 -0
- package/dist/application/workspace-registry/dtos.js.map +1 -0
- package/dist/application/workspace-registry/use-cases.d.ts +29 -0
- package/dist/application/workspace-registry/use-cases.d.ts.map +1 -0
- package/dist/application/workspace-registry/use-cases.js +249 -0
- package/dist/application/workspace-registry/use-cases.js.map +1 -0
- package/dist/domain/context-memory/entities.d.ts +123 -0
- package/dist/domain/context-memory/entities.d.ts.map +1 -0
- package/dist/domain/context-memory/entities.js +229 -0
- package/dist/domain/context-memory/entities.js.map +1 -0
- package/dist/domain/context-memory/repositories.d.ts +46 -0
- package/dist/domain/context-memory/repositories.d.ts.map +1 -0
- package/dist/domain/context-memory/repositories.js +2 -0
- package/dist/domain/context-memory/repositories.js.map +1 -0
- package/dist/domain/context-memory/services.d.ts +62 -0
- package/dist/domain/context-memory/services.d.ts.map +1 -0
- package/dist/domain/context-memory/services.js +162 -0
- package/dist/domain/context-memory/services.js.map +1 -0
- package/dist/domain/context-memory/value-objects.d.ts +65 -0
- package/dist/domain/context-memory/value-objects.d.ts.map +1 -0
- package/dist/domain/context-memory/value-objects.js +105 -0
- package/dist/domain/context-memory/value-objects.js.map +1 -0
- package/dist/domain/domain-map/repositories.d.ts +126 -0
- package/dist/domain/domain-map/repositories.d.ts.map +1 -0
- package/dist/domain/domain-map/repositories.js +2 -0
- package/dist/domain/domain-map/repositories.js.map +1 -0
- package/dist/domain/domain-map/services.d.ts +108 -0
- package/dist/domain/domain-map/services.d.ts.map +1 -0
- package/dist/domain/domain-map/services.js +335 -0
- package/dist/domain/domain-map/services.js.map +1 -0
- package/dist/domain/domain-map/value-objects.d.ts +186 -0
- package/dist/domain/domain-map/value-objects.d.ts.map +1 -0
- package/dist/domain/domain-map/value-objects.js +215 -0
- package/dist/domain/domain-map/value-objects.js.map +1 -0
- package/dist/domain/environment/entities.d.ts +93 -0
- package/dist/domain/environment/entities.d.ts.map +1 -0
- package/dist/domain/environment/entities.js +207 -0
- package/dist/domain/environment/entities.js.map +1 -0
- package/dist/domain/environment/renderers.d.ts +30 -0
- package/dist/domain/environment/renderers.d.ts.map +1 -0
- package/dist/domain/environment/renderers.js +139 -0
- package/dist/domain/environment/renderers.js.map +1 -0
- package/dist/domain/environment/repositories.d.ts +73 -0
- package/dist/domain/environment/repositories.d.ts.map +1 -0
- package/dist/domain/environment/repositories.js +16 -0
- package/dist/domain/environment/repositories.js.map +1 -0
- package/dist/domain/environment/services.d.ts +62 -0
- package/dist/domain/environment/services.d.ts.map +1 -0
- package/dist/domain/environment/services.js +282 -0
- package/dist/domain/environment/services.js.map +1 -0
- package/dist/domain/environment/value-objects.d.ts +127 -0
- package/dist/domain/environment/value-objects.d.ts.map +1 -0
- package/dist/domain/environment/value-objects.js +179 -0
- package/dist/domain/environment/value-objects.js.map +1 -0
- package/dist/domain/governance/policies.d.ts +42 -0
- package/dist/domain/governance/policies.d.ts.map +1 -0
- package/dist/domain/governance/policies.js +304 -0
- package/dist/domain/governance/policies.js.map +1 -0
- package/dist/domain/governance/services.d.ts +38 -0
- package/dist/domain/governance/services.d.ts.map +1 -0
- package/dist/domain/governance/services.js +42 -0
- package/dist/domain/governance/services.js.map +1 -0
- package/dist/domain/kanban/entities.d.ts +105 -0
- package/dist/domain/kanban/entities.d.ts.map +1 -0
- package/dist/domain/kanban/entities.js +211 -0
- package/dist/domain/kanban/entities.js.map +1 -0
- package/dist/domain/kanban/grooming.d.ts +40 -0
- package/dist/domain/kanban/grooming.d.ts.map +1 -0
- package/dist/domain/kanban/grooming.js +50 -0
- package/dist/domain/kanban/grooming.js.map +1 -0
- package/dist/domain/kanban/repositories.d.ts +41 -0
- package/dist/domain/kanban/repositories.d.ts.map +1 -0
- package/dist/domain/kanban/repositories.js +2 -0
- package/dist/domain/kanban/repositories.js.map +1 -0
- package/dist/domain/kanban/services.d.ts +49 -0
- package/dist/domain/kanban/services.d.ts.map +1 -0
- package/dist/domain/kanban/services.js +154 -0
- package/dist/domain/kanban/services.js.map +1 -0
- package/dist/domain/kanban/sprint.d.ts +103 -0
- package/dist/domain/kanban/sprint.d.ts.map +1 -0
- package/dist/domain/kanban/sprint.js +192 -0
- package/dist/domain/kanban/sprint.js.map +1 -0
- package/dist/domain/kanban/value-objects.d.ts +91 -0
- package/dist/domain/kanban/value-objects.d.ts.map +1 -0
- package/dist/domain/kanban/value-objects.js +167 -0
- package/dist/domain/kanban/value-objects.js.map +1 -0
- package/dist/domain/rag/repositories.d.ts +152 -0
- package/dist/domain/rag/repositories.d.ts.map +1 -0
- package/dist/domain/rag/repositories.js +2 -0
- package/dist/domain/rag/repositories.js.map +1 -0
- package/dist/domain/rag/services.d.ts +57 -0
- package/dist/domain/rag/services.d.ts.map +1 -0
- package/dist/domain/rag/services.js +224 -0
- package/dist/domain/rag/services.js.map +1 -0
- package/dist/domain/rag/value-objects.d.ts +118 -0
- package/dist/domain/rag/value-objects.d.ts.map +1 -0
- package/dist/domain/rag/value-objects.js +114 -0
- package/dist/domain/rag/value-objects.js.map +1 -0
- package/dist/domain/shared/value-objects.d.ts +56 -0
- package/dist/domain/shared/value-objects.d.ts.map +1 -0
- package/dist/domain/shared/value-objects.js +89 -0
- package/dist/domain/shared/value-objects.js.map +1 -0
- package/dist/domain/token-metrics/entities.d.ts +90 -0
- package/dist/domain/token-metrics/entities.d.ts.map +1 -0
- package/dist/domain/token-metrics/entities.js +115 -0
- package/dist/domain/token-metrics/entities.js.map +1 -0
- package/dist/domain/token-metrics/repositories.d.ts +93 -0
- package/dist/domain/token-metrics/repositories.d.ts.map +1 -0
- package/dist/domain/token-metrics/repositories.js +2 -0
- package/dist/domain/token-metrics/repositories.js.map +1 -0
- package/dist/domain/token-metrics/value-objects.d.ts +81 -0
- package/dist/domain/token-metrics/value-objects.d.ts.map +1 -0
- package/dist/domain/token-metrics/value-objects.js +144 -0
- package/dist/domain/token-metrics/value-objects.js.map +1 -0
- package/dist/domain/vault/canvas.d.ts +70 -0
- package/dist/domain/vault/canvas.d.ts.map +1 -0
- package/dist/domain/vault/canvas.js +70 -0
- package/dist/domain/vault/canvas.js.map +1 -0
- package/dist/domain/vault/document.d.ts +71 -0
- package/dist/domain/vault/document.d.ts.map +1 -0
- package/dist/domain/vault/document.js +244 -0
- package/dist/domain/vault/document.js.map +1 -0
- package/dist/domain/vault/repositories.d.ts +35 -0
- package/dist/domain/vault/repositories.d.ts.map +1 -0
- package/dist/domain/vault/repositories.js +2 -0
- package/dist/domain/vault/repositories.js.map +1 -0
- package/dist/domain/vault/section.d.ts +33 -0
- package/dist/domain/vault/section.d.ts.map +1 -0
- package/dist/domain/vault/section.js +39 -0
- package/dist/domain/vault/section.js.map +1 -0
- package/dist/domain/vault/services.d.ts +48 -0
- package/dist/domain/vault/services.d.ts.map +1 -0
- package/dist/domain/vault/services.js +249 -0
- package/dist/domain/vault/services.js.map +1 -0
- package/dist/domain/vault/table.d.ts +58 -0
- package/dist/domain/vault/table.d.ts.map +1 -0
- package/dist/domain/vault/table.js +204 -0
- package/dist/domain/vault/table.js.map +1 -0
- package/dist/domain/vault/timeline.d.ts +53 -0
- package/dist/domain/vault/timeline.d.ts.map +1 -0
- package/dist/domain/vault/timeline.js +214 -0
- package/dist/domain/vault/timeline.js.map +1 -0
- package/dist/domain/vault/value-objects.d.ts +45 -0
- package/dist/domain/vault/value-objects.d.ts.map +1 -0
- package/dist/domain/vault/value-objects.js +89 -0
- package/dist/domain/vault/value-objects.js.map +1 -0
- package/dist/domain/workspace-registry/entities.d.ts +57 -0
- package/dist/domain/workspace-registry/entities.d.ts.map +1 -0
- package/dist/domain/workspace-registry/entities.js +148 -0
- package/dist/domain/workspace-registry/entities.js.map +1 -0
- package/dist/domain/workspace-registry/repositories.d.ts +57 -0
- package/dist/domain/workspace-registry/repositories.d.ts.map +1 -0
- package/dist/domain/workspace-registry/repositories.js +12 -0
- package/dist/domain/workspace-registry/repositories.js.map +1 -0
- package/dist/domain/workspace-registry/services.d.ts +56 -0
- package/dist/domain/workspace-registry/services.d.ts.map +1 -0
- package/dist/domain/workspace-registry/services.js +283 -0
- package/dist/domain/workspace-registry/services.js.map +1 -0
- package/dist/domain/workspace-registry/value-objects.d.ts +113 -0
- package/dist/domain/workspace-registry/value-objects.d.ts.map +1 -0
- package/dist/domain/workspace-registry/value-objects.js +235 -0
- package/dist/domain/workspace-registry/value-objects.js.map +1 -0
- package/dist/hooks/context-compacting.d.ts +35 -0
- package/dist/hooks/context-compacting.d.ts.map +1 -0
- package/dist/hooks/context-compacting.js +48 -0
- package/dist/hooks/context-compacting.js.map +1 -0
- package/dist/hooks/event-handlers.d.ts +39 -0
- package/dist/hooks/event-handlers.d.ts.map +1 -0
- package/dist/hooks/event-handlers.js +75 -0
- package/dist/hooks/event-handlers.js.map +1 -0
- package/dist/hooks/guardrails.d.ts +33 -0
- package/dist/hooks/guardrails.d.ts.map +1 -0
- package/dist/hooks/guardrails.js +22 -0
- package/dist/hooks/guardrails.js.map +1 -0
- package/dist/hooks/shell-env.d.ts +28 -0
- package/dist/hooks/shell-env.d.ts.map +1 -0
- package/dist/hooks/shell-env.js +17 -0
- package/dist/hooks/shell-env.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +349 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/context-memory/note-repository.d.ts +26 -0
- package/dist/infrastructure/context-memory/note-repository.d.ts.map +1 -0
- package/dist/infrastructure/context-memory/note-repository.js +87 -0
- package/dist/infrastructure/context-memory/note-repository.js.map +1 -0
- package/dist/infrastructure/context-memory/search-repository.d.ts +20 -0
- package/dist/infrastructure/context-memory/search-repository.d.ts.map +1 -0
- package/dist/infrastructure/context-memory/search-repository.js +44 -0
- package/dist/infrastructure/context-memory/search-repository.js.map +1 -0
- package/dist/infrastructure/context-memory/session-repository.d.ts +26 -0
- package/dist/infrastructure/context-memory/session-repository.d.ts.map +1 -0
- package/dist/infrastructure/context-memory/session-repository.js +79 -0
- package/dist/infrastructure/context-memory/session-repository.js.map +1 -0
- package/dist/infrastructure/context-memory/todo-repository.d.ts +26 -0
- package/dist/infrastructure/context-memory/todo-repository.d.ts.map +1 -0
- package/dist/infrastructure/context-memory/todo-repository.js +105 -0
- package/dist/infrastructure/context-memory/todo-repository.js.map +1 -0
- package/dist/infrastructure/database/sqlite-adapter.d.ts +60 -0
- package/dist/infrastructure/database/sqlite-adapter.d.ts.map +1 -0
- package/dist/infrastructure/database/sqlite-adapter.js +93 -0
- package/dist/infrastructure/database/sqlite-adapter.js.map +1 -0
- package/dist/infrastructure/domain-map/llm-analyzer.d.ts +60 -0
- package/dist/infrastructure/domain-map/llm-analyzer.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/llm-analyzer.js +249 -0
- package/dist/infrastructure/domain-map/llm-analyzer.js.map +1 -0
- package/dist/infrastructure/domain-map/lsp-adapter.d.ts +61 -0
- package/dist/infrastructure/domain-map/lsp-adapter.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/lsp-adapter.js +210 -0
- package/dist/infrastructure/domain-map/lsp-adapter.js.map +1 -0
- package/dist/infrastructure/domain-map/lsp-configs.d.ts +53 -0
- package/dist/infrastructure/domain-map/lsp-configs.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/lsp-configs.js +274 -0
- package/dist/infrastructure/domain-map/lsp-configs.js.map +1 -0
- package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts +132 -0
- package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/lsp-json-rpc.js +320 -0
- package/dist/infrastructure/domain-map/lsp-json-rpc.js.map +1 -0
- package/dist/infrastructure/domain-map/project-scanner.d.ts +43 -0
- package/dist/infrastructure/domain-map/project-scanner.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/project-scanner.js +193 -0
- package/dist/infrastructure/domain-map/project-scanner.js.map +1 -0
- package/dist/infrastructure/environment/environment-repository.d.ts +33 -0
- package/dist/infrastructure/environment/environment-repository.d.ts.map +1 -0
- package/dist/infrastructure/environment/environment-repository.js +161 -0
- package/dist/infrastructure/environment/environment-repository.js.map +1 -0
- package/dist/infrastructure/environment/scanner-adapter.d.ts +23 -0
- package/dist/infrastructure/environment/scanner-adapter.d.ts.map +1 -0
- package/dist/infrastructure/environment/scanner-adapter.js +102 -0
- package/dist/infrastructure/environment/scanner-adapter.js.map +1 -0
- package/dist/infrastructure/kanban/card-repository.d.ts +41 -0
- package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -0
- package/dist/infrastructure/kanban/card-repository.js +185 -0
- package/dist/infrastructure/kanban/card-repository.js.map +1 -0
- package/dist/infrastructure/kanban/sprint-repository.d.ts +40 -0
- package/dist/infrastructure/kanban/sprint-repository.d.ts.map +1 -0
- package/dist/infrastructure/kanban/sprint-repository.js +186 -0
- package/dist/infrastructure/kanban/sprint-repository.js.map +1 -0
- package/dist/infrastructure/rag/file-discovery.d.ts +19 -0
- package/dist/infrastructure/rag/file-discovery.d.ts.map +1 -0
- package/dist/infrastructure/rag/file-discovery.js +201 -0
- package/dist/infrastructure/rag/file-discovery.js.map +1 -0
- package/dist/infrastructure/rag/ollama-embeddings.d.ts +18 -0
- package/dist/infrastructure/rag/ollama-embeddings.d.ts.map +1 -0
- package/dist/infrastructure/rag/ollama-embeddings.js +54 -0
- package/dist/infrastructure/rag/ollama-embeddings.js.map +1 -0
- package/dist/infrastructure/rag/text-splitter.d.ts +19 -0
- package/dist/infrastructure/rag/text-splitter.d.ts.map +1 -0
- package/dist/infrastructure/rag/text-splitter.js +38 -0
- package/dist/infrastructure/rag/text-splitter.js.map +1 -0
- package/dist/infrastructure/rag/vectra-adapter.d.ts +38 -0
- package/dist/infrastructure/rag/vectra-adapter.d.ts.map +1 -0
- package/dist/infrastructure/rag/vectra-adapter.js +275 -0
- package/dist/infrastructure/rag/vectra-adapter.js.map +1 -0
- package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts +29 -0
- package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts.map +1 -0
- package/dist/infrastructure/token-metrics/token-metrics-repository.js +254 -0
- package/dist/infrastructure/token-metrics/token-metrics-repository.js.map +1 -0
- package/dist/infrastructure/vault/markdown-parser.d.ts +35 -0
- package/dist/infrastructure/vault/markdown-parser.d.ts.map +1 -0
- package/dist/infrastructure/vault/markdown-parser.js +145 -0
- package/dist/infrastructure/vault/markdown-parser.js.map +1 -0
- package/dist/infrastructure/vault/vault-fs-adapter.d.ts +17 -0
- package/dist/infrastructure/vault/vault-fs-adapter.d.ts.map +1 -0
- package/dist/infrastructure/vault/vault-fs-adapter.js +105 -0
- package/dist/infrastructure/vault/vault-fs-adapter.js.map +1 -0
- package/dist/infrastructure/workspace-registry/dependency-repository.d.ts +27 -0
- package/dist/infrastructure/workspace-registry/dependency-repository.d.ts.map +1 -0
- package/dist/infrastructure/workspace-registry/dependency-repository.js +89 -0
- package/dist/infrastructure/workspace-registry/dependency-repository.js.map +1 -0
- package/dist/infrastructure/workspace-registry/workspace-repository.d.ts +28 -0
- package/dist/infrastructure/workspace-registry/workspace-repository.d.ts.map +1 -0
- package/dist/infrastructure/workspace-registry/workspace-repository.js +108 -0
- package/dist/infrastructure/workspace-registry/workspace-repository.js.map +1 -0
- package/dist/tools/agent-tools.d.ts +14 -0
- package/dist/tools/agent-tools.d.ts.map +1 -0
- package/dist/tools/agent-tools.js +238 -0
- package/dist/tools/agent-tools.js.map +1 -0
- package/dist/tools/context-memory-tools.d.ts +16 -0
- package/dist/tools/context-memory-tools.d.ts.map +1 -0
- package/dist/tools/context-memory-tools.js +242 -0
- package/dist/tools/context-memory-tools.js.map +1 -0
- package/dist/tools/data-tools.d.ts +3 -0
- package/dist/tools/data-tools.d.ts.map +1 -0
- package/dist/tools/data-tools.js +383 -0
- package/dist/tools/data-tools.js.map +1 -0
- package/dist/tools/domain-map-tools.d.ts +41 -0
- package/dist/tools/domain-map-tools.d.ts.map +1 -0
- package/dist/tools/domain-map-tools.js +134 -0
- package/dist/tools/domain-map-tools.js.map +1 -0
- package/dist/tools/environment-tools.d.ts +85 -0
- package/dist/tools/environment-tools.d.ts.map +1 -0
- package/dist/tools/environment-tools.js +223 -0
- package/dist/tools/environment-tools.js.map +1 -0
- package/dist/tools/governance-tools.d.ts +7 -0
- package/dist/tools/governance-tools.d.ts.map +1 -0
- package/dist/tools/governance-tools.js +73 -0
- package/dist/tools/governance-tools.js.map +1 -0
- package/dist/tools/kanban-board-tools.d.ts +11 -0
- package/dist/tools/kanban-board-tools.d.ts.map +1 -0
- package/dist/tools/kanban-board-tools.js +354 -0
- package/dist/tools/kanban-board-tools.js.map +1 -0
- package/dist/tools/kanban-card-tools.d.ts +11 -0
- package/dist/tools/kanban-card-tools.d.ts.map +1 -0
- package/dist/tools/kanban-card-tools.js +407 -0
- package/dist/tools/kanban-card-tools.js.map +1 -0
- package/dist/tools/rag-tools.d.ts +10 -0
- package/dist/tools/rag-tools.d.ts.map +1 -0
- package/dist/tools/rag-tools.js +279 -0
- package/dist/tools/rag-tools.js.map +1 -0
- package/dist/tools/token-metrics-tools.d.ts +98 -0
- package/dist/tools/token-metrics-tools.d.ts.map +1 -0
- package/dist/tools/token-metrics-tools.js +287 -0
- package/dist/tools/token-metrics-tools.js.map +1 -0
- package/dist/tools/vault-manage-tool.d.ts +7 -0
- package/dist/tools/vault-manage-tool.d.ts.map +1 -0
- package/dist/tools/vault-manage-tool.js +193 -0
- package/dist/tools/vault-manage-tool.js.map +1 -0
- package/dist/tools/vault-tools.d.ts +7 -0
- package/dist/tools/vault-tools.d.ts.map +1 -0
- package/dist/tools/vault-tools.js +348 -0
- package/dist/tools/vault-tools.js.map +1 -0
- package/dist/tools/workspace-registry-tools.d.ts +93 -0
- package/dist/tools/workspace-registry-tools.d.ts.map +1 -0
- package/dist/tools/workspace-registry-tools.js +217 -0
- package/dist/tools/workspace-registry-tools.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Session } from "../../domain/context-memory/entities.js";
|
|
2
|
+
import { SessionId, SessionState, } from "../../domain/context-memory/value-objects.js";
|
|
3
|
+
import { WorkspaceId, Timestamp } from "../../domain/shared/value-objects.js";
|
|
4
|
+
const SCHEMA_KEY = "context_memory_sessions";
|
|
5
|
+
const DDL = `
|
|
6
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
7
|
+
id TEXT PRIMARY KEY,
|
|
8
|
+
workspace TEXT NOT NULL,
|
|
9
|
+
purpose TEXT NOT NULL,
|
|
10
|
+
state TEXT NOT NULL DEFAULT 'planning',
|
|
11
|
+
agent_name TEXT,
|
|
12
|
+
started_at TEXT NOT NULL,
|
|
13
|
+
finished_at TEXT,
|
|
14
|
+
summary TEXT
|
|
15
|
+
);
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_session_workspace ON sessions(workspace);
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_session_state ON sessions(state);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_session_started_at ON sessions(started_at);
|
|
19
|
+
`;
|
|
20
|
+
export class SqliteSessionRepository {
|
|
21
|
+
db;
|
|
22
|
+
constructor(db) {
|
|
23
|
+
this.db = db;
|
|
24
|
+
this.db.ensureSchema(SCHEMA_KEY, DDL);
|
|
25
|
+
}
|
|
26
|
+
async save(session) {
|
|
27
|
+
const sql = `
|
|
28
|
+
INSERT INTO sessions (id, workspace, purpose, state, agent_name, started_at, finished_at, summary)
|
|
29
|
+
VALUES (@id, @workspace, @purpose, @state, @agent_name, @started_at, @finished_at, @summary)
|
|
30
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
31
|
+
state = @state,
|
|
32
|
+
finished_at = @finished_at,
|
|
33
|
+
summary = @summary
|
|
34
|
+
`;
|
|
35
|
+
this.db.execute(sql, {
|
|
36
|
+
id: session.id.value,
|
|
37
|
+
workspace: session.workspace.value,
|
|
38
|
+
purpose: session.purpose,
|
|
39
|
+
state: session.state,
|
|
40
|
+
agent_name: session.agentName ?? null,
|
|
41
|
+
started_at: session.startedAt.toISO(),
|
|
42
|
+
finished_at: session.finishedAt?.toISO() ?? null,
|
|
43
|
+
summary: session.summary ?? null,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async findById(id) {
|
|
47
|
+
const row = this.db.queryOne("SELECT * FROM sessions WHERE id = @id", { id: id.value });
|
|
48
|
+
return row ? this.toDomain(row) : null;
|
|
49
|
+
}
|
|
50
|
+
async findByWorkspace(workspace) {
|
|
51
|
+
const rows = this.db.queryAll("SELECT * FROM sessions WHERE workspace = @workspace ORDER BY started_at DESC", { workspace: workspace.value });
|
|
52
|
+
return rows.map((row) => this.toDomain(row));
|
|
53
|
+
}
|
|
54
|
+
async findActive(workspace) {
|
|
55
|
+
const row = this.db.queryOne(`SELECT * FROM sessions
|
|
56
|
+
WHERE workspace = @workspace AND state IN ('planning', 'wip')
|
|
57
|
+
ORDER BY started_at DESC LIMIT 1`, { workspace: workspace.value });
|
|
58
|
+
return row ? this.toDomain(row) : null;
|
|
59
|
+
}
|
|
60
|
+
async delete(id) {
|
|
61
|
+
this.db.execute("DELETE FROM sessions WHERE id = @id", { id: id.value });
|
|
62
|
+
}
|
|
63
|
+
toDomain(row) {
|
|
64
|
+
const props = {
|
|
65
|
+
id: SessionId.from(row.id),
|
|
66
|
+
workspace: WorkspaceId.from(row.workspace),
|
|
67
|
+
purpose: row.purpose,
|
|
68
|
+
state: row.state,
|
|
69
|
+
...(row.agent_name !== null ? { agentName: row.agent_name } : {}),
|
|
70
|
+
startedAt: Timestamp.fromISO(row.started_at),
|
|
71
|
+
...(row.finished_at !== null
|
|
72
|
+
? { finishedAt: Timestamp.fromISO(row.finished_at) }
|
|
73
|
+
: {}),
|
|
74
|
+
...(row.summary !== null ? { summary: row.summary } : {}),
|
|
75
|
+
};
|
|
76
|
+
return Session.reconstitute(props);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=session-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/context-memory/session-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Todo Repository
|
|
3
|
+
*
|
|
4
|
+
* Implements TodoRepository interface from domain layer.
|
|
5
|
+
* Maps Todo entities to/from SQLite rows.
|
|
6
|
+
*
|
|
7
|
+
* SOLID: SRP - persistence for Todo aggregate only
|
|
8
|
+
* SOLID: DIP - implements domain interface
|
|
9
|
+
*/
|
|
10
|
+
import type { SqliteAdapter } from "../database/sqlite-adapter.js";
|
|
11
|
+
import type { TodoRepository } from "../../domain/context-memory/repositories.js";
|
|
12
|
+
import { Todo } from "../../domain/context-memory/entities.js";
|
|
13
|
+
import { TodoId, TodoStatus, SessionId } from "../../domain/context-memory/value-objects.js";
|
|
14
|
+
import { WorkspaceId } from "../../domain/shared/value-objects.js";
|
|
15
|
+
export declare class SqliteTodoRepository implements TodoRepository {
|
|
16
|
+
private readonly db;
|
|
17
|
+
constructor(db: SqliteAdapter);
|
|
18
|
+
save(todo: Todo): Promise<void>;
|
|
19
|
+
findById(id: TodoId): Promise<Todo | null>;
|
|
20
|
+
findByWorkspace(workspace: WorkspaceId, status?: TodoStatus): Promise<readonly Todo[]>;
|
|
21
|
+
findBySession(sessionId: SessionId): Promise<readonly Todo[]>;
|
|
22
|
+
search(query: string, workspace: WorkspaceId): Promise<readonly Todo[]>;
|
|
23
|
+
delete(id: TodoId): Promise<void>;
|
|
24
|
+
private toDomain;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=todo-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-repository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/context-memory/todo-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,MAAM,yCAAyC,CAAC;AAE/D,OAAO,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACV,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,WAAW,EAAa,MAAM,sCAAsC,CAAC;AAsC9E,qBAAa,oBAAqB,YAAW,cAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,aAAa;IAIxC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ1C,eAAe,CACnB,SAAS,EAAE,WAAW,EACtB,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAiBrB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAS7D,MAAM,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAUrB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,OAAO,CAAC,QAAQ;CAsBjB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Todo } from "../../domain/context-memory/entities.js";
|
|
2
|
+
import { TodoId, TodoStatus, SessionId, } from "../../domain/context-memory/value-objects.js";
|
|
3
|
+
import { WorkspaceId, Timestamp } from "../../domain/shared/value-objects.js";
|
|
4
|
+
const SCHEMA_KEY = "context_memory_todos";
|
|
5
|
+
const DDL = `
|
|
6
|
+
CREATE TABLE IF NOT EXISTS todos (
|
|
7
|
+
id TEXT PRIMARY KEY,
|
|
8
|
+
content TEXT NOT NULL,
|
|
9
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
10
|
+
priority INTEGER NOT NULL DEFAULT 3,
|
|
11
|
+
workspace TEXT NOT NULL,
|
|
12
|
+
session_id TEXT,
|
|
13
|
+
tags TEXT NOT NULL DEFAULT '',
|
|
14
|
+
created_at TEXT NOT NULL,
|
|
15
|
+
updated_at TEXT,
|
|
16
|
+
completed_at TEXT,
|
|
17
|
+
FOREIGN KEY (session_id) REFERENCES sessions(id)
|
|
18
|
+
);
|
|
19
|
+
CREATE INDEX IF NOT EXISTS idx_todo_workspace ON todos(workspace);
|
|
20
|
+
CREATE INDEX IF NOT EXISTS idx_todo_status ON todos(status);
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_todo_session_id ON todos(session_id);
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_todo_priority ON todos(priority);
|
|
23
|
+
`;
|
|
24
|
+
export class SqliteTodoRepository {
|
|
25
|
+
db;
|
|
26
|
+
constructor(db) {
|
|
27
|
+
this.db = db;
|
|
28
|
+
this.db.ensureSchema(SCHEMA_KEY, DDL);
|
|
29
|
+
}
|
|
30
|
+
async save(todo) {
|
|
31
|
+
const sql = `
|
|
32
|
+
INSERT INTO todos (id, content, status, priority, workspace, session_id, tags, created_at, updated_at, completed_at)
|
|
33
|
+
VALUES (@id, @content, @status, @priority, @workspace, @session_id, @tags, @created_at, @updated_at, @completed_at)
|
|
34
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
35
|
+
status = @status,
|
|
36
|
+
priority = @priority,
|
|
37
|
+
tags = @tags,
|
|
38
|
+
updated_at = @updated_at,
|
|
39
|
+
completed_at = @completed_at
|
|
40
|
+
`;
|
|
41
|
+
this.db.execute(sql, {
|
|
42
|
+
id: todo.id.value,
|
|
43
|
+
content: todo.content,
|
|
44
|
+
status: todo.status,
|
|
45
|
+
priority: todo.priority,
|
|
46
|
+
workspace: todo.workspace.value,
|
|
47
|
+
session_id: todo.sessionId?.value ?? null,
|
|
48
|
+
tags: todo.tags.join(","),
|
|
49
|
+
created_at: todo.createdAt.toISO(),
|
|
50
|
+
updated_at: todo.updatedAt?.toISO() ?? null,
|
|
51
|
+
completed_at: todo.completedAt?.toISO() ?? null,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async findById(id) {
|
|
55
|
+
const row = this.db.queryOne("SELECT * FROM todos WHERE id = @id", { id: id.value });
|
|
56
|
+
return row ? this.toDomain(row) : null;
|
|
57
|
+
}
|
|
58
|
+
async findByWorkspace(workspace, status) {
|
|
59
|
+
if (status !== undefined) {
|
|
60
|
+
const rows = this.db.queryAll(`SELECT * FROM todos WHERE workspace = @workspace AND status = @status
|
|
61
|
+
ORDER BY priority ASC, created_at DESC`, { workspace: workspace.value, status });
|
|
62
|
+
return rows.map((row) => this.toDomain(row));
|
|
63
|
+
}
|
|
64
|
+
const rows = this.db.queryAll(`SELECT * FROM todos WHERE workspace = @workspace
|
|
65
|
+
ORDER BY priority ASC, created_at DESC`, { workspace: workspace.value });
|
|
66
|
+
return rows.map((row) => this.toDomain(row));
|
|
67
|
+
}
|
|
68
|
+
async findBySession(sessionId) {
|
|
69
|
+
const rows = this.db.queryAll(`SELECT * FROM todos WHERE session_id = @session_id
|
|
70
|
+
ORDER BY priority ASC, created_at DESC`, { session_id: sessionId.value });
|
|
71
|
+
return rows.map((row) => this.toDomain(row));
|
|
72
|
+
}
|
|
73
|
+
async search(query, workspace) {
|
|
74
|
+
const rows = this.db.queryAll(`SELECT * FROM todos
|
|
75
|
+
WHERE workspace = @workspace AND content LIKE @pattern
|
|
76
|
+
ORDER BY priority ASC, created_at DESC`, { workspace: workspace.value, pattern: `%${query}%` });
|
|
77
|
+
return rows.map((row) => this.toDomain(row));
|
|
78
|
+
}
|
|
79
|
+
async delete(id) {
|
|
80
|
+
this.db.execute("DELETE FROM todos WHERE id = @id", { id: id.value });
|
|
81
|
+
}
|
|
82
|
+
toDomain(row) {
|
|
83
|
+
const tags = row.tags.length > 0 ? row.tags.split(",") : [];
|
|
84
|
+
const props = {
|
|
85
|
+
id: TodoId.from(row.id),
|
|
86
|
+
content: row.content,
|
|
87
|
+
status: row.status,
|
|
88
|
+
priority: row.priority,
|
|
89
|
+
workspace: WorkspaceId.from(row.workspace),
|
|
90
|
+
...(row.session_id !== null
|
|
91
|
+
? { sessionId: SessionId.from(row.session_id) }
|
|
92
|
+
: {}),
|
|
93
|
+
tags,
|
|
94
|
+
createdAt: Timestamp.fromISO(row.created_at),
|
|
95
|
+
...(row.updated_at !== null
|
|
96
|
+
? { updatedAt: Timestamp.fromISO(row.updated_at) }
|
|
97
|
+
: {}),
|
|
98
|
+
...(row.completed_at !== null
|
|
99
|
+
? { completedAt: Timestamp.fromISO(row.completed_at) }
|
|
100
|
+
: {}),
|
|
101
|
+
};
|
|
102
|
+
return Todo.reconstitute(props);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=todo-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/context-memory/todo-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Database Adapter
|
|
3
|
+
*
|
|
4
|
+
* Wraps better-sqlite3 to provide a clean interface for repository use.
|
|
5
|
+
* Handles database lifecycle, schema execution, and typed queries.
|
|
6
|
+
*
|
|
7
|
+
* SOLID: SRP - database connection management only
|
|
8
|
+
* SOLID: OCP - repositories extend behavior without modifying adapter
|
|
9
|
+
* SOLID: DIP - repositories depend on this adapter, not raw better-sqlite3
|
|
10
|
+
*/
|
|
11
|
+
import Database from "better-sqlite3";
|
|
12
|
+
import type { Statement } from "better-sqlite3";
|
|
13
|
+
/** Configuration for database initialization. */
|
|
14
|
+
export interface DatabaseConfig {
|
|
15
|
+
/** Path to SQLite file, or ":memory:" for in-memory DB. */
|
|
16
|
+
readonly path: string;
|
|
17
|
+
/** Enable WAL mode for better concurrent read performance. */
|
|
18
|
+
readonly walMode?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Thin adapter over better-sqlite3.
|
|
22
|
+
*
|
|
23
|
+
* Provides typed query helpers and schema management.
|
|
24
|
+
* Each repository calls ensureSchema() to set up its tables.
|
|
25
|
+
*/
|
|
26
|
+
export declare class SqliteAdapter {
|
|
27
|
+
private readonly db;
|
|
28
|
+
private readonly initializedSchemas;
|
|
29
|
+
constructor(config: DatabaseConfig);
|
|
30
|
+
/**
|
|
31
|
+
* Execute DDL schema idempotently.
|
|
32
|
+
* Tracks schema keys to avoid redundant execution.
|
|
33
|
+
*/
|
|
34
|
+
ensureSchema(schemaKey: string, ddl: string): void;
|
|
35
|
+
/** Run a query that returns rows. */
|
|
36
|
+
queryAll<T>(sql: string, params?: Record<string, unknown>): T[];
|
|
37
|
+
/** Run a query that returns a single row or undefined. */
|
|
38
|
+
queryOne<T>(sql: string, params?: Record<string, unknown>): T | undefined;
|
|
39
|
+
/** Run a statement that modifies data (INSERT, UPDATE, DELETE). */
|
|
40
|
+
execute(sql: string, params?: Record<string, unknown>): Database.RunResult;
|
|
41
|
+
/** Run multiple statements in a transaction. */
|
|
42
|
+
transaction<T>(fn: () => T): T;
|
|
43
|
+
/** Prepare a statement for repeated use. */
|
|
44
|
+
prepare(sql: string): Statement;
|
|
45
|
+
/** Get the last inserted rowid. */
|
|
46
|
+
get lastInsertRowid(): number | bigint;
|
|
47
|
+
/** Close the database connection. */
|
|
48
|
+
close(): void;
|
|
49
|
+
/** Check if the database is open. */
|
|
50
|
+
get isOpen(): boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Factory: create an in-memory SQLite adapter (for tests).
|
|
54
|
+
*/
|
|
55
|
+
export declare function createInMemoryAdapter(): SqliteAdapter;
|
|
56
|
+
/**
|
|
57
|
+
* Factory: create a file-based SQLite adapter.
|
|
58
|
+
*/
|
|
59
|
+
export declare function createFileAdapter(dirPath: string, dbName: string): SqliteAdapter;
|
|
60
|
+
//# sourceMappingURL=sqlite-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/database/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAA4B,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE1E,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;gBAE5C,MAAM,EAAE,cAAc;IAYlC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAMlD,qCAAqC;IACrC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;IAK/D,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS;IAKzE,mEAAmE;IACnE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,SAAS;IAK1E,gDAAgD;IAChD,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAK9B,4CAA4C;IAC5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAI/B,mCAAmC;IACnC,IAAI,eAAe,IAAI,MAAM,GAAG,MAAM,CASrC;IAED,qCAAqC;IACrC,KAAK,IAAI,IAAI;IAIb,qCAAqC;IACrC,IAAI,MAAM,IAAI,OAAO,CAEpB;CACF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,CAErD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,aAAa,CAGf"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Database Adapter
|
|
3
|
+
*
|
|
4
|
+
* Wraps better-sqlite3 to provide a clean interface for repository use.
|
|
5
|
+
* Handles database lifecycle, schema execution, and typed queries.
|
|
6
|
+
*
|
|
7
|
+
* SOLID: SRP - database connection management only
|
|
8
|
+
* SOLID: OCP - repositories extend behavior without modifying adapter
|
|
9
|
+
* SOLID: DIP - repositories depend on this adapter, not raw better-sqlite3
|
|
10
|
+
*/
|
|
11
|
+
import Database from "better-sqlite3";
|
|
12
|
+
/**
|
|
13
|
+
* Thin adapter over better-sqlite3.
|
|
14
|
+
*
|
|
15
|
+
* Provides typed query helpers and schema management.
|
|
16
|
+
* Each repository calls ensureSchema() to set up its tables.
|
|
17
|
+
*/
|
|
18
|
+
export class SqliteAdapter {
|
|
19
|
+
db;
|
|
20
|
+
initializedSchemas = new Set();
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.db = new Database(config.path);
|
|
23
|
+
// Enable WAL mode for better read concurrency (default: on)
|
|
24
|
+
if (config.walMode !== false) {
|
|
25
|
+
this.db.pragma("journal_mode = WAL");
|
|
26
|
+
}
|
|
27
|
+
// Foreign keys enforcement
|
|
28
|
+
this.db.pragma("foreign_keys = ON");
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Execute DDL schema idempotently.
|
|
32
|
+
* Tracks schema keys to avoid redundant execution.
|
|
33
|
+
*/
|
|
34
|
+
ensureSchema(schemaKey, ddl) {
|
|
35
|
+
if (this.initializedSchemas.has(schemaKey))
|
|
36
|
+
return;
|
|
37
|
+
this.db.exec(ddl);
|
|
38
|
+
this.initializedSchemas.add(schemaKey);
|
|
39
|
+
}
|
|
40
|
+
/** Run a query that returns rows. */
|
|
41
|
+
queryAll(sql, params) {
|
|
42
|
+
const stmt = this.db.prepare(sql);
|
|
43
|
+
return (params ? stmt.all(params) : stmt.all());
|
|
44
|
+
}
|
|
45
|
+
/** Run a query that returns a single row or undefined. */
|
|
46
|
+
queryOne(sql, params) {
|
|
47
|
+
const stmt = this.db.prepare(sql);
|
|
48
|
+
return (params ? stmt.get(params) : stmt.get());
|
|
49
|
+
}
|
|
50
|
+
/** Run a statement that modifies data (INSERT, UPDATE, DELETE). */
|
|
51
|
+
execute(sql, params) {
|
|
52
|
+
const stmt = this.db.prepare(sql);
|
|
53
|
+
return params ? stmt.run(params) : stmt.run();
|
|
54
|
+
}
|
|
55
|
+
/** Run multiple statements in a transaction. */
|
|
56
|
+
transaction(fn) {
|
|
57
|
+
const wrapped = this.db.transaction(fn);
|
|
58
|
+
return wrapped();
|
|
59
|
+
}
|
|
60
|
+
/** Prepare a statement for repeated use. */
|
|
61
|
+
prepare(sql) {
|
|
62
|
+
return this.db.prepare(sql);
|
|
63
|
+
}
|
|
64
|
+
/** Get the last inserted rowid. */
|
|
65
|
+
get lastInsertRowid() {
|
|
66
|
+
return this.db.prepare("SELECT last_insert_rowid() as id").get() !==
|
|
67
|
+
undefined
|
|
68
|
+
? this.db.prepare("SELECT last_insert_rowid() as id").get().id
|
|
69
|
+
: 0;
|
|
70
|
+
}
|
|
71
|
+
/** Close the database connection. */
|
|
72
|
+
close() {
|
|
73
|
+
this.db.close();
|
|
74
|
+
}
|
|
75
|
+
/** Check if the database is open. */
|
|
76
|
+
get isOpen() {
|
|
77
|
+
return this.db.open;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Factory: create an in-memory SQLite adapter (for tests).
|
|
82
|
+
*/
|
|
83
|
+
export function createInMemoryAdapter() {
|
|
84
|
+
return new SqliteAdapter({ path: ":memory:" });
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Factory: create a file-based SQLite adapter.
|
|
88
|
+
*/
|
|
89
|
+
export function createFileAdapter(dirPath, dbName) {
|
|
90
|
+
const path = `${dirPath}/${dbName}`;
|
|
91
|
+
return new SqliteAdapter({ path });
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=sqlite-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../../src/infrastructure/database/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain Map Infrastructure — LLM Semantic Analyzer
|
|
3
|
+
*
|
|
4
|
+
* Implements LlmAnalysisPort by delegating to a prompt function
|
|
5
|
+
* that the application layer injects (backed by OpenCode SDK
|
|
6
|
+
* `client.session.prompt` or any other LLM provider).
|
|
7
|
+
*
|
|
8
|
+
* Responsibilities:
|
|
9
|
+
* - Build a structured prompt from StructuralGraph + code samples
|
|
10
|
+
* - Parse the LLM's JSON response into domain SemanticAnalysis
|
|
11
|
+
* - Validate and sanitize the LLM output
|
|
12
|
+
*
|
|
13
|
+
* SOLID: SRP — LLM prompting and response parsing only
|
|
14
|
+
* SOLID: DIP — depends on injected prompt function, not SDK directly
|
|
15
|
+
* DDD: Infrastructure adapter for LLM service
|
|
16
|
+
*/
|
|
17
|
+
import type { CodeSample, LlmAnalysisPort, LlmModelPreference } from "../../domain/domain-map/repositories.js";
|
|
18
|
+
import type { SemanticAnalysis, StructuralGraph } from "../../domain/domain-map/value-objects.js";
|
|
19
|
+
/**
|
|
20
|
+
* A function that sends a prompt to an LLM and returns the response text.
|
|
21
|
+
* The application layer wires this to the actual LLM provider.
|
|
22
|
+
*
|
|
23
|
+
* @param prompt - The analysis prompt to send
|
|
24
|
+
* @param model - Optional provider/model override (uses session default if omitted)
|
|
25
|
+
*/
|
|
26
|
+
export type PromptFn = (prompt: string, model?: LlmModelPreference) => Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Implementation of LlmAnalysisPort using an injected prompt function.
|
|
29
|
+
* Builds a structured analysis prompt, sends it to the LLM, and
|
|
30
|
+
* parses the JSON response into domain value objects.
|
|
31
|
+
*/
|
|
32
|
+
export declare class LlmSemanticAnalyzer implements LlmAnalysisPort {
|
|
33
|
+
private readonly promptFn;
|
|
34
|
+
constructor(promptFn: PromptFn);
|
|
35
|
+
analyzeStructure(graph: StructuralGraph, codeSamples: readonly CodeSample[], modelPreference?: LlmModelPreference): Promise<SemanticAnalysis>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build the analysis prompt from structural graph and code samples.
|
|
39
|
+
* Instructs the LLM to produce a JSON response matching SemanticAnalysis.
|
|
40
|
+
*
|
|
41
|
+
* @param graph - Structural graph from LSP extraction
|
|
42
|
+
* @param codeSamples - Representative code samples
|
|
43
|
+
* @returns The prompt string to send to the LLM
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildAnalysisPrompt(graph: StructuralGraph, codeSamples: readonly CodeSample[]): string;
|
|
46
|
+
/**
|
|
47
|
+
* Parse and validate the LLM's JSON response into a SemanticAnalysis.
|
|
48
|
+
* Handles common LLM output quirks (markdown fences, extra text).
|
|
49
|
+
*
|
|
50
|
+
* @param response - Raw LLM response text
|
|
51
|
+
* @returns Validated SemanticAnalysis
|
|
52
|
+
* @throws Error if the response cannot be parsed
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseAnalysisResponse(response: string): SemanticAnalysis;
|
|
55
|
+
/**
|
|
56
|
+
* Extract JSON from LLM response that may contain markdown fences or extra text.
|
|
57
|
+
* Looks for the first { and last } to extract the JSON object.
|
|
58
|
+
*/
|
|
59
|
+
export declare function extractJson(text: string): string;
|
|
60
|
+
//# sourceMappingURL=llm-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-analyzer.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/domain-map/llm-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAGV,gBAAgB,EAEhB,eAAe,EAChB,MAAM,0CAA0C,CAAC;AAIlD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,kBAAkB,KACvB,OAAO,CAAC,MAAM,CAAC,CAAC;AAIrB;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAEzC,gBAAgB,CACpB,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,gBAAgB,CAAC;CAK7B;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,SAAS,UAAU,EAAE,GACjC,MAAM,CAoFR;AAiED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA+BxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBhD"}
|