@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
package/src/lib/update.ts DELETED
@@ -1,409 +0,0 @@
1
- import { createHash } from 'node:crypto'
2
- import {
3
- chmod,
4
- copyFile,
5
- mkdir,
6
- mkdtemp,
7
- readFile,
8
- realpath,
9
- rename,
10
- rm,
11
- writeFile,
12
- } from 'node:fs/promises'
13
- import { tmpdir } from 'node:os'
14
- import { dirname, join } from 'node:path'
15
- import { z } from 'zod'
16
-
17
- import { AstraleError } from '../errors'
18
- import { INSTALL_PATH } from '../state/index'
19
- import { run } from './proc'
20
-
21
- const DEFAULT_REPO = 'astrale-os/cli'
22
- export const DEFAULT_UPDATE_CHANNEL = 'beta'
23
-
24
- export const InstallMetadataSchema = z.object({
25
- method: z.literal('script'),
26
- channel: z.string().min(1).default(DEFAULT_UPDATE_CHANNEL),
27
- version: z.string().min(1).optional(),
28
- repo: z.string().min(1).default(DEFAULT_REPO),
29
- bin: z.string().min(1),
30
- installedAt: z.string().optional(),
31
- })
32
-
33
- export type InstallMetadata = z.infer<typeof InstallMetadataSchema>
34
-
35
- const ManifestAssetSchema = z.object({
36
- name: z.string().min(1),
37
- sha256: z
38
- .string()
39
- .regex(/^[a-fA-F0-9]{64}$/)
40
- .optional(),
41
- })
42
-
43
- export const UpdateManifestSchema = z.object({
44
- version: z.string().min(1),
45
- binaryVersion: z.string().min(1).optional(),
46
- channel: z.string().min(1),
47
- repo: z.string().min(1).optional(),
48
- assets: z.record(
49
- z.string(),
50
- z.union([
51
- ManifestAssetSchema,
52
- z
53
- .string()
54
- .min(1)
55
- .transform((name) => ({ name })),
56
- ]),
57
- ),
58
- })
59
-
60
- export type UpdateManifest = z.infer<typeof UpdateManifestSchema>
61
-
62
- export type Platform = {
63
- os: 'darwin' | 'linux'
64
- arch: 'arm64' | 'x64'
65
- }
66
-
67
- export type UpdateRequest = {
68
- check?: boolean
69
- channel?: string
70
- version?: string
71
- currentVersion: string
72
- platform?: Platform
73
- installPath?: string
74
- execution?: UpdateExecution
75
- }
76
-
77
- export type UpdateExecution =
78
- | { kind: 'standalone'; executable: string }
79
- | { kind: 'package-managed'; executable: string }
80
-
81
- const admittedScriptInstall = Symbol('admittedScriptInstall')
82
- export type AdmittedScriptInstall = Readonly<{
83
- metadata: InstallMetadata
84
- executable: string
85
- [admittedScriptInstall]: true
86
- }>
87
-
88
- export type UpdateResult =
89
- | {
90
- status: 'managed'
91
- currentVersion: string
92
- executable: string
93
- }
94
- | {
95
- status: 'up-to-date'
96
- currentVersion: string
97
- latestVersion: string
98
- channel: string
99
- }
100
- | {
101
- status: 'available'
102
- currentVersion: string
103
- latestVersion: string
104
- channel: string
105
- }
106
- | {
107
- status: 'updated'
108
- previousVersion: string
109
- currentVersion: string
110
- channel: string
111
- bin: string
112
- }
113
-
114
- export function detectPlatform(): Platform {
115
- const os = process.platform
116
- const arch = process.arch
117
- if (os !== 'darwin' && os !== 'linux') {
118
- throw new AstraleError(
119
- 'UNSUPPORTED_PLATFORM',
120
- `Unsupported OS "${os}" — Astrale update supports macOS and Linux.`,
121
- )
122
- }
123
- if (arch !== 'arm64' && arch !== 'x64') {
124
- throw new AstraleError(
125
- 'UNSUPPORTED_PLATFORM',
126
- `Unsupported CPU architecture "${arch}" — Astrale update supports arm64 and x64.`,
127
- )
128
- }
129
- return { os, arch }
130
- }
131
-
132
- export function platformKey(platform: Platform): string {
133
- return `${platform.os}-${platform.arch}`
134
- }
135
-
136
- export function classifyUpdateExecution(input: {
137
- bunVersion?: string
138
- executable: string
139
- entry?: string
140
- }): UpdateExecution {
141
- return input.bunVersion && input.entry?.startsWith('/$bunfs/')
142
- ? { kind: 'standalone', executable: input.executable }
143
- : { kind: 'package-managed', executable: input.executable }
144
- }
145
-
146
- export function detectUpdateExecution(): UpdateExecution {
147
- return classifyUpdateExecution({
148
- bunVersion: (process.versions as { bun?: string }).bun,
149
- executable: process.execPath,
150
- entry: process.argv[1],
151
- })
152
- }
153
-
154
- export function packageManagedUpdateError(executable: string): AstraleError {
155
- return new AstraleError(
156
- 'UPDATE_PACKAGE_MANAGED',
157
- 'This Astrale build is managed by your package manager.',
158
- `Active binary: ${executable}. Update it with npm, pnpm, or bun; or put the official script installation first on PATH.`,
159
- )
160
- }
161
-
162
- export async function readInstallMetadata(path = INSTALL_PATH): Promise<InstallMetadata> {
163
- let raw: string
164
- try {
165
- raw = await readFile(path, 'utf8')
166
- } catch (error) {
167
- if (!isMissingFile(error)) throw error
168
- throw new AstraleError(
169
- 'UPDATE_NOT_SCRIPT_INSTALLED',
170
- 'Astrale was not installed by the official install script.',
171
- 'Reinstall with: curl -fsSL https://raw.githubusercontent.com/astrale-os/cli/main/install.sh | sh',
172
- )
173
- }
174
-
175
- let decoded: unknown
176
- try {
177
- decoded = JSON.parse(raw)
178
- } catch {
179
- throw badInstallMetadata(path)
180
- }
181
- const parsed = InstallMetadataSchema.safeParse(decoded)
182
- if (!parsed.success) {
183
- throw badInstallMetadata(path)
184
- }
185
- return parsed.data
186
- }
187
-
188
- function isMissingFile(error: unknown): error is NodeJS.ErrnoException {
189
- return error instanceof Error && 'code' in error && error.code === 'ENOENT'
190
- }
191
-
192
- function badInstallMetadata(path: string): AstraleError {
193
- return new AstraleError(
194
- 'UPDATE_BAD_INSTALL_METADATA',
195
- `Invalid install metadata at ${path}.`,
196
- 'Reinstall with: curl -fsSL https://raw.githubusercontent.com/astrale-os/cli/main/install.sh | sh',
197
- )
198
- }
199
-
200
- export async function admitScriptInstall(
201
- meta: InstallMetadata,
202
- execution: Extract<UpdateExecution, { kind: 'standalone' }>,
203
- ): Promise<AdmittedScriptInstall> {
204
- const [running, recorded] = await Promise.all([
205
- realpathIfExists(execution.executable),
206
- realpathIfExists(meta.bin),
207
- ])
208
- if (running === undefined || recorded === undefined || running !== recorded) {
209
- throw new AstraleError(
210
- 'UPDATE_INSTALL_MISMATCH',
211
- 'The running Astrale binary does not own the recorded script installation.',
212
- `Running binary: ${execution.executable}; recorded binary: ${meta.bin}. Refusing to replace a different installation.`,
213
- )
214
- }
215
- return Object.freeze({
216
- metadata: meta,
217
- executable: running,
218
- [admittedScriptInstall]: true as const,
219
- })
220
- }
221
-
222
- async function realpathIfExists(path: string): Promise<string | undefined> {
223
- try {
224
- return await realpath(path)
225
- } catch (error) {
226
- if (isMissingFile(error)) return undefined
227
- throw error
228
- }
229
- }
230
-
231
- export async function writeInstallMetadata(
232
- meta: InstallMetadata,
233
- path = INSTALL_PATH,
234
- ): Promise<void> {
235
- await mkdir(dirname(path), { recursive: true })
236
- await writeFile(path, JSON.stringify(meta, null, 2) + '\n')
237
- }
238
-
239
- export function releaseBase(
240
- meta: InstallMetadata,
241
- req: Pick<UpdateRequest, 'channel' | 'version'>,
242
- ): string {
243
- if (process.env.ASTRALE_UPDATE_BASE) return process.env.ASTRALE_UPDATE_BASE.replace(/\/+$/, '')
244
- const repo = meta.repo || DEFAULT_REPO
245
- if (req.version) {
246
- const version = req.version.replace(/^cli\/v/, '').replace(/^v/, '')
247
- return `https://github.com/${repo}/releases/download/cli/v${version}`
248
- }
249
- return `https://github.com/${repo}/releases/download/${req.channel ?? meta.channel ?? DEFAULT_UPDATE_CHANNEL}`
250
- }
251
-
252
- export async function fetchManifest(base: string): Promise<UpdateManifest> {
253
- const raw = await readUrlText(`${base}/manifest.json`)
254
- return UpdateManifestSchema.parse(JSON.parse(raw))
255
- }
256
-
257
- export function shouldUpdate(currentVersion: string, manifestVersion: string): boolean {
258
- return currentVersion !== manifestVersion
259
- }
260
-
261
- export async function updateAstrale(req: UpdateRequest): Promise<UpdateResult> {
262
- const execution = req.execution ?? detectUpdateExecution()
263
- if (execution.kind === 'package-managed') {
264
- return {
265
- status: 'managed',
266
- currentVersion: req.currentVersion,
267
- executable: execution.executable,
268
- }
269
- }
270
-
271
- const install = await admitScriptInstall(await readInstallMetadata(req.installPath), execution)
272
- const meta = install.metadata
273
- const currentVersion = meta.version ?? req.currentVersion
274
- const channel = req.channel ?? meta.channel ?? DEFAULT_UPDATE_CHANNEL
275
- const platform = req.platform ?? detectPlatform()
276
- const key = platformKey(platform)
277
- const base = releaseBase(meta, { channel, version: req.version })
278
- const manifest = await fetchManifest(base)
279
- const asset = manifest.assets[key]
280
- if (!asset) {
281
- throw new AstraleError(
282
- 'UPDATE_ASSET_NOT_FOUND',
283
- `No Astrale CLI release asset for ${key}.`,
284
- `Available platforms: ${Object.keys(manifest.assets).join(', ')}`,
285
- )
286
- }
287
-
288
- if (!shouldUpdate(currentVersion, manifest.version)) {
289
- return {
290
- status: 'up-to-date',
291
- currentVersion,
292
- latestVersion: manifest.version,
293
- channel: manifest.channel,
294
- }
295
- }
296
-
297
- if (req.check) {
298
- return {
299
- status: 'available',
300
- currentVersion,
301
- latestVersion: manifest.version,
302
- channel: manifest.channel,
303
- }
304
- }
305
-
306
- const tmp = await mkdtemp(join(tmpdir(), 'astrale-update-'))
307
- try {
308
- const archive = join(tmp, asset.name)
309
- await downloadToFile(`${base}/${asset.name}`, archive)
310
- const manifestChecksum = 'sha256' in asset ? asset.sha256 : undefined
311
- const expected = manifestChecksum ?? (await fetchChecksum(base, asset.name))
312
- const actual = await sha256File(archive)
313
- if (actual !== expected.toLowerCase()) {
314
- throw new AstraleError(
315
- 'UPDATE_CHECKSUM_MISMATCH',
316
- `Checksum mismatch for ${asset.name}.`,
317
- `Expected ${expected}; got ${actual}.`,
318
- )
319
- }
320
-
321
- await extractTarGz(archive, tmp)
322
- const nextBin = join(tmp, 'astrale')
323
- await chmod(nextBin, 0o755)
324
- await smokeVersion(nextBin, manifest.binaryVersion ?? manifest.version)
325
-
326
- const previous = `${meta.bin}.previous`
327
- const staged = `${meta.bin}.next`
328
- await copyFile(meta.bin, previous).catch(() => undefined)
329
- await copyFile(nextBin, staged)
330
- await chmod(staged, 0o755)
331
- await rename(staged, meta.bin)
332
-
333
- await writeInstallMetadata(
334
- {
335
- ...meta,
336
- channel: manifest.channel,
337
- version: manifest.version,
338
- installedAt: new Date().toISOString(),
339
- },
340
- req.installPath,
341
- )
342
-
343
- return {
344
- status: 'updated',
345
- previousVersion: currentVersion,
346
- currentVersion: manifest.version,
347
- channel: manifest.channel,
348
- bin: meta.bin,
349
- }
350
- } finally {
351
- await rm(tmp, { recursive: true, force: true })
352
- }
353
- }
354
-
355
- async function readUrlText(url: string): Promise<string> {
356
- if (url.startsWith('file://')) {
357
- return readFile(new URL(url), 'utf8')
358
- }
359
- const res = await fetch(url)
360
- if (!res.ok) throw new Error(`GET ${url} failed: HTTP ${res.status}`)
361
- return res.text()
362
- }
363
-
364
- async function downloadToFile(url: string, path: string): Promise<void> {
365
- if (url.startsWith('file://')) {
366
- await copyFile(new URL(url), path)
367
- return
368
- }
369
- const res = await fetch(url)
370
- if (!res.ok) throw new Error(`GET ${url} failed: HTTP ${res.status}`)
371
- const bytes = new Uint8Array(await res.arrayBuffer())
372
- await writeFile(path, bytes)
373
- }
374
-
375
- async function fetchChecksum(base: string, assetName: string): Promise<string> {
376
- const raw = await readUrlText(`${base}/sha256sums.txt`)
377
- for (const line of raw.split(/\r?\n/)) {
378
- const [sha, file] = line.trim().split(/\s+/, 2)
379
- if (!sha || !file) continue
380
- if (file.replace(/^\*/, '') === assetName && /^[a-fA-F0-9]{64}$/.test(sha)) return sha
381
- }
382
- throw new AstraleError(
383
- 'UPDATE_CHECKSUM_NOT_FOUND',
384
- `Checksum entry not found for ${assetName}.`,
385
- `Release base: ${base}`,
386
- )
387
- }
388
-
389
- async function sha256File(path: string): Promise<string> {
390
- const hash = createHash('sha256')
391
- hash.update(await readFile(path))
392
- return hash.digest('hex')
393
- }
394
-
395
- async function extractTarGz(archive: string, cwd: string): Promise<void> {
396
- const { code, stderr } = await run('tar', ['-xzf', archive, '-C', cwd])
397
- if (code !== 0) {
398
- throw new Error(`Could not extract update archive: ${stderr.trim()}`)
399
- }
400
- }
401
-
402
- async function smokeVersion(bin: string, expectedVersion: string): Promise<void> {
403
- const { code, stdout, stderr } = await run(bin, ['--version'])
404
- if (code !== 0) throw new Error(`Updated binary failed --version: ${stderr.trim()}`)
405
- const actual = stdout.trim()
406
- if (actual !== expectedVersion) {
407
- throw new Error(`Updated binary reported version ${actual}, expected ${expectedVersion}`)
408
- }
409
- }
@@ -1,24 +0,0 @@
1
- import type { IdentityStore } from '../identity/index'
2
- import type { InstanceStore } from './instance'
3
-
4
- import { resolveInstanceKey } from './instance'
5
-
6
- export type UseTarget =
7
- | { kind: 'identity'; name: string }
8
- | { kind: 'instance'; name: string }
9
- | { kind: 'ambiguous'; name: string }
10
- | { kind: 'missing'; name: string }
11
-
12
- export function resolveUseTarget(
13
- name: string,
14
- instances: InstanceStore,
15
- identities: IdentityStore,
16
- ): UseTarget {
17
- const identityExists = !!identities.identities[name]
18
- const instanceKey = resolveInstanceKey(instances, name)
19
-
20
- if (identityExists && instanceKey) return { kind: 'ambiguous', name }
21
- if (identityExists) return { kind: 'identity', name }
22
- if (instanceKey) return { kind: 'instance', name: instanceKey }
23
- return { kind: 'missing', name }
24
- }
@@ -1,59 +0,0 @@
1
- import { isDnsLabel } from '@astrale-os/sdk/value'
2
- import { z } from 'zod'
3
-
4
- import { ReservedSlugError } from '../errors'
5
-
6
- // Shared validators + schema fragments used by both instance and identity
7
- // registries — kept in a leaf module to avoid circular imports.
8
-
9
- const NAME_RE = /^[a-zA-Z0-9_.-]+$/
10
- // `host` is the reserved slug of the host/manager kernel (SPEC §5.2); `manager` is the legacy name.
11
- const RESERVED_SLUGS = new Set(['manager', 'host'])
12
-
13
- export { RESERVED_SLUGS }
14
-
15
- export function validateName(name: string, entity: string): void {
16
- if (!name || !NAME_RE.test(name)) {
17
- throw new Error(
18
- `Invalid ${entity.toLowerCase()} name "${name}" — must be non-empty and contain only letters, digits, hyphens, underscores, and dots`,
19
- )
20
- }
21
- }
22
-
23
- export function validateSlug(slug: string): void {
24
- // Canonical Core DNS-label rule: a slug becomes a
25
- // hostname label, so reject anything not DNS-safe (§4.7).
26
- if (!slug || !isDnsLabel(slug)) {
27
- throw new Error(
28
- `Invalid slug "${slug}" — must be a lowercase DNS label [a-z0-9-], ≤63 chars, no leading/trailing hyphen (§4.7)`,
29
- )
30
- }
31
- if (RESERVED_SLUGS.has(slug)) {
32
- throw new ReservedSlugError(slug)
33
- }
34
- }
35
-
36
- export function validateUrl(url: string): void {
37
- try {
38
- const parsed = new URL(url)
39
- if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
40
- throw new Error('not http(s)')
41
- }
42
- } catch {
43
- throw new Error(`Invalid URL "${url}" — expected a valid http:// or https:// URL`)
44
- }
45
- }
46
-
47
- /** Non-throwing predicate form of `validateUrl`. */
48
- export function isHttpUrl(url: string): boolean {
49
- try {
50
- validateUrl(url)
51
- return true
52
- } catch {
53
- return false
54
- }
55
- }
56
-
57
- /** `local` = only this machine. `remote` = mirrored via astrale cloud (§2.7). */
58
- export const RegistryModeSchema = z.enum(['local', 'remote'])
59
- export type RegistryMode = z.infer<typeof RegistryModeSchema>
@@ -1,78 +0,0 @@
1
- import { existsSync, statSync } from 'node:fs'
2
- import { copyFile } from 'node:fs/promises'
3
- import { dirname, join } from 'node:path'
4
- import { fileURLToPath } from 'node:url'
5
-
6
- /**
7
- * The prebuilt host-page bundle, shipped next to the CLI module
8
- * (`<pkg>/viewer/dist`). The module URL is authoritative because npm global
9
- * installs expose the CLI through a bin symlink outside the package root.
10
- */
11
- export function viewerDistDir(moduleUrl = import.meta.url, entry = process.argv[1] ?? '.'): string {
12
- const override = process.env.ASTRALE_VIEWER_DIR
13
- if (override) return override
14
-
15
- const moduleDirectory = dirname(fileURLToPath(moduleUrl))
16
- const published = join(moduleDirectory, '..', 'viewer', 'dist')
17
- const source = join(moduleDirectory, '..', '..', '..', 'viewer', 'dist')
18
- const legacy = join(dirname(entry), '..', 'viewer', 'dist')
19
- const complete = [published, source, legacy].find(hasViewerBundle)
20
- if (complete) return complete
21
-
22
- // A source checkout may intentionally omit generated dist assets. Keep the
23
- // source-derived destination so ensureViewerAssets can build it on demand.
24
- if (hasViewerSource(join(source, '..'))) return source
25
-
26
- // Published installs cannot rebuild: preserve the package-relative path in
27
- // the diagnostic instead of pointing at the npm prefix beside the bin link.
28
- return published
29
- }
30
-
31
- /** Ensure the host bundle exists; on a dev checkout, build it with Bun. */
32
- export async function ensureViewerAssets(
33
- moduleUrl = import.meta.url,
34
- entry = process.argv[1] ?? '.',
35
- ): Promise<string> {
36
- const dist = viewerDistDir(moduleUrl, entry)
37
- const srcDir = join(dist, '..')
38
- if (hasViewerBundle(dist) && !viewerSourceIsNewer(srcDir, dist)) return dist
39
- const bun = (
40
- globalThis as { Bun?: { build: (o: object) => Promise<{ success: boolean; logs: unknown[] }> } }
41
- ).Bun
42
- if (bun && hasViewerSource(srcDir)) {
43
- const result = await bun.build({
44
- entrypoints: [join(srcDir, 'main.ts')],
45
- outdir: dist,
46
- target: 'browser',
47
- minify: false,
48
- })
49
- if (!result.success) throw new Error(`viewer build failed: ${result.logs.join('\n')}`)
50
- await copyFile(join(srcDir, 'index.html'), join(dist, 'index.html'))
51
- return dist
52
- }
53
- throw new Error(
54
- `viewer bundle missing at ${dist} — reinstall the CLI (or run \`bun scripts/build.ts\` in a dev checkout)`,
55
- )
56
- }
57
-
58
- function hasViewerBundle(directory: string): boolean {
59
- return existsSync(join(directory, 'main.js')) && existsSync(join(directory, 'index.html'))
60
- }
61
-
62
- function hasViewerSource(directory: string): boolean {
63
- return existsSync(join(directory, 'main.ts')) && existsSync(join(directory, 'index.html'))
64
- }
65
-
66
- function viewerSourceIsNewer(source: string, dist: string): boolean {
67
- if (!hasViewerSource(source)) return false
68
- if (!hasViewerBundle(dist)) return true
69
- const newestSource = Math.max(
70
- statSync(join(source, 'main.ts')).mtimeMs,
71
- statSync(join(source, 'index.html')).mtimeMs,
72
- )
73
- const oldestOutput = Math.min(
74
- statSync(join(dist, 'main.js')).mtimeMs,
75
- statSync(join(dist, 'index.html')).mtimeMs,
76
- )
77
- return newestSource > oldestOutput
78
- }
@@ -1,67 +0,0 @@
1
- import type { IntentMessage, MountedWindow, ResolvedView, Shell } from '@astrale-os/shell'
2
-
3
- export interface OpenIntentHost {
4
- current(): MountedWindow | null
5
- setCurrent(window: MountedWindow): void
6
- mount(view: ResolvedView): Promise<MountedWindow>
7
- opened(view: ResolvedView): void
8
- failed(error: unknown): void
9
- reply(message: IntentMessage<'open'>, windowId: string): void
10
- reject(message: IntentMessage<'open'>, error: unknown): void
11
- }
12
-
13
- /** Register the root host's serialized node-to-View navigation handler. */
14
- export function installOpenIntentHandler(shell: Shell, host: OpenIntentHost): () => void {
15
- let queue = Promise.resolve()
16
- return shell.onIntent('open', (message) => {
17
- const run = queue.then(() => handleOpenIntent(shell, host, message))
18
- queue = run.catch(() => {})
19
- return run
20
- })
21
- }
22
-
23
- export async function handleOpenIntent(
24
- shell: Pick<Shell, 'views'>,
25
- host: OpenIntentHost,
26
- message: IntentMessage<'open'>,
27
- ): Promise<void> {
28
- const { nodeId, viewId } = message.envelope.payload
29
- try {
30
- const selected = selectResolvedView(await shell.views.resolve(nodeId), viewId)
31
- const previous = host.current()
32
- const next = await host.mount(selected)
33
-
34
- host.setCurrent(next)
35
- host.opened(selected)
36
- // A correlated requester is normally `previous`; answer while its channel
37
- // still exists, then retire the old mount.
38
- host.reply(message, next.windowId)
39
-
40
- if (previous && previous.windowId !== next.windowId) {
41
- try {
42
- const closed = await previous.close({ force: true })
43
- if (closed.kind === 'refused') {
44
- host.failed(new Error(closed.reason ?? `Window ${previous.windowId} refused to close`))
45
- }
46
- } catch (error) {
47
- host.failed(error)
48
- }
49
- }
50
- } catch (error) {
51
- host.reject(message, error)
52
- host.failed(error)
53
- }
54
- }
55
-
56
- export function selectResolvedView(
57
- views: readonly ResolvedView[],
58
- viewId: string | undefined,
59
- ): ResolvedView {
60
- const selected = viewId
61
- ? views.find((view) => view.route.key === viewId || `/:${view.route.key}` === viewId)
62
- : views[0]
63
- if (selected) return selected
64
- throw new Error(
65
- viewId ? `View ${viewId} does not resolve for this node` : 'No view resolves for this node',
66
- )
67
- }
@@ -1,19 +0,0 @@
1
- import { join } from 'node:path'
2
-
3
- import { withFileLock } from '../../state/index'
4
- import { VIEW_DIR } from './session'
5
-
6
- const VIEW_PORT_LOCK = join(VIEW_DIR, 'ports.lock')
7
-
8
- /**
9
- * Keep the free-port probe and detached server startup in one cross-process
10
- * critical section. A probe alone is only advisory: without this lock, two
11
- * concurrent `astrale view` processes can both observe 4419 as free before
12
- * either child binds it.
13
- */
14
- export function withViewPortAllocationLock<T>(
15
- fn: () => Promise<T>,
16
- lockPath = VIEW_PORT_LOCK,
17
- ): Promise<T> {
18
- return withFileLock(lockPath, fn)
19
- }