argustack 0.2.0 → 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 -115
- 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.js +4 -4
- package/dist/adapters/lmstudio/embedding-provider.js.map +1 -1
- package/dist/adapters/lsp/jsonrpc.js +1 -1
- package/dist/adapters/lsp/jsonrpc.js.map +1 -1
- package/dist/adapters/lsp/typescript-lsp.js +7 -7
- package/dist/adapters/lsp/typescript-lsp.js.map +1 -1
- package/dist/adapters/neo4j/client.js +2 -2
- package/dist/adapters/neo4j/client.js.map +1 -1
- package/dist/adapters/neo4j/graph-store.js +3 -3
- package/dist/adapters/neo4j/graph-store.js.map +1 -1
- package/dist/adapters/neo4j/mapper.js +4 -4
- package/dist/adapters/neo4j/mapper.js.map +1 -1
- 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.js +13 -13
- package/dist/adapters/postgres/code-meta.js.map +1 -1
- package/dist/adapters/postgres/index.d.ts +2 -0
- package/dist/adapters/postgres/index.d.ts.map +1 -1
- package/dist/adapters/postgres/index.js +2 -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 +159 -113
- 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 +47 -31
- package/dist/adapters/postgres/storage.d.ts.map +1 -1
- package/dist/adapters/postgres/storage.js +86 -602
- 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.js +1 -1
- package/dist/adapters/qdrant/client.js.map +1 -1
- package/dist/adapters/qdrant/mapper.d.ts.map +1 -1
- package/dist/adapters/qdrant/mapper.js +11 -4
- package/dist/adapters/qdrant/mapper.js.map +1 -1
- package/dist/adapters/qdrant/vector-store.d.ts +1 -0
- package/dist/adapters/qdrant/vector-store.d.ts.map +1 -1
- package/dist/adapters/qdrant/vector-store.js +40 -10
- package/dist/adapters/qdrant/vector-store.js.map +1 -1
- package/dist/adapters/tree-sitter/parser.d.ts.map +1 -1
- package/dist/adapters/tree-sitter/parser.js +12 -12
- package/dist/adapters/tree-sitter/parser.js.map +1 -1
- package/dist/adapters/voyage/embedding-provider.js +2 -2
- package/dist/adapters/voyage/embedding-provider.js.map +1 -1
- 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.map +1 -1
- package/dist/cli/code.js +95 -193
- package/dist/cli/code.js.map +1 -1
- 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 +28 -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 -354
- 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 -317
- 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/file-discovery.js +3 -3
- package/dist/code-intel/file-discovery.js.map +1 -1
- package/dist/code-intel/indexer.js +8 -8
- package/dist/code-intel/indexer.js.map +1 -1
- package/dist/code-intel/lsp-resolver.js +5 -5
- package/dist/code-intel/lsp-resolver.js.map +1 -1
- package/dist/code-intel/ranker.d.ts +14 -0
- package/dist/code-intel/ranker.d.ts.map +1 -1
- package/dist/code-intel/ranker.js +54 -0
- package/dist/code-intel/ranker.js.map +1 -1
- package/dist/code-intel/resolver.js +4 -4
- package/dist/code-intel/resolver.js.map +1 -1
- package/dist/code-intel/tsconfig-paths.js +2 -2
- package/dist/code-intel/tsconfig-paths.js.map +1 -1
- package/dist/code-intel/watcher.js +4 -4
- package/dist/code-intel/watcher.js.map +1 -1
- 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-meta.d.ts +4 -0
- package/dist/core/ports/code-meta.d.ts.map +1 -1
- package/dist/core/ports/code-vector-store.d.ts +5 -0
- package/dist/core/ports/code-vector-store.d.ts.map +1 -1
- 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 +4 -0
- package/dist/core/ports/index.d.ts.map +1 -1
- 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/index.d.ts +2 -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 +121 -30
- package/dist/mcp/helpers.d.ts.map +1 -1
- package/dist/mcp/helpers.js +240 -264
- package/dist/mcp/helpers.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +43 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/code-graph.d.ts.map +1 -1
- package/dist/mcp/tools/code-graph.js +109 -74
- package/dist/mcp/tools/code-graph.js.map +1 -1
- package/dist/mcp/tools/code-hybrid.d.ts.map +1 -1
- package/dist/mcp/tools/code-hybrid.js +75 -51
- package/dist/mcp/tools/code-hybrid.js.map +1 -1
- package/dist/mcp/tools/code-search.d.ts.map +1 -1
- package/dist/mcp/tools/code-search.js +32 -32
- package/dist/mcp/tools/code-search.js.map +1 -1
- 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 +29 -5
- package/dist/use-cases/code-search.d.ts.map +1 -1
- package/dist/use-cases/code-search.js +98 -9
- package/dist/use-cases/code-search.js.map +1 -1
- 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.js +2 -2
- package/dist/use-cases/index-code.js.map +1 -1
- 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 +8 -0
- package/dist/use-cases/register-code-project.d.ts.map +1 -1
- package/dist/use-cases/register-code-project.js +8 -0
- package/dist/use-cases/register-code-project.js.map +1 -1
- package/dist/use-cases/watch-code.js +1 -1
- package/dist/use-cases/watch-code.js.map +1 -1
- 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 +4 -2
- 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/cli/board.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
import { join } from 'node:path';
|
|
1
|
+
import { join, resolve } from 'node:path';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
+
import { findLegacyWorkspaceRoot } from '../workspace/resolver.js';
|
|
4
5
|
export function registerBoardCommand(program) {
|
|
5
6
|
program
|
|
6
7
|
.command('board')
|
|
7
|
-
.description('Start local Kanban board UI')
|
|
8
|
+
.description('Start local Kanban board UI for a project directory')
|
|
8
9
|
.option('-p, --port <port>', 'Port number', '5002')
|
|
10
|
+
.option('--root <path>', 'Project root containing Docs/Tasks/ (default: legacy .argustack/ walk-up, then cwd)')
|
|
9
11
|
.action(async (opts) => {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
const tasksDir = join(wsRoot, 'Docs', 'Tasks');
|
|
12
|
+
const projectRoot = opts.root !== undefined && opts.root.length > 0
|
|
13
|
+
? resolve(opts.root)
|
|
14
|
+
: (findLegacyWorkspaceRoot() ?? process.cwd());
|
|
15
|
+
const tasksDir = join(projectRoot, 'Docs', 'Tasks');
|
|
17
16
|
if (!existsSync(tasksDir)) {
|
|
18
|
-
console.log(chalk.yellow(`No Docs/Tasks/
|
|
19
|
-
console.log(chalk.dim('
|
|
17
|
+
console.log(chalk.yellow(` No Docs/Tasks/ in ${projectRoot}`));
|
|
18
|
+
console.log(chalk.dim(' Pass --root /path/to/project to point at the right folder.'));
|
|
20
19
|
}
|
|
21
20
|
const port = parseInt(opts.port, 10);
|
|
22
21
|
const { startBoardServer } = await import('./board-server.js');
|
|
23
|
-
await startBoardServer(
|
|
22
|
+
await startBoardServer(projectRoot, port);
|
|
24
23
|
});
|
|
25
24
|
}
|
|
26
25
|
//# sourceMappingURL=board.js.map
|
package/dist/cli/board.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/cli/board.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/cli/board.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAOnE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,qFAAqF,CAAC;SAC9G,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACjE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC,uBAAuB,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC/D,MAAM,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/code.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/cli/code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/cli/code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoGzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgY3D"}
|
package/dist/cli/code.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { resolve, join
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { mkdirSync, writeFileSync, existsSync, readFileSync, unlinkSync, openSync, copyFileSync } from 'node:fs';
|
|
5
|
-
import { spawn, spawnSync } from 'node:child_process';
|
|
1
|
+
import { resolve, join } from 'node:path';
|
|
2
|
+
import { mkdirSync, writeFileSync, existsSync, readFileSync, unlinkSync, openSync } from 'node:fs';
|
|
3
|
+
import { spawn } from 'node:child_process';
|
|
6
4
|
import chalk from 'chalk';
|
|
7
5
|
import ora from 'ora';
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
6
|
+
import { hubDir, loadHubConfig } from '../workspace/hub-config.js';
|
|
7
|
+
import { openHubStore, resolveWorkspaceFlag } from './add/shared.js';
|
|
10
8
|
import { PostgresStorage } from '../adapters/postgres/index.js';
|
|
11
9
|
import { Neo4jCodeGraphStore } from '../adapters/neo4j/index.js';
|
|
12
10
|
import { QdrantCodeVectorStore } from '../adapters/qdrant/index.js';
|
|
@@ -14,53 +12,16 @@ import { TreeSitterParser } from '../adapters/tree-sitter/index.js';
|
|
|
14
12
|
import { TypeScriptLspClient } from '../adapters/lsp/index.js';
|
|
15
13
|
import { VoyageCodeEmbeddingProvider } from '../adapters/voyage/index.js';
|
|
16
14
|
import { LmStudioCodeEmbeddingProvider } from '../adapters/lmstudio/index.js';
|
|
15
|
+
import { OllamaCodeEmbeddingProvider } from '../adapters/ollama/index.js';
|
|
17
16
|
import { RegisterCodeProjectUseCase } from '../use-cases/register-code-project.js';
|
|
18
17
|
import { UnregisterCodeProjectUseCase } from '../use-cases/unregister-code-project.js';
|
|
19
18
|
import { IndexCodeUseCase } from '../use-cases/index-code.js';
|
|
20
19
|
import { WatchCodeUseCase } from '../use-cases/watch-code.js';
|
|
21
|
-
const
|
|
22
|
-
const HUB_COMPOSE_FILE = join(HUB_DIR, 'docker-compose.yml');
|
|
23
|
-
const WATCHERS_DIR = join(HUB_DIR, 'watchers');
|
|
24
|
-
function findTemplateFile() {
|
|
25
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
26
|
-
const candidates = [
|
|
27
|
-
join(here, '..', '..', 'templates', 'code-docker-compose.yml'),
|
|
28
|
-
join(here, '..', '..', '..', 'templates', 'code-docker-compose.yml'),
|
|
29
|
-
join(here, '..', 'templates', 'code-docker-compose.yml'),
|
|
30
|
-
];
|
|
31
|
-
for (const path of candidates) {
|
|
32
|
-
if (existsSync(path)) {
|
|
33
|
-
return path;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
function ensureHubCompose() {
|
|
39
|
-
if (!existsSync(HUB_DIR)) {
|
|
40
|
-
mkdirSync(HUB_DIR, { recursive: true });
|
|
41
|
-
}
|
|
42
|
-
if (existsSync(HUB_COMPOSE_FILE)) {
|
|
43
|
-
return { created: false, path: HUB_COMPOSE_FILE };
|
|
44
|
-
}
|
|
45
|
-
const template = findTemplateFile();
|
|
46
|
-
if (!template) {
|
|
47
|
-
throw new Error(`code-docker-compose.yml template not found. Expected near package root.`);
|
|
48
|
-
}
|
|
49
|
-
copyFileSync(template, HUB_COMPOSE_FILE);
|
|
50
|
-
return { created: true, path: HUB_COMPOSE_FILE };
|
|
51
|
-
}
|
|
52
|
-
function dockerComposeUp() {
|
|
53
|
-
const result = spawnSync('docker', ['compose', '-f', HUB_COMPOSE_FILE, 'up', '-d'], {
|
|
54
|
-
stdio: 'inherit',
|
|
55
|
-
});
|
|
56
|
-
if (result.status !== 0) {
|
|
57
|
-
throw new Error(`docker compose up exited with code ${String(result.status)}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
20
|
+
const WATCHERS_DIR = () => join(hubDir(), 'watchers');
|
|
60
21
|
function watcherPaths(projectId) {
|
|
61
22
|
return {
|
|
62
|
-
pidFile: join(WATCHERS_DIR, `${projectId}.pid`),
|
|
63
|
-
logFile: join(WATCHERS_DIR, `${projectId}.log`),
|
|
23
|
+
pidFile: join(WATCHERS_DIR(), `${projectId}.pid`),
|
|
24
|
+
logFile: join(WATCHERS_DIR(), `${projectId}.log`),
|
|
64
25
|
};
|
|
65
26
|
}
|
|
66
27
|
function readWatcherPid(projectId) {
|
|
@@ -69,7 +30,7 @@ function readWatcherPid(projectId) {
|
|
|
69
30
|
return null;
|
|
70
31
|
}
|
|
71
32
|
const pid = parseInt(readFileSync(pidFile, 'utf8').trim(), 10);
|
|
72
|
-
if (
|
|
33
|
+
if (Number.isNaN(pid) || pid === 0) {
|
|
73
34
|
return null;
|
|
74
35
|
}
|
|
75
36
|
try {
|
|
@@ -84,61 +45,47 @@ function readWatcherPid(projectId) {
|
|
|
84
45
|
return null;
|
|
85
46
|
}
|
|
86
47
|
}
|
|
87
|
-
function
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
function readDbConfig() {
|
|
92
|
-
return {
|
|
93
|
-
host: process.env['DB_HOST'] ?? 'localhost',
|
|
94
|
-
port: parseInt(process.env['DB_PORT'] ?? '5434', 10),
|
|
95
|
-
database: process.env['DB_NAME'] ?? 'argustack',
|
|
96
|
-
user: process.env['DB_USER'] ?? 'argustack',
|
|
97
|
-
password: process.env['DB_PASSWORD'] ?? 'argustack_local',
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
function buildAdapters() {
|
|
101
|
-
const uri = process.env['NEO4J_URI'];
|
|
102
|
-
const qdrantUrl = process.env['QDRANT_URL'];
|
|
103
|
-
if (!uri || !qdrantUrl) {
|
|
104
|
-
throw new Error('Code intelligence requires NEO4J_URI and QDRANT_URL in workspace .env');
|
|
48
|
+
function getStatusColor(status) {
|
|
49
|
+
if (status === 'completed') {
|
|
50
|
+
return chalk.green;
|
|
105
51
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
throw new Error('CODE_EMBEDDING_PROVIDER=voyage requires VOYAGE_API_KEY in workspace .env');
|
|
52
|
+
if (status === 'failed') {
|
|
53
|
+
return chalk.red;
|
|
109
54
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const qdrantOpts = {
|
|
117
|
-
url: qdrantUrl,
|
|
118
|
-
};
|
|
119
|
-
if (process.env['QDRANT_API_KEY']) {
|
|
120
|
-
qdrantOpts.apiKey = process.env['QDRANT_API_KEY'];
|
|
55
|
+
return chalk.yellow;
|
|
56
|
+
}
|
|
57
|
+
function buildAdapters() {
|
|
58
|
+
const hub = loadHubConfig();
|
|
59
|
+
if (hub.embedding.provider === 'voyage' && (hub.embedding.voyageApiKey === undefined || hub.embedding.voyageApiKey === '')) {
|
|
60
|
+
throw new Error('CODE_EMBEDDING_PROVIDER=voyage requires VOYAGE_API_KEY in ~/.argustack/config.env');
|
|
121
61
|
}
|
|
122
|
-
const
|
|
62
|
+
const storage = new PostgresStorage(hub.db);
|
|
63
|
+
const graph = new Neo4jCodeGraphStore(hub.neo4j);
|
|
64
|
+
const vec = new QdrantCodeVectorStore({ url: hub.qdrant.url });
|
|
123
65
|
let embedding;
|
|
124
|
-
if (provider === 'voyage') {
|
|
125
|
-
embedding = new VoyageCodeEmbeddingProvider({
|
|
126
|
-
|
|
66
|
+
if (hub.embedding.provider === 'voyage' && hub.embedding.voyageApiKey !== undefined && hub.embedding.voyageApiKey !== '') {
|
|
67
|
+
embedding = new VoyageCodeEmbeddingProvider({ apiKey: hub.embedding.voyageApiKey });
|
|
68
|
+
}
|
|
69
|
+
else if (hub.embedding.provider === 'ollama' || hub.embedding.provider === 'custom') {
|
|
70
|
+
const url = hub.embedding.provider === 'custom'
|
|
71
|
+
? hub.embedding.customUrl
|
|
72
|
+
: hub.embedding.ollamaUrl;
|
|
73
|
+
embedding = new OllamaCodeEmbeddingProvider({
|
|
74
|
+
model: hub.embedding.model,
|
|
75
|
+
dimensions: hub.embedding.dimensions,
|
|
76
|
+
...(url !== undefined && url !== '' ? { url } : {}),
|
|
127
77
|
});
|
|
128
78
|
}
|
|
129
79
|
else {
|
|
130
|
-
const lmsOpts = {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
if (
|
|
135
|
-
lmsOpts.
|
|
136
|
-
}
|
|
137
|
-
if (process.env['EMBEDDING_DIMS']) {
|
|
138
|
-
lmsOpts.dimensions = parseInt(process.env['EMBEDDING_DIMS'], 10);
|
|
80
|
+
const lmsOpts = {
|
|
81
|
+
model: hub.embedding.model,
|
|
82
|
+
dimensions: hub.embedding.dimensions,
|
|
83
|
+
};
|
|
84
|
+
if (hub.embedding.lmstudioUrl !== undefined && hub.embedding.lmstudioUrl !== '') {
|
|
85
|
+
lmsOpts.url = hub.embedding.lmstudioUrl;
|
|
139
86
|
}
|
|
140
|
-
if (
|
|
141
|
-
lmsOpts.rerankModel =
|
|
87
|
+
if (hub.embedding.rerankModel !== undefined && hub.embedding.rerankModel !== '') {
|
|
88
|
+
lmsOpts.rerankModel = hub.embedding.rerankModel;
|
|
142
89
|
}
|
|
143
90
|
embedding = new LmStudioCodeEmbeddingProvider(lmsOpts);
|
|
144
91
|
}
|
|
@@ -149,76 +96,35 @@ async function closeAdapters(adapters) {
|
|
|
149
96
|
await adapters.vec.close();
|
|
150
97
|
await adapters.storage.close();
|
|
151
98
|
}
|
|
152
|
-
function projectIdFromName(name) {
|
|
153
|
-
return name.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');
|
|
154
|
-
}
|
|
155
99
|
export function registerCodeCommands(program) {
|
|
156
100
|
const code = program
|
|
157
101
|
.command('code')
|
|
158
102
|
.description('Local code intelligence — graph + semantic search of your codebase');
|
|
159
103
|
code
|
|
160
104
|
.command('init')
|
|
161
|
-
.description('
|
|
162
|
-
.
|
|
163
|
-
.
|
|
164
|
-
|
|
165
|
-
const composeSpinner = ora('Preparing hub docker-compose.yml...').start();
|
|
166
|
-
try {
|
|
167
|
-
const { created, path } = ensureHubCompose();
|
|
168
|
-
composeSpinner.succeed(created
|
|
169
|
-
? `Created ${path}`
|
|
170
|
-
: `Using existing ${path}`);
|
|
171
|
-
}
|
|
172
|
-
catch (err) {
|
|
173
|
-
composeSpinner.fail('Failed to prepare docker-compose.yml');
|
|
174
|
-
console.error(chalk.red(` ${err instanceof Error ? err.message : String(err)}`));
|
|
175
|
-
process.exitCode = 1;
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
if (!options.skipDocker) {
|
|
179
|
-
const dockerSpinner = ora('Starting Neo4j + Qdrant containers...').start();
|
|
180
|
-
try {
|
|
181
|
-
dockerSpinner.stop();
|
|
182
|
-
dockerComposeUp();
|
|
183
|
-
console.log(chalk.green(' Containers up'));
|
|
184
|
-
}
|
|
185
|
-
catch (err) {
|
|
186
|
-
dockerSpinner.fail('docker compose up failed');
|
|
187
|
-
console.error(chalk.red(` ${err instanceof Error ? err.message : String(err)}`));
|
|
188
|
-
console.error(chalk.dim(' Tip: re-run with --skip-docker if containers are managed elsewhere.'));
|
|
189
|
-
process.exitCode = 1;
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
const spinner = ora('Initializing code intelligence stores...').start();
|
|
194
|
-
const adapters = buildAdapters();
|
|
195
|
-
try {
|
|
196
|
-
await adapters.storage.initialize();
|
|
197
|
-
await adapters.graph.initialize();
|
|
198
|
-
await adapters.vec.initialize();
|
|
199
|
-
spinner.succeed('Code intelligence ready');
|
|
200
|
-
}
|
|
201
|
-
catch (err) {
|
|
202
|
-
spinner.fail('Init failed');
|
|
203
|
-
console.error(chalk.red(` ${err instanceof Error ? err.message : String(err)}`));
|
|
204
|
-
process.exitCode = 1;
|
|
205
|
-
}
|
|
206
|
-
finally {
|
|
207
|
-
await closeAdapters(adapters);
|
|
208
|
-
}
|
|
105
|
+
.description('[deprecated] Use `argustack init` — it now bootstraps the full hub including code-intel')
|
|
106
|
+
.action(() => {
|
|
107
|
+
console.log(chalk.yellow(' `argustack code init` is deprecated.'));
|
|
108
|
+
console.log(chalk.dim(' Use `argustack init` — it bootstraps the full hub (pg + neo4j + qdrant) and offers code-intel setup.'));
|
|
209
109
|
});
|
|
210
110
|
code
|
|
211
111
|
.command('register')
|
|
212
|
-
.description('Register a code project for indexing')
|
|
213
|
-
.
|
|
112
|
+
.description('Register a code project for indexing (workspaces.id === code_projects.id)')
|
|
113
|
+
.option('--workspace <name>', 'Target workspace (defaults to active)')
|
|
214
114
|
.option('--root <path>', 'Project root (default: CWD)')
|
|
215
115
|
.option('--language <lang>', 'Primary language (typescript|tsx|javascript|jsx)', 'typescript')
|
|
216
116
|
.action(async (options) => {
|
|
217
|
-
|
|
117
|
+
const { store, close: closeStore } = await openHubStore();
|
|
118
|
+
const workspaceId = await resolveWorkspaceFlag(store, options.workspace);
|
|
119
|
+
const workspace = await store.getById(workspaceId);
|
|
120
|
+
await closeStore();
|
|
121
|
+
if (workspace == null) {
|
|
122
|
+
throw new Error(`Workspace "${workspaceId}" not found.`);
|
|
123
|
+
}
|
|
218
124
|
const root = resolve(options.root ?? process.cwd());
|
|
219
125
|
const project = {
|
|
220
|
-
id:
|
|
221
|
-
name:
|
|
126
|
+
id: workspaceId,
|
|
127
|
+
name: workspace.name,
|
|
222
128
|
root,
|
|
223
129
|
language: options.language,
|
|
224
130
|
};
|
|
@@ -239,15 +145,16 @@ export function registerCodeCommands(program) {
|
|
|
239
145
|
code
|
|
240
146
|
.command('unregister')
|
|
241
147
|
.description('Remove a code project and its indexed data')
|
|
242
|
-
.
|
|
243
|
-
.action(async (
|
|
244
|
-
|
|
245
|
-
const projectId =
|
|
148
|
+
.option('--workspace <name>', 'Target workspace (defaults to active)')
|
|
149
|
+
.action(async (options) => {
|
|
150
|
+
const { store, close: closeStore } = await openHubStore();
|
|
151
|
+
const projectId = await resolveWorkspaceFlag(store, options.workspace);
|
|
152
|
+
await closeStore();
|
|
246
153
|
const adapters = buildAdapters();
|
|
247
154
|
try {
|
|
248
155
|
const useCase = new UnregisterCodeProjectUseCase(adapters.storage, adapters.graph, adapters.vec);
|
|
249
156
|
await useCase.execute(projectId);
|
|
250
|
-
console.log(chalk.yellow(` Unregistered
|
|
157
|
+
console.log(chalk.yellow(` Unregistered project (id: ${projectId})`));
|
|
251
158
|
}
|
|
252
159
|
finally {
|
|
253
160
|
await closeAdapters(adapters);
|
|
@@ -261,42 +168,39 @@ export function registerCodeCommands(program) {
|
|
|
261
168
|
.option('--status', 'Print latest index job + stats and exit (no indexing)')
|
|
262
169
|
.option('--lsp', 'Use typescript-language-server for cross-file call resolution (slower, more accurate)')
|
|
263
170
|
.action(async (options) => {
|
|
264
|
-
loadEnv();
|
|
265
171
|
const adapters = buildAdapters();
|
|
266
172
|
const spinner = ora('Resolving project...').start();
|
|
267
173
|
let lspClient = null;
|
|
268
174
|
try {
|
|
269
|
-
const project = options.project
|
|
175
|
+
const project = options.project !== undefined && options.project !== ''
|
|
270
176
|
? await adapters.storage.getProjectById(options.project)
|
|
271
177
|
: await adapters.storage.getProjectByRoot(process.cwd());
|
|
272
|
-
if (
|
|
178
|
+
if (project == null) {
|
|
273
179
|
spinner.fail('Project not registered. Run `argustack code register --name <name>`.');
|
|
274
180
|
process.exitCode = 1;
|
|
275
181
|
return;
|
|
276
182
|
}
|
|
277
|
-
if (options.status) {
|
|
183
|
+
if (options.status === true) {
|
|
278
184
|
spinner.stop();
|
|
279
185
|
const job = await adapters.storage.getLatestJob(project.id);
|
|
280
186
|
console.log('');
|
|
281
187
|
console.log(` ${chalk.bold(project.name)} ${chalk.dim(`(${project.id})`)}`);
|
|
282
188
|
console.log(chalk.dim(` root: ${project.root}`));
|
|
283
|
-
if (
|
|
189
|
+
if (job == null) {
|
|
284
190
|
console.log(chalk.yellow(' No index jobs recorded yet. Run `argustack code index`.'));
|
|
285
191
|
console.log('');
|
|
286
192
|
return;
|
|
287
193
|
}
|
|
288
|
-
const statusColor = job.status
|
|
289
|
-
? chalk.green
|
|
290
|
-
: job.status === 'failed' ? chalk.red : chalk.yellow;
|
|
194
|
+
const statusColor = getStatusColor(job.status);
|
|
291
195
|
console.log(` last job: ${statusColor(job.status)} (${job.type}) #${String(job.id)}`);
|
|
292
196
|
console.log(chalk.dim(` started: ${job.startedAt}`));
|
|
293
|
-
if (job.completedAt) {
|
|
197
|
+
if (job.completedAt !== undefined && job.completedAt !== '') {
|
|
294
198
|
console.log(chalk.dim(` completed: ${job.completedAt}`));
|
|
295
199
|
}
|
|
296
|
-
if (job.stats) {
|
|
200
|
+
if (job.stats != null) {
|
|
297
201
|
console.log(chalk.dim(` stats: files=${String(job.stats.filesIndexed)} symbols=${String(job.stats.symbolsCreated)} chunks=${String(job.stats.chunksCreated)} edges=${String(job.stats.edgesCreated)} duration=${String(job.stats.durationMs)}ms`));
|
|
298
202
|
}
|
|
299
|
-
if (job.error) {
|
|
203
|
+
if (job.error !== undefined && job.error !== '') {
|
|
300
204
|
console.log(chalk.red(` error: ${job.error}`));
|
|
301
205
|
}
|
|
302
206
|
console.log('');
|
|
@@ -304,7 +208,7 @@ export function registerCodeCommands(program) {
|
|
|
304
208
|
}
|
|
305
209
|
spinner.text = `Indexing '${project.name}'...`;
|
|
306
210
|
const parser = new TreeSitterParser({ projectRoot: project.root });
|
|
307
|
-
if (options.lsp) {
|
|
211
|
+
if (options.lsp === true) {
|
|
308
212
|
const client = new TypeScriptLspClient();
|
|
309
213
|
try {
|
|
310
214
|
await client.start(project.root);
|
|
@@ -343,13 +247,13 @@ export function registerCodeCommands(program) {
|
|
|
343
247
|
catch (err) {
|
|
344
248
|
spinner.fail('Index failed');
|
|
345
249
|
console.error(chalk.red(` ${err instanceof Error ? err.message : String(err)}`));
|
|
346
|
-
if (err instanceof Error && err.stack) {
|
|
250
|
+
if (err instanceof Error && err.stack !== undefined && err.stack !== '') {
|
|
347
251
|
console.error(chalk.dim(err.stack));
|
|
348
252
|
}
|
|
349
253
|
process.exitCode = 1;
|
|
350
254
|
}
|
|
351
255
|
finally {
|
|
352
|
-
if (lspClient) {
|
|
256
|
+
if (lspClient != null) {
|
|
353
257
|
try {
|
|
354
258
|
await lspClient.stop();
|
|
355
259
|
}
|
|
@@ -362,7 +266,6 @@ export function registerCodeCommands(program) {
|
|
|
362
266
|
.command('list')
|
|
363
267
|
.description('List registered code projects')
|
|
364
268
|
.action(async () => {
|
|
365
|
-
loadEnv();
|
|
366
269
|
const adapters = buildAdapters();
|
|
367
270
|
try {
|
|
368
271
|
const projects = await adapters.storage.listProjects();
|
|
@@ -372,7 +275,7 @@ export function registerCodeCommands(program) {
|
|
|
372
275
|
}
|
|
373
276
|
console.log('');
|
|
374
277
|
for (const p of projects) {
|
|
375
|
-
const lastIndexed = p.lastIndexedAt
|
|
278
|
+
const lastIndexed = p.lastIndexedAt !== undefined && p.lastIndexedAt !== ''
|
|
376
279
|
? new Date(p.lastIndexedAt).toLocaleString()
|
|
377
280
|
: chalk.dim('never');
|
|
378
281
|
console.log(` ${chalk.green('●')} ${chalk.bold(p.name)} ${chalk.dim(`(${p.id})`)}`);
|
|
@@ -389,7 +292,6 @@ export function registerCodeCommands(program) {
|
|
|
389
292
|
.command('status')
|
|
390
293
|
.description('Show status of code intelligence stores and projects')
|
|
391
294
|
.action(async () => {
|
|
392
|
-
loadEnv();
|
|
393
295
|
const adapters = buildAdapters();
|
|
394
296
|
try {
|
|
395
297
|
const projects = await adapters.storage.listProjects();
|
|
@@ -402,11 +304,11 @@ export function registerCodeCommands(program) {
|
|
|
402
304
|
console.log(chalk.bold(` Projects (${String(projects.length)}):`));
|
|
403
305
|
for (const p of projects) {
|
|
404
306
|
const job = await adapters.storage.getLatestJob(p.id);
|
|
405
|
-
const jobInfo = job
|
|
307
|
+
const jobInfo = job != null
|
|
406
308
|
? `${job.status} (${job.type})`
|
|
407
309
|
: chalk.dim('no jobs');
|
|
408
310
|
const watcherPid = readWatcherPid(p.id);
|
|
409
|
-
const watcherInfo = watcherPid
|
|
311
|
+
const watcherInfo = watcherPid != null && watcherPid !== 0
|
|
410
312
|
? chalk.cyan(` ⟳ watching (pid ${String(watcherPid)})`)
|
|
411
313
|
: '';
|
|
412
314
|
console.log(` ${chalk.green('●')} ${p.name} — ${jobInfo}${watcherInfo}`);
|
|
@@ -419,15 +321,16 @@ export function registerCodeCommands(program) {
|
|
|
419
321
|
});
|
|
420
322
|
code
|
|
421
323
|
.command('stats')
|
|
422
|
-
.description('Show stats for a project')
|
|
423
|
-
.
|
|
424
|
-
.action(async (
|
|
425
|
-
|
|
324
|
+
.description('Show stats for a code project')
|
|
325
|
+
.option('--workspace <name>', 'Target workspace (defaults to active)')
|
|
326
|
+
.action(async (options) => {
|
|
327
|
+
const { store, close: closeStore } = await openHubStore();
|
|
328
|
+
const id = await resolveWorkspaceFlag(store, options.workspace);
|
|
329
|
+
await closeStore();
|
|
426
330
|
const adapters = buildAdapters();
|
|
427
331
|
try {
|
|
428
|
-
const id = projectIdFromName(projectId);
|
|
429
332
|
const project = await adapters.storage.getProjectById(id);
|
|
430
|
-
if (
|
|
333
|
+
if (project == null) {
|
|
431
334
|
console.log(chalk.red(`\n Project '${id}' not found.\n`));
|
|
432
335
|
process.exitCode = 1;
|
|
433
336
|
return;
|
|
@@ -438,9 +341,9 @@ export function registerCodeCommands(program) {
|
|
|
438
341
|
console.log(` ${chalk.bold(project.name)} ${chalk.dim(`(${project.id})`)}`);
|
|
439
342
|
console.log(` root: ${project.root}`);
|
|
440
343
|
console.log(` vectors: ${String(vecStats.pointCount)} (dim ${String(vecStats.vectorDim)})`);
|
|
441
|
-
if (lastJob) {
|
|
344
|
+
if (lastJob != null) {
|
|
442
345
|
console.log(` last job: ${lastJob.status} ${lastJob.type} @ ${lastJob.startedAt}`);
|
|
443
|
-
if (lastJob.stats) {
|
|
346
|
+
if (lastJob.stats != null) {
|
|
444
347
|
console.log(chalk.dim(` files=${String(lastJob.stats.filesIndexed)} symbols=${String(lastJob.stats.symbolsCreated)} chunks=${String(lastJob.stats.chunksCreated)} tokens=${String(lastJob.stats.embeddingTokens)}`));
|
|
445
348
|
}
|
|
446
349
|
}
|
|
@@ -457,21 +360,20 @@ export function registerCodeCommands(program) {
|
|
|
457
360
|
.option('--daemon', 'Run in background, write PID file')
|
|
458
361
|
.option('--stop', 'Stop running daemon for this project')
|
|
459
362
|
.action(async (options) => {
|
|
460
|
-
|
|
461
|
-
mkdirSync(WATCHERS_DIR, { recursive: true });
|
|
363
|
+
mkdirSync(WATCHERS_DIR(), { recursive: true });
|
|
462
364
|
const adapters = buildAdapters();
|
|
463
365
|
try {
|
|
464
|
-
const project = options.project
|
|
366
|
+
const project = options.project !== undefined && options.project !== ''
|
|
465
367
|
? await adapters.storage.getProjectById(options.project)
|
|
466
368
|
: await adapters.storage.getProjectByRoot(process.cwd());
|
|
467
|
-
if (
|
|
369
|
+
if (project == null) {
|
|
468
370
|
console.log(chalk.red('\n Project not registered. Run `argustack code register --name <name>`.\n'));
|
|
469
371
|
process.exitCode = 1;
|
|
470
372
|
return;
|
|
471
373
|
}
|
|
472
|
-
if (options.stop) {
|
|
374
|
+
if (options.stop === true) {
|
|
473
375
|
const pid = readWatcherPid(project.id);
|
|
474
|
-
if (
|
|
376
|
+
if (pid == null || pid === 0) {
|
|
475
377
|
console.log(chalk.yellow(` No running watcher for '${project.id}'.`));
|
|
476
378
|
return;
|
|
477
379
|
}
|
|
@@ -490,12 +392,12 @@ export function registerCodeCommands(program) {
|
|
|
490
392
|
return;
|
|
491
393
|
}
|
|
492
394
|
const existingPid = readWatcherPid(project.id);
|
|
493
|
-
if (existingPid) {
|
|
395
|
+
if (existingPid != null && existingPid !== 0) {
|
|
494
396
|
console.log(chalk.yellow(` Watcher already running (pid ${String(existingPid)}) for '${project.id}'.`));
|
|
495
397
|
console.log(chalk.dim(` Use --stop to stop it, or check ${watcherPaths(project.id).logFile}`));
|
|
496
398
|
return;
|
|
497
399
|
}
|
|
498
|
-
if (options.daemon) {
|
|
400
|
+
if (options.daemon === true) {
|
|
499
401
|
const { pidFile, logFile } = watcherPaths(project.id);
|
|
500
402
|
const logFd = openSync(logFile, 'a');
|
|
501
403
|
const child = spawn(process.execPath, [process.argv[1] ?? '', 'code', 'watch', '--project', project.id], {
|
|
@@ -504,7 +406,7 @@ export function registerCodeCommands(program) {
|
|
|
504
406
|
env: process.env,
|
|
505
407
|
});
|
|
506
408
|
child.unref();
|
|
507
|
-
if (child.pid) {
|
|
409
|
+
if (child.pid != null && child.pid !== 0) {
|
|
508
410
|
writeFileSync(pidFile, String(child.pid));
|
|
509
411
|
console.log(chalk.green(` Watcher started in background for '${project.id}'`));
|
|
510
412
|
console.log(chalk.dim(` pid: ${String(child.pid)}`));
|