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.
Files changed (672) hide show
  1. package/README.md +31 -98
  2. package/dist/adapters/board/board-sync.js +2 -2
  3. package/dist/adapters/board/board-sync.js.map +1 -1
  4. package/dist/adapters/board/md-parser.js +3 -3
  5. package/dist/adapters/board/md-parser.js.map +1 -1
  6. package/dist/adapters/board/skill-discovery.js +2 -2
  7. package/dist/adapters/board/skill-discovery.js.map +1 -1
  8. package/dist/adapters/board/skill-runner.js +2 -2
  9. package/dist/adapters/board/skill-runner.js.map +1 -1
  10. package/dist/adapters/board/store.d.ts.map +1 -1
  11. package/dist/adapters/board/store.js +11 -11
  12. package/dist/adapters/board/store.js.map +1 -1
  13. package/dist/adapters/csv/mapper.js +11 -11
  14. package/dist/adapters/csv/mapper.js.map +1 -1
  15. package/dist/adapters/csv/parser.d.ts.map +1 -1
  16. package/dist/adapters/csv/parser.js +8 -7
  17. package/dist/adapters/csv/parser.js.map +1 -1
  18. package/dist/adapters/csv/provider.js +4 -4
  19. package/dist/adapters/csv/provider.js.map +1 -1
  20. package/dist/adapters/db/client.js +2 -2
  21. package/dist/adapters/db/client.js.map +1 -1
  22. package/dist/adapters/db/index.js +1 -0
  23. package/dist/adapters/db/index.js.map +1 -1
  24. package/dist/adapters/db/mapper.js +1 -1
  25. package/dist/adapters/db/mapper.js.map +1 -1
  26. package/dist/adapters/db/provider.js +4 -4
  27. package/dist/adapters/db/provider.js.map +1 -1
  28. package/dist/adapters/db/sql-validator.js +2 -2
  29. package/dist/adapters/db/sql-validator.js.map +1 -1
  30. package/dist/adapters/docker/cli-docker-control.d.ts +13 -0
  31. package/dist/adapters/docker/cli-docker-control.d.ts.map +1 -0
  32. package/dist/adapters/docker/cli-docker-control.js +70 -0
  33. package/dist/adapters/docker/cli-docker-control.js.map +1 -0
  34. package/dist/adapters/docker/index.d.ts +2 -0
  35. package/dist/adapters/docker/index.d.ts.map +1 -0
  36. package/dist/adapters/docker/index.js +2 -0
  37. package/dist/adapters/docker/index.js.map +1 -0
  38. package/dist/adapters/git/mapper.js +1 -1
  39. package/dist/adapters/git/mapper.js.map +1 -1
  40. package/dist/adapters/git/provider.js +4 -4
  41. package/dist/adapters/git/provider.js.map +1 -1
  42. package/dist/adapters/github/mapper.js +3 -3
  43. package/dist/adapters/github/mapper.js.map +1 -1
  44. package/dist/adapters/github/provider.d.ts.map +1 -1
  45. package/dist/adapters/github/provider.js +2 -2
  46. package/dist/adapters/github/provider.js.map +1 -1
  47. package/dist/adapters/jira/mapper.js +4 -4
  48. package/dist/adapters/jira/mapper.js.map +1 -1
  49. package/dist/adapters/jira/provider.js +8 -8
  50. package/dist/adapters/jira/provider.js.map +1 -1
  51. package/dist/adapters/jira-proxy/client.js +4 -4
  52. package/dist/adapters/jira-proxy/client.js.map +1 -1
  53. package/dist/adapters/jira-proxy/config-loader.d.ts +9 -0
  54. package/dist/adapters/jira-proxy/config-loader.d.ts.map +1 -1
  55. package/dist/adapters/jira-proxy/config-loader.js +26 -3
  56. package/dist/adapters/jira-proxy/config-loader.js.map +1 -1
  57. package/dist/adapters/jira-proxy/index.d.ts +1 -1
  58. package/dist/adapters/jira-proxy/index.d.ts.map +1 -1
  59. package/dist/adapters/jira-proxy/index.js +1 -1
  60. package/dist/adapters/jira-proxy/index.js.map +1 -1
  61. package/dist/adapters/jira-proxy/mapper.js +2 -2
  62. package/dist/adapters/jira-proxy/mapper.js.map +1 -1
  63. package/dist/adapters/jira-proxy/provider.d.ts.map +1 -1
  64. package/dist/adapters/jira-proxy/provider.js +19 -8
  65. package/dist/adapters/jira-proxy/provider.js.map +1 -1
  66. package/dist/adapters/lmstudio/embedding-provider.d.ts +37 -0
  67. package/dist/adapters/lmstudio/embedding-provider.d.ts.map +1 -0
  68. package/dist/adapters/lmstudio/embedding-provider.js +174 -0
  69. package/dist/adapters/lmstudio/embedding-provider.js.map +1 -0
  70. package/dist/adapters/lmstudio/index.d.ts +3 -0
  71. package/dist/adapters/lmstudio/index.d.ts.map +1 -0
  72. package/dist/adapters/lmstudio/index.js +2 -0
  73. package/dist/adapters/lmstudio/index.js.map +1 -0
  74. package/dist/adapters/lsp/index.d.ts +4 -0
  75. package/dist/adapters/lsp/index.d.ts.map +1 -0
  76. package/dist/adapters/lsp/index.js +3 -0
  77. package/dist/adapters/lsp/index.js.map +1 -0
  78. package/dist/adapters/lsp/jsonrpc.d.ts +12 -0
  79. package/dist/adapters/lsp/jsonrpc.d.ts.map +1 -0
  80. package/dist/adapters/lsp/jsonrpc.js +30 -0
  81. package/dist/adapters/lsp/jsonrpc.js.map +1 -0
  82. package/dist/adapters/lsp/typescript-lsp.d.ts +25 -0
  83. package/dist/adapters/lsp/typescript-lsp.d.ts.map +1 -0
  84. package/dist/adapters/lsp/typescript-lsp.js +131 -0
  85. package/dist/adapters/lsp/typescript-lsp.js.map +1 -0
  86. package/dist/adapters/neo4j/client.d.ts +11 -0
  87. package/dist/adapters/neo4j/client.d.ts.map +1 -0
  88. package/dist/adapters/neo4j/client.js +14 -0
  89. package/dist/adapters/neo4j/client.js.map +1 -0
  90. package/dist/adapters/neo4j/cypher.d.ts +23 -0
  91. package/dist/adapters/neo4j/cypher.d.ts.map +1 -0
  92. package/dist/adapters/neo4j/cypher.js +138 -0
  93. package/dist/adapters/neo4j/cypher.js.map +1 -0
  94. package/dist/adapters/neo4j/graph-store.d.ts +33 -0
  95. package/dist/adapters/neo4j/graph-store.d.ts.map +1 -0
  96. package/dist/adapters/neo4j/graph-store.js +282 -0
  97. package/dist/adapters/neo4j/graph-store.js.map +1 -0
  98. package/dist/adapters/neo4j/index.d.ts +4 -0
  99. package/dist/adapters/neo4j/index.d.ts.map +1 -0
  100. package/dist/adapters/neo4j/index.js +3 -0
  101. package/dist/adapters/neo4j/index.js.map +1 -0
  102. package/dist/adapters/neo4j/mapper.d.ts +5 -0
  103. package/dist/adapters/neo4j/mapper.d.ts.map +1 -0
  104. package/dist/adapters/neo4j/mapper.js +49 -0
  105. package/dist/adapters/neo4j/mapper.js.map +1 -0
  106. package/dist/adapters/ollama/chat-llm.d.ts +24 -0
  107. package/dist/adapters/ollama/chat-llm.d.ts.map +1 -0
  108. package/dist/adapters/ollama/chat-llm.js +53 -0
  109. package/dist/adapters/ollama/chat-llm.js.map +1 -0
  110. package/dist/adapters/ollama/embedding-provider.d.ts +30 -0
  111. package/dist/adapters/ollama/embedding-provider.d.ts.map +1 -0
  112. package/dist/adapters/ollama/embedding-provider.js +124 -0
  113. package/dist/adapters/ollama/embedding-provider.js.map +1 -0
  114. package/dist/adapters/ollama/http-ollama-control.d.ts +24 -0
  115. package/dist/adapters/ollama/http-ollama-control.d.ts.map +1 -0
  116. package/dist/adapters/ollama/http-ollama-control.js +224 -0
  117. package/dist/adapters/ollama/http-ollama-control.js.map +1 -0
  118. package/dist/adapters/ollama/index.d.ts +6 -0
  119. package/dist/adapters/ollama/index.d.ts.map +1 -0
  120. package/dist/adapters/ollama/index.js +4 -0
  121. package/dist/adapters/ollama/index.js.map +1 -0
  122. package/dist/adapters/platform/index.d.ts +2 -0
  123. package/dist/adapters/platform/index.d.ts.map +1 -0
  124. package/dist/adapters/platform/index.js +2 -0
  125. package/dist/adapters/platform/index.js.map +1 -0
  126. package/dist/adapters/platform/node-platform-probe.d.ts +9 -0
  127. package/dist/adapters/platform/node-platform-probe.d.ts.map +1 -0
  128. package/dist/adapters/platform/node-platform-probe.js +88 -0
  129. package/dist/adapters/platform/node-platform-probe.js.map +1 -0
  130. package/dist/adapters/postgres/code-meta.d.ts +21 -0
  131. package/dist/adapters/postgres/code-meta.d.ts.map +1 -0
  132. package/dist/adapters/postgres/code-meta.js +150 -0
  133. package/dist/adapters/postgres/code-meta.js.map +1 -0
  134. package/dist/adapters/postgres/index.d.ts +3 -0
  135. package/dist/adapters/postgres/index.d.ts.map +1 -1
  136. package/dist/adapters/postgres/index.js +3 -0
  137. package/dist/adapters/postgres/index.js.map +1 -1
  138. package/dist/adapters/postgres/migrate-helpers.d.ts +43 -0
  139. package/dist/adapters/postgres/migrate-helpers.d.ts.map +1 -0
  140. package/dist/adapters/postgres/migrate-helpers.js +136 -0
  141. package/dist/adapters/postgres/migrate-helpers.js.map +1 -0
  142. package/dist/adapters/postgres/readiness-probe.d.ts +22 -0
  143. package/dist/adapters/postgres/readiness-probe.d.ts.map +1 -0
  144. package/dist/adapters/postgres/readiness-probe.js +47 -0
  145. package/dist/adapters/postgres/readiness-probe.js.map +1 -0
  146. package/dist/adapters/postgres/schema.d.ts +11 -1
  147. package/dist/adapters/postgres/schema.d.ts.map +1 -1
  148. package/dist/adapters/postgres/schema.js +192 -108
  149. package/dist/adapters/postgres/schema.js.map +1 -1
  150. package/dist/adapters/postgres/storage-commits.d.ts +13 -0
  151. package/dist/adapters/postgres/storage-commits.d.ts.map +1 -0
  152. package/dist/adapters/postgres/storage-commits.js +63 -0
  153. package/dist/adapters/postgres/storage-commits.js.map +1 -0
  154. package/dist/adapters/postgres/storage-dbschema.d.ts +14 -0
  155. package/dist/adapters/postgres/storage-dbschema.d.ts.map +1 -0
  156. package/dist/adapters/postgres/storage-dbschema.js +63 -0
  157. package/dist/adapters/postgres/storage-dbschema.js.map +1 -0
  158. package/dist/adapters/postgres/storage-graph.d.ts +18 -0
  159. package/dist/adapters/postgres/storage-graph.d.ts.map +1 -0
  160. package/dist/adapters/postgres/storage-graph.js +127 -0
  161. package/dist/adapters/postgres/storage-graph.js.map +1 -0
  162. package/dist/adapters/postgres/storage-issues.d.ts +26 -0
  163. package/dist/adapters/postgres/storage-issues.d.ts.map +1 -0
  164. package/dist/adapters/postgres/storage-issues.js +233 -0
  165. package/dist/adapters/postgres/storage-issues.js.map +1 -0
  166. package/dist/adapters/postgres/storage-prs.d.ts +15 -0
  167. package/dist/adapters/postgres/storage-prs.d.ts.map +1 -0
  168. package/dist/adapters/postgres/storage-prs.js +142 -0
  169. package/dist/adapters/postgres/storage-prs.js.map +1 -0
  170. package/dist/adapters/postgres/storage-query.d.ts +26 -0
  171. package/dist/adapters/postgres/storage-query.d.ts.map +1 -0
  172. package/dist/adapters/postgres/storage-query.js +74 -0
  173. package/dist/adapters/postgres/storage-query.js.map +1 -0
  174. package/dist/adapters/postgres/storage-search.d.ts +18 -0
  175. package/dist/adapters/postgres/storage-search.d.ts.map +1 -0
  176. package/dist/adapters/postgres/storage-search.js +90 -0
  177. package/dist/adapters/postgres/storage-search.js.map +1 -0
  178. package/dist/adapters/postgres/storage.d.ts +49 -33
  179. package/dist/adapters/postgres/storage.d.ts.map +1 -1
  180. package/dist/adapters/postgres/storage.js +89 -605
  181. package/dist/adapters/postgres/storage.js.map +1 -1
  182. package/dist/adapters/postgres/workspace-store.d.ts +26 -0
  183. package/dist/adapters/postgres/workspace-store.d.ts.map +1 -0
  184. package/dist/adapters/postgres/workspace-store.js +94 -0
  185. package/dist/adapters/postgres/workspace-store.js.map +1 -0
  186. package/dist/adapters/qdrant/client.d.ts +8 -0
  187. package/dist/adapters/qdrant/client.d.ts.map +1 -0
  188. package/dist/adapters/qdrant/client.js +12 -0
  189. package/dist/adapters/qdrant/client.js.map +1 -0
  190. package/dist/adapters/qdrant/index.d.ts +4 -0
  191. package/dist/adapters/qdrant/index.d.ts.map +1 -0
  192. package/dist/adapters/qdrant/index.js +3 -0
  193. package/dist/adapters/qdrant/index.js.map +1 -0
  194. package/dist/adapters/qdrant/mapper.d.ts +16 -0
  195. package/dist/adapters/qdrant/mapper.d.ts.map +1 -0
  196. package/dist/adapters/qdrant/mapper.js +59 -0
  197. package/dist/adapters/qdrant/mapper.js.map +1 -0
  198. package/dist/adapters/qdrant/vector-store.d.ts +20 -0
  199. package/dist/adapters/qdrant/vector-store.d.ts.map +1 -0
  200. package/dist/adapters/qdrant/vector-store.js +144 -0
  201. package/dist/adapters/qdrant/vector-store.js.map +1 -0
  202. package/dist/adapters/tree-sitter/index.d.ts +4 -0
  203. package/dist/adapters/tree-sitter/index.d.ts.map +1 -0
  204. package/dist/adapters/tree-sitter/index.js +3 -0
  205. package/dist/adapters/tree-sitter/index.js.map +1 -0
  206. package/dist/adapters/tree-sitter/parser.d.ts +15 -0
  207. package/dist/adapters/tree-sitter/parser.d.ts.map +1 -0
  208. package/dist/adapters/tree-sitter/parser.js +186 -0
  209. package/dist/adapters/tree-sitter/parser.js.map +1 -0
  210. package/dist/adapters/tree-sitter/queries.d.ts +14 -0
  211. package/dist/adapters/tree-sitter/queries.d.ts.map +1 -0
  212. package/dist/adapters/tree-sitter/queries.js +14 -0
  213. package/dist/adapters/tree-sitter/queries.js.map +1 -0
  214. package/dist/adapters/voyage/embedding-provider.d.ts +25 -0
  215. package/dist/adapters/voyage/embedding-provider.d.ts.map +1 -0
  216. package/dist/adapters/voyage/embedding-provider.js +105 -0
  217. package/dist/adapters/voyage/embedding-provider.js.map +1 -0
  218. package/dist/adapters/voyage/index.d.ts +3 -0
  219. package/dist/adapters/voyage/index.d.ts.map +1 -0
  220. package/dist/adapters/voyage/index.js +2 -0
  221. package/dist/adapters/voyage/index.js.map +1 -0
  222. package/dist/cli/add/code.d.ts +3 -0
  223. package/dist/cli/add/code.d.ts.map +1 -0
  224. package/dist/cli/add/code.js +97 -0
  225. package/dist/cli/add/code.js.map +1 -0
  226. package/dist/cli/add/csv.d.ts +3 -0
  227. package/dist/cli/add/csv.d.ts.map +1 -0
  228. package/dist/cli/add/csv.js +26 -0
  229. package/dist/cli/add/csv.js.map +1 -0
  230. package/dist/cli/add/db.d.ts +3 -0
  231. package/dist/cli/add/db.d.ts.map +1 -0
  232. package/dist/cli/add/db.js +46 -0
  233. package/dist/cli/add/db.js.map +1 -0
  234. package/dist/cli/add/git.d.ts +3 -0
  235. package/dist/cli/add/git.d.ts.map +1 -0
  236. package/dist/cli/add/git.js +26 -0
  237. package/dist/cli/add/git.js.map +1 -0
  238. package/dist/cli/add/github.d.ts +3 -0
  239. package/dist/cli/add/github.d.ts.map +1 -0
  240. package/dist/cli/add/github.js +32 -0
  241. package/dist/cli/add/github.js.map +1 -0
  242. package/dist/cli/add/index.d.ts +3 -0
  243. package/dist/cli/add/index.d.ts.map +1 -0
  244. package/dist/cli/add/index.js +18 -0
  245. package/dist/cli/add/index.js.map +1 -0
  246. package/dist/cli/add/jira.d.ts +3 -0
  247. package/dist/cli/add/jira.d.ts.map +1 -0
  248. package/dist/cli/add/jira.js +45 -0
  249. package/dist/cli/add/jira.js.map +1 -0
  250. package/dist/cli/add/shared.d.ts +31 -0
  251. package/dist/cli/add/shared.d.ts.map +1 -0
  252. package/dist/cli/add/shared.js +102 -0
  253. package/dist/cli/add/shared.js.map +1 -0
  254. package/dist/cli/board-server.js +1 -1
  255. package/dist/cli/board-server.js.map +1 -1
  256. package/dist/cli/board.d.ts.map +1 -1
  257. package/dist/cli/board.js +11 -12
  258. package/dist/cli/board.js.map +1 -1
  259. package/dist/cli/code.d.ts +3 -0
  260. package/dist/cli/code.d.ts.map +1 -0
  261. package/dist/cli/code.js +467 -0
  262. package/dist/cli/code.js.map +1 -0
  263. package/dist/cli/embed.d.ts.map +1 -1
  264. package/dist/cli/embed.js +21 -26
  265. package/dist/cli/embed.js.map +1 -1
  266. package/dist/cli/graph.d.ts.map +1 -1
  267. package/dist/cli/graph.js +37 -55
  268. package/dist/cli/graph.js.map +1 -1
  269. package/dist/cli/index.js +30 -25
  270. package/dist/cli/index.js.map +1 -1
  271. package/dist/cli/init/cleanup.d.ts +11 -0
  272. package/dist/cli/init/cleanup.d.ts.map +1 -0
  273. package/dist/cli/init/cleanup.js +39 -0
  274. package/dist/cli/init/cleanup.js.map +1 -0
  275. package/dist/cli/init/generators.js +27 -27
  276. package/dist/cli/init/generators.js.map +1 -1
  277. package/dist/cli/init/index.d.ts +0 -10
  278. package/dist/cli/init/index.d.ts.map +1 -1
  279. package/dist/cli/init/index.js +386 -351
  280. package/dist/cli/init/index.js.map +1 -1
  281. package/dist/cli/init/presenter.d.ts +30 -0
  282. package/dist/cli/init/presenter.d.ts.map +1 -0
  283. package/dist/cli/init/presenter.js +152 -0
  284. package/dist/cli/init/presenter.js.map +1 -0
  285. package/dist/cli/init/prompts.d.ts +28 -0
  286. package/dist/cli/init/prompts.d.ts.map +1 -0
  287. package/dist/cli/init/prompts.js +110 -0
  288. package/dist/cli/init/prompts.js.map +1 -0
  289. package/dist/cli/init/setup-csv.js +2 -2
  290. package/dist/cli/init/setup-csv.js.map +1 -1
  291. package/dist/cli/init/setup-db.d.ts.map +1 -1
  292. package/dist/cli/init/setup-db.js +17 -14
  293. package/dist/cli/init/setup-db.js.map +1 -1
  294. package/dist/cli/init/setup-git.js +16 -16
  295. package/dist/cli/init/setup-git.js.map +1 -1
  296. package/dist/cli/init/setup-github.d.ts.map +1 -1
  297. package/dist/cli/init/setup-github.js +7 -5
  298. package/dist/cli/init/setup-github.js.map +1 -1
  299. package/dist/cli/init/setup-jira.d.ts.map +1 -1
  300. package/dist/cli/init/setup-jira.js +11 -9
  301. package/dist/cli/init/setup-jira.js.map +1 -1
  302. package/dist/cli/init/types.d.ts +4 -0
  303. package/dist/cli/init/types.d.ts.map +1 -1
  304. package/dist/cli/init/types.js +4 -4
  305. package/dist/cli/init/types.js.map +1 -1
  306. package/dist/cli/mcp-install.d.ts +1 -1
  307. package/dist/cli/mcp-install.d.ts.map +1 -1
  308. package/dist/cli/mcp-install.js +10 -24
  309. package/dist/cli/mcp-install.js.map +1 -1
  310. package/dist/cli/migrate-to-hub-impl.d.ts +51 -0
  311. package/dist/cli/migrate-to-hub-impl.d.ts.map +1 -0
  312. package/dist/cli/migrate-to-hub-impl.js +171 -0
  313. package/dist/cli/migrate-to-hub-impl.js.map +1 -0
  314. package/dist/cli/migrate-to-hub.d.ts +3 -0
  315. package/dist/cli/migrate-to-hub.d.ts.map +1 -0
  316. package/dist/cli/migrate-to-hub.js +90 -0
  317. package/dist/cli/migrate-to-hub.js.map +1 -0
  318. package/dist/cli/push.d.ts.map +1 -1
  319. package/dist/cli/push.js +62 -65
  320. package/dist/cli/push.js.map +1 -1
  321. package/dist/cli/sources.d.ts +0 -7
  322. package/dist/cli/sources.d.ts.map +1 -1
  323. package/dist/cli/sources.js +47 -112
  324. package/dist/cli/sources.js.map +1 -1
  325. package/dist/cli/status.d.ts +0 -3
  326. package/dist/cli/status.d.ts.map +1 -1
  327. package/dist/cli/status.js +95 -70
  328. package/dist/cli/status.js.map +1 -1
  329. package/dist/cli/sync.d.ts +0 -10
  330. package/dist/cli/sync.d.ts.map +1 -1
  331. package/dist/cli/sync.js +186 -314
  332. package/dist/cli/sync.js.map +1 -1
  333. package/dist/cli/workspace/add.d.ts +3 -0
  334. package/dist/cli/workspace/add.d.ts.map +1 -0
  335. package/dist/cli/workspace/add.js +38 -0
  336. package/dist/cli/workspace/add.js.map +1 -0
  337. package/dist/cli/workspace/index.d.ts +3 -0
  338. package/dist/cli/workspace/index.d.ts.map +1 -0
  339. package/dist/cli/workspace/index.js +16 -0
  340. package/dist/cli/workspace/index.js.map +1 -0
  341. package/dist/cli/workspace/info.d.ts +3 -0
  342. package/dist/cli/workspace/info.d.ts.map +1 -0
  343. package/dist/cli/workspace/info.js +69 -0
  344. package/dist/cli/workspace/info.js.map +1 -0
  345. package/dist/cli/workspace/list.d.ts +3 -0
  346. package/dist/cli/workspace/list.d.ts.map +1 -0
  347. package/dist/cli/workspace/list.js +36 -0
  348. package/dist/cli/workspace/list.js.map +1 -0
  349. package/dist/cli/workspace/remove.d.ts +3 -0
  350. package/dist/cli/workspace/remove.d.ts.map +1 -0
  351. package/dist/cli/workspace/remove.js +43 -0
  352. package/dist/cli/workspace/remove.js.map +1 -0
  353. package/dist/cli/workspace/shared.d.ts +7 -0
  354. package/dist/cli/workspace/shared.d.ts.map +1 -0
  355. package/dist/cli/workspace/shared.js +17 -0
  356. package/dist/cli/workspace/shared.js.map +1 -0
  357. package/dist/cli/workspace/use.d.ts +3 -0
  358. package/dist/cli/workspace/use.d.ts.map +1 -0
  359. package/dist/cli/workspace/use.js +27 -0
  360. package/dist/cli/workspace/use.js.map +1 -0
  361. package/dist/code-intel/chunker.d.ts +15 -0
  362. package/dist/code-intel/chunker.d.ts.map +1 -0
  363. package/dist/code-intel/chunker.js +39 -0
  364. package/dist/code-intel/chunker.js.map +1 -0
  365. package/dist/code-intel/file-discovery.d.ts +19 -0
  366. package/dist/code-intel/file-discovery.d.ts.map +1 -0
  367. package/dist/code-intel/file-discovery.js +80 -0
  368. package/dist/code-intel/file-discovery.js.map +1 -0
  369. package/dist/code-intel/hash.d.ts +2 -0
  370. package/dist/code-intel/hash.d.ts.map +1 -0
  371. package/dist/code-intel/hash.js +5 -0
  372. package/dist/code-intel/hash.js.map +1 -0
  373. package/dist/code-intel/index.d.ts +17 -0
  374. package/dist/code-intel/index.d.ts.map +1 -0
  375. package/dist/code-intel/index.js +11 -0
  376. package/dist/code-intel/index.js.map +1 -0
  377. package/dist/code-intel/indexer.d.ts +43 -0
  378. package/dist/code-intel/indexer.d.ts.map +1 -0
  379. package/dist/code-intel/indexer.js +234 -0
  380. package/dist/code-intel/indexer.js.map +1 -0
  381. package/dist/code-intel/job-lock.d.ts +7 -0
  382. package/dist/code-intel/job-lock.d.ts.map +1 -0
  383. package/dist/code-intel/job-lock.js +18 -0
  384. package/dist/code-intel/job-lock.js.map +1 -0
  385. package/dist/code-intel/layer-detector.d.ts +9 -0
  386. package/dist/code-intel/layer-detector.d.ts.map +1 -0
  387. package/dist/code-intel/layer-detector.js +31 -0
  388. package/dist/code-intel/layer-detector.js.map +1 -0
  389. package/dist/code-intel/lsp-resolver.d.ts +24 -0
  390. package/dist/code-intel/lsp-resolver.d.ts.map +1 -0
  391. package/dist/code-intel/lsp-resolver.js +125 -0
  392. package/dist/code-intel/lsp-resolver.js.map +1 -0
  393. package/dist/code-intel/ranker.d.ts +42 -0
  394. package/dist/code-intel/ranker.d.ts.map +1 -0
  395. package/dist/code-intel/ranker.js +123 -0
  396. package/dist/code-intel/ranker.js.map +1 -0
  397. package/dist/code-intel/resolver.d.ts +14 -0
  398. package/dist/code-intel/resolver.d.ts.map +1 -0
  399. package/dist/code-intel/resolver.js +59 -0
  400. package/dist/code-intel/resolver.js.map +1 -0
  401. package/dist/code-intel/tsconfig-paths.d.ts +11 -0
  402. package/dist/code-intel/tsconfig-paths.d.ts.map +1 -0
  403. package/dist/code-intel/tsconfig-paths.js +67 -0
  404. package/dist/code-intel/tsconfig-paths.js.map +1 -0
  405. package/dist/code-intel/watcher.d.ts +27 -0
  406. package/dist/code-intel/watcher.d.ts.map +1 -0
  407. package/dist/code-intel/watcher.js +93 -0
  408. package/dist/code-intel/watcher.js.map +1 -0
  409. package/dist/core/board/board-column.value-object.js +1 -1
  410. package/dist/core/board/board-column.value-object.js.map +1 -1
  411. package/dist/core/board/pipeline.value-object.js +1 -1
  412. package/dist/core/board/pipeline.value-object.js.map +1 -1
  413. package/dist/core/board/skill-execution.entity.js +1 -1
  414. package/dist/core/board/skill-execution.entity.js.map +1 -1
  415. package/dist/core/board/task-title.value-object.js +1 -1
  416. package/dist/core/board/task-title.value-object.js.map +1 -1
  417. package/dist/core/ports/chat-llm.d.ts +36 -0
  418. package/dist/core/ports/chat-llm.d.ts.map +1 -0
  419. package/dist/core/ports/chat-llm.js +2 -0
  420. package/dist/core/ports/chat-llm.js.map +1 -0
  421. package/dist/core/ports/code-embedding.d.ts +42 -0
  422. package/dist/core/ports/code-embedding.d.ts.map +1 -0
  423. package/dist/core/ports/code-embedding.js +2 -0
  424. package/dist/core/ports/code-embedding.js.map +1 -0
  425. package/dist/core/ports/code-graph.d.ts +56 -0
  426. package/dist/core/ports/code-graph.d.ts.map +1 -0
  427. package/dist/core/ports/code-graph.js +2 -0
  428. package/dist/core/ports/code-graph.js.map +1 -0
  429. package/dist/core/ports/code-meta.d.ts +37 -0
  430. package/dist/core/ports/code-meta.d.ts.map +1 -0
  431. package/dist/core/ports/code-meta.js +2 -0
  432. package/dist/core/ports/code-meta.js.map +1 -0
  433. package/dist/core/ports/code-parser.d.ts +13 -0
  434. package/dist/core/ports/code-parser.d.ts.map +1 -0
  435. package/dist/core/ports/code-parser.js +2 -0
  436. package/dist/core/ports/code-parser.js.map +1 -0
  437. package/dist/core/ports/code-vector-store.d.ts +42 -0
  438. package/dist/core/ports/code-vector-store.d.ts.map +1 -0
  439. package/dist/core/ports/code-vector-store.js +2 -0
  440. package/dist/core/ports/code-vector-store.js.map +1 -0
  441. package/dist/core/ports/docker-control.d.ts +44 -0
  442. package/dist/core/ports/docker-control.d.ts.map +1 -0
  443. package/dist/core/ports/docker-control.js +8 -0
  444. package/dist/core/ports/docker-control.js.map +1 -0
  445. package/dist/core/ports/hub-readiness-probe.d.ts +22 -0
  446. package/dist/core/ports/hub-readiness-probe.d.ts.map +1 -0
  447. package/dist/core/ports/hub-readiness-probe.js +2 -0
  448. package/dist/core/ports/hub-readiness-probe.js.map +1 -0
  449. package/dist/core/ports/index.d.ts +10 -0
  450. package/dist/core/ports/index.d.ts.map +1 -1
  451. package/dist/core/ports/lsp-client.d.ts +22 -0
  452. package/dist/core/ports/lsp-client.d.ts.map +1 -0
  453. package/dist/core/ports/lsp-client.js +2 -0
  454. package/dist/core/ports/lsp-client.js.map +1 -0
  455. package/dist/core/ports/ollama-control.d.ts +61 -0
  456. package/dist/core/ports/ollama-control.d.ts.map +1 -0
  457. package/dist/core/ports/ollama-control.js +7 -0
  458. package/dist/core/ports/ollama-control.js.map +1 -0
  459. package/dist/core/ports/platform-probe.d.ts +47 -0
  460. package/dist/core/ports/platform-probe.d.ts.map +1 -0
  461. package/dist/core/ports/platform-probe.js +8 -0
  462. package/dist/core/ports/platform-probe.js.map +1 -0
  463. package/dist/core/ports/storage.d.ts +62 -29
  464. package/dist/core/ports/storage.d.ts.map +1 -1
  465. package/dist/core/ports/workspace-store.d.ts +52 -0
  466. package/dist/core/ports/workspace-store.d.ts.map +1 -0
  467. package/dist/core/ports/workspace-store.js +2 -0
  468. package/dist/core/ports/workspace-store.js.map +1 -0
  469. package/dist/core/types/code.d.ts +153 -0
  470. package/dist/core/types/code.d.ts.map +1 -0
  471. package/dist/core/types/code.js +2 -0
  472. package/dist/core/types/code.js.map +1 -0
  473. package/dist/core/types/config.d.ts +1 -1
  474. package/dist/core/types/config.d.ts.map +1 -1
  475. package/dist/core/types/config.js +8 -1
  476. package/dist/core/types/config.js.map +1 -1
  477. package/dist/core/types/index.d.ts +3 -0
  478. package/dist/core/types/index.d.ts.map +1 -1
  479. package/dist/core/types/init.d.ts +29 -0
  480. package/dist/core/types/init.d.ts.map +1 -0
  481. package/dist/core/types/init.js +2 -0
  482. package/dist/core/types/init.js.map +1 -0
  483. package/dist/core/types/workspace.d.ts +78 -0
  484. package/dist/core/types/workspace.d.ts.map +1 -0
  485. package/dist/core/types/workspace.js +2 -0
  486. package/dist/core/types/workspace.js.map +1 -0
  487. package/dist/mcp/helpers.d.ts +131 -19
  488. package/dist/mcp/helpers.d.ts.map +1 -1
  489. package/dist/mcp/helpers.js +271 -141
  490. package/dist/mcp/helpers.js.map +1 -1
  491. package/dist/mcp/server.d.ts.map +1 -1
  492. package/dist/mcp/server.js +49 -5
  493. package/dist/mcp/server.js.map +1 -1
  494. package/dist/mcp/tools/code-graph.d.ts +3 -0
  495. package/dist/mcp/tools/code-graph.d.ts.map +1 -0
  496. package/dist/mcp/tools/code-graph.js +330 -0
  497. package/dist/mcp/tools/code-graph.js.map +1 -0
  498. package/dist/mcp/tools/code-hybrid.d.ts +3 -0
  499. package/dist/mcp/tools/code-hybrid.d.ts.map +1 -0
  500. package/dist/mcp/tools/code-hybrid.js +142 -0
  501. package/dist/mcp/tools/code-hybrid.js.map +1 -0
  502. package/dist/mcp/tools/code-search.d.ts +3 -0
  503. package/dist/mcp/tools/code-search.d.ts.map +1 -0
  504. package/dist/mcp/tools/code-search.js +95 -0
  505. package/dist/mcp/tools/code-search.js.map +1 -0
  506. package/dist/mcp/tools/database.d.ts.map +1 -1
  507. package/dist/mcp/tools/database.js +86 -97
  508. package/dist/mcp/tools/database.js.map +1 -1
  509. package/dist/mcp/tools/estimate.d.ts.map +1 -1
  510. package/dist/mcp/tools/estimate.js +106 -82
  511. package/dist/mcp/tools/estimate.js.map +1 -1
  512. package/dist/mcp/tools/graph.d.ts.map +1 -1
  513. package/dist/mcp/tools/graph.js +142 -157
  514. package/dist/mcp/tools/graph.js.map +1 -1
  515. package/dist/mcp/tools/issue.d.ts.map +1 -1
  516. package/dist/mcp/tools/issue.js +172 -172
  517. package/dist/mcp/tools/issue.js.map +1 -1
  518. package/dist/mcp/tools/push.d.ts.map +1 -1
  519. package/dist/mcp/tools/push.js +70 -100
  520. package/dist/mcp/tools/push.js.map +1 -1
  521. package/dist/mcp/tools/query.d.ts.map +1 -1
  522. package/dist/mcp/tools/query.js +187 -246
  523. package/dist/mcp/tools/query.js.map +1 -1
  524. package/dist/mcp/tools/search.d.ts.map +1 -1
  525. package/dist/mcp/tools/search.js +25 -22
  526. package/dist/mcp/tools/search.js.map +1 -1
  527. package/dist/mcp/tools/workspace.d.ts.map +1 -1
  528. package/dist/mcp/tools/workspace.js +120 -73
  529. package/dist/mcp/tools/workspace.js.map +1 -1
  530. package/dist/use-cases/build-graph.d.ts +1 -1
  531. package/dist/use-cases/build-graph.d.ts.map +1 -1
  532. package/dist/use-cases/build-graph.js +63 -50
  533. package/dist/use-cases/build-graph.js.map +1 -1
  534. package/dist/use-cases/code-search.d.ts +60 -0
  535. package/dist/use-cases/code-search.d.ts.map +1 -0
  536. package/dist/use-cases/code-search.js +163 -0
  537. package/dist/use-cases/code-search.js.map +1 -0
  538. package/dist/use-cases/embed.d.ts +1 -1
  539. package/dist/use-cases/embed.d.ts.map +1 -1
  540. package/dist/use-cases/embed.js +5 -5
  541. package/dist/use-cases/embed.js.map +1 -1
  542. package/dist/use-cases/index-code.d.ts +24 -0
  543. package/dist/use-cases/index-code.d.ts.map +1 -0
  544. package/dist/use-cases/index-code.js +43 -0
  545. package/dist/use-cases/index-code.js.map +1 -0
  546. package/dist/use-cases/init/bootstrap-hub.d.ts +55 -0
  547. package/dist/use-cases/init/bootstrap-hub.d.ts.map +1 -0
  548. package/dist/use-cases/init/bootstrap-hub.js +116 -0
  549. package/dist/use-cases/init/bootstrap-hub.js.map +1 -0
  550. package/dist/use-cases/init/check-dims-conflict.d.ts +33 -0
  551. package/dist/use-cases/init/check-dims-conflict.d.ts.map +1 -0
  552. package/dist/use-cases/init/check-dims-conflict.js +39 -0
  553. package/dist/use-cases/init/check-dims-conflict.js.map +1 -0
  554. package/dist/use-cases/init/check-hub-exists.d.ts +23 -0
  555. package/dist/use-cases/init/check-hub-exists.d.ts.map +1 -0
  556. package/dist/use-cases/init/check-hub-exists.js +39 -0
  557. package/dist/use-cases/init/check-hub-exists.js.map +1 -0
  558. package/dist/use-cases/init/check-ports.d.ts +18 -0
  559. package/dist/use-cases/init/check-ports.d.ts.map +1 -0
  560. package/dist/use-cases/init/check-ports.js +25 -0
  561. package/dist/use-cases/init/check-ports.js.map +1 -0
  562. package/dist/use-cases/init/check-versions.d.ts +37 -0
  563. package/dist/use-cases/init/check-versions.d.ts.map +1 -0
  564. package/dist/use-cases/init/check-versions.js +50 -0
  565. package/dist/use-cases/init/check-versions.js.map +1 -0
  566. package/dist/use-cases/init/clear-stale-active.d.ts +20 -0
  567. package/dist/use-cases/init/clear-stale-active.d.ts.map +1 -0
  568. package/dist/use-cases/init/clear-stale-active.js +26 -0
  569. package/dist/use-cases/init/clear-stale-active.js.map +1 -0
  570. package/dist/use-cases/init/ensure-embedding-model.d.ts +20 -0
  571. package/dist/use-cases/init/ensure-embedding-model.d.ts.map +1 -0
  572. package/dist/use-cases/init/ensure-embedding-model.js +24 -0
  573. package/dist/use-cases/init/ensure-embedding-model.js.map +1 -0
  574. package/dist/use-cases/init/ensure-ollama-running.d.ts +19 -0
  575. package/dist/use-cases/init/ensure-ollama-running.d.ts.map +1 -0
  576. package/dist/use-cases/init/ensure-ollama-running.js +24 -0
  577. package/dist/use-cases/init/ensure-ollama-running.js.map +1 -0
  578. package/dist/use-cases/init/health-check-existing-llm.d.ts +25 -0
  579. package/dist/use-cases/init/health-check-existing-llm.d.ts.map +1 -0
  580. package/dist/use-cases/init/health-check-existing-llm.js +42 -0
  581. package/dist/use-cases/init/health-check-existing-llm.js.map +1 -0
  582. package/dist/use-cases/init/install-ollama.d.ts +27 -0
  583. package/dist/use-cases/init/install-ollama.d.ts.map +1 -0
  584. package/dist/use-cases/init/install-ollama.js +51 -0
  585. package/dist/use-cases/init/install-ollama.js.map +1 -0
  586. package/dist/use-cases/init/probe-llm.d.ts +32 -0
  587. package/dist/use-cases/init/probe-llm.d.ts.map +1 -0
  588. package/dist/use-cases/init/probe-llm.js +42 -0
  589. package/dist/use-cases/init/probe-llm.js.map +1 -0
  590. package/dist/use-cases/init/resolve-hub-ports.d.ts +46 -0
  591. package/dist/use-cases/init/resolve-hub-ports.d.ts.map +1 -0
  592. package/dist/use-cases/init/resolve-hub-ports.js +77 -0
  593. package/dist/use-cases/init/resolve-hub-ports.js.map +1 -0
  594. package/dist/use-cases/init/validate-workspace-name.d.ts +26 -0
  595. package/dist/use-cases/init/validate-workspace-name.d.ts.map +1 -0
  596. package/dist/use-cases/init/validate-workspace-name.js +39 -0
  597. package/dist/use-cases/init/validate-workspace-name.js.map +1 -0
  598. package/dist/use-cases/init/wait-for-docker.d.ts +16 -0
  599. package/dist/use-cases/init/wait-for-docker.d.ts.map +1 -0
  600. package/dist/use-cases/init/wait-for-docker.js +16 -0
  601. package/dist/use-cases/init/wait-for-docker.js.map +1 -0
  602. package/dist/use-cases/init/write-config-env.d.ts +32 -0
  603. package/dist/use-cases/init/write-config-env.d.ts.map +1 -0
  604. package/dist/use-cases/init/write-config-env.js +118 -0
  605. package/dist/use-cases/init/write-config-env.js.map +1 -0
  606. package/dist/use-cases/move-task.js +2 -2
  607. package/dist/use-cases/move-task.js.map +1 -1
  608. package/dist/use-cases/pull-db.d.ts +1 -1
  609. package/dist/use-cases/pull-db.d.ts.map +1 -1
  610. package/dist/use-cases/pull-db.js +3 -3
  611. package/dist/use-cases/pull-db.js.map +1 -1
  612. package/dist/use-cases/pull-git.d.ts +1 -1
  613. package/dist/use-cases/pull-git.d.ts.map +1 -1
  614. package/dist/use-cases/pull-git.js +5 -5
  615. package/dist/use-cases/pull-git.js.map +1 -1
  616. package/dist/use-cases/pull-github.d.ts +1 -1
  617. package/dist/use-cases/pull-github.d.ts.map +1 -1
  618. package/dist/use-cases/pull-github.js +6 -6
  619. package/dist/use-cases/pull-github.js.map +1 -1
  620. package/dist/use-cases/pull.d.ts +1 -1
  621. package/dist/use-cases/pull.d.ts.map +1 -1
  622. package/dist/use-cases/pull.js +6 -6
  623. package/dist/use-cases/pull.js.map +1 -1
  624. package/dist/use-cases/push.d.ts +2 -2
  625. package/dist/use-cases/push.d.ts.map +1 -1
  626. package/dist/use-cases/push.js +8 -8
  627. package/dist/use-cases/push.js.map +1 -1
  628. package/dist/use-cases/register-code-project.d.ts +29 -0
  629. package/dist/use-cases/register-code-project.d.ts.map +1 -0
  630. package/dist/use-cases/register-code-project.js +27 -0
  631. package/dist/use-cases/register-code-project.js.map +1 -0
  632. package/dist/use-cases/unregister-code-project.d.ts +11 -0
  633. package/dist/use-cases/unregister-code-project.d.ts.map +1 -0
  634. package/dist/use-cases/unregister-code-project.js +19 -0
  635. package/dist/use-cases/unregister-code-project.js.map +1 -0
  636. package/dist/use-cases/watch-code.d.ts +33 -0
  637. package/dist/use-cases/watch-code.d.ts.map +1 -0
  638. package/dist/use-cases/watch-code.js +52 -0
  639. package/dist/use-cases/watch-code.js.map +1 -0
  640. package/dist/workspace/active-workspace.d.ts +26 -0
  641. package/dist/workspace/active-workspace.d.ts.map +1 -0
  642. package/dist/workspace/active-workspace.js +69 -0
  643. package/dist/workspace/active-workspace.js.map +1 -0
  644. package/dist/workspace/adf.d.ts.map +1 -1
  645. package/dist/workspace/adf.js +20 -19
  646. package/dist/workspace/adf.js.map +1 -1
  647. package/dist/workspace/config.d.ts +11 -0
  648. package/dist/workspace/config.d.ts.map +1 -1
  649. package/dist/workspace/config.js +76 -22
  650. package/dist/workspace/config.js.map +1 -1
  651. package/dist/workspace/hub-config.d.ts +74 -0
  652. package/dist/workspace/hub-config.d.ts.map +1 -0
  653. package/dist/workspace/hub-config.js +164 -0
  654. package/dist/workspace/hub-config.js.map +1 -0
  655. package/dist/workspace/registry.d.ts +23 -3
  656. package/dist/workspace/registry.d.ts.map +1 -1
  657. package/dist/workspace/registry.js +32 -14
  658. package/dist/workspace/registry.js.map +1 -1
  659. package/dist/workspace/resolver.d.ts +20 -18
  660. package/dist/workspace/resolver.d.ts.map +1 -1
  661. package/dist/workspace/resolver.js +100 -59
  662. package/dist/workspace/resolver.js.map +1 -1
  663. package/package.json +13 -4
  664. package/templates/code-docker-compose.yml +51 -0
  665. package/templates/env.example +16 -0
  666. package/templates/hub-config.env +65 -0
  667. package/templates/hub-docker-compose.yml +88 -0
  668. package/templates/migrate-to-hub.sql +90 -0
  669. package/dist/cli/workspaces.d.ts +0 -3
  670. package/dist/cli/workspaces.d.ts.map +0 -1
  671. package/dist/cli/workspaces.js +0 -34
  672. package/dist/cli/workspaces.js.map +0 -1
