@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,234 @@
|
|
|
1
|
+
import { ok, fail } from "../../domain/shared/value-objects.js";
|
|
2
|
+
import { EXTENSION_LANGUAGE_MAP, DEFAULT_CHUNK_CONFIGS, inferDomain, } from "../../domain/rag/value-objects.js";
|
|
3
|
+
import { extractSnippet } from "../../domain/rag/services.js";
|
|
4
|
+
import { extname } from "node:path";
|
|
5
|
+
// ── Use Cases ─────────────────────────────────────────────────────────
|
|
6
|
+
export class RagUseCases {
|
|
7
|
+
embedding;
|
|
8
|
+
vectors;
|
|
9
|
+
splitter;
|
|
10
|
+
files;
|
|
11
|
+
constructor(deps) {
|
|
12
|
+
this.embedding = deps.embeddingProvider;
|
|
13
|
+
this.vectors = deps.vectorRepository;
|
|
14
|
+
this.splitter = deps.textSplitter;
|
|
15
|
+
this.files = deps.fileDiscovery;
|
|
16
|
+
}
|
|
17
|
+
// ── Search ──────────────────────────────────────────────────────
|
|
18
|
+
async search(request) {
|
|
19
|
+
try {
|
|
20
|
+
const queryVector = await this.embedding.embed(request.query);
|
|
21
|
+
const results = await this.vectors.search(queryVector, {
|
|
22
|
+
topK: request.topK ?? 5,
|
|
23
|
+
workspace: request.workspace,
|
|
24
|
+
...(request.domainFilter !== undefined
|
|
25
|
+
? { domainFilter: request.domainFilter }
|
|
26
|
+
: {}),
|
|
27
|
+
...(request.typeFilter !== undefined
|
|
28
|
+
? { typeFilter: request.typeFilter }
|
|
29
|
+
: {}),
|
|
30
|
+
});
|
|
31
|
+
return ok({
|
|
32
|
+
results: results.map((r) => ({
|
|
33
|
+
score: r.score,
|
|
34
|
+
source: r.source,
|
|
35
|
+
domain: r.domain,
|
|
36
|
+
fileType: r.fileType,
|
|
37
|
+
content: r.content,
|
|
38
|
+
})),
|
|
39
|
+
workspace: request.workspace,
|
|
40
|
+
query: request.query,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return fail(`RAG search failed: ${String(error)}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// ── Index ───────────────────────────────────────────────────────
|
|
48
|
+
async index(request) {
|
|
49
|
+
try {
|
|
50
|
+
const workspace = request.workspace.toLowerCase();
|
|
51
|
+
// Discover files
|
|
52
|
+
const analysis = await this.files.discover(request.directory);
|
|
53
|
+
// Clear if requested
|
|
54
|
+
if (request.clear === true) {
|
|
55
|
+
await this.vectors.clearIndex(workspace);
|
|
56
|
+
}
|
|
57
|
+
// Ensure index exists
|
|
58
|
+
await this.vectors.ensureIndex(workspace);
|
|
59
|
+
// Create .ragignore if not present
|
|
60
|
+
await this.files.createRagignore(request.directory, analysis.projectType);
|
|
61
|
+
let totalChunks = 0;
|
|
62
|
+
// Process each file
|
|
63
|
+
for (const file of analysis.files) {
|
|
64
|
+
const content = await this.files.readFile(file.absolutePath);
|
|
65
|
+
if (content === null || content.trim().length === 0)
|
|
66
|
+
continue;
|
|
67
|
+
const ext = extname(file.absolutePath).toLowerCase();
|
|
68
|
+
const language = EXTENSION_LANGUAGE_MAP.get(ext);
|
|
69
|
+
const config = DEFAULT_CHUNK_CONFIGS.get(language ?? "default") ??
|
|
70
|
+
DEFAULT_CHUNK_CONFIGS.get("default");
|
|
71
|
+
const textChunks = await this.splitter.split(content, language, config);
|
|
72
|
+
if (textChunks.length === 0)
|
|
73
|
+
continue;
|
|
74
|
+
// Generate embeddings in batch
|
|
75
|
+
const texts = textChunks.map((c) => c.content);
|
|
76
|
+
const vectors = await this.embedding.embedBatch(texts);
|
|
77
|
+
const domain = inferDomain(file.relativePath);
|
|
78
|
+
const fileType = ext.startsWith(".") ? ext.slice(1) : ext;
|
|
79
|
+
const chunks = textChunks.map((chunk, i) => ({
|
|
80
|
+
vector: vectors[i],
|
|
81
|
+
metadata: {
|
|
82
|
+
source: file.absolutePath,
|
|
83
|
+
workspace,
|
|
84
|
+
domain,
|
|
85
|
+
fileType,
|
|
86
|
+
chunkIndex: chunk.index,
|
|
87
|
+
totalChunks: textChunks.length,
|
|
88
|
+
content: chunk.content,
|
|
89
|
+
},
|
|
90
|
+
}));
|
|
91
|
+
await this.vectors.addChunks(workspace, chunks);
|
|
92
|
+
totalChunks += chunks.length;
|
|
93
|
+
}
|
|
94
|
+
return ok({
|
|
95
|
+
workspace,
|
|
96
|
+
projectType: analysis.projectType,
|
|
97
|
+
filesIndexed: analysis.files.length,
|
|
98
|
+
chunksCreated: totalChunks,
|
|
99
|
+
excludedFiles: analysis.excludedCount,
|
|
100
|
+
totalSizeMb: analysis.totalSizeMb,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
return fail(`RAG index failed: ${String(error)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ── Snippet ─────────────────────────────────────────────────────
|
|
108
|
+
async snippet(request) {
|
|
109
|
+
try {
|
|
110
|
+
const queryVector = await this.embedding.embed(request.query);
|
|
111
|
+
const results = await this.vectors.search(queryVector, {
|
|
112
|
+
topK: request.topK ?? 5,
|
|
113
|
+
workspace: request.workspace,
|
|
114
|
+
});
|
|
115
|
+
const contextLines = request.contextLines ?? 50;
|
|
116
|
+
const snippetResults = await Promise.all(results.map(async (r) => {
|
|
117
|
+
const fileContent = await this.files.readFile(r.source);
|
|
118
|
+
const snippet = fileContent !== null
|
|
119
|
+
? extractSnippet(fileContent, r.content, contextLines)
|
|
120
|
+
: r.content;
|
|
121
|
+
return {
|
|
122
|
+
score: r.score,
|
|
123
|
+
source: r.source,
|
|
124
|
+
snippet,
|
|
125
|
+
};
|
|
126
|
+
}));
|
|
127
|
+
return ok({
|
|
128
|
+
results: snippetResults,
|
|
129
|
+
workspace: request.workspace,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
return fail(`RAG snippet failed: ${String(error)}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ── Update (re-index single file) ───────────────────────────────
|
|
137
|
+
async update(request) {
|
|
138
|
+
try {
|
|
139
|
+
const workspace = request.workspace.toLowerCase();
|
|
140
|
+
// Delete existing chunks for this file
|
|
141
|
+
await this.vectors.ensureIndex(workspace);
|
|
142
|
+
const removed = await this.vectors.deleteBySource(workspace, request.filePath);
|
|
143
|
+
// Read and re-index the file
|
|
144
|
+
const content = await this.files.readFile(request.filePath);
|
|
145
|
+
if (content === null || content.trim().length === 0) {
|
|
146
|
+
return ok({
|
|
147
|
+
workspace,
|
|
148
|
+
filePath: request.filePath,
|
|
149
|
+
chunksRemoved: removed,
|
|
150
|
+
chunksAdded: 0,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
const ext = extname(request.filePath).toLowerCase();
|
|
154
|
+
const language = EXTENSION_LANGUAGE_MAP.get(ext);
|
|
155
|
+
const config = DEFAULT_CHUNK_CONFIGS.get(language ?? "default") ??
|
|
156
|
+
DEFAULT_CHUNK_CONFIGS.get("default");
|
|
157
|
+
const textChunks = await this.splitter.split(content, language, config);
|
|
158
|
+
if (textChunks.length === 0) {
|
|
159
|
+
return ok({
|
|
160
|
+
workspace,
|
|
161
|
+
filePath: request.filePath,
|
|
162
|
+
chunksRemoved: removed,
|
|
163
|
+
chunksAdded: 0,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
const texts = textChunks.map((c) => c.content);
|
|
167
|
+
const vectors = await this.embedding.embedBatch(texts);
|
|
168
|
+
const domain = inferDomain(request.filePath);
|
|
169
|
+
const fileType = ext.startsWith(".") ? ext.slice(1) : ext;
|
|
170
|
+
const chunks = textChunks.map((chunk, i) => ({
|
|
171
|
+
vector: vectors[i],
|
|
172
|
+
metadata: {
|
|
173
|
+
source: request.filePath,
|
|
174
|
+
workspace,
|
|
175
|
+
domain,
|
|
176
|
+
fileType,
|
|
177
|
+
chunkIndex: chunk.index,
|
|
178
|
+
totalChunks: textChunks.length,
|
|
179
|
+
content: chunk.content,
|
|
180
|
+
},
|
|
181
|
+
}));
|
|
182
|
+
await this.vectors.addChunks(workspace, chunks);
|
|
183
|
+
return ok({
|
|
184
|
+
workspace,
|
|
185
|
+
filePath: request.filePath,
|
|
186
|
+
chunksRemoved: removed,
|
|
187
|
+
chunksAdded: chunks.length,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
return fail(`RAG update failed: ${String(error)}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// ── Delete ──────────────────────────────────────────────────────
|
|
195
|
+
async delete(request) {
|
|
196
|
+
try {
|
|
197
|
+
const workspace = request.workspace.toLowerCase();
|
|
198
|
+
await this.vectors.ensureIndex(workspace);
|
|
199
|
+
const removed = await this.vectors.deleteBySource(workspace, request.filePath);
|
|
200
|
+
return ok({
|
|
201
|
+
workspace,
|
|
202
|
+
filePath: request.filePath,
|
|
203
|
+
chunksRemoved: removed,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return fail(`RAG delete failed: ${String(error)}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// ── Status ──────────────────────────────────────────────────────
|
|
211
|
+
async status(request) {
|
|
212
|
+
try {
|
|
213
|
+
const stats = await this.vectors.getStats(request.workspace);
|
|
214
|
+
const response = {
|
|
215
|
+
workspace: stats.workspace,
|
|
216
|
+
documentCount: stats.documentCount,
|
|
217
|
+
embeddingModel: stats.embeddingModel,
|
|
218
|
+
storeType: stats.storeType,
|
|
219
|
+
};
|
|
220
|
+
if (request.includeOracle === true) {
|
|
221
|
+
const oracleStats = await this.vectors.getOracleStats();
|
|
222
|
+
return ok({
|
|
223
|
+
...response,
|
|
224
|
+
oracleDocumentCount: oracleStats.documentCount,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
return ok(response);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
return fail(`RAG status failed: ${String(error)}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=use-cases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-cases.js","sourceRoot":"","sources":["../../../src/application/rag/use-cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Metrics DTOs (Data Transfer Objects)
|
|
3
|
+
*
|
|
4
|
+
* Plain objects for crossing layer boundaries in the token-metrics context.
|
|
5
|
+
* Tools/Hooks -> Use Cases (request DTOs), Use Cases -> Tools (response DTOs).
|
|
6
|
+
*
|
|
7
|
+
* SOLID: SRP - DTOs carry data, no logic
|
|
8
|
+
* DDD: Application layer boundary objects
|
|
9
|
+
*/
|
|
10
|
+
export interface RecordUsageRequest {
|
|
11
|
+
readonly workspace: string;
|
|
12
|
+
readonly toolName: string;
|
|
13
|
+
readonly agent: string;
|
|
14
|
+
readonly operation?: string;
|
|
15
|
+
readonly inputTokens: number;
|
|
16
|
+
readonly outputTokens: number;
|
|
17
|
+
readonly model: string;
|
|
18
|
+
readonly cardId?: string;
|
|
19
|
+
readonly sprintId?: string;
|
|
20
|
+
readonly sessionId?: string;
|
|
21
|
+
readonly metadata?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface GetUsageHistoryRequest {
|
|
24
|
+
readonly workspace: string;
|
|
25
|
+
readonly agent?: string;
|
|
26
|
+
readonly cardId?: string;
|
|
27
|
+
readonly sprintId?: string;
|
|
28
|
+
readonly operation?: string;
|
|
29
|
+
readonly sessionId?: string;
|
|
30
|
+
readonly limit?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface GetAgentReportRequest {
|
|
33
|
+
readonly workspace: string;
|
|
34
|
+
readonly agent?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface GetCardReportRequest {
|
|
37
|
+
readonly workspace: string;
|
|
38
|
+
readonly cardId?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface GetSprintReportRequest {
|
|
41
|
+
readonly workspace: string;
|
|
42
|
+
readonly sprintId?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface GetWorkspaceSummaryRequest {
|
|
45
|
+
readonly workspace: string;
|
|
46
|
+
}
|
|
47
|
+
export interface EstimateCostRequest {
|
|
48
|
+
readonly inputTokens: number;
|
|
49
|
+
readonly outputTokens: number;
|
|
50
|
+
readonly model: string;
|
|
51
|
+
}
|
|
52
|
+
export interface TokenUsageResponse {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
readonly workspace: string;
|
|
55
|
+
readonly toolName: string;
|
|
56
|
+
readonly agent: string;
|
|
57
|
+
readonly operation: string;
|
|
58
|
+
readonly inputTokens: number;
|
|
59
|
+
readonly outputTokens: number;
|
|
60
|
+
readonly totalTokens: number;
|
|
61
|
+
readonly model: string;
|
|
62
|
+
readonly costUsd: number;
|
|
63
|
+
readonly costTier: string;
|
|
64
|
+
readonly cardId: string | undefined;
|
|
65
|
+
readonly sprintId: string | undefined;
|
|
66
|
+
readonly sessionId: string | undefined;
|
|
67
|
+
readonly createdAt: string;
|
|
68
|
+
}
|
|
69
|
+
export interface AgentReportResponse {
|
|
70
|
+
readonly agent: string;
|
|
71
|
+
readonly totalInputTokens: number;
|
|
72
|
+
readonly totalOutputTokens: number;
|
|
73
|
+
readonly totalTokens: number;
|
|
74
|
+
readonly totalCostUsd: number;
|
|
75
|
+
readonly recordCount: number;
|
|
76
|
+
readonly dominantOperation: string;
|
|
77
|
+
}
|
|
78
|
+
export interface CardReportResponse {
|
|
79
|
+
readonly cardId: string;
|
|
80
|
+
readonly totalInputTokens: number;
|
|
81
|
+
readonly totalOutputTokens: number;
|
|
82
|
+
readonly totalTokens: number;
|
|
83
|
+
readonly totalCostUsd: number;
|
|
84
|
+
readonly recordCount: number;
|
|
85
|
+
readonly agentCount: number;
|
|
86
|
+
}
|
|
87
|
+
export interface SprintReportResponse {
|
|
88
|
+
readonly sprintId: string;
|
|
89
|
+
readonly totalInputTokens: number;
|
|
90
|
+
readonly totalOutputTokens: number;
|
|
91
|
+
readonly totalTokens: number;
|
|
92
|
+
readonly totalCostUsd: number;
|
|
93
|
+
readonly recordCount: number;
|
|
94
|
+
readonly cardCount: number;
|
|
95
|
+
readonly agentCount: number;
|
|
96
|
+
readonly tokensPerCard: number;
|
|
97
|
+
}
|
|
98
|
+
export interface WorkspaceSummaryResponse {
|
|
99
|
+
readonly workspace: string;
|
|
100
|
+
readonly totalInputTokens: number;
|
|
101
|
+
readonly totalOutputTokens: number;
|
|
102
|
+
readonly totalTokens: number;
|
|
103
|
+
readonly totalCostUsd: number;
|
|
104
|
+
readonly recordCount: number;
|
|
105
|
+
readonly byOperation: ReadonlyArray<{
|
|
106
|
+
readonly operation: string;
|
|
107
|
+
readonly totalTokens: number;
|
|
108
|
+
readonly totalCostUsd: number;
|
|
109
|
+
readonly count: number;
|
|
110
|
+
}>;
|
|
111
|
+
readonly topAgents: ReadonlyArray<{
|
|
112
|
+
readonly agent: string;
|
|
113
|
+
readonly totalTokens: number;
|
|
114
|
+
readonly totalCostUsd: number;
|
|
115
|
+
}>;
|
|
116
|
+
readonly recommendations: readonly string[];
|
|
117
|
+
}
|
|
118
|
+
export interface CostEstimateResponse {
|
|
119
|
+
readonly inputTokens: number;
|
|
120
|
+
readonly outputTokens: number;
|
|
121
|
+
readonly totalTokens: number;
|
|
122
|
+
readonly model: string;
|
|
123
|
+
readonly costUsd: number;
|
|
124
|
+
readonly costTier: string;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=dtos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtos.d.ts","sourceRoot":"","sources":["../../../src/application/token-metrics/dtos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Metrics DTOs (Data Transfer Objects)
|
|
3
|
+
*
|
|
4
|
+
* Plain objects for crossing layer boundaries in the token-metrics context.
|
|
5
|
+
* Tools/Hooks -> Use Cases (request DTOs), Use Cases -> Tools (response DTOs).
|
|
6
|
+
*
|
|
7
|
+
* SOLID: SRP - DTOs carry data, no logic
|
|
8
|
+
* DDD: Application layer boundary objects
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=dtos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtos.js","sourceRoot":"","sources":["../../../src/application/token-metrics/dtos.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Metrics Use Cases
|
|
3
|
+
*
|
|
4
|
+
* Application layer orchestration for token usage tracking.
|
|
5
|
+
* Records usage, generates reports, estimates costs, and produces
|
|
6
|
+
* actionable recommendations based on spending patterns.
|
|
7
|
+
*
|
|
8
|
+
* SOLID: SRP - token metrics operations only
|
|
9
|
+
* SOLID: DIP - depends on repository interface, not implementation
|
|
10
|
+
* DDD: Application Service pattern
|
|
11
|
+
*/
|
|
12
|
+
import type { Result } from "../../domain/shared/value-objects.js";
|
|
13
|
+
import type { TokenMetricsRepository } from "../../domain/token-metrics/repositories.js";
|
|
14
|
+
import type { RecordUsageRequest, GetUsageHistoryRequest, GetAgentReportRequest, GetCardReportRequest, GetSprintReportRequest, GetWorkspaceSummaryRequest, EstimateCostRequest, TokenUsageResponse, AgentReportResponse, CardReportResponse, SprintReportResponse, WorkspaceSummaryResponse, CostEstimateResponse } from "./dtos.js";
|
|
15
|
+
export declare class TokenMetricsUseCases {
|
|
16
|
+
private readonly repo;
|
|
17
|
+
constructor(repo: TokenMetricsRepository);
|
|
18
|
+
/** Record a token usage event. */
|
|
19
|
+
recordUsage(req: RecordUsageRequest): Promise<Result<TokenUsageResponse>>;
|
|
20
|
+
/** Get usage history with optional filters. */
|
|
21
|
+
getUsageHistory(req: GetUsageHistoryRequest): Promise<Result<readonly TokenUsageResponse[]>>;
|
|
22
|
+
/** Get aggregated report by agent. */
|
|
23
|
+
getAgentReport(req: GetAgentReportRequest): Promise<Result<readonly AgentReportResponse[]>>;
|
|
24
|
+
/** Get aggregated report by card. */
|
|
25
|
+
getCardReport(req: GetCardReportRequest): Promise<Result<readonly CardReportResponse[]>>;
|
|
26
|
+
/** Get aggregated report by sprint. */
|
|
27
|
+
getSprintReport(req: GetSprintReportRequest): Promise<Result<readonly SprintReportResponse[]>>;
|
|
28
|
+
/** Get workspace-wide summary with recommendations. */
|
|
29
|
+
getWorkspaceSummary(req: GetWorkspaceSummaryRequest): Promise<Result<WorkspaceSummaryResponse>>;
|
|
30
|
+
/** Estimate cost for a hypothetical token usage (no persistence). */
|
|
31
|
+
estimateCost(req: EstimateCostRequest): CostEstimateResponse;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=tracking-use-cases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking-use-cases.d.ts","sourceRoot":"","sources":["../../../src/application/token-metrics/tracking-use-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AASnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAwFnB,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,sBAAsB;IAEzD,kCAAkC;IAC5B,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IA+BtC,+CAA+C;IACzC,eAAe,CACnB,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAmBjD,sCAAsC;IAChC,cAAc,CAClB,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,MAAM,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IAuBlD,qCAAqC;IAC/B,aAAa,CACjB,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAuBjD,uCAAuC;IACjC,eAAe,CACnB,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;IA0BnD,uDAAuD;IACjD,mBAAmB,CACvB,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAqC5C,qEAAqE;IACrE,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,oBAAoB;CAiB7D"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { WorkspaceId, ok, fail } from "../../domain/shared/value-objects.js";
|
|
2
|
+
import { TokenUsage } from "../../domain/token-metrics/entities.js";
|
|
3
|
+
import { TokenUsageId, parseOperationType, calculateCost, getModelCostTier, } from "../../domain/token-metrics/value-objects.js";
|
|
4
|
+
/** Map TokenUsage entity to response DTO. */
|
|
5
|
+
function toUsageResponse(usage) {
|
|
6
|
+
return {
|
|
7
|
+
id: usage.id.value,
|
|
8
|
+
workspace: usage.workspace.value,
|
|
9
|
+
toolName: usage.toolName,
|
|
10
|
+
agent: usage.agent,
|
|
11
|
+
operation: usage.operation,
|
|
12
|
+
inputTokens: usage.inputTokens,
|
|
13
|
+
outputTokens: usage.outputTokens,
|
|
14
|
+
totalTokens: usage.totalTokens,
|
|
15
|
+
model: usage.model,
|
|
16
|
+
costUsd: usage.costUsd,
|
|
17
|
+
costTier: usage.costTier,
|
|
18
|
+
cardId: usage.cardId,
|
|
19
|
+
sprintId: usage.sprintId,
|
|
20
|
+
sessionId: usage.sessionId,
|
|
21
|
+
createdAt: usage.createdAt.toISO(),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate recommendations based on workspace summary data.
|
|
26
|
+
* Flags anomalies and suggests optimizations.
|
|
27
|
+
*/
|
|
28
|
+
function generateRecommendations(totalCostUsd, recordCount, byOperation, topAgents) {
|
|
29
|
+
const recs = [];
|
|
30
|
+
// Cost threshold alert
|
|
31
|
+
if (totalCostUsd > 10) {
|
|
32
|
+
recs.push(`High cost alert: $${totalCostUsd.toFixed(2)} total. Consider routing more operations to local models.`);
|
|
33
|
+
}
|
|
34
|
+
else if (totalCostUsd > 1) {
|
|
35
|
+
recs.push(`Cost notice: $${totalCostUsd.toFixed(2)} total. Monitor for trends.`);
|
|
36
|
+
}
|
|
37
|
+
// Fix-heavy pattern detection
|
|
38
|
+
const fixOps = byOperation.find((o) => o.operation === "fix");
|
|
39
|
+
const implOps = byOperation.find((o) => o.operation === "implementation");
|
|
40
|
+
if (fixOps && implOps && fixOps.count > implOps.count * 0.5) {
|
|
41
|
+
recs.push("High fix-to-implementation ratio detected. Consider improving grooming/review processes.");
|
|
42
|
+
}
|
|
43
|
+
// Review overhead detection
|
|
44
|
+
const reviewOps = byOperation.find((o) => o.operation === "review");
|
|
45
|
+
if (reviewOps && recordCount > 0 && reviewOps.count / recordCount > 0.4) {
|
|
46
|
+
recs.push("Review operations exceed 40% of total. Consider streamlining review workflow.");
|
|
47
|
+
}
|
|
48
|
+
// Agent concentration
|
|
49
|
+
if (topAgents.length > 0) {
|
|
50
|
+
const totalAllAgents = topAgents.reduce((s, a) => s + a.totalTokens, 0);
|
|
51
|
+
const topAgent = topAgents[0];
|
|
52
|
+
if (totalAllAgents > 0 && topAgent.totalTokens / totalAllAgents > 0.7) {
|
|
53
|
+
recs.push(`Agent "${topAgent.agent}" consumes ${Math.round((topAgent.totalTokens / totalAllAgents) * 100)}% of tokens. Consider distributing work.`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (recs.length === 0) {
|
|
57
|
+
recs.push("Token usage within normal parameters.");
|
|
58
|
+
}
|
|
59
|
+
return recs;
|
|
60
|
+
}
|
|
61
|
+
export class TokenMetricsUseCases {
|
|
62
|
+
repo;
|
|
63
|
+
constructor(repo) {
|
|
64
|
+
this.repo = repo;
|
|
65
|
+
}
|
|
66
|
+
/** Record a token usage event. */
|
|
67
|
+
async recordUsage(req) {
|
|
68
|
+
try {
|
|
69
|
+
const workspace = WorkspaceId.create(req.workspace);
|
|
70
|
+
const sequence = await this.repo.nextSequence(workspace);
|
|
71
|
+
const id = TokenUsageId.create(sequence);
|
|
72
|
+
const operation = req.operation
|
|
73
|
+
? parseOperationType(req.operation)
|
|
74
|
+
: undefined;
|
|
75
|
+
const usage = TokenUsage.create({
|
|
76
|
+
id,
|
|
77
|
+
workspace,
|
|
78
|
+
toolName: req.toolName,
|
|
79
|
+
agent: req.agent,
|
|
80
|
+
inputTokens: req.inputTokens,
|
|
81
|
+
outputTokens: req.outputTokens,
|
|
82
|
+
model: req.model,
|
|
83
|
+
...(operation !== undefined ? { operation } : {}),
|
|
84
|
+
...(req.cardId !== undefined ? { cardId: req.cardId } : {}),
|
|
85
|
+
...(req.sprintId !== undefined ? { sprintId: req.sprintId } : {}),
|
|
86
|
+
...(req.sessionId !== undefined ? { sessionId: req.sessionId } : {}),
|
|
87
|
+
...(req.metadata !== undefined ? { metadata: req.metadata } : {}),
|
|
88
|
+
});
|
|
89
|
+
await this.repo.save(usage);
|
|
90
|
+
return ok(toUsageResponse(usage));
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
return fail(e instanceof Error ? e.message : String(e));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** Get usage history with optional filters. */
|
|
97
|
+
async getUsageHistory(req) {
|
|
98
|
+
try {
|
|
99
|
+
const workspace = WorkspaceId.create(req.workspace);
|
|
100
|
+
const records = await this.repo.findByWorkspace(workspace, {
|
|
101
|
+
...(req.agent !== undefined ? { agent: req.agent } : {}),
|
|
102
|
+
...(req.cardId !== undefined ? { cardId: req.cardId } : {}),
|
|
103
|
+
...(req.sprintId !== undefined ? { sprintId: req.sprintId } : {}),
|
|
104
|
+
...(req.operation !== undefined
|
|
105
|
+
? { operation: parseOperationType(req.operation) }
|
|
106
|
+
: {}),
|
|
107
|
+
...(req.sessionId !== undefined ? { sessionId: req.sessionId } : {}),
|
|
108
|
+
...(req.limit !== undefined ? { limit: req.limit } : {}),
|
|
109
|
+
});
|
|
110
|
+
return ok(records.map(toUsageResponse));
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
return fail(e instanceof Error ? e.message : String(e));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Get aggregated report by agent. */
|
|
117
|
+
async getAgentReport(req) {
|
|
118
|
+
try {
|
|
119
|
+
const workspace = WorkspaceId.create(req.workspace);
|
|
120
|
+
const metrics = await this.repo.getMetricsByAgent(workspace, req.agent);
|
|
121
|
+
return ok(metrics.map((m) => ({
|
|
122
|
+
agent: m.agent,
|
|
123
|
+
totalInputTokens: m.totalInputTokens,
|
|
124
|
+
totalOutputTokens: m.totalOutputTokens,
|
|
125
|
+
totalTokens: m.totalTokens,
|
|
126
|
+
totalCostUsd: m.totalCostUsd,
|
|
127
|
+
recordCount: m.recordCount,
|
|
128
|
+
dominantOperation: m.dominantOperation,
|
|
129
|
+
})));
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
return fail(e instanceof Error ? e.message : String(e));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** Get aggregated report by card. */
|
|
136
|
+
async getCardReport(req) {
|
|
137
|
+
try {
|
|
138
|
+
const workspace = WorkspaceId.create(req.workspace);
|
|
139
|
+
const metrics = await this.repo.getMetricsByCard(workspace, req.cardId);
|
|
140
|
+
return ok(metrics.map((m) => ({
|
|
141
|
+
cardId: m.cardId,
|
|
142
|
+
totalInputTokens: m.totalInputTokens,
|
|
143
|
+
totalOutputTokens: m.totalOutputTokens,
|
|
144
|
+
totalTokens: m.totalTokens,
|
|
145
|
+
totalCostUsd: m.totalCostUsd,
|
|
146
|
+
recordCount: m.recordCount,
|
|
147
|
+
agentCount: m.agentCount,
|
|
148
|
+
})));
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
return fail(e instanceof Error ? e.message : String(e));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/** Get aggregated report by sprint. */
|
|
155
|
+
async getSprintReport(req) {
|
|
156
|
+
try {
|
|
157
|
+
const workspace = WorkspaceId.create(req.workspace);
|
|
158
|
+
const metrics = await this.repo.getMetricsBySprint(workspace, req.sprintId);
|
|
159
|
+
return ok(metrics.map((m) => ({
|
|
160
|
+
sprintId: m.sprintId,
|
|
161
|
+
totalInputTokens: m.totalInputTokens,
|
|
162
|
+
totalOutputTokens: m.totalOutputTokens,
|
|
163
|
+
totalTokens: m.totalTokens,
|
|
164
|
+
totalCostUsd: m.totalCostUsd,
|
|
165
|
+
recordCount: m.recordCount,
|
|
166
|
+
cardCount: m.cardCount,
|
|
167
|
+
agentCount: m.agentCount,
|
|
168
|
+
tokensPerCard: m.cardCount > 0 ? Math.round(m.totalTokens / m.cardCount) : 0,
|
|
169
|
+
})));
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
return fail(e instanceof Error ? e.message : String(e));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/** Get workspace-wide summary with recommendations. */
|
|
176
|
+
async getWorkspaceSummary(req) {
|
|
177
|
+
try {
|
|
178
|
+
const workspace = WorkspaceId.create(req.workspace);
|
|
179
|
+
const summary = await this.repo.getWorkspaceSummary(workspace);
|
|
180
|
+
const recommendations = generateRecommendations(summary.totalCostUsd, summary.recordCount, summary.byOperation, summary.topAgents);
|
|
181
|
+
return ok({
|
|
182
|
+
workspace: req.workspace,
|
|
183
|
+
totalInputTokens: summary.totalInputTokens,
|
|
184
|
+
totalOutputTokens: summary.totalOutputTokens,
|
|
185
|
+
totalTokens: summary.totalTokens,
|
|
186
|
+
totalCostUsd: summary.totalCostUsd,
|
|
187
|
+
recordCount: summary.recordCount,
|
|
188
|
+
byOperation: summary.byOperation.map((o) => ({
|
|
189
|
+
operation: o.operation,
|
|
190
|
+
totalTokens: o.totalTokens,
|
|
191
|
+
totalCostUsd: o.totalCostUsd,
|
|
192
|
+
count: o.count,
|
|
193
|
+
})),
|
|
194
|
+
topAgents: summary.topAgents.map((a) => ({
|
|
195
|
+
agent: a.agent,
|
|
196
|
+
totalTokens: a.totalTokens,
|
|
197
|
+
totalCostUsd: a.totalCostUsd,
|
|
198
|
+
})),
|
|
199
|
+
recommendations,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch (e) {
|
|
203
|
+
return fail(e instanceof Error ? e.message : String(e));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/** Estimate cost for a hypothetical token usage (no persistence). */
|
|
207
|
+
estimateCost(req) {
|
|
208
|
+
const cost = calculateCost(req.inputTokens, req.outputTokens, req.model);
|
|
209
|
+
const tier = getModelCostTier(req.model);
|
|
210
|
+
return {
|
|
211
|
+
inputTokens: req.inputTokens,
|
|
212
|
+
outputTokens: req.outputTokens,
|
|
213
|
+
totalTokens: req.inputTokens + req.outputTokens,
|
|
214
|
+
model: req.model,
|
|
215
|
+
costUsd: cost,
|
|
216
|
+
costTier: tier,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=tracking-use-cases.js.map
|