@maiaos/cli 0.1.0-canary.2

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 (413) hide show
  1. package/README.md +287 -0
  2. package/dist/bin/maia.NOTICES.txt +59 -0
  3. package/dist/bin/maia.cdx.json +145 -0
  4. package/dist/bin/maia.mjs +2 -0
  5. package/dist/bootstrap/index.d.ts +3 -0
  6. package/dist/bootstrap/index.js +3 -0
  7. package/dist/bootstrap/process.d.ts +5 -0
  8. package/dist/bootstrap/process.js +45 -0
  9. package/dist/bootstrap/run.d.ts +25 -0
  10. package/dist/bootstrap/run.js +95 -0
  11. package/dist/bootstrap/stdio.d.ts +4 -0
  12. package/dist/bootstrap/stdio.js +9 -0
  13. package/dist/cli/cli.d.ts +17 -0
  14. package/dist/cli/cli.js +481 -0
  15. package/dist/cli/environment.d.ts +8 -0
  16. package/dist/cli/environment.js +12 -0
  17. package/dist/cli/index.d.ts +2 -0
  18. package/dist/cli/index.js +2 -0
  19. package/dist/cli/services.d.ts +4 -0
  20. package/dist/cli/services.js +4 -0
  21. package/dist/command-line/context.d.ts +178 -0
  22. package/dist/command-line/context.js +2 -0
  23. package/dist/command-line/index.d.ts +7 -0
  24. package/dist/command-line/index.js +6 -0
  25. package/dist/command-line/input/arguments.d.ts +55 -0
  26. package/dist/command-line/input/arguments.js +220 -0
  27. package/dist/command-line/input/index.d.ts +4 -0
  28. package/dist/command-line/input/index.js +4 -0
  29. package/dist/command-line/input/prompt.d.ts +8 -0
  30. package/dist/command-line/input/prompt.js +44 -0
  31. package/dist/command-line/input/stdin-stream.d.ts +4 -0
  32. package/dist/command-line/input/stdin-stream.js +3 -0
  33. package/dist/command-line/input/stdin.d.ts +11 -0
  34. package/dist/command-line/input/stdin.js +23 -0
  35. package/dist/command-line/json-decoder.d.ts +3 -0
  36. package/dist/command-line/json-decoder.js +3 -0
  37. package/dist/command-line/json.d.ts +3 -0
  38. package/dist/command-line/json.js +4 -0
  39. package/dist/command-line/output.d.ts +57 -0
  40. package/dist/command-line/output.js +94 -0
  41. package/dist/command-line/rows.d.ts +10 -0
  42. package/dist/command-line/rows.js +32 -0
  43. package/dist/command-line/two-phase.d.ts +57 -0
  44. package/dist/command-line/two-phase.js +148 -0
  45. package/dist/command-receipt/command.d.ts +4 -0
  46. package/dist/command-receipt/command.js +59 -0
  47. package/dist/command-receipt/compact-list.d.ts +20 -0
  48. package/dist/command-receipt/compact-list.js +29 -0
  49. package/dist/command-receipt/index.d.ts +3 -0
  50. package/dist/command-receipt/index.js +3 -0
  51. package/dist/command-tree/commands.d.ts +17 -0
  52. package/dist/command-tree/commands.js +41 -0
  53. package/dist/command-tree/completion.d.ts +6 -0
  54. package/dist/command-tree/completion.js +36 -0
  55. package/dist/command-tree/grammar.d.ts +18 -0
  56. package/dist/command-tree/grammar.js +160 -0
  57. package/dist/command-tree/help.d.ts +62 -0
  58. package/dist/command-tree/help.js +219 -0
  59. package/dist/command-tree/index.d.ts +8 -0
  60. package/dist/command-tree/index.js +6 -0
  61. package/dist/command-tree/local.d.ts +3 -0
  62. package/dist/command-tree/local.js +126 -0
  63. package/dist/command-tree/placeholder.d.ts +3 -0
  64. package/dist/command-tree/placeholder.js +4 -0
  65. package/dist/command-tree/row.d.ts +29 -0
  66. package/dist/command-tree/row.js +2 -0
  67. package/dist/command-tree/suggest.d.ts +3 -0
  68. package/dist/command-tree/suggest.js +81 -0
  69. package/dist/command-tree/tree.d.ts +34 -0
  70. package/dist/command-tree/tree.js +124 -0
  71. package/dist/connection/client.d.ts +692 -0
  72. package/dist/connection/client.js +28 -0
  73. package/dist/connection/commands.d.ts +15 -0
  74. package/dist/connection/commands.js +118 -0
  75. package/dist/connection/index.d.ts +7 -0
  76. package/dist/connection/index.js +7 -0
  77. package/dist/connection/input.d.ts +50 -0
  78. package/dist/connection/input.js +90 -0
  79. package/dist/connection/login.d.ts +13 -0
  80. package/dist/connection/login.js +69 -0
  81. package/dist/connection/output/format.d.ts +32 -0
  82. package/dist/connection/output/format.js +94 -0
  83. package/dist/connection/output/index.d.ts +2 -0
  84. package/dist/connection/output/index.js +2 -0
  85. package/dist/connection/resolve.d.ts +60 -0
  86. package/dist/connection/resolve.js +30 -0
  87. package/dist/connection/signin.d.ts +4 -0
  88. package/dist/connection/signin.js +32 -0
  89. package/dist/connection/system.d.ts +4 -0
  90. package/dist/connection/system.js +190 -0
  91. package/dist/connection/tree/index.d.ts +2 -0
  92. package/dist/connection/tree/index.js +2 -0
  93. package/dist/connection/tree/tree.d.ts +3 -0
  94. package/dist/connection/tree/tree.js +209 -0
  95. package/dist/container/client.d.ts +142 -0
  96. package/dist/container/client.js +11 -0
  97. package/dist/container/commands.d.ts +7 -0
  98. package/dist/container/commands.js +100 -0
  99. package/dist/container/index.d.ts +3 -0
  100. package/dist/container/index.js +3 -0
  101. package/dist/container/output/format.d.ts +11 -0
  102. package/dist/container/output/format.js +28 -0
  103. package/dist/container/output/index.d.ts +2 -0
  104. package/dist/container/output/index.js +2 -0
  105. package/dist/context/client.d.ts +7 -0
  106. package/dist/context/client.js +21 -0
  107. package/dist/context/commands.d.ts +3 -0
  108. package/dist/context/commands.js +27 -0
  109. package/dist/context/index.d.ts +3 -0
  110. package/dist/context/index.js +3 -0
  111. package/dist/development/cli.d.ts +3 -0
  112. package/dist/development/cli.js +44 -0
  113. package/dist/execution/client.d.ts +25 -0
  114. package/dist/execution/client.js +24 -0
  115. package/dist/execution/index.d.ts +3 -0
  116. package/dist/execution/index.js +3 -0
  117. package/dist/execution/relocation.d.ts +6 -0
  118. package/dist/execution/relocation.js +123 -0
  119. package/dist/execution/tree/index.d.ts +2 -0
  120. package/dist/execution/tree/index.js +2 -0
  121. package/dist/execution/tree/tree.d.ts +3 -0
  122. package/dist/execution/tree/tree.js +137 -0
  123. package/dist/hold/client.d.ts +137 -0
  124. package/dist/hold/client.js +12 -0
  125. package/dist/hold/commands.d.ts +5 -0
  126. package/dist/hold/commands.js +91 -0
  127. package/dist/hold/index.d.ts +3 -0
  128. package/dist/hold/index.js +3 -0
  129. package/dist/hold/output/format.d.ts +11 -0
  130. package/dist/hold/output/format.js +29 -0
  131. package/dist/hold/output/index.d.ts +2 -0
  132. package/dist/hold/output/index.js +2 -0
  133. package/dist/hold/tree/index.d.ts +2 -0
  134. package/dist/hold/tree/index.js +2 -0
  135. package/dist/hold/tree/tree.d.ts +3 -0
  136. package/dist/hold/tree/tree.js +96 -0
  137. package/dist/import/client.d.ts +14 -0
  138. package/dist/import/client.js +16 -0
  139. package/dist/import/commands.d.ts +5 -0
  140. package/dist/import/commands.js +76 -0
  141. package/dist/import/index.d.ts +3 -0
  142. package/dist/import/index.js +3 -0
  143. package/dist/import/input.d.ts +16 -0
  144. package/dist/import/input.js +92 -0
  145. package/dist/import/output.d.ts +6 -0
  146. package/dist/import/output.js +40 -0
  147. package/dist/index.d.ts +2 -0
  148. package/dist/index.js +2 -0
  149. package/dist/integration/client.d.ts +1284 -0
  150. package/dist/integration/client.js +24 -0
  151. package/dist/integration/commands.d.ts +10 -0
  152. package/dist/integration/commands.js +104 -0
  153. package/dist/integration/index.d.ts +3 -0
  154. package/dist/integration/index.js +3 -0
  155. package/dist/integration/output.d.ts +22 -0
  156. package/dist/integration/output.js +20 -0
  157. package/dist/local-node/call.d.ts +7 -0
  158. package/dist/local-node/call.js +13 -0
  159. package/dist/local-node/client.d.ts +67 -0
  160. package/dist/local-node/client.js +241 -0
  161. package/dist/local-node/index.d.ts +3 -0
  162. package/dist/local-node/index.js +3 -0
  163. package/dist/login/agent-provider.d.ts +20 -0
  164. package/dist/login/agent-provider.js +109 -0
  165. package/dist/login/commands.d.ts +4 -0
  166. package/dist/login/commands.js +93 -0
  167. package/dist/login/failure.d.ts +3 -0
  168. package/dist/login/failure.js +14 -0
  169. package/dist/login/gateway.d.ts +12 -0
  170. package/dist/login/gateway.js +71 -0
  171. package/dist/login/index.d.ts +3 -0
  172. package/dist/login/index.js +2 -0
  173. package/dist/login/menu.d.ts +4 -0
  174. package/dist/login/menu.js +105 -0
  175. package/dist/login/output/format.d.ts +16 -0
  176. package/dist/login/output/format.js +31 -0
  177. package/dist/login/output/index.d.ts +2 -0
  178. package/dist/login/output/index.js +2 -0
  179. package/dist/login/vendor-account.d.ts +95 -0
  180. package/dist/login/vendor-account.js +75 -0
  181. package/dist/login/vendor-input.d.ts +14 -0
  182. package/dist/login/vendor-input.js +36 -0
  183. package/dist/mcp/calls.d.ts +7 -0
  184. package/dist/mcp/calls.js +202 -0
  185. package/dist/mcp/commands.d.ts +9 -0
  186. package/dist/mcp/commands.js +21 -0
  187. package/dist/mcp/index.d.ts +2 -0
  188. package/dist/mcp/index.js +2 -0
  189. package/dist/mcp/server.d.ts +11 -0
  190. package/dist/mcp/server.js +57 -0
  191. package/dist/orchestration/client.d.ts +78 -0
  192. package/dist/orchestration/client.js +89 -0
  193. package/dist/orchestration/commands.d.ts +14 -0
  194. package/dist/orchestration/commands.js +312 -0
  195. package/dist/orchestration/index.d.ts +3 -0
  196. package/dist/orchestration/index.js +3 -0
  197. package/dist/orchestration/output/compact-aggregate.d.ts +121 -0
  198. package/dist/orchestration/output/compact-aggregate.js +110 -0
  199. package/dist/orchestration/output/compact-run-list.d.ts +20 -0
  200. package/dist/orchestration/output/compact-run-list.js +16 -0
  201. package/dist/orchestration/output/human.d.ts +80 -0
  202. package/dist/orchestration/output/human.js +252 -0
  203. package/dist/orchestration/output/index.d.ts +4 -0
  204. package/dist/orchestration/output/index.js +4 -0
  205. package/dist/orchestration/tree/index.d.ts +2 -0
  206. package/dist/orchestration/tree/index.js +2 -0
  207. package/dist/orchestration/tree/tree.d.ts +3 -0
  208. package/dist/orchestration/tree/tree.js +142 -0
  209. package/dist/port-lease/client.d.ts +160 -0
  210. package/dist/port-lease/client.js +11 -0
  211. package/dist/port-lease/commands.d.ts +6 -0
  212. package/dist/port-lease/commands.js +17 -0
  213. package/dist/port-lease/index.d.ts +3 -0
  214. package/dist/port-lease/index.js +3 -0
  215. package/dist/port-lease/input.d.ts +65 -0
  216. package/dist/port-lease/input.js +67 -0
  217. package/dist/port-lease/output/format.d.ts +11 -0
  218. package/dist/port-lease/output/format.js +24 -0
  219. package/dist/port-lease/output/index.d.ts +2 -0
  220. package/dist/port-lease/output/index.js +2 -0
  221. package/dist/presentation/client.d.ts +10 -0
  222. package/dist/presentation/client.js +9 -0
  223. package/dist/presentation/commands.d.ts +6 -0
  224. package/dist/presentation/commands.js +78 -0
  225. package/dist/presentation/index.d.ts +4 -0
  226. package/dist/presentation/index.js +3 -0
  227. package/dist/presentation/output/format.d.ts +11 -0
  228. package/dist/presentation/output/format.js +32 -0
  229. package/dist/presentation/output/index.d.ts +3 -0
  230. package/dist/presentation/output/index.js +2 -0
  231. package/dist/project-guard/client.d.ts +88 -0
  232. package/dist/project-guard/client.js +7 -0
  233. package/dist/project-guard/commands.d.ts +4 -0
  234. package/dist/project-guard/commands.js +39 -0
  235. package/dist/project-guard/index.d.ts +3 -0
  236. package/dist/project-guard/index.js +3 -0
  237. package/dist/project-guard/input.d.ts +18 -0
  238. package/dist/project-guard/input.js +47 -0
  239. package/dist/project-guard/output/format.d.ts +11 -0
  240. package/dist/project-guard/output/format.js +35 -0
  241. package/dist/project-guard/output/index.d.ts +2 -0
  242. package/dist/project-guard/output/index.js +2 -0
  243. package/dist/project-workspace/client.d.ts +86 -0
  244. package/dist/project-workspace/client.js +159 -0
  245. package/dist/project-workspace/commands.d.ts +30 -0
  246. package/dist/project-workspace/commands.js +700 -0
  247. package/dist/project-workspace/index.d.ts +5 -0
  248. package/dist/project-workspace/index.js +5 -0
  249. package/dist/project-workspace/metadata-client.d.ts +99 -0
  250. package/dist/project-workspace/metadata-client.js +8 -0
  251. package/dist/project-workspace/metadata-commands.d.ts +4 -0
  252. package/dist/project-workspace/metadata-commands.js +56 -0
  253. package/dist/project-workspace/output/human.d.ts +126 -0
  254. package/dist/project-workspace/output/human.js +103 -0
  255. package/dist/project-workspace/output/index.d.ts +3 -0
  256. package/dist/project-workspace/output/index.js +3 -0
  257. package/dist/project-workspace/output/metadata.d.ts +11 -0
  258. package/dist/project-workspace/output/metadata.js +17 -0
  259. package/dist/project-workspace/tree/index.d.ts +2 -0
  260. package/dist/project-workspace/tree/index.js +2 -0
  261. package/dist/project-workspace/tree/tree.d.ts +3 -0
  262. package/dist/project-workspace/tree/tree.js +197 -0
  263. package/dist/provider/client.d.ts +6 -0
  264. package/dist/provider/client.js +5 -0
  265. package/dist/provider/commands.d.ts +3 -0
  266. package/dist/provider/commands.js +38 -0
  267. package/dist/provider/index.d.ts +3 -0
  268. package/dist/provider/index.js +3 -0
  269. package/dist/reference/commands.d.ts +3 -0
  270. package/dist/reference/commands.js +39 -0
  271. package/dist/reference/index.d.ts +3 -0
  272. package/dist/reference/index.js +3 -0
  273. package/dist/reference/resolve.d.ts +29 -0
  274. package/dist/reference/resolve.js +294 -0
  275. package/dist/reference/tree/index.d.ts +2 -0
  276. package/dist/reference/tree/index.js +2 -0
  277. package/dist/reference/tree/tree.d.ts +3 -0
  278. package/dist/reference/tree/tree.js +17 -0
  279. package/dist/remote-node/client.d.ts +258 -0
  280. package/dist/remote-node/client.js +12 -0
  281. package/dist/remote-node/commands.d.ts +6 -0
  282. package/dist/remote-node/commands.js +264 -0
  283. package/dist/remote-node/connector.d.ts +59 -0
  284. package/dist/remote-node/connector.js +122 -0
  285. package/dist/remote-node/index.d.ts +4 -0
  286. package/dist/remote-node/index.js +4 -0
  287. package/dist/remote-node/reachability.d.ts +22 -0
  288. package/dist/remote-node/reachability.js +34 -0
  289. package/dist/remote-node/text.d.ts +9 -0
  290. package/dist/remote-node/text.js +64 -0
  291. package/dist/remote-node/tree/index.d.ts +2 -0
  292. package/dist/remote-node/tree/index.js +2 -0
  293. package/dist/remote-node/tree/tree.d.ts +3 -0
  294. package/dist/remote-node/tree/tree.js +51 -0
  295. package/dist/run-ledger/client.d.ts +358 -0
  296. package/dist/run-ledger/client.js +13 -0
  297. package/dist/run-ledger/commands.d.ts +8 -0
  298. package/dist/run-ledger/commands.js +19 -0
  299. package/dist/run-ledger/index.d.ts +3 -0
  300. package/dist/run-ledger/index.js +3 -0
  301. package/dist/run-ledger/input.d.ts +42 -0
  302. package/dist/run-ledger/input.js +107 -0
  303. package/dist/run-ledger/output/format.d.ts +11 -0
  304. package/dist/run-ledger/output/format.js +49 -0
  305. package/dist/run-ledger/output/index.d.ts +2 -0
  306. package/dist/run-ledger/output/index.js +2 -0
  307. package/dist/session/agent-permission.d.ts +63 -0
  308. package/dist/session/agent-permission.js +20 -0
  309. package/dist/session/approval/client.d.ts +117 -0
  310. package/dist/session/approval/client.js +7 -0
  311. package/dist/session/approval/commands.d.ts +7 -0
  312. package/dist/session/approval/commands.js +123 -0
  313. package/dist/session/approval/index.d.ts +3 -0
  314. package/dist/session/approval/index.js +3 -0
  315. package/dist/session/approval/output/format.d.ts +12 -0
  316. package/dist/session/approval/output/format.js +25 -0
  317. package/dist/session/approval/output/index.d.ts +2 -0
  318. package/dist/session/approval/output/index.js +2 -0
  319. package/dist/session/attach-client.d.ts +16 -0
  320. package/dist/session/attach-client.js +8 -0
  321. package/dist/session/attach-render.d.ts +16 -0
  322. package/dist/session/attach-render.js +154 -0
  323. package/dist/session/attach.d.ts +5 -0
  324. package/dist/session/attach.js +106 -0
  325. package/dist/session/client.d.ts +132 -0
  326. package/dist/session/client.js +128 -0
  327. package/dist/session/coding-client.d.ts +16 -0
  328. package/dist/session/coding-client.js +15 -0
  329. package/dist/session/coding-commands.d.ts +4 -0
  330. package/dist/session/coding-commands.js +50 -0
  331. package/dist/session/commands.d.ts +13 -0
  332. package/dist/session/commands.js +488 -0
  333. package/dist/session/create-tasks.d.ts +20 -0
  334. package/dist/session/create-tasks.js +110 -0
  335. package/dist/session/index.d.ts +9 -0
  336. package/dist/session/index.js +7 -0
  337. package/dist/session/interaction/client.d.ts +347 -0
  338. package/dist/session/interaction/client.js +15 -0
  339. package/dist/session/interaction/commands.d.ts +7 -0
  340. package/dist/session/interaction/commands.js +101 -0
  341. package/dist/session/interaction/index.d.ts +3 -0
  342. package/dist/session/interaction/index.js +3 -0
  343. package/dist/session/interaction/input.d.ts +15 -0
  344. package/dist/session/interaction/input.js +46 -0
  345. package/dist/session/interaction/output/format.d.ts +11 -0
  346. package/dist/session/interaction/output/format.js +3 -0
  347. package/dist/session/interaction/output/index.d.ts +2 -0
  348. package/dist/session/interaction/output/index.js +2 -0
  349. package/dist/session/output/diff.d.ts +3 -0
  350. package/dist/session/output/diff.js +30 -0
  351. package/dist/session/output/failure.d.ts +11 -0
  352. package/dist/session/output/failure.js +24 -0
  353. package/dist/session/output/human.d.ts +112 -0
  354. package/dist/session/output/human.js +71 -0
  355. package/dist/session/output/index.d.ts +6 -0
  356. package/dist/session/output/index.js +6 -0
  357. package/dist/session/output/observe.d.ts +4 -0
  358. package/dist/session/output/observe.js +46 -0
  359. package/dist/session/output/tasks.d.ts +19 -0
  360. package/dist/session/output/tasks.js +34 -0
  361. package/dist/session/rename.d.ts +3 -0
  362. package/dist/session/rename.js +37 -0
  363. package/dist/session/task-file.d.ts +5 -0
  364. package/dist/session/task-file.js +23 -0
  365. package/dist/session/tree/index.d.ts +2 -0
  366. package/dist/session/tree/index.js +2 -0
  367. package/dist/session/tree/tree.d.ts +3 -0
  368. package/dist/session/tree/tree.js +309 -0
  369. package/dist/session/turn/client.d.ts +25 -0
  370. package/dist/session/turn/client.js +40 -0
  371. package/dist/session/turn/commands.d.ts +6 -0
  372. package/dist/session/turn/commands.js +157 -0
  373. package/dist/session/turn/index.d.ts +4 -0
  374. package/dist/session/turn/index.js +3 -0
  375. package/dist/session/turn/output.d.ts +42 -0
  376. package/dist/session/turn/output.js +38 -0
  377. package/dist/status/client.d.ts +119 -0
  378. package/dist/status/client.js +5 -0
  379. package/dist/status/command.d.ts +4 -0
  380. package/dist/status/command.js +40 -0
  381. package/dist/status/doctor.d.ts +15 -0
  382. package/dist/status/doctor.js +111 -0
  383. package/dist/status/index.d.ts +5 -0
  384. package/dist/status/index.js +4 -0
  385. package/dist/status/output/compact.d.ts +31 -0
  386. package/dist/status/output/compact.js +46 -0
  387. package/dist/status/output/human.d.ts +7 -0
  388. package/dist/status/output/human.js +30 -0
  389. package/dist/status/output/index.d.ts +3 -0
  390. package/dist/status/output/index.js +3 -0
  391. package/dist/terminal/arguments.d.ts +13 -0
  392. package/dist/terminal/arguments.js +79 -0
  393. package/dist/terminal/client.d.ts +79 -0
  394. package/dist/terminal/client.js +68 -0
  395. package/dist/terminal/commands.d.ts +7 -0
  396. package/dist/terminal/commands.js +131 -0
  397. package/dist/terminal/control-commands.d.ts +10 -0
  398. package/dist/terminal/control-commands.js +212 -0
  399. package/dist/terminal/index.d.ts +4 -0
  400. package/dist/terminal/index.js +4 -0
  401. package/dist/terminal/output/compact-list.d.ts +147 -0
  402. package/dist/terminal/output/compact-list.js +152 -0
  403. package/dist/terminal/output/human.d.ts +59 -0
  404. package/dist/terminal/output/human.js +55 -0
  405. package/dist/terminal/output/index.d.ts +3 -0
  406. package/dist/terminal/output/index.js +3 -0
  407. package/dist/terminal/tree/index.d.ts +2 -0
  408. package/dist/terminal/tree/index.js +2 -0
  409. package/dist/terminal/tree/tree.d.ts +3 -0
  410. package/dist/terminal/tree/tree.js +104 -0
  411. package/guidance/maia-cli/SKILL.md +58 -0
  412. package/guidance/maia-orchestration/SKILL.md +54 -0
  413. package/package.json +76 -0
