@astrale-os/cli 1.0.0-beta.9 → 1.0.0-npm-deprecated.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -166
- package/package.json +10 -102
- package/.check-workspace.cjs +0 -40
- package/LICENSE +0 -202
- package/THIRD-PARTY-NOTICES.md +0 -27
- package/dist/astrale.js +0 -93344
- package/dist/public/connect-core.js +0 -29187
- package/dist/public/keys/index.js +0 -5651
- package/dist/public/paths/index.js +0 -4282
- package/dist/types/admin/binding.d.ts +0 -19
- package/dist/types/admin/instance/client.d.ts +0 -22
- package/dist/types/admin/instance/index.d.ts +0 -2
- package/dist/types/admin/instance/model.d.ts +0 -33
- package/dist/types/connect-core.d.ts +0 -22
- package/dist/types/connection/auth.d.ts +0 -39
- package/dist/types/connection/call.d.ts +0 -3
- package/dist/types/connection/command.d.ts +0 -27
- package/dist/types/connection/credential.d.ts +0 -14
- package/dist/types/connection/errors.d.ts +0 -1
- package/dist/types/connection/exchange.d.ts +0 -9
- package/dist/types/connection/failure/classify.d.ts +0 -2
- package/dist/types/connection/failure/index.d.ts +0 -5
- package/dist/types/connection/failure/model.d.ts +0 -25
- package/dist/types/connection/failure/render.d.ts +0 -3
- package/dist/types/connection/index.d.ts +0 -8
- package/dist/types/connection/reasons.d.ts +0 -37
- package/dist/types/connection/self.d.ts +0 -37
- package/dist/types/connection/session.d.ts +0 -31
- package/dist/types/connection/target.d.ts +0 -38
- package/dist/types/errors.d.ts +0 -23
- package/dist/types/identity/registry.d.ts +0 -25
- package/dist/types/keys/algorithm.d.ts +0 -6
- package/dist/types/keys/credential.d.ts +0 -21
- package/dist/types/keys/index.d.ts +0 -4
- package/dist/types/keys/pair.d.ts +0 -34
- package/dist/types/lib/admin-instance.d.ts +0 -17
- package/dist/types/lib/admin-target.d.ts +0 -78
- package/dist/types/lib/ca-fetch.d.ts +0 -2
- package/dist/types/lib/config.d.ts +0 -71
- package/dist/types/lib/failure-debug.d.ts +0 -1
- package/dist/types/lib/format.d.ts +0 -1
- package/dist/types/lib/idp-session.d.ts +0 -33
- package/dist/types/lib/idp.d.ts +0 -404
- package/dist/types/lib/instance-target.d.ts +0 -38
- package/dist/types/lib/instance.d.ts +0 -202
- package/dist/types/lib/invocation.d.ts +0 -3
- package/dist/types/lib/log.d.ts +0 -33
- package/dist/types/lib/login-flow.d.ts +0 -49
- package/dist/types/lib/meta.d.ts +0 -36
- package/dist/types/lib/output.d.ts +0 -87
- package/dist/types/lib/proc.d.ts +0 -43
- package/dist/types/lib/self.d.ts +0 -9
- package/dist/types/lib/table.d.ts +0 -18
- package/dist/types/lib/update.d.ts +0 -131
- package/dist/types/lib/validation.d.ts +0 -11
- package/dist/types/paths/index.d.ts +0 -2
- package/dist/types/state/exchange-credentials.d.ts +0 -25
- package/dist/types/state/files.d.ts +0 -9
- package/dist/types/state/identities.d.ts +0 -42
- package/dist/types/state/index.d.ts +0 -8
- package/dist/types/state/paths.d.ts +0 -32
- package/src/__tests__/fixtures/publication.ts +0 -20
- package/src/admin/.spec/api.d.ts +0 -3
- package/src/admin/.spec/architecture.md +0 -15
- package/src/admin/.spec/icon.svg +0 -3
- package/src/admin/.spec/layout.ts +0 -6
- package/src/admin/__tests__/binding.test.ts +0 -31
- package/src/admin/__tests__/fixture.ts +0 -101
- package/src/admin/binding.ts +0 -98
- package/src/admin/catalog/.spec/api.d.ts +0 -65
- package/src/admin/catalog/.spec/architecture.md +0 -6
- package/src/admin/catalog/.spec/icon.svg +0 -3
- package/src/admin/catalog/.spec/layout.ts +0 -6
- package/src/admin/catalog/__tests__/client.test.ts +0 -142
- package/src/admin/catalog/client.ts +0 -218
- package/src/admin/catalog/index.ts +0 -13
- package/src/admin/catalog/model.ts +0 -41
- package/src/admin/catalog/tsconfig.json +0 -8
- package/src/admin/graph/.spec/api.d.ts +0 -22
- package/src/admin/graph/.spec/architecture.md +0 -5
- package/src/admin/graph/.spec/icon.svg +0 -3
- package/src/admin/graph/.spec/layout.ts +0 -3
- package/src/admin/graph/index.ts +0 -6
- package/src/admin/graph/nodes.ts +0 -56
- package/src/admin/index.ts +0 -2
- package/src/admin/instance/.spec/api.d.ts +0 -66
- package/src/admin/instance/.spec/architecture.md +0 -10
- package/src/admin/instance/.spec/icon.svg +0 -3
- package/src/admin/instance/.spec/layout.ts +0 -6
- package/src/admin/instance/__tests__/client.test.ts +0 -166
- package/src/admin/instance/client.ts +0 -196
- package/src/admin/instance/index.ts +0 -15
- package/src/admin/instance/model.ts +0 -56
- package/src/admin/instance/tsconfig.json +0 -8
- package/src/commands/__tests__/admin-instance.test.ts +0 -91
- package/src/commands/__tests__/auth-login.test.ts +0 -231
- package/src/commands/__tests__/auth-token.test.ts +0 -223
- package/src/commands/__tests__/call-describe.test.ts +0 -80
- package/src/commands/__tests__/call.test.ts +0 -29
- package/src/commands/__tests__/domain-install-operation.test.ts +0 -126
- package/src/commands/__tests__/domain-install-owned.test.ts +0 -191
- package/src/commands/__tests__/domain-list.test.ts +0 -133
- package/src/commands/__tests__/domain-uninstall.test.ts +0 -53
- package/src/commands/__tests__/install-direct.test.ts +0 -21
- package/src/commands/__tests__/install-identity-override.test.ts +0 -76
- package/src/commands/__tests__/instance-bookmark.test.ts +0 -166
- package/src/commands/__tests__/instance-list-admin.test.ts +0 -26
- package/src/commands/__tests__/instance-list-rows.test.ts +0 -64
- package/src/commands/__tests__/instance-use.test.ts +0 -67
- package/src/commands/__tests__/introspect-parse.test.ts +0 -21
- package/src/commands/__tests__/logs.test.ts +0 -97
- package/src/commands/__tests__/read-commands.test.ts +0 -294
- package/src/commands/__tests__/setup-plan.test.ts +0 -61
- package/src/commands/__tests__/studio-descriptor.test.ts +0 -22
- package/src/commands/__tests__/token-ttl.test.ts +0 -21
- package/src/commands/__tests__/update.test.ts +0 -95
- package/src/commands/__tests__/view-build.test.ts +0 -58
- package/src/commands/__tests__/view.test.ts +0 -149
- package/src/commands/admin/status.ts +0 -61
- package/src/commands/admin/use.ts +0 -100
- package/src/commands/auth/login.ts +0 -82
- package/src/commands/auth/logout.ts +0 -52
- package/src/commands/auth/status.ts +0 -86
- package/src/commands/auth/token.ts +0 -174
- package/src/commands/browser.ts +0 -207
- package/src/commands/call-describe.ts +0 -123
- package/src/commands/call.ts +0 -205
- package/src/commands/domain/install.ts +0 -548
- package/src/commands/domain/list.ts +0 -155
- package/src/commands/domain/publish.ts +0 -136
- package/src/commands/domain/uninstall.ts +0 -128
- package/src/commands/get.ts +0 -69
- package/src/commands/identity/__tests__/register.test.ts +0 -93
- package/src/commands/identity/create.ts +0 -35
- package/src/commands/identity/delete.ts +0 -24
- package/src/commands/identity/export.ts +0 -46
- package/src/commands/identity/import.ts +0 -61
- package/src/commands/identity/list.ts +0 -56
- package/src/commands/identity/register.ts +0 -196
- package/src/commands/identity/sync.ts +0 -38
- package/src/commands/identity/unsync.ts +0 -34
- package/src/commands/identity/use.ts +0 -24
- package/src/commands/identity/whoami.ts +0 -34
- package/src/commands/idp/add.ts +0 -150
- package/src/commands/idp/list.ts +0 -57
- package/src/commands/idp/refresh.ts +0 -38
- package/src/commands/idp/remove.ts +0 -36
- package/src/commands/idp/show.ts +0 -29
- package/src/commands/instance/active.ts +0 -73
- package/src/commands/instance/bookmark.ts +0 -101
- package/src/commands/instance/create.ts +0 -61
- package/src/commands/instance/delete.ts +0 -69
- package/src/commands/instance/forget.ts +0 -26
- package/src/commands/instance/list.ts +0 -197
- package/src/commands/instance/status.ts +0 -38
- package/src/commands/instance/use.ts +0 -263
- package/src/commands/introspect.ts +0 -110
- package/src/commands/logs.ts +0 -283
- package/src/commands/mutate.ts +0 -122
- package/src/commands/query.ts +0 -136
- package/src/commands/session/analyze.ts +0 -50
- package/src/commands/session/list.ts +0 -36
- package/src/commands/setup.ts +0 -54
- package/src/commands/status.ts +0 -60
- package/src/commands/studio.ts +0 -434
- package/src/commands/token.ts +0 -107
- package/src/commands/update.ts +0 -334
- package/src/commands/use.ts +0 -86
- package/src/commands/view-serve.ts +0 -26
- package/src/commands/view.ts +0 -614
- package/src/connect-core.test.ts +0 -38
- package/src/connect-core.ts +0 -42
- package/src/connection/.spec/api.d.ts +0 -110
- package/src/connection/.spec/architecture.md +0 -47
- package/src/connection/.spec/capabilities/connection.ts +0 -13
- package/src/connection/.spec/examples/call.ts +0 -7
- package/src/connection/.spec/flows/command.ts +0 -20
- package/src/connection/.spec/flows/session.ts +0 -61
- package/src/connection/.spec/laws/connection.ts +0 -205
- package/src/connection/.spec/layout.ts +0 -21
- package/src/connection/__tests__/auth.test.ts +0 -128
- package/src/connection/__tests__/ca-fetch.test.ts +0 -60
- package/src/connection/__tests__/call.test.ts +0 -17
- package/src/connection/__tests__/credential.test.ts +0 -138
- package/src/connection/__tests__/errors.test.ts +0 -577
- package/src/connection/__tests__/exchange.test.ts +0 -295
- package/src/connection/__tests__/failure-fixtures.ts +0 -39
- package/src/connection/__tests__/failure-safety.test.ts +0 -75
- package/src/connection/__tests__/fixtures/localhost-cert.pem +0 -19
- package/src/connection/__tests__/fixtures/localhost-key.base64 +0 -1
- package/src/connection/__tests__/managed.test.ts +0 -39
- package/src/connection/__tests__/reasons.test.ts +0 -78
- package/src/connection/__tests__/self.test.ts +0 -71
- package/src/connection/__tests__/session.test.ts +0 -140
- package/src/connection/__tests__/target.test.ts +0 -94
- package/src/connection/auth.ts +0 -249
- package/src/connection/call.ts +0 -7
- package/src/connection/command.ts +0 -67
- package/src/connection/credential.ts +0 -117
- package/src/connection/errors.ts +0 -1
- package/src/connection/exchange.ts +0 -311
- package/src/connection/failure/classify.ts +0 -110
- package/src/connection/failure/index.ts +0 -18
- package/src/connection/failure/model.ts +0 -28
- package/src/connection/failure/render.ts +0 -116
- package/src/connection/index.ts +0 -8
- package/src/connection/reasons.ts +0 -209
- package/src/connection/self.ts +0 -138
- package/src/connection/session.ts +0 -196
- package/src/connection/target.ts +0 -112
- package/src/connection/tsconfig.json +0 -6
- package/src/errors.ts +0 -66
- package/src/graph/.spec/api.d.ts +0 -41
- package/src/graph/.spec/laws/documents.ts +0 -24
- package/src/graph/.spec/laws/projection.ts +0 -13
- package/src/graph/.spec/layout.ts +0 -14
- package/src/graph/__tests__/mutation.test.ts +0 -51
- package/src/graph/__tests__/projection.test.ts +0 -22
- package/src/graph/__tests__/query.test.ts +0 -173
- package/src/graph/class.ts +0 -30
- package/src/graph/index.ts +0 -4
- package/src/graph/mutation.ts +0 -46
- package/src/graph/projection.ts +0 -21
- package/src/graph/query.ts +0 -97
- package/src/graph/tsconfig.json +0 -6
- package/src/identity/.history/ard/bootstrap-root-transfer.md +0 -57
- package/src/identity/.history/ard/domain-mediated-registration.md +0 -36
- package/src/identity/.spec/api.d.ts +0 -124
- package/src/identity/.spec/architecture.md +0 -33
- package/src/identity/.spec/capabilities/identity.ts +0 -7
- package/src/identity/.spec/flows/bootstrap-root.ts +0 -79
- package/src/identity/.spec/flows/domain-mediated-registration.ts +0 -51
- package/src/identity/.spec/flows/import.ts +0 -29
- package/src/identity/.spec/laws/identity.ts +0 -56
- package/src/identity/.spec/layout.ts +0 -13
- package/src/identity/.spec/schemas/identity-export-v1.schema.json +0 -25
- package/src/identity/__tests__/fixtures/registry-journey.ts +0 -53
- package/src/identity/__tests__/registration.test.ts +0 -64
- package/src/identity/__tests__/registry.test.ts +0 -70
- package/src/identity/__tests__/transfer.test.ts +0 -198
- package/src/identity/index.ts +0 -23
- package/src/identity/registration.ts +0 -72
- package/src/identity/registry.ts +0 -179
- package/src/identity/transfer.ts +0 -187
- package/src/identity/tsconfig.json +0 -6
- package/src/index.ts +0 -1
- package/src/keys/.spec/api.d.ts +0 -74
- package/src/keys/.spec/architecture.md +0 -13
- package/src/keys/.spec/laws/keys.ts +0 -43
- package/src/keys/.spec/layout.ts +0 -6
- package/src/keys/__tests__/algorithm.test.ts +0 -39
- package/src/keys/__tests__/keys.test.ts +0 -168
- package/src/keys/algorithm.ts +0 -33
- package/src/keys/credential.ts +0 -112
- package/src/keys/index.ts +0 -14
- package/src/keys/pair.ts +0 -219
- package/src/keys/tsconfig.json +0 -6
- package/src/lib/__tests__/admin-target.test.ts +0 -184
- package/src/lib/__tests__/binary.test.ts +0 -55
- package/src/lib/__tests__/command-dx.test.ts +0 -102
- package/src/lib/__tests__/concurrency.test.ts +0 -62
- package/src/lib/__tests__/config.test.ts +0 -54
- package/src/lib/__tests__/design.test.ts +0 -99
- package/src/lib/__tests__/domain-publication.test.ts +0 -138
- package/src/lib/__tests__/format.test.ts +0 -22
- package/src/lib/__tests__/idp-session.driver.ts +0 -53
- package/src/lib/__tests__/idp-session.test.ts +0 -379
- package/src/lib/__tests__/idp.test.ts +0 -415
- package/src/lib/__tests__/instance-candidates.test.ts +0 -146
- package/src/lib/__tests__/instance-target.test.ts +0 -213
- package/src/lib/__tests__/instance.test.ts +0 -192
- package/src/lib/__tests__/local-status.test.ts +0 -202
- package/src/lib/__tests__/log-errors.test.ts +0 -64
- package/src/lib/__tests__/log.test.ts +0 -31
- package/src/lib/__tests__/meta.test.ts +0 -55
- package/src/lib/__tests__/output.test.ts +0 -162
- package/src/lib/__tests__/panel.test.ts +0 -40
- package/src/lib/__tests__/port.test.ts +0 -44
- package/src/lib/__tests__/prompt.test.ts +0 -25
- package/src/lib/__tests__/sdk-deps.test.ts +0 -68
- package/src/lib/__tests__/self.test.ts +0 -50
- package/src/lib/__tests__/studio-server-deps.test.ts +0 -111
- package/src/lib/__tests__/table.test.ts +0 -53
- package/src/lib/__tests__/update.test.ts +0 -351
- package/src/lib/__tests__/use-target.test.ts +0 -56
- package/src/lib/__tests__/validation.test.ts +0 -34
- package/src/lib/__tests__/view-assets.test.ts +0 -146
- package/src/lib/__tests__/view-open-intent.test.ts +0 -280
- package/src/lib/__tests__/view-port-allocation.test.ts +0 -82
- package/src/lib/__tests__/view-server.test.ts +0 -68
- package/src/lib/__tests__/view-session.test.ts +0 -99
- package/src/lib/__tests__/view-snapshot.test.ts +0 -77
- package/src/lib/admin-domain.ts +0 -43
- package/src/lib/admin-instance.ts +0 -56
- package/src/lib/admin-target.ts +0 -290
- package/src/lib/binary.ts +0 -110
- package/src/lib/browser.ts +0 -150
- package/src/lib/ca-fetch.ts +0 -133
- package/src/lib/command-dx.ts +0 -191
- package/src/lib/concurrency.ts +0 -31
- package/src/lib/config.ts +0 -46
- package/src/lib/domain-publication.ts +0 -104
- package/src/lib/failure-debug.ts +0 -26
- package/src/lib/format.ts +0 -4
- package/src/lib/idp-session.ts +0 -134
- package/src/lib/idp.ts +0 -906
- package/src/lib/instance-candidates.ts +0 -49
- package/src/lib/instance-target.ts +0 -197
- package/src/lib/instance.ts +0 -467
- package/src/lib/invocation.ts +0 -11
- package/src/lib/local-status.ts +0 -152
- package/src/lib/log.ts +0 -143
- package/src/lib/login-flow.ts +0 -201
- package/src/lib/meta.ts +0 -90
- package/src/lib/output.ts +0 -238
- package/src/lib/panel.ts +0 -61
- package/src/lib/port.ts +0 -41
- package/src/lib/proc.ts +0 -82
- package/src/lib/prompt.ts +0 -136
- package/src/lib/provision-instance.ts +0 -139
- package/src/lib/sdk-deps.ts +0 -104
- package/src/lib/self.ts +0 -22
- package/src/lib/skills.ts +0 -171
- package/src/lib/table.ts +0 -62
- package/src/lib/update.ts +0 -409
- package/src/lib/use-target.ts +0 -24
- package/src/lib/validation.ts +0 -59
- package/src/lib/view/assets.ts +0 -78
- package/src/lib/view/open-intent.ts +0 -67
- package/src/lib/view/port-allocation.ts +0 -19
- package/src/lib/view/resolve.ts +0 -111
- package/src/lib/view/server.ts +0 -244
- package/src/lib/view/session.ts +0 -152
- package/src/lib/view/snapshot.ts +0 -101
- package/src/paths/.spec/api.d.ts +0 -13
- package/src/paths/.spec/architecture.md +0 -5
- package/src/paths/.spec/layout.ts +0 -3
- package/src/paths/index.ts +0 -13
- package/src/program/.spec/api.d.ts +0 -42
- package/src/program/.spec/architecture.md +0 -18
- package/src/program/.spec/laws/program.ts +0 -29
- package/src/program/.spec/layout.ts +0 -14
- package/src/program/__tests__/program.test.ts +0 -378
- package/src/program/build.ts +0 -183
- package/src/program/command.ts +0 -42
- package/src/program/index.ts +0 -2
- package/src/program/options.ts +0 -41
- package/src/program/registry.ts +0 -63
- package/src/program/tsconfig.json +0 -6
- package/src/setup/__tests__/instance-step.test.ts +0 -256
- package/src/setup/__tests__/util.test.ts +0 -29
- package/src/setup/engine.ts +0 -83
- package/src/setup/render.ts +0 -107
- package/src/setup/steps/admin.ts +0 -93
- package/src/setup/steps/agent-browser.ts +0 -81
- package/src/setup/steps/auth.ts +0 -54
- package/src/setup/steps/domain.ts +0 -68
- package/src/setup/steps/index.ts +0 -18
- package/src/setup/steps/instance.ts +0 -206
- package/src/setup/steps/skills-bridge.ts +0 -70
- package/src/setup/steps/skills.ts +0 -59
- package/src/setup/types.ts +0 -61
- package/src/setup/util.ts +0 -34
- package/src/state/.spec/api.d.ts +0 -133
- package/src/state/.spec/architecture.md +0 -31
- package/src/state/.spec/capabilities/state.ts +0 -7
- package/src/state/.spec/flows/identity-update.ts +0 -22
- package/src/state/.spec/laws/state.ts +0 -73
- package/src/state/.spec/layout.ts +0 -14
- package/src/state/__tests__/exchange-credentials.test.ts +0 -188
- package/src/state/__tests__/files.test.ts +0 -113
- package/src/state/__tests__/fixtures/identity-transition.ts +0 -37
- package/src/state/__tests__/identities.test.ts +0 -142
- package/src/state/__tests__/paths.test.ts +0 -27
- package/src/state/exchange-credentials.ts +0 -219
- package/src/state/files.ts +0 -129
- package/src/state/identities.ts +0 -229
- package/src/state/index.ts +0 -29
- package/src/state/paths.ts +0 -61
- package/src/state/tsconfig.json +0 -6
- package/src/telemetry/__tests__/gate.test.ts +0 -63
- package/src/telemetry/__tests__/recorder.test.ts +0 -110
- package/src/telemetry/__tests__/redact.test.ts +0 -79
- package/src/telemetry/__tests__/session.test.ts +0 -166
- package/src/telemetry/__tests__/trigger.test.ts +0 -49
- package/src/telemetry/adapters/__tests__/claude-code.test.ts +0 -89
- package/src/telemetry/adapters/__tests__/codex.test.ts +0 -138
- package/src/telemetry/adapters/__tests__/index.test.ts +0 -88
- package/src/telemetry/adapters/claude-code.ts +0 -90
- package/src/telemetry/adapters/codex.ts +0 -160
- package/src/telemetry/adapters/index.ts +0 -45
- package/src/telemetry/adapters/types.ts +0 -21
- package/src/telemetry/analyze.ts +0 -227
- package/src/telemetry/gate.ts +0 -79
- package/src/telemetry/recorder.ts +0 -57
- package/src/telemetry/redact.ts +0 -53
- package/src/telemetry/session.ts +0 -88
- package/src/telemetry/settings.ts +0 -26
- package/src/telemetry/store.ts +0 -91
- package/src/telemetry/trigger.ts +0 -119
- package/src/telemetry/types.ts +0 -64
- package/src/test-utils.ts +0 -18
- package/studio/client/dist/assets/elk-api-ByzoDZWH.js +0 -1
- package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
- package/studio/client/dist/assets/index-B0RCgUOT.js +0 -8
- package/studio/client/dist/assets/index-BiGR8Oo9.css +0 -1
- package/studio/client/dist/assets/index-ChOr3yP0.css +0 -1
- package/studio/client/dist/assets/index-N8J8EKlB.js +0 -81
- package/studio/client/dist/index.html +0 -13
- package/studio/package.json +0 -65
- package/studio/server/agent/ask.test.ts +0 -74
- package/studio/server/agent/ask.ts +0 -71
- package/studio/server/agent/bridge/client.test.ts +0 -49
- package/studio/server/agent/bridge/client.ts +0 -37
- package/studio/server/agent/bridge/grant.test.ts +0 -62
- package/studio/server/agent/bridge/grant.ts +0 -84
- package/studio/server/agent/bridge/routes.test.ts +0 -151
- package/studio/server/agent/bridge/routes.ts +0 -148
- package/studio/server/agent/bridge/stdio.ts +0 -195
- package/studio/server/agent/conversation.test.ts +0 -89
- package/studio/server/agent/conversation.ts +0 -158
- package/studio/server/agent/harness/adapter.ts +0 -171
- package/studio/server/agent/harness/claude/adapter.test.ts +0 -348
- package/studio/server/agent/harness/claude/adapter.ts +0 -71
- package/studio/server/agent/harness/claude/ask.ts +0 -114
- package/studio/server/agent/harness/claude/capabilities.ts +0 -27
- package/studio/server/agent/harness/claude/command.ts +0 -63
- package/studio/server/agent/harness/claude/events.ts +0 -215
- package/studio/server/agent/harness/claude/loadout.ts +0 -132
- package/studio/server/agent/harness/claude/mcp.test.ts +0 -36
- package/studio/server/agent/harness/claude/mcp.ts +0 -41
- package/studio/server/agent/harness/claude/skills.ts +0 -43
- package/studio/server/agent/harness/codex/adapter.test.ts +0 -269
- package/studio/server/agent/harness/codex/adapter.ts +0 -116
- package/studio/server/agent/harness/codex/ask.test.ts +0 -176
- package/studio/server/agent/harness/codex/ask.ts +0 -181
- package/studio/server/agent/harness/codex/command.test.ts +0 -69
- package/studio/server/agent/harness/codex/command.ts +0 -43
- package/studio/server/agent/harness/codex/events.test.ts +0 -94
- package/studio/server/agent/harness/codex/events.ts +0 -132
- package/studio/server/agent/harness/codex/exec.ts +0 -113
- package/studio/server/agent/harness/codex/loadout.ts +0 -60
- package/studio/server/agent/harness/codex/mcp.test.ts +0 -32
- package/studio/server/agent/harness/codex/mcp.ts +0 -27
- package/studio/server/agent/harness/codex/models.test.ts +0 -167
- package/studio/server/agent/harness/codex/models.ts +0 -211
- package/studio/server/agent/harness/codex/skills.ts +0 -33
- package/studio/server/agent/harness/gateway/config.test.ts +0 -98
- package/studio/server/agent/harness/gateway/config.ts +0 -214
- package/studio/server/agent/harness/gateway/token.test.ts +0 -133
- package/studio/server/agent/harness/gateway/token.ts +0 -166
- package/studio/server/agent/harness/mock/adapter.ts +0 -190
- package/studio/server/agent/harness/mock/domain-edit.ts +0 -41
- package/studio/server/agent/harness/process.test.ts +0 -46
- package/studio/server/agent/harness/process.ts +0 -104
- package/studio/server/agent/harness/registry.ts +0 -37
- package/studio/server/agent/harness/selection.test.ts +0 -75
- package/studio/server/agent/harness/selection.ts +0 -85
- package/studio/server/agent/harness/skills.test.ts +0 -95
- package/studio/server/agent/harness/skills.ts +0 -100
- package/studio/server/agent/layout.test.ts +0 -95
- package/studio/server/agent/notify.ts +0 -12
- package/studio/server/agent/prompts/anchors.test.ts +0 -70
- package/studio/server/agent/prompts/anchors.ts +0 -153
- package/studio/server/agent/prompts/ask.ts +0 -34
- package/studio/server/agent/prompts/system.test.ts +0 -13
- package/studio/server/agent/prompts/system.ts +0 -99
- package/studio/server/agent/prompts/turn.ts +0 -66
- package/studio/server/agent/routes.test.ts +0 -176
- package/studio/server/agent/routes.ts +0 -214
- package/studio/server/agent/run/completion.ts +0 -193
- package/studio/server/agent/run/coordinator.test.ts +0 -337
- package/studio/server/agent/run/coordinator.ts +0 -104
- package/studio/server/agent/run/live-state.ts +0 -73
- package/studio/server/agent/run/preparation.ts +0 -163
- package/studio/server/agent/run/transcript.test.ts +0 -81
- package/studio/server/agent/run/transcript.ts +0 -196
- package/studio/server/agent/run/usage.test.ts +0 -70
- package/studio/server/agent/run/usage.ts +0 -62
- package/studio/server/agent/stream.ts +0 -37
- package/studio/server/agent/telemetry.ts +0 -13
- package/studio/server/api/canvas.ts +0 -43
- package/studio/server/api/comments.ts +0 -85
- package/studio/server/api/context.ts +0 -61
- package/studio/server/api/deployment.ts +0 -39
- package/studio/server/api/documents.ts +0 -55
- package/studio/server/api/domain.ts +0 -59
- package/studio/server/api/http.ts +0 -45
- package/studio/server/api/project.ts +0 -57
- package/studio/server/api/schema.ts +0 -12
- package/studio/server/api/views.ts +0 -57
- package/studio/server/api/workspace.ts +0 -60
- package/studio/server/api-agent-loadout.test.ts +0 -69
- package/studio/server/api.test.ts +0 -147
- package/studio/server/api.ts +0 -34
- package/studio/server/cache.test.ts +0 -122
- package/studio/server/cache.ts +0 -303
- package/studio/server/cli-consumers.test.ts +0 -494
- package/studio/server/cli.test.ts +0 -88
- package/studio/server/cli.ts +0 -240
- package/studio/server/client-package.test.ts +0 -147
- package/studio/server/client-package.ts +0 -266
- package/studio/server/detect.ts +0 -81
- package/studio/server/domain.test.ts +0 -77
- package/studio/server/domain.ts +0 -124
- package/studio/server/environment/dotenv-preview.test.ts +0 -39
- package/studio/server/environment/dotenv-preview.ts +0 -27
- package/studio/server/environment/files.test.ts +0 -53
- package/studio/server/environment/files.ts +0 -120
- package/studio/server/handoff/copy.ts +0 -171
- package/studio/server/handoff/service.test.ts +0 -22
- package/studio/server/handoff/service.ts +0 -62
- package/studio/server/index.ts +0 -148
- package/studio/server/instances/active.ts +0 -72
- package/studio/server/instances/deploy-record.test.ts +0 -31
- package/studio/server/instances/deploy-record.ts +0 -37
- package/studio/server/instances/deploy.ts +0 -56
- package/studio/server/instances/probe.test.ts +0 -67
- package/studio/server/instances/probe.ts +0 -67
- package/studio/server/instances/status.test.ts +0 -12
- package/studio/server/instances/status.ts +0 -49
- package/studio/server/introspect/anatomy/client-tree.ts +0 -57
- package/studio/server/introspect/anatomy/env-fields.ts +0 -66
- package/studio/server/introspect/anatomy/schema-definition.ts +0 -53
- package/studio/server/introspect/anatomy/source.ts +0 -181
- package/studio/server/introspect/anatomy/views/routes.ts +0 -114
- package/studio/server/introspect/anatomy/views.ts +0 -53
- package/studio/server/introspect/anatomy-extras.test.ts +0 -265
- package/studio/server/introspect/anatomy-extras.ts +0 -10
- package/studio/server/introspect/anatomy.test.ts +0 -41
- package/studio/server/introspect/anatomy.ts +0 -147
- package/studio/server/introspect/bundle.ts +0 -69
- package/studio/server/introspect/canonical-schema.test.ts +0 -179
- package/studio/server/introspect/canonical-schema.ts +0 -583
- package/studio/server/introspect/config-preview.test.ts +0 -32
- package/studio/server/introspect/config-preview.ts +0 -119
- package/studio/server/introspect/core-extractor.ts +0 -30
- package/studio/server/introspect/core.ts +0 -45
- package/studio/server/introspect/diff.test.ts +0 -124
- package/studio/server/introspect/diff.ts +0 -316
- package/studio/server/introspect/extractor.ts +0 -41
- package/studio/server/introspect/hash.ts +0 -24
- package/studio/server/introspect/overlay-tsmorph.test.ts +0 -146
- package/studio/server/introspect/overlay-tsmorph.ts +0 -9
- package/studio/server/introspect/overlay.test.ts +0 -44
- package/studio/server/introspect/overlay.ts +0 -40
- package/studio/server/introspect/revision.test.ts +0 -54
- package/studio/server/introspect/revision.ts +0 -49
- package/studio/server/introspect/runtime.test.ts +0 -157
- package/studio/server/introspect/runtime.ts +0 -140
- package/studio/server/introspect/schema-ir-json.test.ts +0 -70
- package/studio/server/introspect/schema-ir-json.ts +0 -151
- package/studio/server/introspect/schema-refs.test.ts +0 -55
- package/studio/server/introspect/schema-refs.ts +0 -32
- package/studio/server/introspect/source-overlay/annotations.ts +0 -14
- package/studio/server/introspect/source-overlay/handlers.ts +0 -161
- package/studio/server/introspect/source-overlay/kernel-calls.ts +0 -46
- package/studio/server/introspect/source-overlay/project.ts +0 -248
- package/studio/server/introspect/source-overlay/spans.ts +0 -330
- package/studio/server/json.ts +0 -46
- package/studio/server/lifecycle.ts +0 -42
- package/studio/server/sse.test.ts +0 -26
- package/studio/server/sse.ts +0 -60
- package/studio/server/state/baseline.test.ts +0 -267
- package/studio/server/state/baseline.ts +0 -354
- package/studio/server/state/comments.test.ts +0 -94
- package/studio/server/state/comments.ts +0 -484
- package/studio/server/state/context.ts +0 -199
- package/studio/server/state/documents.ts +0 -111
- package/studio/server/state/integrations.ts +0 -81
- package/studio/server/state/layout.test.ts +0 -34
- package/studio/server/state/layout.ts +0 -82
- package/studio/server/state/settings.test.ts +0 -78
- package/studio/server/state/settings.ts +0 -73
- package/studio/server/state/store.test.ts +0 -122
- package/studio/server/state/store.ts +0 -146
- package/studio/server/state/visibility.ts +0 -48
- package/studio/server/views/model.test.ts +0 -57
- package/studio/server/views/model.ts +0 -66
- package/studio/server/views/runtime.ts +0 -40
- package/studio/server/views/selection-repository.test.ts +0 -31
- package/studio/server/views/selection-repository.ts +0 -60
- package/studio/server/views/session.test.ts +0 -73
- package/studio/server/views/session.ts +0 -166
- package/studio/server/views/target.test.ts +0 -78
- package/studio/server/views/target.ts +0 -222
- package/studio/server/watch.test.ts +0 -36
- package/studio/server/watch.ts +0 -93
- package/studio/server/workspace/catalog.test.ts +0 -17
- package/studio/server/workspace/catalog.ts +0 -43
- package/studio/server/workspace/create.test.ts +0 -37
- package/studio/server/workspace/create.ts +0 -162
- package/studio/server/workspace/git.ts +0 -75
- package/studio/server/workspace/updates.ts +0 -83
- package/studio/server/workspace-state.ts +0 -26
- package/studio/server/workspace-watch.ts +0 -106
- package/studio/shared/agent-effort.test.ts +0 -12
- package/studio/shared/agent-effort.ts +0 -15
- package/studio/shared/agent-models.test.ts +0 -9
- package/studio/shared/agent-models.ts +0 -14
- package/studio/shared/contracts/README.md +0 -16
- package/studio/shared/contracts/agent.ts +0 -270
- package/studio/shared/contracts/runtime.ts +0 -50
- package/studio/shared/contracts/schema.ts +0 -393
- package/studio/shared/contracts/surface.test.ts +0 -317
- package/studio/shared/contracts/workspace.ts +0 -265
- package/studio/shared/layout.test.ts +0 -116
- package/studio/shared/schema/identity.test.ts +0 -34
- package/studio/shared/schema/identity.ts +0 -68
- package/studio/shared/settings-values.test.ts +0 -18
- package/studio/shared/settings-values.ts +0 -20
- package/studio/shared/types.ts +0 -14
- package/studio/tsconfig.json +0 -23
- package/tsconfig.json +0 -14
- package/viewer/dist/index.html +0 -93
- package/viewer/dist/main.js +0 -76
- package/viewer/tsconfig.json +0 -13
|
@@ -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'
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/** CLI-stable projection of one Admin Domain catalog record. */
|
|
2
|
-
export interface DomainInfo {
|
|
3
|
-
readonly id: string
|
|
4
|
-
readonly origin: string
|
|
5
|
-
readonly name: string
|
|
6
|
-
readonly url?: string
|
|
7
|
-
readonly description?: string
|
|
8
|
-
readonly installByDefault?: boolean
|
|
9
|
-
readonly createdAt: string
|
|
10
|
-
readonly updatedAt: string
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface PublishDomainInput {
|
|
14
|
-
readonly origin: string
|
|
15
|
-
readonly name: string
|
|
16
|
-
readonly url: string
|
|
17
|
-
readonly description?: string
|
|
18
|
-
readonly installByDefault?: boolean
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface PublishDomainResult {
|
|
22
|
-
readonly entry: DomainInfo
|
|
23
|
-
readonly changed: boolean
|
|
24
|
-
readonly isNew: boolean
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface InstallDomainResult {
|
|
28
|
-
readonly name: string
|
|
29
|
-
readonly origin: string
|
|
30
|
-
readonly instanceId: string
|
|
31
|
-
readonly url: string
|
|
32
|
-
readonly ok: boolean
|
|
33
|
-
readonly error?: string | null
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export class AdminDomainNotFoundError extends AstraleError {
|
|
37
|
-
constructor(readonly identifier: string) {
|
|
38
|
-
super('DOMAIN_NOT_FOUND', `No visible Admin Domain matches ${JSON.stringify(identifier)}.`)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
import { AstraleError } from '../../errors'
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { GraphApi } from '@astrale-os/sdk/client'
|
|
2
|
-
import type { Node } from '@astrale-os/sdk/graph/node'
|
|
3
|
-
import type { QueryAST } from '@astrale-os/sdk/query'
|
|
4
|
-
|
|
5
|
-
/** Smallest Kernel graph capability needed by bounded Admin graph reads. */
|
|
6
|
-
export type AdminGraphQueryApi = Pick<GraphApi, 'query'>
|
|
7
|
-
|
|
8
|
-
/** Caller-scoped graph reads shared by the Admin catalog and Instance journeys. */
|
|
9
|
-
export type AdminGraphApi = Pick<GraphApi, 'query' | 'neighbors'>
|
|
10
|
-
|
|
11
|
-
export interface ReadAllNodesOptions {
|
|
12
|
-
readonly label: string
|
|
13
|
-
readonly maximum: number
|
|
14
|
-
readonly maximumPages: number
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/** Collect one bounded Node selection and reject projection, cursor, or identity anomalies. */
|
|
18
|
-
export function readAllNodes(
|
|
19
|
-
graph: AdminGraphQueryApi,
|
|
20
|
-
ast: QueryAST,
|
|
21
|
-
options: ReadAllNodesOptions,
|
|
22
|
-
): Promise<readonly Node[]>
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
# Admin Graph inventory helper
|
|
2
|
-
|
|
3
|
-
This internal helper consumes only public `GraphApi.query` pages. It requires a Node selection,
|
|
4
|
-
enforces explicit Node and page bounds, rejects repeated cursors and Node identities, and returns a
|
|
5
|
-
frozen inventory. It owns no Admin schema meaning and performs no mutation or invocation.
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#0891b2" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
-
<circle cx="5" cy="12" r="2"/><circle cx="12" cy="6" r="2"/><circle cx="19" cy="12" r="2"/><circle cx="12" cy="18" r="2"/><path d="m7 11 3.5-3.5M13.5 7.5 17 11M17 13l-3.5 3.5M10.5 16.5 7 13"/>
|
|
3
|
-
</svg>
|
package/src/admin/graph/index.ts
DELETED
package/src/admin/graph/nodes.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { GraphApi } from '@astrale-os/sdk/client'
|
|
2
|
-
import type { Node } from '@astrale-os/sdk/graph/node'
|
|
3
|
-
import type { QueryAST } from '@astrale-os/sdk/query'
|
|
4
|
-
|
|
5
|
-
export type AdminGraphQueryApi = Pick<GraphApi, 'query'>
|
|
6
|
-
export type AdminGraphApi = Pick<GraphApi, 'query' | 'neighbors'>
|
|
7
|
-
|
|
8
|
-
export interface ReadAllNodesOptions {
|
|
9
|
-
readonly label: string
|
|
10
|
-
readonly maximum: number
|
|
11
|
-
readonly maximumPages: number
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/** Collect one explicitly bounded Node-value projection without hiding cursors. */
|
|
15
|
-
export async function readAllNodes(
|
|
16
|
-
graph: AdminGraphQueryApi,
|
|
17
|
-
ast: QueryAST,
|
|
18
|
-
options: ReadAllNodesOptions,
|
|
19
|
-
): Promise<readonly Node[]> {
|
|
20
|
-
const nodes: Node[] = []
|
|
21
|
-
const ids = new Set<string>()
|
|
22
|
-
const cursors = new Set<string>()
|
|
23
|
-
let cursor: string | undefined
|
|
24
|
-
let pages = 0
|
|
25
|
-
const pageSize = Math.min(options.maximum, 256)
|
|
26
|
-
do {
|
|
27
|
-
pages += 1
|
|
28
|
-
if (pages > options.maximumPages) {
|
|
29
|
-
throw new TypeError(`${options.label} exceeded its page bound.`)
|
|
30
|
-
}
|
|
31
|
-
const response = await graph.query(ast, {
|
|
32
|
-
page: { size: pageSize, ...(cursor === undefined ? {} : { after: cursor }) },
|
|
33
|
-
})
|
|
34
|
-
const result = response.result
|
|
35
|
-
if (result.kind !== 'nodes')
|
|
36
|
-
throw new TypeError(`${options.label} returned the wrong projection.`)
|
|
37
|
-
for (const projection of result.nodes) {
|
|
38
|
-
if (projection.kind !== 'value') {
|
|
39
|
-
throw new TypeError(`${options.label} omitted requested Node values.`)
|
|
40
|
-
}
|
|
41
|
-
const node = projection.value
|
|
42
|
-
if (ids.has(String(node.id))) throw new TypeError(`${options.label} repeated a Node.`)
|
|
43
|
-
ids.add(String(node.id))
|
|
44
|
-
nodes.push(node)
|
|
45
|
-
}
|
|
46
|
-
if (nodes.length > options.maximum) {
|
|
47
|
-
throw new TypeError(`${options.label} exceeded its Node bound.`)
|
|
48
|
-
}
|
|
49
|
-
cursor = response.page.next
|
|
50
|
-
if (cursor !== undefined && cursors.has(cursor)) {
|
|
51
|
-
throw new TypeError(`${options.label} repeated a cursor.`)
|
|
52
|
-
}
|
|
53
|
-
if (cursor !== undefined) cursors.add(cursor)
|
|
54
|
-
} while (cursor !== undefined)
|
|
55
|
-
return Object.freeze(nodes)
|
|
56
|
-
}
|
package/src/admin/index.ts
DELETED
|
@@ -1,66 +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 type InstanceState = 'provisioning' | 'ready' | 'deleting' | 'failed' | 'deleted'
|
|
7
|
-
|
|
8
|
-
export interface InstanceInfo {
|
|
9
|
-
readonly id: string
|
|
10
|
-
readonly slug: string
|
|
11
|
-
readonly url: string
|
|
12
|
-
readonly hostId?: string
|
|
13
|
-
readonly region?: string
|
|
14
|
-
readonly state?: InstanceState
|
|
15
|
-
readonly phase?: string
|
|
16
|
-
readonly error?: string | null
|
|
17
|
-
readonly createdAt?: string
|
|
18
|
-
readonly organizationId?: string
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface OwnedInstanceInfo extends InstanceInfo {
|
|
22
|
-
readonly state: InstanceState
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface DomainInstallReceipt {
|
|
26
|
-
readonly domain: string
|
|
27
|
-
readonly instance: string
|
|
28
|
-
readonly origin: string
|
|
29
|
-
readonly ok: boolean
|
|
30
|
-
readonly installedRevision?: string
|
|
31
|
-
readonly error?: string
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface AdminInstanceContext {
|
|
35
|
-
readonly session: ClientSession
|
|
36
|
-
readonly graph: AdminGraphApi
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export interface AdminInstanceApi {
|
|
40
|
-
list(): Promise<OwnedInstanceInfo[]>
|
|
41
|
-
create(slug: string, hostId?: string): Promise<InstanceInfo>
|
|
42
|
-
status(identifier: string): Promise<InstanceInfo>
|
|
43
|
-
delete(identifier: string): Promise<InstanceInfo>
|
|
44
|
-
installDomain(identifier: string, domain: string): Promise<DomainInstallReceipt>
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export class AdminInstanceNotFoundError extends Error {
|
|
48
|
-
constructor(identifier: string)
|
|
49
|
-
readonly name: 'NotFoundError'
|
|
50
|
-
readonly identifier: string
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface AdminInstanceDependencies {
|
|
54
|
-
readonly bind?: (session: ClientSession) => Promise<DomainBinding>
|
|
55
|
-
readonly operationId?: (kind: 'create' | 'status' | 'delete' | 'install-domain') => string
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export function connectAdminInstances(
|
|
59
|
-
context: AdminInstanceContext,
|
|
60
|
-
dependencies?: AdminInstanceDependencies,
|
|
61
|
-
): Promise<AdminInstanceApi>
|
|
62
|
-
export function findOwnedInstance(
|
|
63
|
-
instances: readonly OwnedInstanceInfo[],
|
|
64
|
-
identifier: string,
|
|
65
|
-
): OwnedInstanceInfo | undefined
|
|
66
|
-
export function formatInstanceLocation(info: InstanceInfo): string
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# CLI Admin Instance adapter
|
|
2
|
-
|
|
3
|
-
The adapter discovers and binds the configured Admin Domain, proves its origin, and resolves the
|
|
4
|
-
singleton Fleet receiver. Policy-visible `Instance` and `Host` Nodes come from bounded Graph queries;
|
|
5
|
-
Host location is joined through `instance_runs_on_host`.
|
|
6
|
-
|
|
7
|
-
Automatic creation invokes `Fleet.createInstance`; explicit `--host-id` resolves one visible,
|
|
8
|
-
non-reserved Host and invokes `Host.createInstance`. Status, deletion, and Domain installation
|
|
9
|
-
invoke the exact Instance receiver. The adapter creates internal operation IDs but preserves the
|
|
10
|
-
existing CLI projection and selection-required experience.
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#2563eb" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
-
<rect x="4" y="4" width="16" height="16" rx="3"/><path d="M8 9h8M8 13h8M8 17h5"/><circle cx="17" cy="17" r="1" fill="#2563eb"/>
|
|
3
|
-
</svg>
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from 'bun:test'
|
|
2
|
-
|
|
3
|
-
import { adminBinding, adminSession } from '../../__tests__/fixture'
|
|
4
|
-
import { connectAdminInstances } from '../client'
|
|
5
|
-
|
|
6
|
-
function fixture(input: {
|
|
7
|
-
invoke?: (method: { owner: string; name: string }, receiver: unknown, input: unknown) => unknown
|
|
8
|
-
}) {
|
|
9
|
-
const calls: Array<{
|
|
10
|
-
method: { owner: string; name: string }
|
|
11
|
-
receiver: string
|
|
12
|
-
value: unknown
|
|
13
|
-
}> = []
|
|
14
|
-
const remote = adminSession((method, receiver, value) => {
|
|
15
|
-
calls.push({ method, receiver: String(receiver), value })
|
|
16
|
-
return input.invoke?.(method, receiver, value)
|
|
17
|
-
})
|
|
18
|
-
const binding = adminBinding()
|
|
19
|
-
return {
|
|
20
|
-
binding,
|
|
21
|
-
invoke: remote.invoke,
|
|
22
|
-
calls,
|
|
23
|
-
connect: () =>
|
|
24
|
-
connectAdminInstances(
|
|
25
|
-
{ session: remote.session },
|
|
26
|
-
{
|
|
27
|
-
bind: async () => binding,
|
|
28
|
-
operationId: (kind) => `cli.instance.${kind}:test`,
|
|
29
|
-
},
|
|
30
|
-
),
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
describe('V2 Admin Instance adapter', () => {
|
|
35
|
-
test('lists caller-visible Instances through the Admin-owned Fleet operation', async () => {
|
|
36
|
-
const contract = fixture({
|
|
37
|
-
invoke: (method) =>
|
|
38
|
-
method.name === 'listInstances'
|
|
39
|
-
? [
|
|
40
|
-
{
|
|
41
|
-
id: '@instance-node',
|
|
42
|
-
slug: 'demo',
|
|
43
|
-
url: 'https://demo.eu.astrale.ai',
|
|
44
|
-
state: 'ready',
|
|
45
|
-
createdAt: '2026-08-12T00:00:00.000Z',
|
|
46
|
-
updatedAt: '2026-08-12T00:00:00.000Z',
|
|
47
|
-
},
|
|
48
|
-
]
|
|
49
|
-
: undefined,
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
await expect((await contract.connect()).list()).resolves.toEqual([
|
|
53
|
-
{
|
|
54
|
-
id: '@instance-node',
|
|
55
|
-
slug: 'demo',
|
|
56
|
-
url: 'https://demo.eu.astrale.ai',
|
|
57
|
-
state: 'ready',
|
|
58
|
-
createdAt: '2026-08-12T00:00:00.000Z',
|
|
59
|
-
},
|
|
60
|
-
])
|
|
61
|
-
expect(contract.calls).toEqual([
|
|
62
|
-
{
|
|
63
|
-
method: { owner: 'Fleet', name: 'listInstances' },
|
|
64
|
-
receiver: '/:admin.astrale.ai:core.fleet::listInstances',
|
|
65
|
-
value: {},
|
|
66
|
-
},
|
|
67
|
-
])
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
test('delegates default placement to Fleet without reading Host inventory', async () => {
|
|
71
|
-
const created = {
|
|
72
|
-
id: '@instance-node',
|
|
73
|
-
slug: 'demo',
|
|
74
|
-
url: 'https://demo.eu.astrale.ai',
|
|
75
|
-
state: 'ready',
|
|
76
|
-
createdAt: '2026-08-12T00:00:00.000Z',
|
|
77
|
-
updatedAt: '2026-08-12T00:00:00.000Z',
|
|
78
|
-
}
|
|
79
|
-
const contract = fixture({ invoke: () => created })
|
|
80
|
-
|
|
81
|
-
await expect((await contract.connect()).create('demo')).resolves.toMatchObject({
|
|
82
|
-
id: created.id,
|
|
83
|
-
slug: created.slug,
|
|
84
|
-
url: created.url,
|
|
85
|
-
state: created.state,
|
|
86
|
-
createdAt: created.createdAt,
|
|
87
|
-
})
|
|
88
|
-
expect(contract.calls).toEqual([
|
|
89
|
-
{
|
|
90
|
-
method: { owner: 'Fleet', name: 'createInstance' },
|
|
91
|
-
receiver: '/:admin.astrale.ai:core.fleet::createInstance',
|
|
92
|
-
value: { operationId: 'cli.instance.create:test', slug: 'demo' },
|
|
93
|
-
},
|
|
94
|
-
])
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
test('refreshes and deletes through the resolved Instance receiver', async () => {
|
|
98
|
-
const contract = fixture({
|
|
99
|
-
invoke: (method) =>
|
|
100
|
-
method.name === 'listInstances'
|
|
101
|
-
? [
|
|
102
|
-
{
|
|
103
|
-
id: '@instance-node',
|
|
104
|
-
slug: 'demo',
|
|
105
|
-
url: 'https://demo.eu.astrale.ai',
|
|
106
|
-
state: 'ready',
|
|
107
|
-
createdAt: '2026-08-12T00:00:00.000Z',
|
|
108
|
-
updatedAt: '2026-08-12T00:00:00.000Z',
|
|
109
|
-
},
|
|
110
|
-
]
|
|
111
|
-
: {
|
|
112
|
-
id: '@instance-node',
|
|
113
|
-
slug: 'demo',
|
|
114
|
-
url: 'https://demo.eu.astrale.ai',
|
|
115
|
-
state: method.name === 'delete' ? 'deleted' : 'ready',
|
|
116
|
-
},
|
|
117
|
-
})
|
|
118
|
-
const api = await contract.connect()
|
|
119
|
-
|
|
120
|
-
await expect(api.status('demo')).resolves.toMatchObject({ state: 'ready' })
|
|
121
|
-
await expect(api.delete('@instance-node')).resolves.toMatchObject({ state: 'deleted' })
|
|
122
|
-
expect(contract.calls.map(({ method }) => method)).toEqual([
|
|
123
|
-
{ owner: 'Fleet', name: 'listInstances' },
|
|
124
|
-
{ owner: 'Instance', name: 'status' },
|
|
125
|
-
{ owner: 'Fleet', name: 'listInstances' },
|
|
126
|
-
{ owner: 'Instance', name: 'delete' },
|
|
127
|
-
])
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
test('installs a resolved catalog Domain through Instance.installDomain', async () => {
|
|
131
|
-
const contract = fixture({
|
|
132
|
-
invoke: (method) =>
|
|
133
|
-
method.name === 'listInstances'
|
|
134
|
-
? [
|
|
135
|
-
{
|
|
136
|
-
id: '@instance-node',
|
|
137
|
-
slug: 'demo',
|
|
138
|
-
url: 'https://demo.eu.astrale.ai',
|
|
139
|
-
state: 'ready',
|
|
140
|
-
createdAt: '2026-08-12T00:00:00.000Z',
|
|
141
|
-
updatedAt: '2026-08-12T00:00:00.000Z',
|
|
142
|
-
},
|
|
143
|
-
]
|
|
144
|
-
: {
|
|
145
|
-
domain: '@crm-domain',
|
|
146
|
-
instance: '@instance-node',
|
|
147
|
-
origin: 'crm.acme.dev',
|
|
148
|
-
ok: true,
|
|
149
|
-
installedRevision: `sha256:${'a'.repeat(64)}`,
|
|
150
|
-
},
|
|
151
|
-
})
|
|
152
|
-
const api = await contract.connect()
|
|
153
|
-
|
|
154
|
-
await expect(api.installDomain('demo', '@crm-domain')).resolves.toMatchObject({
|
|
155
|
-
domain: '@crm-domain',
|
|
156
|
-
instance: '@instance-node',
|
|
157
|
-
origin: 'crm.acme.dev',
|
|
158
|
-
ok: true,
|
|
159
|
-
})
|
|
160
|
-
expect(contract.calls.at(-1)).toEqual({
|
|
161
|
-
method: { owner: 'Instance', name: 'installDomain' },
|
|
162
|
-
receiver: '@instance-node::installDomain',
|
|
163
|
-
value: { operationId: 'cli.instance.install-domain:test', domain: '@crm-domain' },
|
|
164
|
-
})
|
|
165
|
-
})
|
|
166
|
-
})
|