@astrale-os/cli 1.0.0-beta.9 → 1.0.0-npm-deprecated.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) hide show
  1. package/README.md +14 -166
  2. package/package.json +10 -102
  3. package/.check-workspace.cjs +0 -40
  4. package/LICENSE +0 -202
  5. package/THIRD-PARTY-NOTICES.md +0 -27
  6. package/dist/astrale.js +0 -93344
  7. package/dist/public/connect-core.js +0 -29187
  8. package/dist/public/keys/index.js +0 -5651
  9. package/dist/public/paths/index.js +0 -4282
  10. package/dist/types/admin/binding.d.ts +0 -19
  11. package/dist/types/admin/instance/client.d.ts +0 -22
  12. package/dist/types/admin/instance/index.d.ts +0 -2
  13. package/dist/types/admin/instance/model.d.ts +0 -33
  14. package/dist/types/connect-core.d.ts +0 -22
  15. package/dist/types/connection/auth.d.ts +0 -39
  16. package/dist/types/connection/call.d.ts +0 -3
  17. package/dist/types/connection/command.d.ts +0 -27
  18. package/dist/types/connection/credential.d.ts +0 -14
  19. package/dist/types/connection/errors.d.ts +0 -1
  20. package/dist/types/connection/exchange.d.ts +0 -9
  21. package/dist/types/connection/failure/classify.d.ts +0 -2
  22. package/dist/types/connection/failure/index.d.ts +0 -5
  23. package/dist/types/connection/failure/model.d.ts +0 -25
  24. package/dist/types/connection/failure/render.d.ts +0 -3
  25. package/dist/types/connection/index.d.ts +0 -8
  26. package/dist/types/connection/reasons.d.ts +0 -37
  27. package/dist/types/connection/self.d.ts +0 -37
  28. package/dist/types/connection/session.d.ts +0 -31
  29. package/dist/types/connection/target.d.ts +0 -38
  30. package/dist/types/errors.d.ts +0 -23
  31. package/dist/types/identity/registry.d.ts +0 -25
  32. package/dist/types/keys/algorithm.d.ts +0 -6
  33. package/dist/types/keys/credential.d.ts +0 -21
  34. package/dist/types/keys/index.d.ts +0 -4
  35. package/dist/types/keys/pair.d.ts +0 -34
  36. package/dist/types/lib/admin-instance.d.ts +0 -17
  37. package/dist/types/lib/admin-target.d.ts +0 -78
  38. package/dist/types/lib/ca-fetch.d.ts +0 -2
  39. package/dist/types/lib/config.d.ts +0 -71
  40. package/dist/types/lib/failure-debug.d.ts +0 -1
  41. package/dist/types/lib/format.d.ts +0 -1
  42. package/dist/types/lib/idp-session.d.ts +0 -33
  43. package/dist/types/lib/idp.d.ts +0 -404
  44. package/dist/types/lib/instance-target.d.ts +0 -38
  45. package/dist/types/lib/instance.d.ts +0 -202
  46. package/dist/types/lib/invocation.d.ts +0 -3
  47. package/dist/types/lib/log.d.ts +0 -33
  48. package/dist/types/lib/login-flow.d.ts +0 -49
  49. package/dist/types/lib/meta.d.ts +0 -36
  50. package/dist/types/lib/output.d.ts +0 -87
  51. package/dist/types/lib/proc.d.ts +0 -43
  52. package/dist/types/lib/self.d.ts +0 -9
  53. package/dist/types/lib/table.d.ts +0 -18
  54. package/dist/types/lib/update.d.ts +0 -131
  55. package/dist/types/lib/validation.d.ts +0 -11
  56. package/dist/types/paths/index.d.ts +0 -2
  57. package/dist/types/state/exchange-credentials.d.ts +0 -25
  58. package/dist/types/state/files.d.ts +0 -9
  59. package/dist/types/state/identities.d.ts +0 -42
  60. package/dist/types/state/index.d.ts +0 -8
  61. package/dist/types/state/paths.d.ts +0 -32
  62. package/src/__tests__/fixtures/publication.ts +0 -20
  63. package/src/admin/.spec/api.d.ts +0 -3
  64. package/src/admin/.spec/architecture.md +0 -15
  65. package/src/admin/.spec/icon.svg +0 -3
  66. package/src/admin/.spec/layout.ts +0 -6
  67. package/src/admin/__tests__/binding.test.ts +0 -31
  68. package/src/admin/__tests__/fixture.ts +0 -101
  69. package/src/admin/binding.ts +0 -98
  70. package/src/admin/catalog/.spec/api.d.ts +0 -65
  71. package/src/admin/catalog/.spec/architecture.md +0 -6
  72. package/src/admin/catalog/.spec/icon.svg +0 -3
  73. package/src/admin/catalog/.spec/layout.ts +0 -6
  74. package/src/admin/catalog/__tests__/client.test.ts +0 -142
  75. package/src/admin/catalog/client.ts +0 -218
  76. package/src/admin/catalog/index.ts +0 -13
  77. package/src/admin/catalog/model.ts +0 -41
  78. package/src/admin/catalog/tsconfig.json +0 -8
  79. package/src/admin/graph/.spec/api.d.ts +0 -22
  80. package/src/admin/graph/.spec/architecture.md +0 -5
  81. package/src/admin/graph/.spec/icon.svg +0 -3
  82. package/src/admin/graph/.spec/layout.ts +0 -3
  83. package/src/admin/graph/index.ts +0 -6
  84. package/src/admin/graph/nodes.ts +0 -56
  85. package/src/admin/index.ts +0 -2
  86. package/src/admin/instance/.spec/api.d.ts +0 -66
  87. package/src/admin/instance/.spec/architecture.md +0 -10
  88. package/src/admin/instance/.spec/icon.svg +0 -3
  89. package/src/admin/instance/.spec/layout.ts +0 -6
  90. package/src/admin/instance/__tests__/client.test.ts +0 -166
  91. package/src/admin/instance/client.ts +0 -196
  92. package/src/admin/instance/index.ts +0 -15
  93. package/src/admin/instance/model.ts +0 -56
  94. package/src/admin/instance/tsconfig.json +0 -8
  95. package/src/commands/__tests__/admin-instance.test.ts +0 -91
  96. package/src/commands/__tests__/auth-login.test.ts +0 -231
  97. package/src/commands/__tests__/auth-token.test.ts +0 -223
  98. package/src/commands/__tests__/call-describe.test.ts +0 -80
  99. package/src/commands/__tests__/call.test.ts +0 -29
  100. package/src/commands/__tests__/domain-install-operation.test.ts +0 -126
  101. package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
  102. package/src/commands/__tests__/domain-list.test.ts +0 -133
  103. package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
  104. package/src/commands/__tests__/install-direct.test.ts +0 -21
  105. package/src/commands/__tests__/install-identity-override.test.ts +0 -76
  106. package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
  107. package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
  108. package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
  109. package/src/commands/__tests__/instance-use.test.ts +0 -67
  110. package/src/commands/__tests__/introspect-parse.test.ts +0 -21
  111. package/src/commands/__tests__/logs.test.ts +0 -97
  112. package/src/commands/__tests__/read-commands.test.ts +0 -294
  113. package/src/commands/__tests__/setup-plan.test.ts +0 -61
  114. package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
  115. package/src/commands/__tests__/token-ttl.test.ts +0 -21
  116. package/src/commands/__tests__/update.test.ts +0 -95
  117. package/src/commands/__tests__/view-build.test.ts +0 -58
  118. package/src/commands/__tests__/view.test.ts +0 -149
  119. package/src/commands/admin/status.ts +0 -61
  120. package/src/commands/admin/use.ts +0 -100
  121. package/src/commands/auth/login.ts +0 -82
  122. package/src/commands/auth/logout.ts +0 -52
  123. package/src/commands/auth/status.ts +0 -86
  124. package/src/commands/auth/token.ts +0 -174
  125. package/src/commands/browser.ts +0 -207
  126. package/src/commands/call-describe.ts +0 -123
  127. package/src/commands/call.ts +0 -205
  128. package/src/commands/domain/install.ts +0 -548
  129. package/src/commands/domain/list.ts +0 -155
  130. package/src/commands/domain/publish.ts +0 -136
  131. package/src/commands/domain/uninstall.ts +0 -128
  132. package/src/commands/get.ts +0 -69
  133. package/src/commands/identity/__tests__/register.test.ts +0 -93
  134. package/src/commands/identity/create.ts +0 -35
  135. package/src/commands/identity/delete.ts +0 -24
  136. package/src/commands/identity/export.ts +0 -46
  137. package/src/commands/identity/import.ts +0 -61
  138. package/src/commands/identity/list.ts +0 -56
  139. package/src/commands/identity/register.ts +0 -196
  140. package/src/commands/identity/sync.ts +0 -38
  141. package/src/commands/identity/unsync.ts +0 -34
  142. package/src/commands/identity/use.ts +0 -24
  143. package/src/commands/identity/whoami.ts +0 -34
  144. package/src/commands/idp/add.ts +0 -150
  145. package/src/commands/idp/list.ts +0 -57
  146. package/src/commands/idp/refresh.ts +0 -38
  147. package/src/commands/idp/remove.ts +0 -36
  148. package/src/commands/idp/show.ts +0 -29
  149. package/src/commands/instance/active.ts +0 -73
  150. package/src/commands/instance/bookmark.ts +0 -101
  151. package/src/commands/instance/create.ts +0 -61
  152. package/src/commands/instance/delete.ts +0 -69
  153. package/src/commands/instance/forget.ts +0 -26
  154. package/src/commands/instance/list.ts +0 -197
  155. package/src/commands/instance/status.ts +0 -38
  156. package/src/commands/instance/use.ts +0 -263
  157. package/src/commands/introspect.ts +0 -110
  158. package/src/commands/logs.ts +0 -283
  159. package/src/commands/mutate.ts +0 -122
  160. package/src/commands/query.ts +0 -136
  161. package/src/commands/session/analyze.ts +0 -50
  162. package/src/commands/session/list.ts +0 -36
  163. package/src/commands/setup.ts +0 -54
  164. package/src/commands/status.ts +0 -60
  165. package/src/commands/studio.ts +0 -434
  166. package/src/commands/token.ts +0 -107
  167. package/src/commands/update.ts +0 -334
  168. package/src/commands/use.ts +0 -86
  169. package/src/commands/view-serve.ts +0 -26
  170. package/src/commands/view.ts +0 -614
  171. package/src/connect-core.test.ts +0 -38
  172. package/src/connect-core.ts +0 -42
  173. package/src/connection/.spec/api.d.ts +0 -110
  174. package/src/connection/.spec/architecture.md +0 -47
  175. package/src/connection/.spec/capabilities/connection.ts +0 -13
  176. package/src/connection/.spec/examples/call.ts +0 -7
  177. package/src/connection/.spec/flows/command.ts +0 -20
  178. package/src/connection/.spec/flows/session.ts +0 -61
  179. package/src/connection/.spec/laws/connection.ts +0 -205
  180. package/src/connection/.spec/layout.ts +0 -21
  181. package/src/connection/__tests__/auth.test.ts +0 -128
  182. package/src/connection/__tests__/ca-fetch.test.ts +0 -60
  183. package/src/connection/__tests__/call.test.ts +0 -17
  184. package/src/connection/__tests__/credential.test.ts +0 -138
  185. package/src/connection/__tests__/errors.test.ts +0 -577
  186. package/src/connection/__tests__/exchange.test.ts +0 -295
  187. package/src/connection/__tests__/failure-fixtures.ts +0 -39
  188. package/src/connection/__tests__/failure-safety.test.ts +0 -75
  189. package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
  190. package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
  191. package/src/connection/__tests__/managed.test.ts +0 -39
  192. package/src/connection/__tests__/reasons.test.ts +0 -78
  193. package/src/connection/__tests__/self.test.ts +0 -71
  194. package/src/connection/__tests__/session.test.ts +0 -140
  195. package/src/connection/__tests__/target.test.ts +0 -94
  196. package/src/connection/auth.ts +0 -249
  197. package/src/connection/call.ts +0 -7
  198. package/src/connection/command.ts +0 -67
  199. package/src/connection/credential.ts +0 -117
  200. package/src/connection/errors.ts +0 -1
  201. package/src/connection/exchange.ts +0 -311
  202. package/src/connection/failure/classify.ts +0 -110
  203. package/src/connection/failure/index.ts +0 -18
  204. package/src/connection/failure/model.ts +0 -28
  205. package/src/connection/failure/render.ts +0 -116
  206. package/src/connection/index.ts +0 -8
  207. package/src/connection/reasons.ts +0 -209
  208. package/src/connection/self.ts +0 -138
  209. package/src/connection/session.ts +0 -196
  210. package/src/connection/target.ts +0 -112
  211. package/src/connection/tsconfig.json +0 -6
  212. package/src/errors.ts +0 -66
  213. package/src/graph/.spec/api.d.ts +0 -41
  214. package/src/graph/.spec/laws/documents.ts +0 -24
  215. package/src/graph/.spec/laws/projection.ts +0 -13
  216. package/src/graph/.spec/layout.ts +0 -14
  217. package/src/graph/__tests__/mutation.test.ts +0 -51
  218. package/src/graph/__tests__/projection.test.ts +0 -22
  219. package/src/graph/__tests__/query.test.ts +0 -173
  220. package/src/graph/class.ts +0 -30
  221. package/src/graph/index.ts +0 -4
  222. package/src/graph/mutation.ts +0 -46
  223. package/src/graph/projection.ts +0 -21
  224. package/src/graph/query.ts +0 -97
  225. package/src/graph/tsconfig.json +0 -6
  226. package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
  227. package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
  228. package/src/identity/.spec/api.d.ts +0 -124
  229. package/src/identity/.spec/architecture.md +0 -33
  230. package/src/identity/.spec/capabilities/identity.ts +0 -7
  231. package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
  232. package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
  233. package/src/identity/.spec/flows/import.ts +0 -29
  234. package/src/identity/.spec/laws/identity.ts +0 -56
  235. package/src/identity/.spec/layout.ts +0 -13
  236. package/src/identity/.spec/schemas/identity-export-v1.schema.json +0 -25
  237. package/src/identity/__tests__/fixtures/registry-journey.ts +0 -53
  238. package/src/identity/__tests__/registration.test.ts +0 -64
  239. package/src/identity/__tests__/registry.test.ts +0 -70
  240. package/src/identity/__tests__/transfer.test.ts +0 -198
  241. package/src/identity/index.ts +0 -23
  242. package/src/identity/registration.ts +0 -72
  243. package/src/identity/registry.ts +0 -179
  244. package/src/identity/transfer.ts +0 -187
  245. package/src/identity/tsconfig.json +0 -6
  246. package/src/index.ts +0 -1
  247. package/src/keys/.spec/api.d.ts +0 -74
  248. package/src/keys/.spec/architecture.md +0 -13
  249. package/src/keys/.spec/laws/keys.ts +0 -43
  250. package/src/keys/.spec/layout.ts +0 -6
  251. package/src/keys/__tests__/algorithm.test.ts +0 -39
  252. package/src/keys/__tests__/keys.test.ts +0 -168
  253. package/src/keys/algorithm.ts +0 -33
  254. package/src/keys/credential.ts +0 -112
  255. package/src/keys/index.ts +0 -14
  256. package/src/keys/pair.ts +0 -219
  257. package/src/keys/tsconfig.json +0 -6
  258. package/src/lib/__tests__/admin-target.test.ts +0 -184
  259. package/src/lib/__tests__/binary.test.ts +0 -55
  260. package/src/lib/__tests__/command-dx.test.ts +0 -102
  261. package/src/lib/__tests__/concurrency.test.ts +0 -62
  262. package/src/lib/__tests__/config.test.ts +0 -54
  263. package/src/lib/__tests__/design.test.ts +0 -99
  264. package/src/lib/__tests__/domain-publication.test.ts +0 -138
  265. package/src/lib/__tests__/format.test.ts +0 -22
  266. package/src/lib/__tests__/idp-session.driver.ts +0 -53
  267. package/src/lib/__tests__/idp-session.test.ts +0 -379
  268. package/src/lib/__tests__/idp.test.ts +0 -415
  269. package/src/lib/__tests__/instance-candidates.test.ts +0 -146
  270. package/src/lib/__tests__/instance-target.test.ts +0 -213
  271. package/src/lib/__tests__/instance.test.ts +0 -192
  272. package/src/lib/__tests__/local-status.test.ts +0 -202
  273. package/src/lib/__tests__/log-errors.test.ts +0 -64
  274. package/src/lib/__tests__/log.test.ts +0 -31
  275. package/src/lib/__tests__/meta.test.ts +0 -55
  276. package/src/lib/__tests__/output.test.ts +0 -162
  277. package/src/lib/__tests__/panel.test.ts +0 -40
  278. package/src/lib/__tests__/port.test.ts +0 -44
  279. package/src/lib/__tests__/prompt.test.ts +0 -25
  280. package/src/lib/__tests__/sdk-deps.test.ts +0 -68
  281. package/src/lib/__tests__/self.test.ts +0 -50
  282. package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
  283. package/src/lib/__tests__/table.test.ts +0 -53
  284. package/src/lib/__tests__/update.test.ts +0 -351
  285. package/src/lib/__tests__/use-target.test.ts +0 -56
  286. package/src/lib/__tests__/validation.test.ts +0 -34
  287. package/src/lib/__tests__/view-assets.test.ts +0 -146
  288. package/src/lib/__tests__/view-open-intent.test.ts +0 -280
  289. package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
  290. package/src/lib/__tests__/view-server.test.ts +0 -68
  291. package/src/lib/__tests__/view-session.test.ts +0 -99
  292. package/src/lib/__tests__/view-snapshot.test.ts +0 -77
  293. package/src/lib/admin-domain.ts +0 -43
  294. package/src/lib/admin-instance.ts +0 -56
  295. package/src/lib/admin-target.ts +0 -290
  296. package/src/lib/binary.ts +0 -110
  297. package/src/lib/browser.ts +0 -150
  298. package/src/lib/ca-fetch.ts +0 -133
  299. package/src/lib/command-dx.ts +0 -191
  300. package/src/lib/concurrency.ts +0 -31
  301. package/src/lib/config.ts +0 -46
  302. package/src/lib/domain-publication.ts +0 -104
  303. package/src/lib/failure-debug.ts +0 -26
  304. package/src/lib/format.ts +0 -4
  305. package/src/lib/idp-session.ts +0 -134
  306. package/src/lib/idp.ts +0 -906
  307. package/src/lib/instance-candidates.ts +0 -49
  308. package/src/lib/instance-target.ts +0 -197
  309. package/src/lib/instance.ts +0 -467
  310. package/src/lib/invocation.ts +0 -11
  311. package/src/lib/local-status.ts +0 -152
  312. package/src/lib/log.ts +0 -143
  313. package/src/lib/login-flow.ts +0 -201
  314. package/src/lib/meta.ts +0 -90
  315. package/src/lib/output.ts +0 -238
  316. package/src/lib/panel.ts +0 -61
  317. package/src/lib/port.ts +0 -41
  318. package/src/lib/proc.ts +0 -82
  319. package/src/lib/prompt.ts +0 -136
  320. package/src/lib/provision-instance.ts +0 -139
  321. package/src/lib/sdk-deps.ts +0 -104
  322. package/src/lib/self.ts +0 -22
  323. package/src/lib/skills.ts +0 -171
  324. package/src/lib/table.ts +0 -62
  325. package/src/lib/update.ts +0 -409
  326. package/src/lib/use-target.ts +0 -24
  327. package/src/lib/validation.ts +0 -59
  328. package/src/lib/view/assets.ts +0 -78
  329. package/src/lib/view/open-intent.ts +0 -67
  330. package/src/lib/view/port-allocation.ts +0 -19
  331. package/src/lib/view/resolve.ts +0 -111
  332. package/src/lib/view/server.ts +0 -244
  333. package/src/lib/view/session.ts +0 -152
  334. package/src/lib/view/snapshot.ts +0 -101
  335. package/src/paths/.spec/api.d.ts +0 -13
  336. package/src/paths/.spec/architecture.md +0 -5
  337. package/src/paths/.spec/layout.ts +0 -3
  338. package/src/paths/index.ts +0 -13
  339. package/src/program/.spec/api.d.ts +0 -42
  340. package/src/program/.spec/architecture.md +0 -18
  341. package/src/program/.spec/laws/program.ts +0 -29
  342. package/src/program/.spec/layout.ts +0 -14
  343. package/src/program/__tests__/program.test.ts +0 -378
  344. package/src/program/build.ts +0 -183
  345. package/src/program/command.ts +0 -42
  346. package/src/program/index.ts +0 -2
  347. package/src/program/options.ts +0 -41
  348. package/src/program/registry.ts +0 -63
  349. package/src/program/tsconfig.json +0 -6
  350. package/src/setup/__tests__/instance-step.test.ts +0 -256
  351. package/src/setup/__tests__/util.test.ts +0 -29
  352. package/src/setup/engine.ts +0 -83
  353. package/src/setup/render.ts +0 -107
  354. package/src/setup/steps/admin.ts +0 -93
  355. package/src/setup/steps/agent-browser.ts +0 -81
  356. package/src/setup/steps/auth.ts +0 -54
  357. package/src/setup/steps/domain.ts +0 -68
  358. package/src/setup/steps/index.ts +0 -18
  359. package/src/setup/steps/instance.ts +0 -206
  360. package/src/setup/steps/skills-bridge.ts +0 -70
  361. package/src/setup/steps/skills.ts +0 -59
  362. package/src/setup/types.ts +0 -61
  363. package/src/setup/util.ts +0 -34
  364. package/src/state/.spec/api.d.ts +0 -133
  365. package/src/state/.spec/architecture.md +0 -31
  366. package/src/state/.spec/capabilities/state.ts +0 -7
  367. package/src/state/.spec/flows/identity-update.ts +0 -22
  368. package/src/state/.spec/laws/state.ts +0 -73
  369. package/src/state/.spec/layout.ts +0 -14
  370. package/src/state/__tests__/exchange-credentials.test.ts +0 -188
  371. package/src/state/__tests__/files.test.ts +0 -113
  372. package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
  373. package/src/state/__tests__/identities.test.ts +0 -142
  374. package/src/state/__tests__/paths.test.ts +0 -27
  375. package/src/state/exchange-credentials.ts +0 -219
  376. package/src/state/files.ts +0 -129
  377. package/src/state/identities.ts +0 -229
  378. package/src/state/index.ts +0 -29
  379. package/src/state/paths.ts +0 -61
  380. package/src/state/tsconfig.json +0 -6
  381. package/src/telemetry/__tests__/gate.test.ts +0 -63
  382. package/src/telemetry/__tests__/recorder.test.ts +0 -110
  383. package/src/telemetry/__tests__/redact.test.ts +0 -79
  384. package/src/telemetry/__tests__/session.test.ts +0 -166
  385. package/src/telemetry/__tests__/trigger.test.ts +0 -49
  386. package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
  387. package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
  388. package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
  389. package/src/telemetry/adapters/claude-code.ts +0 -90
  390. package/src/telemetry/adapters/codex.ts +0 -160
  391. package/src/telemetry/adapters/index.ts +0 -45
  392. package/src/telemetry/adapters/types.ts +0 -21
  393. package/src/telemetry/analyze.ts +0 -227
  394. package/src/telemetry/gate.ts +0 -79
  395. package/src/telemetry/recorder.ts +0 -57
  396. package/src/telemetry/redact.ts +0 -53
  397. package/src/telemetry/session.ts +0 -88
  398. package/src/telemetry/settings.ts +0 -26
  399. package/src/telemetry/store.ts +0 -91
  400. package/src/telemetry/trigger.ts +0 -119
  401. package/src/telemetry/types.ts +0 -64
  402. package/src/test-utils.ts +0 -18
  403. package/studio/client/dist/assets/elk-api-ByzoDZWH.js +0 -1
  404. package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
  405. package/studio/client/dist/assets/index-B0RCgUOT.js +0 -8
  406. package/studio/client/dist/assets/index-BiGR8Oo9.css +0 -1
  407. package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
  408. package/studio/client/dist/assets/index-N8J8EKlB.js +0 -81
  409. package/studio/client/dist/index.html +0 -13
  410. package/studio/package.json +0 -65
  411. package/studio/server/agent/ask.test.ts +0 -74
  412. package/studio/server/agent/ask.ts +0 -71
  413. package/studio/server/agent/bridge/client.test.ts +0 -49
  414. package/studio/server/agent/bridge/client.ts +0 -37
  415. package/studio/server/agent/bridge/grant.test.ts +0 -62
  416. package/studio/server/agent/bridge/grant.ts +0 -84
  417. package/studio/server/agent/bridge/routes.test.ts +0 -151
  418. package/studio/server/agent/bridge/routes.ts +0 -148
  419. package/studio/server/agent/bridge/stdio.ts +0 -195
  420. package/studio/server/agent/conversation.test.ts +0 -89
  421. package/studio/server/agent/conversation.ts +0 -158
  422. package/studio/server/agent/harness/adapter.ts +0 -171
  423. package/studio/server/agent/harness/claude/adapter.test.ts +0 -348
  424. package/studio/server/agent/harness/claude/adapter.ts +0 -71
  425. package/studio/server/agent/harness/claude/ask.ts +0 -114
  426. package/studio/server/agent/harness/claude/capabilities.ts +0 -27
  427. package/studio/server/agent/harness/claude/command.ts +0 -63
  428. package/studio/server/agent/harness/claude/events.ts +0 -215
  429. package/studio/server/agent/harness/claude/loadout.ts +0 -132
  430. package/studio/server/agent/harness/claude/mcp.test.ts +0 -36
  431. package/studio/server/agent/harness/claude/mcp.ts +0 -41
  432. package/studio/server/agent/harness/claude/skills.ts +0 -43
  433. package/studio/server/agent/harness/codex/adapter.test.ts +0 -269
  434. package/studio/server/agent/harness/codex/adapter.ts +0 -116
  435. package/studio/server/agent/harness/codex/ask.test.ts +0 -176
  436. package/studio/server/agent/harness/codex/ask.ts +0 -181
  437. package/studio/server/agent/harness/codex/command.test.ts +0 -69
  438. package/studio/server/agent/harness/codex/command.ts +0 -43
  439. package/studio/server/agent/harness/codex/events.test.ts +0 -94
  440. package/studio/server/agent/harness/codex/events.ts +0 -132
  441. package/studio/server/agent/harness/codex/exec.ts +0 -113
  442. package/studio/server/agent/harness/codex/loadout.ts +0 -60
  443. package/studio/server/agent/harness/codex/mcp.test.ts +0 -32
  444. package/studio/server/agent/harness/codex/mcp.ts +0 -27
  445. package/studio/server/agent/harness/codex/models.test.ts +0 -167
  446. package/studio/server/agent/harness/codex/models.ts +0 -211
  447. package/studio/server/agent/harness/codex/skills.ts +0 -33
  448. package/studio/server/agent/harness/gateway/config.test.ts +0 -98
  449. package/studio/server/agent/harness/gateway/config.ts +0 -214
  450. package/studio/server/agent/harness/gateway/token.test.ts +0 -133
  451. package/studio/server/agent/harness/gateway/token.ts +0 -166
  452. package/studio/server/agent/harness/mock/adapter.ts +0 -190
  453. package/studio/server/agent/harness/mock/domain-edit.ts +0 -41
  454. package/studio/server/agent/harness/process.test.ts +0 -46
  455. package/studio/server/agent/harness/process.ts +0 -104
  456. package/studio/server/agent/harness/registry.ts +0 -37
  457. package/studio/server/agent/harness/selection.test.ts +0 -75
  458. package/studio/server/agent/harness/selection.ts +0 -85
  459. package/studio/server/agent/harness/skills.test.ts +0 -95
  460. package/studio/server/agent/harness/skills.ts +0 -100
  461. package/studio/server/agent/layout.test.ts +0 -95
  462. package/studio/server/agent/notify.ts +0 -12
  463. package/studio/server/agent/prompts/anchors.test.ts +0 -70
  464. package/studio/server/agent/prompts/anchors.ts +0 -153
  465. package/studio/server/agent/prompts/ask.ts +0 -34
  466. package/studio/server/agent/prompts/system.test.ts +0 -13
  467. package/studio/server/agent/prompts/system.ts +0 -99
  468. package/studio/server/agent/prompts/turn.ts +0 -66
  469. package/studio/server/agent/routes.test.ts +0 -176
  470. package/studio/server/agent/routes.ts +0 -214
  471. package/studio/server/agent/run/completion.ts +0 -193
  472. package/studio/server/agent/run/coordinator.test.ts +0 -337
  473. package/studio/server/agent/run/coordinator.ts +0 -104
  474. package/studio/server/agent/run/live-state.ts +0 -73
  475. package/studio/server/agent/run/preparation.ts +0 -163
  476. package/studio/server/agent/run/transcript.test.ts +0 -81
  477. package/studio/server/agent/run/transcript.ts +0 -196
  478. package/studio/server/agent/run/usage.test.ts +0 -70
  479. package/studio/server/agent/run/usage.ts +0 -62
  480. package/studio/server/agent/stream.ts +0 -37
  481. package/studio/server/agent/telemetry.ts +0 -13
  482. package/studio/server/api/canvas.ts +0 -43
  483. package/studio/server/api/comments.ts +0 -85
  484. package/studio/server/api/context.ts +0 -61
  485. package/studio/server/api/deployment.ts +0 -39
  486. package/studio/server/api/documents.ts +0 -55
  487. package/studio/server/api/domain.ts +0 -59
  488. package/studio/server/api/http.ts +0 -45
  489. package/studio/server/api/project.ts +0 -57
  490. package/studio/server/api/schema.ts +0 -12
  491. package/studio/server/api/views.ts +0 -57
  492. package/studio/server/api/workspace.ts +0 -60
  493. package/studio/server/api-agent-loadout.test.ts +0 -69
  494. package/studio/server/api.test.ts +0 -147
  495. package/studio/server/api.ts +0 -34
  496. package/studio/server/cache.test.ts +0 -122
  497. package/studio/server/cache.ts +0 -303
  498. package/studio/server/cli-consumers.test.ts +0 -494
  499. package/studio/server/cli.test.ts +0 -88
  500. package/studio/server/cli.ts +0 -240
  501. package/studio/server/client-package.test.ts +0 -147
  502. package/studio/server/client-package.ts +0 -266
  503. package/studio/server/detect.ts +0 -81
  504. package/studio/server/domain.test.ts +0 -77
  505. package/studio/server/domain.ts +0 -124
  506. package/studio/server/environment/dotenv-preview.test.ts +0 -39
  507. package/studio/server/environment/dotenv-preview.ts +0 -27
  508. package/studio/server/environment/files.test.ts +0 -53
  509. package/studio/server/environment/files.ts +0 -120
  510. package/studio/server/handoff/copy.ts +0 -171
  511. package/studio/server/handoff/service.test.ts +0 -22
  512. package/studio/server/handoff/service.ts +0 -62
  513. package/studio/server/index.ts +0 -148
  514. package/studio/server/instances/active.ts +0 -72
  515. package/studio/server/instances/deploy-record.test.ts +0 -31
  516. package/studio/server/instances/deploy-record.ts +0 -37
  517. package/studio/server/instances/deploy.ts +0 -56
  518. package/studio/server/instances/probe.test.ts +0 -67
  519. package/studio/server/instances/probe.ts +0 -67
  520. package/studio/server/instances/status.test.ts +0 -12
  521. package/studio/server/instances/status.ts +0 -49
  522. package/studio/server/introspect/anatomy/client-tree.ts +0 -57
  523. package/studio/server/introspect/anatomy/env-fields.ts +0 -66
  524. package/studio/server/introspect/anatomy/schema-definition.ts +0 -53
  525. package/studio/server/introspect/anatomy/source.ts +0 -181
  526. package/studio/server/introspect/anatomy/views/routes.ts +0 -114
  527. package/studio/server/introspect/anatomy/views.ts +0 -53
  528. package/studio/server/introspect/anatomy-extras.test.ts +0 -265
  529. package/studio/server/introspect/anatomy-extras.ts +0 -10
  530. package/studio/server/introspect/anatomy.test.ts +0 -41
  531. package/studio/server/introspect/anatomy.ts +0 -147
  532. package/studio/server/introspect/bundle.ts +0 -69
  533. package/studio/server/introspect/canonical-schema.test.ts +0 -179
  534. package/studio/server/introspect/canonical-schema.ts +0 -583
  535. package/studio/server/introspect/config-preview.test.ts +0 -32
  536. package/studio/server/introspect/config-preview.ts +0 -119
  537. package/studio/server/introspect/core-extractor.ts +0 -30
  538. package/studio/server/introspect/core.ts +0 -45
  539. package/studio/server/introspect/diff.test.ts +0 -124
  540. package/studio/server/introspect/diff.ts +0 -316
  541. package/studio/server/introspect/extractor.ts +0 -41
  542. package/studio/server/introspect/hash.ts +0 -24
  543. package/studio/server/introspect/overlay-tsmorph.test.ts +0 -146
  544. package/studio/server/introspect/overlay-tsmorph.ts +0 -9
  545. package/studio/server/introspect/overlay.test.ts +0 -44
  546. package/studio/server/introspect/overlay.ts +0 -40
  547. package/studio/server/introspect/revision.test.ts +0 -54
  548. package/studio/server/introspect/revision.ts +0 -49
  549. package/studio/server/introspect/runtime.test.ts +0 -157
  550. package/studio/server/introspect/runtime.ts +0 -140
  551. package/studio/server/introspect/schema-ir-json.test.ts +0 -70
  552. package/studio/server/introspect/schema-ir-json.ts +0 -151
  553. package/studio/server/introspect/schema-refs.test.ts +0 -55
  554. package/studio/server/introspect/schema-refs.ts +0 -32
  555. package/studio/server/introspect/source-overlay/annotations.ts +0 -14
  556. package/studio/server/introspect/source-overlay/handlers.ts +0 -161
  557. package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -46
  558. package/studio/server/introspect/source-overlay/project.ts +0 -248
  559. package/studio/server/introspect/source-overlay/spans.ts +0 -330
  560. package/studio/server/json.ts +0 -46
  561. package/studio/server/lifecycle.ts +0 -42
  562. package/studio/server/sse.test.ts +0 -26
  563. package/studio/server/sse.ts +0 -60
  564. package/studio/server/state/baseline.test.ts +0 -267
  565. package/studio/server/state/baseline.ts +0 -354
  566. package/studio/server/state/comments.test.ts +0 -94
  567. package/studio/server/state/comments.ts +0 -484
  568. package/studio/server/state/context.ts +0 -199
  569. package/studio/server/state/documents.ts +0 -111
  570. package/studio/server/state/integrations.ts +0 -81
  571. package/studio/server/state/layout.test.ts +0 -34
  572. package/studio/server/state/layout.ts +0 -82
  573. package/studio/server/state/settings.test.ts +0 -78
  574. package/studio/server/state/settings.ts +0 -73
  575. package/studio/server/state/store.test.ts +0 -122
  576. package/studio/server/state/store.ts +0 -146
  577. package/studio/server/state/visibility.ts +0 -48
  578. package/studio/server/views/model.test.ts +0 -57
  579. package/studio/server/views/model.ts +0 -66
  580. package/studio/server/views/runtime.ts +0 -40
  581. package/studio/server/views/selection-repository.test.ts +0 -31
  582. package/studio/server/views/selection-repository.ts +0 -60
  583. package/studio/server/views/session.test.ts +0 -73
  584. package/studio/server/views/session.ts +0 -166
  585. package/studio/server/views/target.test.ts +0 -78
  586. package/studio/server/views/target.ts +0 -222
  587. package/studio/server/watch.test.ts +0 -36
  588. package/studio/server/watch.ts +0 -93
  589. package/studio/server/workspace/catalog.test.ts +0 -17
  590. package/studio/server/workspace/catalog.ts +0 -43
  591. package/studio/server/workspace/create.test.ts +0 -37
  592. package/studio/server/workspace/create.ts +0 -162
  593. package/studio/server/workspace/git.ts +0 -75
  594. package/studio/server/workspace/updates.ts +0 -83
  595. package/studio/server/workspace-state.ts +0 -26
  596. package/studio/server/workspace-watch.ts +0 -106
  597. package/studio/shared/agent-effort.test.ts +0 -12
  598. package/studio/shared/agent-effort.ts +0 -15
  599. package/studio/shared/agent-models.test.ts +0 -9
  600. package/studio/shared/agent-models.ts +0 -14
  601. package/studio/shared/contracts/README.md +0 -16
  602. package/studio/shared/contracts/agent.ts +0 -270
  603. package/studio/shared/contracts/runtime.ts +0 -50
  604. package/studio/shared/contracts/schema.ts +0 -393
  605. package/studio/shared/contracts/surface.test.ts +0 -317
  606. package/studio/shared/contracts/workspace.ts +0 -265
  607. package/studio/shared/layout.test.ts +0 -116
  608. package/studio/shared/schema/identity.test.ts +0 -34
  609. package/studio/shared/schema/identity.ts +0 -68
  610. package/studio/shared/settings-values.test.ts +0 -18
  611. package/studio/shared/settings-values.ts +0 -20
  612. package/studio/shared/types.ts +0 -14
  613. package/studio/tsconfig.json +0 -23
  614. package/tsconfig.json +0 -14
  615. package/viewer/dist/index.html +0 -93
  616. package/viewer/dist/main.js +0 -76
  617. package/viewer/tsconfig.json +0 -13
