@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,81 +0,0 @@
1
- import type { SetupStep } from '../types'
2
-
3
- import { AGENT_BROWSER_REPO } from '../../lib/browser'
4
- import { log } from '../../lib/log'
5
- import { runInherit } from '../../lib/proc'
6
- import { confirmDefaultYes } from '../../lib/prompt'
7
- import { AGENT_BROWSER_SKILL, detectAgentBrowser, detectSkill } from '../../lib/skills'
8
-
9
- const FIX = 'npm install -g agent-browser && agent-browser install'
10
- const SKILL_FIX = `npx skills add ${AGENT_BROWSER_REPO} -g`
11
-
12
- /**
13
- * Equip — agent-browser, the tool `astrale browser` drives. Two halves: the
14
- * third-party binary (a global npm install + one-time engine download, so opt-in
15
- * and confirmed) and its agent skill (so the harness knows the commands). We
16
- * track BOTH: a skill that the harness can't load is as broken as a missing
17
- * binary, so detection requires both, and `ensure` wires a missing skill even
18
- * when the binary is already present (the "installed but not loaded" gap).
19
- */
20
- export const agentBrowserStep: SetupStep = {
21
- id: 'agent-browser',
22
- title: 'agent-browser',
23
- group: 'equip',
24
-
25
- async detect() {
26
- const haveBin = await detectAgentBrowser()
27
- const haveSkill = detectSkill(AGENT_BROWSER_SKILL).installed
28
- if (haveBin && haveSkill)
29
- return { state: 'satisfied', summary: 'agent-browser + skill installed' }
30
- if (haveBin && !haveSkill) {
31
- return {
32
- state: 'gap',
33
- summary: 'agent-browser installed, but its skill is not loaded by the harness',
34
- fixHint: SKILL_FIX,
35
- }
36
- }
37
- return { state: 'gap', summary: 'agent-browser not installed', fixHint: FIX }
38
- },
39
-
40
- async ensure() {
41
- const haveSkill = () => detectSkill(AGENT_BROWSER_SKILL).installed
42
- if ((await detectAgentBrowser()) && haveSkill()) {
43
- log.success('agent-browser already installed')
44
- return 'unchanged'
45
- }
46
-
47
- // 1) The binary — third-party global npm + engine download, so confirm it.
48
- if (!(await detectAgentBrowser())) {
49
- log.warn(`agent-browser is a third-party global npm package (${AGENT_BROWSER_REPO}).`)
50
- if (!(await confirmDefaultYes('Install agent-browser globally now?'))) {
51
- log.dim(` Skipped — install later: ${FIX} && ${SKILL_FIX}`)
52
- return 'skipped'
53
- }
54
-
55
- log.step('npm install -g agent-browser')
56
- if ((await runInherit('npm', ['install', '-g', 'agent-browser'])) !== 0) {
57
- log.warn('npm install failed — see the output above.')
58
- return 'failed'
59
- }
60
-
61
- log.step('agent-browser install (downloading the browser engine)')
62
- if ((await runInherit('agent-browser', ['install'])) !== 0) {
63
- log.warn('`agent-browser install` failed — re-run it manually.')
64
- return 'failed'
65
- }
66
- }
67
-
68
- // 2) The skill — wire it into the harness so the agent can load it. Runs even
69
- // when the binary was already present (the installed-but-not-loaded gap).
70
- if (!haveSkill()) {
71
- log.step(`${SKILL_FIX} (teaches your agent its commands)`)
72
- if ((await runInherit('npx', ['skills', 'add', AGENT_BROWSER_REPO, '-g', '-y'])) !== 0) {
73
- log.warn(`Skill install did not complete — run it later: ${SKILL_FIX}`)
74
- return 'failed'
75
- }
76
- }
77
-
78
- log.success('agent-browser ready — drive the GUI with `astrale browser`')
79
- return 'fixed'
80
- },
81
- }
@@ -1,54 +0,0 @@
1
- import type { SetupContext, SetupStep } from '../types'
2
-
3
- import { readLocalStatus } from '../../lib/local-status'
4
- import { log } from '../../lib/log'
5
- import { loginViaIdp } from '../../lib/login-flow'
6
-
7
- const FIX = 'astrale auth login'
8
-
9
- /**
10
- * Step 1 — a WorkOS-backed identity with a cached session. Provisioning an
11
- * instance requires an `idp` identity (not the local seed key), and stale
12
- * access tokens refresh on the first command when a refresh token is cached.
13
- */
14
- export const authStep: SetupStep = {
15
- id: 'auth',
16
- title: 'Sign in',
17
- group: 'connect',
18
-
19
- async detect() {
20
- const { identity } = await readLocalStatus()
21
- if (!identity || identity.source !== 'idp') {
22
- return { state: 'gap', summary: 'Not signed in', fixHint: FIX }
23
- }
24
- const session = identity.session
25
- if (!session || !session.cached) {
26
- return { state: 'gap', summary: `No cached token for "${identity.name}"`, fixHint: FIX }
27
- }
28
- if (session.requiresLogin) {
29
- return {
30
- state: 'gap',
31
- summary: `Session for "${identity.name}" requires login`,
32
- fixHint: FIX,
33
- }
34
- }
35
- return {
36
- state: 'satisfied',
37
- summary: `Signed in as ${identity.name}`,
38
- detail: identity.subject,
39
- }
40
- },
41
-
42
- async ensure(ctx: SetupContext) {
43
- const detection = await authStep.detect(ctx)
44
- if (detection.state === 'satisfied') {
45
- log.success(detection.summary)
46
- return 'unchanged'
47
- }
48
-
49
- log.step('Sign in with your Astrale account (a URL + code will appear) …')
50
- const { identityName } = await loginViaIdp({ use: true })
51
- log.success(`Signed in as "${identityName}"`)
52
- return 'fixed'
53
- },
54
- }
@@ -1,68 +0,0 @@
1
- import { existsSync } from 'node:fs'
2
- import { join } from 'node:path'
3
-
4
- import type { SetupStep } from '../types'
5
-
6
- import { readLocalStatus } from '../../lib/local-status'
7
- import { log } from '../../lib/log'
8
- import { runInherit } from '../../lib/proc'
9
- import { confirmDefaultYes, promptText } from '../../lib/prompt'
10
-
11
- /** A scaffolded domain project carries this config at its root. */
12
- function hasDomainProject(): boolean {
13
- return existsSync(join(process.cwd(), 'astrale.config.ts'))
14
- }
15
-
16
- const FIX = 'npx create-astrale-domain <name> --instance <slug>'
17
-
18
- /**
19
- * Equip — scaffold a first domain in the current directory via
20
- * `create-astrale-domain`, pre-wired to the active instance. The scaffold also
21
- * ships the astrale-domain authoring skill, so this covers that skill too.
22
- */
23
- export const domainStep: SetupStep = {
24
- id: 'domain',
25
- title: 'Scaffold a domain',
26
- group: 'equip',
27
-
28
- async detect() {
29
- if (hasDomainProject()) {
30
- return { state: 'satisfied', summary: 'domain project detected in this directory' }
31
- }
32
- return { state: 'gap', summary: 'no domain project here', fixHint: FIX }
33
- },
34
-
35
- async ensure() {
36
- if (hasDomainProject()) {
37
- log.success('Domain project already in this directory')
38
- return 'unchanged'
39
- }
40
-
41
- if (!(await confirmDefaultYes('Scaffold a new domain project here?'))) {
42
- log.dim(` Skipped — scaffold later: ${FIX}`)
43
- return 'skipped'
44
- }
45
-
46
- const name = await promptText('Domain project name', {
47
- default: 'my-domain',
48
- validate: (v) =>
49
- /^[a-z0-9][a-z0-9-]*$/.test(v) ? true : 'Use a lowercase name like my-domain',
50
- })
51
- if (!name) {
52
- log.dim(' Skipped — no name given.')
53
- return 'skipped'
54
- }
55
-
56
- const slug = (await readLocalStatus()).instance?.active
57
- const args = ['create-astrale-domain', name, ...(slug ? ['--instance', slug] : [])]
58
- log.step(`npx ${args.join(' ')}`)
59
- if ((await runInherit('npx', args)) !== 0) {
60
- log.warn('Scaffold failed — see the output above.')
61
- return 'failed'
62
- }
63
-
64
- log.success(`Domain scaffolded → ./${name}`)
65
- log.dim(` Next: cd ${name} && pnpm install && pnpm prod`)
66
- return 'fixed'
67
- },
68
- }
@@ -1,18 +0,0 @@
1
- import type { SetupStep } from '../types'
2
-
3
- import { adminStep } from './admin'
4
- import { agentBrowserStep } from './agent-browser'
5
- import { authStep } from './auth'
6
- import { domainStep } from './domain'
7
- import { instanceStep } from './instance'
8
- import { skillsStep } from './skills'
9
- import { skillsBridgeStep } from './skills-bridge'
10
-
11
- /** Required prerequisites, walked in order — each is a precondition for the next. */
12
- export const CONNECT_STEPS: SetupStep[] = [authStep, adminStep, instanceStep]
13
-
14
- /** Optional extras, offered together as a pre-checked multi-select. The skills
15
- * bridge runs first so the per-skill steps below detect against the bridged state. */
16
- export const EQUIP_STEPS: SetupStep[] = [skillsBridgeStep, skillsStep, agentBrowserStep, domainStep]
17
-
18
- export const ALL_STEPS: SetupStep[] = [...CONNECT_STEPS, ...EQUIP_STEPS]
@@ -1,206 +0,0 @@
1
- import chalk from 'chalk'
2
-
3
- import type { OwnedInstanceInfo } from '../../lib/admin-instance'
4
- import type { SetupContext, SetupStep } from '../types'
5
-
6
- import { AstraleError } from '../../errors'
7
- import { listOwnedInstancesWithIdentity } from '../../lib/admin-instance'
8
- import { normalizeInstanceKernelUrl, setActive, upsertManagedBookmark } from '../../lib/instance'
9
- import { readLocalStatus } from '../../lib/local-status'
10
- import { log, withSpinner } from '../../lib/log'
11
- import { renderInstanceHero } from '../../lib/panel'
12
- import { confirmDefaultYes, promptText, selectFrom } from '../../lib/prompt'
13
- import { provisionInstance, type ProvisionResult } from '../../lib/provision-instance'
14
- import { guiOrigin, slugError } from '../util'
15
-
16
- export type InstanceSetupDependencies = {
17
- fetchOwned: (ctx: SetupContext) => Promise<{
18
- readonly instances: OwnedInstanceInfo[]
19
- readonly identity?: string
20
- }>
21
- adopt: (info: OwnedInstanceInfo, identity?: string) => Promise<void>
22
- selectReady: (instances: OwnedInstanceInfo[]) => Promise<OwnedInstanceInfo | null>
23
- confirmCreate: () => Promise<boolean>
24
- promptSlug: () => Promise<string | undefined>
25
- provision: (slug: string) => Promise<ProvisionResult>
26
- }
27
-
28
- export type OwnedInstanceAdoptionDependencies = {
29
- upsert: typeof upsertManagedBookmark
30
- activate: (slug: string) => Promise<unknown>
31
- }
32
-
33
- /** Print the click-inviting hero for a freshly-active instance. */
34
- function hero(slug: string, kernelUrl: string): void {
35
- console.log('')
36
- console.log(renderInstanceHero(slug, guiOrigin(kernelUrl)))
37
- console.log('')
38
- }
39
-
40
- export async function adoptOwnedInstance(
41
- info: OwnedInstanceInfo,
42
- defaultIdentity?: string,
43
- deps: OwnedInstanceAdoptionDependencies = {
44
- upsert: upsertManagedBookmark,
45
- activate: setActive,
46
- },
47
- ): Promise<void> {
48
- const { repointedFrom } = await deps.upsert({
49
- key: info.slug,
50
- slug: info.slug,
51
- url: info.url,
52
- ...(info.organizationId ? { organizationId: info.organizationId } : {}),
53
- ...(defaultIdentity ? { defaultIdentity } : {}),
54
- })
55
- await deps.activate(info.slug)
56
- if (repointedFrom) {
57
- log.warn(
58
- `Bookmark "${info.slug}" repointed: ${repointedFrom} → ${normalizeInstanceKernelUrl(info.url)}`,
59
- )
60
- }
61
- log.success(`Active instance: ${info.slug}`)
62
- hero(info.slug, info.url)
63
- }
64
-
65
- function defaultDependencies(ctx: SetupContext): InstanceSetupDependencies {
66
- return {
67
- fetchOwned: (setupCtx) =>
68
- withSpinner('Checking for existing instances', !setupCtx.machine, () =>
69
- listOwnedInstancesWithIdentity(setupCtx.opts),
70
- ),
71
- adopt: adoptOwnedInstance,
72
- selectReady: (instances) =>
73
- selectFrom(
74
- 'No active instance. Pick one:',
75
- instances.map((info) => ({
76
- label: `${info.slug} ${chalk.dim(guiOrigin(info.url))}`,
77
- value: info,
78
- })),
79
- ),
80
- confirmCreate: () => confirmDefaultYes('No instances yet. Provision your first one now?'),
81
- promptSlug: () =>
82
- ctx.slug
83
- ? Promise.resolve(ctx.slug)
84
- : promptText('Pick a slug for your instance', { validate: slugError }),
85
- provision: (slug) => provisionInstance(slug, ctx.opts),
86
- }
87
- }
88
-
89
- /**
90
- * Reconcile owner-scoped admin instances when no local active bookmark exists.
91
- * A failed ownership lookup is never treated as an empty account: setup stops
92
- * before creation so a transient auth/network failure cannot create a duplicate.
93
- */
94
- export async function ensureOwnedInstance(
95
- ctx: SetupContext,
96
- deps: InstanceSetupDependencies = defaultDependencies(ctx),
97
- ): Promise<'fixed' | 'skipped'> {
98
- let inventory: Awaited<ReturnType<InstanceSetupDependencies['fetchOwned']>>
99
- try {
100
- inventory = await deps.fetchOwned(ctx)
101
- } catch (cause) {
102
- const detail = cause instanceof Error ? cause.message : String(cause)
103
- throw new AstraleError(
104
- 'INSTANCE_DISCOVERY_FAILED',
105
- `Could not check your Astrale instances: ${detail}`,
106
- 'No instance was created. Check `astrale admin status`, then rerun `astrale setup`.',
107
- )
108
- }
109
-
110
- const owned = inventory.instances
111
-
112
- const ready = owned.filter((info) => info.state === 'ready')
113
- if (ready.length === 1) {
114
- await deps.adopt(ready[0]!, inventory.identity)
115
- return 'fixed'
116
- }
117
-
118
- if (ready.length > 1) {
119
- const choice = await deps.selectReady(ready)
120
- if (choice === null) {
121
- log.dim(' Skipped — no active instance set.')
122
- return 'skipped'
123
- }
124
- await deps.adopt(choice, inventory.identity)
125
- return 'fixed'
126
- }
127
-
128
- if (owned.length > 0) {
129
- reportNotReady(owned)
130
- return 'skipped'
131
- }
132
-
133
- if (!(await deps.confirmCreate())) {
134
- log.dim(' Skipped — create one later: astrale instance create <slug>')
135
- return 'skipped'
136
- }
137
-
138
- const slug = await deps.promptSlug()
139
- if (!slug) {
140
- log.dim(' Skipped — no slug given.')
141
- return 'skipped'
142
- }
143
-
144
- const { created, selectionError } = await deps.provision(slug)
145
- if (selectionError) {
146
- const detail = selectionError instanceof Error ? selectionError.message : String(selectionError)
147
- throw new AstraleError(
148
- 'INSTANCE_SELECTION_FAILED',
149
- `Instance "${slug}" was provisioned, but the CLI could not select it: ${detail}`,
150
- `Fix local CLI storage, then run \`astrale instance use ${slug}\`.`,
151
- )
152
- }
153
- hero(slug, created.url)
154
- return 'fixed'
155
- }
156
-
157
- function reportNotReady(instances: OwnedInstanceInfo[]): void {
158
- log.warn(
159
- `${instances.length === 1 ? 'Your instance is' : 'Your instances are'} not ready; setup will not create another.`,
160
- )
161
- for (const info of instances) {
162
- const phase = info.phase && info.phase !== info.state ? ` (${info.phase})` : ''
163
- log.dim(` ${info.slug}: ${info.state}${phase} · astrale instance status ${info.slug}`)
164
- if (info.error) log.dim(` ${info.error}`)
165
- }
166
- if (instances.some((info) => info.state === 'failed')) {
167
- log.dim(
168
- ' Inspect the failure, then deliberately delete/recreate it with `astrale instance` commands.',
169
- )
170
- } else {
171
- log.dim(' Wait for provisioning to finish, then rerun `astrale setup`.')
172
- }
173
- }
174
-
175
- /**
176
- * Step 3 — an active instance, the heart of the flow. If the user already has
177
- * owned instances, adopt the sole ready one or ask among several; only a
178
- * confirmed empty owner list may fall through to first-instance provisioning.
179
- */
180
- export const instanceStep: SetupStep = {
181
- id: 'instance',
182
- title: 'Active instance',
183
- group: 'connect',
184
-
185
- async detect(ctx: SetupContext) {
186
- const { instance } = await readLocalStatus()
187
- if (instance) {
188
- return { state: 'satisfied', summary: `${instance.active} (${guiOrigin(instance.url)})` }
189
- }
190
- return {
191
- state: 'gap',
192
- summary: 'No active instance',
193
- fixHint: ctx.slug ? `astrale instance create ${ctx.slug}` : 'astrale instance create <slug>',
194
- }
195
- },
196
-
197
- async ensure(ctx: SetupContext) {
198
- const { instance } = await readLocalStatus()
199
- if (instance) {
200
- log.success(`Active instance: ${instance.active} (${guiOrigin(instance.url)})`)
201
- return 'unchanged'
202
- }
203
-
204
- return ensureOwnedInstance(ctx)
205
- },
206
- }
@@ -1,70 +0,0 @@
1
- import { existsSync, readdirSync } from 'node:fs'
2
- import { join } from 'node:path'
3
-
4
- import type { SetupStep } from '../types'
5
-
6
- import { log } from '../../lib/log'
7
- import { ensureSkillsBridge, skillsBridgeStatus } from '../../lib/skills'
8
-
9
- /**
10
- * Equip — make a workspace's own staged skills loadable. Agent tooling stages
11
- * skills under `.agents/skills`, but the harness (Claude Code et al.) only loads
12
- * `.claude/skills` (walking up to the project root). A single
13
- * `.claude/skills -> ../.agents/skills` symlink bridges every staged skill —
14
- * present and future — for this workspace and every project nested under it.
15
- * This is exactly how this monorepo wires its own skills; doing it in `setup`
16
- * means a skill landing in `.agents/skills` is loaded, not silently invisible
17
- * (the gap that let agent-browser report "installed" yet never load).
18
- *
19
- * Runs first in the equip group so the per-skill steps below detect against the
20
- * already-bridged state. Idempotent and non-destructive.
21
- */
22
- function countStaged(root: string): number {
23
- try {
24
- const dir = join(root, '.agents', 'skills')
25
- return readdirSync(dir).filter((e) => existsSync(join(dir, e, 'SKILL.md'))).length
26
- } catch {
27
- return 0
28
- }
29
- }
30
-
31
- export const skillsBridgeStep: SetupStep = {
32
- id: 'skills-bridge',
33
- title: 'workspace skills bridge',
34
- group: 'equip',
35
-
36
- async detect() {
37
- const s = skillsBridgeStatus()
38
- if (s.kind === 'none') return { state: 'satisfied', summary: 'no workspace skills to bridge' }
39
- if (s.kind === 'bridged')
40
- return { state: 'satisfied', summary: '.agents/skills bridged → the harness loads them' }
41
- if (s.kind === 'foreign')
42
- return { state: 'satisfied', summary: '.claude/skills already present — left as-is' }
43
- const n = countStaged(s.root)
44
- return {
45
- state: 'gap',
46
- summary: `${n} skill${n === 1 ? '' : 's'} in .agents/skills not loaded by the harness`,
47
- fixHint: `ln -s ../.agents/skills ${s.link}`,
48
- }
49
- },
50
-
51
- async ensure() {
52
- const before = skillsBridgeStatus()
53
- if (before.kind === 'none' || before.kind === 'bridged') return 'unchanged'
54
- if (before.kind === 'foreign') {
55
- log.dim(' .claude/skills already exists — leaving it untouched.')
56
- return 'unchanged'
57
- }
58
- const after = ensureSkillsBridge()
59
- if (after.kind === 'bridged') {
60
- log.success(
61
- `Workspace skills bridged — ${join(after.root, '.agents/skills')} → .claude/skills`,
62
- )
63
- return 'fixed'
64
- }
65
- log.warn(
66
- 'Could not create the skills bridge — create it manually: ln -s ../.agents/skills .claude/skills',
67
- )
68
- return 'failed'
69
- },
70
- }
@@ -1,59 +0,0 @@
1
- import type { SetupStep } from '../types'
2
-
3
- import { log } from '../../lib/log'
4
- import {
5
- ASTRALE_CLI_SKILL,
6
- ASTRALE_DOMAIN_SKILL,
7
- detectSkill,
8
- installSkills,
9
- SKILL_INSTALL_HINT,
10
- } from '../../lib/skills'
11
-
12
- const FIX = SKILL_INSTALL_HINT
13
-
14
- /**
15
- * Equip — the astrale agent skills. Both the astrale-cli (ops) and astrale-domain
16
- * (authoring) skills publish from the one public `astrale-os/cli` repo, so a
17
- * single `npx skills add astrale-os/cli -g` installs both, globally. We don't
18
- * reimplement skill installation; we detect presence and delegate to `npx skills
19
- * add` (the skill package manager). A global (user-level) install equips every
20
- * project on the machine, so a freshly scaffolded domain has the skills without
21
- * shipping its own copy.
22
- */
23
- const bothInstalled = (): boolean =>
24
- detectSkill(ASTRALE_CLI_SKILL).installed && detectSkill(ASTRALE_DOMAIN_SKILL).installed
25
-
26
- export const skillsStep: SetupStep = {
27
- id: 'skills',
28
- title: 'astrale agent skills (cli + domain)',
29
- group: 'equip',
30
-
31
- async detect() {
32
- if (bothInstalled()) {
33
- return { state: 'satisfied', summary: 'astrale-cli + astrale-domain skills installed' }
34
- }
35
- const have = detectSkill(ASTRALE_CLI_SKILL).installed
36
- ? 'astrale-domain'
37
- : 'astrale agent skills'
38
- return { state: 'gap', summary: `${have} not installed`, fixHint: FIX }
39
- },
40
-
41
- async ensure() {
42
- if (bothInstalled()) {
43
- log.success('astrale-cli + astrale-domain skills already installed')
44
- return 'unchanged'
45
- }
46
-
47
- log.step(`Installing the astrale agent skills — ${FIX}`)
48
- if (!(await installSkills())) {
49
- log.warn(`Skill install did not complete — run it later: ${FIX}`)
50
- return 'failed'
51
- }
52
- if (bothInstalled()) {
53
- log.success('astrale-cli + astrale-domain skills installed')
54
- } else {
55
- log.success('astrale-cli skill installed')
56
- }
57
- return 'fixed'
58
- },
59
- }
@@ -1,61 +0,0 @@
1
- import type { AdminTargetCommandOpts } from '../lib/admin-target'
2
-
3
- /**
4
- * The setup reconciler models onboarding as a list of small, independent steps,
5
- * each able to (a) `detect` its state without side effects and (b) `ensure` its
6
- * state interactively, taking the user by the hand. `detect` powers the
7
- * read-only plan + checklist (and the agent-facing `--plan` JSON); `ensure` is
8
- * the hand-held fix. Both are idempotent — re-running setup when everything is
9
- * already satisfied just prints a row of ✔.
10
- */
11
-
12
- export type StepState = 'satisfied' | 'gap' | 'broken'
13
-
14
- export type StepDetection = {
15
- state: StepState
16
- /** One-line status for the checklist (no symbol — the renderer adds it). */
17
- summary: string
18
- /** Optional dim detail line. */
19
- detail?: string
20
- /** The granular command an agent (or a human) would run to close the gap. */
21
- fixHint?: string
22
- }
23
-
24
- export type StepOutcome = 'fixed' | 'unchanged' | 'skipped' | 'failed'
25
-
26
- export type SetupOpts = AdminTargetCommandOpts & {
27
- /** Read-only: print the plan and exit without mutating anything. */
28
- plan?: boolean
29
- json?: boolean
30
- raw?: boolean
31
- // Global flags (program.ts) that force non-interactive.
32
- ci?: boolean
33
- noPrompt?: boolean
34
- // Threaded into admin-kernel calls (provisioning, instance listing).
35
- as?: string
36
- creds?: string
37
- timeout?: string
38
- debug?: boolean
39
- }
40
-
41
- export type SetupContext = {
42
- /** TTY and not --ci / --no-prompt / CI: ok to prompt and mutate. */
43
- interactive: boolean
44
- /** isMachine(opts): --json / --raw or piped — structured output, no spinners. */
45
- machine: boolean
46
- opts: SetupOpts
47
- /** Instance slug hint from the positional arg, used when provisioning. */
48
- slug?: string
49
- }
50
-
51
- export type StepGroup = 'connect' | 'equip'
52
-
53
- export type SetupStep = {
54
- id: string
55
- title: string
56
- group: StepGroup
57
- /** Read-only probe for the plan + checklist. Never prompts, never mutates. */
58
- detect: (ctx: SetupContext) => Promise<StepDetection>
59
- /** Interactive, idempotent hand-holding. May print rich output (e.g. a hero). */
60
- ensure: (ctx: SetupContext) => Promise<StepOutcome>
61
- }
package/src/setup/util.ts DELETED
@@ -1,34 +0,0 @@
1
- import { validateSlug, validateUrl } from '../lib/validation'
2
-
3
- /**
4
- * The clickable GUI origin for an instance — its kernel URL stripped of the
5
- * `/api` path bookmarks carry (`https://app.eu.astrale.ai/api` →
6
- * `https://app.eu.astrale.ai`). This is the URL we put in front of the user.
7
- */
8
- export function guiOrigin(kernelUrl: string): string {
9
- try {
10
- return new URL(kernelUrl).origin
11
- } catch {
12
- return kernelUrl
13
- }
14
- }
15
-
16
- /** inquirer `validate`: true when the slug is valid, else the human message. */
17
- export function slugError(value: string): true | string {
18
- try {
19
- validateSlug(value)
20
- return true
21
- } catch (e) {
22
- return e instanceof Error ? e.message : 'Invalid slug'
23
- }
24
- }
25
-
26
- /** inquirer `validate`: true when the value is an http(s) URL, else the message. */
27
- export function urlError(value: string): true | string {
28
- try {
29
- validateUrl(value)
30
- return true
31
- } catch (e) {
32
- return e instanceof Error ? e.message : 'Invalid URL'
33
- }
34
- }