@astrale-os/cli 1.0.0-beta.32 → 1.0.0-beta.43

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 (441) hide show
  1. package/CHANGELOG.md +928 -0
  2. package/README.md +53 -43
  3. package/THIRD-PARTY-NOTICES.md +37 -1
  4. package/dist/astrale.js +349631 -83669
  5. package/dist/public/connect-core.js +16 -47
  6. package/dist/public/keys/index.js +1 -1
  7. package/dist/types/admin/contract.d.ts +11 -0
  8. package/dist/types/admin/graph/index.d.ts +1 -0
  9. package/dist/types/admin/graph/nodes.d.ts +12 -0
  10. package/dist/types/admin/instance/client.d.ts +2 -0
  11. package/dist/types/connection/lifetime.d.ts +1 -1
  12. package/dist/types/errors.d.ts +3 -0
  13. package/dist/types/lib/proc.d.ts +1 -0
  14. package/dist/types/lib/update.d.ts +15 -7
  15. package/package.json +8 -6
  16. package/studio/client/dist/assets/index-5C1uT6ML.css +2 -0
  17. package/studio/client/dist/assets/index-C4kNlvwF.js +80 -0
  18. package/studio/client/dist/assets/schema-studio-BR9d0faB.js +8 -0
  19. package/studio/client/dist/index.html +13 -2
  20. package/studio/package.json +2 -1
  21. package/studio/server/agent/ask.test.ts +7 -1
  22. package/studio/server/agent/bridge/grant.ts +15 -3
  23. package/studio/server/agent/prompts/system.test.ts +5 -0
  24. package/studio/server/agent/prompts/system.ts +19 -4
  25. package/studio/server/agent/routes.test.ts +39 -1
  26. package/studio/server/agent/routes.ts +3 -0
  27. package/studio/server/agent/run/coordinator.test.ts +7 -1
  28. package/studio/server/agent/run/preparation.ts +1 -0
  29. package/studio/server/agent/run/transcript.test.ts +47 -2
  30. package/studio/server/agent/run/transcript.ts +32 -3
  31. package/studio/server/api/documents.test.ts +31 -0
  32. package/studio/server/api/documents.ts +35 -1
  33. package/studio/server/api-agent-loadout.test.ts +7 -1
  34. package/studio/server/api.test.ts +7 -1
  35. package/studio/server/cache.ts +4 -4
  36. package/studio/server/detect.ts +9 -12
  37. package/studio/server/domain.test.ts +83 -3
  38. package/studio/server/domain.ts +205 -27
  39. package/studio/server/handoff/service.ts +1 -1
  40. package/studio/server/index.ts +5 -8
  41. package/studio/server/introspect/extractor.ts +111 -17
  42. package/studio/server/introspect/overlay-tsmorph.test.ts +9 -9
  43. package/studio/server/introspect/overlay.ts +1 -1
  44. package/studio/server/introspect/runtime.ts +9 -1
  45. package/studio/server/introspect/source-overlay/spans.ts +2 -5
  46. package/studio/server/lifecycle.ts +1 -1
  47. package/studio/server/state/baseline.test.ts +14 -0
  48. package/studio/server/state/baseline.ts +16 -2
  49. package/studio/server/watch.test.ts +2 -1
  50. package/studio/server/watch.ts +5 -2
  51. package/studio/server/workspace/create.ts +9 -8
  52. package/studio/server/workspace-state.ts +4 -6
  53. package/studio/server/workspace-watch.ts +33 -22
  54. package/studio/shared/contracts/agent.ts +3 -0
  55. package/viewer/dist/main.js +12 -12
  56. package/src/__tests__/fixtures/publication.ts +0 -20
  57. package/src/admin/.spec/api.d.ts +0 -3
  58. package/src/admin/.spec/architecture.md +0 -22
  59. package/src/admin/.spec/icon.svg +0 -3
  60. package/src/admin/.spec/layout.ts +0 -6
  61. package/src/admin/__tests__/fixture.ts +0 -25
  62. package/src/admin/catalog/.spec/api.d.ts +0 -63
  63. package/src/admin/catalog/.spec/architecture.md +0 -7
  64. package/src/admin/catalog/.spec/icon.svg +0 -3
  65. package/src/admin/catalog/.spec/layout.ts +0 -6
  66. package/src/admin/catalog/__tests__/client.test.ts +0 -245
  67. package/src/admin/catalog/client.ts +0 -195
  68. package/src/admin/catalog/index.ts +0 -13
  69. package/src/admin/catalog/model.ts +0 -41
  70. package/src/admin/catalog/tsconfig.json +0 -8
  71. package/src/admin/contract.ts +0 -47
  72. package/src/admin/graph/.spec/api.d.ts +0 -22
  73. package/src/admin/graph/.spec/architecture.md +0 -5
  74. package/src/admin/graph/.spec/icon.svg +0 -3
  75. package/src/admin/graph/.spec/layout.ts +0 -3
  76. package/src/admin/graph/index.ts +0 -6
  77. package/src/admin/graph/nodes.ts +0 -56
  78. package/src/admin/index.ts +0 -2
  79. package/src/admin/instance/.spec/api.d.ts +0 -62
  80. package/src/admin/instance/.spec/architecture.md +0 -10
  81. package/src/admin/instance/.spec/icon.svg +0 -3
  82. package/src/admin/instance/.spec/layout.ts +0 -6
  83. package/src/admin/instance/__tests__/client.test.ts +0 -273
  84. package/src/admin/instance/client.ts +0 -191
  85. package/src/admin/instance/index.ts +0 -15
  86. package/src/admin/instance/model.ts +0 -59
  87. package/src/admin/instance/tsconfig.json +0 -8
  88. package/src/commands/__tests__/admin-instance.test.ts +0 -91
  89. package/src/commands/__tests__/auth-login.test.ts +0 -231
  90. package/src/commands/__tests__/auth-token.test.ts +0 -223
  91. package/src/commands/__tests__/call-describe.test.ts +0 -80
  92. package/src/commands/__tests__/call.test.ts +0 -63
  93. package/src/commands/__tests__/domain-install-operation.test.ts +0 -145
  94. package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
  95. package/src/commands/__tests__/domain-list.test.ts +0 -133
  96. package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
  97. package/src/commands/__tests__/install-direct.test.ts +0 -128
  98. package/src/commands/__tests__/install-identity-override.test.ts +0 -76
  99. package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
  100. package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
  101. package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
  102. package/src/commands/__tests__/instance-status.test.ts +0 -139
  103. package/src/commands/__tests__/instance-use.test.ts +0 -67
  104. package/src/commands/__tests__/introspect-parse.test.ts +0 -100
  105. package/src/commands/__tests__/logs.test.ts +0 -345
  106. package/src/commands/__tests__/read-commands.test.ts +0 -377
  107. package/src/commands/__tests__/setup-plan.test.ts +0 -61
  108. package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
  109. package/src/commands/__tests__/token-ttl.test.ts +0 -66
  110. package/src/commands/__tests__/update.test.ts +0 -95
  111. package/src/commands/__tests__/view-build.test.ts +0 -58
  112. package/src/commands/__tests__/view.test.ts +0 -197
  113. package/src/commands/admin/status.ts +0 -61
  114. package/src/commands/admin/use.ts +0 -100
  115. package/src/commands/auth/login.ts +0 -82
  116. package/src/commands/auth/logout.ts +0 -53
  117. package/src/commands/auth/status.ts +0 -86
  118. package/src/commands/auth/token.ts +0 -174
  119. package/src/commands/browser.ts +0 -236
  120. package/src/commands/call-describe.ts +0 -123
  121. package/src/commands/call.ts +0 -230
  122. package/src/commands/domain/install.ts +0 -575
  123. package/src/commands/domain/list.ts +0 -155
  124. package/src/commands/domain/publish.ts +0 -136
  125. package/src/commands/domain/uninstall.ts +0 -128
  126. package/src/commands/get.ts +0 -69
  127. package/src/commands/identity/__tests__/register.test.ts +0 -93
  128. package/src/commands/identity/create.ts +0 -35
  129. package/src/commands/identity/delete.ts +0 -24
  130. package/src/commands/identity/export.ts +0 -46
  131. package/src/commands/identity/import.ts +0 -61
  132. package/src/commands/identity/list.ts +0 -56
  133. package/src/commands/identity/register.ts +0 -195
  134. package/src/commands/identity/sync.ts +0 -38
  135. package/src/commands/identity/unsync.ts +0 -34
  136. package/src/commands/identity/use.ts +0 -24
  137. package/src/commands/identity/whoami.ts +0 -34
  138. package/src/commands/idp/add.ts +0 -150
  139. package/src/commands/idp/list.ts +0 -57
  140. package/src/commands/idp/refresh.ts +0 -38
  141. package/src/commands/idp/remove.ts +0 -36
  142. package/src/commands/idp/show.ts +0 -29
  143. package/src/commands/instance/active.ts +0 -73
  144. package/src/commands/instance/bookmark.ts +0 -101
  145. package/src/commands/instance/create.ts +0 -61
  146. package/src/commands/instance/delete.ts +0 -69
  147. package/src/commands/instance/forget.ts +0 -26
  148. package/src/commands/instance/list.ts +0 -197
  149. package/src/commands/instance/status.ts +0 -92
  150. package/src/commands/instance/use.ts +0 -263
  151. package/src/commands/introspect.ts +0 -129
  152. package/src/commands/logs.ts +0 -371
  153. package/src/commands/mutate.ts +0 -122
  154. package/src/commands/query.ts +0 -142
  155. package/src/commands/session/analyze.ts +0 -72
  156. package/src/commands/session/list.ts +0 -36
  157. package/src/commands/setup.ts +0 -54
  158. package/src/commands/status.ts +0 -60
  159. package/src/commands/studio.ts +0 -434
  160. package/src/commands/token.ts +0 -121
  161. package/src/commands/ui/__tests__/commands.test.ts +0 -152
  162. package/src/commands/ui/add.ts +0 -51
  163. package/src/commands/ui/doctor.ts +0 -21
  164. package/src/commands/ui/init.ts +0 -38
  165. package/src/commands/ui/list.ts +0 -26
  166. package/src/commands/ui/preset-apply.ts +0 -19
  167. package/src/commands/ui/preset-list.ts +0 -12
  168. package/src/commands/ui/shared.ts +0 -25
  169. package/src/commands/update.ts +0 -356
  170. package/src/commands/use.ts +0 -86
  171. package/src/commands/view-serve.ts +0 -26
  172. package/src/commands/view.ts +0 -658
  173. package/src/connect-core.test.ts +0 -38
  174. package/src/connect-core.ts +0 -42
  175. package/src/connection/.spec/api.d.ts +0 -110
  176. package/src/connection/.spec/architecture.md +0 -58
  177. package/src/connection/.spec/capabilities/connection.ts +0 -13
  178. package/src/connection/.spec/examples/call.ts +0 -7
  179. package/src/connection/.spec/flows/command.ts +0 -20
  180. package/src/connection/.spec/flows/session.ts +0 -62
  181. package/src/connection/.spec/laws/connection.ts +0 -213
  182. package/src/connection/.spec/layout.ts +0 -22
  183. package/src/connection/__tests__/auth.test.ts +0 -129
  184. package/src/connection/__tests__/ca-fetch.test.ts +0 -60
  185. package/src/connection/__tests__/call.test.ts +0 -17
  186. package/src/connection/__tests__/credential.test.ts +0 -254
  187. package/src/connection/__tests__/errors.test.ts +0 -577
  188. package/src/connection/__tests__/exchange.test.ts +0 -404
  189. package/src/connection/__tests__/failure-fixtures.ts +0 -39
  190. package/src/connection/__tests__/failure-safety.test.ts +0 -75
  191. package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
  192. package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
  193. package/src/connection/__tests__/managed.test.ts +0 -39
  194. package/src/connection/__tests__/reasons.test.ts +0 -78
  195. package/src/connection/__tests__/self.test.ts +0 -71
  196. package/src/connection/__tests__/session.test.ts +0 -144
  197. package/src/connection/__tests__/target.test.ts +0 -95
  198. package/src/connection/auth.ts +0 -265
  199. package/src/connection/call.ts +0 -7
  200. package/src/connection/command.ts +0 -67
  201. package/src/connection/credential.ts +0 -138
  202. package/src/connection/errors.ts +0 -1
  203. package/src/connection/exchange.ts +0 -394
  204. package/src/connection/failure/classify.ts +0 -110
  205. package/src/connection/failure/index.ts +0 -18
  206. package/src/connection/failure/model.ts +0 -28
  207. package/src/connection/failure/render.ts +0 -116
  208. package/src/connection/index.ts +0 -8
  209. package/src/connection/lifetime.ts +0 -25
  210. package/src/connection/reasons.ts +0 -209
  211. package/src/connection/self.ts +0 -138
  212. package/src/connection/session.ts +0 -203
  213. package/src/connection/target.ts +0 -112
  214. package/src/connection/tsconfig.json +0 -6
  215. package/src/errors.ts +0 -66
  216. package/src/graph/.spec/api.d.ts +0 -41
  217. package/src/graph/.spec/laws/documents.ts +0 -24
  218. package/src/graph/.spec/laws/projection.ts +0 -13
  219. package/src/graph/.spec/layout.ts +0 -14
  220. package/src/graph/__tests__/mutation.test.ts +0 -51
  221. package/src/graph/__tests__/projection.test.ts +0 -22
  222. package/src/graph/__tests__/query.test.ts +0 -180
  223. package/src/graph/class.ts +0 -30
  224. package/src/graph/index.ts +0 -4
  225. package/src/graph/mutation.ts +0 -46
  226. package/src/graph/projection.ts +0 -21
  227. package/src/graph/query.ts +0 -95
  228. package/src/graph/tsconfig.json +0 -6
  229. package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
  230. package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
  231. package/src/identity/.spec/api.d.ts +0 -124
  232. package/src/identity/.spec/architecture.md +0 -33
  233. package/src/identity/.spec/capabilities/identity.ts +0 -7
  234. package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
  235. package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
  236. package/src/identity/.spec/flows/import.ts +0 -29
  237. package/src/identity/.spec/laws/identity.ts +0 -56
  238. package/src/identity/.spec/layout.ts +0 -13
  239. package/src/identity/__tests__/fixtures/registry-journey.ts +0 -65
  240. package/src/identity/__tests__/registration.test.ts +0 -64
  241. package/src/identity/__tests__/registry.test.ts +0 -74
  242. package/src/identity/__tests__/transfer.test.ts +0 -198
  243. package/src/identity/index.ts +0 -23
  244. package/src/identity/registration.ts +0 -72
  245. package/src/identity/registry.ts +0 -181
  246. package/src/identity/transfer.ts +0 -187
  247. package/src/identity/tsconfig.json +0 -6
  248. package/src/index.ts +0 -1
  249. package/src/keys/.spec/api.d.ts +0 -74
  250. package/src/keys/.spec/architecture.md +0 -13
  251. package/src/keys/.spec/laws/keys.ts +0 -43
  252. package/src/keys/.spec/layout.ts +0 -6
  253. package/src/keys/__tests__/algorithm.test.ts +0 -39
  254. package/src/keys/__tests__/keys.test.ts +0 -172
  255. package/src/keys/algorithm.ts +0 -33
  256. package/src/keys/credential.ts +0 -113
  257. package/src/keys/index.ts +0 -14
  258. package/src/keys/pair.ts +0 -219
  259. package/src/keys/tsconfig.json +0 -6
  260. package/src/lib/__tests__/admin-target.test.ts +0 -184
  261. package/src/lib/__tests__/binary.test.ts +0 -70
  262. package/src/lib/__tests__/browser-retention.test.ts +0 -212
  263. package/src/lib/__tests__/command-dx.test.ts +0 -102
  264. package/src/lib/__tests__/concurrency.test.ts +0 -62
  265. package/src/lib/__tests__/config.test.ts +0 -81
  266. package/src/lib/__tests__/design.test.ts +0 -99
  267. package/src/lib/__tests__/domain-publication.test.ts +0 -138
  268. package/src/lib/__tests__/format.test.ts +0 -22
  269. package/src/lib/__tests__/idp-session.driver.ts +0 -60
  270. package/src/lib/__tests__/idp-session.test.ts +0 -404
  271. package/src/lib/__tests__/idp.test.ts +0 -415
  272. package/src/lib/__tests__/instance-candidates.test.ts +0 -146
  273. package/src/lib/__tests__/instance-target.test.ts +0 -213
  274. package/src/lib/__tests__/instance.test.ts +0 -192
  275. package/src/lib/__tests__/local-status.test.ts +0 -202
  276. package/src/lib/__tests__/log-errors.test.ts +0 -64
  277. package/src/lib/__tests__/log.test.ts +0 -31
  278. package/src/lib/__tests__/meta.test.ts +0 -55
  279. package/src/lib/__tests__/output.test.ts +0 -162
  280. package/src/lib/__tests__/panel.test.ts +0 -40
  281. package/src/lib/__tests__/port.test.ts +0 -44
  282. package/src/lib/__tests__/prompt.test.ts +0 -25
  283. package/src/lib/__tests__/sdk-deps.test.ts +0 -68
  284. package/src/lib/__tests__/self.test.ts +0 -50
  285. package/src/lib/__tests__/skills.test.ts +0 -834
  286. package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
  287. package/src/lib/__tests__/table.test.ts +0 -53
  288. package/src/lib/__tests__/update.test.ts +0 -511
  289. package/src/lib/__tests__/use-target.test.ts +0 -56
  290. package/src/lib/__tests__/validation.test.ts +0 -34
  291. package/src/lib/__tests__/view-assets.test.ts +0 -171
  292. package/src/lib/__tests__/view-external-open-intent.test.ts +0 -150
  293. package/src/lib/__tests__/view-external-open-origins.test.ts +0 -27
  294. package/src/lib/__tests__/view-open-intent.test.ts +0 -280
  295. package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
  296. package/src/lib/__tests__/view-server.test.ts +0 -91
  297. package/src/lib/__tests__/view-session.test.ts +0 -100
  298. package/src/lib/__tests__/view-snapshot.test.ts +0 -77
  299. package/src/lib/admin-domain.ts +0 -43
  300. package/src/lib/admin-instance.ts +0 -56
  301. package/src/lib/admin-target.ts +0 -290
  302. package/src/lib/binary.ts +0 -127
  303. package/src/lib/browser-retention.ts +0 -210
  304. package/src/lib/browser.ts +0 -150
  305. package/src/lib/ca-fetch.ts +0 -133
  306. package/src/lib/command-dx.ts +0 -191
  307. package/src/lib/concurrency.ts +0 -31
  308. package/src/lib/config.ts +0 -57
  309. package/src/lib/credential-lifetime.ts +0 -24
  310. package/src/lib/domain-publication.ts +0 -104
  311. package/src/lib/failure-debug.ts +0 -26
  312. package/src/lib/format.ts +0 -4
  313. package/src/lib/idp-session.ts +0 -156
  314. package/src/lib/idp.ts +0 -926
  315. package/src/lib/instance-candidates.ts +0 -49
  316. package/src/lib/instance-target.ts +0 -197
  317. package/src/lib/instance.ts +0 -468
  318. package/src/lib/invocation.ts +0 -11
  319. package/src/lib/local-status.ts +0 -152
  320. package/src/lib/log.ts +0 -143
  321. package/src/lib/login-flow.ts +0 -201
  322. package/src/lib/meta.ts +0 -90
  323. package/src/lib/output.ts +0 -238
  324. package/src/lib/panel.ts +0 -61
  325. package/src/lib/port.ts +0 -41
  326. package/src/lib/proc.ts +0 -87
  327. package/src/lib/prompt.ts +0 -136
  328. package/src/lib/provision-instance.ts +0 -139
  329. package/src/lib/sdk-deps.ts +0 -104
  330. package/src/lib/self.ts +0 -22
  331. package/src/lib/skills/lock.ts +0 -117
  332. package/src/lib/skills/sync.ts +0 -878
  333. package/src/lib/skills.ts +0 -120
  334. package/src/lib/table.ts +0 -62
  335. package/src/lib/update.ts +0 -568
  336. package/src/lib/use-target.ts +0 -24
  337. package/src/lib/validation.ts +0 -59
  338. package/src/lib/view/assets.ts +0 -87
  339. package/src/lib/view/external-open-intent.ts +0 -41
  340. package/src/lib/view/external-open-origins.ts +0 -37
  341. package/src/lib/view/host-capabilities.ts +0 -17
  342. package/src/lib/view/open-intent.ts +0 -67
  343. package/src/lib/view/port-allocation.ts +0 -19
  344. package/src/lib/view/resolve.ts +0 -111
  345. package/src/lib/view/server.ts +0 -259
  346. package/src/lib/view/session.ts +0 -154
  347. package/src/lib/view/snapshot.ts +0 -101
  348. package/src/paths/.spec/api.d.ts +0 -13
  349. package/src/paths/.spec/architecture.md +0 -5
  350. package/src/paths/.spec/layout.ts +0 -3
  351. package/src/paths/index.ts +0 -13
  352. package/src/program/.spec/api.d.ts +0 -43
  353. package/src/program/.spec/architecture.md +0 -18
  354. package/src/program/.spec/laws/program.ts +0 -29
  355. package/src/program/.spec/layout.ts +0 -14
  356. package/src/program/__tests__/program.test.ts +0 -556
  357. package/src/program/argv.ts +0 -14
  358. package/src/program/build.ts +0 -205
  359. package/src/program/command.ts +0 -43
  360. package/src/program/index.ts +0 -3
  361. package/src/program/options.ts +0 -41
  362. package/src/program/registry.ts +0 -64
  363. package/src/program/tsconfig.json +0 -6
  364. package/src/setup/__tests__/instance-step.test.ts +0 -256
  365. package/src/setup/__tests__/util.test.ts +0 -29
  366. package/src/setup/engine.ts +0 -83
  367. package/src/setup/render.ts +0 -107
  368. package/src/setup/steps/admin.ts +0 -93
  369. package/src/setup/steps/agent-browser.ts +0 -81
  370. package/src/setup/steps/auth.ts +0 -54
  371. package/src/setup/steps/domain.ts +0 -68
  372. package/src/setup/steps/index.ts +0 -18
  373. package/src/setup/steps/instance.ts +0 -206
  374. package/src/setup/steps/skills-bridge.ts +0 -70
  375. package/src/setup/steps/skills.ts +0 -61
  376. package/src/setup/types.ts +0 -61
  377. package/src/setup/util.ts +0 -34
  378. package/src/state/.spec/api.d.ts +0 -152
  379. package/src/state/.spec/architecture.md +0 -45
  380. package/src/state/.spec/capabilities/state.ts +0 -7
  381. package/src/state/.spec/flows/identity-update.ts +0 -22
  382. package/src/state/.spec/laws/state.ts +0 -73
  383. package/src/state/.spec/layout.ts +0 -15
  384. package/src/state/__tests__/exchange-credentials.test.ts +0 -341
  385. package/src/state/__tests__/files.test.ts +0 -136
  386. package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
  387. package/src/state/__tests__/fixtures/session-route-process.ts +0 -93
  388. package/src/state/__tests__/identities.test.ts +0 -142
  389. package/src/state/__tests__/paths.test.ts +0 -28
  390. package/src/state/__tests__/session-routes.test.ts +0 -138
  391. package/src/state/exchange-credentials.ts +0 -250
  392. package/src/state/files.ts +0 -170
  393. package/src/state/identities.ts +0 -229
  394. package/src/state/index.ts +0 -31
  395. package/src/state/paths.ts +0 -64
  396. package/src/state/session-routes.ts +0 -34
  397. package/src/state/tsconfig.json +0 -6
  398. package/src/telemetry/__tests__/analyze-log.test.ts +0 -38
  399. package/src/telemetry/__tests__/gate.test.ts +0 -63
  400. package/src/telemetry/__tests__/recorder.test.ts +0 -111
  401. package/src/telemetry/__tests__/redact.test.ts +0 -79
  402. package/src/telemetry/__tests__/retention.test.ts +0 -267
  403. package/src/telemetry/__tests__/session.test.ts +0 -166
  404. package/src/telemetry/__tests__/settings.test.ts +0 -102
  405. package/src/telemetry/__tests__/store-scan.test.ts +0 -128
  406. package/src/telemetry/__tests__/trigger.test.ts +0 -78
  407. package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
  408. package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
  409. package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
  410. package/src/telemetry/adapters/claude-code.ts +0 -90
  411. package/src/telemetry/adapters/codex.ts +0 -160
  412. package/src/telemetry/adapters/index.ts +0 -45
  413. package/src/telemetry/adapters/types.ts +0 -21
  414. package/src/telemetry/analyze.ts +0 -249
  415. package/src/telemetry/gate.ts +0 -79
  416. package/src/telemetry/recorder.ts +0 -68
  417. package/src/telemetry/redact.ts +0 -53
  418. package/src/telemetry/retention.ts +0 -176
  419. package/src/telemetry/session.ts +0 -94
  420. package/src/telemetry/settings.ts +0 -79
  421. package/src/telemetry/store.ts +0 -174
  422. package/src/telemetry/trigger.ts +0 -107
  423. package/src/telemetry/types.ts +0 -64
  424. package/src/test-utils.ts +0 -18
  425. package/src/ui/.spec/api.d.ts +0 -14
  426. package/src/ui/.spec/architecture.md +0 -14
  427. package/src/ui/.spec/laws.ts +0 -50
  428. package/src/ui/.spec/layout.ts +0 -16
  429. package/src/ui/__tests__/ui.test.ts +0 -1742
  430. package/src/ui/index.ts +0 -13
  431. package/src/ui/lock.ts +0 -89
  432. package/src/ui/model.ts +0 -83
  433. package/src/ui/operations.ts +0 -1044
  434. package/src/ui/project.ts +0 -333
  435. package/src/ui/release.ts +0 -398
  436. package/src/ui/runner.ts +0 -18
  437. package/studio/client/dist/assets/index-BFVFs_8x.js +0 -81
  438. package/studio/client/dist/assets/index-DuB9iUdu.css +0 -2
  439. package/studio/client/dist/assets/schema-studio-DH6oEWME.js +0 -8
  440. package/studio/tsconfig.json +0 -24
  441. package/viewer/tsconfig.json +0 -13