@@ -1,494 +0,0 @@
1
- import { afterEach, describe, expect, test } from 'bun:test'
2
- import { existsSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync } from 'node:fs'
3
- import { tmpdir } from 'node:os'
4
- import { join } from 'node:path'
5
-
6
- import type { StudioSchemaBundle, ViewInfo } from '../shared/types'
7
-
8
- import { STUDIO_CLI_DESCRIPTOR_ENV } from './cli'
9
- import { activeInstanceName, listInstances, setActiveInstance } from './instances/active'
10
- import { readRememberedTarget } from './views/selection-repository'
11
- import { launchViewSession } from './views/session'
12
- import { listViewTargets } from './views/target'
13
- import { applyUpdates, getUpdates } from './workspace/updates'
14
-
15
- interface FakeResponse {
16
- stdout?: unknown
17
- stderr?: unknown
18
- exitCode?: number
19
- }
20
-
21
- interface FakeCall {
22
- args: string[]
23
- cwd: string
24
- }
25
-
26
- const priorDescriptor = process.env[STUDIO_CLI_DESCRIPTOR_ENV]
27
- const roots: string[] = []
28
-
29
- afterEach(() => {
30
- if (priorDescriptor === undefined) delete process.env[STUDIO_CLI_DESCRIPTOR_ENV]
31
- else process.env[STUDIO_CLI_DESCRIPTOR_ENV] = priorDescriptor
32
- while (roots.length > 0) rmSync(roots.pop()!, { recursive: true, force: true })
33
- })
34
-
35
- function exactArgs(args: string[]): string {
36
- return JSON.stringify(args)
37
- }
38
-
39
- function installFakeCli(responses: Array<{ args: string[]; responses: FakeResponse[] }>): {
40
- root: string
41
- calls: () => FakeCall[]
42
- } {
43
- const root = mkdtempSync(join(tmpdir(), 'studio-cli-consumer-'))
44
- roots.push(root)
45
- const scenarioFile = join(root, 'scenario.json')
46
- const callsFile = join(root, 'calls.ndjson')
47
- const entry = join(root, 'fake-cli.ts')
48
- const scenario = Object.fromEntries(
49
- responses.map((rule) => [exactArgs(rule.args), rule.responses]),
50
- )
51
- writeFileSync(scenarioFile, JSON.stringify(scenario))
52
- writeFileSync(
53
- entry,
54
- `import { appendFileSync, existsSync, readFileSync } from 'node:fs'
55
-
56
- const scenarioFile = ${JSON.stringify(scenarioFile)}
57
- const callsFile = ${JSON.stringify(callsFile)}
58
- const args = process.argv.slice(2)
59
- const prior = existsSync(callsFile)
60
- ? readFileSync(callsFile, 'utf8').split('\\n').filter(Boolean).map((line) => JSON.parse(line))
61
- : []
62
- const matchingCalls = prior.filter((call) => JSON.stringify(call.args) === JSON.stringify(args)).length
63
- appendFileSync(callsFile, JSON.stringify({ args, cwd: process.cwd() }) + '\\n')
64
- const scenario = JSON.parse(readFileSync(scenarioFile, 'utf8'))
65
- const responses = scenario[JSON.stringify(args)]
66
- const response = Array.isArray(responses) ? responses[matchingCalls] : undefined
67
- if (!response) {
68
- process.stderr.write(JSON.stringify({ message: 'Unexpected fake CLI call', args }))
69
- process.exit(91)
70
- }
71
- const render = (value) => typeof value === 'string' ? value : JSON.stringify(value)
72
- if (response.stdout !== undefined) process.stdout.write(render(response.stdout))
73
- if (response.stderr !== undefined) process.stderr.write(render(response.stderr))
74
- process.exit(response.exitCode ?? 0)
75
- `,
76
- )
77
- process.env[STUDIO_CLI_DESCRIPTOR_ENV] = JSON.stringify({
78
- version: 1,
79
- executable: process.execPath,
80
- args: [realpathSync(entry)],
81
- })
82
- return {
83
- root,
84
- calls: () =>
85
- existsSync(callsFile)
86
- ? readFileSync(callsFile, 'utf8')
87
- .split('\n')
88
- .filter(Boolean)
89
- .map((line) => JSON.parse(line) as FakeCall)
90
- : [],
91
- }
92
- }
93
-
94
- const activeArgs = ['instance', 'active', '--json']
95
- const bookmarkedArgs = ['instance', 'list', '--bookmarked', '--json']
96
- const managedArgs = ['instance', 'list', '--admin-only', '--json']
97
-
98
- describe('instance CLI orchestration', () => {
99
- test('reads active/list from the exact CLI and merges bookmarks with managed instances', async () => {
100
- const fake = installFakeCli([
101
- { args: activeArgs, responses: [{ stdout: { name: 'local' } }] },
102
- {
103
- args: bookmarkedArgs,
104
- responses: [
105
- {
106
- stdout: {
107
- active: 'staging',
108
- bookmarks: [
109
- { name: 'local', url: 'http://127.0.0.1:7200' },
110
- { name: 'staging', url: 'https://staging.example', active: true },
111
- ],
112
- },
113
- },
114
- ],
115
- },
116
- {
117
- args: managedArgs,
118
- responses: [
119
- {
120
- stdout: {
121
- instances: [
122
- { slug: 'staging', url: 'https://duplicate.example' },
123
- { slug: 'production', url: 'https://production.example' },
124
- ],
125
- },
126
- },
127
- ],
128
- },
129
- ])
130
-
131
- expect(await activeInstanceName()).toBe('local')
132
- expect(await listInstances()).toEqual({
133
- active: 'staging',
134
- instances: [
135
- {
136
- name: 'local',
137
- url: 'http://127.0.0.1:7200',
138
- active: false,
139
- kind: 'bookmark',
140
- },
141
- {
142
- name: 'staging',
143
- url: 'https://staging.example',
144
- active: true,
145
- kind: 'bookmark',
146
- },
147
- {
148
- name: 'production',
149
- url: 'https://production.example',
150
- active: false,
151
- kind: 'managed',
152
- },
153
- ],
154
- })
155
- expect(fake.calls().map((call) => call.args)).toEqual([activeArgs, bookmarkedArgs, managedArgs])
156
- })
157
-
158
- test('uses the exact non-interactive instance switch flags and re-reads CLI-owned state', async () => {
159
- const useArgs = ['instance', 'use', 'staging', '--adopt-default', '--skip-jwks-check']
160
- const fake = installFakeCli([
161
- { args: useArgs, responses: [{ stdout: 'Now using staging.\n' }] },
162
- { args: activeArgs, responses: [{ stdout: { name: 'staging' } }] },
163
- ])
164
-
165
- expect(await setActiveInstance('staging')).toEqual({
166
- ok: true,
167
- active: 'staging',
168
- output: 'Now using staging.',
169
- })
170
- expect(fake.calls().map((call) => call.args)).toEqual([useArgs, activeArgs])
171
- })
172
-
173
- test('does not invent active state from malformed or failed CLI output', async () => {
174
- const fake = installFakeCli([
175
- {
176
- args: activeArgs,
177
- responses: [
178
- { stdout: 'not-json' },
179
- {
180
- stdout: { name: 'must-not-be-used' },
181
- stderr: 'Instance store is unavailable.',
182
- exitCode: 7,
183
- },
184
- ],
185
- },
186
- ])
187
-
188
- expect(await activeInstanceName()).toBeNull()
189
- expect(await activeInstanceName()).toBeNull()
190
- expect(fake.calls().map((call) => call.args)).toEqual([activeArgs, activeArgs])
191
- })
192
- })
193
-
194
- describe('workspace update CLI orchestration', () => {
195
- test('accepts stale exit 10 and applies updates in the domain root', async () => {
196
- const checkArgs = ['update', '--check', '--json']
197
- const applyArgs = ['update', '--yes']
198
- const fake = installFakeCli([
199
- {
200
- args: checkArgs,
201
- responses: [
202
- {
203
- stdout: {
204
- stale: true,
205
- cli: {
206
- stale: true,
207
- managed: true,
208
- current: '0.7.0',
209
- latest: '0.8.0',
210
- channel: 'latest',
211
- },
212
- sdk: {
213
- stale: true,
214
- inProject: true,
215
- outdated: [{ pkg: '@astrale-os/sdk', current: '0.5.0', latest: '0.6.0' }],
216
- },
217
- },
218
- exitCode: 10,
219
- },
220
- ],
221
- },
222
- {
223
- args: applyArgs,
224
- responses: [{ stdout: 'CLI updated.\n', stderr: 'SDK updated.\n' }],
225
- },
226
- ])
227
- const domainRoot = realpathSync(fake.root)
228
-
229
- expect(await getUpdates(domainRoot)).toEqual({
230
- stale: true,
231
- cli: {
232
- stale: true,
233
- managed: true,
234
- current: '0.7.0',
235
- latest: '0.8.0',
236
- channel: 'latest',
237
- },
238
- sdk: {
239
- stale: true,
240
- inProject: true,
241
- outdated: [{ pkg: '@astrale-os/sdk', current: '0.5.0', latest: '0.6.0' }],
242
- },
243
- })
244
- expect(await applyUpdates(domainRoot)).toEqual({
245
- ok: true,
246
- output: 'CLI updated.\nSDK updated.',
247
- })
248
- expect(fake.calls()).toEqual([
249
- { args: checkArgs, cwd: domainRoot },
250
- { args: applyArgs, cwd: domainRoot },
251
- ])
252
- })
253
-
254
- test('hides the badge when check output is malformed or fails', async () => {
255
- const checkArgs = ['update', '--check', '--json']
256
- const fake = installFakeCli([
257
- {
258
- args: checkArgs,
259
- responses: [
260
- { stdout: { stale: true, cli: {}, sdk: {} }, exitCode: 10 },
261
- {
262
- stdout: {
263
- stale: true,
264
- cli: { stale: true, managed: true },
265
- sdk: {
266
- stale: true,
267
- inProject: true,
268
- outdated: [{ pkg: '@astrale-os/sdk', current: '0.5.0', latest: '0.6.0' }],
269
- },
270
- },
271
- stderr: 'Registry offline.',
272
- exitCode: 7,
273
- },
274
- ],
275
- },
276
- ])
277
- const expected = {
278
- stale: false,
279
- cli: { stale: false, managed: true },
280
- sdk: { stale: false, inProject: false, outdated: [] },
281
- }
282
-
283
- expect(await getUpdates(fake.root)).toEqual(expected)
284
- expect(await getUpdates(fake.root)).toEqual(expected)
285
- const domainRoot = realpathSync(fake.root)
286
- expect(fake.calls()).toEqual([
287
- { args: checkArgs, cwd: domainRoot },
288
- { args: checkArgs, cwd: domainRoot },
289
- ])
290
- })
291
- })
292
-
293
- const view = {
294
- slug: 'issue-detail',
295
- kind: 'unknown',
296
- viewFor: 'Issue',
297
- } satisfies ViewInfo
298
-
299
- const bundle = {
300
- ir: {
301
- views: {
302
- 'issue-detail': {
303
- name: 'issue-detail',
304
- auth: 'required',
305
- target: {
306
- kind: 'definition',
307
- definitions: [{ origin: 'issues.example.dev', kind: 'class', name: 'Issue' }],
308
- },
309
- },
310
- },
311
- },
312
- } as unknown as StudioSchemaBundle
313
-
314
- const queryArgs = [
315
- 'query',
316
- '--definition',
317
- '/:issues.example.dev:class.Issue',
318
- '--limit',
319
- '201',
320
- '--json',
321
- '-i',
322
- 'staging',
323
- ]
324
-
325
- const targetQuery = {
326
- graph: {
327
- nodes: [
328
- {
329
- id: 'issue-1',
330
- props: {
331
- 'kernel.astrale.ai:interface.Named.property.name': 'First issue',
332
- },
333
- },
334
- ],
335
- },
336
- }
337
-
338
- describe('View CLI orchestration', () => {
339
- test('queries exact target coordinates and preserves malformed/nonzero failures', async () => {
340
- const fake = installFakeCli([
341
- {
342
- args: queryArgs,
343
- responses: [
344
- { stdout: targetQuery },
345
- { stdout: { graph: { nodes: 'invalid' } } },
346
- { stderr: { message: 'Instance is offline.' }, exitCode: 7 },
347
- ],
348
- },
349
- ])
350
-
351
- expect(
352
- await listViewTargets(fake.root, 'issues.example.dev', view, bundle, 'staging', 2000),
353
- ).toEqual({
354
- status: 'available',
355
- items: [
356
- {
357
- id: 'issue-1',
358
- ref: '@issue-1',
359
- className: 'Issue',
360
- classOrigin: 'issues.example.dev',
361
- label: 'First issue',
362
- },
363
- ],
364
- selected: null,
365
- stale: null,
366
- truncated: false,
367
- })
368
- expect(
369
- await listViewTargets(fake.root, 'issues.example.dev', view, bundle, 'staging', 2000),
370
- ).toMatchObject({ status: 'unavailable', items: [] })
371
- expect(
372
- await listViewTargets(fake.root, 'issues.example.dev', view, bundle, 'staging', 2000),
373
- ).toMatchObject({ status: 'unavailable', reason: 'Instance is offline.' })
374
- expect(fake.calls().map((call) => call.args)).toEqual([queryArgs, queryArgs, queryArgs])
375
- })
376
-
377
- test('launches against the selected target, trusts route.href, and remembers the target', async () => {
378
- const launchArgs = [
379
- 'view',
380
- '/:issues.example.dev:view.issue-detail',
381
- '--target',
382
- '@issue-1',
383
- '--no-open',
384
- '--json',
385
- '-i',
386
- 'staging',
387
- ]
388
- const fake = installFakeCli([
389
- { args: activeArgs, responses: [{ stdout: { name: 'staging' } }] },
390
- { args: queryArgs, responses: [{ stdout: targetQuery }] },
391
- {
392
- args: launchArgs,
393
- responses: [
394
- {
395
- stdout: {
396
- session: {
397
- id: 'v-a1b2',
398
- pageUrl: 'http://127.0.0.1:4419/s/nonce/',
399
- view: { route: { href: 'https://shell.example.dev/views/issue-1' } },
400
- },
401
- },
402
- },
403
- ],
404
- },
405
- ])
406
-
407
- expect(
408
- await launchViewSession(
409
- fake.root,
410
- 'issues.example.dev',
411
- view,
412
- bundle,
413
- { targetId: 'issue-1' },
414
- 2000,
415
- ),
416
- ).toEqual({
417
- status: 'ready',
418
- sessionId: 'v-a1b2',
419
- pageUrl: 'http://127.0.0.1:4419/s/nonce/',
420
- viewUrl: 'https://shell.example.dev/views/issue-1',
421
- target: {
422
- id: 'issue-1',
423
- ref: '@issue-1',
424
- className: 'Issue',
425
- classOrigin: 'issues.example.dev',
426
- label: 'First issue',
427
- },
428
- })
429
- expect(readRememberedTarget(fake.root, 'staging', 'issue-detail')).toEqual({
430
- id: 'issue-1',
431
- className: 'Issue',
432
- classOrigin: 'issues.example.dev',
433
- label: 'First issue',
434
- })
435
- expect(fake.calls().map((call) => call.args)).toEqual([activeArgs, queryArgs, launchArgs])
436
- })
437
-
438
- test('does not expose a session when the CLI payload is malformed or exits nonzero', async () => {
439
- const standalone = { slug: 'dashboard', kind: 'unknown' } satisfies ViewInfo
440
- const launchArgs = [
441
- 'view',
442
- '/:issues.example.dev:view.dashboard',
443
- '--no-open',
444
- '--json',
445
- '-i',
446
- 'staging',
447
- ]
448
- const fake = installFakeCli([
449
- {
450
- args: activeArgs,
451
- responses: [{ stdout: { name: 'staging' } }, { stdout: { name: 'staging' } }],
452
- },
453
- {
454
- args: launchArgs,
455
- responses: [
456
- { stdout: { session: { id: 'v-no-route', pageUrl: 'http://127.0.0.1/' } } },
457
- {
458
- stdout: {
459
- session: {
460
- id: 'v-must-not-open',
461
- pageUrl: 'http://127.0.0.1/forbidden',
462
- view: { route: { href: 'https://shell.example.dev/forbidden' } },
463
- },
464
- },
465
- stderr: 'Permission denied.',
466
- exitCode: 7,
467
- },
468
- ],
469
- },
470
- ])
471
-
472
- const malformed = await launchViewSession(
473
- fake.root,
474
- 'issues.example.dev',
475
- standalone,
476
- null,
477
- {},
478
- 2000,
479
- )
480
- expect(malformed.status).toBe('unavailable')
481
- if (malformed.status !== 'unavailable')
482
- throw new Error('expected the malformed session to fail')
483
- expect(malformed.reason).toContain('v-no-route')
484
- expect(
485
- await launchViewSession(fake.root, 'issues.example.dev', standalone, null, {}, 2000),
486
- ).toEqual({ status: 'unavailable', reason: 'Permission denied.' })
487
- expect(fake.calls().map((call) => call.args)).toEqual([
488
- activeArgs,
489
- launchArgs,
490
- activeArgs,
491
- launchArgs,
492
- ])
493
- })
494
- })
@@ -1,88 +0,0 @@
1
- import { afterEach, expect, test } from 'bun:test'
2
- import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from 'node:fs'
3
- import { tmpdir } from 'node:os'
4
- import { join } from 'node:path'
5
-
6
- import {
7
- decodeJsonObject,
8
- runStudioCliJson,
9
- STUDIO_CLI_DESCRIPTOR_ENV,
10
- studioCliCommand,
11
- } from './cli'
12
-
13
- const priorDescriptor = process.env[STUDIO_CLI_DESCRIPTOR_ENV]
14
- const roots: string[] = []
15
-
16
- afterEach(() => {
17
- if (priorDescriptor === undefined) delete process.env[STUDIO_CLI_DESCRIPTOR_ENV]
18
- else process.env[STUDIO_CLI_DESCRIPTOR_ENV] = priorDescriptor
19
- for (const root of roots.splice(0)) rmSync(root, { recursive: true, force: true })
20
- })
21
-
22
- test('exact command rejects missing and incompatible descriptors instead of using PATH', () => {
23
- delete process.env[STUDIO_CLI_DESCRIPTOR_ENV]
24
- expect(() => studioCliCommand(['instance', 'active'])).toThrow(
25
- 'launch Studio through this Astrale CLI',
26
- )
27
- expect(() =>
28
- studioCliCommand(
29
- ['instance', 'active'],
30
- JSON.stringify({ version: 2, executable: '/usr/bin/astrale', args: [] }),
31
- ),
32
- ).toThrow('launch Studio through this Astrale CLI')
33
- })
34
-
35
- test('machine runner uses the exact descriptor, appends json mode, and versions decoded output', async () => {
36
- const root = mkdtempSync(join(tmpdir(), 'studio-cli-runner-'))
37
- roots.push(root)
38
- mkdirSync(root, { recursive: true })
39
- const entry = join(root, 'fake-cli.ts')
40
- writeFileSync(entry, `process.stdout.write(JSON.stringify({ command: process.argv.slice(2) }))\n`)
41
- process.env[STUDIO_CLI_DESCRIPTOR_ENV] = JSON.stringify({
42
- version: 1,
43
- executable: process.execPath,
44
- args: [realpathSync(entry)],
45
- })
46
-
47
- const result = await runStudioCliJson(
48
- ['query', '--definition', '/:example.dev:class.Issue'],
49
- decodeJsonObject,
50
- )
51
-
52
- expect(result).toMatchObject({
53
- version: 1,
54
- ok: true,
55
- exitCode: 0,
56
- timedOut: false,
57
- data: {
58
- command: ['query', '--definition', '/:example.dev:class.Issue', '--json'],
59
- },
60
- })
61
- })
62
-
63
- test('machine runner decodes structured CLI errors without treating them as success', async () => {
64
- const root = mkdtempSync(join(tmpdir(), 'studio-cli-error-'))
65
- roots.push(root)
66
- const entry = join(root, 'fake-cli.ts')
67
- writeFileSync(
68
- entry,
69
- `process.stderr.write(JSON.stringify({ error: 'NOT_FOUND', message: 'Missing instance.' }))
70
- process.exit(7)
71
- `,
72
- )
73
- process.env[STUDIO_CLI_DESCRIPTOR_ENV] = JSON.stringify({
74
- version: 1,
75
- executable: process.execPath,
76
- args: [realpathSync(entry)],
77
- })
78
-
79
- const result = await runStudioCliJson(['instance', 'active'], decodeJsonObject)
80
-
81
- expect(result).toMatchObject({
82
- version: 1,
83
- ok: false,
84
- exitCode: 7,
85
- detail: 'Missing instance.',
86
- data: { error: 'NOT_FOUND', message: 'Missing instance.' },
87
- })
88
- })