argustack 0.1.34 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -98
- package/dist/adapters/board/board-sync.js +2 -2
- package/dist/adapters/board/board-sync.js.map +1 -1
- package/dist/adapters/board/md-parser.js +3 -3
- package/dist/adapters/board/md-parser.js.map +1 -1
- package/dist/adapters/board/skill-discovery.js +2 -2
- package/dist/adapters/board/skill-discovery.js.map +1 -1
- package/dist/adapters/board/skill-runner.js +2 -2
- package/dist/adapters/board/skill-runner.js.map +1 -1
- package/dist/adapters/board/store.d.ts.map +1 -1
- package/dist/adapters/board/store.js +11 -11
- package/dist/adapters/board/store.js.map +1 -1
- package/dist/adapters/csv/mapper.js +11 -11
- package/dist/adapters/csv/mapper.js.map +1 -1
- package/dist/adapters/csv/parser.d.ts.map +1 -1
- package/dist/adapters/csv/parser.js +8 -7
- package/dist/adapters/csv/parser.js.map +1 -1
- package/dist/adapters/csv/provider.js +4 -4
- package/dist/adapters/csv/provider.js.map +1 -1
- package/dist/adapters/db/client.js +2 -2
- package/dist/adapters/db/client.js.map +1 -1
- package/dist/adapters/db/index.js +1 -0
- package/dist/adapters/db/index.js.map +1 -1
- package/dist/adapters/db/mapper.js +1 -1
- package/dist/adapters/db/mapper.js.map +1 -1
- package/dist/adapters/db/provider.js +4 -4
- package/dist/adapters/db/provider.js.map +1 -1
- package/dist/adapters/db/sql-validator.js +2 -2
- package/dist/adapters/db/sql-validator.js.map +1 -1
- package/dist/adapters/docker/cli-docker-control.d.ts +13 -0
- package/dist/adapters/docker/cli-docker-control.d.ts.map +1 -0
- package/dist/adapters/docker/cli-docker-control.js +70 -0
- package/dist/adapters/docker/cli-docker-control.js.map +1 -0
- package/dist/adapters/docker/index.d.ts +2 -0
- package/dist/adapters/docker/index.d.ts.map +1 -0
- package/dist/adapters/docker/index.js +2 -0
- package/dist/adapters/docker/index.js.map +1 -0
- package/dist/adapters/git/mapper.js +1 -1
- package/dist/adapters/git/mapper.js.map +1 -1
- package/dist/adapters/git/provider.js +4 -4
- package/dist/adapters/git/provider.js.map +1 -1
- package/dist/adapters/github/mapper.js +3 -3
- package/dist/adapters/github/mapper.js.map +1 -1
- package/dist/adapters/github/provider.d.ts.map +1 -1
- package/dist/adapters/github/provider.js +2 -2
- package/dist/adapters/github/provider.js.map +1 -1
- package/dist/adapters/jira/mapper.js +4 -4
- package/dist/adapters/jira/mapper.js.map +1 -1
- package/dist/adapters/jira/provider.js +8 -8
- package/dist/adapters/jira/provider.js.map +1 -1
- package/dist/adapters/jira-proxy/client.js +4 -4
- package/dist/adapters/jira-proxy/client.js.map +1 -1
- package/dist/adapters/jira-proxy/config-loader.d.ts +9 -0
- package/dist/adapters/jira-proxy/config-loader.d.ts.map +1 -1
- package/dist/adapters/jira-proxy/config-loader.js +26 -3
- package/dist/adapters/jira-proxy/config-loader.js.map +1 -1
- package/dist/adapters/jira-proxy/index.d.ts +1 -1
- package/dist/adapters/jira-proxy/index.d.ts.map +1 -1
- package/dist/adapters/jira-proxy/index.js +1 -1
- package/dist/adapters/jira-proxy/index.js.map +1 -1
- package/dist/adapters/jira-proxy/mapper.js +2 -2
- package/dist/adapters/jira-proxy/mapper.js.map +1 -1
- package/dist/adapters/jira-proxy/provider.d.ts.map +1 -1
- package/dist/adapters/jira-proxy/provider.js +19 -8
- package/dist/adapters/jira-proxy/provider.js.map +1 -1
- package/dist/adapters/lmstudio/embedding-provider.d.ts +37 -0
- package/dist/adapters/lmstudio/embedding-provider.d.ts.map +1 -0
- package/dist/adapters/lmstudio/embedding-provider.js +174 -0
- package/dist/adapters/lmstudio/embedding-provider.js.map +1 -0
- package/dist/adapters/lmstudio/index.d.ts +3 -0
- package/dist/adapters/lmstudio/index.d.ts.map +1 -0
- package/dist/adapters/lmstudio/index.js +2 -0
- package/dist/adapters/lmstudio/index.js.map +1 -0
- package/dist/adapters/lsp/index.d.ts +4 -0
- package/dist/adapters/lsp/index.d.ts.map +1 -0
- package/dist/adapters/lsp/index.js +3 -0
- package/dist/adapters/lsp/index.js.map +1 -0
- package/dist/adapters/lsp/jsonrpc.d.ts +12 -0
- package/dist/adapters/lsp/jsonrpc.d.ts.map +1 -0
- package/dist/adapters/lsp/jsonrpc.js +30 -0
- package/dist/adapters/lsp/jsonrpc.js.map +1 -0
- package/dist/adapters/lsp/typescript-lsp.d.ts +25 -0
- package/dist/adapters/lsp/typescript-lsp.d.ts.map +1 -0
- package/dist/adapters/lsp/typescript-lsp.js +131 -0
- package/dist/adapters/lsp/typescript-lsp.js.map +1 -0
- package/dist/adapters/neo4j/client.d.ts +11 -0
- package/dist/adapters/neo4j/client.d.ts.map +1 -0
- package/dist/adapters/neo4j/client.js +14 -0
- package/dist/adapters/neo4j/client.js.map +1 -0
- package/dist/adapters/neo4j/cypher.d.ts +23 -0
- package/dist/adapters/neo4j/cypher.d.ts.map +1 -0
- package/dist/adapters/neo4j/cypher.js +138 -0
- package/dist/adapters/neo4j/cypher.js.map +1 -0
- package/dist/adapters/neo4j/graph-store.d.ts +33 -0
- package/dist/adapters/neo4j/graph-store.d.ts.map +1 -0
- package/dist/adapters/neo4j/graph-store.js +282 -0
- package/dist/adapters/neo4j/graph-store.js.map +1 -0
- package/dist/adapters/neo4j/index.d.ts +4 -0
- package/dist/adapters/neo4j/index.d.ts.map +1 -0
- package/dist/adapters/neo4j/index.js +3 -0
- package/dist/adapters/neo4j/index.js.map +1 -0
- package/dist/adapters/neo4j/mapper.d.ts +5 -0
- package/dist/adapters/neo4j/mapper.d.ts.map +1 -0
- package/dist/adapters/neo4j/mapper.js +49 -0
- package/dist/adapters/neo4j/mapper.js.map +1 -0
- package/dist/adapters/ollama/chat-llm.d.ts +24 -0
- package/dist/adapters/ollama/chat-llm.d.ts.map +1 -0
- package/dist/adapters/ollama/chat-llm.js +53 -0
- package/dist/adapters/ollama/chat-llm.js.map +1 -0
- package/dist/adapters/ollama/embedding-provider.d.ts +30 -0
- package/dist/adapters/ollama/embedding-provider.d.ts.map +1 -0
- package/dist/adapters/ollama/embedding-provider.js +124 -0
- package/dist/adapters/ollama/embedding-provider.js.map +1 -0
- package/dist/adapters/ollama/http-ollama-control.d.ts +24 -0
- package/dist/adapters/ollama/http-ollama-control.d.ts.map +1 -0
- package/dist/adapters/ollama/http-ollama-control.js +224 -0
- package/dist/adapters/ollama/http-ollama-control.js.map +1 -0
- package/dist/adapters/ollama/index.d.ts +6 -0
- package/dist/adapters/ollama/index.d.ts.map +1 -0
- package/dist/adapters/ollama/index.js +4 -0
- package/dist/adapters/ollama/index.js.map +1 -0
- package/dist/adapters/platform/index.d.ts +2 -0
- package/dist/adapters/platform/index.d.ts.map +1 -0
- package/dist/adapters/platform/index.js +2 -0
- package/dist/adapters/platform/index.js.map +1 -0
- package/dist/adapters/platform/node-platform-probe.d.ts +9 -0
- package/dist/adapters/platform/node-platform-probe.d.ts.map +1 -0
- package/dist/adapters/platform/node-platform-probe.js +88 -0
- package/dist/adapters/platform/node-platform-probe.js.map +1 -0
- package/dist/adapters/postgres/code-meta.d.ts +21 -0
- package/dist/adapters/postgres/code-meta.d.ts.map +1 -0
- package/dist/adapters/postgres/code-meta.js +150 -0
- package/dist/adapters/postgres/code-meta.js.map +1 -0
- package/dist/adapters/postgres/index.d.ts +3 -0
- package/dist/adapters/postgres/index.d.ts.map +1 -1
- package/dist/adapters/postgres/index.js +3 -0
- package/dist/adapters/postgres/index.js.map +1 -1
- package/dist/adapters/postgres/migrate-helpers.d.ts +43 -0
- package/dist/adapters/postgres/migrate-helpers.d.ts.map +1 -0
- package/dist/adapters/postgres/migrate-helpers.js +136 -0
- package/dist/adapters/postgres/migrate-helpers.js.map +1 -0
- package/dist/adapters/postgres/readiness-probe.d.ts +22 -0
- package/dist/adapters/postgres/readiness-probe.d.ts.map +1 -0
- package/dist/adapters/postgres/readiness-probe.js +47 -0
- package/dist/adapters/postgres/readiness-probe.js.map +1 -0
- package/dist/adapters/postgres/schema.d.ts +11 -1
- package/dist/adapters/postgres/schema.d.ts.map +1 -1
- package/dist/adapters/postgres/schema.js +192 -108
- package/dist/adapters/postgres/schema.js.map +1 -1
- package/dist/adapters/postgres/storage-commits.d.ts +13 -0
- package/dist/adapters/postgres/storage-commits.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-commits.js +63 -0
- package/dist/adapters/postgres/storage-commits.js.map +1 -0
- package/dist/adapters/postgres/storage-dbschema.d.ts +14 -0
- package/dist/adapters/postgres/storage-dbschema.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-dbschema.js +63 -0
- package/dist/adapters/postgres/storage-dbschema.js.map +1 -0
- package/dist/adapters/postgres/storage-graph.d.ts +18 -0
- package/dist/adapters/postgres/storage-graph.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-graph.js +127 -0
- package/dist/adapters/postgres/storage-graph.js.map +1 -0
- package/dist/adapters/postgres/storage-issues.d.ts +26 -0
- package/dist/adapters/postgres/storage-issues.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-issues.js +233 -0
- package/dist/adapters/postgres/storage-issues.js.map +1 -0
- package/dist/adapters/postgres/storage-prs.d.ts +15 -0
- package/dist/adapters/postgres/storage-prs.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-prs.js +142 -0
- package/dist/adapters/postgres/storage-prs.js.map +1 -0
- package/dist/adapters/postgres/storage-query.d.ts +26 -0
- package/dist/adapters/postgres/storage-query.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-query.js +74 -0
- package/dist/adapters/postgres/storage-query.js.map +1 -0
- package/dist/adapters/postgres/storage-search.d.ts +18 -0
- package/dist/adapters/postgres/storage-search.d.ts.map +1 -0
- package/dist/adapters/postgres/storage-search.js +90 -0
- package/dist/adapters/postgres/storage-search.js.map +1 -0
- package/dist/adapters/postgres/storage.d.ts +49 -33
- package/dist/adapters/postgres/storage.d.ts.map +1 -1
- package/dist/adapters/postgres/storage.js +89 -605
- package/dist/adapters/postgres/storage.js.map +1 -1
- package/dist/adapters/postgres/workspace-store.d.ts +26 -0
- package/dist/adapters/postgres/workspace-store.d.ts.map +1 -0
- package/dist/adapters/postgres/workspace-store.js +94 -0
- package/dist/adapters/postgres/workspace-store.js.map +1 -0
- package/dist/adapters/qdrant/client.d.ts +8 -0
- package/dist/adapters/qdrant/client.d.ts.map +1 -0
- package/dist/adapters/qdrant/client.js +12 -0
- package/dist/adapters/qdrant/client.js.map +1 -0
- package/dist/adapters/qdrant/index.d.ts +4 -0
- package/dist/adapters/qdrant/index.d.ts.map +1 -0
- package/dist/adapters/qdrant/index.js +3 -0
- package/dist/adapters/qdrant/index.js.map +1 -0
- package/dist/adapters/qdrant/mapper.d.ts +16 -0
- package/dist/adapters/qdrant/mapper.d.ts.map +1 -0
- package/dist/adapters/qdrant/mapper.js +59 -0
- package/dist/adapters/qdrant/mapper.js.map +1 -0
- package/dist/adapters/qdrant/vector-store.d.ts +20 -0
- package/dist/adapters/qdrant/vector-store.d.ts.map +1 -0
- package/dist/adapters/qdrant/vector-store.js +144 -0
- package/dist/adapters/qdrant/vector-store.js.map +1 -0
- package/dist/adapters/tree-sitter/index.d.ts +4 -0
- package/dist/adapters/tree-sitter/index.d.ts.map +1 -0
- package/dist/adapters/tree-sitter/index.js +3 -0
- package/dist/adapters/tree-sitter/index.js.map +1 -0
- package/dist/adapters/tree-sitter/parser.d.ts +15 -0
- package/dist/adapters/tree-sitter/parser.d.ts.map +1 -0
- package/dist/adapters/tree-sitter/parser.js +186 -0
- package/dist/adapters/tree-sitter/parser.js.map +1 -0
- package/dist/adapters/tree-sitter/queries.d.ts +14 -0
- package/dist/adapters/tree-sitter/queries.d.ts.map +1 -0
- package/dist/adapters/tree-sitter/queries.js +14 -0
- package/dist/adapters/tree-sitter/queries.js.map +1 -0
- package/dist/adapters/voyage/embedding-provider.d.ts +25 -0
- package/dist/adapters/voyage/embedding-provider.d.ts.map +1 -0
- package/dist/adapters/voyage/embedding-provider.js +105 -0
- package/dist/adapters/voyage/embedding-provider.js.map +1 -0
- package/dist/adapters/voyage/index.d.ts +3 -0
- package/dist/adapters/voyage/index.d.ts.map +1 -0
- package/dist/adapters/voyage/index.js +2 -0
- package/dist/adapters/voyage/index.js.map +1 -0
- package/dist/cli/add/code.d.ts +3 -0
- package/dist/cli/add/code.d.ts.map +1 -0
- package/dist/cli/add/code.js +97 -0
- package/dist/cli/add/code.js.map +1 -0
- package/dist/cli/add/csv.d.ts +3 -0
- package/dist/cli/add/csv.d.ts.map +1 -0
- package/dist/cli/add/csv.js +26 -0
- package/dist/cli/add/csv.js.map +1 -0
- package/dist/cli/add/db.d.ts +3 -0
- package/dist/cli/add/db.d.ts.map +1 -0
- package/dist/cli/add/db.js +46 -0
- package/dist/cli/add/db.js.map +1 -0
- package/dist/cli/add/git.d.ts +3 -0
- package/dist/cli/add/git.d.ts.map +1 -0
- package/dist/cli/add/git.js +26 -0
- package/dist/cli/add/git.js.map +1 -0
- package/dist/cli/add/github.d.ts +3 -0
- package/dist/cli/add/github.d.ts.map +1 -0
- package/dist/cli/add/github.js +32 -0
- package/dist/cli/add/github.js.map +1 -0
- package/dist/cli/add/index.d.ts +3 -0
- package/dist/cli/add/index.d.ts.map +1 -0
- package/dist/cli/add/index.js +18 -0
- package/dist/cli/add/index.js.map +1 -0
- package/dist/cli/add/jira.d.ts +3 -0
- package/dist/cli/add/jira.d.ts.map +1 -0
- package/dist/cli/add/jira.js +45 -0
- package/dist/cli/add/jira.js.map +1 -0
- package/dist/cli/add/shared.d.ts +31 -0
- package/dist/cli/add/shared.d.ts.map +1 -0
- package/dist/cli/add/shared.js +102 -0
- package/dist/cli/add/shared.js.map +1 -0
- package/dist/cli/board-server.js +1 -1
- package/dist/cli/board-server.js.map +1 -1
- package/dist/cli/board.d.ts.map +1 -1
- package/dist/cli/board.js +11 -12
- package/dist/cli/board.js.map +1 -1
- package/dist/cli/code.d.ts +3 -0
- package/dist/cli/code.d.ts.map +1 -0
- package/dist/cli/code.js +467 -0
- package/dist/cli/code.js.map +1 -0
- package/dist/cli/embed.d.ts.map +1 -1
- package/dist/cli/embed.js +21 -26
- package/dist/cli/embed.js.map +1 -1
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +37 -55
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/index.js +30 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/cleanup.d.ts +11 -0
- package/dist/cli/init/cleanup.d.ts.map +1 -0
- package/dist/cli/init/cleanup.js +39 -0
- package/dist/cli/init/cleanup.js.map +1 -0
- package/dist/cli/init/generators.js +27 -27
- package/dist/cli/init/generators.js.map +1 -1
- package/dist/cli/init/index.d.ts +0 -10
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +386 -351
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/presenter.d.ts +30 -0
- package/dist/cli/init/presenter.d.ts.map +1 -0
- package/dist/cli/init/presenter.js +152 -0
- package/dist/cli/init/presenter.js.map +1 -0
- package/dist/cli/init/prompts.d.ts +28 -0
- package/dist/cli/init/prompts.d.ts.map +1 -0
- package/dist/cli/init/prompts.js +110 -0
- package/dist/cli/init/prompts.js.map +1 -0
- package/dist/cli/init/setup-csv.js +2 -2
- package/dist/cli/init/setup-csv.js.map +1 -1
- package/dist/cli/init/setup-db.d.ts.map +1 -1
- package/dist/cli/init/setup-db.js +17 -14
- package/dist/cli/init/setup-db.js.map +1 -1
- package/dist/cli/init/setup-git.js +16 -16
- package/dist/cli/init/setup-git.js.map +1 -1
- package/dist/cli/init/setup-github.d.ts.map +1 -1
- package/dist/cli/init/setup-github.js +7 -5
- package/dist/cli/init/setup-github.js.map +1 -1
- package/dist/cli/init/setup-jira.d.ts.map +1 -1
- package/dist/cli/init/setup-jira.js +11 -9
- package/dist/cli/init/setup-jira.js.map +1 -1
- package/dist/cli/init/types.d.ts +4 -0
- package/dist/cli/init/types.d.ts.map +1 -1
- package/dist/cli/init/types.js +4 -4
- package/dist/cli/init/types.js.map +1 -1
- package/dist/cli/mcp-install.d.ts +1 -1
- package/dist/cli/mcp-install.d.ts.map +1 -1
- package/dist/cli/mcp-install.js +10 -24
- package/dist/cli/mcp-install.js.map +1 -1
- package/dist/cli/migrate-to-hub-impl.d.ts +51 -0
- package/dist/cli/migrate-to-hub-impl.d.ts.map +1 -0
- package/dist/cli/migrate-to-hub-impl.js +171 -0
- package/dist/cli/migrate-to-hub-impl.js.map +1 -0
- package/dist/cli/migrate-to-hub.d.ts +3 -0
- package/dist/cli/migrate-to-hub.d.ts.map +1 -0
- package/dist/cli/migrate-to-hub.js +90 -0
- package/dist/cli/migrate-to-hub.js.map +1 -0
- package/dist/cli/push.d.ts.map +1 -1
- package/dist/cli/push.js +62 -65
- package/dist/cli/push.js.map +1 -1
- package/dist/cli/sources.d.ts +0 -7
- package/dist/cli/sources.d.ts.map +1 -1
- package/dist/cli/sources.js +47 -112
- package/dist/cli/sources.js.map +1 -1
- package/dist/cli/status.d.ts +0 -3
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +95 -70
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/sync.d.ts +0 -10
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +186 -314
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/workspace/add.d.ts +3 -0
- package/dist/cli/workspace/add.d.ts.map +1 -0
- package/dist/cli/workspace/add.js +38 -0
- package/dist/cli/workspace/add.js.map +1 -0
- package/dist/cli/workspace/index.d.ts +3 -0
- package/dist/cli/workspace/index.d.ts.map +1 -0
- package/dist/cli/workspace/index.js +16 -0
- package/dist/cli/workspace/index.js.map +1 -0
- package/dist/cli/workspace/info.d.ts +3 -0
- package/dist/cli/workspace/info.d.ts.map +1 -0
- package/dist/cli/workspace/info.js +69 -0
- package/dist/cli/workspace/info.js.map +1 -0
- package/dist/cli/workspace/list.d.ts +3 -0
- package/dist/cli/workspace/list.d.ts.map +1 -0
- package/dist/cli/workspace/list.js +36 -0
- package/dist/cli/workspace/list.js.map +1 -0
- package/dist/cli/workspace/remove.d.ts +3 -0
- package/dist/cli/workspace/remove.d.ts.map +1 -0
- package/dist/cli/workspace/remove.js +43 -0
- package/dist/cli/workspace/remove.js.map +1 -0
- package/dist/cli/workspace/shared.d.ts +7 -0
- package/dist/cli/workspace/shared.d.ts.map +1 -0
- package/dist/cli/workspace/shared.js +17 -0
- package/dist/cli/workspace/shared.js.map +1 -0
- package/dist/cli/workspace/use.d.ts +3 -0
- package/dist/cli/workspace/use.d.ts.map +1 -0
- package/dist/cli/workspace/use.js +27 -0
- package/dist/cli/workspace/use.js.map +1 -0
- package/dist/code-intel/chunker.d.ts +15 -0
- package/dist/code-intel/chunker.d.ts.map +1 -0
- package/dist/code-intel/chunker.js +39 -0
- package/dist/code-intel/chunker.js.map +1 -0
- package/dist/code-intel/file-discovery.d.ts +19 -0
- package/dist/code-intel/file-discovery.d.ts.map +1 -0
- package/dist/code-intel/file-discovery.js +80 -0
- package/dist/code-intel/file-discovery.js.map +1 -0
- package/dist/code-intel/hash.d.ts +2 -0
- package/dist/code-intel/hash.d.ts.map +1 -0
- package/dist/code-intel/hash.js +5 -0
- package/dist/code-intel/hash.js.map +1 -0
- package/dist/code-intel/index.d.ts +17 -0
- package/dist/code-intel/index.d.ts.map +1 -0
- package/dist/code-intel/index.js +11 -0
- package/dist/code-intel/index.js.map +1 -0
- package/dist/code-intel/indexer.d.ts +43 -0
- package/dist/code-intel/indexer.d.ts.map +1 -0
- package/dist/code-intel/indexer.js +234 -0
- package/dist/code-intel/indexer.js.map +1 -0
- package/dist/code-intel/job-lock.d.ts +7 -0
- package/dist/code-intel/job-lock.d.ts.map +1 -0
- package/dist/code-intel/job-lock.js +18 -0
- package/dist/code-intel/job-lock.js.map +1 -0
- package/dist/code-intel/layer-detector.d.ts +9 -0
- package/dist/code-intel/layer-detector.d.ts.map +1 -0
- package/dist/code-intel/layer-detector.js +31 -0
- package/dist/code-intel/layer-detector.js.map +1 -0
- package/dist/code-intel/lsp-resolver.d.ts +24 -0
- package/dist/code-intel/lsp-resolver.d.ts.map +1 -0
- package/dist/code-intel/lsp-resolver.js +125 -0
- package/dist/code-intel/lsp-resolver.js.map +1 -0
- package/dist/code-intel/ranker.d.ts +42 -0
- package/dist/code-intel/ranker.d.ts.map +1 -0
- package/dist/code-intel/ranker.js +123 -0
- package/dist/code-intel/ranker.js.map +1 -0
- package/dist/code-intel/resolver.d.ts +14 -0
- package/dist/code-intel/resolver.d.ts.map +1 -0
- package/dist/code-intel/resolver.js +59 -0
- package/dist/code-intel/resolver.js.map +1 -0
- package/dist/code-intel/tsconfig-paths.d.ts +11 -0
- package/dist/code-intel/tsconfig-paths.d.ts.map +1 -0
- package/dist/code-intel/tsconfig-paths.js +67 -0
- package/dist/code-intel/tsconfig-paths.js.map +1 -0
- package/dist/code-intel/watcher.d.ts +27 -0
- package/dist/code-intel/watcher.d.ts.map +1 -0
- package/dist/code-intel/watcher.js +93 -0
- package/dist/code-intel/watcher.js.map +1 -0
- package/dist/core/board/board-column.value-object.js +1 -1
- package/dist/core/board/board-column.value-object.js.map +1 -1
- package/dist/core/board/pipeline.value-object.js +1 -1
- package/dist/core/board/pipeline.value-object.js.map +1 -1
- package/dist/core/board/skill-execution.entity.js +1 -1
- package/dist/core/board/skill-execution.entity.js.map +1 -1
- package/dist/core/board/task-title.value-object.js +1 -1
- package/dist/core/board/task-title.value-object.js.map +1 -1
- package/dist/core/ports/chat-llm.d.ts +36 -0
- package/dist/core/ports/chat-llm.d.ts.map +1 -0
- package/dist/core/ports/chat-llm.js +2 -0
- package/dist/core/ports/chat-llm.js.map +1 -0
- package/dist/core/ports/code-embedding.d.ts +42 -0
- package/dist/core/ports/code-embedding.d.ts.map +1 -0
- package/dist/core/ports/code-embedding.js +2 -0
- package/dist/core/ports/code-embedding.js.map +1 -0
- package/dist/core/ports/code-graph.d.ts +56 -0
- package/dist/core/ports/code-graph.d.ts.map +1 -0
- package/dist/core/ports/code-graph.js +2 -0
- package/dist/core/ports/code-graph.js.map +1 -0
- package/dist/core/ports/code-meta.d.ts +37 -0
- package/dist/core/ports/code-meta.d.ts.map +1 -0
- package/dist/core/ports/code-meta.js +2 -0
- package/dist/core/ports/code-meta.js.map +1 -0
- package/dist/core/ports/code-parser.d.ts +13 -0
- package/dist/core/ports/code-parser.d.ts.map +1 -0
- package/dist/core/ports/code-parser.js +2 -0
- package/dist/core/ports/code-parser.js.map +1 -0
- package/dist/core/ports/code-vector-store.d.ts +42 -0
- package/dist/core/ports/code-vector-store.d.ts.map +1 -0
- package/dist/core/ports/code-vector-store.js +2 -0
- package/dist/core/ports/code-vector-store.js.map +1 -0
- package/dist/core/ports/docker-control.d.ts +44 -0
- package/dist/core/ports/docker-control.d.ts.map +1 -0
- package/dist/core/ports/docker-control.js +8 -0
- package/dist/core/ports/docker-control.js.map +1 -0
- package/dist/core/ports/hub-readiness-probe.d.ts +22 -0
- package/dist/core/ports/hub-readiness-probe.d.ts.map +1 -0
- package/dist/core/ports/hub-readiness-probe.js +2 -0
- package/dist/core/ports/hub-readiness-probe.js.map +1 -0
- package/dist/core/ports/index.d.ts +10 -0
- package/dist/core/ports/index.d.ts.map +1 -1
- package/dist/core/ports/lsp-client.d.ts +22 -0
- package/dist/core/ports/lsp-client.d.ts.map +1 -0
- package/dist/core/ports/lsp-client.js +2 -0
- package/dist/core/ports/lsp-client.js.map +1 -0
- package/dist/core/ports/ollama-control.d.ts +61 -0
- package/dist/core/ports/ollama-control.d.ts.map +1 -0
- package/dist/core/ports/ollama-control.js +7 -0
- package/dist/core/ports/ollama-control.js.map +1 -0
- package/dist/core/ports/platform-probe.d.ts +47 -0
- package/dist/core/ports/platform-probe.d.ts.map +1 -0
- package/dist/core/ports/platform-probe.js +8 -0
- package/dist/core/ports/platform-probe.js.map +1 -0
- package/dist/core/ports/storage.d.ts +62 -29
- package/dist/core/ports/storage.d.ts.map +1 -1
- package/dist/core/ports/workspace-store.d.ts +52 -0
- package/dist/core/ports/workspace-store.d.ts.map +1 -0
- package/dist/core/ports/workspace-store.js +2 -0
- package/dist/core/ports/workspace-store.js.map +1 -0
- package/dist/core/types/code.d.ts +153 -0
- package/dist/core/types/code.d.ts.map +1 -0
- package/dist/core/types/code.js +2 -0
- package/dist/core/types/code.js.map +1 -0
- package/dist/core/types/config.d.ts +1 -1
- package/dist/core/types/config.d.ts.map +1 -1
- package/dist/core/types/config.js +8 -1
- package/dist/core/types/config.js.map +1 -1
- package/dist/core/types/index.d.ts +3 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/init.d.ts +29 -0
- package/dist/core/types/init.d.ts.map +1 -0
- package/dist/core/types/init.js +2 -0
- package/dist/core/types/init.js.map +1 -0
- package/dist/core/types/workspace.d.ts +78 -0
- package/dist/core/types/workspace.d.ts.map +1 -0
- package/dist/core/types/workspace.js +2 -0
- package/dist/core/types/workspace.js.map +1 -0
- package/dist/mcp/helpers.d.ts +131 -19
- package/dist/mcp/helpers.d.ts.map +1 -1
- package/dist/mcp/helpers.js +271 -141
- package/dist/mcp/helpers.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +49 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/code-graph.d.ts +3 -0
- package/dist/mcp/tools/code-graph.d.ts.map +1 -0
- package/dist/mcp/tools/code-graph.js +330 -0
- package/dist/mcp/tools/code-graph.js.map +1 -0
- package/dist/mcp/tools/code-hybrid.d.ts +3 -0
- package/dist/mcp/tools/code-hybrid.d.ts.map +1 -0
- package/dist/mcp/tools/code-hybrid.js +142 -0
- package/dist/mcp/tools/code-hybrid.js.map +1 -0
- package/dist/mcp/tools/code-search.d.ts +3 -0
- package/dist/mcp/tools/code-search.d.ts.map +1 -0
- package/dist/mcp/tools/code-search.js +95 -0
- package/dist/mcp/tools/code-search.js.map +1 -0
- package/dist/mcp/tools/database.d.ts.map +1 -1
- package/dist/mcp/tools/database.js +86 -97
- package/dist/mcp/tools/database.js.map +1 -1
- package/dist/mcp/tools/estimate.d.ts.map +1 -1
- package/dist/mcp/tools/estimate.js +106 -82
- package/dist/mcp/tools/estimate.js.map +1 -1
- package/dist/mcp/tools/graph.d.ts.map +1 -1
- package/dist/mcp/tools/graph.js +142 -157
- package/dist/mcp/tools/graph.js.map +1 -1
- package/dist/mcp/tools/issue.d.ts.map +1 -1
- package/dist/mcp/tools/issue.js +172 -172
- package/dist/mcp/tools/issue.js.map +1 -1
- package/dist/mcp/tools/push.d.ts.map +1 -1
- package/dist/mcp/tools/push.js +70 -100
- package/dist/mcp/tools/push.js.map +1 -1
- package/dist/mcp/tools/query.d.ts.map +1 -1
- package/dist/mcp/tools/query.js +187 -246
- package/dist/mcp/tools/query.js.map +1 -1
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +25 -22
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/mcp/tools/workspace.js +120 -73
- package/dist/mcp/tools/workspace.js.map +1 -1
- package/dist/use-cases/build-graph.d.ts +1 -1
- package/dist/use-cases/build-graph.d.ts.map +1 -1
- package/dist/use-cases/build-graph.js +63 -50
- package/dist/use-cases/build-graph.js.map +1 -1
- package/dist/use-cases/code-search.d.ts +60 -0
- package/dist/use-cases/code-search.d.ts.map +1 -0
- package/dist/use-cases/code-search.js +163 -0
- package/dist/use-cases/code-search.js.map +1 -0
- package/dist/use-cases/embed.d.ts +1 -1
- package/dist/use-cases/embed.d.ts.map +1 -1
- package/dist/use-cases/embed.js +5 -5
- package/dist/use-cases/embed.js.map +1 -1
- package/dist/use-cases/index-code.d.ts +24 -0
- package/dist/use-cases/index-code.d.ts.map +1 -0
- package/dist/use-cases/index-code.js +43 -0
- package/dist/use-cases/index-code.js.map +1 -0
- package/dist/use-cases/init/bootstrap-hub.d.ts +55 -0
- package/dist/use-cases/init/bootstrap-hub.d.ts.map +1 -0
- package/dist/use-cases/init/bootstrap-hub.js +116 -0
- package/dist/use-cases/init/bootstrap-hub.js.map +1 -0
- package/dist/use-cases/init/check-dims-conflict.d.ts +33 -0
- package/dist/use-cases/init/check-dims-conflict.d.ts.map +1 -0
- package/dist/use-cases/init/check-dims-conflict.js +39 -0
- package/dist/use-cases/init/check-dims-conflict.js.map +1 -0
- package/dist/use-cases/init/check-hub-exists.d.ts +23 -0
- package/dist/use-cases/init/check-hub-exists.d.ts.map +1 -0
- package/dist/use-cases/init/check-hub-exists.js +39 -0
- package/dist/use-cases/init/check-hub-exists.js.map +1 -0
- package/dist/use-cases/init/check-ports.d.ts +18 -0
- package/dist/use-cases/init/check-ports.d.ts.map +1 -0
- package/dist/use-cases/init/check-ports.js +25 -0
- package/dist/use-cases/init/check-ports.js.map +1 -0
- package/dist/use-cases/init/check-versions.d.ts +37 -0
- package/dist/use-cases/init/check-versions.d.ts.map +1 -0
- package/dist/use-cases/init/check-versions.js +50 -0
- package/dist/use-cases/init/check-versions.js.map +1 -0
- package/dist/use-cases/init/clear-stale-active.d.ts +20 -0
- package/dist/use-cases/init/clear-stale-active.d.ts.map +1 -0
- package/dist/use-cases/init/clear-stale-active.js +26 -0
- package/dist/use-cases/init/clear-stale-active.js.map +1 -0
- package/dist/use-cases/init/ensure-embedding-model.d.ts +20 -0
- package/dist/use-cases/init/ensure-embedding-model.d.ts.map +1 -0
- package/dist/use-cases/init/ensure-embedding-model.js +24 -0
- package/dist/use-cases/init/ensure-embedding-model.js.map +1 -0
- package/dist/use-cases/init/ensure-ollama-running.d.ts +19 -0
- package/dist/use-cases/init/ensure-ollama-running.d.ts.map +1 -0
- package/dist/use-cases/init/ensure-ollama-running.js +24 -0
- package/dist/use-cases/init/ensure-ollama-running.js.map +1 -0
- package/dist/use-cases/init/health-check-existing-llm.d.ts +25 -0
- package/dist/use-cases/init/health-check-existing-llm.d.ts.map +1 -0
- package/dist/use-cases/init/health-check-existing-llm.js +42 -0
- package/dist/use-cases/init/health-check-existing-llm.js.map +1 -0
- package/dist/use-cases/init/install-ollama.d.ts +27 -0
- package/dist/use-cases/init/install-ollama.d.ts.map +1 -0
- package/dist/use-cases/init/install-ollama.js +51 -0
- package/dist/use-cases/init/install-ollama.js.map +1 -0
- package/dist/use-cases/init/probe-llm.d.ts +32 -0
- package/dist/use-cases/init/probe-llm.d.ts.map +1 -0
- package/dist/use-cases/init/probe-llm.js +42 -0
- package/dist/use-cases/init/probe-llm.js.map +1 -0
- package/dist/use-cases/init/resolve-hub-ports.d.ts +46 -0
- package/dist/use-cases/init/resolve-hub-ports.d.ts.map +1 -0
- package/dist/use-cases/init/resolve-hub-ports.js +77 -0
- package/dist/use-cases/init/resolve-hub-ports.js.map +1 -0
- package/dist/use-cases/init/validate-workspace-name.d.ts +26 -0
- package/dist/use-cases/init/validate-workspace-name.d.ts.map +1 -0
- package/dist/use-cases/init/validate-workspace-name.js +39 -0
- package/dist/use-cases/init/validate-workspace-name.js.map +1 -0
- package/dist/use-cases/init/wait-for-docker.d.ts +16 -0
- package/dist/use-cases/init/wait-for-docker.d.ts.map +1 -0
- package/dist/use-cases/init/wait-for-docker.js +16 -0
- package/dist/use-cases/init/wait-for-docker.js.map +1 -0
- package/dist/use-cases/init/write-config-env.d.ts +32 -0
- package/dist/use-cases/init/write-config-env.d.ts.map +1 -0
- package/dist/use-cases/init/write-config-env.js +118 -0
- package/dist/use-cases/init/write-config-env.js.map +1 -0
- package/dist/use-cases/move-task.js +2 -2
- package/dist/use-cases/move-task.js.map +1 -1
- package/dist/use-cases/pull-db.d.ts +1 -1
- package/dist/use-cases/pull-db.d.ts.map +1 -1
- package/dist/use-cases/pull-db.js +3 -3
- package/dist/use-cases/pull-db.js.map +1 -1
- package/dist/use-cases/pull-git.d.ts +1 -1
- package/dist/use-cases/pull-git.d.ts.map +1 -1
- package/dist/use-cases/pull-git.js +5 -5
- package/dist/use-cases/pull-git.js.map +1 -1
- package/dist/use-cases/pull-github.d.ts +1 -1
- package/dist/use-cases/pull-github.d.ts.map +1 -1
- package/dist/use-cases/pull-github.js +6 -6
- package/dist/use-cases/pull-github.js.map +1 -1
- package/dist/use-cases/pull.d.ts +1 -1
- package/dist/use-cases/pull.d.ts.map +1 -1
- package/dist/use-cases/pull.js +6 -6
- package/dist/use-cases/pull.js.map +1 -1
- package/dist/use-cases/push.d.ts +2 -2
- package/dist/use-cases/push.d.ts.map +1 -1
- package/dist/use-cases/push.js +8 -8
- package/dist/use-cases/push.js.map +1 -1
- package/dist/use-cases/register-code-project.d.ts +29 -0
- package/dist/use-cases/register-code-project.d.ts.map +1 -0
- package/dist/use-cases/register-code-project.js +27 -0
- package/dist/use-cases/register-code-project.js.map +1 -0
- package/dist/use-cases/unregister-code-project.d.ts +11 -0
- package/dist/use-cases/unregister-code-project.d.ts.map +1 -0
- package/dist/use-cases/unregister-code-project.js +19 -0
- package/dist/use-cases/unregister-code-project.js.map +1 -0
- package/dist/use-cases/watch-code.d.ts +33 -0
- package/dist/use-cases/watch-code.d.ts.map +1 -0
- package/dist/use-cases/watch-code.js +52 -0
- package/dist/use-cases/watch-code.js.map +1 -0
- package/dist/workspace/active-workspace.d.ts +26 -0
- package/dist/workspace/active-workspace.d.ts.map +1 -0
- package/dist/workspace/active-workspace.js +69 -0
- package/dist/workspace/active-workspace.js.map +1 -0
- package/dist/workspace/adf.d.ts.map +1 -1
- package/dist/workspace/adf.js +20 -19
- package/dist/workspace/adf.js.map +1 -1
- package/dist/workspace/config.d.ts +11 -0
- package/dist/workspace/config.d.ts.map +1 -1
- package/dist/workspace/config.js +76 -22
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/hub-config.d.ts +74 -0
- package/dist/workspace/hub-config.d.ts.map +1 -0
- package/dist/workspace/hub-config.js +164 -0
- package/dist/workspace/hub-config.js.map +1 -0
- package/dist/workspace/registry.d.ts +23 -3
- package/dist/workspace/registry.d.ts.map +1 -1
- package/dist/workspace/registry.js +32 -14
- package/dist/workspace/registry.js.map +1 -1
- package/dist/workspace/resolver.d.ts +20 -18
- package/dist/workspace/resolver.d.ts.map +1 -1
- package/dist/workspace/resolver.js +100 -59
- package/dist/workspace/resolver.js.map +1 -1
- package/package.json +13 -4
- package/templates/code-docker-compose.yml +51 -0
- package/templates/env.example +16 -0
- package/templates/hub-config.env +65 -0
- package/templates/hub-docker-compose.yml +88 -0
- package/templates/migrate-to-hub.sql +90 -0
- package/dist/cli/workspaces.d.ts +0 -3
- package/dist/cli/workspaces.d.ts.map +0 -1
- package/dist/cli/workspaces.js +0 -34
- package/dist/cli/workspaces.js.map +0 -1
package/dist/mcp/helpers.d.ts
CHANGED
|
@@ -1,41 +1,153 @@
|
|
|
1
|
-
import { getEnabledSources } from '../workspace/config.js';
|
|
2
|
-
import type { WorkspaceConfig, SourceType } from '../core/types/index.js';
|
|
3
1
|
import type { ISourceProvider } from '../core/ports/source-provider.js';
|
|
4
2
|
import type { IStorage } from '../core/ports/storage.js';
|
|
3
|
+
import type { ICodeGraph } from '../core/ports/code-graph.js';
|
|
4
|
+
import type { ICodeVectorStore } from '../core/ports/code-vector-store.js';
|
|
5
|
+
import type { ICodeParser } from '../core/ports/code-parser.js';
|
|
6
|
+
import type { ICodeEmbedding } from '../core/ports/code-embedding.js';
|
|
7
|
+
import type { ICodeMetaStore } from '../core/ports/code-meta.js';
|
|
8
|
+
import type { IChatLlm } from '../core/ports/chat-llm.js';
|
|
9
|
+
import type { IWorkspaceStore } from '../core/ports/workspace-store.js';
|
|
10
|
+
import type { Workspace, WorkspaceConfig } from '../core/types/index.js';
|
|
5
11
|
import type { ToolResponse } from './types.js';
|
|
12
|
+
export interface WorkspaceContext {
|
|
13
|
+
readonly workspaceId: string;
|
|
14
|
+
readonly workspace: Workspace;
|
|
15
|
+
readonly config: WorkspaceConfig;
|
|
16
|
+
}
|
|
6
17
|
export type WorkspaceResult = {
|
|
7
18
|
ok: true;
|
|
8
|
-
|
|
19
|
+
workspaceId: string;
|
|
20
|
+
workspace: Workspace;
|
|
9
21
|
config: WorkspaceConfig;
|
|
10
22
|
} | {
|
|
11
23
|
ok: false;
|
|
12
24
|
reason: string;
|
|
13
25
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
interface CachedCodeAdapters {
|
|
27
|
+
graph: ICodeGraph;
|
|
28
|
+
vec: ICodeVectorStore;
|
|
29
|
+
parser: ICodeParser;
|
|
30
|
+
embedding: ICodeEmbedding;
|
|
31
|
+
meta: ICodeMetaStore;
|
|
32
|
+
storage: IStorage & ICodeMetaStore;
|
|
33
|
+
chatLlm: IChatLlm | null;
|
|
34
|
+
projectRoot: string;
|
|
19
35
|
}
|
|
20
|
-
export
|
|
36
|
+
export type CodeAdapters = Omit<CachedCodeAdapters, 'projectRoot'>;
|
|
37
|
+
export declare function setActiveStorage(storage: IStorage): void;
|
|
38
|
+
export declare function getActiveStorage(): IStorage | null;
|
|
39
|
+
export declare function setActiveWorkspaceStore(store: IWorkspaceStore): void;
|
|
40
|
+
export declare function getWorkspaceStore(): Promise<IWorkspaceStore>;
|
|
21
41
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
42
|
+
* Resolve the workspace for a tool invocation.
|
|
43
|
+
*
|
|
44
|
+
* Resolution order (mirrors {@link import('../workspace/resolver').requireWorkspaceId}):
|
|
45
|
+
* 1. `explicit` (the tool's `workspace_id` schema field).
|
|
46
|
+
* 2. `ARGUSTACK_WORKSPACE_ID` env var.
|
|
47
|
+
* 3. `~/.argustack/active-workspace.json#activeWorkspaceId`.
|
|
48
|
+
* 4. Auto-pick when exactly one workspace exists in the hub.
|
|
49
|
+
*
|
|
50
|
+
* Returns a structured result so MCP tools can render a tool-friendly
|
|
51
|
+
* error response instead of throwing.
|
|
24
52
|
*/
|
|
25
|
-
export declare function
|
|
53
|
+
export declare function loadWorkspace(explicit?: string): Promise<WorkspaceResult>;
|
|
26
54
|
/**
|
|
27
|
-
*
|
|
55
|
+
* Switch the active workspace. Writes the hub `active-workspace.json`,
|
|
56
|
+
* touches `last_active_at`, and resets cached connections so subsequent
|
|
57
|
+
* tool calls reconnect with whatever per-workspace settings apply.
|
|
28
58
|
*/
|
|
29
|
-
export declare function
|
|
30
|
-
export
|
|
31
|
-
export declare function getActiveStorage(): IStorage | null;
|
|
32
|
-
export declare function createAdapters(workspaceRoot: string): Promise<{
|
|
59
|
+
export declare function switchWorkspace(name: string): Promise<WorkspaceResult>;
|
|
60
|
+
export interface ResolvedAdapters {
|
|
33
61
|
source: ISourceProvider | null;
|
|
34
62
|
storage: IStorage;
|
|
35
|
-
|
|
63
|
+
workspaceId: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Build the per-tool adapter set. The hub Postgres pool is reused
|
|
67
|
+
* across invocations via {@link activeStorage}; the source provider
|
|
68
|
+
* (Jira/proxy) is recreated each call since per-workspace project
|
|
69
|
+
* filters can change.
|
|
70
|
+
*/
|
|
71
|
+
export declare function createAdapters(workspaceId: string): Promise<ResolvedAdapters>;
|
|
72
|
+
export declare function setActiveCodeAdapters(adapters: CodeAdapters | null): void;
|
|
73
|
+
export declare function getActiveCodeAdapters(): CodeAdapters | null;
|
|
74
|
+
/**
|
|
75
|
+
* Build adapters used by code-intelligence MCP tools for a specific
|
|
76
|
+
* workspace. Returns `null` if the hub config is missing the bits
|
|
77
|
+
* required by the chosen embedding provider.
|
|
78
|
+
*/
|
|
79
|
+
export declare function createCodeAdapters(workspaceId: string): Promise<CodeAdapters | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Annotation presets reused across MCP tool registrations.
|
|
82
|
+
* Mirrors the `ToolAnnotations` shape from @modelcontextprotocol/sdk.
|
|
83
|
+
*
|
|
84
|
+
* - READ_ONLY — pure query, no side effects, safe to retry.
|
|
85
|
+
* - LOCAL_WRITE — mutates hub-local state (board.md / Postgres rows),
|
|
86
|
+
* no remote calls (e.g. create_issue with source='local').
|
|
87
|
+
* - REMOTE_WRITE — pushes to or pulls from external systems (Jira, GitHub).
|
|
88
|
+
* destructiveHint flips on so clients can warn the user
|
|
89
|
+
* before invocation.
|
|
90
|
+
*/
|
|
91
|
+
export declare const ANNOTATIONS: {
|
|
92
|
+
readonly READ_ONLY: {
|
|
93
|
+
readonly readOnlyHint: true;
|
|
94
|
+
readonly idempotentHint: true;
|
|
95
|
+
readonly openWorldHint: false;
|
|
96
|
+
};
|
|
97
|
+
readonly REMOTE_READ: {
|
|
98
|
+
readonly readOnlyHint: true;
|
|
99
|
+
readonly idempotentHint: true;
|
|
100
|
+
readonly openWorldHint: true;
|
|
101
|
+
};
|
|
102
|
+
readonly LOCAL_WRITE: {
|
|
103
|
+
readonly readOnlyHint: false;
|
|
104
|
+
readonly destructiveHint: false;
|
|
105
|
+
readonly idempotentHint: false;
|
|
106
|
+
readonly openWorldHint: false;
|
|
107
|
+
};
|
|
108
|
+
readonly REMOTE_WRITE: {
|
|
109
|
+
readonly readOnlyHint: false;
|
|
110
|
+
readonly destructiveHint: true;
|
|
111
|
+
readonly idempotentHint: false;
|
|
112
|
+
readonly openWorldHint: true;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
36
115
|
export declare function textResponse(text: string): ToolResponse;
|
|
37
116
|
export declare function errorResponse(text: string): ToolResponse;
|
|
117
|
+
/**
|
|
118
|
+
* Standard "workspace not found" error response for MCP tools.
|
|
119
|
+
*
|
|
120
|
+
* Wraps the technical {@link WorkspaceResult.reason} in a UX-friendly
|
|
121
|
+
* message that always contains the marker "Workspace not found" so
|
|
122
|
+
* clients and tests can detect it regardless of which underlying
|
|
123
|
+
* resolution step failed (no `.argustack/`, missing env var, unknown
|
|
124
|
+
* id, etc.).
|
|
125
|
+
*/
|
|
126
|
+
export declare function workspaceNotFoundResponse(reason: string): ToolResponse;
|
|
38
127
|
export declare function getErrorMessage(err: unknown): string;
|
|
128
|
+
/**
|
|
129
|
+
* High-level helper: resolve workspace, build adapters, run callback.
|
|
130
|
+
* Centralises the boilerplate for MCP tools that just need a scoped
|
|
131
|
+
* `storage` and `workspaceId`.
|
|
132
|
+
*/
|
|
133
|
+
export declare function withWorkspace<T>(explicit: string | undefined, fn: (ctx: {
|
|
134
|
+
storage: IStorage;
|
|
135
|
+
workspaceId: string;
|
|
136
|
+
workspace: Workspace;
|
|
137
|
+
config: WorkspaceConfig;
|
|
138
|
+
}) => Promise<T>): Promise<T | ToolResponse>;
|
|
39
139
|
export declare function str(value: unknown): string;
|
|
40
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Render `value` via {@link str}, but substitute `fallback` when the
|
|
142
|
+
* result is the empty string. Replaces the deprecated `str(x) || 'N/A'`
|
|
143
|
+
* pattern in a way that satisfies @typescript-eslint/strict-boolean-expressions.
|
|
144
|
+
*/
|
|
145
|
+
export declare function strOr(value: unknown, fallback: string): string;
|
|
146
|
+
/**
|
|
147
|
+
* Render a possibly-null/undefined string with a fallback.
|
|
148
|
+
*/
|
|
149
|
+
export declare function nullableStr(value: string | null | undefined, fallback: string): string;
|
|
150
|
+
/** True when `value` is a non-empty string. */
|
|
151
|
+
export declare function hasText(value: string | null | undefined): value is string;
|
|
152
|
+
export {};
|
|
41
153
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAChF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAKlC,UAAU,kBAAkB;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,gBAAgB,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC;IACnC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAInE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAExD;AAED,wBAAgB,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAElD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC,CASlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAuD/E;AAUD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAuB5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmCnF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAIzE;AAED,wBAAgB,qBAAqB,IAAI,YAAY,GAAG,IAAI,CAE3D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiE1F;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;CAKd,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAExD;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAKtE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKpD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,EAAE,EAAE,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GACjH,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,CAO3B;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAc1C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAEzE"}
|
package/dist/mcp/helpers.js
CHANGED
|
@@ -1,187 +1,299 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { findWorkspaceRoot } from '../workspace/resolver.js';
|
|
5
|
-
import { readConfig, getEnabledSources } from '../workspace/config.js';
|
|
6
|
-
import { listRegisteredWorkspaces } from '../workspace/registry.js';
|
|
1
|
+
import { loadHubConfig } from '../workspace/hub-config.js';
|
|
2
|
+
import { getActiveWorkspace, setActiveWorkspace, clearActiveWorkspace, } from '../workspace/active-workspace.js';
|
|
3
|
+
import { readWorkspaceConfigFromHub } from '../workspace/config.js';
|
|
7
4
|
let activeStorage = null;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
ok: false,
|
|
23
|
-
reason: `Workspace not found from current directory. Available workspaces: ${names}. Use switch_workspace("name") to connect.`,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return { ok: false, reason: 'No workspaces found. Run "argustack init" to create one.' };
|
|
27
|
-
}
|
|
28
|
-
const config = readConfig(root);
|
|
29
|
-
if (!config) {
|
|
30
|
-
return {
|
|
31
|
-
ok: false,
|
|
32
|
-
reason: `Workspace found at ${root} but .argustack/config.json is missing or invalid. Run "argustack init".`,
|
|
33
|
-
};
|
|
5
|
+
let activeWorkspaceStore = null;
|
|
6
|
+
let activeCodeAdapters = null;
|
|
7
|
+
export function setActiveStorage(storage) {
|
|
8
|
+
activeStorage = storage;
|
|
9
|
+
}
|
|
10
|
+
export function getActiveStorage() {
|
|
11
|
+
return activeStorage;
|
|
12
|
+
}
|
|
13
|
+
export function setActiveWorkspaceStore(store) {
|
|
14
|
+
activeWorkspaceStore = store;
|
|
15
|
+
}
|
|
16
|
+
export async function getWorkspaceStore() {
|
|
17
|
+
if (activeWorkspaceStore !== null) {
|
|
18
|
+
return activeWorkspaceStore;
|
|
34
19
|
}
|
|
35
|
-
|
|
20
|
+
const { db } = loadHubConfig();
|
|
21
|
+
const { PostgresWorkspaceStore, createPool } = await import('../adapters/postgres/index.js');
|
|
22
|
+
const store = new PostgresWorkspaceStore(createPool(db));
|
|
23
|
+
activeWorkspaceStore = store;
|
|
24
|
+
return store;
|
|
36
25
|
}
|
|
37
26
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
27
|
+
* Resolve the workspace for a tool invocation.
|
|
28
|
+
*
|
|
29
|
+
* Resolution order (mirrors {@link import('../workspace/resolver').requireWorkspaceId}):
|
|
30
|
+
* 1. `explicit` (the tool's `workspace_id` schema field).
|
|
31
|
+
* 2. `ARGUSTACK_WORKSPACE_ID` env var.
|
|
32
|
+
* 3. `~/.argustack/active-workspace.json#activeWorkspaceId`.
|
|
33
|
+
* 4. Auto-pick when exactly one workspace exists in the hub.
|
|
34
|
+
*
|
|
35
|
+
* Returns a structured result so MCP tools can render a tool-friendly
|
|
36
|
+
* error response instead of throwing.
|
|
40
37
|
*/
|
|
41
|
-
export async function
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
export async function loadWorkspace(explicit) {
|
|
39
|
+
let store;
|
|
40
|
+
try {
|
|
41
|
+
store = await getWorkspaceStore();
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return { ok: false, reason: getErrorMessage(err) };
|
|
45
|
+
}
|
|
46
|
+
const explicitId = explicit?.trim();
|
|
47
|
+
if (explicitId !== undefined && explicitId.length > 0) {
|
|
48
|
+
const workspace = (await store.getById(explicitId)) ?? (await store.getByName(explicitId));
|
|
49
|
+
if (workspace === null) {
|
|
50
|
+
return { ok: false, reason: `Workspace "${explicitId}" not found in hub.` };
|
|
49
51
|
}
|
|
52
|
+
return buildResult(workspace, store);
|
|
50
53
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
|
|
54
|
+
const envId = process.env['ARGUSTACK_WORKSPACE_ID']?.trim();
|
|
55
|
+
if (envId !== undefined && envId.length > 0) {
|
|
56
|
+
const workspace = await store.getById(envId);
|
|
57
|
+
if (workspace === null) {
|
|
58
|
+
return { ok: false, reason: `ARGUSTACK_WORKSPACE_ID="${envId}" not found in hub.` };
|
|
56
59
|
}
|
|
60
|
+
return buildResult(workspace, store);
|
|
57
61
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
62
|
+
const active = getActiveWorkspace();
|
|
63
|
+
if (active !== null) {
|
|
64
|
+
const workspace = await store.getById(active.activeWorkspaceId);
|
|
65
|
+
if (workspace !== null) {
|
|
66
|
+
return buildResult(workspace, store);
|
|
67
|
+
}
|
|
68
|
+
clearActiveWorkspace();
|
|
69
|
+
}
|
|
70
|
+
const all = await store.list();
|
|
71
|
+
if (all.length === 1) {
|
|
72
|
+
const only = all[0];
|
|
73
|
+
if (only !== undefined) {
|
|
74
|
+
return buildResult(only, store);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (all.length === 0) {
|
|
61
78
|
return {
|
|
62
79
|
ok: false,
|
|
63
|
-
reason:
|
|
80
|
+
reason: 'No workspaces registered. Run "argustack workspace add <name>" to create one.',
|
|
64
81
|
};
|
|
65
82
|
}
|
|
66
|
-
|
|
83
|
+
const names = all.map((w) => w.name).join(', ');
|
|
84
|
+
return {
|
|
85
|
+
ok: false,
|
|
86
|
+
reason: `No active workspace. Pass workspace_id, or call switch_workspace. Available: ${names}.`,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function buildResult(workspace, store) {
|
|
90
|
+
const config = await readWorkspaceConfigFromHub(workspace.id, store);
|
|
91
|
+
if (config === null) {
|
|
92
|
+
return { ok: false, reason: `Workspace "${workspace.id}" was not found after lookup.` };
|
|
93
|
+
}
|
|
94
|
+
return { ok: true, workspaceId: workspace.id, workspace, config };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Switch the active workspace. Writes the hub `active-workspace.json`,
|
|
98
|
+
* touches `last_active_at`, and resets cached connections so subsequent
|
|
99
|
+
* tool calls reconnect with whatever per-workspace settings apply.
|
|
100
|
+
*/
|
|
101
|
+
export async function switchWorkspace(name) {
|
|
102
|
+
const store = await getWorkspaceStore();
|
|
103
|
+
const workspace = (await store.getById(name)) ?? (await store.getByName(name));
|
|
104
|
+
if (workspace === null) {
|
|
105
|
+
const all = await store.list();
|
|
106
|
+
const joined = all.map((w) => w.name).join(', ');
|
|
107
|
+
const known = joined.length > 0 ? joined : 'none';
|
|
108
|
+
return { ok: false, reason: `Workspace "${name}" not found. Available: ${known}` };
|
|
109
|
+
}
|
|
110
|
+
setActiveWorkspace(workspace.id, workspace.name);
|
|
111
|
+
await store.touchActive(workspace.id);
|
|
112
|
+
if (activeStorage !== null) {
|
|
67
113
|
try {
|
|
68
114
|
await activeStorage.close();
|
|
69
115
|
}
|
|
70
|
-
catch { /* ignore
|
|
116
|
+
catch { /* ignore */ }
|
|
71
117
|
activeStorage = null;
|
|
72
118
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
119
|
+
if (activeCodeAdapters !== null) {
|
|
120
|
+
try {
|
|
121
|
+
await activeCodeAdapters.storage.close();
|
|
122
|
+
}
|
|
123
|
+
catch { /* ignore */ }
|
|
124
|
+
activeCodeAdapters = null;
|
|
79
125
|
}
|
|
80
|
-
|
|
81
|
-
return loadWorkspace();
|
|
126
|
+
return buildResult(workspace, store);
|
|
82
127
|
}
|
|
83
128
|
/**
|
|
84
|
-
*
|
|
129
|
+
* Build the per-tool adapter set. The hub Postgres pool is reused
|
|
130
|
+
* across invocations via {@link activeStorage}; the source provider
|
|
131
|
+
* (Jira/proxy) is recreated each call since per-workspace project
|
|
132
|
+
* filters can change.
|
|
85
133
|
*/
|
|
86
|
-
export function
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const currentName = basename(currentRoot);
|
|
93
|
-
let entries;
|
|
94
|
-
try {
|
|
95
|
-
entries = readdirSync(parentDir);
|
|
134
|
+
export async function createAdapters(workspaceId) {
|
|
135
|
+
const hub = loadHubConfig();
|
|
136
|
+
const store = await getWorkspaceStore();
|
|
137
|
+
const workspace = await store.getById(workspaceId);
|
|
138
|
+
if (workspace === null) {
|
|
139
|
+
throw new Error(`Workspace "${workspaceId}" not found in hub.`);
|
|
96
140
|
}
|
|
97
|
-
|
|
98
|
-
|
|
141
|
+
if (activeStorage === null) {
|
|
142
|
+
const { PostgresStorage } = await import('../adapters/postgres/index.js');
|
|
143
|
+
activeStorage = new PostgresStorage(hub.db);
|
|
99
144
|
}
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
try {
|
|
107
|
-
if (!statSync(subdir).isDirectory()) {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
if (!existsSync(join(subdir, '.argustack'))) {
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
const config = readConfig(subdir);
|
|
118
|
-
if (!config) {
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
workspaces.push({
|
|
122
|
-
name: config.name ?? name,
|
|
123
|
-
path: subdir,
|
|
124
|
-
sources: getEnabledSources(config),
|
|
125
|
-
active: name === currentName,
|
|
126
|
-
});
|
|
145
|
+
const issueTypeIds = undefined;
|
|
146
|
+
let source = null;
|
|
147
|
+
const { proxyConfigExistsForWorkspace, loadProxyConfigForWorkspace, ProxyJiraProvider } = await import('../adapters/jira-proxy/index.js');
|
|
148
|
+
if (proxyConfigExistsForWorkspace(workspace.id)) {
|
|
149
|
+
const proxyConfig = loadProxyConfigForWorkspace(workspace.id);
|
|
150
|
+
source = new ProxyJiraProvider(proxyConfig, issueTypeIds);
|
|
127
151
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
152
|
+
else if (hasText(hub.credentials.jiraUrl)
|
|
153
|
+
&& hasText(hub.credentials.jiraEmail)
|
|
154
|
+
&& hasText(hub.credentials.jiraApiToken)) {
|
|
155
|
+
const { JiraProvider } = await import('../adapters/jira/index.js');
|
|
156
|
+
source = new JiraProvider({
|
|
157
|
+
host: hub.credentials.jiraUrl,
|
|
158
|
+
email: hub.credentials.jiraEmail,
|
|
159
|
+
apiToken: hub.credentials.jiraApiToken,
|
|
160
|
+
}, issueTypeIds);
|
|
134
161
|
}
|
|
135
|
-
return
|
|
162
|
+
return { source, storage: activeStorage, workspaceId };
|
|
136
163
|
}
|
|
137
|
-
export function
|
|
138
|
-
|
|
164
|
+
export function setActiveCodeAdapters(adapters) {
|
|
165
|
+
activeCodeAdapters = adapters !== null
|
|
166
|
+
? { ...adapters, projectRoot: '' }
|
|
167
|
+
: null;
|
|
139
168
|
}
|
|
140
|
-
export function
|
|
141
|
-
return
|
|
169
|
+
export function getActiveCodeAdapters() {
|
|
170
|
+
return activeCodeAdapters;
|
|
142
171
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
apiToken: JIRA_API_TOKEN,
|
|
161
|
-
}, issueTypes);
|
|
172
|
+
/**
|
|
173
|
+
* Build adapters used by code-intelligence MCP tools for a specific
|
|
174
|
+
* workspace. Returns `null` if the hub config is missing the bits
|
|
175
|
+
* required by the chosen embedding provider.
|
|
176
|
+
*/
|
|
177
|
+
export async function createCodeAdapters(workspaceId) {
|
|
178
|
+
if (activeCodeAdapters !== null) {
|
|
179
|
+
return activeCodeAdapters;
|
|
180
|
+
}
|
|
181
|
+
const hub = loadHubConfig();
|
|
182
|
+
const store = await getWorkspaceStore();
|
|
183
|
+
const workspace = await store.getById(workspaceId);
|
|
184
|
+
if (workspace === null) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
if (hub.embedding.provider === 'voyage' && !hasText(hub.embedding.voyageApiKey)) {
|
|
188
|
+
return null;
|
|
162
189
|
}
|
|
163
190
|
const { PostgresStorage } = await import('../adapters/postgres/index.js');
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
191
|
+
const { Neo4jCodeGraphStore } = await import('../adapters/neo4j/index.js');
|
|
192
|
+
const { QdrantCodeVectorStore } = await import('../adapters/qdrant/index.js');
|
|
193
|
+
const { TreeSitterParser } = await import('../adapters/tree-sitter/index.js');
|
|
194
|
+
const storage = new PostgresStorage(hub.db);
|
|
195
|
+
const graph = new Neo4jCodeGraphStore(hub.neo4j);
|
|
196
|
+
const vec = new QdrantCodeVectorStore({ url: hub.qdrant.url });
|
|
197
|
+
const projectRoot = workspace.settings?.gitRepoPaths?.[0] ?? hub.hubDir;
|
|
198
|
+
const parser = new TreeSitterParser({ projectRoot });
|
|
199
|
+
let embedding;
|
|
200
|
+
if (hub.embedding.provider === 'voyage' && hasText(hub.embedding.voyageApiKey)) {
|
|
201
|
+
const { VoyageCodeEmbeddingProvider } = await import('../adapters/voyage/index.js');
|
|
202
|
+
embedding = new VoyageCodeEmbeddingProvider({ apiKey: hub.embedding.voyageApiKey });
|
|
203
|
+
}
|
|
204
|
+
else if (hub.embedding.provider === 'ollama' || hub.embedding.provider === 'custom') {
|
|
205
|
+
const { OllamaCodeEmbeddingProvider } = await import('../adapters/ollama/index.js');
|
|
206
|
+
const url = hub.embedding.provider === 'custom'
|
|
207
|
+
? hub.embedding.customUrl
|
|
208
|
+
: hub.embedding.ollamaUrl;
|
|
209
|
+
embedding = new OllamaCodeEmbeddingProvider({
|
|
210
|
+
model: hub.embedding.model,
|
|
211
|
+
dimensions: hub.embedding.dimensions,
|
|
212
|
+
...(hasText(url) ? { url } : {}),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const { LmStudioCodeEmbeddingProvider } = await import('../adapters/lmstudio/index.js');
|
|
217
|
+
const lmsOpts = {
|
|
218
|
+
model: hub.embedding.model,
|
|
219
|
+
dimensions: hub.embedding.dimensions,
|
|
220
|
+
};
|
|
221
|
+
if (hasText(hub.embedding.lmstudioUrl)) {
|
|
222
|
+
lmsOpts.url = hub.embedding.lmstudioUrl;
|
|
223
|
+
}
|
|
224
|
+
if (hasText(hub.embedding.rerankModel)) {
|
|
225
|
+
lmsOpts.rerankModel = hub.embedding.rerankModel;
|
|
226
|
+
}
|
|
227
|
+
embedding = new LmStudioCodeEmbeddingProvider(lmsOpts);
|
|
228
|
+
}
|
|
229
|
+
let chatLlm = null;
|
|
230
|
+
if (hub.chatLlm !== null) {
|
|
231
|
+
if (hub.chatLlm.provider === 'ollama') {
|
|
232
|
+
const { OllamaChatLlm } = await import('../adapters/ollama/index.js');
|
|
233
|
+
chatLlm = new OllamaChatLlm({
|
|
234
|
+
model: hub.chatLlm.model,
|
|
235
|
+
...(hasText(hub.chatLlm.url) ? { url: hub.chatLlm.url } : {}),
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
activeCodeAdapters = { graph, vec, parser, embedding, meta: storage, storage, chatLlm, projectRoot };
|
|
240
|
+
return activeCodeAdapters;
|
|
172
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Annotation presets reused across MCP tool registrations.
|
|
244
|
+
* Mirrors the `ToolAnnotations` shape from @modelcontextprotocol/sdk.
|
|
245
|
+
*
|
|
246
|
+
* - READ_ONLY — pure query, no side effects, safe to retry.
|
|
247
|
+
* - LOCAL_WRITE — mutates hub-local state (board.md / Postgres rows),
|
|
248
|
+
* no remote calls (e.g. create_issue with source='local').
|
|
249
|
+
* - REMOTE_WRITE — pushes to or pulls from external systems (Jira, GitHub).
|
|
250
|
+
* destructiveHint flips on so clients can warn the user
|
|
251
|
+
* before invocation.
|
|
252
|
+
*/
|
|
253
|
+
export const ANNOTATIONS = {
|
|
254
|
+
READ_ONLY: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
|
|
255
|
+
REMOTE_READ: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
256
|
+
LOCAL_WRITE: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
257
|
+
REMOTE_WRITE: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true },
|
|
258
|
+
};
|
|
173
259
|
export function textResponse(text) {
|
|
174
260
|
return { content: [{ type: 'text', text }] };
|
|
175
261
|
}
|
|
176
262
|
export function errorResponse(text) {
|
|
177
263
|
return { content: [{ type: 'text', text }], isError: true };
|
|
178
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Standard "workspace not found" error response for MCP tools.
|
|
267
|
+
*
|
|
268
|
+
* Wraps the technical {@link WorkspaceResult.reason} in a UX-friendly
|
|
269
|
+
* message that always contains the marker "Workspace not found" so
|
|
270
|
+
* clients and tests can detect it regardless of which underlying
|
|
271
|
+
* resolution step failed (no `.argustack/`, missing env var, unknown
|
|
272
|
+
* id, etc.).
|
|
273
|
+
*/
|
|
274
|
+
export function workspaceNotFoundResponse(reason) {
|
|
275
|
+
return errorResponse(`No Argustack workspace found (Workspace not found): ${reason}.\n` +
|
|
276
|
+
'Run `argustack init` to create one, or pass workspace_id.');
|
|
277
|
+
}
|
|
179
278
|
export function getErrorMessage(err) {
|
|
180
279
|
if (err instanceof Error) {
|
|
181
280
|
return err.message;
|
|
182
281
|
}
|
|
183
282
|
return String(err);
|
|
184
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* High-level helper: resolve workspace, build adapters, run callback.
|
|
286
|
+
* Centralises the boilerplate for MCP tools that just need a scoped
|
|
287
|
+
* `storage` and `workspaceId`.
|
|
288
|
+
*/
|
|
289
|
+
export async function withWorkspace(explicit, fn) {
|
|
290
|
+
const ws = await loadWorkspace(explicit);
|
|
291
|
+
if (!ws.ok) {
|
|
292
|
+
return workspaceNotFoundResponse(ws.reason);
|
|
293
|
+
}
|
|
294
|
+
const { storage } = await createAdapters(ws.workspaceId);
|
|
295
|
+
return fn({ storage, workspaceId: ws.workspaceId, workspace: ws.workspace, config: ws.config });
|
|
296
|
+
}
|
|
185
297
|
export function str(value) {
|
|
186
298
|
if (value === null || value === undefined) {
|
|
187
299
|
return '';
|
|
@@ -197,5 +309,23 @@ export function str(value) {
|
|
|
197
309
|
}
|
|
198
310
|
return JSON.stringify(value);
|
|
199
311
|
}
|
|
200
|
-
|
|
312
|
+
/**
|
|
313
|
+
* Render `value` via {@link str}, but substitute `fallback` when the
|
|
314
|
+
* result is the empty string. Replaces the deprecated `str(x) || 'N/A'`
|
|
315
|
+
* pattern in a way that satisfies @typescript-eslint/strict-boolean-expressions.
|
|
316
|
+
*/
|
|
317
|
+
export function strOr(value, fallback) {
|
|
318
|
+
const result = str(value);
|
|
319
|
+
return result.length > 0 ? result : fallback;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Render a possibly-null/undefined string with a fallback.
|
|
323
|
+
*/
|
|
324
|
+
export function nullableStr(value, fallback) {
|
|
325
|
+
return value !== null && value !== undefined && value.length > 0 ? value : fallback;
|
|
326
|
+
}
|
|
327
|
+
/** True when `value` is a non-empty string. */
|
|
328
|
+
export function hasText(value) {
|
|
329
|
+
return value !== null && value !== undefined && value.length > 0;
|
|
330
|
+
}
|
|
201
331
|
//# sourceMappingURL=helpers.js.map
|