@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,162 +0,0 @@
1
- /**
2
- * Scaffold a brand-new domain into the workspace and bring it
3
- * online. This is the studio's ONE write that ADDS a domain (every other state
4
- * module operates on an existing one).
5
- *
6
- * Flow: validate the slug → `create-astrale-domain <slug> --yes` in the
7
- * workspace root (the managed `astrale` adapter is its default; we stamp the
8
- * active instance so prod targets it) → `pnpm install` in the new dir so the
9
- * domain is fully introspectable + deployable → register + (re)boot it (the live
10
- * watcher may have already booted a deps-less static fallback while we were
11
- * installing; we stop that and boot fresh) → warm its bundle. The caller
12
- * broadcasts the `workspace` event so every client refetches the domain list.
13
- */
14
- import { existsSync, readFileSync, writeFileSync } from 'node:fs'
15
- import { join } from 'node:path'
16
-
17
- import { getBundle } from '../cache'
18
- import { isDomainDir, registerDomain } from '../domain'
19
- import { findSchemaDefinition } from '../introspect/anatomy-extras'
20
- import { bootDomain } from '../lifecycle'
21
- import { stoppers, workspaceRoot, workspaceSchemaDirName } from '../workspace-state'
22
-
23
- /** Mirrors create-astrale-domain's `isValidSlug`: lowercase letters, digits, dots, dashes;
24
- * must start/end alphanumeric. Also guards the filesystem target (no `/`, no `..`, no leading dot). */
25
- const SLUG = /^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$/
26
-
27
- export interface CreateDomainResult {
28
- ok: boolean
29
- id?: string
30
- origin?: string
31
- error?: string
32
- output: string
33
- }
34
-
35
- async function run(
36
- cmd: string,
37
- args: string[],
38
- cwd: string,
39
- ): Promise<{ code: number; output: string }> {
40
- try {
41
- const proc = Bun.spawn([cmd, ...args], {
42
- cwd,
43
- stdout: 'pipe',
44
- stderr: 'pipe',
45
- env: process.env,
46
- })
47
- const [out, err] = await Promise.all([
48
- new Response(proc.stdout).text(),
49
- new Response(proc.stderr).text(),
50
- ])
51
- const code = await proc.exited
52
- return { code, output: `${out}\n${err}`.trim() }
53
- } catch (e) {
54
- return { code: 1, output: `failed to spawn ${cmd}: ${(e as Error)?.message ?? e}` }
55
- }
56
- }
57
-
58
- export async function createDomain(
59
- rawName: string,
60
- instance: string | null,
61
- ): Promise<CreateDomainResult> {
62
- const name = rawName.trim().toLowerCase()
63
- if (!name || name.length > 64 || !SLUG.test(name)) {
64
- return {
65
- ok: false,
66
- error: 'Use lowercase letters, digits, dots and dashes (e.g. “crm” or “crm.acme.dev”).',
67
- output: '',
68
- }
69
- }
70
- const root = workspaceRoot()
71
- if (!root) return { ok: false, error: 'No workspace root is configured.', output: '' }
72
- const dir = join(root, name)
73
- if (existsSync(dir)) {
74
- return {
75
- ok: false,
76
- error: `A folder named “${name}” already exists in the workspace.`,
77
- output: '',
78
- }
79
- }
80
-
81
- // 1. Scaffold (non-interactive). `--yes` accepts defaults (astrale adapter, template);
82
- // `--instance` stamps the active instance into the managed prod target.
83
- const scaffoldArgs = [
84
- '--yes',
85
- 'create-astrale-domain@latest',
86
- name,
87
- '--yes',
88
- ...(instance ? ['--instance', instance] : []),
89
- ]
90
- const scaffold = await run('npx', scaffoldArgs, root)
91
- const schemaDirName = workspaceSchemaDirName()
92
- if (!isDomainDir(dir, schemaDirName)) {
93
- return {
94
- ok: false,
95
- error: 'Scaffolding did not produce a domain. See the log.',
96
- output: scaffold.output.slice(-6000),
97
- }
98
- }
99
-
100
- // 1b. Flag the placeholder origin for the agent (we ask for the name only, so the
101
- // origin is `<name>.example.dev` until someone — or the agent — sets the real one).
102
- annotateOrigin(dir, schemaDirName)
103
-
104
- // 2. Install deps so the domain is fully introspectable + deployable. Best-effort:
105
- // a scaffolded-but-uninstalled domain still loads (static fallback), so a failed
106
- // install is a soft warning, not a hard failure.
107
- const install = await run('pnpm', ['install'], dir)
108
-
109
- // 3. Register + boot with deps present. The live watcher may have already booted a
110
- // deps-less fallback for this dir mid-install — stop it and boot fresh.
111
- const handle = registerDomain(dir, schemaDirName)
112
- if (!handle) {
113
- return {
114
- ok: false,
115
- error: 'Scaffold incomplete — config, composition entry, or schema index is missing.',
116
- output: combine(scaffold, install),
117
- }
118
- }
119
- stoppers.get(handle.id)?.()
120
- const { origin } = await bootDomain(handle).then((b) => {
121
- stoppers.set(handle.id, b.stop)
122
- return b
123
- })
124
- await getBundle(handle.id, true) // refresh the cache now that deps are installed
125
-
126
- return { ok: true, id: handle.id, origin, output: combine(scaffold, install) }
127
- }
128
-
129
- function combine(a: { output: string }, b: { output: string }): string {
130
- return `$ create-astrale-domain\n${a.output}\n\n$ pnpm install\n${b.output}`.trim().slice(-6000)
131
- }
132
-
133
- /**
134
- * Drop an agent-actionable marker on the origin line of the scaffolded schema.
135
- * The public schema/index.ts is now commonly a barrel, so the definition is
136
- * located statically below it. We only ask for the NAME, so the origin starts as the
137
- * `<name>.example.dev` placeholder — this comment tells a human (or the studio's
138
- * agent) it's a placeholder to change, and that the studio re-parses the literal
139
- * as the source of truth so the rename takes effect on save. Best-effort: the
140
- * template already explains the origin, so a parse miss is harmless.
141
- */
142
- export function annotateOrigin(dir: string, schemaDirName = 'schema'): void {
143
- const definition = findSchemaDefinition(dir, schemaDirName)
144
- if (!definition) return
145
- const file = definition.file
146
- try {
147
- const src = readFileSync(file, 'utf8')
148
- if (src.includes('ORIGIN —')) return // already annotated (idempotent)
149
- const lines = src.split('\n')
150
- const index = Math.max(0, definition.line - 1)
151
- const pad = lines[index]?.match(/^[ \t]*/)?.[0] ?? ''
152
- const note =
153
- `${pad}// ORIGIN — the domain's permanent identity in the graph. It was set from the name as a\n` +
154
- `${pad}// PLACEHOLDER; change the literal or constant used here (e.g. to "crm.acme.dev"), ideally BEFORE\n` +
155
- `${pad}// the first deploy (the origin is hard to change once installed). The studio parses this\n` +
156
- `${pad}// schema statically as the source of truth, so the rename refreshes on save.\n`
157
- lines.splice(index, 0, note.trimEnd())
158
- writeFileSync(file, lines.join('\n'))
159
- } catch {
160
- /* best-effort */
161
- }
162
- }
@@ -1,75 +0,0 @@
1
- /**
2
- * Best-effort workspace Git enrichment for change tracking. The fixtures are not
3
- * git repos, so EVERY function here degrades gracefully and NEVER throws. The
4
- * baseline (baseline.ts) is the primary tracker; git only enriches when present.
5
- */
6
- import { execFileSync } from 'node:child_process'
7
- import { existsSync } from 'node:fs'
8
- import { dirname, relative, resolve } from 'node:path'
9
-
10
- import type { FileChange } from '../../shared/types'
11
-
12
- /** Walk parent dirs looking for a `.git` entry (dir or file, to support worktrees/submodules). */
13
- export function detectGit(root: string): { hasGit: boolean; gitRoot?: string } {
14
- let dir = resolve(root)
15
- while (true) {
16
- if (existsSync(resolve(dir, '.git'))) return { hasGit: true, gitRoot: dir }
17
- const parent = dirname(dir)
18
- if (parent === dir) return { hasGit: false }
19
- dir = parent
20
- }
21
- }
22
-
23
- function git(gitRoot: string, args: string[]): string | null {
24
- try {
25
- return execFileSync('git', ['-C', gitRoot, ...args], {
26
- encoding: 'utf8',
27
- stdio: ['ignore', 'pipe', 'ignore'],
28
- maxBuffer: 64 * 1024 * 1024,
29
- })
30
- } catch {
31
- return null
32
- }
33
- }
34
-
35
- /** `git diff` scoped to the schema dir. Returns stdout (possibly '') or null when there is no git. */
36
- export function gitDiff(root: string, schemaDirName: string): string | null {
37
- const { hasGit, gitRoot } = detectGit(root)
38
- if (!hasGit || !gitRoot) return null
39
- // Path to the schema dir relative to the git root (forward-slashed for git).
40
- const rel = relative(gitRoot, resolve(root, schemaDirName)).split('\\').join('/')
41
- const out = git(gitRoot, ['diff', '--', rel || '.'])
42
- return out
43
- }
44
-
45
- /** XY porcelain code → our FileChange status. Returns null for codes we don't surface. */
46
- function mapStatus(xy: string): FileChange['status'] | null {
47
- const x = xy[0] ?? ' '
48
- const y = xy[1] ?? ' '
49
- if (x === '?' || y === '?') return 'added' // untracked
50
- if (x === 'A' || y === 'A') return 'added'
51
- if (x === 'D' || y === 'D') return 'removed'
52
- if (x === 'R' || y === 'R') return 'modified' // rename → surface destination as modified
53
- if (x === 'M' || y === 'M' || x === 'C' || y === 'C' || x === 'U' || y === 'U') return 'modified'
54
- return null
55
- }
56
-
57
- /** Parse `git status --porcelain` into FileChange[]. Empty array when there is no git. */
58
- export function gitStatus(root: string): FileChange[] {
59
- const { hasGit, gitRoot } = detectGit(root)
60
- if (!hasGit || !gitRoot) return []
61
- const out = git(gitRoot, ['status', '--porcelain'])
62
- if (out == null) return []
63
- const changes: FileChange[] = []
64
- for (const line of out.split('\n')) {
65
- if (!line.trim()) continue
66
- const xy = line.slice(0, 2)
67
- let path = line.slice(3)
68
- // Renames/copies render as "old -> new"; keep the destination path.
69
- const arrow = path.indexOf(' -> ')
70
- if (arrow !== -1) path = path.slice(arrow + 4)
71
- const status = mapStatus(xy)
72
- if (status) changes.push({ file: path, status })
73
- }
74
- return changes
75
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * Workspace update bridge for the header Update badge.
3
- *
4
- * We don't reimplement staleness: the `astrale` CLI owns it. `astrale update
5
- * --check --json`, run in the DOMAIN ROOT (so its @astrale-os/* SDK-dep axis sees
6
- * THIS project), emits a unified `{ stale, cli, sdk }` report. We run it with
7
- * stdout piped and read it regardless of exit code — a stale result exits 10 by
8
- * design, which is not an error here. Best-effort: anything unexpected (no
9
- * bad output) collapses to "nothing stale" so the badge stays
10
- * hidden rather than nagging on a hiccup.
11
- */
12
- import type { StaleReport } from '../../shared/types'
13
-
14
- import { decodeJsonObject, runStudioCliJson, runStudioCliText } from '../cli'
15
-
16
- const NOT_STALE: StaleReport = {
17
- stale: false,
18
- cli: { stale: false, managed: true },
19
- sdk: { stale: false, inProject: false, outdated: [] },
20
- }
21
-
22
- export async function getUpdates(root: string): Promise<StaleReport> {
23
- const result = await runStudioCliJson(['update', '--check', '--json'], decodeStaleReport, {
24
- cwd: root,
25
- acceptedExitCodes: [0, 10],
26
- })
27
- return result.ok && result.data ? result.data : NOT_STALE
28
- }
29
-
30
- function decodeStaleReport(value: unknown): StaleReport | null {
31
- const report = decodeJsonObject(value)
32
- const cli = decodeJsonObject(report?.cli)
33
- const sdk = decodeJsonObject(report?.sdk)
34
- if (
35
- typeof report?.stale !== 'boolean' ||
36
- typeof cli?.stale !== 'boolean' ||
37
- typeof cli.managed !== 'boolean' ||
38
- typeof sdk?.stale !== 'boolean' ||
39
- typeof sdk.inProject !== 'boolean' ||
40
- !Array.isArray(sdk.outdated)
41
- ) {
42
- return null
43
- }
44
- const outdated = sdk.outdated.flatMap((value) => {
45
- const item = decodeJsonObject(value)
46
- return typeof item?.pkg === 'string' &&
47
- typeof item.current === 'string' &&
48
- typeof item.latest === 'string'
49
- ? [{ pkg: item.pkg, current: item.current, latest: item.latest }]
50
- : []
51
- })
52
- if (outdated.length !== sdk.outdated.length) return null
53
- return {
54
- stale: report.stale,
55
- cli: {
56
- stale: cli.stale,
57
- managed: cli.managed,
58
- ...(typeof cli.current === 'string' ? { current: cli.current } : {}),
59
- ...(typeof cli.latest === 'string' ? { latest: cli.latest } : {}),
60
- ...(typeof cli.channel === 'string' ? { channel: cli.channel } : {}),
61
- },
62
- sdk: { stale: sdk.stale, inProject: sdk.inProject, outdated },
63
- }
64
- }
65
-
66
- export interface UpdateApplyResult {
67
- ok: boolean
68
- output: string
69
- }
70
-
71
- /**
72
- * Apply the update for the header "Update now" button — `astrale update --yes`,
73
- * run in the domain root. The CLI does the work non-interactively and resiliently
74
- * (binary + skills + SDK deps; a binary that can't self-update warns but doesn't
75
- * block the others), so we just spawn it and capture the combined output to show.
76
- */
77
- export async function applyUpdates(root: string): Promise<UpdateApplyResult> {
78
- const result = await runStudioCliText(['update', '--yes'], { cwd: root })
79
- return {
80
- ok: result.ok,
81
- output: `${result.stdout}${result.stderr}`.trim() || result.detail,
82
- }
83
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * workspace-state.ts — process-global workspace context shared by the entrypoint
3
- * (index.ts), the live watcher (workspace-watch.ts), and the create-domain
4
- * endpoint (workspace/create.ts): the scanned ROOT (where new domains are
5
- * scaffolded), the schema-dir name, and the `domainId → file-watcher stop` map.
6
- *
7
- * It exists so the create endpoint can scaffold into the same root the studio
8
- * watches — and re-boot the freshly-created domain — without index.ts having to
9
- * thread those values through the API signature.
10
- */
11
-
12
- const state = { root: '', schemaDirName: 'schema' }
13
-
14
- /** domainId → stop its file watcher. The startup scan + the live watcher + the
15
- * create endpoint all share this one map so "what domains are live" stays single-sourced. */
16
- export const stoppers = new Map<string, () => void>()
17
-
18
- /** Called once at boot with the resolved workspace root + schema-dir name. */
19
- export function initWorkspaceState(root: string, schemaDirName: string): void {
20
- state.root = root
21
- state.schemaDirName = schemaDirName
22
- }
23
-
24
- /** The directory the studio scans for domains — where `create new` scaffolds a sibling. */
25
- export const workspaceRoot = (): string => state.root
26
- export const workspaceSchemaDirName = (): string => state.schemaDirName
@@ -1,106 +0,0 @@
1
- /**
2
- * workspace-watch.ts — keeps the domain registry in sync with the workspace while
3
- * the studio is running. A domain dropped in (or one whose astrale.config.ts +
4
- * composition entry + schema/index.ts triple just completed) is registered, booted, and
5
- * announced over SSE; one whose triple vanished is unregistered. It reuses
6
- * `scanWorkspace` (detection) + `bootDomain` (lifecycle), so there is no second
7
- * source of truth for "what is a domain" or "how a domain comes online".
8
- */
9
- import chokidar from 'chokidar'
10
- import { basename } from 'node:path'
11
-
12
- import { scanWorkspace } from './detect'
13
- import { allDomains, isDomainDir, unregisterDomain } from './domain'
14
- import { bootDomain } from './lifecycle'
15
- import { broadcast } from './sse'
16
-
17
- const IGNORED =
18
- /(^|[/\\])(node_modules|\.git|\.astrale|\.domain-studio|dist|\.dist|\.next|\.cache|\.turbo|\.vercel|coverage)([/\\]|$)/
19
- // only these file changes can change the domain SET (vs. ordinary in-domain edits)
20
- export const DOMAIN_SET_TRIGGER_FILES = new Set([
21
- 'astrale.config.ts',
22
- 'application.ts',
23
- 'schema.ts',
24
- 'index.ts',
25
- ])
26
-
27
- /**
28
- * Watch `root` for domains appearing/disappearing.
29
- * @param stoppers shared `domainId → file-watcher stop` map. The startup scan seeds
30
- * it (via bootDomain); this watcher keeps it in sync as domains come and go.
31
- */
32
- export function watchWorkspace(
33
- root: string,
34
- schemaDirName: string,
35
- stoppers: Map<string, () => void>,
36
- ): () => void {
37
- let timer: ReturnType<typeof setTimeout> | undefined
38
- let running = false
39
- let queued = false
40
-
41
- const reconcile = async () => {
42
- const before = new Set(allDomains().map((d) => d.id))
43
-
44
- // 1. drop domains whose triple vanished (dir deleted, or a trigger file removed)
45
- for (const h of allDomains()) {
46
- if (isDomainDir(h.root, h.schemaDirName)) continue
47
- stoppers.get(h.id)?.()
48
- stoppers.delete(h.id)
49
- unregisterDomain(h.id)
50
- console.log(` Domain Studio — domain removed: ${h.id}`)
51
- }
52
-
53
- // 2. register + boot any new ones (scanWorkspace registers; bootDomain initializes + watches)
54
- for (const h of scanWorkspace(root, schemaDirName)) {
55
- if (stoppers.has(h.id)) continue
56
- const { origin, stop } = await bootDomain(h)
57
- stoppers.set(h.id, stop)
58
- console.log(` Domain Studio — domain added: ${origin} (${h.id})`)
59
- }
60
-
61
- // 3. announce if the set changed → clients refetch /api/workspace
62
- const after = new Set(allDomains().map((d) => d.id))
63
- if (before.size !== after.size || [...after].some((id) => !before.has(id))) {
64
- broadcast({ type: 'workspace', domains: [...after] })
65
- }
66
- }
67
-
68
- // serialize reconciles — bootDomain is async; coalesce event bursts
69
- const run = async () => {
70
- if (running) {
71
- queued = true
72
- return
73
- }
74
- running = true
75
- try {
76
- await reconcile()
77
- } catch (e) {
78
- console.error(' Domain Studio — workspace reconcile failed:', e)
79
- } finally {
80
- running = false
81
- if (queued) {
82
- queued = false
83
- void run()
84
- }
85
- }
86
- }
87
- const schedule = () => {
88
- clearTimeout(timer)
89
- timer = setTimeout(() => void run(), 400)
90
- }
91
- const onFile = (p: string) => {
92
- if (DOMAIN_SET_TRIGGER_FILES.has(basename(p))) schedule()
93
- }
94
-
95
- const watcher = chokidar.watch(root, {
96
- ignoreInitial: true,
97
- depth: 4,
98
- ignored: (p: string) => IGNORED.test(p),
99
- })
100
- watcher.on('addDir', schedule).on('unlinkDir', schedule).on('add', onFile).on('unlink', onFile)
101
-
102
- return () => {
103
- clearTimeout(timer)
104
- void watcher.close()
105
- }
106
- }
@@ -1,12 +0,0 @@
1
- import { expect, test } from 'bun:test'
2
-
3
- import { effectiveAgentEffort } from './agent-effort'
4
-
5
- test('normalizes persisted effort when switching harness vocabularies', () => {
6
- expect(effectiveAgentEffort(['low', 'medium', 'high', 'xhigh'], 'max')).toBe('xhigh')
7
- expect(effectiveAgentEffort(['low', 'medium', 'high', 'xhigh'], 'ultracode')).toBe('xhigh')
8
- expect(effectiveAgentEffort(['low', 'medium', 'high'], 'minimal')).toBe('low')
9
- expect(effectiveAgentEffort(['medium', 'high'], 'xhigh')).toBe('high')
10
- expect(effectiveAgentEffort(['medium'], 'low')).toBe('medium')
11
- expect(effectiveAgentEffort(['low'], undefined)).toBeUndefined()
12
- })
@@ -1,15 +0,0 @@
1
- import type { AgentEffort } from './types'
2
-
3
- /** Map a persisted cross-harness effort onto the selected harness's vocabulary. */
4
- export function effectiveAgentEffort(
5
- levels: readonly AgentEffort[],
6
- requested?: string,
7
- ): AgentEffort | undefined {
8
- if (!requested) return undefined
9
- if (levels.includes(requested as AgentEffort)) return requested as AgentEffort
10
- if (requested === 'max' && levels.includes('xhigh')) return 'xhigh'
11
- if (requested === 'ultracode' && levels.includes('xhigh')) return 'xhigh'
12
- if (requested === 'minimal' && levels.includes('low')) return 'low'
13
- if (levels.includes('high')) return 'high'
14
- return levels[0]
15
- }
@@ -1,9 +0,0 @@
1
- import { expect, test } from 'bun:test'
2
-
3
- import { updateAgentModel } from './agent-models'
4
-
5
- test('switching model overrides preserves independent harness selections', () => {
6
- const selected = updateAgentModel({ claude: 'opus' }, 'Codex', ' gpt-5.4-mini ')
7
- expect(selected).toEqual({ claude: 'opus', codex: 'gpt-5.4-mini' })
8
- expect(updateAgentModel(selected, 'claude', '')).toEqual({ codex: 'gpt-5.4-mini' })
9
- })
@@ -1,14 +0,0 @@
1
- /** Update one harness-specific model override without disturbing sibling harnesses. */
2
- export function updateAgentModel(
3
- current: Record<string, string>,
4
- harness: string,
5
- model: string,
6
- ): Record<string, string> {
7
- const key = harness.trim().toLowerCase()
8
- if (!key) return current
9
- const next = { ...current }
10
- const normalized = model.trim()
11
- if (normalized) next[key] = normalized
12
- else delete next[key]
13
- return next
14
- }
@@ -1,16 +0,0 @@
1
- # Studio shared contract boundaries
2
-
3
- `../types.ts` is the compatibility facade used by existing server and client
4
- imports. Definitions live under one semantic owner:
5
-
6
- - `schema.ts` owns the render IR and all schema/anatomy introspection results.
7
- - `workspace.ts` owns persisted and workspace-facing state, including the sole
8
- `LayoutState` and `VisibilityState` definitions.
9
- - `agent.ts` owns the harness-neutral agent protocol and harness configuration.
10
- - `runtime.ts` owns Studio runtime configuration, SSE events, and CLI staleness.
11
- - `../schema/identity.ts` owns pure canonical reference/key identity helpers.
12
-
13
- Allowed dependency direction is identity → schema → workspace → agent → runtime.
14
- Shared contracts never import server or client implementations. New consumers
15
- may import an owning module directly; `@shared/types` remains supported for
16
- compatibility.