@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,36 +0,0 @@
1
- # Domain-mediated Identity registration
2
-
3
- Status: resolved
4
- Impact: high
5
- Selection: explicit-authority-owner-callable
6
-
7
- ## Context
8
-
9
- `identity register` prepares an atomic graph Node and self-proven Identity designation. Submitting
10
- that request directly to Kernel Auth is correct only when the authenticated caller already holds
11
- creation authority for the chosen Class. A child Kernel management principal does not thereby own
12
- an installed application Domain's `Operator` Class, and production correctly denied that attempted
13
- authority substitution.
14
-
15
- The CLI must still own local key proof and target-bound registration state. Manufacturing CLI state,
16
- handing application credentials to the operator, or weakening mutation authorization would cross
17
- the wrong boundary.
18
-
19
- ## Decision
20
-
21
- Registration retains direct Auth submission as its default. `--via <callablePath>` selects a second,
22
- explicit submission boundary: after constructing the exact same Provision request and fingerprint-
23
- bound self proof, CLI invokes the named Domain callable through the normal Host route. That callable
24
- owns admission and may exercise its Domain authority to submit the request to Kernel Auth.
25
-
26
- CLI treats the callable response as untrusted. It admits the prepared binding's issuer, subject, and
27
- optional created Node ID, then stores only the target-keyed issuer and subject. It never accepts or
28
- persists application authority, and it never exposes the self proof in argv or output.
29
-
30
- ## Consequences
31
-
32
- - Kernel mutation non-amplification remains unchanged.
33
- - A Domain that offers registration must declare and authorize a Provision-shaped callable.
34
- - The option is explicit because choosing the authority owner is security-significant.
35
- - Direct registration remains useful for Classes the selected caller genuinely owns.
36
- - A failed callable or malformed response leaves CLI registration state unchanged.
@@ -1,124 +0,0 @@
1
- import type { ProvisionRequest } from '@astrale-os/sdk/auth'
2
- import type { Call } from '@astrale-os/sdk/client'
3
- import type { LocalBinding } from '@astrale-os/sdk/graph'
4
- import type { JWK } from 'jose'
5
-
6
- import type {
7
- Identity,
8
- IdentityMode,
9
- IdentityStore,
10
- IdentityStoreOptions,
11
- Registration,
12
- } from '../../state/.spec/api.js'
13
-
14
- export type { Identity, IdentityStore, Registration } from '../../state/.spec/api.js'
15
-
16
- /** Filesystem coordinates used only by explicit identity transfer operations. */
17
- export interface IdentityFileOptions {
18
- readonly state?: IdentityStoreOptions
19
- readonly keysDir?: string
20
- }
21
-
22
- /** Canonical V1 key-identity transfer envelope. */
23
- export interface IdentityExport {
24
- readonly version: 1
25
- readonly subject: string
26
- readonly mode: IdentityMode
27
- readonly kid?: string
28
- readonly issuer?: string
29
- readonly privateJwk: JWK
30
- readonly publicJwk: JWK
31
- }
32
-
33
- export interface IdentityImportOptions extends IdentityFileOptions {
34
- readonly name?: string
35
- readonly issuer?: string
36
- readonly replace?: boolean
37
- }
38
-
39
- export interface IdentityRegistrationResult {
40
- readonly iss: string
41
- readonly sub: string
42
- readonly nodeId?: string
43
- }
44
-
45
- export interface IdentityProvisionSubmission {
46
- readonly request: ProvisionRequest
47
- readonly binding: LocalBinding
48
- readonly via?: string
49
- readonly direct: {
50
- provision(request: ProvisionRequest): Promise<unknown>
51
- }
52
- readonly callable: {
53
- call(call: Call): Promise<unknown>
54
- }
55
- }
56
-
57
- /** Submit one prepared request either directly or through its explicit Domain authority owner. */
58
- export function submitIdentityProvision(
59
- input: IdentityProvisionSubmission,
60
- ): Promise<IdentityRegistrationResult>
61
-
62
- /** Admit only the exact binding the CLI prepared; remote callables remain untrusted input. */
63
- export function acceptProvisionedIdentity(
64
- value: unknown,
65
- binding: LocalBinding,
66
- ): IdentityRegistrationResult
67
-
68
- export function readIdentities(): Promise<IdentityStore>
69
-
70
- export function createIdentity(
71
- name: string,
72
- options?: {
73
- readonly subject?: string
74
- readonly mode?: IdentityMode
75
- readonly issuer?: string
76
- readonly kid?: string
77
- },
78
- ): Promise<Identity>
79
-
80
- export function deleteIdentity(name: string): Promise<void>
81
- export function setDefault(name: string): Promise<void>
82
- export function getDefault(): Promise<Identity & { readonly name: string }>
83
- export function getIdentity(name: string): Promise<Identity>
84
-
85
- export function upsertIdpIdentity(
86
- name: string,
87
- options: {
88
- readonly subject: string
89
- readonly idp: string
90
- readonly issuer: string
91
- readonly audience?: string
92
- readonly claims?: Readonly<Record<string, unknown>>
93
- readonly use?: boolean
94
- },
95
- ): Promise<Identity>
96
-
97
- export function setRegistration(
98
- name: string,
99
- instanceSlug: string,
100
- registration: Registration,
101
- ): Promise<void>
102
-
103
- export function setIdentityMode(name: string, mode: IdentityMode): Promise<void>
104
-
105
- /** Detect the retained compact-JWE representation without decoding it. */
106
- export function isEncryptedIdentityExport(raw: string): boolean
107
-
108
- /** Decode legacy plaintext, V1 plaintext, or compact-JWE content into one admitted V1 envelope. */
109
- export function decodeIdentityExport(raw: string, passphrase?: string): Promise<IdentityExport>
110
-
111
- /** Encode one admitted envelope as plaintext JSON or compact JWE. */
112
- export function encodeIdentityExport(envelope: IdentityExport, passphrase?: string): Promise<string>
113
-
114
- /** Read and prove one key-backed identity's transferable envelope. */
115
- export function exportIdentity(name: string, options?: IdentityFileOptions): Promise<IdentityExport>
116
-
117
- /** Import one admitted envelope after checking registry conflicts but before publishing registry state. */
118
- export function importIdentity(
119
- envelope: IdentityExport,
120
- options?: IdentityImportOptions,
121
- ): Promise<Identity>
122
-
123
- /** Atomically publish one explicit private export file with mode 0600. */
124
- export function writeIdentityExport(path: string, content: string): Promise<void>
@@ -1,33 +0,0 @@
1
- # CLI identity ownership
2
-
3
- Identity owns local identity selection and the coordination between the State registry, per-subject
4
- Keys, and IdP sessions. State owns durable registry decoding and locking; Keys owns JWK admission,
5
- pair proof, and private files. Commands own prompts and presentation, not persistence mechanics.
6
-
7
- Identity transfer accepts the retained unversioned plaintext envelope and the current V1 plaintext
8
- or compact-JWE representation. Admission completes before mutation. Import checks the registry under
9
- its file lock, persists the admitted keypair, and only then publishes the identity entry. Export
10
- proves the stored pair and atomically writes one mode-`0600` user-selected file.
11
-
12
- The canonical plaintext V1 structure is independently published as
13
- `https://schemas.astrale.ai/cli/identity-export/1`. A production Host may emit that envelope as its
14
- bootstrap root secret, but CLI Identity remains the format owner and cryptographically proves the
15
- pair on import. The governing bootstrap flow imports the root as `platform-root`, authenticates it
16
- directly to the `platform-manager` Kernel, and reaches a child only through a manager-minted
17
- child-audience Management carrier. The carrier's outer subject is not the child's effective
18
- principal; authenticated child `Identity.whoami` owns that projection.
19
-
20
- Identity registration always prepares one self-proven atomic Provision request. Direct registration
21
- submits it to Kernel Auth only when the selected caller already owns the target Class authority. An
22
- explicit `--via <callable>` instead sends those exact bytes through the Domain that owns an
23
- application Identity Class. The Domain callable owns admission and effect authority; CLI admits only
24
- the prepared binding from the response before persisting its target-bound `(issuer, subject)`.
25
-
26
- ```mermaid
27
- flowchart LR
28
- C[identity command] --> D[decode or encode transfer]
29
- D --> I[Identity orchestration]
30
- I --> S[State registry lock]
31
- I --> K[Keys pair proof and files]
32
- S --> F[identities.json]
33
- ```
@@ -1,7 +0,0 @@
1
- import { defineCapability } from '@astrale-os/spec/authoring'
2
-
3
- export const CLI_IDENTITY = defineCapability({
4
- id: 'CLI-IDENTITY',
5
- statement:
6
- 'Preserves local identity selection, isolated key material, and explicit import/export journeys.',
7
- })
@@ -1,79 +0,0 @@
1
- import type { IdentityExport } from '../api.js'
2
-
3
- interface Target {
4
- readonly name: string
5
- readonly url: string
6
- readonly issuer: string
7
- }
8
-
9
- interface ReadyChild {
10
- readonly target: Target
11
- readonly operation: string
12
- readonly instance: string
13
- }
14
-
15
- interface BootstrapAuthority {
16
- /** Supported identity-import boundary; never a direct State or Keys write. */
17
- importIdentity(input: {
18
- readonly name: 'platform-root'
19
- readonly envelope: IdentityExport
20
- }): Promise<void>
21
- bookmark(input: {
22
- readonly target: Target
23
- readonly defaultIdentity?: 'platform-root'
24
- }): Promise<void>
25
- /** Authenticated public Identity.whoami result on the selected target. */
26
- whoami(input: {
27
- readonly target: Target
28
- readonly as?: 'platform-root'
29
- readonly credential?: string
30
- }): Promise<{ readonly id: string }>
31
- /** Public manager createInstance call plus Operation and Instance status polling. */
32
- callCreateChild(input: {
33
- readonly manager: Target
34
- readonly as: 'platform-root'
35
- readonly operationId: string
36
- readonly slug: string
37
- }): Promise<ReadyChild>
38
- /** Public Auth delegation invoked on the manager after authenticated whoami. */
39
- delegateSelf(input: {
40
- readonly manager: Target
41
- readonly as: 'platform-root'
42
- readonly principal: string
43
- readonly audience: string
44
- }): Promise<string>
45
- }
46
-
47
- /**
48
- * Bootstrap uses the imported root directly on the manager, then an unchanged
49
- * manager-to-child Management carrier whose effective child principal is
50
- * established only by the child's authenticated whoami result.
51
- */
52
- export async function bootstrapRootAndChild(
53
- authority: BootstrapAuthority,
54
- input: {
55
- readonly envelope: IdentityExport
56
- readonly manager: Target & { readonly name: 'platform-manager' }
57
- readonly childSlug: string
58
- readonly operationId: string
59
- },
60
- ): Promise<{ readonly managerId: string; readonly childId: string; readonly child: ReadyChild }> {
61
- await authority.importIdentity({ name: 'platform-root', envelope: input.envelope })
62
- await authority.bookmark({ target: input.manager, defaultIdentity: 'platform-root' })
63
- const manager = await authority.whoami({ target: input.manager, as: 'platform-root' })
64
- const child = await authority.callCreateChild({
65
- manager: input.manager,
66
- as: 'platform-root',
67
- operationId: input.operationId,
68
- slug: input.childSlug,
69
- })
70
- const credential = await authority.delegateSelf({
71
- manager: input.manager,
72
- as: 'platform-root',
73
- principal: manager.id,
74
- audience: child.target.issuer,
75
- })
76
- await authority.bookmark({ target: child.target })
77
- const effectiveChild = await authority.whoami({ target: child.target, credential })
78
- return { managerId: manager.id, childId: effectiveChild.id, child }
79
- }
@@ -1,51 +0,0 @@
1
- import type { ProvisionRequest, ProvisionResult } from '@astrale-os/sdk/auth'
2
- import type { LocalBinding } from '@astrale-os/sdk/mutation'
3
-
4
- interface RegistrationAuthority {
5
- prepareSelfProven(input: {
6
- readonly identity: string
7
- readonly classPath: string
8
- readonly properties: Readonly<Record<string, unknown>>
9
- readonly kernelIssuer: string
10
- }): Promise<{ readonly binding: LocalBinding; readonly request: ProvisionRequest }>
11
- call(input: {
12
- readonly target: string
13
- readonly request: ProvisionRequest
14
- }): Promise<ProvisionResult>
15
- persist(input: {
16
- readonly identity: string
17
- readonly targetKey: string
18
- readonly issuer: string
19
- readonly subject: string
20
- }): Promise<void>
21
- }
22
-
23
- /** Application Identity Classes are provisioned only through their explicit authority owner. */
24
- export async function registerThroughDomain(
25
- authority: RegistrationAuthority,
26
- input: {
27
- readonly identity: string
28
- readonly classPath: string
29
- readonly properties: Readonly<Record<string, unknown>>
30
- readonly kernelIssuer: string
31
- readonly targetKey: string
32
- readonly callable: string
33
- },
34
- ): Promise<{ readonly issuer: string; readonly subject: string; readonly nodeId?: string }> {
35
- const prepared = await authority.prepareSelfProven(input)
36
- const result = await authority.call({ target: input.callable, request: prepared.request })
37
- const identity = result.identities[prepared.binding]
38
- if (identity === undefined) throw new Error('Provision result omitted the prepared binding.')
39
- await authority.persist({
40
- identity: input.identity,
41
- targetKey: input.targetKey,
42
- issuer: identity.issuer,
43
- subject: identity.subject,
44
- })
45
- const nodeId = result.createdNodes[prepared.binding]
46
- return {
47
- issuer: identity.issuer,
48
- subject: identity.subject,
49
- ...(nodeId === undefined ? {} : { nodeId }),
50
- }
51
- }
@@ -1,29 +0,0 @@
1
- import type { Identity, IdentityExport, IdentityImportOptions, IdentityStore } from '../api.js'
2
-
3
- declare const withIdentityLock: <Value>(transition: () => Promise<Value>) => Promise<Value>
4
- declare const readLatest: () => Promise<IdentityStore>
5
- declare const checkImportConflict: (
6
- store: IdentityStore,
7
- envelope: IdentityExport,
8
- options: IdentityImportOptions,
9
- ) => string
10
- declare const persistAdmittedKeypair: (envelope: IdentityExport) => Promise<void>
11
- declare const publishIdentity: (
12
- store: IdentityStore,
13
- name: string,
14
- envelope: IdentityExport,
15
- options: IdentityImportOptions,
16
- ) => Promise<Identity>
17
-
18
- /** Import performs all fallible admission before entering this ordered persistence flow. */
19
- export function importIdentity(
20
- envelope: IdentityExport,
21
- options: IdentityImportOptions,
22
- ): Promise<Identity> {
23
- return withIdentityLock(async () => {
24
- const store = await readLatest()
25
- const name = checkImportConflict(store, envelope, options)
26
- await persistAdmittedKeypair(envelope)
27
- return publishIdentity(store, name, envelope, options)
28
- })
29
- }
@@ -1,56 +0,0 @@
1
- import { defineLaw } from '@astrale-os/spec/authoring'
2
-
3
- export const CLI_IDENTITY_REGISTRY_TRANSITIONS = defineLaw({
4
- id: 'CLI-IDENTITY-REGISTRY-TRANSITIONS',
5
- statement:
6
- 'Create, selection, registration, mode change, and non-default deletion preserve one locked registry and isolated subject keypair; deleting the selected identity is rejected unchanged.',
7
- tests: [{ file: '__tests__/registry.test.ts', id: 'TEST-CLI-IDENTITY-REGISTRY-JOURNEY' }],
8
- })
9
-
10
- export const CLI_IDENTITY_TRANSFER_ADMITTED = defineLaw({
11
- id: 'CLI-IDENTITY-TRANSFER-ADMITTED',
12
- statement:
13
- 'Malformed, unsupported-version, or cryptographically mismatched transfer content is rejected before either key files or registry state changes.',
14
- tests: [{ file: '__tests__/transfer.test.ts', id: 'TEST-CLI-IDENTITY-TRANSFER-REJECTS' }],
15
- })
16
-
17
- export const CLI_IDENTITY_TRANSFER_ROUNDTRIP = defineLaw({
18
- id: 'CLI-IDENTITY-TRANSFER-ROUNDTRIP',
19
- statement:
20
- 'Legacy plaintext and V1 plaintext or compact-JWE content converge on one V1 envelope, and explicit exports are published atomically with mode 0600.',
21
- tests: [
22
- { file: '__tests__/transfer.test.ts', id: 'TEST-CLI-IDENTITY-TRANSFER-ROUNDTRIP' },
23
- { file: '__tests__/transfer.test.ts', id: 'TEST-CLI-IDENTITY-EXPORT-PRIVATE' },
24
- ],
25
- })
26
-
27
- export const CLI_IDENTITY_TRANSFER_SCHEMA = defineLaw({
28
- id: 'CLI-IDENTITY-TRANSFER-SCHEMA',
29
- statement:
30
- 'Plaintext IdentityExport V1 has one independently versioned portable JSON Schema; decoding additionally proves the JWK pair before any durable mutation.',
31
- tests: [
32
- {
33
- file: '__tests__/transfer.test.ts',
34
- id: 'TEST-CLI-IDENTITY-TRANSFER-SCHEMA',
35
- },
36
- ],
37
- })
38
-
39
- export const CLI_IDENTITY_IMPORT_ORDERED = defineLaw({
40
- id: 'CLI-IDENTITY-IMPORT-ORDERED',
41
- statement:
42
- 'Import checks name and identity-source conflicts under the registry lock before replacing keys, then publishes the registry only after the admitted pair is durable.',
43
- tests: [{ file: '__tests__/transfer.test.ts', id: 'TEST-CLI-IDENTITY-IMPORT-ORDERED' }],
44
- })
45
-
46
- export const CLI_IDENTITY_REGISTRATION_AUTHORITY = defineLaw({
47
- id: 'CLI-IDENTITY-REGISTRATION-AUTHORITY',
48
- statement:
49
- 'Identity registration binds one self-proven Provision request to the selected Kernel; direct submission uses caller authority, while explicit Domain-mediated submission sends the same request to the named callable and persists only its admitted prepared binding.',
50
- tests: [
51
- {
52
- file: '__tests__/registration.test.ts',
53
- id: 'TEST-CLI-IDENTITY-REGISTER-DOMAIN-MEDIATED',
54
- },
55
- ],
56
- })
@@ -1,13 +0,0 @@
1
- import { defineLayout } from '@astrale-os/spec/authoring'
2
-
3
- export default defineLayout({
4
- entries: [
5
- '__tests__/',
6
- 'index.ts',
7
- 'registration.ts',
8
- 'registry.ts',
9
- 'transfer.ts',
10
- 'tsconfig.json',
11
- ],
12
- exact: true,
13
- })
@@ -1,25 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.astrale.ai/cli/identity-export/1",
4
- "title": "Astrale Identity Export V1",
5
- "description": "Portable plaintext key-identity transfer envelope consumed by the Astrale CLI.",
6
- "type": "object",
7
- "additionalProperties": false,
8
- "required": ["version", "subject", "privateJwk", "publicJwk"],
9
- "properties": {
10
- "version": { "const": 1 },
11
- "subject": { "type": "string", "minLength": 1 },
12
- "mode": { "enum": ["local", "remote"] },
13
- "kid": { "type": "string", "minLength": 1 },
14
- "issuer": { "type": "string", "format": "uri" },
15
- "privateJwk": { "$ref": "#/$defs/jwk" },
16
- "publicJwk": { "$ref": "#/$defs/jwk" }
17
- },
18
- "$defs": {
19
- "jwk": {
20
- "type": "object",
21
- "minProperties": 1,
22
- "additionalProperties": true
23
- }
24
- }
25
- }
@@ -1,53 +0,0 @@
1
- import { fileExists, keypairPaths } from '../../../keys/index'
2
- import { KEYS_DIR } from '../../../state/index'
3
- import {
4
- createIdentity,
5
- exportIdentity,
6
- importIdentity,
7
- deleteIdentity,
8
- getDefault,
9
- readIdentities,
10
- setDefault,
11
- setIdentityMode,
12
- setRegistration,
13
- upsertIdpIdentity,
14
- } from '../../index'
15
-
16
- await createIdentity('alice')
17
- await createIdentity('bob', { mode: 'remote' })
18
- await importIdentity(await exportIdentity('alice'), { name: 'alice-alias' })
19
- await setDefault('alice')
20
- await setIdentityMode('bob', 'local')
21
- await setRegistration('alice', 'production', {
22
- iss: 'https://kernel.example',
23
- sub: 'node-alice',
24
- registeredAt: '2026-08-11T12:00:00.000Z',
25
- })
26
-
27
- let selectedDeletion = ''
28
- try {
29
- await deleteIdentity('alice')
30
- } catch (error) {
31
- selectedDeletion = error instanceof Error ? error.message : String(error)
32
- }
33
- await deleteIdentity('bob')
34
- await deleteIdentity('alice-alias')
35
- await upsertIdpIdentity('workos', {
36
- subject: 'user_123',
37
- idp: 'workos',
38
- issuer: 'https://idp.example',
39
- audience: 'https://kernel.example',
40
- use: false,
41
- })
42
-
43
- const store = await readIdentities()
44
- const selected = await getDefault()
45
- console.log(
46
- JSON.stringify({
47
- store,
48
- selected,
49
- selectedDeletion,
50
- aliceKey: await fileExists(keypairPaths('alice', KEYS_DIR).privatePath),
51
- bobKey: await fileExists(keypairPaths('bob', KEYS_DIR).privatePath),
52
- }),
53
- )
@@ -1,64 +0,0 @@
1
- import type { ProvisionRequest } from '@astrale-os/sdk/auth'
2
-
3
- import { LocalBinding } from '@astrale-os/sdk/graph'
4
- import { expect, test } from 'bun:test'
5
-
6
- import { submitIdentityProvision } from '../registration'
7
-
8
- /** @evidence TEST-CLI-IDENTITY-REGISTER-DOMAIN-MEDIATED */
9
- test('submits the exact self-proven request through an explicit Domain callable', async () => {
10
- const binding = LocalBinding('identity')
11
- const request = {
12
- idempotencyKey: 'identity-register:operator',
13
- mutation: {
14
- format: 'astrale.graph.mutation',
15
- version: 'v2',
16
- preconditions: [],
17
- operations: [],
18
- },
19
- identities: {
20
- identity: {
21
- credentials: {
22
- publicKey: { kty: 'EC', crv: 'P-256', x: 'x', y: 'y', alg: 'ES256' },
23
- proof: 'self-proven-request.jwt.signature',
24
- },
25
- },
26
- },
27
- } as unknown as ProvisionRequest
28
- const calls: unknown[] = []
29
- let directCalls = 0
30
- const result = await submitIdentityProvision({
31
- binding,
32
- request,
33
- via: '/:ops.example:function.provisionOperator',
34
- direct: {
35
- async provision() {
36
- directCalls += 1
37
- throw new Error('direct provision must not run')
38
- },
39
- },
40
- callable: {
41
- async call(call) {
42
- calls.push(call)
43
- return {
44
- createdNodes: { identity: 'operator-node' },
45
- identities: {
46
- identity: { issuer: 'https://identity.example', subject: 'operator-node' },
47
- },
48
- }
49
- },
50
- },
51
- })
52
-
53
- expect(directCalls).toBe(0)
54
- expect(calls).toHaveLength(1)
55
- expect(JSON.parse(JSON.stringify(calls[0]))).toEqual({
56
- target: '/:ops.example:function.provisionOperator',
57
- input: JSON.parse(JSON.stringify(request)),
58
- })
59
- expect(result).toEqual({
60
- iss: 'https://identity.example',
61
- sub: 'operator-node',
62
- nodeId: 'operator-node',
63
- })
64
- })
@@ -1,70 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, test } from 'bun:test'
2
- import { mkdtemp, readFile, rm } from 'node:fs/promises'
3
- import { tmpdir } from 'node:os'
4
- import { join } from 'node:path'
5
-
6
- describe('identity registry journey', () => {
7
- let root = ''
8
-
9
- beforeEach(async () => {
10
- root = await mkdtemp(join(tmpdir(), 'astrale-identity-registry-'))
11
- })
12
-
13
- afterEach(async () => {
14
- await rm(root, { recursive: true, force: true })
15
- })
16
-
17
- /** @evidence TEST-CLI-IDENTITY-REGISTRY-JOURNEY */
18
- test('runs create, selection, registration, mode, IdP, and deletion in a real process', async () => {
19
- const child = Bun.spawn(
20
- [process.execPath, join(import.meta.dir, 'fixtures', 'registry-journey.ts')],
21
- {
22
- env: { ...process.env, ASTRALE_HOME: root },
23
- stdout: 'pipe',
24
- stderr: 'pipe',
25
- },
26
- )
27
- const [exitCode, stdout, stderr] = await Promise.all([
28
- child.exited,
29
- new Response(child.stdout).text(),
30
- new Response(child.stderr).text(),
31
- ])
32
- expect(exitCode, stderr).toBe(0)
33
-
34
- const result = JSON.parse(stdout) as {
35
- store: {
36
- default: string
37
- identities: Record<
38
- string,
39
- {
40
- source?: string
41
- mode?: string
42
- registrations?: Record<string, { iss: string; sub: string; registeredAt: string }>
43
- }
44
- >
45
- }
46
- selected: { name: string; subject: string }
47
- selectedDeletion: string
48
- aliceKey: boolean
49
- bobKey: boolean
50
- }
51
- expect(result.store.default).toBe('alice')
52
- expect(Object.keys(result.store.identities).sort()).toEqual(['alice', 'workos'])
53
- expect(result.store.identities.alice.registrations?.production).toEqual({
54
- iss: 'https://kernel.example',
55
- sub: 'node-alice',
56
- registeredAt: '2026-08-11T12:00:00.000Z',
57
- })
58
- expect(result.store.identities.workos).toMatchObject({ source: 'idp', mode: 'remote' })
59
- expect(result.selected).toMatchObject({ name: 'alice', subject: 'alice' })
60
- expect(result.selectedDeletion).toContain('Cannot delete the default identity')
61
- expect(result.aliceKey).toBe(true)
62
- expect(result.bobKey).toBe(false)
63
-
64
- const persisted = JSON.parse(await readFile(join(root, 'identities.json'), 'utf-8')) as {
65
- version?: unknown
66
- }
67
- expect(persisted.version).toBe(1)
68
- expect(stdout).not.toContain('"d":')
69
- })
70
- })