@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.
- 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 -93172
- 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/instance/model.d.ts +0 -39
- package/dist/types/connect-core.d.ts +0 -22
- package/dist/types/connection/auth.d.ts +0 -36
- 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-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 -196
- 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/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 -266
- package/src/admin/instance/client.ts +0 -290
- package/src/admin/instance/index.ts +0 -16
- package/src/admin/instance/model.ts +0 -66
- package/src/admin/instance/tsconfig.json +0 -8
- package/src/commands/__tests__/admin-instance.test.ts +0 -88
- 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-create-hosts.test.ts +0 -29
- 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 -133
- 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 -69
- package/src/commands/instance/delete.ts +0 -68
- 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 -259
- 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 -119
- 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 -93
- package/src/connection/auth.ts +0 -236
- 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 -185
- 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 -133
- 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 -148
- package/src/lib/__tests__/instance-target.test.ts +0 -212
- 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 -50
- 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 -188
- package/src/lib/concurrency.ts +0 -31
- package/src/lib/config.ts +0 -46
- package/src/lib/domain-publication.ts +0 -102
- 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 -463
- 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 -162
- 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 -362
- 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 -239
- 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 -199
- 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-Di4OXGNH.js +0 -1
- package/studio/client/dist/assets/elk-worker.min-C9JGDOE-.js +0 -6312
- package/studio/client/dist/assets/index-BLm6J11H.js +0 -81
- 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-DTjvkOUX.js +0 -8
- 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,73 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk'
|
|
2
|
-
|
|
3
|
-
import type { CommandDefinition } from '../../program/index'
|
|
4
|
-
|
|
5
|
-
import { listOwnedInstances } from '../../lib/admin-instance'
|
|
6
|
-
import { findOwnedInstance } from '../../lib/admin-instance'
|
|
7
|
-
import { getActive, normalizeInstanceKernelUrl } from '../../lib/instance'
|
|
8
|
-
import { log } from '../../lib/log'
|
|
9
|
-
import { RAW_OUTPUT_OPTIONS, isMachine, output, type RawOutputOpts } from '../../lib/output'
|
|
10
|
-
|
|
11
|
-
export default {
|
|
12
|
-
name: 'active',
|
|
13
|
-
description: 'Show the currently active instance',
|
|
14
|
-
options: [...RAW_OUTPUT_OPTIONS],
|
|
15
|
-
action: async (opts: RawOutputOpts) => {
|
|
16
|
-
try {
|
|
17
|
-
const isRaw = isMachine(opts)
|
|
18
|
-
const active = await resolveActiveForDisplay()
|
|
19
|
-
const { name } = active
|
|
20
|
-
const url = active.url ?? null
|
|
21
|
-
const createdAt = active.createdAt ?? null
|
|
22
|
-
const issuer = active.issuer ?? null
|
|
23
|
-
const defaultIdentity = active.defaultIdentity ?? null
|
|
24
|
-
const caFile = active.caFile ?? null
|
|
25
|
-
|
|
26
|
-
if (isRaw) {
|
|
27
|
-
output({ name, url, issuer, defaultIdentity, caFile, createdAt }, opts)
|
|
28
|
-
return
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
console.log(`${chalk.bold(name)} (${url ?? 'local'})`)
|
|
32
|
-
if (issuer && issuer !== url) log.dim(` issuer: ${issuer}`)
|
|
33
|
-
if (defaultIdentity) log.dim(` identity: ${defaultIdentity}`)
|
|
34
|
-
if (caFile) log.dim(` ca: ${caFile}`)
|
|
35
|
-
} catch (e) {
|
|
36
|
-
log.error(e instanceof Error ? e.message : String(e))
|
|
37
|
-
process.exit(1)
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
} satisfies CommandDefinition
|
|
41
|
-
|
|
42
|
-
async function resolveActiveForDisplay(): Promise<{
|
|
43
|
-
name: string
|
|
44
|
-
url?: string
|
|
45
|
-
issuer?: string
|
|
46
|
-
defaultIdentity?: string
|
|
47
|
-
caFile?: string
|
|
48
|
-
createdAt?: string
|
|
49
|
-
}> {
|
|
50
|
-
const active = await getActive()
|
|
51
|
-
if (active.url) {
|
|
52
|
-
return {
|
|
53
|
-
name: active.name,
|
|
54
|
-
url: active.url,
|
|
55
|
-
issuer: active.issuer,
|
|
56
|
-
defaultIdentity: active.defaultIdentity,
|
|
57
|
-
caFile: active.caFile,
|
|
58
|
-
createdAt: active.createdAt,
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
try {
|
|
63
|
-
const managed = findOwnedInstance(await listOwnedInstances({}), active.name)
|
|
64
|
-
if (!managed) return { name: active.name }
|
|
65
|
-
return {
|
|
66
|
-
name: managed.slug,
|
|
67
|
-
url: normalizeInstanceKernelUrl(managed.url),
|
|
68
|
-
createdAt: managed.createdAt,
|
|
69
|
-
}
|
|
70
|
-
} catch {
|
|
71
|
-
return { name: active.name }
|
|
72
|
-
}
|
|
73
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import type { CommandDefinition } from '../../program/index'
|
|
2
|
-
|
|
3
|
-
import { fetchWithCaFile } from '../../lib/ca-fetch'
|
|
4
|
-
import {
|
|
5
|
-
findBookmarkTrustConflicts,
|
|
6
|
-
normalizeInstanceKernelUrl,
|
|
7
|
-
readInstances,
|
|
8
|
-
setActive,
|
|
9
|
-
upsertInstance,
|
|
10
|
-
} from '../../lib/instance'
|
|
11
|
-
import { fatal, log } from '../../lib/log'
|
|
12
|
-
import { checkIssuerReachability } from '../../lib/meta'
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
name: 'bookmark',
|
|
16
|
-
description: 'Register a reference to an existing remote instance',
|
|
17
|
-
arguments: [{ name: 'name', description: 'Bookmark name (free, required)', required: true }],
|
|
18
|
-
options: [
|
|
19
|
-
{ flags: '--url <url>', description: 'URL of the remote instance (required)' },
|
|
20
|
-
{ flags: '--issuer <url>', description: 'Kernel issuer/audience if different from URL' },
|
|
21
|
-
{
|
|
22
|
-
flags: '--domain-issuer <url>',
|
|
23
|
-
description: 'Product Domain issuer for standard token exchange',
|
|
24
|
-
},
|
|
25
|
-
{ flags: '--ca <path>', description: 'CA certificate file to trust for this bookmark' },
|
|
26
|
-
{
|
|
27
|
-
flags: '--as <identity>',
|
|
28
|
-
description: 'Default identity for this bookmark',
|
|
29
|
-
},
|
|
30
|
-
{ flags: '--use', description: 'Set as active instance after bookmarking' },
|
|
31
|
-
{ flags: '--skip-probe', description: 'Skip the OIDC + JWKS liveness probe (still recorded)' },
|
|
32
|
-
],
|
|
33
|
-
action: async (
|
|
34
|
-
name: string,
|
|
35
|
-
opts: {
|
|
36
|
-
url?: string
|
|
37
|
-
issuer?: string
|
|
38
|
-
domainIssuer?: string
|
|
39
|
-
ca?: string
|
|
40
|
-
as?: string
|
|
41
|
-
use?: boolean
|
|
42
|
-
skipProbe?: boolean
|
|
43
|
-
},
|
|
44
|
-
) => {
|
|
45
|
-
try {
|
|
46
|
-
if (!opts.url) fatal(new Error('Missing required flag: --url <url>'))
|
|
47
|
-
const url = normalizeInstanceKernelUrl(opts.url)
|
|
48
|
-
const store = await readInstances()
|
|
49
|
-
const expectedIssuer = opts.issuer
|
|
50
|
-
? normalizeInstanceKernelUrl(opts.issuer)
|
|
51
|
-
: store.instances[name]?.issuer
|
|
52
|
-
const effectiveCa = opts.ca ?? store.instances[name]?.caFile
|
|
53
|
-
const trustConflicts = findBookmarkTrustConflicts(store, name, url, effectiveCa)
|
|
54
|
-
if (trustConflicts.length > 0) {
|
|
55
|
-
log.warn(
|
|
56
|
-
`TLS trust differs for the same Kernel URL ${url}: ` +
|
|
57
|
-
`"${name}" uses ${describeCa(effectiveCa)}, while ${trustConflicts
|
|
58
|
-
.map((conflict) => `"${conflict.name}" uses ${describeCa(conflict.caFile)}`)
|
|
59
|
-
.join(', ')}. Remove or update stale bookmarks to avoid certificate surprises.`,
|
|
60
|
-
)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (!opts.skipProbe) {
|
|
64
|
-
try {
|
|
65
|
-
const { issuer, keys } = await checkIssuerReachability(
|
|
66
|
-
url,
|
|
67
|
-
expectedIssuer,
|
|
68
|
-
effectiveCa ? fetchWithCaFile(effectiveCa) : undefined,
|
|
69
|
-
)
|
|
70
|
-
log.dim(` iss=${issuer} keys=${keys.length}`)
|
|
71
|
-
} catch (e) {
|
|
72
|
-
log.dim(' (re-run with --skip-probe to bookmark anyway.)')
|
|
73
|
-
fatal(e)
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const { entry, created } = await upsertInstance(name, {
|
|
78
|
-
url,
|
|
79
|
-
issuer: expectedIssuer,
|
|
80
|
-
domainIssuer: opts.domainIssuer,
|
|
81
|
-
caFile: opts.ca,
|
|
82
|
-
name,
|
|
83
|
-
kind: 'bookmark',
|
|
84
|
-
mode: 'remote',
|
|
85
|
-
defaultIdentity: opts.as,
|
|
86
|
-
})
|
|
87
|
-
log.success(`${created ? 'Bookmarked' : 'Updated bookmark'} "${name}" → ${entry.url}`)
|
|
88
|
-
if (opts.as) log.dim(` default identity: ${opts.as}`)
|
|
89
|
-
if (opts.use) {
|
|
90
|
-
await setActive(name)
|
|
91
|
-
log.success(`Active instance: ${name}`)
|
|
92
|
-
}
|
|
93
|
-
} catch (e) {
|
|
94
|
-
fatal(e)
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
} satisfies CommandDefinition
|
|
98
|
-
|
|
99
|
-
function describeCa(caFile: string | null | undefined): string {
|
|
100
|
-
return caFile ? `CA ${caFile}` : 'the system trust store'
|
|
101
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import type { CommandDefinition } from '../../program/index'
|
|
2
|
-
|
|
3
|
-
import { ADMIN_TARGET_OPTIONS } from '../../lib/admin-target'
|
|
4
|
-
import { fatal } from '../../lib/log'
|
|
5
|
-
import { isMachine, output } from '../../lib/output'
|
|
6
|
-
import { promptText } from '../../lib/prompt'
|
|
7
|
-
import { provisionInstance, type ProvisionOpts } from '../../lib/provision-instance'
|
|
8
|
-
import { validateSlug } from '../../lib/validation'
|
|
9
|
-
|
|
10
|
-
// Re-exported for tests + `astrale setup`, which share the provisioning saga.
|
|
11
|
-
export { assertAlphaCreateIdentity, parseEligibleHostIds } from '../../lib/provision-instance'
|
|
12
|
-
|
|
13
|
-
/** inquirer `validate` for a slug: true when valid, else the human message. */
|
|
14
|
-
function slugError(value: string): true | string {
|
|
15
|
-
try {
|
|
16
|
-
validateSlug(value)
|
|
17
|
-
return true
|
|
18
|
-
} catch (e) {
|
|
19
|
-
return e instanceof Error ? e.message : 'Invalid slug'
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default {
|
|
24
|
-
name: 'create',
|
|
25
|
-
description: 'Provision an alpha instance through the admin kernel (Instance.alphaCreate)',
|
|
26
|
-
afterHelpText: `
|
|
27
|
-
Behavior:
|
|
28
|
-
Calls Instance.alphaCreate on the configured admin kernel. The caller must be
|
|
29
|
-
logged in with WorkOS. When --host-id is omitted, the admin kernel chooses the
|
|
30
|
-
caller's single eligible host. The new instance becomes the active instance.
|
|
31
|
-
|
|
32
|
-
Run with no slug in a terminal and it prompts for one (validated live). With
|
|
33
|
-
no TTY — or --ci / --no-prompt — the slug argument is required up front, so
|
|
34
|
-
piped / CI / agent runs fail fast instead of waiting on input.
|
|
35
|
-
|
|
36
|
-
Examples:
|
|
37
|
-
$ astrale auth login
|
|
38
|
-
$ astrale instance create demo
|
|
39
|
-
`,
|
|
40
|
-
arguments: [{ name: 'id', description: 'Instance slug', required: false }],
|
|
41
|
-
options: [
|
|
42
|
-
...ADMIN_TARGET_OPTIONS,
|
|
43
|
-
{
|
|
44
|
-
flags: '--host-id <id>',
|
|
45
|
-
description: 'Advanced: host node id to provision on when multiple hosts are available',
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
action: async (id: string | undefined, opts: ProvisionOpts) => {
|
|
49
|
-
try {
|
|
50
|
-
// Interactive (TTY only): prompt for the slug when omitted, with live
|
|
51
|
-
// validation. No TTY / --ci / --no-prompt / CI → the slug arg is required
|
|
52
|
-
// (fail fast, never hang a piped / agent / LLM run).
|
|
53
|
-
const interactive = !!process.stdin.isTTY && !(opts.ci || opts.noPrompt || process.env.CI)
|
|
54
|
-
if (!id && interactive) id = await promptText('Instance slug', { validate: slugError })
|
|
55
|
-
if (!id) {
|
|
56
|
-
throw new Error('`instance create` needs a slug, e.g. `astrale instance create demo`.')
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const { created } = await provisionInstance(id, opts)
|
|
60
|
-
|
|
61
|
-
if (isMachine(opts)) {
|
|
62
|
-
output(created, opts)
|
|
63
|
-
return
|
|
64
|
-
}
|
|
65
|
-
} catch (e) {
|
|
66
|
-
fatal(e, opts)
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
} satisfies CommandDefinition
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import type { KernelCommandOpts } from '../../connection'
|
|
2
|
-
import type { CommandDefinition } from '../../program/index'
|
|
3
|
-
|
|
4
|
-
import { AdminInstanceNotFoundError } from '../../admin/instance'
|
|
5
|
-
import { deleteOwnedInstance } from '../../lib/admin-instance'
|
|
6
|
-
import { ADMIN_TARGET_OPTIONS, type AdminTargetCommandOpts } from '../../lib/admin-target'
|
|
7
|
-
import { clearActive, readInstances, removeInstance, resolveInstanceKey } from '../../lib/instance'
|
|
8
|
-
import { fatal, log, withSpinner } from '../../lib/log'
|
|
9
|
-
import { isMachine, output } from '../../lib/output'
|
|
10
|
-
|
|
11
|
-
type DeleteOpts = KernelCommandOpts &
|
|
12
|
-
AdminTargetCommandOpts & {
|
|
13
|
-
keepBookmark?: boolean
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export default {
|
|
17
|
-
name: 'delete',
|
|
18
|
-
description: 'Delete an admin-managed instance through the admin kernel',
|
|
19
|
-
afterHelpText: `
|
|
20
|
-
Behavior:
|
|
21
|
-
Calls Instance.delete on the configured admin kernel: best-effort decommission
|
|
22
|
-
of the instance's routing-registry entry + WorkOS org (frees the slug), then
|
|
23
|
-
removes the Instance record. The host kernel itself is NOT deregistered (the
|
|
24
|
-
deprovisioning saga is a follow-up). A same-name local bookmark is removed
|
|
25
|
-
after the delete succeeds unless --keep-bookmark is passed.
|
|
26
|
-
`,
|
|
27
|
-
arguments: [{ name: 'id', description: 'Instance slug', required: true }],
|
|
28
|
-
options: [
|
|
29
|
-
...ADMIN_TARGET_OPTIONS,
|
|
30
|
-
{ flags: '--keep-bookmark', description: 'Do not remove a same-name local bookmark' },
|
|
31
|
-
],
|
|
32
|
-
action: async (id: string, opts: DeleteOpts) => {
|
|
33
|
-
// Teardown walks services + deprovisions — same saga-sized budget as create.
|
|
34
|
-
opts = { ...opts, timeout: opts.timeout ?? '240000' }
|
|
35
|
-
try {
|
|
36
|
-
const result = await withSpinner(
|
|
37
|
-
`Deleting instance ${id}`,
|
|
38
|
-
!isMachine(opts),
|
|
39
|
-
() => deleteOwnedInstance(opts, id),
|
|
40
|
-
{ success: (deleted) => `Deleted instance: ${deleted.slug}` },
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
if (!opts.keepBookmark) {
|
|
44
|
-
const store = await readInstances()
|
|
45
|
-
const key = resolveInstanceKey(store, id)
|
|
46
|
-
if (key) await removeInstance(key)
|
|
47
|
-
}
|
|
48
|
-
await clearActive(id)
|
|
49
|
-
|
|
50
|
-
if (isMachine(opts)) {
|
|
51
|
-
output(result, opts)
|
|
52
|
-
return
|
|
53
|
-
}
|
|
54
|
-
} catch (e) {
|
|
55
|
-
// Bookmark-only id → no admin Instance → kernel NOT_FOUND. Point to
|
|
56
|
-
// `forget` (local drop) instead of surfacing the raw path error.
|
|
57
|
-
if (
|
|
58
|
-
e instanceof AdminInstanceNotFoundError &&
|
|
59
|
-
resolveInstanceKey(await readInstances(), id)
|
|
60
|
-
) {
|
|
61
|
-
log.error(`No admin-managed instance "${id}".`)
|
|
62
|
-
log.dim(` hint: it's a local bookmark — drop it with: astrale instance forget ${id}`)
|
|
63
|
-
process.exit(1)
|
|
64
|
-
}
|
|
65
|
-
fatal(e, opts)
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
} satisfies CommandDefinition
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { CommandDefinition } from '../../program/index'
|
|
2
|
-
|
|
3
|
-
import { readInstances, removeInstance, resolveInstanceKey } from '../../lib/instance'
|
|
4
|
-
import { fatal, log } from '../../lib/log'
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
name: 'forget',
|
|
8
|
-
description: 'Drop a bookmark reference (never destructive kernel-side)',
|
|
9
|
-
afterHelpText: `
|
|
10
|
-
Behavior:
|
|
11
|
-
Drops a bookmark reference only — never touches the remote kernel.
|
|
12
|
-
To destructively remove an admin-managed instance use \`astrale instance delete\`.
|
|
13
|
-
`,
|
|
14
|
-
arguments: [{ name: 'name', description: 'Bookmark name (slug or name)', required: true }],
|
|
15
|
-
action: async (name: string) => {
|
|
16
|
-
try {
|
|
17
|
-
const store = await readInstances()
|
|
18
|
-
const key = resolveInstanceKey(store, name)
|
|
19
|
-
if (!key) fatal(new Error(`Instance "${name}" not found`))
|
|
20
|
-
await removeInstance(key!)
|
|
21
|
-
log.success(`Forgot bookmark "${name}" (no kernel-side change)`)
|
|
22
|
-
} catch (e) {
|
|
23
|
-
fatal(e)
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
} satisfies CommandDefinition
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk'
|
|
2
|
-
|
|
3
|
-
import type { KernelCommandOpts } from '../../connection'
|
|
4
|
-
import type { Column } from '../../lib/output'
|
|
5
|
-
import type { CommandDefinition } from '../../program/index'
|
|
6
|
-
|
|
7
|
-
import { AstraleError } from '../../errors'
|
|
8
|
-
import { listOwnedInstances } from '../../lib/admin-instance'
|
|
9
|
-
import {
|
|
10
|
-
formatInstanceLocation,
|
|
11
|
-
type InstanceInfo,
|
|
12
|
-
type OwnedInstanceInfo,
|
|
13
|
-
} from '../../lib/admin-instance'
|
|
14
|
-
import { ADMIN_TARGET_OPTIONS, type AdminTargetCommandOpts } from '../../lib/admin-target'
|
|
15
|
-
import { normalizeInstanceKernelUrl, readInstances } from '../../lib/instance'
|
|
16
|
-
import { fatal, log, withSpinner } from '../../lib/log'
|
|
17
|
-
import { isMachine, output, type RawOutputOpts } from '../../lib/output'
|
|
18
|
-
import { renderTable } from '../../lib/table'
|
|
19
|
-
|
|
20
|
-
type ListOpts = KernelCommandOpts &
|
|
21
|
-
AdminTargetCommandOpts &
|
|
22
|
-
RawOutputOpts & {
|
|
23
|
-
bookmarked?: boolean
|
|
24
|
-
adminOnly?: boolean
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type Bookmark = {
|
|
28
|
-
name: string
|
|
29
|
-
url: string | null
|
|
30
|
-
issuer: string | null
|
|
31
|
-
active: boolean
|
|
32
|
-
defaultIdentity: string | null
|
|
33
|
-
caFile: string | null
|
|
34
|
-
createdAt: string | null
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const COLUMNS: Column[] = [
|
|
38
|
-
{ key: 'name', header: 'NAME', color: chalk.bold },
|
|
39
|
-
{ key: 'kind', header: 'KIND', color: chalk.dim },
|
|
40
|
-
{ key: 'url', header: 'URL', color: chalk.dim },
|
|
41
|
-
{ key: 'extra', header: '', color: chalk.dim },
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
export default {
|
|
45
|
-
name: 'list',
|
|
46
|
-
description: 'List admin-managed instances and local bookmarks',
|
|
47
|
-
options: [
|
|
48
|
-
...ADMIN_TARGET_OPTIONS,
|
|
49
|
-
{ flags: '--bookmarked', description: 'Only show locally bookmarked kernel connections' },
|
|
50
|
-
{ flags: '--admin-only', description: 'Only show instances returned by the admin kernel' },
|
|
51
|
-
],
|
|
52
|
-
action: async (opts: ListOpts) => {
|
|
53
|
-
try {
|
|
54
|
-
const store = await readInstances()
|
|
55
|
-
const bookmarks: Bookmark[] = Object.entries(store.instances).map(([name, entry]) => ({
|
|
56
|
-
name,
|
|
57
|
-
url: entry.url ?? null,
|
|
58
|
-
issuer: entry.issuer ?? null,
|
|
59
|
-
active: name === store.active,
|
|
60
|
-
defaultIdentity: entry.defaultIdentity ?? null,
|
|
61
|
-
caFile: entry.caFile ?? null,
|
|
62
|
-
createdAt: entry.createdAt ?? null,
|
|
63
|
-
}))
|
|
64
|
-
|
|
65
|
-
let managed: OwnedInstanceInfo[] = []
|
|
66
|
-
if (!opts.bookmarked) {
|
|
67
|
-
try {
|
|
68
|
-
managed = await withSpinner('Fetching instances', !isMachine(opts), () =>
|
|
69
|
-
listOwnedInstances(opts),
|
|
70
|
-
)
|
|
71
|
-
} catch (error) {
|
|
72
|
-
throw adminInventoryUnavailable(error)
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (isMachine(opts)) {
|
|
76
|
-
output(
|
|
77
|
-
{
|
|
78
|
-
active: store.active || null,
|
|
79
|
-
...(opts.adminOnly ? {} : { bookmarks }),
|
|
80
|
-
...(opts.bookmarked ? {} : { instances: managed }),
|
|
81
|
-
},
|
|
82
|
-
opts,
|
|
83
|
-
)
|
|
84
|
-
return
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const rows = buildInstanceRows(managed, bookmarks, {
|
|
88
|
-
managed: !opts.bookmarked,
|
|
89
|
-
bookmarks: !opts.adminOnly,
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
if (rows.length === 0) {
|
|
93
|
-
log.dim(' No instances. Run: astrale instance bookmark <name> --url <url>')
|
|
94
|
-
return
|
|
95
|
-
}
|
|
96
|
-
process.stdout.write(renderTable(rows, { columns: COLUMNS }) + '\n')
|
|
97
|
-
} catch (e) {
|
|
98
|
-
fatal(e, opts)
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
} satisfies CommandDefinition
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* One row per instance. A bookmark that points at a managed instance (same
|
|
105
|
-
* name and same kernel URL) merges into the managed row — carrying the active
|
|
106
|
-
* marker — instead of listing the instance twice.
|
|
107
|
-
*/
|
|
108
|
-
export function buildInstanceRows(
|
|
109
|
-
managed: InstanceInfo[],
|
|
110
|
-
bookmarks: Bookmark[],
|
|
111
|
-
show: { managed: boolean; bookmarks: boolean },
|
|
112
|
-
): Array<Record<string, string>> {
|
|
113
|
-
const rows: Array<Record<string, string>> = []
|
|
114
|
-
const merged = new Set<string>()
|
|
115
|
-
|
|
116
|
-
const bookmarkByName = new Map<string, Bookmark & { url: string }>()
|
|
117
|
-
if (show.managed && show.bookmarks) {
|
|
118
|
-
for (const bookmark of bookmarks) {
|
|
119
|
-
if (bookmark.url === null) continue
|
|
120
|
-
bookmarkByName.set(bookmark.name, {
|
|
121
|
-
...bookmark,
|
|
122
|
-
url: normalizeInstanceKernelUrl(bookmark.url),
|
|
123
|
-
})
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (show.managed) {
|
|
128
|
-
for (const item of managed) {
|
|
129
|
-
const candidate = item.url ? bookmarkByName.get(item.slug) : undefined
|
|
130
|
-
const twin =
|
|
131
|
-
candidate && item.url && candidate.url === normalizeInstanceKernelUrl(item.url)
|
|
132
|
-
? candidate
|
|
133
|
-
: undefined
|
|
134
|
-
if (twin) merged.add(item.slug)
|
|
135
|
-
rows.push({
|
|
136
|
-
name: twin?.active ? `${item.slug} ${chalk.green('*')}` : item.slug,
|
|
137
|
-
kind: 'managed',
|
|
138
|
-
url: item.url ?? '',
|
|
139
|
-
extra: [formatInstanceLocation(item), twin ? formatBookmarkConnection(twin) : '']
|
|
140
|
-
.filter(Boolean)
|
|
141
|
-
.join(' · '),
|
|
142
|
-
})
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (show.bookmarks) {
|
|
147
|
-
for (const item of bookmarks) {
|
|
148
|
-
if (merged.has(item.name)) continue
|
|
149
|
-
rows.push({
|
|
150
|
-
name: item.active ? `${item.name} ${chalk.green('*')}` : item.name,
|
|
151
|
-
kind: 'bookmark',
|
|
152
|
-
url: String(item.url ?? ''),
|
|
153
|
-
extra: formatBookmarkConnection(item),
|
|
154
|
-
})
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
return rows
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
function formatBookmarkConnection(bookmark: Bookmark): string {
|
|
162
|
-
return [
|
|
163
|
-
bookmark.issuer && bookmark.issuer !== bookmark.url ? `issuer=${bookmark.issuer}` : '',
|
|
164
|
-
bookmark.caFile ? `ca=${bookmark.caFile}` : '',
|
|
165
|
-
bookmark.defaultIdentity ? `identity=${bookmark.defaultIdentity}` : '',
|
|
166
|
-
]
|
|
167
|
-
.filter(Boolean)
|
|
168
|
-
.join(' · ')
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const ADMIN_INVENTORY_CODES = new Set([
|
|
172
|
-
'TOKEN_EXCHANGE_SOURCE_INVALID',
|
|
173
|
-
'TOKEN_EXCHANGE_SOURCE_EXPIRED',
|
|
174
|
-
'TOKEN_EXCHANGE_UNSUPPORTED',
|
|
175
|
-
'TOKEN_EXCHANGE_DISCOVERY_FAILED',
|
|
176
|
-
'TOKEN_EXCHANGE_PROTOCOL_ERROR',
|
|
177
|
-
'TOKEN_EXCHANGE_INSECURE',
|
|
178
|
-
'ADMIN_DOMAIN_ISSUER_MISSING',
|
|
179
|
-
])
|
|
180
|
-
|
|
181
|
-
/** Admin-managed inventory is not available without a deployed Admin Domain + IdP identity. */
|
|
182
|
-
export function adminInventoryUnavailable(cause: unknown): AstraleError {
|
|
183
|
-
const code = cause instanceof AstraleError ? cause.code : undefined
|
|
184
|
-
if (code !== undefined && ADMIN_INVENTORY_CODES.has(code)) {
|
|
185
|
-
return new AstraleError(
|
|
186
|
-
'ADMIN_INVENTORY_UNAVAILABLE',
|
|
187
|
-
'Managed instance listing needs the Admin Domain and an IdP-backed identity. Admin is not deployed in this environment.',
|
|
188
|
-
'Use `astrale instance list --bookmarked` for local kernel bookmarks. Key-backed identities cannot mint an Admin Domain token.',
|
|
189
|
-
)
|
|
190
|
-
}
|
|
191
|
-
if (cause instanceof AstraleError) return cause
|
|
192
|
-
return new AstraleError(
|
|
193
|
-
'ADMIN_INVENTORY_UNAVAILABLE',
|
|
194
|
-
cause instanceof Error ? cause.message : String(cause),
|
|
195
|
-
'Use `astrale instance list --bookmarked` for local kernel bookmarks.',
|
|
196
|
-
)
|
|
197
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk'
|
|
2
|
-
|
|
3
|
-
import type { KernelCommandOpts } from '../../connection'
|
|
4
|
-
import type { CommandDefinition } from '../../program/index'
|
|
5
|
-
|
|
6
|
-
import { statusOwnedInstance } from '../../lib/admin-instance'
|
|
7
|
-
import { ADMIN_TARGET_OPTIONS, type AdminTargetCommandOpts } from '../../lib/admin-target'
|
|
8
|
-
import { fatal, log, withSpinner } from '../../lib/log'
|
|
9
|
-
import { isMachine, output, type RawOutputOpts } from '../../lib/output'
|
|
10
|
-
|
|
11
|
-
type StatusOpts = KernelCommandOpts & AdminTargetCommandOpts & RawOutputOpts
|
|
12
|
-
|
|
13
|
-
export default {
|
|
14
|
-
name: 'status',
|
|
15
|
-
description: 'Show admin instance status',
|
|
16
|
-
arguments: [{ name: 'id', description: 'Instance slug', required: true }],
|
|
17
|
-
options: [...ADMIN_TARGET_OPTIONS],
|
|
18
|
-
action: async (id: string, opts: StatusOpts) => {
|
|
19
|
-
try {
|
|
20
|
-
const result = await withSpinner(`Fetching instance ${id}`, !isMachine(opts), () =>
|
|
21
|
-
statusOwnedInstance(opts, id),
|
|
22
|
-
)
|
|
23
|
-
if (isMachine(opts)) {
|
|
24
|
-
output(result, opts)
|
|
25
|
-
return
|
|
26
|
-
}
|
|
27
|
-
console.log(`${chalk.bold(result.slug)} ${chalk.dim(result.url)}`)
|
|
28
|
-
log.dim(` state: ${result.state}${result.phase ? ` (${result.phase})` : ''}`)
|
|
29
|
-
if (result.error) log.dim(` error: ${result.error}`)
|
|
30
|
-
if (result.region) log.dim(` region: ${result.region}`)
|
|
31
|
-
if (result.hostId) log.dim(` host: ${result.hostId}`)
|
|
32
|
-
if (result.organizationId) log.dim(` organization: ${result.organizationId}`)
|
|
33
|
-
if (result.createdAt) log.dim(` created: ${result.createdAt}`)
|
|
34
|
-
} catch (e) {
|
|
35
|
-
fatal(e, opts)
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
} satisfies CommandDefinition
|