@astrale-os/cli 1.0.0-beta.8 → 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 (599) 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 -93172
  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/instance/model.d.ts +0 -39
  11. package/dist/types/connect-core.d.ts +0 -22
  12. package/dist/types/connection/auth.d.ts +0 -36
  13. package/dist/types/errors.d.ts +0 -23
  14. package/dist/types/identity/registry.d.ts +0 -25
  15. package/dist/types/keys/algorithm.d.ts +0 -6
  16. package/dist/types/keys/credential.d.ts +0 -21
  17. package/dist/types/keys/index.d.ts +0 -4
  18. package/dist/types/keys/pair.d.ts +0 -34
  19. package/dist/types/lib/admin-target.d.ts +0 -78
  20. package/dist/types/lib/ca-fetch.d.ts +0 -2
  21. package/dist/types/lib/config.d.ts +0 -71
  22. package/dist/types/lib/failure-debug.d.ts +0 -1
  23. package/dist/types/lib/format.d.ts +0 -1
  24. package/dist/types/lib/idp-session.d.ts +0 -33
  25. package/dist/types/lib/idp.d.ts +0 -404
  26. package/dist/types/lib/instance-target.d.ts +0 -38
  27. package/dist/types/lib/instance.d.ts +0 -196
  28. package/dist/types/lib/invocation.d.ts +0 -3
  29. package/dist/types/lib/log.d.ts +0 -33
  30. package/dist/types/lib/login-flow.d.ts +0 -49
  31. package/dist/types/lib/meta.d.ts +0 -36
  32. package/dist/types/lib/output.d.ts +0 -87
  33. package/dist/types/lib/proc.d.ts +0 -43
  34. package/dist/types/lib/table.d.ts +0 -18
  35. package/dist/types/lib/update.d.ts +0 -131
  36. package/dist/types/lib/validation.d.ts +0 -11
  37. package/dist/types/paths/index.d.ts +0 -2
  38. package/dist/types/state/exchange-credentials.d.ts +0 -25
  39. package/dist/types/state/files.d.ts +0 -9
  40. package/dist/types/state/identities.d.ts +0 -42
  41. package/dist/types/state/index.d.ts +0 -8
  42. package/dist/types/state/paths.d.ts +0 -32
  43. package/src/__tests__/fixtures/publication.ts +0 -20
  44. package/src/admin/.spec/api.d.ts +0 -3
  45. package/src/admin/.spec/architecture.md +0 -15
  46. package/src/admin/.spec/icon.svg +0 -3
  47. package/src/admin/.spec/layout.ts +0 -6
  48. package/src/admin/__tests__/binding.test.ts +0 -31
  49. package/src/admin/__tests__/fixture.ts +0 -101
  50. package/src/admin/binding.ts +0 -98
  51. package/src/admin/catalog/.spec/api.d.ts +0 -65
  52. package/src/admin/catalog/.spec/architecture.md +0 -6
  53. package/src/admin/catalog/.spec/icon.svg +0 -3
  54. package/src/admin/catalog/.spec/layout.ts +0 -6
  55. package/src/admin/catalog/__tests__/client.test.ts +0 -142
  56. package/src/admin/catalog/client.ts +0 -218
  57. package/src/admin/catalog/index.ts +0 -13
  58. package/src/admin/catalog/model.ts +0 -41
  59. package/src/admin/catalog/tsconfig.json +0 -8
  60. package/src/admin/graph/.spec/api.d.ts +0 -22
  61. package/src/admin/graph/.spec/architecture.md +0 -5
  62. package/src/admin/graph/.spec/icon.svg +0 -3
  63. package/src/admin/graph/.spec/layout.ts +0 -3
  64. package/src/admin/graph/index.ts +0 -6
  65. package/src/admin/graph/nodes.ts +0 -56
  66. package/src/admin/index.ts +0 -2
  67. package/src/admin/instance/.spec/api.d.ts +0 -66
  68. package/src/admin/instance/.spec/architecture.md +0 -10
  69. package/src/admin/instance/.spec/icon.svg +0 -3
  70. package/src/admin/instance/.spec/layout.ts +0 -6
  71. package/src/admin/instance/__tests__/client.test.ts +0 -266
  72. package/src/admin/instance/client.ts +0 -290
  73. package/src/admin/instance/index.ts +0 -16
  74. package/src/admin/instance/model.ts +0 -66
  75. package/src/admin/instance/tsconfig.json +0 -8
  76. package/src/commands/__tests__/admin-instance.test.ts +0 -88
  77. package/src/commands/__tests__/auth-login.test.ts +0 -231
  78. package/src/commands/__tests__/auth-token.test.ts +0 -223
  79. package/src/commands/__tests__/call-describe.test.ts +0 -80
  80. package/src/commands/__tests__/call.test.ts +0 -29
  81. package/src/commands/__tests__/domain-install-operation.test.ts +0 -126
  82. package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
  83. package/src/commands/__tests__/domain-list.test.ts +0 -133
  84. package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
  85. package/src/commands/__tests__/install-direct.test.ts +0 -21
  86. package/src/commands/__tests__/install-identity-override.test.ts +0 -76
  87. package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
  88. package/src/commands/__tests__/instance-create-hosts.test.ts +0 -29
  89. package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
  90. package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
  91. package/src/commands/__tests__/instance-use.test.ts +0 -67
  92. package/src/commands/__tests__/introspect-parse.test.ts +0 -21
  93. package/src/commands/__tests__/logs.test.ts +0 -97
  94. package/src/commands/__tests__/read-commands.test.ts +0 -294
  95. package/src/commands/__tests__/setup-plan.test.ts +0 -61
  96. package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
  97. package/src/commands/__tests__/token-ttl.test.ts +0 -21
  98. package/src/commands/__tests__/update.test.ts +0 -95
  99. package/src/commands/__tests__/view-build.test.ts +0 -58
  100. package/src/commands/__tests__/view.test.ts +0 -149
  101. package/src/commands/admin/status.ts +0 -61
  102. package/src/commands/admin/use.ts +0 -100
  103. package/src/commands/auth/login.ts +0 -82
  104. package/src/commands/auth/logout.ts +0 -52
  105. package/src/commands/auth/status.ts +0 -86
  106. package/src/commands/auth/token.ts +0 -174
  107. package/src/commands/browser.ts +0 -207
  108. package/src/commands/call-describe.ts +0 -123
  109. package/src/commands/call.ts +0 -205
  110. package/src/commands/domain/install.ts +0 -548
  111. package/src/commands/domain/list.ts +0 -155
  112. package/src/commands/domain/publish.ts +0 -133
  113. package/src/commands/domain/uninstall.ts +0 -128
  114. package/src/commands/get.ts +0 -69
  115. package/src/commands/identity/__tests__/register.test.ts +0 -93
  116. package/src/commands/identity/create.ts +0 -35
  117. package/src/commands/identity/delete.ts +0 -24
  118. package/src/commands/identity/export.ts +0 -46
  119. package/src/commands/identity/import.ts +0 -61
  120. package/src/commands/identity/list.ts +0 -56
  121. package/src/commands/identity/register.ts +0 -196
  122. package/src/commands/identity/sync.ts +0 -38
  123. package/src/commands/identity/unsync.ts +0 -34
  124. package/src/commands/identity/use.ts +0 -24
  125. package/src/commands/identity/whoami.ts +0 -34
  126. package/src/commands/idp/add.ts +0 -150
  127. package/src/commands/idp/list.ts +0 -57
  128. package/src/commands/idp/refresh.ts +0 -38
  129. package/src/commands/idp/remove.ts +0 -36
  130. package/src/commands/idp/show.ts +0 -29
  131. package/src/commands/instance/active.ts +0 -73
  132. package/src/commands/instance/bookmark.ts +0 -101
  133. package/src/commands/instance/create.ts +0 -69
  134. package/src/commands/instance/delete.ts +0 -68
  135. package/src/commands/instance/forget.ts +0 -26
  136. package/src/commands/instance/list.ts +0 -197
  137. package/src/commands/instance/status.ts +0 -38
  138. package/src/commands/instance/use.ts +0 -259
  139. package/src/commands/introspect.ts +0 -110
  140. package/src/commands/logs.ts +0 -283
  141. package/src/commands/mutate.ts +0 -122
  142. package/src/commands/query.ts +0 -136
  143. package/src/commands/session/analyze.ts +0 -50
  144. package/src/commands/session/list.ts +0 -36
  145. package/src/commands/setup.ts +0 -54
  146. package/src/commands/status.ts +0 -60
  147. package/src/commands/studio.ts +0 -434
  148. package/src/commands/token.ts +0 -107
  149. package/src/commands/update.ts +0 -334
  150. package/src/commands/use.ts +0 -86
  151. package/src/commands/view-serve.ts +0 -26
  152. package/src/commands/view.ts +0 -614
  153. package/src/connect-core.test.ts +0 -38
  154. package/src/connect-core.ts +0 -42
  155. package/src/connection/.spec/api.d.ts +0 -110
  156. package/src/connection/.spec/architecture.md +0 -47
  157. package/src/connection/.spec/capabilities/connection.ts +0 -13
  158. package/src/connection/.spec/examples/call.ts +0 -7
  159. package/src/connection/.spec/flows/command.ts +0 -20
  160. package/src/connection/.spec/flows/session.ts +0 -61
  161. package/src/connection/.spec/laws/connection.ts +0 -205
  162. package/src/connection/.spec/layout.ts +0 -21
  163. package/src/connection/__tests__/auth.test.ts +0 -128
  164. package/src/connection/__tests__/ca-fetch.test.ts +0 -60
  165. package/src/connection/__tests__/call.test.ts +0 -17
  166. package/src/connection/__tests__/credential.test.ts +0 -119
  167. package/src/connection/__tests__/errors.test.ts +0 -577
  168. package/src/connection/__tests__/exchange.test.ts +0 -295
  169. package/src/connection/__tests__/failure-fixtures.ts +0 -39
  170. package/src/connection/__tests__/failure-safety.test.ts +0 -75
  171. package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
  172. package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
  173. package/src/connection/__tests__/managed.test.ts +0 -39
  174. package/src/connection/__tests__/reasons.test.ts +0 -78
  175. package/src/connection/__tests__/self.test.ts +0 -71
  176. package/src/connection/__tests__/session.test.ts +0 -140
  177. package/src/connection/__tests__/target.test.ts +0 -93
  178. package/src/connection/auth.ts +0 -236
  179. package/src/connection/call.ts +0 -7
  180. package/src/connection/command.ts +0 -67
  181. package/src/connection/credential.ts +0 -117
  182. package/src/connection/errors.ts +0 -1
  183. package/src/connection/exchange.ts +0 -311
  184. package/src/connection/failure/classify.ts +0 -110
  185. package/src/connection/failure/index.ts +0 -18
  186. package/src/connection/failure/model.ts +0 -28
  187. package/src/connection/failure/render.ts +0 -116
  188. package/src/connection/index.ts +0 -8
  189. package/src/connection/reasons.ts +0 -209
  190. package/src/connection/self.ts +0 -138
  191. package/src/connection/session.ts +0 -185
  192. package/src/connection/target.ts +0 -112
  193. package/src/connection/tsconfig.json +0 -6
  194. package/src/errors.ts +0 -66
  195. package/src/graph/.spec/api.d.ts +0 -41
  196. package/src/graph/.spec/laws/documents.ts +0 -24
  197. package/src/graph/.spec/laws/projection.ts +0 -13
  198. package/src/graph/.spec/layout.ts +0 -14
  199. package/src/graph/__tests__/mutation.test.ts +0 -51
  200. package/src/graph/__tests__/projection.test.ts +0 -22
  201. package/src/graph/__tests__/query.test.ts +0 -173
  202. package/src/graph/class.ts +0 -30
  203. package/src/graph/index.ts +0 -4
  204. package/src/graph/mutation.ts +0 -46
  205. package/src/graph/projection.ts +0 -21
  206. package/src/graph/query.ts +0 -97
  207. package/src/graph/tsconfig.json +0 -6
  208. package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
  209. package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
  210. package/src/identity/.spec/api.d.ts +0 -124
  211. package/src/identity/.spec/architecture.md +0 -33
  212. package/src/identity/.spec/capabilities/identity.ts +0 -7
  213. package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
  214. package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
  215. package/src/identity/.spec/flows/import.ts +0 -29
  216. package/src/identity/.spec/laws/identity.ts +0 -56
  217. package/src/identity/.spec/layout.ts +0 -13
  218. package/src/identity/.spec/schemas/identity-export-v1.schema.json +0 -25
  219. package/src/identity/__tests__/fixtures/registry-journey.ts +0 -53
  220. package/src/identity/__tests__/registration.test.ts +0 -64
  221. package/src/identity/__tests__/registry.test.ts +0 -70
  222. package/src/identity/__tests__/transfer.test.ts +0 -198
  223. package/src/identity/index.ts +0 -23
  224. package/src/identity/registration.ts +0 -72
  225. package/src/identity/registry.ts +0 -179
  226. package/src/identity/transfer.ts +0 -187
  227. package/src/identity/tsconfig.json +0 -6
  228. package/src/index.ts +0 -1
  229. package/src/keys/.spec/api.d.ts +0 -74
  230. package/src/keys/.spec/architecture.md +0 -13
  231. package/src/keys/.spec/laws/keys.ts +0 -43
  232. package/src/keys/.spec/layout.ts +0 -6
  233. package/src/keys/__tests__/algorithm.test.ts +0 -39
  234. package/src/keys/__tests__/keys.test.ts +0 -168
  235. package/src/keys/algorithm.ts +0 -33
  236. package/src/keys/credential.ts +0 -112
  237. package/src/keys/index.ts +0 -14
  238. package/src/keys/pair.ts +0 -219
  239. package/src/keys/tsconfig.json +0 -6
  240. package/src/lib/__tests__/admin-target.test.ts +0 -184
  241. package/src/lib/__tests__/binary.test.ts +0 -55
  242. package/src/lib/__tests__/command-dx.test.ts +0 -102
  243. package/src/lib/__tests__/concurrency.test.ts +0 -62
  244. package/src/lib/__tests__/config.test.ts +0 -54
  245. package/src/lib/__tests__/design.test.ts +0 -99
  246. package/src/lib/__tests__/domain-publication.test.ts +0 -133
  247. package/src/lib/__tests__/format.test.ts +0 -22
  248. package/src/lib/__tests__/idp-session.driver.ts +0 -53
  249. package/src/lib/__tests__/idp-session.test.ts +0 -379
  250. package/src/lib/__tests__/idp.test.ts +0 -415
  251. package/src/lib/__tests__/instance-candidates.test.ts +0 -148
  252. package/src/lib/__tests__/instance-target.test.ts +0 -212
  253. package/src/lib/__tests__/instance.test.ts +0 -192
  254. package/src/lib/__tests__/local-status.test.ts +0 -202
  255. package/src/lib/__tests__/log-errors.test.ts +0 -64
  256. package/src/lib/__tests__/log.test.ts +0 -31
  257. package/src/lib/__tests__/meta.test.ts +0 -55
  258. package/src/lib/__tests__/output.test.ts +0 -162
  259. package/src/lib/__tests__/panel.test.ts +0 -40
  260. package/src/lib/__tests__/port.test.ts +0 -44
  261. package/src/lib/__tests__/prompt.test.ts +0 -25
  262. package/src/lib/__tests__/sdk-deps.test.ts +0 -68
  263. package/src/lib/__tests__/self.test.ts +0 -50
  264. package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
  265. package/src/lib/__tests__/table.test.ts +0 -53
  266. package/src/lib/__tests__/update.test.ts +0 -351
  267. package/src/lib/__tests__/use-target.test.ts +0 -56
  268. package/src/lib/__tests__/validation.test.ts +0 -34
  269. package/src/lib/__tests__/view-assets.test.ts +0 -146
  270. package/src/lib/__tests__/view-open-intent.test.ts +0 -280
  271. package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
  272. package/src/lib/__tests__/view-server.test.ts +0 -68
  273. package/src/lib/__tests__/view-session.test.ts +0 -99
  274. package/src/lib/__tests__/view-snapshot.test.ts +0 -77
  275. package/src/lib/admin-domain.ts +0 -43
  276. package/src/lib/admin-instance.ts +0 -50
  277. package/src/lib/admin-target.ts +0 -290
  278. package/src/lib/binary.ts +0 -110
  279. package/src/lib/browser.ts +0 -150
  280. package/src/lib/ca-fetch.ts +0 -133
  281. package/src/lib/command-dx.ts +0 -188
  282. package/src/lib/concurrency.ts +0 -31
  283. package/src/lib/config.ts +0 -46
  284. package/src/lib/domain-publication.ts +0 -102
  285. package/src/lib/failure-debug.ts +0 -26
  286. package/src/lib/format.ts +0 -4
  287. package/src/lib/idp-session.ts +0 -134
  288. package/src/lib/idp.ts +0 -906
  289. package/src/lib/instance-candidates.ts +0 -49
  290. package/src/lib/instance-target.ts +0 -197
  291. package/src/lib/instance.ts +0 -463
  292. package/src/lib/invocation.ts +0 -11
  293. package/src/lib/local-status.ts +0 -152
  294. package/src/lib/log.ts +0 -143
  295. package/src/lib/login-flow.ts +0 -201
  296. package/src/lib/meta.ts +0 -90
  297. package/src/lib/output.ts +0 -238
  298. package/src/lib/panel.ts +0 -61
  299. package/src/lib/port.ts +0 -41
  300. package/src/lib/proc.ts +0 -82
  301. package/src/lib/prompt.ts +0 -136
  302. package/src/lib/provision-instance.ts +0 -162
  303. package/src/lib/sdk-deps.ts +0 -104
  304. package/src/lib/self.ts +0 -22
  305. package/src/lib/skills.ts +0 -171
  306. package/src/lib/table.ts +0 -62
  307. package/src/lib/update.ts +0 -409
  308. package/src/lib/use-target.ts +0 -24
  309. package/src/lib/validation.ts +0 -59
  310. package/src/lib/view/assets.ts +0 -78
  311. package/src/lib/view/open-intent.ts +0 -67
  312. package/src/lib/view/port-allocation.ts +0 -19
  313. package/src/lib/view/resolve.ts +0 -111
  314. package/src/lib/view/server.ts +0 -244
  315. package/src/lib/view/session.ts +0 -152
  316. package/src/lib/view/snapshot.ts +0 -101
  317. package/src/paths/.spec/api.d.ts +0 -13
  318. package/src/paths/.spec/architecture.md +0 -5
  319. package/src/paths/.spec/layout.ts +0 -3
  320. package/src/paths/index.ts +0 -13
  321. package/src/program/.spec/api.d.ts +0 -42
  322. package/src/program/.spec/architecture.md +0 -18
  323. package/src/program/.spec/laws/program.ts +0 -29
  324. package/src/program/.spec/layout.ts +0 -14
  325. package/src/program/__tests__/program.test.ts +0 -362
  326. package/src/program/build.ts +0 -183
  327. package/src/program/command.ts +0 -42
  328. package/src/program/index.ts +0 -2
  329. package/src/program/options.ts +0 -41
  330. package/src/program/registry.ts +0 -63
  331. package/src/program/tsconfig.json +0 -6
  332. package/src/setup/__tests__/instance-step.test.ts +0 -239
  333. package/src/setup/__tests__/util.test.ts +0 -29
  334. package/src/setup/engine.ts +0 -83
  335. package/src/setup/render.ts +0 -107
  336. package/src/setup/steps/admin.ts +0 -93
  337. package/src/setup/steps/agent-browser.ts +0 -81
  338. package/src/setup/steps/auth.ts +0 -54
  339. package/src/setup/steps/domain.ts +0 -68
  340. package/src/setup/steps/index.ts +0 -18
  341. package/src/setup/steps/instance.ts +0 -199
  342. package/src/setup/steps/skills-bridge.ts +0 -70
  343. package/src/setup/steps/skills.ts +0 -59
  344. package/src/setup/types.ts +0 -61
  345. package/src/setup/util.ts +0 -34
  346. package/src/state/.spec/api.d.ts +0 -133
  347. package/src/state/.spec/architecture.md +0 -31
  348. package/src/state/.spec/capabilities/state.ts +0 -7
  349. package/src/state/.spec/flows/identity-update.ts +0 -22
  350. package/src/state/.spec/laws/state.ts +0 -73
  351. package/src/state/.spec/layout.ts +0 -14
  352. package/src/state/__tests__/exchange-credentials.test.ts +0 -188
  353. package/src/state/__tests__/files.test.ts +0 -113
  354. package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
  355. package/src/state/__tests__/identities.test.ts +0 -142
  356. package/src/state/__tests__/paths.test.ts +0 -27
  357. package/src/state/exchange-credentials.ts +0 -219
  358. package/src/state/files.ts +0 -129
  359. package/src/state/identities.ts +0 -229
  360. package/src/state/index.ts +0 -29
  361. package/src/state/paths.ts +0 -61
  362. package/src/state/tsconfig.json +0 -6
  363. package/src/telemetry/__tests__/gate.test.ts +0 -63
  364. package/src/telemetry/__tests__/recorder.test.ts +0 -110
  365. package/src/telemetry/__tests__/redact.test.ts +0 -79
  366. package/src/telemetry/__tests__/session.test.ts +0 -166
  367. package/src/telemetry/__tests__/trigger.test.ts +0 -49
  368. package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
  369. package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
  370. package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
  371. package/src/telemetry/adapters/claude-code.ts +0 -90
  372. package/src/telemetry/adapters/codex.ts +0 -160
  373. package/src/telemetry/adapters/index.ts +0 -45
  374. package/src/telemetry/adapters/types.ts +0 -21
  375. package/src/telemetry/analyze.ts +0 -227
  376. package/src/telemetry/gate.ts +0 -79
  377. package/src/telemetry/recorder.ts +0 -57
  378. package/src/telemetry/redact.ts +0 -53
  379. package/src/telemetry/session.ts +0 -88
  380. package/src/telemetry/settings.ts +0 -26
  381. package/src/telemetry/store.ts +0 -91
  382. package/src/telemetry/trigger.ts +0 -119
  383. package/src/telemetry/types.ts +0 -64
  384. package/src/test-utils.ts +0 -18
  385. package/studio/client/dist/assets/elk-api-Di4OXGNH.js +0 -1
  386. package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
  387. package/studio/client/dist/assets/index-BLm6J11H.js +0 -81
  388. package/studio/client/dist/assets/index-BiGR8Oo9.css +0 -1
  389. package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
  390. package/studio/client/dist/assets/index-DTjvkOUX.js +0 -8
  391. package/studio/client/dist/index.html +0 -13
  392. package/studio/package.json +0 -65
  393. package/studio/server/agent/ask.test.ts +0 -74
  394. package/studio/server/agent/ask.ts +0 -71
  395. package/studio/server/agent/bridge/client.test.ts +0 -49
  396. package/studio/server/agent/bridge/client.ts +0 -37
  397. package/studio/server/agent/bridge/grant.test.ts +0 -62
  398. package/studio/server/agent/bridge/grant.ts +0 -84
  399. package/studio/server/agent/bridge/routes.test.ts +0 -151
  400. package/studio/server/agent/bridge/routes.ts +0 -148
  401. package/studio/server/agent/bridge/stdio.ts +0 -195
  402. package/studio/server/agent/conversation.test.ts +0 -89
  403. package/studio/server/agent/conversation.ts +0 -158
  404. package/studio/server/agent/harness/adapter.ts +0 -171
  405. package/studio/server/agent/harness/claude/adapter.test.ts +0 -348
  406. package/studio/server/agent/harness/claude/adapter.ts +0 -71
  407. package/studio/server/agent/harness/claude/ask.ts +0 -114
  408. package/studio/server/agent/harness/claude/capabilities.ts +0 -27
  409. package/studio/server/agent/harness/claude/command.ts +0 -63
  410. package/studio/server/agent/harness/claude/events.ts +0 -215
  411. package/studio/server/agent/harness/claude/loadout.ts +0 -132
  412. package/studio/server/agent/harness/claude/mcp.test.ts +0 -36
  413. package/studio/server/agent/harness/claude/mcp.ts +0 -41
  414. package/studio/server/agent/harness/claude/skills.ts +0 -43
  415. package/studio/server/agent/harness/codex/adapter.test.ts +0 -269
  416. package/studio/server/agent/harness/codex/adapter.ts +0 -116
  417. package/studio/server/agent/harness/codex/ask.test.ts +0 -176
  418. package/studio/server/agent/harness/codex/ask.ts +0 -181
  419. package/studio/server/agent/harness/codex/command.test.ts +0 -69
  420. package/studio/server/agent/harness/codex/command.ts +0 -43
  421. package/studio/server/agent/harness/codex/events.test.ts +0 -94
  422. package/studio/server/agent/harness/codex/events.ts +0 -132
  423. package/studio/server/agent/harness/codex/exec.ts +0 -113
  424. package/studio/server/agent/harness/codex/loadout.ts +0 -60
  425. package/studio/server/agent/harness/codex/mcp.test.ts +0 -32
  426. package/studio/server/agent/harness/codex/mcp.ts +0 -27
  427. package/studio/server/agent/harness/codex/models.test.ts +0 -167
  428. package/studio/server/agent/harness/codex/models.ts +0 -211
  429. package/studio/server/agent/harness/codex/skills.ts +0 -33
  430. package/studio/server/agent/harness/gateway/config.test.ts +0 -98
  431. package/studio/server/agent/harness/gateway/config.ts +0 -214
  432. package/studio/server/agent/harness/gateway/token.test.ts +0 -133
  433. package/studio/server/agent/harness/gateway/token.ts +0 -166
  434. package/studio/server/agent/harness/mock/adapter.ts +0 -190
  435. package/studio/server/agent/harness/mock/domain-edit.ts +0 -41
  436. package/studio/server/agent/harness/process.test.ts +0 -46
  437. package/studio/server/agent/harness/process.ts +0 -104
  438. package/studio/server/agent/harness/registry.ts +0 -37
  439. package/studio/server/agent/harness/selection.test.ts +0 -75
  440. package/studio/server/agent/harness/selection.ts +0 -85
  441. package/studio/server/agent/harness/skills.test.ts +0 -95
  442. package/studio/server/agent/harness/skills.ts +0 -100
  443. package/studio/server/agent/layout.test.ts +0 -95
  444. package/studio/server/agent/notify.ts +0 -12
  445. package/studio/server/agent/prompts/anchors.test.ts +0 -70
  446. package/studio/server/agent/prompts/anchors.ts +0 -153
  447. package/studio/server/agent/prompts/ask.ts +0 -34
  448. package/studio/server/agent/prompts/system.test.ts +0 -13
  449. package/studio/server/agent/prompts/system.ts +0 -99
  450. package/studio/server/agent/prompts/turn.ts +0 -66
  451. package/studio/server/agent/routes.test.ts +0 -176
  452. package/studio/server/agent/routes.ts +0 -214
  453. package/studio/server/agent/run/completion.ts +0 -193
  454. package/studio/server/agent/run/coordinator.test.ts +0 -337
  455. package/studio/server/agent/run/coordinator.ts +0 -104
  456. package/studio/server/agent/run/live-state.ts +0 -73
  457. package/studio/server/agent/run/preparation.ts +0 -163
  458. package/studio/server/agent/run/transcript.test.ts +0 -81
  459. package/studio/server/agent/run/transcript.ts +0 -196
  460. package/studio/server/agent/run/usage.test.ts +0 -70
  461. package/studio/server/agent/run/usage.ts +0 -62
  462. package/studio/server/agent/stream.ts +0 -37
  463. package/studio/server/agent/telemetry.ts +0 -13
  464. package/studio/server/api/canvas.ts +0 -43
  465. package/studio/server/api/comments.ts +0 -85
  466. package/studio/server/api/context.ts +0 -61
  467. package/studio/server/api/deployment.ts +0 -39
  468. package/studio/server/api/documents.ts +0 -55
  469. package/studio/server/api/domain.ts +0 -59
  470. package/studio/server/api/http.ts +0 -45
  471. package/studio/server/api/project.ts +0 -57
  472. package/studio/server/api/schema.ts +0 -12
  473. package/studio/server/api/views.ts +0 -57
  474. package/studio/server/api/workspace.ts +0 -60
  475. package/studio/server/api-agent-loadout.test.ts +0 -69
  476. package/studio/server/api.test.ts +0 -147
  477. package/studio/server/api.ts +0 -34
  478. package/studio/server/cache.test.ts +0 -122
  479. package/studio/server/cache.ts +0 -303
  480. package/studio/server/cli-consumers.test.ts +0 -494
  481. package/studio/server/cli.test.ts +0 -88
  482. package/studio/server/cli.ts +0 -240
  483. package/studio/server/client-package.test.ts +0 -147
  484. package/studio/server/client-package.ts +0 -266
  485. package/studio/server/detect.ts +0 -81
  486. package/studio/server/domain.test.ts +0 -77
  487. package/studio/server/domain.ts +0 -124
  488. package/studio/server/environment/dotenv-preview.test.ts +0 -39
  489. package/studio/server/environment/dotenv-preview.ts +0 -27
  490. package/studio/server/environment/files.test.ts +0 -53
  491. package/studio/server/environment/files.ts +0 -120
  492. package/studio/server/handoff/copy.ts +0 -171
  493. package/studio/server/handoff/service.test.ts +0 -22
  494. package/studio/server/handoff/service.ts +0 -62
  495. package/studio/server/index.ts +0 -148
  496. package/studio/server/instances/active.ts +0 -72
  497. package/studio/server/instances/deploy-record.test.ts +0 -31
  498. package/studio/server/instances/deploy-record.ts +0 -37
  499. package/studio/server/instances/deploy.ts +0 -56
  500. package/studio/server/instances/probe.test.ts +0 -67
  501. package/studio/server/instances/probe.ts +0 -67
  502. package/studio/server/instances/status.test.ts +0 -12
  503. package/studio/server/instances/status.ts +0 -49
  504. package/studio/server/introspect/anatomy/client-tree.ts +0 -57
  505. package/studio/server/introspect/anatomy/env-fields.ts +0 -66
  506. package/studio/server/introspect/anatomy/schema-definition.ts +0 -53
  507. package/studio/server/introspect/anatomy/source.ts +0 -181
  508. package/studio/server/introspect/anatomy/views/routes.ts +0 -114
  509. package/studio/server/introspect/anatomy/views.ts +0 -53
  510. package/studio/server/introspect/anatomy-extras.test.ts +0 -265
  511. package/studio/server/introspect/anatomy-extras.ts +0 -10
  512. package/studio/server/introspect/anatomy.test.ts +0 -41
  513. package/studio/server/introspect/anatomy.ts +0 -147
  514. package/studio/server/introspect/bundle.ts +0 -69
  515. package/studio/server/introspect/canonical-schema.test.ts +0 -179
  516. package/studio/server/introspect/canonical-schema.ts +0 -583
  517. package/studio/server/introspect/config-preview.test.ts +0 -32
  518. package/studio/server/introspect/config-preview.ts +0 -119
  519. package/studio/server/introspect/core-extractor.ts +0 -30
  520. package/studio/server/introspect/core.ts +0 -45
  521. package/studio/server/introspect/diff.test.ts +0 -124
  522. package/studio/server/introspect/diff.ts +0 -316
  523. package/studio/server/introspect/extractor.ts +0 -41
  524. package/studio/server/introspect/hash.ts +0 -24
  525. package/studio/server/introspect/overlay-tsmorph.test.ts +0 -146
  526. package/studio/server/introspect/overlay-tsmorph.ts +0 -9
  527. package/studio/server/introspect/overlay.test.ts +0 -44
  528. package/studio/server/introspect/overlay.ts +0 -40
  529. package/studio/server/introspect/revision.test.ts +0 -54
  530. package/studio/server/introspect/revision.ts +0 -49
  531. package/studio/server/introspect/runtime.test.ts +0 -157
  532. package/studio/server/introspect/runtime.ts +0 -140
  533. package/studio/server/introspect/schema-ir-json.test.ts +0 -70
  534. package/studio/server/introspect/schema-ir-json.ts +0 -151
  535. package/studio/server/introspect/schema-refs.test.ts +0 -55
  536. package/studio/server/introspect/schema-refs.ts +0 -32
  537. package/studio/server/introspect/source-overlay/annotations.ts +0 -14
  538. package/studio/server/introspect/source-overlay/handlers.ts +0 -161
  539. package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -46
  540. package/studio/server/introspect/source-overlay/project.ts +0 -248
  541. package/studio/server/introspect/source-overlay/spans.ts +0 -330
  542. package/studio/server/json.ts +0 -46
  543. package/studio/server/lifecycle.ts +0 -42
  544. package/studio/server/sse.test.ts +0 -26
  545. package/studio/server/sse.ts +0 -60
  546. package/studio/server/state/baseline.test.ts +0 -267
  547. package/studio/server/state/baseline.ts +0 -354
  548. package/studio/server/state/comments.test.ts +0 -94
  549. package/studio/server/state/comments.ts +0 -484
  550. package/studio/server/state/context.ts +0 -199
  551. package/studio/server/state/documents.ts +0 -111
  552. package/studio/server/state/integrations.ts +0 -81
  553. package/studio/server/state/layout.test.ts +0 -34
  554. package/studio/server/state/layout.ts +0 -82
  555. package/studio/server/state/settings.test.ts +0 -78
  556. package/studio/server/state/settings.ts +0 -73
  557. package/studio/server/state/store.test.ts +0 -122
  558. package/studio/server/state/store.ts +0 -146
  559. package/studio/server/state/visibility.ts +0 -48
  560. package/studio/server/views/model.test.ts +0 -57
  561. package/studio/server/views/model.ts +0 -66
  562. package/studio/server/views/runtime.ts +0 -40
  563. package/studio/server/views/selection-repository.test.ts +0 -31
  564. package/studio/server/views/selection-repository.ts +0 -60
  565. package/studio/server/views/session.test.ts +0 -73
  566. package/studio/server/views/session.ts +0 -166
  567. package/studio/server/views/target.test.ts +0 -78
  568. package/studio/server/views/target.ts +0 -222
  569. package/studio/server/watch.test.ts +0 -36
  570. package/studio/server/watch.ts +0 -93
  571. package/studio/server/workspace/catalog.test.ts +0 -17
  572. package/studio/server/workspace/catalog.ts +0 -43
  573. package/studio/server/workspace/create.test.ts +0 -37
  574. package/studio/server/workspace/create.ts +0 -162
  575. package/studio/server/workspace/git.ts +0 -75
  576. package/studio/server/workspace/updates.ts +0 -83
  577. package/studio/server/workspace-state.ts +0 -26
  578. package/studio/server/workspace-watch.ts +0 -106
  579. package/studio/shared/agent-effort.test.ts +0 -12
  580. package/studio/shared/agent-effort.ts +0 -15
  581. package/studio/shared/agent-models.test.ts +0 -9
  582. package/studio/shared/agent-models.ts +0 -14
  583. package/studio/shared/contracts/README.md +0 -16
  584. package/studio/shared/contracts/agent.ts +0 -270
  585. package/studio/shared/contracts/runtime.ts +0 -50
  586. package/studio/shared/contracts/schema.ts +0 -393
  587. package/studio/shared/contracts/surface.test.ts +0 -317
  588. package/studio/shared/contracts/workspace.ts +0 -265
  589. package/studio/shared/layout.test.ts +0 -116
  590. package/studio/shared/schema/identity.test.ts +0 -34
  591. package/studio/shared/schema/identity.ts +0 -68
  592. package/studio/shared/settings-values.test.ts +0 -18
  593. package/studio/shared/settings-values.ts +0 -20
  594. package/studio/shared/types.ts +0 -14
  595. package/studio/tsconfig.json +0 -23
  596. package/tsconfig.json +0 -14
  597. package/viewer/dist/index.html +0 -93
  598. package/viewer/dist/main.js +0 -76
  599. package/viewer/tsconfig.json +0 -13
