@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,136 +0,0 @@
1
- import chalk from 'chalk'
2
-
3
- import type { KernelCommandOpts } from '../../connection'
4
- import type { CommandDefinition } from '../../program/index'
5
-
6
- import { formatKernelError } from '../../connection/errors'
7
- import { publishAdminDomain } from '../../lib/admin-domain'
8
- import { ADMIN_TARGET_OPTIONS, type AdminTargetCommandOpts } from '../../lib/admin-target'
9
- import { domainPublicationUrl } from '../../lib/domain-publication'
10
- import { withSpinner } from '../../lib/log'
11
- import { isMachine, output } from '../../lib/output'
12
- import { promptText } from '../../lib/prompt'
13
- import { isHttpUrl, validateName, validateUrl } from '../../lib/validation'
14
-
15
- type PublishOpts = KernelCommandOpts &
16
- AdminTargetCommandOpts & {
17
- origin?: string
18
- name?: string
19
- // `--public-url`, not `--url`: the global `--url` already means "target this
20
- // kernel" (KERNEL_PASSTHROUGH_OPTIONS). This is the domain's own public
21
- // address the kernel installs from — named for the role, not the substrate.
22
- publicUrl?: string
23
- description?: string
24
- installByDefault?: boolean
25
- // Global flags (program.ts) that force non-interactive — mirrors `instance use`.
26
- ci?: boolean
27
- noPrompt?: boolean
28
- }
29
-
30
- /** Host of a URL (the natural `origin` default), or undefined if unparseable. */
31
- function hostOf(url?: string): string | undefined {
32
- if (!url) return undefined
33
- try {
34
- return new URL(url).host
35
- } catch {
36
- return undefined
37
- }
38
- }
39
-
40
- export default {
41
- name: 'publish',
42
- description: 'Register a deployed domain in the admin catalog (DomainEntry.publish)',
43
- afterHelpText: `
44
- Behavior:
45
- Upserts a catalog entry on the configured admin kernel: a domain's addressing
46
- \`origin\`, registry \`name\`, and published \`url\` (no bytes, no version — the
47
- author deploys the worker independently; publish just points the registry at
48
- it). Idempotent: re-publishing the same name updates its url — and a publish
49
- that would change nothing is reported as "already up to date" (no write).
50
-
51
- Publishing only makes the domain INSTALLABLE. Mount it on an instance with
52
- \`astrale domain install <url>\` (or rely on the admin's install-by-default
53
- policy). Deployment and catalog publication are separate owners: run the
54
- project's \`astrale-domain deploy <environment>\`, then publish its observed
55
- public URL with this command.
56
-
57
- Run in a terminal with flags omitted and it PROMPTS for origin / name /
58
- public-url (origin defaults to the URL host, name to the origin's first
59
- label). With no TTY — or \`--ci\` / \`--no-prompt\` — those three are required
60
- up front, so piped / CI / agent runs fail fast instead of waiting on input.
61
-
62
- Examples:
63
- $ astrale domain publish --origin crm.acme.dev --name crm --public-url https://crm.acme.dev
64
- `,
65
- options: [
66
- ...ADMIN_TARGET_OPTIONS,
67
- { flags: '--origin <origin>', description: 'Domain addressing origin (e.g. crm.acme.dev)' },
68
- { flags: '--name <name>', description: 'Registry name / catalog slug (e.g. crm)' },
69
- { flags: '--public-url <url>', description: 'Public URL the kernel installs the domain from' },
70
- { flags: '--description <text>', description: 'Optional human description for the catalog' },
71
- {
72
- flags: '--install-by-default',
73
- description: 'Mark the domain for install on every new instance',
74
- },
75
- ],
76
- // No positional arguments → Commander passes (opts, command); `opts` is first.
77
- action: async (opts: PublishOpts) => {
78
- try {
79
- // Interactive fill (TTY only): a human running this by hand is prompted for
80
- // any missing field. Automation passes every flag. No TTY / --ci /
81
- // --no-prompt / CI env means no prompt: fall straight through to the
82
- // required-flag error below so a piped or agent run fails fast.
83
- const interactive = !!process.stdin.isTTY && !(opts.ci || opts.noPrompt || process.env.CI)
84
- let { origin, name, publicUrl } = opts
85
- if (interactive) {
86
- if (!publicUrl)
87
- publicUrl = await promptText('Public URL (https://…)', {
88
- validate: (v) => isHttpUrl(v) || 'Enter a valid http(s) URL',
89
- })
90
- if (!origin)
91
- origin = await promptText('Domain origin (e.g. crm.acme.dev)', {
92
- default: hostOf(publicUrl),
93
- })
94
- if (!name) name = await promptText('Registry name', { default: origin?.split('.')[0] })
95
- }
96
-
97
- if (!origin || !name || !publicUrl) {
98
- throw new Error(
99
- 'domain publish requires --origin, --name and --public-url, e.g.\n' +
100
- ' astrale domain publish --origin crm.acme.dev --name crm --public-url https://crm.acme.dev',
101
- )
102
- }
103
- validateName(origin, 'origin')
104
- validateName(name, 'domain')
105
- validateUrl(publicUrl)
106
- const discoveryUrl = domainPublicationUrl(publicUrl).href
107
-
108
- const result = await withSpinner(
109
- `Publishing ${name} → ${publicUrl}`,
110
- !isMachine(opts),
111
- () =>
112
- publishAdminDomain(opts, {
113
- origin,
114
- name,
115
- url: discoveryUrl,
116
- ...(opts.description ? { description: opts.description } : {}),
117
- ...(opts.installByDefault ? { installByDefault: true } : {}),
118
- }),
119
- {
120
- success: ({ entry, changed, isNew }) =>
121
- changed
122
- ? `${isNew ? 'Published' : 'Updated'}: ${entry.name} ${chalk.dim(`(${entry.origin} → ${entry.url})`)}`
123
- : `Already up to date: ${entry.name} ${chalk.dim(`(${entry.origin} → ${entry.url} — no change, already latest)`)}`,
124
- },
125
- )
126
-
127
- if (isMachine(opts)) {
128
- output({ ...result.entry, changed: result.changed }, opts)
129
- return
130
- }
131
- } catch (e) {
132
- await formatKernelError(e, isMachine(opts), undefined, opts.debug)
133
- process.exit(1)
134
- }
135
- },
136
- } satisfies CommandDefinition
@@ -1,128 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path'
2
- import { K } from '@astrale-os/sdk/schema'
3
- import chalk from 'chalk'
4
-
5
- import type { KernelCommandOpts } from '../../connection'
6
- import type { CommandDefinition } from '../../program/index'
7
-
8
- import { createPathCall, runKernelCommand } from '../../connection'
9
- import { AstraleError } from '../../errors'
10
- import { fatal, log } from '../../lib/log'
11
- import { output } from '../../lib/output'
12
- import { confirmWithInput } from '../../lib/prompt'
13
-
14
- type UninstallOpts = KernelCommandOpts & {
15
- readonly yes?: boolean
16
- readonly ci?: boolean
17
- readonly noPrompt?: boolean
18
- }
19
-
20
- type UninstallResult = {
21
- readonly operation: string
22
- readonly transition: {
23
- readonly intent: {
24
- readonly origin: string
25
- }
26
- }
27
- }
28
-
29
- /** Public Kernel uninstall syscall input for one installed Domain origin. */
30
- export function uninstallCallInput(
31
- origin: string,
32
- operation: string = crypto.randomUUID(),
33
- ): Readonly<{ operation: string; origin: string }> {
34
- return Object.freeze({ operation, origin })
35
- }
36
-
37
- export default {
38
- name: 'uninstall',
39
- description: 'Uninstall a domain from an instance through the public Kernel syscall',
40
- afterHelpText: `
41
- Behavior:
42
- Removes one installed Domain origin from the target instance. The Kernel
43
- refuses the operation while another installed Domain depends on it or while
44
- business data still uses its schema. Uninstall never deletes business data.
45
- Type the exact origin to confirm, or pass --yes in automation.
46
-
47
- Use this before reinstalling only when an immutable Domain property (such as
48
- its issuer) intentionally changed. Ordinary compatible upgrades should use
49
- domain install directly and preserve the existing Domain identity.
50
-
51
- Examples:
52
- $ astrale domain uninstall grc.example -i staging
53
- $ astrale domain uninstall grc.example -i staging --yes --json
54
- `,
55
- arguments: [
56
- {
57
- name: 'origin',
58
- description: 'Installed Domain origin to remove',
59
- required: true,
60
- },
61
- ],
62
- options: [
63
- {
64
- flags: '--yes',
65
- description: 'Confirm Domain uninstall without prompting',
66
- },
67
- ],
68
- action: async (origin: string, opts: UninstallOpts) => {
69
- try {
70
- await confirmUninstall(origin, opts)
71
- } catch (error) {
72
- fatal(error, opts)
73
- }
74
-
75
- await runKernelCommand<UninstallResult>({
76
- opts,
77
- label: `Uninstalling domain ${origin}`,
78
- fn: async ({ session }) =>
79
- (await session.call(
80
- createPathCall(Path.project(K.functions.uninstall.ref).raw, uninstallCallInput(origin)),
81
- )) as UninstallResult,
82
- format: (result, formatOpts, machine) => {
83
- if (machine) {
84
- output(result, formatOpts)
85
- return
86
- }
87
- log.success(`Domain uninstalled: ${result.transition.intent.origin}`)
88
- log.dim(` operation: ${result.operation}`)
89
- },
90
- })
91
- },
92
- } satisfies CommandDefinition
93
-
94
- async function confirmUninstall(origin: string, opts: UninstallOpts): Promise<void> {
95
- if (opts.yes) return
96
-
97
- const nonInteractive =
98
- opts.ci ||
99
- opts.noPrompt ||
100
- process.env.CI ||
101
- process.argv.includes('--ci') ||
102
- process.argv.includes('--no-prompt') ||
103
- !process.stdin.isTTY
104
- if (nonInteractive) {
105
- throw new AstraleError(
106
- 'CONFIRMATION_REQUIRED',
107
- `Uninstalling Domain "${origin}" requires explicit confirmation.`,
108
- `Re-run with --yes: astrale domain uninstall ${origin} --yes`,
109
- )
110
- }
111
-
112
- const warning =
113
- chalk.red.bold('⚠ DANGER — DOMAIN UNINSTALL') +
114
- '\n' +
115
- chalk.dim('│') +
116
- ` origin ${chalk.bold(origin)}\n` +
117
- chalk.dim('│') +
118
- '\n' +
119
- chalk.dim('│') +
120
- ' This removes the installed Domain from the target instance.\n' +
121
- chalk.dim('│') +
122
- ' This command never deletes business data.\n' +
123
- chalk.dim('│') +
124
- ' The Kernel refuses removal while dependents or business data remain.'
125
- if (!(await confirmWithInput(warning, origin))) {
126
- throw new AstraleError('UNINSTALL_CANCELLED', `Domain uninstall cancelled for "${origin}".`)
127
- }
128
- }
@@ -1,69 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path'
2
-
3
- import type { KernelCommandOpts } from '../connection'
4
- import type { CommandDefinition } from '../program/index'
5
-
6
- import { expandSelfInPath, runKernelCommand, withSelfHint } from '../connection'
7
- import { AstraleError } from '../errors'
8
- import { failInput, fatal } from '../lib/log'
9
- import { denoise, output } from '../lib/output'
10
-
11
- type GetOpts = KernelCommandOpts & { schema?: boolean }
12
-
13
- /** Read one exact canonical Node. The caller's Path is not fabricated into the Node value. */
14
- export async function getCommand(target: string, opts: GetOpts): Promise<void> {
15
- let parsed
16
- try {
17
- parsed = Path.parse(target)
18
- } catch (error) {
19
- failInput(error, opts)
20
- }
21
-
22
- const last = parsed.ast.steps.at(-1)
23
- if (last?.kind === 'method') {
24
- const error = new AstraleError(
25
- 'NOT_A_NODE',
26
- `${target} is a callable Path, not a Node.`,
27
- `Use \`astrale call ${target}\` or \`astrale introspect ${target}\`.`,
28
- )
29
- fatal(error, opts)
30
- }
31
-
32
- await runKernelCommand({
33
- opts,
34
- label: `Node ${target}`,
35
- fn: async (context) => {
36
- const { path, meta } = await expandSelfInPath(target, context)
37
- const resolved = meta === undefined ? parsed : Path.parse(path)
38
- return withSelfHint(() => context.graph.getOrThrow(resolved), meta)
39
- },
40
- format: (node, format) => output(opts.schema === true ? node : denoise(node), format),
41
- })
42
- }
43
-
44
- export default {
45
- name: 'get',
46
- description: 'Get one canonical node by Path or ID',
47
- afterHelpText: `
48
- Behavior:
49
- Resolves one exact Kernel V2 Path and prints the canonical Node
50
- { id, class, props }. Missing and authorization-masked nodes remain
51
- intentionally indistinguishable. @self is expanded before dispatch.
52
-
53
- A Node does not contain a synthetic path, labels, or backend class ID.
54
- Method Paths are not Nodes — use call / introspect. Schema-valued
55
- properties are omitted unless --schema is passed. Use query for
56
- graph-shaped reads.
57
-
58
- Examples:
59
- $ astrale get /:notes.example.dev:class.Note
60
- $ astrale get @abc123 --json
61
- $ astrale get @self
62
- $ astrale get /:kernel.astrale.ai --schema
63
- `,
64
- arguments: [{ name: 'target', description: 'Canonical Node Path or @id' }],
65
- options: [{ flags: '--schema', description: 'Include schema-valued properties' }],
66
- action: async (target, opts) => {
67
- await getCommand(target as string, opts as GetOpts)
68
- },
69
- } satisfies CommandDefinition
@@ -1,93 +0,0 @@
1
- import { issuer, jwk, provision } from '@astrale-os/sdk/auth'
2
- import { normalizeProperties } from '@astrale-os/sdk/graph/properties'
3
- import { expect, mock, test } from 'bun:test'
4
- import { exportJWK, generateKeyPair, jwtVerify } from 'jose'
5
-
6
- import { classKey } from '../../../graph'
7
- import { formatIdentityRegistration, prepareIdentityProvision } from '../register'
8
-
9
- /** @evidence TEST-CLI-IDENTITY-REGISTER-JSON-EXACT */
10
- test('emits exactly one structured value for machine registration output', () => {
11
- const writes: string[] = []
12
- const logs: string[] = []
13
- const originalWrite = process.stdout.write
14
- const originalLog = console.log
15
- process.stdout.write = mock((chunk: string | Uint8Array) => {
16
- writes.push(typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk))
17
- return true
18
- }) as typeof process.stdout.write
19
- console.log = mock((...values: unknown[]) => logs.push(values.map(String).join(' ')))
20
-
21
- try {
22
- formatIdentityRegistration(
23
- { iss: 'https://identity.example', sub: 'self', nodeId: 'operator-node' },
24
- { json: true },
25
- true,
26
- )
27
- } finally {
28
- process.stdout.write = originalWrite
29
- console.log = originalLog
30
- }
31
-
32
- expect(JSON.parse(writes.join(''))).toEqual({
33
- iss: 'https://identity.example',
34
- sub: 'self',
35
- nodeId: 'operator-node',
36
- })
37
- expect(logs).toEqual([])
38
- })
39
-
40
- test('builds one exact Mutation V3 identity birth bound to a self proof', async () => {
41
- const { privateKey, publicKey } = await generateKeyPair('ES256', { extractable: true })
42
- const privateJwk = { ...(await exportJWK(privateKey)), alg: 'ES256', kid: 'alice-key' }
43
- const publicJwk = jwk.acceptPublic({
44
- ...(await exportJWK(publicKey)),
45
- alg: 'ES256',
46
- kid: 'alice-key',
47
- })
48
- const kernelIssuer = issuer.accept('https://kernel.example')
49
- const classPath = classKey('/:accounts.example:class.User', '--class')
50
- const properties = normalizeProperties({
51
- 'accounts.example:class.User.property.name': 'Alice',
52
- })
53
-
54
- const prepared = await prepareIdentityProvision({
55
- name: 'alice',
56
- classPath,
57
- properties,
58
- privateKey: privateJwk,
59
- publicKey: publicJwk,
60
- kernelIssuer,
61
- })
62
-
63
- expect(String(prepared.binding)).toBe('identity')
64
- expect(prepared.request.idempotencyKey).toBe('identity-register:alice')
65
- expect(JSON.parse(JSON.stringify(prepared.request.mutation))).toEqual({
66
- format: 'astrale.graph.mutation',
67
- version: 'v3',
68
- preconditions: [],
69
- operations: [
70
- {
71
- op: 'node.create',
72
- as: 'identity',
73
- class: 'accounts.example:class.User',
74
- props: { 'accounts.example:class.User.property.name': 'Alice' },
75
- },
76
- ],
77
- })
78
-
79
- const credentials = prepared.request.identities[prepared.binding]?.credentials
80
- expect(credentials?.publicKey).toEqual(publicJwk)
81
- expect(typeof credentials?.proof).toBe('string')
82
- if (typeof credentials?.proof !== 'string') throw new TypeError('Expected compact JWT proof')
83
-
84
- const expectedFingerprint = await provision.fingerprint(prepared.request)
85
- const expectedIssuer = await provision.selfIssuer(kernelIssuer, publicJwk)
86
- const verified = await jwtVerify(credentials.proof, publicKey, {
87
- algorithms: ['ES256'],
88
- issuer: expectedIssuer,
89
- subject: 'self',
90
- audience: kernelIssuer,
91
- })
92
- expect(verified.payload.provision).toBe(expectedFingerprint)
93
- })
@@ -1,35 +0,0 @@
1
- import type { CommandDefinition } from '../../program/index'
2
-
3
- import { createIdentity } from '../../identity/index'
4
- import { fatal, log } from '../../lib/log'
5
- import { isMachine, output, RAW_OUTPUT_OPTIONS, type RawOutputOpts } from '../../lib/output'
6
-
7
- export default {
8
- name: 'create',
9
- description: 'Create a new identity',
10
- arguments: [{ name: 'name', description: 'Identity name', required: true }],
11
- options: [
12
- { flags: '--subject <sub>', description: 'Custom subject (defaults to name)' },
13
- { flags: '--local', description: 'Local-only identity (default)' },
14
- { flags: '--remote', description: 'Remote (cloud-synced) identity — requires cloud login' },
15
- ...RAW_OUTPUT_OPTIONS,
16
- ],
17
- action: async (
18
- name: string,
19
- opts: { subject?: string; local?: boolean; remote?: boolean } & RawOutputOpts,
20
- ) => {
21
- try {
22
- const mode = opts.remote ? 'remote' : 'local'
23
- const identity = await createIdentity(name, { subject: opts.subject, mode })
24
- if (isMachine(opts)) {
25
- output({ name, ...identity }, opts)
26
- return
27
- }
28
- log.success(
29
- `Created identity "${name}" (subject: ${identity.subject}, mode: ${identity.mode})`,
30
- )
31
- } catch (e) {
32
- fatal(e, opts)
33
- }
34
- },
35
- } satisfies CommandDefinition
@@ -1,24 +0,0 @@
1
- import type { CommandDefinition } from '../../program/index'
2
-
3
- import { deleteIdentity } from '../../identity/index'
4
- import { fatal, log } from '../../lib/log'
5
- import { isMachine, output, RAW_OUTPUT_OPTIONS, type RawOutputOpts } from '../../lib/output'
6
-
7
- export default {
8
- name: 'delete',
9
- description: 'Delete an identity',
10
- arguments: [{ name: 'name', description: 'Identity name', required: true }],
11
- options: [...RAW_OUTPUT_OPTIONS],
12
- action: async (name: string, opts: RawOutputOpts) => {
13
- try {
14
- await deleteIdentity(name)
15
- if (isMachine(opts)) {
16
- output({ deleted: name }, opts)
17
- return
18
- }
19
- log.success(`Deleted identity "${name}"`)
20
- } catch (e) {
21
- fatal(e, opts)
22
- }
23
- },
24
- } satisfies CommandDefinition
@@ -1,46 +0,0 @@
1
- import type { CommandDefinition } from '../../program/index'
2
-
3
- import { encodeIdentityExport, exportIdentity, writeIdentityExport } from '../../identity/index'
4
- import { fatal, log } from '../../lib/log'
5
- import { isMachine, output, RAW_OUTPUT_OPTIONS, type RawOutputOpts } from '../../lib/output'
6
- import { readPassphrase } from '../../lib/prompt'
7
-
8
- /**
9
- * Export the per-identity keypair as a plaintext JWK envelope by default.
10
- * With `--encrypt`, wrap it in a JOSE JWE (PBES2-HS256+A128KW / A256GCM)
11
- * using a passphrase prompted from the TTY.
12
- */
13
- export default {
14
- name: 'export',
15
- description: 'Export an identity keypair to disk (optional --encrypt)',
16
- arguments: [
17
- { name: 'name', description: 'Identity name', required: true },
18
- { name: 'path', description: 'Output file path', required: true },
19
- ],
20
- options: [
21
- { flags: '--encrypt', description: 'Encrypt the envelope with a passphrase (JOSE JWE)' },
22
- ...RAW_OUTPUT_OPTIONS,
23
- ],
24
- action: async (name: string, path: string, opts: { encrypt?: boolean } & RawOutputOpts) => {
25
- try {
26
- const envelope = await exportIdentity(name)
27
- const passphrase = opts.encrypt
28
- ? await readPassphrase('Passphrase (min 8 chars): ', { minLength: 8 })
29
- : undefined
30
- await writeIdentityExport(path, await encodeIdentityExport(envelope, passphrase))
31
-
32
- if (isMachine(opts)) {
33
- output({ name, path, encrypted: Boolean(opts.encrypt) }, opts)
34
- return
35
- }
36
- log.success(`Exported identity "${name}" → ${path}${opts.encrypt ? ' (encrypted)' : ''}`)
37
- if (!opts.encrypt) {
38
- log.warn(
39
- ' Plaintext private JWK — keep this file secure. Use --encrypt for passphrase wrapping.',
40
- )
41
- }
42
- } catch (e) {
43
- fatal(e, opts)
44
- }
45
- },
46
- } satisfies CommandDefinition
@@ -1,61 +0,0 @@
1
- import { readFile } from 'node:fs/promises'
2
-
3
- import type { CommandDefinition } from '../../program/index'
4
-
5
- import {
6
- decodeIdentityExport,
7
- importIdentity,
8
- isEncryptedIdentityExport,
9
- } from '../../identity/index'
10
- import { fatal, log } from '../../lib/log'
11
- import { isMachine, output, RAW_OUTPUT_OPTIONS, type RawOutputOpts } from '../../lib/output'
12
- import { readPassphrase } from '../../lib/prompt'
13
-
14
- export default {
15
- name: 'import',
16
- description: 'Import an identity keypair envelope (auto-detects JWE)',
17
- arguments: [{ name: 'path', description: 'Envelope file path', required: true }],
18
- options: [
19
- {
20
- flags: '--name <name>',
21
- description: 'Override identity name (defaults to envelope subject)',
22
- },
23
- {
24
- flags: '--issuer <url>',
25
- description: 'Default issuer for credentials signed with this imported key',
26
- },
27
- {
28
- flags: '--replace',
29
- description: 'Replace an existing key-backed identity with the imported keypair',
30
- },
31
- ...RAW_OUTPUT_OPTIONS,
32
- ],
33
- action: async (
34
- path: string,
35
- opts: { name?: string; issuer?: string; replace?: boolean } & RawOutputOpts,
36
- ) => {
37
- try {
38
- const raw = await readFile(path, 'utf-8')
39
- const passphrase = isEncryptedIdentityExport(raw)
40
- ? await readPassphrase('Passphrase: ')
41
- : undefined
42
- const envelope = await decodeIdentityExport(raw, passphrase)
43
- const name = opts.name ?? envelope.subject
44
- const identity = await importIdentity(envelope, {
45
- name,
46
- issuer: opts.issuer,
47
- replace: opts.replace,
48
- })
49
-
50
- if (isMachine(opts)) {
51
- output({ name, ...identity }, opts)
52
- return
53
- }
54
- log.success(
55
- `Imported identity "${name}" (subject=${identity.subject}, kid=${identity.kid ?? '?'})`,
56
- )
57
- } catch (e) {
58
- fatal(e, opts)
59
- }
60
- },
61
- } satisfies CommandDefinition
@@ -1,56 +0,0 @@
1
- import chalk from 'chalk'
2
-
3
- import type { ListOpts, ListProjection } from '../../lib/output'
4
- import type { CommandDefinition } from '../../program/index'
5
-
6
- import { readIdentities } from '../../identity/index'
7
- import { log } from '../../lib/log'
8
- import { isMachine, presentList, RAW_OUTPUT_OPTIONS } from '../../lib/output'
9
-
10
- type IdentityRow = {
11
- name: string
12
- subject: string
13
- source: string
14
- idp?: string
15
- default: boolean
16
- createdAt?: string
17
- }
18
-
19
- function projection(items: IdentityRow[]): ListProjection {
20
- return {
21
- columns: [
22
- { key: 'name', header: 'NAME', color: chalk.bold },
23
- { key: 'subject', header: 'SUBJECT', color: chalk.dim },
24
- { key: 'source', header: 'SOURCE', color: chalk.dim },
25
- ],
26
- rows: items.map((i) => ({
27
- name: i.default ? `${i.name} ${chalk.green('*')}` : i.name,
28
- subject: i.subject !== i.name ? i.subject : '',
29
- source: i.source === 'idp' ? `idp:${i.idp ?? '?'}` : 'key',
30
- })),
31
- paths: items.map((i) => i.name),
32
- }
33
- }
34
-
35
- export default {
36
- name: 'list',
37
- description: 'List all identities',
38
- options: [...RAW_OUTPUT_OPTIONS],
39
- action: async (opts: ListOpts) => {
40
- const store = await readIdentities()
41
- const items: IdentityRow[] = Object.entries(store.identities).map(([name, id]) => ({
42
- name,
43
- subject: id.subject,
44
- source: id.source ?? 'key',
45
- idp: id.idp,
46
- default: name === store.default,
47
- createdAt: id.createdAt,
48
- }))
49
-
50
- if (items.length === 0 && !isMachine(opts)) {
51
- log.dim(' No identities. Run: astrale identity create <name>')
52
- return
53
- }
54
- presentList(items, opts, projection)
55
- },
56
- } satisfies CommandDefinition