@@ -1,83 +1,124 @@
1
- import { existsSync } from 'node:fs';
1
+ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join, dirname, resolve } from 'node:path';
3
- import { listRegisteredWorkspaces } from './registry.js';
3
+ import { getActiveWorkspaceId } from './active-workspace.js';
4
4
  const WORKSPACE_MARKER = '.argustack';
5
+ const LEGACY_CONFIG = 'config.json';
5
6
  /**
6
- * Find workspace root by walking up from startDir looking for .argustack/
7
- * Returns the directory that contains .argustack/ (the workspace root), or null.
7
+ * Resolve which workspace a command should operate on.
8
8
  *
9
9
  * Resolution order:
10
- * 1. Explicit startDir argument
11
- * 2. ARGUSTACK_WORKSPACE env var (set by `argustack mcp install`)
12
- * 3. Walk up from process.cwd()
10
+ * 1. `explicit` argument (e.g. `--workspace <name>` flag value).
11
+ * 2. `ARGUSTACK_WORKSPACE_ID` env var.
12
+ * 3. `~/.argustack/active-workspace.json#activeWorkspaceId`.
13
+ * 4. Legacy `<cwd>/../.../.argustack/config.json#workspaceId` walking up.
14
+ * 5. If exactly one workspace exists in the hub — auto-pick it.
15
+ * 6. Otherwise: throw with the available list.
16
+ *
17
+ * The returned id is guaranteed to be a non-empty string and to exist in
18
+ * the hub `workspaces` table at the moment of resolution.
13
19
  */