@@ -1,101 +0,0 @@
1
- import type { ClientSession } from '@astrale-os/sdk/client/session'
2
- import type { CallableReference } from '@astrale-os/sdk/client/session'
3
-
4
- import {
5
- callableAddress,
6
- core,
7
- defineSchema,
8
- edgeClass,
9
- method,
10
- nodeClass,
11
- property,
12
- schema,
13
- } from '@astrale-os/sdk/schema'
14
- import { mock } from 'bun:test'
15
-
16
- import type { AdminBinding } from '../binding'
17
-
18
- const operation = () =>
19
- method({
20
- auth: 'authenticated',
21
- input: { type: 'object', additionalProperties: true },
22
- output: { type: 'object', additionalProperties: true },
23
- })
24
-
25
- const Domain = nodeClass({
26
- properties: {
27
- origin: property({ type: 'string' }, { required: true }),
28
- name: property({ type: 'string' }, { required: true }),
29
- discoveryUrl: property({ type: 'string' }, { required: true }),
30
- description: property({ type: 'string' }),
31
- createdAt: property({ type: 'string' }, { required: true }),
32
- updatedAt: property({ type: 'string' }, { required: true }),
33
- },
34
- methods: { configureDefault: operation() },
35
- })
36
- const Fleet = nodeClass({
37
- methods: {
38
- publishDomain: operation(),
39
- listInstances: operation(),
40
- createInstance: operation(),
41
- },
42
- })
43
- const Host = nodeClass({
44
- properties: {
45
- id: property({ type: 'string' }, { required: true }),
46
- state: property({ type: 'string' }, { required: true }),
47
- },
48
- methods: { createInstance: operation() },
49
- })
50
- const Instance = nodeClass({
51
- methods: {
52
- status: operation(),
53
- delete: operation(),
54
- installDomain: operation(),
55
- },
56
- })
57
- const fleet_installs_domain_by_default = edgeClass.directed({
58
- source: { as: 'fleet', accepts: [Fleet], outgoing: '0..*' },
59
- target: { as: 'domain', accepts: [Domain], incoming: '0..*' },
60
- })
61
- const fleet_reserves_admin_host = edgeClass.directed({
62
- source: { as: 'fleet', accepts: [Fleet], outgoing: '0..1' },
63
- target: { as: 'host', accepts: [Host], incoming: '0..1' },
64
- })
65
-
66
- export const AdminTestSchema = defineSchema('admin.astrale.ai', {
67
- classes: {
68
- Domain,
69
- Fleet,
70
- Host,
71
- Instance,
72
- fleet_installs_domain_by_default,
73
- fleet_reserves_admin_host,
74
- },
75
- core: { nodes: { fleet: core.node(() => Fleet, {}) }, edges: [] },
76
- })
77
-
78
- export const AdminTestDomain = schema.resolve(AdminTestSchema)
79
-
80
- export function adminBinding(): AdminBinding {
81
- return { domain: AdminTestDomain, graph: {} } as unknown as AdminBinding
82
- }
83
-
84
- export function adminSession(
85
- implementation?: (
86
- method: { readonly owner: string; readonly name: string },
87
- receiver: unknown,
88
- input: unknown,
89
- ) => unknown,
90
- ) {
91
- const invoke = mock(async (reference: CallableReference, input: unknown) => {
92
- const address = callableAddress(reference.callable)
93
- if (address.kind !== 'method') throw new Error('Expected an Admin Method.')
94
- return implementation?.(
95
- { owner: address.owner.name, name: address.name },
96
- reference.target,
97
- input,
98
- )
99
- })
100
- return { invoke, session: { invoke } as unknown as ClientSession }
101
- }
@@ -1,98 +0,0 @@
1
- import type { Input } from '@astrale-os/sdk/client'
2
- import type { ClientSession } from '@astrale-os/sdk/client/session'
3
- import type {
4
- ResolvedClass,
5
- ResolvedCoreDefinition,
6
- ResolvedMethod,
7
- ResolvedProperty,
8
- } from '@astrale-os/sdk/schema'
9
- import type { DomainBinding } from '@astrale-os/shell'
10
-
11
- import { reference } from '@astrale-os/sdk/client/session'
12
- import { Path } from '@astrale-os/sdk/graph/path'
13
- import { bindDomain } from '@astrale-os/shell'
14
-
15
- const ADMIN_ORIGIN = 'admin.astrale.ai'
16
-
17
- export type AdminBinding = DomainBinding
18
-
19
- /** Bind the exact Admin revision installed on this source Kernel. */
20
- export async function bindAdmin(session: ClientSession): Promise<AdminBinding> {
21
- const installed = await session.installation(ADMIN_ORIGIN)
22
- return requireAdminBinding(await bindDomain(session, installed.bundle.root))
23
- }
24
-
25
- /** Admit an injected dynamic binding as the Admin Domain. */
26
- export function requireAdminBinding(binding: AdminBinding): AdminBinding {
27
- if (binding.domain.origin !== ADMIN_ORIGIN) {
28
- throw new TypeError('Configured Admin target does not serve the Admin Domain.')
29
- }
30
- return binding
31
- }
32
-
33
- /** Resolve one required Admin Class without rebuilding its schema contract. */
34
- export function requireAdminClass(
35
- binding: AdminBinding,
36
- name: string,
37
- kind: 'node',
38
- ): ResolvedClass<'node'>
39
- export function requireAdminClass(
40
- binding: AdminBinding,
41
- name: string,
42
- kind: 'edge',
43
- ): ResolvedClass<'edge'>
44
- export function requireAdminClass(
45
- binding: AdminBinding,
46
- name: string,
47
- kind: 'node' | 'edge',
48
- ): ResolvedClass<'node'> | ResolvedClass<'edge'> {
49
- const selected = binding.domain.classes[name]
50
- if (selected?.kind !== kind) throw new TypeError(`Admin ${name} is not a ${kind} Class.`)
51
- return selected
52
- }
53
-
54
- /** Resolve one required Admin Core Node as its canonical projection Path. */
55
- export function requireAdminCore(binding: AdminBinding, name: string): Path {
56
- const selected = binding.domain.core.nodes[name] as ResolvedCoreDefinition | undefined
57
- if (selected === undefined) throw new TypeError(`Admin has no Core Node ${name}.`)
58
- return Path.project(selected.ref)
59
- }
60
-
61
- /** Resolve one effective Property by unambiguous member name. */
62
- export function requireAdminProperty(
63
- owner: ResolvedClass,
64
- name: string,
65
- ): ResolvedProperty<unknown> {
66
- const selected = [...owner.properties].find((property) => property.name === name)
67
- if (selected === undefined) {
68
- throw new TypeError(`Admin ${owner.ref.name}.${name} Property is absent.`)
69
- }
70
- return selected
71
- }
72
-
73
- /** Invoke one resolved executable instance Method through Kernel Client. */
74
- export async function invokeAdminMethod(
75
- session: ClientSession,
76
- binding: AdminBinding,
77
- owner: ResolvedClass<'node'>,
78
- name: string,
79
- receiver: Path,
80
- input: Input,
81
- ): Promise<unknown> {
82
- const method = [...owner.methods].find((candidate) => candidate.name === name)
83
- if (method === undefined || !isExecutableInstanceMethod(method)) {
84
- throw new TypeError(`Admin ${owner.ref.name}.${name} is not an executable instance Method.`)
85
- }
86
- return session.invoke(reference(binding.domain, method)(receiver), input)
87
- }
88
-
89
- type ExecutableInstanceMethod = ResolvedMethod<
90
- unknown,
91
- unknown,
92
- false,
93
- Exclude<ResolvedMethod['inheritance'], 'abstract'>
94
- >
95
-
96
- function isExecutableInstanceMethod(method: ResolvedMethod): method is ExecutableInstanceMethod {
97
- return method.static === false && method.inheritance !== 'abstract'
98
- }
@@ -1,65 +0,0 @@
1
- import type { ClientSession } from '@astrale-os/sdk/client/session'
2
- import type { DomainBinding } from '@astrale-os/shell'
3
-
4
- import type { AdminGraphApi } from '../../graph/.spec/api.js'
5
-
6
- export interface DomainInfo {
7
- readonly id: string
8
- readonly origin: string
9
- readonly name: string
10
- readonly url?: string
11
- readonly description?: string
12
- readonly installByDefault?: boolean
13
- readonly createdAt: string
14
- readonly updatedAt: string
15
- }
16
-
17
- export interface PublishDomainInput {
18
- readonly origin: string
19
- readonly name: string
20
- readonly url: string
21
- readonly description?: string
22
- readonly installByDefault?: boolean
23
- }
24
-
25
- export interface PublishDomainResult {
26
- readonly entry: DomainInfo
27
- readonly changed: boolean
28
- readonly isNew: boolean
29
- }
30
-
31
- export interface InstallDomainResult {
32
- readonly name: string
33
- readonly origin: string
34
- readonly instanceId: string
35
- readonly url: string
36
- readonly ok: boolean
37
- readonly error?: string | null
38
- }
39
-
40
- export interface AdminCatalogContext {
41
- readonly session: ClientSession
42
- readonly graph: AdminGraphApi
43
- }
44
-
45
- export interface AdminCatalogApi {
46
- list(): Promise<DomainInfo[]>
47
- require(identifier: string): Promise<DomainInfo>
48
- publish(input: PublishDomainInput): Promise<PublishDomainResult>
49
- }
50
-
51
- export class AdminDomainNotFoundError extends Error {
52
- constructor(identifier: string)
53
- readonly name: 'NotFoundError'
54
- readonly identifier: string
55
- }
56
-
57
- export interface AdminCatalogDependencies {
58
- readonly bind?: (session: ClientSession) => Promise<DomainBinding>
59
- readonly operationId?: (kind: 'publish' | 'configure-default') => string
60
- }
61
-
62
- export function connectAdminCatalog(
63
- context: AdminCatalogContext,
64
- dependencies?: AdminCatalogDependencies,
65
- ): Promise<AdminCatalogApi>
@@ -1,6 +0,0 @@
1
- # CLI Admin catalog adapter
2
-
3
- The adapter reads policy-visible `Domain` Nodes through bounded Graph pages and derives default
4
- membership from the Fleet relation. Publication invokes `Fleet.publishDomain`; a requested default
5
- change is a separate explicit `Domain.configureDefault` call. Unchanged publication input is a
6
- no-op, and an 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,142 +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 { describe, expect, mock, test } from 'bun:test'
6
-
7
- import type { AdminGraphApi } from '../../graph'
8
-
9
- import { AdminTestDomain, adminBinding, adminSession } from '../../__tests__/fixture'
10
- import { connectAdminCatalog } from '../client'
11
-
12
- function domainNode(id: string, origin: string): Node {
13
- return {
14
- id: NodeId(id),
15
- class: AdminTestDomain.classes.Domain.key,
16
- props: AdminTestDomain.classes.Domain.properties.from({
17
- origin,
18
- name: origin.split('.')[0]!,
19
- discoveryUrl: `https://${origin}`,
20
- createdAt: '2026-08-12T00:00:00.000Z',
21
- updatedAt: '2026-08-12T00:00:00.000Z',
22
- }),
23
- }
24
- }
25
-
26
- function fixture(input: {
27
- domains?: readonly Node[]
28
- defaults?: readonly Node[]
29
- invoke?: (method: { owner: string; name: string }, receiver: unknown, value: unknown) => unknown
30
- }) {
31
- const calls: Array<{
32
- method: { owner: string; name: string }
33
- receiver: string
34
- value: unknown
35
- }> = []
36
- const remote = adminSession((method, receiver, value) => {
37
- calls.push({ method, receiver: String(receiver), value })
38
- return input.invoke?.(method, receiver, value)
39
- })
40
- const binding = adminBinding()
41
- const query = mock(async (_ast: QueryAST) => ({
42
- result: {
43
- kind: 'nodes' as const,
44
- nodes: (input.domains ?? []).map((value) => ({ kind: 'value' as const, value })),
45
- },
46
- page: {},
47
- }))
48
- const defaultNodes = input.defaults ?? []
49
- const neighbors = mock(async () => ({
50
- nodes: defaultNodes,
51
- first: defaultNodes[0] ?? null,
52
- graph: { nodes: defaultNodes, edges: [] },
53
- cursor: null,
54
- collect: async () => ({ nodes: defaultNodes, cursor: null }),
55
- }))
56
- const graph = { query, neighbors } as unknown as AdminGraphApi
57
- return {
58
- invoke: remote.invoke,
59
- calls,
60
- connect: () =>
61
- connectAdminCatalog(
62
- { session: remote.session, graph },
63
- {
64
- bind: async () => binding,
65
- operationId: (kind) => `cli.domain.${kind}:test`,
66
- },
67
- ),
68
- }
69
- }
70
-
71
- function summary(origin: string) {
72
- return {
73
- id: '@crm-domain',
74
- origin,
75
- name: 'crm',
76
- discoveryUrl: `https://${origin}`,
77
- createdAt: '2026-08-12T00:00:00.000Z',
78
- updatedAt: '2026-08-12T00:00:00.000Z',
79
- }
80
- }
81
-
82
- describe('V2 Admin Domain catalog adapter', () => {
83
- test('lists Domain nodes through GraphApi and joins the Fleet default relation', async () => {
84
- const crm = domainNode('crm-domain', 'crm.acme.dev')
85
- const notes = domainNode('notes-domain', 'notes.acme.dev')
86
- const api = await fixture({ domains: [crm, notes], defaults: [crm] }).connect()
87
-
88
- await expect(api.list()).resolves.toEqual([
89
- expect.objectContaining({
90
- id: '@crm-domain',
91
- origin: 'crm.acme.dev',
92
- installByDefault: true,
93
- }),
94
- expect.objectContaining({ id: '@notes-domain', origin: 'notes.acme.dev' }),
95
- ])
96
- })
97
-
98
- test('publishes through Fleet then configures the Domain default explicitly', async () => {
99
- const contract = fixture({ invoke: () => summary('crm.acme.dev') })
100
- const api = await contract.connect()
101
-
102
- await expect(
103
- api.publish({
104
- origin: 'crm.acme.dev',
105
- name: 'crm',
106
- url: 'https://crm.acme.dev',
107
- installByDefault: true,
108
- }),
109
- ).resolves.toMatchObject({ changed: true, isNew: true, entry: { installByDefault: true } })
110
- expect(contract.calls).toEqual([
111
- {
112
- method: { owner: 'Fleet', name: 'publishDomain' },
113
- receiver: '/:admin.astrale.ai:core.fleet::publishDomain',
114
- value: {
115
- operationId: 'cli.domain.publish:test',
116
- origin: 'crm.acme.dev',
117
- name: 'crm',
118
- discoveryUrl: 'https://crm.acme.dev',
119
- },
120
- },
121
- {
122
- method: { owner: 'Domain', name: 'configureDefault' },
123
- receiver: '@crm-domain::configureDefault',
124
- value: {
125
- operationId: 'cli.domain.configure-default:test',
126
- enabled: true,
127
- },
128
- },
129
- ])
130
- })
131
-
132
- test('does not invoke a receiver when the catalog record is already current', async () => {
133
- const crm = domainNode('crm-domain', 'crm.acme.dev')
134
- const contract = fixture({ domains: [crm] })
135
- const api = await contract.connect()
136
-
137
- await expect(
138
- api.publish({ origin: 'crm.acme.dev', name: 'crm', url: 'https://crm.acme.dev' }),
139
- ).resolves.toMatchObject({ changed: false, isNew: false })
140
- expect(contract.invoke).not.toHaveBeenCalled()
141
- })
142
- })
@@ -1,218 +0,0 @@
1
- import type { ClientSession } from '@astrale-os/sdk/client/session'
2
- import type { Node } from '@astrale-os/sdk/graph/node'
3
- import type { ResolvedClass } from '@astrale-os/sdk/schema'
4
-
5
- import { Path } from '@astrale-os/sdk/graph/path'
6
- import { Query } from '@astrale-os/sdk/query'
7
-
8
- import {
9
- bindAdmin,
10
- invokeAdminMethod,
11
- requireAdminBinding,
12
- requireAdminClass,
13
- requireAdminCore,
14
- requireAdminProperty,
15
- type AdminBinding,
16
- } from '../binding'
17
- import { readAllNodes, type AdminGraphApi } from '../graph'
18
- import {
19
- AdminDomainNotFoundError,
20
- type DomainInfo,
21
- type PublishDomainInput,
22
- type PublishDomainResult,
23
- } from './model'
24
-
25
- const PAGE_SIZE = 256
26
- const MAXIMUM_DOMAINS = 10_000
27
- const MAXIMUM_PAGES = Math.ceil(MAXIMUM_DOMAINS / PAGE_SIZE) + 1
28
-
29
- export interface AdminCatalogContext {
30
- readonly session: ClientSession
31
- readonly graph: AdminGraphApi
32
- }
33
-
34
- export interface AdminCatalogApi {
35
- list(): Promise<DomainInfo[]>
36
- require(identifier: string): Promise<DomainInfo>
37
- publish(input: PublishDomainInput): Promise<PublishDomainResult>
38
- }
39
-
40
- export interface AdminCatalogDependencies {
41
- readonly bind?: (session: ClientSession) => Promise<AdminBinding>
42
- readonly operationId?: (kind: 'publish' | 'configure-default') => string
43
- }
44
-
45
- /** Bind the discovered Admin revision and expose its Domain catalog journey. */
46
- export async function connectAdminCatalog(
47
- context: AdminCatalogContext,
48
- dependencies: AdminCatalogDependencies = {},
49
- ): Promise<AdminCatalogApi> {
50
- const binding = requireAdminBinding(await (dependencies.bind ?? bindAdmin)(context.session))
51
- const Domain = requireAdminClass(binding, 'Domain', 'node')
52
- const Fleet = requireAdminClass(binding, 'Fleet', 'node')
53
- const fleetInstallsByDefault = requireAdminClass(
54
- binding,
55
- 'fleet_installs_domain_by_default',
56
- 'edge',
57
- )
58
- const fleet = requireAdminCore(binding, 'fleet')
59
- const operationId = dependencies.operationId ?? defaultOperationId
60
-
61
- const list = async (): Promise<DomainInfo[]> => {
62
- const [nodes, defaultsPage] = await Promise.all([
63
- readAllNodes(
64
- context.graph,
65
- Query.from({ nodes: [Domain] }).select({
66
- kind: 'nodes',
67
- projection: { kind: 'value' },
68
- }),
69
- {
70
- label: 'Admin Domain catalog',
71
- maximum: MAXIMUM_DOMAINS,
72
- maximumPages: MAXIMUM_PAGES,
73
- },
74
- ),
75
- context.graph.neighbors(fleet, fleetInstallsByDefault, {
76
- direction: 'outgoing',
77
- page: { size: PAGE_SIZE },
78
- }),
79
- ])
80
- const defaults = await defaultsPage.collect({ maximumPages: MAXIMUM_PAGES })
81
- if (defaults.cursor !== null)
82
- throw new TypeError('Admin default Domain catalog exceeded its bound.')
83
- const defaultIds = new Set(defaults.nodes.map((node) => String(node.id)))
84
- return nodes.map((node) => domainFromNode(Domain, node, defaultIds.has(String(node.id))))
85
- }
86
-
87
- const requireDomain = async (identifier: string): Promise<DomainInfo> => {
88
- const found = (await list()).find(
89
- (domain) =>
90
- domain.origin === identifier ||
91
- domain.url === identifier ||
92
- domain.id === identifier ||
93
- (domain.id.startsWith('@') && domain.id.slice(1) === identifier),
94
- )
95
- if (found === undefined) throw new AdminDomainNotFoundError(identifier)
96
- return found
97
- }
98
-
99
- return Object.freeze({
100
- list,
101
- require: requireDomain,
102
- async publish(input: PublishDomainInput): Promise<PublishDomainResult> {
103
- const existing = (await list()).find((domain) => domain.origin === input.origin)
104
- const description = input.description ?? existing?.description
105
- const registryChanged =
106
- existing === undefined ||
107
- existing.name !== input.name ||
108
- existing.url !== input.url ||
109
- existing.description !== description
110
- let entry = existing
111
- if (registryChanged) {
112
- entry = domainFromSummary(
113
- await invokeAdminMethod(context.session, binding, Fleet, 'publishDomain', fleet, {
114
- operationId: operationId('publish'),
115
- origin: input.origin,
116
- name: input.name,
117
- discoveryUrl: input.url,
118
- ...(description === undefined ? {} : { description }),
119
- }),
120
- existing?.installByDefault === true,
121
- )
122
- }
123
- if (entry === undefined) throw new TypeError('Admin Domain publication returned no entry.')
124
-
125
- const defaultChanged =
126
- input.installByDefault !== undefined &&
127
- (entry.installByDefault ?? false) !== input.installByDefault
128
- if (defaultChanged) {
129
- entry = domainFromSummary(
130
- await invokeAdminMethod(
131
- context.session,
132
- binding,
133
- Domain,
134
- 'configureDefault',
135
- Path.parse(entry.id),
136
- {
137
- operationId: operationId('configure-default'),
138
- enabled: input.installByDefault,
139
- },
140
- ),
141
- input.installByDefault === true,
142
- )
143
- }
144
- return Object.freeze({
145
- entry,
146
- changed: registryChanged || defaultChanged,
147
- isNew: existing === undefined,
148
- })
149
- },
150
- })
151
- }
152
-
153
- type DynamicDefinition = ResolvedClass<'node'>
154
-
155
- function domainFromNode(
156
- definition: DynamicDefinition,
157
- node: Node,
158
- installByDefault: boolean,
159
- ): DomainInfo {
160
- return Object.freeze({
161
- id: Path.id(node.id).raw,
162
- origin: requiredProperty(definition, node, 'origin'),
163
- name: requiredProperty(definition, node, 'name'),
164
- url: requiredProperty(definition, node, 'discoveryUrl'),
165
- ...optionalProperty(definition, node, 'description'),
166
- ...(installByDefault ? { installByDefault: true } : {}),
167
- createdAt: requiredProperty(definition, node, 'createdAt'),
168
- updatedAt: requiredProperty(definition, node, 'updatedAt'),
169
- })
170
- }
171
-
172
- function domainFromSummary(input: unknown, installByDefault: boolean): DomainInfo {
173
- const value = record(input, 'Admin Domain summary')
174
- return Object.freeze({
175
- id: requiredString(value.id, 'Admin Domain id'),
176
- origin: requiredString(value.origin, 'Admin Domain origin'),
177
- name: requiredString(value.name, 'Admin Domain name'),
178
- url: requiredString(value.discoveryUrl, 'Admin Domain discovery URL'),
179
- ...(value.description === undefined
180
- ? {}
181
- : { description: requiredString(value.description, 'Admin Domain description') }),
182
- ...(installByDefault ? { installByDefault: true } : {}),
183
- createdAt: requiredString(value.createdAt, 'Admin Domain creation time'),
184
- updatedAt: requiredString(value.updatedAt, 'Admin Domain update time'),
185
- })
186
- }
187
-
188
- function requiredProperty(definition: DynamicDefinition, node: Node, name: string): string {
189
- return requiredString(
190
- node.props[requireAdminProperty(definition, name).key],
191
- `Admin Domain.${name}`,
192
- )
193
- }
194
-
195
- function optionalProperty(
196
- definition: DynamicDefinition,
197
- node: Node,
198
- name: string,
199
- ): Readonly<Record<string, string>> {
200
- const value = node.props[requireAdminProperty(definition, name).key]
201
- return value === undefined ? {} : { [name]: requiredString(value, `Admin Domain.${name}`) }
202
- }
203
-
204
- function requiredString(input: unknown, label: string): string {
205
- if (typeof input !== 'string' || input.length === 0) throw new TypeError(`${label} is invalid.`)
206
- return input
207
- }
208
-
209
- function record(input: unknown, label: string): Readonly<Record<string, unknown>> {
210
- if (typeof input !== 'object' || input === null || Array.isArray(input)) {
211
- throw new TypeError(`${label} is invalid.`)
212
- }
213
- return input as Readonly<Record<string, unknown>>
214
- }
215
-
216
- function defaultOperationId(kind: 'publish' | 'configure-default'): string {
217
- return `cli.domain.${kind}:${globalThis.crypto.randomUUID()}`
218
- }
@@ -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'