@@ -0,0 +1,197 @@
1
+ const project = () => import("../index.js");
2
+ const guard = () => import("../../project-guard/index.js");
3
+ const container = () => import("../../container/index.js");
4
+ export const PROJECT_TREE = {
5
+ groups: [
6
+ ["project", "Projects: registered repositories."],
7
+ ["project guard", "A Project's guards."],
8
+ ["project context", "A Project's context notes."],
9
+ ["workspace", "Workspaces of a Project."],
10
+ ["workspace context", "The active Workspace context."],
11
+ ["workspace membership", "Repositories attached to a Workspace."],
12
+ ["workspace execution", "A Workspace's execution settings."],
13
+ ["workspace repository", "A Workspace's repositories."],
14
+ ["container", "Workspace containers."],
15
+ ["container index", "Every container with its Projects."],
16
+ ],
17
+ leaves: [
18
+ [
19
+ "project register <path> [--name <name>] [--command-id <id>]",
20
+ 0,
21
+ "project.register",
22
+ "Register a Git repository as a Project.",
23
+ {
24
+ example: "maia --json project register . --name app --command-id project-1",
25
+ run: [project, "runProjectRegister"],
26
+ },
27
+ ],
28
+ [
29
+ "project list [--limit <1..100>] [--after <cursor>]",
30
+ 0,
31
+ "project.list",
32
+ "List Projects.",
33
+ {
34
+ example: "maia --json project list --limit 20",
35
+ run: [project, "runProjectList"],
36
+ },
37
+ ],
38
+ [
39
+ "project show <project-id>",
40
+ 0,
41
+ "project.show",
42
+ "Show one Project.",
43
+ { run: [project, "runProjectShow"] },
44
+ ],
45
+ [
46
+ "project create (--input-stdin --dry-run | --confirm-stdin)",
47
+ 1,
48
+ ["project.create.preview", "project.create.confirm"],
49
+ "Create a Project after a preview.",
50
+ { kind: "two-phase", run: [project, "runProjectCreate"] },
51
+ ],
52
+ [
53
+ "project rename (--input-stdin --dry-run | --confirm-stdin)",
54
+ 1,
55
+ ["project.rename.preview", "project.rename.confirm"],
56
+ "Rename a Project after a preview.",
57
+ { kind: "two-phase", run: [project, "runProjectRename"] },
58
+ ],
59
+ [
60
+ "project guard show <project-id>",
61
+ 1,
62
+ "project.guard.show",
63
+ "Show a Project's guards.",
64
+ { run: [guard, "runProjectGuardShow"] },
65
+ ],
66
+ [
67
+ "project guard set (<project-id> --expected-revision <revision> --max-depth <1..4> --max-live-children <1..64> --max-messages-per-minute <1..600> --max-leases-per-session <1..64> [--command-id <id>] [--dry-run] | --confirm-stdin)",
68
+ 1,
69
+ ["project.guard.preview", "project.guard.confirm"],
70
+ "Set a Project's guards after a preview.",
71
+ { kind: "two-phase", run: [guard, "runProjectGuardSet"] },
72
+ ],
73
+ [
74
+ "project context record --project <project-id> --body-stdin [--command-id <id>]",
75
+ 0,
76
+ "project.context.record",
77
+ "Record a context note for a Project.",
78
+ { run: [project, "runProjectContextRecord"] },
79
+ ],
80
+ [
81
+ "project context list --project <project-id> [--limit <1..100>] [--after <cursor>]",
82
+ 0,
83
+ "project.context.list",
84
+ "List a Project's context notes.",
85
+ { run: [project, "runProjectContextList"] },
86
+ ],
87
+ [
88
+ "project context show <note-id>",
89
+ 0,
90
+ "project.context.show",
91
+ "Show one context note.",
92
+ { run: [project, "runProjectContextShow"] },
93
+ ],
94
+ [
95
+ "workspace list --project <project-id> [--limit <1..100>] [--after <cursor>]",
96
+ 0,
97
+ "workspace.list",
98
+ "List a Project's Workspaces.",
99
+ { run: [project, "runWorkspaceList"] },
100
+ ],
101
+ [
102
+ "workspace show <workspace-id>",
103
+ 0,
104
+ "workspace.show",
105
+ "Show one Workspace.",
106
+ { run: [project, "runWorkspaceShow"] },
107
+ ],
108
+ [
109
+ "workspace select <workspace-id> --project <project-id> --repository <repository-id> --expected-active-workspace-id <workspace-id> --expected-active-context-revision <revision> --expected-workspace-revision <revision> --expected-context-revision <revision> [--command-id <id>]",
110
+ 1,
111
+ "workspace.select",
112
+ "Select the active Workspace.",
113
+ { run: [project, "runWorkspaceSelect"] },
114
+ ],
115
+ [
116
+ "workspace context show",
117
+ 1,
118
+ "workspace.context.show",
119
+ "Show the active Workspace context.",
120
+ { run: [project, "runWorkspaceContextShow"] },
121
+ ],
122
+ [
123
+ "workspace execution show <workspace-id>",
124
+ 1,
125
+ "workspace.execution.show",
126
+ "Show a Workspace's execution settings.",
127
+ { run: [project, "runWorkspaceExecutionShow"] },
128
+ ],
129
+ [
130
+ "workspace execution set <workspace-id> (--execution-profile <profile-id> | --policy <policy-id>) --expected-revision <revision> [--command-id <id>]",
131
+ 1,
132
+ "workspace.execution.configure",
133
+ "Set a Workspace's execution profile or policy.",
134
+ { kind: "discriminant", run: [project, "runWorkspaceExecutionSet"] },
135
+ ],
136
+ [
137
+ "workspace execution clear <workspace-id> --expected-revision <revision> [--command-id <id>]",
138
+ 1,
139
+ "workspace.execution.configure",
140
+ "Clear a Workspace's execution settings.",
141
+ { kind: "discriminant", run: [project, "runWorkspaceExecutionClear"] },
142
+ ],
143
+ [
144
+ "workspace membership attach <workspace-id> --project <project-id> --repository <repository-id> --expected-workspace-revision <revision> --expected-context-revision <revision> [--command-id <id>]",
145
+ 1,
146
+ "workspace.membership.attach",
147
+ "Attach a Project repository to a Workspace.",
148
+ { run: [project, "runWorkspaceMembershipAttach"] },
149
+ ],
150
+ [
151
+ "workspace repository attach <path> --workspace <workspace-id> --expected-revision <revision> [--name <name>] [--command-id <id>]",
152
+ 0,
153
+ "workspace.repository.attach",
154
+ "Attach a repository to a Workspace.",
155
+ { run: [project, "runWorkspaceRepositoryAttach"] },
156
+ ],
157
+ [
158
+ "container list [--limit <1..100>] [--after <cursor>]",
159
+ 1,
160
+ "container.list",
161
+ "List containers.",
162
+ { run: [container, "runContainerList"] },
163
+ ],
164
+ [
165
+ "container show <container-id> [--limit <1..100>] [--after <cursor>]",
166
+ 1,
167
+ "container.show",
168
+ "Show one container and its Projects.",
169
+ { run: [container, "runContainerShow"] },
170
+ ],
171
+ [
172
+ "container index list [--limit <1..500>] [--after <cursor>]",
173
+ 1,
174
+ "container.index.list",
175
+ "List every container with its Projects and their paths.",
176
+ {
177
+ example: "maia --json container index list --limit 500",
178
+ run: [container, "runContainerIndexList"],
179
+ },
180
+ ],
181
+ [
182
+ "container create (--input-stdin --dry-run | --confirm-stdin)",
183
+ 1,
184
+ ["container.create.preview", "container.create.confirm"],
185
+ "Create a container after a preview.",
186
+ { kind: "two-phase", run: [container, "runContainerCreate"] },
187
+ ],
188
+ [
189
+ "container rename (--input-stdin --dry-run | --confirm-stdin)",
190
+ 1,
191
+ ["container.rename.preview", "container.rename.confirm"],
192
+ "Rename a container after a preview.",
193
+ { kind: "two-phase", run: [container, "runContainerRename"] },
194
+ ],
195
+ ],
196
+ };
197
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1,6 @@
1
+ import type { ProviderPoolListResult } from "@maiaos/sdk";
2
+ import type { CliNodeEffect, CliNodeOperations } from "../local-node/index.js";
3
+ export declare const makeProviderClient: (node: CliNodeOperations) => {
4
+ listProviderPools: () => CliNodeEffect<ProviderPoolListResult>;
5
+ };
6
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1,5 @@
1
+ import { providerPoolListParametersSchema } from "@maiaos/sdk";
2
+ export const makeProviderClient = (node) => ({
3
+ listProviderPools: () => node.runValidatedNodeOperation({}, providerPoolListParametersSchema, (client, parameters, options) => client.listProviderPools(parameters, options)),
4
+ });
5
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1,3 @@
1
+ import { type CommandContext, type CommandEffect } from "../command-line/index.js";
2
+ export declare const runProviderPoolList: (tokens: readonly string[], context: CommandContext) => CommandEffect;
3
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1,38 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { cell, formatRows, parseOptions, requirePositionals, tab, writeNodeResult, } from "../command-line/index.js";
3
+ const formatPools = ({ result }) => formatRows(result.pools, (pool) => tab([
4
+ cell(pool.poolId),
5
+ cell(pool.providerId),
6
+ cell(pool.model),
7
+ `${String(pool.availableCredentialCount)}/${String(pool.credentialCount)}`,
8
+ pool.default ? "default" : "-",
9
+ ]), {
10
+ empty: "No model-provider pools.",
11
+ headers: ["POOL", "PROVIDER", "MODEL", "CREDENTIALS", "DEFAULT"],
12
+ });
13
+ export const runProviderPoolList = (tokens, context) => Effect.gen(function* () {
14
+ const parsed = parseOptions(tokens, new Set());
15
+ requirePositionals(parsed.positionals, 0);
16
+ const operation = context.dependencies.listProviderPools;
17
+ if (operation === undefined)
18
+ return yield* Effect.die(new Error("Missing provider client."));
19
+ const result = yield* operation();
20
+ return writeNodeResult(result, context, {
21
+ toResult: (value) => ({
22
+ command: "provider.pool.list",
23
+ result: {
24
+ pools: value.pools.map((pool) => ({
25
+ availableCredentialCount: pool.availableCredentialCount,
26
+ credentialCount: pool.credentialCount,
27
+ default: pool.default,
28
+ model: pool.model,
29
+ poolId: pool.poolId,
30
+ providerId: pool.providerId,
31
+ })),
32
+ releaseQualified: value.releaseQualified,
33
+ },
34
+ }),
35
+ toText: formatPools,
36
+ });
37
+ });
38
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1,3 @@
1
+ export { makeProviderClient } from "./client.js";
2
+ export { runProviderPoolList } from "./commands.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { makeProviderClient } from "./client.js";
2
+ export { runProviderPoolList } from "./commands.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import { type CommandContext, type CommandEffect } from "../command-line/index.js";
2
+ export declare const runReferenceResolve: (tokens: readonly string[], context: CommandContext) => CommandEffect;
3
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1,39 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { cell, CliArgumentError, parseOptions, writeNodeResult, } from "../command-line/index.js";
3
+ import { workingFolder } from "./resolve.js";
4
+ const KINDS = new Set([
5
+ "connection",
6
+ "container",
7
+ "project",
8
+ "session",
9
+ "workspace",
10
+ ]);
11
+ const isKind = (value) => KINDS.has(value ?? "");
12
+ const readParameters = (tokens, context) => {
13
+ const parsed = parseOptions(tokens, new Set(["--project"]));
14
+ const [kind, reference, ...extra] = parsed.positionals;
15
+ if (!isKind(kind) || extra.length > 0)
16
+ throw new CliArgumentError("Name one kind (connection, container, project, session or workspace) and at most one reference.");
17
+ const projectId = parsed.options.get("--project");
18
+ const path = context.node === undefined ? workingFolder(context.io.cwd) : undefined;
19
+ if (reference === undefined)
20
+ return { kind, ...(path === undefined ? {} : { path }) };
21
+ return { kind, reference, ...(projectId === undefined ? {} : { projectId }) };
22
+ };
23
+ const line = (id, label) => `${id}${label === undefined ? "" : `\t${cell(label)}`}\n`;
24
+ const formatResolution = (value) => value.outcome === "resolved"
25
+ ? line(value.id, value.label)
26
+ : value.candidates
27
+ .map((candidate) => line(candidate.id, candidate.label))
28
+ .join("");
29
+ export const runReferenceResolve = (tokens, context) => {
30
+ const parameters = readParameters(tokens, context);
31
+ const { call } = context.dependencies;
32
+ if (call === undefined)
33
+ return Effect.die(new Error("Missing the typed Node call."));
34
+ return Effect.map(call("reference.resolve", parameters), (result) => writeNodeResult(result, context, {
35
+ toResult: (value) => ({ command: "reference.resolve", result: value }),
36
+ toText: ({ result: value }) => formatResolution(value),
37
+ }));
38
+ };
39
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1,3 @@
1
+ export { runReferenceResolve } from "./commands.js";
2
+ export { describeResolution, type LeafArguments, type PreparedLeaf, prepareLeaf, type ResolvedArguments, resolveLeafArguments, workingFolder, } from "./resolve.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { runReferenceResolve } from "./commands.js";
2
+ export { describeResolution, prepareLeaf, resolveLeafArguments, workingFolder, } from "./resolve.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,29 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { CliArgumentError, type CliResolution, type CliServices, type CommandContext } from "../command-line/index.js";
3
+ export type ResolvedArguments = {
4
+ readonly exitCode: number;
5
+ readonly ok: false;
6
+ } | {
7
+ readonly ok: true;
8
+ readonly resolutions: readonly CliResolution[];
9
+ readonly tokens: readonly string[];
10
+ };
11
+ export declare const describeResolution: (item: CliResolution) => string;
12
+ export type LeafArguments = {
13
+ readonly context: CommandContext;
14
+ readonly cwd?: string;
15
+ readonly tokens: readonly string[];
16
+ readonly usage: string;
17
+ };
18
+ export declare const resolveLeafArguments: ({ context, cwd, tokens, usage, }: LeafArguments) => Effect.Effect<ResolvedArguments, CliArgumentError, CliServices>;
19
+ export type PreparedLeaf = {
20
+ readonly context: CommandContext;
21
+ readonly ok: true;
22
+ readonly tokens: readonly string[];
23
+ } | {
24
+ readonly exitCode: number;
25
+ readonly ok: false;
26
+ };
27
+ export declare const prepareLeaf: (input: LeafArguments) => Effect.Effect<PreparedLeaf, CliArgumentError, CliServices>;
28
+ export declare const workingFolder: (cwd?: string) => string | undefined;
29
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1,294 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Effect from "effect/Effect";
3
+ import { cell, CliArgumentError, parseOptions, reportError, tokenizeArguments, } from "../command-line/index.js";
4
+ import { parseUsage, REFERENCE_PLACEHOLDER, } from "../command-tree/index.js";
5
+ class ReferenceRefused extends Data.TaggedError("ReferenceRefused") {
6
+ }
7
+ const NOUNS = {
8
+ connection: "Connection",
9
+ container: "Container",
10
+ project: "Project",
11
+ session: "Session",
12
+ workspace: "Workspace",
13
+ };
14
+ const MAX_REFERENCES = 32;
15
+ const SCOPE_NAMES = new Set([
16
+ "--all",
17
+ "--project",
18
+ "--workspace",
19
+ ]);
20
+ const isKind = (value) => Object.hasOwn(NOUNS, value);
21
+ const kindOf = (placeholder) => {
22
+ const word = REFERENCE_PLACEHOLDER.exec(placeholder ?? "")?.[1] ?? "";
23
+ return isKind(word) ? word : undefined;
24
+ };
25
+ const isExactId = (kind, value) => new RegExp(`^${kind}_[0-9a-f]{32}$`, "u").test(value);
26
+ const grammarOf = (arguments_) => ({
27
+ options: new Map(arguments_.flatMap((argument) => argument.name.startsWith("--") && argument.value !== undefined
28
+ ? [
29
+ [
30
+ argument.name,
31
+ argument.name.startsWith("--expected-")
32
+ ? undefined
33
+ : kindOf(argument.value),
34
+ ],
35
+ ]
36
+ : [])),
37
+ positionals: arguments_.filter((argument) => argument.name.startsWith("<")),
38
+ });
39
+ const slotOf = (grammar, position) => {
40
+ const { positionals } = grammar;
41
+ const last = positionals.at(-1);
42
+ return positionals[position] ?? (last?.repeated === true ? last : undefined);
43
+ };
44
+ const valueOf = (token, inline) => inline ? token.slice(token.indexOf("=") + 1) : token;
45
+ const placeOf = (grammar, role, position) => {
46
+ if (role.kind === "value") {
47
+ const kind = grammar.options.get(role.name);
48
+ return {
49
+ argument: role.name,
50
+ index: role.index,
51
+ inline: role.inline,
52
+ ...(kind === undefined ? {} : { kind }),
53
+ };
54
+ }
55
+ const slot = slotOf(grammar, position);
56
+ const kind = kindOf(slot?.name);
57
+ return {
58
+ argument: slot?.name ?? "",
59
+ index: role.index,
60
+ inline: false,
61
+ ...(kind === undefined ? {} : { kind }),
62
+ };
63
+ };
64
+ const targetsOf = (grammar, tokens, roles) => {
65
+ const kept = roles.filter((role) => role.kind !== "flag");
66
+ const positionals = kept.filter((role) => role.kind === "positional");
67
+ return kept.flatMap((role) => {
68
+ const place = placeOf(grammar, role, positionals.indexOf(role));
69
+ const { inline, kind } = place;
70
+ return kind === undefined
71
+ ? []
72
+ : [
73
+ {
74
+ ...place,
75
+ kind,
76
+ reference: valueOf(tokens[role.index] ?? "", inline),
77
+ },
78
+ ];
79
+ });
80
+ };
81
+ const flagsOf = (arguments_) => new Set(arguments_.flatMap((argument) => argument.name.startsWith("--") && argument.value === undefined
82
+ ? [argument.name]
83
+ : []));
84
+ const locate = (arguments_, tokens) => Effect.try({
85
+ catch: (error) => error instanceof CliArgumentError
86
+ ? error
87
+ : new CliArgumentError("The command arguments are invalid."),
88
+ try: () => {
89
+ const grammar = grammarOf(arguments_);
90
+ const valueOptions = new Set(grammar.options.keys());
91
+ const end = tokens.indexOf("--");
92
+ parseOptions(end === -1 ? tokens : tokens.slice(0, end), valueOptions, flagsOf(arguments_));
93
+ const roles = tokenizeArguments(tokens, valueOptions);
94
+ return {
95
+ given: new Set(roles.flatMap((role) => ("name" in role ? [role.name] : []))),
96
+ targets: targetsOf(grammar, tokens, roles),
97
+ };
98
+ },
99
+ });
100
+ const missingScope = (arguments_, given) => {
101
+ const scope = arguments_.find((argument) => argument.required === true &&
102
+ (argument.name === "--workspace" || argument.name === "--project"));
103
+ if (scope === undefined)
104
+ return undefined;
105
+ const group = scope.oneOf === undefined
106
+ ? [scope]
107
+ : arguments_.filter((argument) => argument.oneOf === scope.oneOf && argument.required === true);
108
+ return group.some((argument) => given.has(argument.name)) ? undefined : group;
109
+ };
110
+ const labelled = (id, label) => label === undefined ? id : `${id} (${cell(label)})`;
111
+ const ambiguous = (argument, reference, result) => new CliArgumentError(`${reference === undefined ? `The default ${argument}` : `'${cell(reference)}'`} matches ${String(result.candidates.length)} ${NOUNS[result.kind]}s: ${result.candidates
112
+ .map((candidate) => labelled(candidate.id, candidate.label))
113
+ .join(", ")}. Pass ${argument} with a full ID.`);
114
+ const foreignAnswer = () => new ReferenceRefused({
115
+ error: {
116
+ code: "internal_error",
117
+ message: "The Node resolved a reference to another kind of resource.",
118
+ retryable: false,
119
+ },
120
+ });
121
+ const ask = (call, parameters) => Effect.flatMap(call("reference.resolve", parameters), (result) => {
122
+ if (!result.ok)
123
+ return Effect.fail(new ReferenceRefused({ error: result.error }));
124
+ const answer = result.value;
125
+ const matches = answer.kind === parameters.kind &&
126
+ (answer.outcome === "ambiguous" ||
127
+ answer.id.startsWith(`${parameters.kind}_`));
128
+ return matches ? Effect.succeed(answer) : Effect.fail(foreignAnswer());
129
+ });
130
+ const resolution = (argument, result, reference) => ({
131
+ argument,
132
+ id: result.id,
133
+ kind: result.kind,
134
+ ...(result.label === undefined ? {} : { label: result.label }),
135
+ match: result.match,
136
+ ...(reference === undefined ? {} : { reference }),
137
+ });
138
+ const scoped = (kind, scope) => scope === undefined || (kind !== "session" && kind !== "workspace")
139
+ ? {}
140
+ : { projectId: scope };
141
+ const answerFor = (call, state, parameters) => {
142
+ const key = JSON.stringify(parameters);
143
+ const known = state.answers.get(key);
144
+ if (known !== undefined)
145
+ return Effect.succeed({ answer: known, key });
146
+ if (state.answers.size >= MAX_REFERENCES)
147
+ return Effect.fail(new CliArgumentError(`A command resolves at most ${String(MAX_REFERENCES)} references.`));
148
+ return Effect.map(ask(call, parameters), (answer) => ({ answer, key }));
149
+ };
150
+ const rewrite = (state, target, id) => state.tokens.with(target.index, target.inline ? `${target.argument}=${id}` : id);
151
+ const exact = (state, target) => ({
152
+ ...state,
153
+ resolutions: [
154
+ ...state.resolutions,
155
+ {
156
+ argument: target.argument,
157
+ id: target.reference,
158
+ kind: target.kind,
159
+ match: "id",
160
+ },
161
+ ],
162
+ ...(target.kind === "project" ? { scope: target.reference } : {}),
163
+ });
164
+ const accept = (state, target, found) => ({
165
+ ...state,
166
+ answers: new Map(state.answers).set(found.key, found.answer),
167
+ resolutions: [
168
+ ...state.resolutions,
169
+ resolution(target.argument, found.answer, target.reference),
170
+ ],
171
+ ...(target.kind === "project" ? { scope: found.answer.id } : {}),
172
+ tokens: rewrite(state, target, found.answer.id),
173
+ });
174
+ const resolveTarget = (call, state, target) => {
175
+ if (isExactId(target.kind, target.reference))
176
+ return Effect.succeed(exact(state, target));
177
+ const parameters = {
178
+ kind: target.kind,
179
+ reference: target.reference,
180
+ ...scoped(target.kind, state.scope),
181
+ };
182
+ return Effect.flatMap(answerFor(call, state, parameters), ({ answer, key }) => answer.outcome === "ambiguous"
183
+ ? Effect.fail(ambiguous(target.argument, target.reference, answer))
184
+ : Effect.succeed(accept(state, target, { answer, key })));
185
+ };
186
+ const resolveEach = (call, initial, targets) => Effect.reduce(targets, () => initial, (state, target) => resolveTarget(call, state, target));
187
+ const noDefault = (group) => ({ error, }) => error.code === "resource_not_found"
188
+ ? Effect.fail(new CliArgumentError(`Pass ${group
189
+ .map((argument) => argument.name)
190
+ .filter((name) => SCOPE_NAMES.has(name))
191
+ .join(" or ")}: ${error.message}`))
192
+ : Effect.fail(new ReferenceRefused({ error }));
193
+ const orElse = (first, second) => Effect.catchTag(first, "CliArgumentError", (missing) => Effect.catchTag(second, "CliArgumentError", () => Effect.fail(missing)));
194
+ const resolveDefault = (call, group, path) => {
195
+ const names = new Set(group.map((argument) => argument.name));
196
+ const askDefault = (kind) => ask(call, { kind, ...(path === undefined ? {} : { path }) }).pipe(Effect.catchTag("ReferenceRefused", noDefault(group)));
197
+ const settle = (kind, result) => result.outcome === "resolved"
198
+ ? Effect.succeed(result)
199
+ : Effect.fail(ambiguous(`--${kind}`, undefined, result));
200
+ const project = Effect.flatMap(askDefault("project"), (result) => settle("project", result));
201
+ if (!names.has("--workspace"))
202
+ return project;
203
+ const workspace = Effect.flatMap(askDefault("workspace"), (result) => result.outcome === "ambiguous" && names.has("--project")
204
+ ? project
205
+ : settle("workspace", result));
206
+ return names.has("--project") ? orElse(workspace, project) : workspace;
207
+ };
208
+ const withDefault = (call, group, path) => {
209
+ return (state) => {
210
+ if (group === undefined)
211
+ return Effect.succeed(state);
212
+ return Effect.map(resolveDefault(call, group, path), (fallback) => {
213
+ const argument = `--${fallback.kind}`;
214
+ const end = state.tokens.indexOf("--");
215
+ const at = end === -1 ? state.tokens.length : end;
216
+ return {
217
+ ...state,
218
+ resolutions: [...state.resolutions, resolution(argument, fallback)],
219
+ scope: fallback.kind === "project" ? fallback.id : fallback.projectId,
220
+ tokens: state.tokens.toSpliced(at, 0, argument, fallback.id),
221
+ };
222
+ });
223
+ };
224
+ };
225
+ const SOURCES = {
226
+ id: "its ID",
227
+ name: "its name",
228
+ path: "the current folder",
229
+ prefix: "its ID prefix",
230
+ selection: "the selected Workspace",
231
+ };
232
+ export const describeResolution = (item) => `${item.argument}: ${labelled(item.id, item.label)} from ${SOURCES[item.match]}\n`;
233
+ const plan = (group, path, targets) => ({
234
+ ...(group === undefined ? {} : { group }),
235
+ ...(path === undefined ? {} : { path }),
236
+ targets,
237
+ });
238
+ const resolveAll = (call, tokens, plan) => {
239
+ const initial = { answers: new Map(), resolutions: [], tokens };
240
+ const isProject = (target) => target.kind === "project";
241
+ return resolveEach(call, initial, plan.targets.filter(isProject)).pipe(Effect.flatMap(withDefault(call, plan.group, plan.path)), Effect.flatMap((state) => resolveEach(call, state, plan.targets.filter((target) => !isProject(target)))));
242
+ };
243
+ const unresolved = (tokens) => ({
244
+ answers: new Map(),
245
+ resolutions: [],
246
+ tokens,
247
+ });
248
+ const reported = (context) => ({ error }) => Effect.succeed({
249
+ exitCode: reportError(error, context),
250
+ ok: false,
251
+ });
252
+ const settled = ({ resolutions, tokens }) => ({
253
+ ok: true,
254
+ resolutions,
255
+ tokens,
256
+ });
257
+ export const resolveLeafArguments = ({ context, cwd, tokens, usage, }) => {
258
+ const { call } = context.dependencies;
259
+ if (call === undefined)
260
+ return Effect.succeed(settled(unresolved(tokens)));
261
+ const { args } = parseUsage(usage);
262
+ const path = context.node === undefined ? cwd : undefined;
263
+ return locate(args, tokens).pipe(Effect.flatMap(({ given, targets }) => given.has("--attached")
264
+ ? Effect.succeed(unresolved(tokens))
265
+ : resolveAll(call, tokens, plan(missingScope(args, given), path, targets))), Effect.map(settled), Effect.catchTag("ReferenceRefused", reported(context)));
266
+ };
267
+ export const prepareLeaf = (input) => Effect.map(resolveLeafArguments(input), (outcome) => {
268
+ if (!outcome.ok)
269
+ return outcome;
270
+ const changed = outcome.resolutions.filter((item) => item.match !== "id");
271
+ const { context } = input;
272
+ if (!context.json)
273
+ changed.forEach((item) => {
274
+ context.io.stderr(describeResolution(item));
275
+ });
276
+ return {
277
+ context: changed.length === 0 ? context : { ...context, resolved: changed },
278
+ ok: true,
279
+ tokens: outcome.tokens,
280
+ };
281
+ });
282
+ const currentFolder = () => {
283
+ try {
284
+ return process.cwd();
285
+ }
286
+ catch {
287
+ return undefined;
288
+ }
289
+ };
290
+ export const workingFolder = (cwd) => {
291
+ const folder = cwd ?? currentFolder();
292
+ return folder?.startsWith("/") === true ? folder : undefined;
293
+ };
294
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1,2 @@
1
+ export { REFERENCE_TREE } from "./tree.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { REFERENCE_TREE } from "./tree.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import type { TreeFragment } from "../../command-tree/index.js";
2
+ export declare const REFERENCE_TREE: TreeFragment;
3
+ //# sourceMappingURL=tree.d.ts.map