14
- export function findWorkspaceRoot(startDir) {
15
- const envWorkspace = process.env['ARGUSTACK_WORKSPACE'];
16
- const from = startDir ?? envWorkspace ?? process.cwd();
17
- let dir = resolve(from);
18
- while (true) {
19
- const marker = join(dir, WORKSPACE_MARKER);
20
- if (existsSync(marker) && existsSync(join(dir, WORKSPACE_MARKER, 'config.json'))) {
21
- return dir;
20
+ export async function requireWorkspaceId(explicit, hubStore) {
21
+ const fromExplicit = await resolveExplicit(explicit, hubStore);
22
+ if (fromExplicit !== null && fromExplicit !== '') {
23
+ return fromExplicit;
24
+ }
25
+ const envId = process.env['ARGUSTACK_WORKSPACE_ID'];
26
+ if (envId !== undefined && envId.trim().length > 0) {
27
+ const found = await hubStore.getById(envId.trim());
28
+ if (found != null) {
29
+ return found.id;
22
30
  }
23
- const parent = dirname(dir);
24
- if (parent === dir) {
25
- break;
31
+ throw new Error(`ARGUSTACK_WORKSPACE_ID="${envId}" not found in hub. Run "argustack workspace list" to see registered workspaces.`);
32
+ }
33
+ const activeId = getActiveWorkspaceId();
34
+ if (activeId !== null && activeId !== '') {
35
+ const found = await hubStore.getById(activeId);
36
+ if (found != null) {
37
+ return found.id;
26
38
  }
27
- dir = parent;
28
39
  }
29
- return findWorkspaceFromRegistry(resolve(from));
40
+ const legacyId = findLegacyWorkspaceId(process.cwd());
41
+ if (legacyId !== null && legacyId !== '') {
42
+ const found = await hubStore.getById(legacyId);
43
+ if (found != null) {
44
+ return found.id;
45
+ }
46
+ }
47
+ const all = await hubStore.list();
48
+ if (all.length === 1) {
49
+ const onlyEntry = all[0];
50
+ if (onlyEntry != null) {
51
+ return onlyEntry.id;
52
+ }
53
+ }
54
+ if (all.length === 0) {
55
+ throw new Error('No workspaces registered. Run "argustack workspace add <name>" to create one.');
56
+ }
57
+ const names = all.map((w) => w.name).join(', ');
58
+ throw new Error(`No active workspace. Pass --workspace <name>, or run "argustack workspace use <name>". ` +
59
+ `Available: ${names}.`);
30
60
  }
31
- /**
32
- * Try to find a workspace from the global registry (~/.argustack/workspaces.json).
33
- * - If exactly one workspace registered → return it
34
- * - If multiple → match cwd (exact or child directory)
35
- * - If no match → return null
36
- */
37
- export function findWorkspaceFromRegistry(cwd) {
38
- const workspaces = listRegisteredWorkspaces();
39
- if (workspaces.length === 0) {
61
+ async function resolveExplicit(explicit, hubStore) {
62
+ if (explicit === undefined || explicit.trim().length === 0) {
40
63
  return null;
41
64
  }
42
- if (workspaces.length === 1) {
43
- const first = workspaces[0];
44
- return first ? first.path : null;
65
+ const trimmed = explicit.trim();
66
+ const byId = await hubStore.getById(trimmed);
67
+ if (byId != null) {
68
+ return byId.id;
45
69
  }
46
- const resolvedCwd = resolve(cwd);
47
- const matches = workspaces.filter((w) => {
48
- const resolvedPath = resolve(w.path);
49
- return resolvedCwd === resolvedPath || resolvedCwd.startsWith(resolvedPath + '/');
50
- });
51
- if (matches.length === 0) {
52
- return null;
70
+ const byName = await hubStore.getByName(trimmed);
71
+ if (byName != null) {
72
+ return byName.id;
53
73
  }
54
- matches.sort((a, b) => b.path.length - a.path.length);
55
- const deepest = matches[0];
56
- return deepest ? deepest.path : null;
74
+ throw new Error(`Workspace "${trimmed}" not found. Run "argustack workspace list" to see registered workspaces.`);
57
75
  }
58
76
  /**
59
- * Require workspace throws user-friendly error if not found.
60
- * Includes available workspace names from registry in the error message.
77
+ * Walk up from `startDir` looking for `.argustack/config.json#workspaceId`.
78
+ * Pre-hub workspaces stored the id there; we keep reading it during the
79
+ * transition so old per-folder workflows resolve to the hub-side row.
61
80
  */
62
- export function requireWorkspace(startDir) {
63
- const root = findWorkspaceRoot(startDir);
64
- if (!root) {
65
- const workspaces = listRegisteredWorkspaces();
66
- if (workspaces.length > 0) {
67
- const names = workspaces.map((w) => w.name).join(', ');
68
- throw new Error('Not inside an Argustack workspace.\n' +
69
- `Available workspaces: ${names}\n` +
70
- 'Use "argustack sync" from inside a workspace directory.');
81
+ export function findLegacyWorkspaceId(startDir) {
82
+ let dir = resolve(startDir);
83
+ while (true) {
84
+ const cfg = join(dir, WORKSPACE_MARKER, LEGACY_CONFIG);
85
+ if (existsSync(cfg)) {
86
+ try {
87
+ const parsed = JSON.parse(readFileSync(cfg, 'utf-8'));
88
+ if (typeof parsed.workspaceId === 'string' && parsed.workspaceId.length > 0) {
89
+ return parsed.workspaceId;
90
+ }
91
+ if (typeof parsed.name === 'string' && parsed.name.length > 0) {
92
+ return parsed.name;
93
+ }
94
+ }
95
+ catch {
96
+ /* malformed legacy config — skip */
97
+ }
71
98
  }
72
- throw new Error('Not inside an Argustack workspace.\n' +
73
- 'Run "argustack init" to create one.');
99
+ const parent = dirname(dir);
100
+ if (parent === dir) {
101
+ return null;
102
+ }
103
+ dir = parent;
74
104
  }
75
- return root;
76
105
  }
77
106
  /**
78
- * Check if a directory is already a workspace.
107
+ * Walk up from `startDir` looking for a legacy `.argustack/` directory.
108
+ * Used by `argustack migrate-to-hub` to find source workspaces, NOT by
109
+ * normal command resolution.
79
110
  */
80
- export function isWorkspace(dir) {
81
- return existsSync(join(resolve(dir), WORKSPACE_MARKER));
111
+ export function findLegacyWorkspaceRoot(startDir) {
112
+ let dir = resolve(startDir ?? process.cwd());
113
+ while (true) {
114
+ if (existsSync(join(dir, WORKSPACE_MARKER, LEGACY_CONFIG))) {
115
+ return dir;
116
+ }
117
+ const parent = dirname(dir);
118
+ if (parent === dir) {
119
+ return null;
120
+ }
121
+ dir = parent;
122
+ }
82
123
  }
83
124
  //# sourceMappingURL=resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/workspace/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/workspace/resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "argustack",
3
- "version": "0.1.34",
3
+ "version": "0.3.1",
4
4
  "description": "Project analysis platform — Jira + Git + DB",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,7 +17,9 @@
17
17
  "start": "node dist/cli/index.js",
18
18
  "lint": "eslint src/ tests/",
19
19
  "lint:fix": "eslint src/ tests/ --fix",
20
- "typecheck": "tsc --noEmit",
20
+ "typecheck": "tsc -p tsconfig.test.json --noEmit",
21
+ "typecheck:src": "tsc --noEmit",
22
+ "type-check": "npm run typecheck",
21
23
  "test": "vitest run",
22
24
  "test:watch": "vitest",
23
25
  "test:coverage": "vitest run --coverage",
@@ -54,7 +56,7 @@
54
56
  ],
55
57
  "repository": {
56
58
  "type": "git",
57
- "url": "https://github.com/InfoCodeStreamly/argustack"
59
+ "url": "https://github.com/CodeStreamly/argustack"
58
60
  },
59
61
  "license": "MIT",
60
62
  "engines": {
@@ -64,19 +66,26 @@
64
66
  "@hello-pangea/dnd": "^18.0.1",
65
67
  "@inquirer/prompts": "^8.3.0",
66
68
  "@modelcontextprotocol/sdk": "^1.27.1",
69
+ "@qdrant/js-client-rest": "^1.18.0",
67
70
  "chalk": "^5.4.1",
71
+ "chokidar": "^5.0.0",
68
72
  "commander": "^14.0.3",
69
73
  "csv-parse": "^6.2.1",
70
74
  "dotenv": "^17.3.1",
71
75
  "es-git": "^0.6.0",
76
+ "ignore": "^7.0.5",
72
77
  "jira.js": "^5.3.1",
73
78
  "knex": "^3.1.0",
74
79
  "mysql2": "^3.20.0",
80
+ "neo4j-driver": "^6.0.1",
75
81
  "octokit": "^5.0.5",
76
82
  "ora": "^9.3.0",
77
83
  "pg": "^8.13.1",
78
84
  "react": "^19.2.4",
79
- "react-dom": "^19.2.4"
85
+ "react-dom": "^19.2.4",
86
+ "tree-sitter": "^0.21.1",
87
+ "tree-sitter-typescript": "^0.23.2",
88
+ "vscode-jsonrpc": "^8.2.1"
80
89
  },
81
90
  "devDependencies": {
82
91
  "@eslint/js": "^10.0.1",
@@ -0,0 +1,51 @@
1
+ # Argustack global Code Intelligence — shared across ALL workspaces.
2
+ #
3
+ # Multi-tenant: one Neo4j + one Qdrant on standard ports, projects isolated
4
+ # by `projectId` (Neo4j) and per-project collection name (Qdrant).
5
+ #
6
+ # Usage:
7
+ # cd ~/.argustack/code && docker compose up -d
8
+ #
9
+ # Workspaces point to it via .env:
10
+ # NEO4J_URI=bolt://localhost:7687
11
+ # QDRANT_URL=http://localhost:6333
12
+
13
+ services:
14
+ neo4j:
15
+ image: neo4j:5-community
16
+ container_name: argustack-code-neo4j
17
+ ports:
18
+ - "7474:7474" # HTTP / Neo4j Browser
19
+ - "7687:7687" # Bolt
20
+ environment:
21
+ NEO4J_AUTH: neo4j/argustack_local
22
+ NEO4J_PLUGINS: '["apoc"]'
23
+ NEO4J_dbms_memory_pagecache_size: 1G
24
+ NEO4J_dbms_memory_heap_initial__size: 1G
25
+ NEO4J_dbms_memory_heap_max__size: 2G
26
+ volumes:
27
+ - argustack-code-neo4j-data:/data
28
+ - argustack-code-neo4j-logs:/logs
29
+ - argustack-code-neo4j-plugins:/plugins
30
+ healthcheck:
31
+ test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7474 || exit 1"]
32
+ interval: 10s
33
+ timeout: 5s
34
+ retries: 15
35
+ restart: unless-stopped
36
+
37
+ qdrant:
38
+ image: qdrant/qdrant:latest
39
+ container_name: argustack-code-qdrant
40
+ ports:
41
+ - "6333:6333" # REST
42
+ - "6334:6334" # gRPC
43
+ volumes:
44
+ - argustack-code-qdrant-data:/qdrant/storage
45
+ restart: unless-stopped
46
+
47
+ volumes:
48
+ argustack-code-neo4j-data:
49
+ argustack-code-neo4j-logs:
50
+ argustack-code-neo4j-plugins:
51
+ argustack-code-qdrant-data:
@@ -15,3 +15,19 @@ DB_PORT=5434
15
15
  DB_USER=argustack
16
16
  DB_PASSWORD=argustack_local
17
17
  DB_NAME=argustack
18
+
19
+ # === Code Intelligence (optional — needed only for `argustack code`) ===
20
+ # Set these after running `argustack code init` which bootstraps the shared
21
+ # hub at ~/.argustack/code/ (Neo4j + Qdrant on standard ports).
22
+ # NEO4J_URI=bolt://localhost:7687
23
+ # NEO4J_USER=neo4j
24
+ # NEO4J_PASSWORD=argustack_local
25
+ # QDRANT_URL=http://localhost:6333
26
+
27
+ # Code embedding provider: lmstudio (default, local) or voyage (cloud)
28
+ # CODE_EMBEDDING_PROVIDER=lmstudio
29
+ # LMSTUDIO_URL=http://localhost:1234
30
+ # EMBEDDING_MODEL=text-embedding-qwen3-embedding-4b
31
+ # EMBEDDING_DIMS=1024
32
+ # RERANK_MODEL= # optional, LM Studio chat model id (e.g. Qwen3-Reranker)
33
+ # VOYAGE_API_KEY= # only if CODE_EMBEDDING_PROVIDER=voyage
@@ -0,0 +1,65 @@
1
+ # Argustack hub — global configuration shared by ALL workspaces.
2
+ #
3
+ # Location: ~/.argustack/config.env
4
+ # Loaded by every CLI invocation and MCP server start-up.
5
+ # Per-workspace settings (Jira project keys, git repo paths, etc.) live in
6
+ # the `workspaces.settings` JSONB column in the hub Postgres, not here.
7
+ #
8
+ # Permissions: chmod 600 recommended (this file may contain tokens).
9
+
10
+ # ===== Hub Postgres (created by `argustack init`) =====
11
+ DB_HOST=localhost
12
+ DB_PORT=15432
13
+ DB_NAME=argustack_hub
14
+ DB_USER=argustack
15
+ DB_PASSWORD=argustack_hub
16
+
17
+ # ===== Neo4j (code-intel graph) =====
18
+ NEO4J_URI=bolt://localhost:15435
19
+ NEO4J_USER=neo4j
20
+ NEO4J_PASSWORD=argustack_local
21
+
22
+ # ===== Qdrant (code-intel vectors) =====
23
+ QDRANT_URL=http://localhost:15436
24
+
25
+ # ===== Code embedding provider =====
26
+ # Managed by `argustack init`. Examples:
27
+ #
28
+ # Ollama (default after init):
29
+ # CODE_EMBEDDING_PROVIDER=ollama
30
+ # OLLAMA_URL=http://localhost:11434
31
+ # EMBEDDING_MODEL=nomic-embed-text
32
+ # EMBEDDING_DIMS=768
33
+ #
34
+ # LM Studio:
35
+ # CODE_EMBEDDING_PROVIDER=lmstudio
36
+ # LMSTUDIO_URL=http://localhost:1234
37
+ # EMBEDDING_MODEL=text-embedding-qwen3-embedding-4b
38
+ # EMBEDDING_DIMS=1024
39
+ #
40
+ # Custom OpenAI-compatible server:
41
+ # CODE_EMBEDDING_PROVIDER=custom
42
+ # CUSTOM_EMBEDDING_URL=http://your-server:8080
43
+ # EMBEDDING_MODEL=your-model-name
44
+ # EMBEDDING_DIMS=768
45
+ #
46
+ # Voyage AI (cloud, paid):
47
+ # CODE_EMBEDDING_PROVIDER=voyage
48
+ # VOYAGE_API_KEY=pa-...
49
+ # EMBEDDING_MODEL=voyage-code-3
50
+ # EMBEDDING_DIMS=1024
51
+
52
+ # ===== Issue embeddings (OpenAI text-embedding-3-small, 1536d) =====
53
+ # Used by `argustack embed` for semantic search of Jira issues.
54
+ # OPENAI_API_KEY=
55
+
56
+ # ===== Jira credentials (one set per machine) =====
57
+ # Per-workspace project keys live in `workspaces.settings.jiraProjectKeys`.
58
+ # JIRA_URL=https://your-instance.atlassian.net
59
+ # JIRA_EMAIL=
60
+ # JIRA_API_TOKEN=
61
+ # JIRA_PROXY_TOKEN=
62
+
63
+ # ===== GitHub credentials (one PAT per machine) =====
64
+ # Per-workspace `owner/repo` targets live in `workspaces.settings.githubRepos`.
65
+ # GITHUB_TOKEN=
@@ -0,0 +1,88 @@
1
+ # Argustack Hub — one Docker stack for ALL workspaces.
2
+ #
3
+ # Multi-tenant: a single Postgres + Neo4j + Qdrant set hosts data for every
4
+ # workspace registered through `argustack workspace add`. Tenant isolation
5
+ # happens at the schema level (workspace_id FK in pg, projectId property in
6
+ # neo4j, per-workspace collection in qdrant).
7
+ #
8
+ # Ports are configured via .env file next to this compose file. argustack init
9
+ # writes it with conflict-free ports (default 15432..15437 range).
10
+ #
11
+ # Usage:
12
+ # cd ~/.argustack && docker compose up -d
13
+ #
14
+ # Workspaces find this stack via ~/.argustack/config.env which uses the
15
+ # same ports as the .env file here.
16
+
17
+ name: argustack
18
+
19
+ services:
20
+ pg:
21
+ image: pgvector/pgvector:pg16
22
+ container_name: argustack-hub-pg
23
+ ports:
24
+ - "${HUB_PG_PORT:-15432}:5432"
25
+ environment:
26
+ POSTGRES_USER: argustack
27
+ POSTGRES_PASSWORD: argustack_hub
28
+ POSTGRES_DB: argustack_hub
29
+ volumes:
30
+ - argustack-hub-pg-data:/var/lib/postgresql/data
31
+ healthcheck:
32
+ test: ["CMD-SHELL", "pg_isready -U argustack -d argustack_hub"]
33
+ interval: 5s
34
+ timeout: 3s
35
+ retries: 20
36
+ restart: unless-stopped
37
+
38
+ pgweb:
39
+ image: sosedoff/pgweb
40
+ container_name: argustack-hub-pgweb
41
+ ports:
42
+ - "${HUB_PGWEB_PORT:-15433}:8081"
43
+ environment:
44
+ DATABASE_URL: postgres://argustack:argustack_hub@pg:5432/argustack_hub?sslmode=disable
45
+ depends_on:
46
+ pg:
47
+ condition: service_healthy
48
+ restart: unless-stopped
49
+
50
+ neo4j:
51
+ image: neo4j:5-community
52
+ container_name: argustack-hub-neo4j
53
+ ports:
54
+ - "${HUB_NEO4J_HTTP_PORT:-15434}:7474"
55
+ - "${HUB_NEO4J_BOLT_PORT:-15435}:7687"
56
+ environment:
57
+ NEO4J_AUTH: neo4j/argustack_local
58
+ NEO4J_PLUGINS: '["apoc"]'
59
+ NEO4J_dbms_memory_pagecache_size: 1G
60
+ NEO4J_dbms_memory_heap_initial__size: 1G
61
+ NEO4J_dbms_memory_heap_max__size: 2G
62
+ volumes:
63
+ - argustack-hub-neo4j-data:/data
64
+ - argustack-hub-neo4j-logs:/logs
65
+ - argustack-hub-neo4j-plugins:/plugins
66
+ healthcheck:
67
+ test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7474 || exit 1"]
68
+ interval: 10s
69
+ timeout: 5s
70
+ retries: 15
71
+ restart: unless-stopped
72
+
73
+ qdrant:
74
+ image: qdrant/qdrant:latest
75
+ container_name: argustack-hub-qdrant
76
+ ports:
77
+ - "${HUB_QDRANT_REST_PORT:-15436}:6333"
78
+ - "${HUB_QDRANT_GRPC_PORT:-15437}:6334"
79
+ volumes:
80
+ - argustack-hub-qdrant-data:/qdrant/storage
81
+ restart: unless-stopped
82
+
83
+ volumes:
84
+ argustack-hub-pg-data:
85
+ argustack-hub-neo4j-data:
86
+ argustack-hub-neo4j-logs:
87
+ argustack-hub-neo4j-plugins:
88
+ argustack-hub-qdrant-data:
@@ -0,0 +1,90 @@
1
+ -- Argustack Hub schema (reference / manual verification)
2
+ --
3
+ -- This file mirrors what `ensureSchema()` in
4
+ -- `src/adapters/postgres/schema.ts` creates programmatically. Keep
5
+ -- the two in sync. Use this file for:
6
+ -- * `psql -f migrate-to-hub.sql` on a fresh database to bootstrap
7
+ -- the hub without running the Node CLI
8
+ -- * Reviewing constraints during code review
9
+ -- * Verifying a running hub against the expected DDL
10
+ --
11
+ -- Tenant model: every data table carries
12
+ -- workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE
13
+ -- Composite UNIQUE / PRIMARY KEY constraints always lead with workspace_id.
14
+ -- ARG-264 (ARG-264.md) is the source of truth for the multi-tenant design.
15
+
16
+ CREATE EXTENSION IF NOT EXISTS vector;
17
+
18
+ CREATE TABLE IF NOT EXISTS workspaces (
19
+ id TEXT PRIMARY KEY,
20
+ name TEXT NOT NULL UNIQUE,
21
+ display_name TEXT,
22
+ settings JSONB NOT NULL DEFAULT '{}',
23
+ created_at TIMESTAMPTZ DEFAULT NOW(),
24
+ last_active_at TIMESTAMPTZ DEFAULT NOW()
25
+ );
26
+ CREATE INDEX IF NOT EXISTS idx_workspaces_active ON workspaces (last_active_at DESC);
27
+
28
+ -- ===== Issues domain =====
29
+
30
+ CREATE TABLE IF NOT EXISTS issues (
31
+ id SERIAL PRIMARY KEY,
32
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
33
+ issue_key TEXT NOT NULL,
34
+ -- ... (see schema.ts for full column list)
35
+ UNIQUE (workspace_id, issue_key)
36
+ );
37
+
38
+ -- ===== Commits domain =====
39
+
40
+ CREATE TABLE IF NOT EXISTS commits (
41
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
42
+ hash VARCHAR(40) NOT NULL,
43
+ -- ...
44
+ PRIMARY KEY (workspace_id, hash)
45
+ );
46
+
47
+ -- ===== Pull Requests domain =====
48
+
49
+ CREATE TABLE IF NOT EXISTS pull_requests (
50
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
51
+ number INTEGER NOT NULL,
52
+ repo_full_name VARCHAR(200) NOT NULL,
53
+ -- ...
54
+ PRIMARY KEY (workspace_id, repo_full_name, number)
55
+ );
56
+
57
+ -- ===== Graph domain =====
58
+
59
+ CREATE TABLE IF NOT EXISTS graph_entities (
60
+ id SERIAL PRIMARY KEY,
61
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
62
+ name TEXT NOT NULL,
63
+ type VARCHAR(50) NOT NULL,
64
+ UNIQUE (workspace_id, name, type)
65
+ );
66
+
67
+ -- ===== External DB schema cache =====
68
+
69
+ CREATE TABLE IF NOT EXISTS db_tables (
70
+ id SERIAL PRIMARY KEY,
71
+ workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
72
+ source_name TEXT NOT NULL,
73
+ table_schema TEXT,
74
+ table_name TEXT NOT NULL,
75
+ UNIQUE (workspace_id, source_name, table_schema, table_name)
76
+ );
77
+
78
+ -- ===== Code Intelligence =====
79
+
80
+ CREATE TABLE IF NOT EXISTS code_projects (
81
+ id TEXT PRIMARY KEY,
82
+ workspace_id TEXT NOT NULL UNIQUE REFERENCES workspaces(id) ON DELETE CASCADE,
83
+ CHECK (id = workspace_id),
84
+ name TEXT NOT NULL,
85
+ root_path TEXT NOT NULL,
86
+ language TEXT NOT NULL
87
+ );
88
+
89
+ -- See src/adapters/postgres/schema.ts for the canonical, full DDL of
90
+ -- all 24 tenant tables, indexes, and composite foreign keys.
@@ -1,3 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerWorkspacesCommand(program: Command): void;
3
- //# sourceMappingURL=workspaces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/cli/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiChE"}
@@ -1,34 +0,0 @@
1
- import chalk from 'chalk';
2
- import { findWorkspaceRoot } from '../workspace/resolver.js';
3
- import { readConfig } from '../workspace/config.js';
4
- import { listRegisteredWorkspaces, registerWorkspace } from '../workspace/registry.js';
5
- import { SOURCE_META } from '../core/types/index.js';
6
- export function registerWorkspacesCommand(program) {
7
- program
8
- .command('workspaces')
9
- .description('List all known Argustack workspaces')
10
- .action(() => {
11
- const activeRoot = findWorkspaceRoot() ?? undefined;
12
- if (activeRoot) {
13
- const config = readConfig(activeRoot);
14
- registerWorkspace(activeRoot, config?.name);
15
- }
16
- const workspaces = listRegisteredWorkspaces(activeRoot);
17
- if (workspaces.length === 0) {
18
- console.log(chalk.yellow('\n No workspaces registered.'));
19
- console.log(chalk.dim(' Run "argustack init" to create one.\n'));
20
- return;
21
- }
22
- console.log(`\n Workspaces (${String(workspaces.length)}):\n`);
23
- for (const ws of workspaces) {
24
- const marker = ws.active ? chalk.green('●') : chalk.dim('○');
25
- const name = ws.active ? chalk.green.bold(ws.name) : ws.name;
26
- const sources = ws.sources.map((s) => SOURCE_META[s].label).join(', ') || 'no sources';
27
- const activeSuffix = ws.active ? chalk.dim(' (active)') : '';
28
- console.log(` ${marker} ${name}${activeSuffix}`);
29
- console.log(chalk.dim(` ${ws.path}`));
30
- console.log(chalk.dim(` ${sources}\n`));
31
- }
32
- });
33
- }
34
- //# sourceMappingURL=workspaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/cli/workspaces.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,UAAU,GAAG,iBAAiB,EAAE,IAAI,SAAS,CAAC;QAEpD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAExD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;YACvF,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7D,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}