@@ -1,20 +0,0 @@
1
- import type { schema } from '@astrale-os/sdk/schema'
2
-
3
- import { defineApplication } from '@astrale-os/sdk/application'
4
- import { compile } from '@astrale-os/sdk/deployment/build'
5
- import { addressing, assemble } from '@astrale-os/sdk/deployment/release'
6
- import { defineRuntime } from '@astrale-os/sdk/runtime'
7
-
8
- /** Build a canonical empty-runtime Release for cross-boundary CLI tests. */
9
- export function releaseFor<const Schema extends schema.DomainSchema>(
10
- source: Schema,
11
- issuer: string,
12
- ) {
13
- const runtime = defineRuntime<Schema>()({
14
- integrations: {},
15
- initialize: () => ({ providers: {} }),
16
- actions: [],
17
- workflows: [],
18
- })
19
- return assemble(compile(defineApplication({ schema: source, runtime })), addressing(issuer))
20
- }
@@ -1,3 +0,0 @@
1
- /** CLI-private V2 Admin adapters; no package export or duplicate control-plane semantics. */
2
- export * as catalog from '../catalog/.spec/api.js'
3
- export * as instance from '../instance/.spec/api.js'
@@ -1,22 +0,0 @@
1
- # CLI Admin adapters
2
-
3
- This private aggregate translates the frozen CLI command journey into the stable public
4
- `admin.astrale.ai` contract. Routine commands use canonical Admin Class, Property, Core receiver,
5
- and Method paths through Kernel Client. They do not download, inspect, bind, or rebuild the Admin
6
- schema. Strict local decoders admit every untrusted Admin result. The adapter does not import Admin
7
- implementation code, call Host directly, or persist remote graph truth.
8
-
9
- `instance` owns create/list/status/delete/install projection and explicitly excludes the reserved
10
- Admin Host from consumer placement. `catalog` owns Domain inventory, publication, and default-set
11
- configuration. `graph` is their bounded cursor helper and is not re-exported by the aggregate.
12
-
13
- Commander grammar, help text, output shapes, bookmark behavior, and current interactive host
14
- selection remain owned by the existing command surface; these adapters change only its remote
15
- semantic owner.
16
-
17
- ## Performance contract
18
-
19
- `instance list` performs one Admin method call after connection setup and no schema-discovery call.
20
- Against the production beta Admin endpoint, the complete command must finish in less than 1 second
21
- with a warm route/cache and less than 2 seconds from a cold CLI process. Unit tests prove the
22
- single-call/no-reflection shape; retained live evidence proves the wall-clock bounds.
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#7c3aed" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
2
- <path d="M12 3 4.5 7v10L12 21l7.5-4V7z"/><path d="M8 10h8M8 14h5"/><circle cx="17" cy="16" r="2.5"/>
3
- </svg>
@@ -1,6 +0,0 @@
1
- import { defineLayout } from '@astrale-os/spec/authoring'
2
-
3
- export default defineLayout({
4
- entries: ['catalog/', 'graph/', 'index.ts', 'instance/'],
5
- exact: true,
6
- })
@@ -1,25 +0,0 @@
1
- import type { Call } from '@astrale-os/sdk/client'
2
- import type { ClientSession } from '@astrale-os/sdk/client/session'
3
-
4
- import { mock } from 'bun:test'
5
-
6
- export function adminSession(implementation?: (target: string, input: unknown) => unknown): {
7
- readonly call: ReturnType<typeof mock>
8
- readonly reflection: ReturnType<typeof mock>
9
- readonly session: ClientSession
10
- } {
11
- const call = mock(async (request: Call) =>
12
- implementation?.(String(request.target), request.input),
13
- )
14
- const reflection = mock(() => {
15
- throw new Error('Routine Admin commands must not perform schema discovery or reflection.')
16
- })
17
- const session = {
18
- call,
19
- installation: reflection,
20
- snapshot: reflection,
21
- bind: reflection,
22
- invoke: reflection,
23
- } as unknown as ClientSession
24
- return { call, reflection, session }
25
- }
@@ -1,63 +0,0 @@
1
- import type { ClientSession } from '@astrale-os/sdk/client/session'
2
-
3
- import type { AdminGraphApi } from '../../graph/.spec/api.js'
4
-
5
- export interface DomainInfo {
6
- readonly id: string
7
- readonly origin: string
8
- readonly name: string
9
- readonly url?: string
10
- readonly description?: string
11
- readonly installByDefault?: boolean
12
- readonly createdAt: string
13
- readonly updatedAt: string
14
- }
15
-
16
- export interface PublishDomainInput {
17
- readonly origin: string
18
- readonly name: string
19
- readonly url: string
20
- readonly description?: string
21
- readonly installByDefault?: boolean
22
- }
23
-
24
- export interface PublishDomainResult {
25
- readonly entry: DomainInfo
26
- readonly changed: boolean
27
- readonly isNew: boolean
28
- }
29
-
30
- export interface InstallDomainResult {
31
- readonly name: string
32
- readonly origin: string
33
- readonly instanceId: string
34
- readonly url: string
35
- readonly ok: boolean
36
- readonly error?: string | null
37
- }
38
-
39
- export interface AdminCatalogContext {
40
- readonly session: ClientSession
41
- readonly graph: AdminGraphApi
42
- }
43
-
44
- export interface AdminCatalogApi {
45
- list(): Promise<DomainInfo[]>
46
- require(identifier: string): Promise<DomainInfo>
47
- publish(input: PublishDomainInput): Promise<PublishDomainResult>
48
- }
49
-
50
- export class AdminDomainNotFoundError extends Error {
51
- constructor(identifier: string)
52
- readonly name: 'NotFoundError'
53
- readonly identifier: string
54
- }
55
-
56
- export interface AdminCatalogDependencies {
57
- readonly operationId?: (kind: 'publish' | 'configure-default') => string
58
- }
59
-
60
- export function connectAdminCatalog(
61
- context: AdminCatalogContext,
62
- dependencies?: AdminCatalogDependencies,
63
- ): Promise<AdminCatalogApi>
@@ -1,7 +0,0 @@
1
- # CLI Admin catalog adapter
2
-
3
- The adapter reads policy-visible `Domain` Nodes through bounded Graph pages using stable Class and
4
- Property keys, and derives default membership from the stable Fleet relation. It performs no schema
5
- discovery or reflection. Publication invokes `Fleet.publishDomain`; a requested default change is a
6
- separate explicit `Domain.configureDefault` call. Unchanged publication input is a no-op, and an
7
- omitted description preserves the current value.
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#059669" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
2
- <path d="M5 4h14v16H5zM8 8h8M8 12h8M8 16h5"/><circle cx="17" cy="16" r="2"/>
3
- </svg>
@@ -1,6 +0,0 @@
1
- import { defineLayout } from '@astrale-os/spec/authoring'
2
-
3
- export default defineLayout({
4
- entries: ['__tests__/', 'client.ts', 'index.ts', 'model.ts', 'tsconfig.json'],
5
- exact: true,
6
- })
@@ -1,245 +0,0 @@
1
- import type { Node } from '@astrale-os/sdk/graph/node'
2
- import type { QueryAST } from '@astrale-os/sdk/query'
3
-
4
- import { NodeId } from '@astrale-os/sdk/graph/node'
5
- import { normalizeProperties } from '@astrale-os/sdk/graph/properties'
6
- import { PropertyKey } from '@astrale-os/sdk/schema'
7
- import { describe, expect, mock, test } from 'bun:test'
8
-
9
- import type { AdminGraphApi } from '../../graph'
10
-
11
- import { adminSession } from '../../__tests__/fixture'
12
- import { connectAdminCatalog } from '../client'
13
-
14
- const domainProperties = Object.freeze({
15
- origin: PropertyKey('admin.astrale.ai:class.Domain.property.origin'),
16
- name: PropertyKey('kernel.astrale.ai:class.Named.property.name'),
17
- discoveryUrl: PropertyKey('admin.astrale.ai:class.Domain.property.discoveryUrl'),
18
- description: PropertyKey('kernel.astrale.ai:class.Descriptable.property.description'),
19
- createdAt: PropertyKey('kernel.astrale.ai:class.Timestamped.property.createdAt'),
20
- updatedAt: PropertyKey('kernel.astrale.ai:class.Timestamped.property.updatedAt'),
21
- })
22
-
23
- function domainNode(id: string, origin: string): Node {
24
- return {
25
- id: NodeId(id),
26
- class: 'admin.astrale.ai:Domain' as Node['class'],
27
- props: normalizeProperties({
28
- [domainProperties.origin]: origin,
29
- [domainProperties.name]: origin.split('.')[0]!,
30
- [domainProperties.discoveryUrl]: `https://${origin}`,
31
- [domainProperties.description]: `${origin} description`,
32
- [domainProperties.createdAt]: '2026-08-12T00:00:00.000Z',
33
- [domainProperties.updatedAt]: '2026-08-12T00:00:00.000Z',
34
- }),
35
- }
36
- }
37
-
38
- function fixture(input: {
39
- domains?: readonly Node[]
40
- defaults?: readonly Node[]
41
- invoke?: (target: string, value: unknown) => unknown
42
- }) {
43
- const calls: Array<{
44
- target: string
45
- value: unknown
46
- }> = []
47
- const remote = adminSession((target, value) => {
48
- calls.push({ target, value })
49
- return input.invoke?.(target, value)
50
- })
51
- const query = mock(async (_ast: QueryAST) => ({
52
- result: {
53
- kind: 'nodes' as const,
54
- nodes: (input.domains ?? []).map((value) => ({ kind: 'value' as const, value })),
55
- },
56
- page: {},
57
- }))
58
- const defaultNodes = input.defaults ?? []
59
- const neighbors = mock(
60
- async (
61
- _source: Parameters<AdminGraphApi['neighbors']>[0],
62
- _via: Parameters<AdminGraphApi['neighbors']>[1],
63
- _options: Parameters<AdminGraphApi['neighbors']>[2],
64
- ) => ({
65
- nodes: defaultNodes,
66
- first: defaultNodes[0] ?? null,
67
- graph: { nodes: defaultNodes, edges: [] },
68
- cursor: null,
69
- collect: async () => ({ nodes: defaultNodes, cursor: null }),
70
- }),
71
- )
72
- const graph = { query, neighbors } as unknown as AdminGraphApi
73
- return {
74
- call: remote.call,
75
- reflection: remote.reflection,
76
- query,
77
- neighbors,
78
- calls,
79
- connect: () =>
80
- connectAdminCatalog(
81
- { session: remote.session, graph },
82
- {
83
- operationId: (kind) => `cli.domain.${kind}:test`,
84
- },
85
- ),
86
- }
87
- }
88
-
89
- function summary(origin: string) {
90
- return {
91
- id: '@crm-domain',
92
- origin,
93
- name: 'crm',
94
- discoveryUrl: `https://${origin}`,
95
- createdAt: '2026-08-12T00:00:00.000Z',
96
- updatedAt: '2026-08-12T00:00:00.000Z',
97
- }
98
- }
99
-
100
- describe('V2 Admin Domain catalog adapter', () => {
101
- test('lists Domain nodes through GraphApi and joins the Fleet default relation', async () => {
102
- const crm = domainNode('crm-domain', 'crm.acme.dev')
103
- const notes = domainNode('notes-domain', 'notes.acme.dev')
104
- const contract = fixture({ domains: [crm, notes], defaults: [crm] })
105
- const api = await contract.connect()
106
-
107
- await expect(api.list()).resolves.toEqual([
108
- {
109
- id: '@crm-domain',
110
- origin: 'crm.acme.dev',
111
- name: 'crm',
112
- url: 'https://crm.acme.dev',
113
- description: 'crm.acme.dev description',
114
- installByDefault: true,
115
- createdAt: '2026-08-12T00:00:00.000Z',
116
- updatedAt: '2026-08-12T00:00:00.000Z',
117
- },
118
- {
119
- id: '@notes-domain',
120
- origin: 'notes.acme.dev',
121
- name: 'notes',
122
- url: 'https://notes.acme.dev',
123
- description: 'notes.acme.dev description',
124
- createdAt: '2026-08-12T00:00:00.000Z',
125
- updatedAt: '2026-08-12T00:00:00.000Z',
126
- },
127
- ])
128
- expect(contract.query).toHaveBeenCalledWith(
129
- {
130
- format: 'astrale.graph.query',
131
- version: 'v6',
132
- source: {
133
- kind: 'node',
134
- terms: [
135
- {
136
- kind: 'class',
137
- class: { origin: 'admin.astrale.ai', kind: 'class', name: 'Domain' },
138
- },
139
- ],
140
- binding: 'n0',
141
- },
142
- steps: [],
143
- select: { kind: 'nodes', binding: 'n0', projection: { kind: 'value' } },
144
- },
145
- { page: { size: 256 } },
146
- )
147
- const [source, edge, options] = contract.neighbors.mock.calls[0]!
148
- expect(String(source)).toBe('/:admin.astrale.ai:core.fleet')
149
- expect(edge).toEqual({
150
- origin: 'admin.astrale.ai',
151
- kind: 'class',
152
- name: 'fleet_installs_domain_by_default',
153
- })
154
- expect(options).toEqual({ direction: 'outgoing', page: { size: 256 } })
155
- })
156
-
157
- test('publishes through Fleet then configures the Domain default explicitly', async () => {
158
- const contract = fixture({ invoke: () => summary('crm.acme.dev') })
159
- const api = await contract.connect()
160
-
161
- await expect(
162
- api.publish({
163
- origin: 'crm.acme.dev',
164
- name: 'crm',
165
- url: 'https://crm.acme.dev',
166
- installByDefault: true,
167
- }),
168
- ).resolves.toMatchObject({ changed: true, isNew: true, entry: { installByDefault: true } })
169
- expect(contract.calls).toEqual([
170
- {
171
- target: '/:admin.astrale.ai:core.fleet::publishDomain',
172
- value: {
173
- operationId: 'cli.domain.publish:test',
174
- origin: 'crm.acme.dev',
175
- name: 'crm',
176
- discoveryUrl: 'https://crm.acme.dev',
177
- },
178
- },
179
- {
180
- target: '@crm-domain::configureDefault',
181
- value: {
182
- operationId: 'cli.domain.configure-default:test',
183
- enabled: true,
184
- },
185
- },
186
- ])
187
- })
188
-
189
- test('does not invoke a receiver when the catalog record is already current', async () => {
190
- const crm = domainNode('crm-domain', 'crm.acme.dev')
191
- const contract = fixture({ domains: [crm] })
192
- const api = await contract.connect()
193
-
194
- await expect(
195
- api.publish({ origin: 'crm.acme.dev', name: 'crm', url: 'https://crm.acme.dev' }),
196
- ).resolves.toMatchObject({ changed: false, isNew: false })
197
- expect(contract.call).not.toHaveBeenCalled()
198
- expect(contract.reflection).not.toHaveBeenCalled()
199
- })
200
-
201
- test('connects without schema discovery or graph I/O', async () => {
202
- const contract = fixture({})
203
-
204
- await contract.connect()
205
-
206
- expect(contract.call).not.toHaveBeenCalled()
207
- expect(contract.reflection).not.toHaveBeenCalled()
208
- expect(contract.query).not.toHaveBeenCalled()
209
- expect(contract.neighbors).not.toHaveBeenCalled()
210
- })
211
-
212
- test('rejects malformed graph records and publication summaries', async () => {
213
- const invalidNode = {
214
- id: NodeId('invalid-domain'),
215
- class: 'admin.astrale.ai:Domain' as Node['class'],
216
- props: normalizeProperties({
217
- [domainProperties.origin]: 'invalid.example.dev',
218
- [domainProperties.name]: 'invalid',
219
- [domainProperties.discoveryUrl]: 'https://invalid.example.dev',
220
- [domainProperties.createdAt]: '2026-08-12T00:00:00.000Z',
221
- }),
222
- }
223
- await expect((await fixture({ domains: [invalidNode] }).connect()).list()).rejects.toThrow(
224
- 'Admin Domain.updatedAt is invalid.',
225
- )
226
-
227
- const malformed = fixture({ invoke: () => ({ id: '@domain-only' }) })
228
- await expect(
229
- (await malformed.connect()).publish({
230
- origin: 'crm.acme.dev',
231
- name: 'crm',
232
- url: 'https://crm.acme.dev',
233
- }),
234
- ).rejects.toThrow('Admin Domain origin is invalid.')
235
-
236
- const malformedPath = fixture({ invoke: () => ({ ...summary('crm.acme.dev'), id: 'bad' }) })
237
- await expect(
238
- (await malformedPath.connect()).publish({
239
- origin: 'crm.acme.dev',
240
- name: 'crm',
241
- url: 'https://crm.acme.dev',
242
- }),
243
- ).rejects.toThrow('Admin Domain id is invalid.')
244
- })
245
- })
@@ -1,195 +0,0 @@
1
- import type { ClientSession } from '@astrale-os/sdk/client/session'
2
- import type { Node } from '@astrale-os/sdk/graph/node'
3
-
4
- import { Path } from '@astrale-os/sdk/graph/path'
5
- import { Query } from '@astrale-os/sdk/query'
6
-
7
- import { AdminContract, callAdminMethod } from '../contract'
8
- import { readAllNodes, type AdminGraphApi } from '../graph'
9
- import {
10
- AdminDomainNotFoundError,
11
- type DomainInfo,
12
- type PublishDomainInput,
13
- type PublishDomainResult,
14
- } from './model'
15
-
16
- const PAGE_SIZE = 256
17
- const MAXIMUM_DOMAINS = 10_000
18
- const MAXIMUM_PAGES = Math.ceil(MAXIMUM_DOMAINS / PAGE_SIZE) + 1
19
-
20
- export interface AdminCatalogContext {
21
- readonly session: ClientSession
22
- readonly graph: AdminGraphApi
23
- }
24
-
25
- export interface AdminCatalogApi {
26
- list(): Promise<DomainInfo[]>
27
- require(identifier: string): Promise<DomainInfo>
28
- publish(input: PublishDomainInput): Promise<PublishDomainResult>
29
- }
30
-
31
- export interface AdminCatalogDependencies {
32
- readonly operationId?: (kind: 'publish' | 'configure-default') => string
33
- }
34
-
35
- /** Connect the Domain catalog journey without schema discovery or reflection. */
36
- export async function connectAdminCatalog(
37
- context: AdminCatalogContext,
38
- dependencies: AdminCatalogDependencies = {},
39
- ): Promise<AdminCatalogApi> {
40
- const operationId = dependencies.operationId ?? defaultOperationId
41
-
42
- const list = async (): Promise<DomainInfo[]> => {
43
- const [nodes, defaultsPage] = await Promise.all([
44
- readAllNodes(
45
- context.graph,
46
- Query.from({ nodes: [AdminContract.classes.Domain] }).select({
47
- kind: 'nodes',
48
- projection: { kind: 'value' },
49
- }),
50
- {
51
- label: 'Admin Domain catalog',
52
- maximum: MAXIMUM_DOMAINS,
53
- maximumPages: MAXIMUM_PAGES,
54
- },
55
- ),
56
- context.graph.neighbors(
57
- AdminContract.fleet,
58
- AdminContract.edges.fleetInstallsDomainByDefault,
59
- {
60
- direction: 'outgoing',
61
- page: { size: PAGE_SIZE },
62
- },
63
- ),
64
- ])
65
- const defaults = await defaultsPage.collect({ maximumPages: MAXIMUM_PAGES })
66
- if (defaults.cursor !== null)
67
- throw new TypeError('Admin default Domain catalog exceeded its bound.')
68
- const defaultIds = new Set(defaults.nodes.map((node) => String(node.id)))
69
- return nodes.map((node) => domainFromNode(node, defaultIds.has(String(node.id))))
70
- }
71
-
72
- const requireDomain = async (identifier: string): Promise<DomainInfo> => {
73
- const found = (await list()).find(
74
- (domain) =>
75
- domain.origin === identifier ||
76
- domain.url === identifier ||
77
- domain.id === identifier ||
78
- (domain.id.startsWith('@') && domain.id.slice(1) === identifier),
79
- )
80
- if (found === undefined) throw new AdminDomainNotFoundError(identifier)
81
- return found
82
- }
83
-
84
- return Object.freeze({
85
- list,
86
- require: requireDomain,
87
- async publish(input: PublishDomainInput): Promise<PublishDomainResult> {
88
- const existing = (await list()).find((domain) => domain.origin === input.origin)
89
- const description = input.description ?? existing?.description
90
- const registryChanged =
91
- existing === undefined ||
92
- existing.name !== input.name ||
93
- existing.url !== input.url ||
94
- existing.description !== description
95
- let entry = existing
96
- if (registryChanged) {
97
- entry = domainFromSummary(
98
- await callAdminMethod(context.session, AdminContract.fleet, 'publishDomain', {
99
- operationId: operationId('publish'),
100
- origin: input.origin,
101
- name: input.name,
102
- discoveryUrl: input.url,
103
- ...(description === undefined ? {} : { description }),
104
- }),
105
- existing?.installByDefault === true,
106
- )
107
- }
108
- if (entry === undefined) throw new TypeError('Admin Domain publication returned no entry.')
109
-
110
- const defaultChanged =
111
- input.installByDefault !== undefined &&
112
- (entry.installByDefault ?? false) !== input.installByDefault
113
- if (defaultChanged) {
114
- entry = domainFromSummary(
115
- await callAdminMethod(context.session, Path.parse(entry.id), 'configureDefault', {
116
- operationId: operationId('configure-default'),
117
- enabled: input.installByDefault,
118
- }),
119
- input.installByDefault === true,
120
- )
121
- }
122
- return Object.freeze({
123
- entry,
124
- changed: registryChanged || defaultChanged,
125
- isNew: existing === undefined,
126
- })
127
- },
128
- })
129
- }
130
-
131
- function domainFromNode(node: Node, installByDefault: boolean): DomainInfo {
132
- return Object.freeze({
133
- id: Path.id(node.id).raw,
134
- origin: requiredProperty(node, 'origin'),
135
- name: requiredProperty(node, 'name'),
136
- url: requiredProperty(node, 'discoveryUrl'),
137
- ...optionalProperty(node, 'description'),
138
- ...(installByDefault ? { installByDefault: true } : {}),
139
- createdAt: requiredProperty(node, 'createdAt'),
140
- updatedAt: requiredProperty(node, 'updatedAt'),
141
- })
142
- }
143
-
144
- function domainFromSummary(input: unknown, installByDefault: boolean): DomainInfo {
145
- const value = record(input, 'Admin Domain summary')
146
- return Object.freeze({
147
- id: requiredNodePath(value.id, 'Admin Domain id'),
148
- origin: requiredString(value.origin, 'Admin Domain origin'),
149
- name: requiredString(value.name, 'Admin Domain name'),
150
- url: requiredString(value.discoveryUrl, 'Admin Domain discovery URL'),
151
- ...(value.description === undefined
152
- ? {}
153
- : { description: requiredString(value.description, 'Admin Domain description') }),
154
- ...(installByDefault ? { installByDefault: true } : {}),
155
- createdAt: requiredString(value.createdAt, 'Admin Domain creation time'),
156
- updatedAt: requiredString(value.updatedAt, 'Admin Domain update time'),
157
- })
158
- }
159
-
160
- function requiredProperty(node: Node, name: keyof typeof AdminContract.properties.domain): string {
161
- return requiredString(node.props[AdminContract.properties.domain[name]], `Admin Domain.${name}`)
162
- }
163
-
164
- function optionalProperty(
165
- node: Node,
166
- name: keyof typeof AdminContract.properties.domain,
167
- ): Readonly<Record<string, string>> {
168
- const value = node.props[AdminContract.properties.domain[name]]
169
- return value === undefined ? {} : { [name]: requiredString(value, `Admin Domain.${name}`) }
170
- }
171
-
172
- function requiredString(input: unknown, label: string): string {
173
- if (typeof input !== 'string' || input.length === 0) throw new TypeError(`${label} is invalid.`)
174
- return input
175
- }
176
-
177
- function requiredNodePath(input: unknown, label: string): string {
178
- const value = requiredString(input, label)
179
- try {
180
- return Path.parse(value).raw
181
- } catch {
182
- throw new TypeError(`${label} is invalid.`)
183
- }
184
- }
185
-
186
- function record(input: unknown, label: string): Readonly<Record<string, unknown>> {
187
- if (typeof input !== 'object' || input === null || Array.isArray(input)) {
188
- throw new TypeError(`${label} is invalid.`)
189
- }
190
- return input as Readonly<Record<string, unknown>>
191
- }
192
-
193
- function defaultOperationId(kind: 'publish' | 'configure-default'): string {
194
- return `cli.domain.${kind}:${globalThis.crypto.randomUUID()}`
195
- }
@@ -1,13 +0,0 @@
1
- export {
2
- connectAdminCatalog,
3
- type AdminCatalogApi,
4
- type AdminCatalogContext,
5
- type AdminCatalogDependencies,
6
- } from './client'
7
- export {
8
- AdminDomainNotFoundError,
9
- type DomainInfo,
10
- type InstallDomainResult,
11
- type PublishDomainInput,
12
- type PublishDomainResult,
13
- } from './model'
@@ -1,41 +0,0 @@
1
- /** CLI-stable projection of one Admin Domain catalog record. */
2
- export interface DomainInfo {
3
- readonly id: string
4
- readonly origin: string
5
- readonly name: string
6
- readonly url?: string
7
- readonly description?: string
8
- readonly installByDefault?: boolean
9
- readonly createdAt: string
10
- readonly updatedAt: string
11
- }
12
-
13
- export interface PublishDomainInput {
14
- readonly origin: string
15
- readonly name: string
16
- readonly url: string
17
- readonly description?: string
18
- readonly installByDefault?: boolean
19
- }
20
-
21
- export interface PublishDomainResult {
22
- readonly entry: DomainInfo
23
- readonly changed: boolean
24
- readonly isNew: boolean
25
- }
26
-
27
- export interface InstallDomainResult {
28
- readonly name: string
29
- readonly origin: string
30
- readonly instanceId: string
31
- readonly url: string
32
- readonly ok: boolean
33
- readonly error?: string | null
34
- }
35
-
36
- export class AdminDomainNotFoundError extends AstraleError {
37
- constructor(readonly identifier: string) {
38
- super('DOMAIN_NOT_FOUND', `No visible Admin Domain matches ${JSON.stringify(identifier)}.`)
39
- }
40
- }
41
- import { AstraleError } from '../../errors'
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.json",
3
- "compilerOptions": {
4
- "types": ["@types/node"]
5
- },
6
- "include": ["*.ts"],
7
- "exclude": ["__tests__"]
8
- }