@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,56 +0,0 @@
|
|
|
1
|
-
import type { AdminConnectionOptions, ConnectionContext } from '../connection'
|
|
2
|
-
|
|
3
|
-
import { connectAdminInstances } from '../admin/instance'
|
|
4
|
-
import { withAdminClientSession } from '../connection'
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
AdminInstanceNotFoundError,
|
|
8
|
-
findOwnedInstance,
|
|
9
|
-
formatInstanceState,
|
|
10
|
-
type InstanceInfo,
|
|
11
|
-
type InstanceState,
|
|
12
|
-
type OwnedInstanceInfo,
|
|
13
|
-
} from '../admin/instance'
|
|
14
|
-
|
|
15
|
-
/** Resolve the Admin target and read only the caller-visible Instance inventory. */
|
|
16
|
-
export function listOwnedInstances(options: AdminConnectionOptions) {
|
|
17
|
-
return withAdminClientSession(options, async (context) =>
|
|
18
|
-
(await connectAdminInstances(context)).list(),
|
|
19
|
-
)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Read caller-visible inventory together with the exact local identity used for the Admin call. */
|
|
23
|
-
export function listOwnedInstancesWithIdentity(options: AdminConnectionOptions) {
|
|
24
|
-
return withAdminClientSession(options, async (context) =>
|
|
25
|
-
Object.freeze({
|
|
26
|
-
instances: await (await connectAdminInstances(context)).list(),
|
|
27
|
-
...(context.identity === undefined ? {} : { identity: context.identity }),
|
|
28
|
-
}),
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** Reuse an already-open Admin session for a caller-visible Instance inventory. */
|
|
33
|
-
export async function listOwnedInstancesInContext(context: ConnectionContext) {
|
|
34
|
-
return (await connectAdminInstances(context)).list()
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** Request one managed Instance; Admin owns infrastructure placement. */
|
|
38
|
-
export function createOwnedInstance(options: AdminConnectionOptions, slug: string) {
|
|
39
|
-
return withAdminClientSession(options, async (context) =>
|
|
40
|
-
(await connectAdminInstances(context)).create(slug),
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/** Refresh one exact caller-visible Instance through its V2 receiver Method. */
|
|
45
|
-
export function statusOwnedInstance(options: AdminConnectionOptions, identifier: string) {
|
|
46
|
-
return withAdminClientSession(options, async (context) =>
|
|
47
|
-
(await connectAdminInstances(context)).status(identifier),
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** Delete one exact caller-visible Instance through its V2 receiver Method. */
|
|
52
|
-
export function deleteOwnedInstance(options: AdminConnectionOptions, identifier: string) {
|
|
53
|
-
return withAdminClientSession(options, async (context) =>
|
|
54
|
-
(await connectAdminInstances(context)).delete(identifier),
|
|
55
|
-
)
|
|
56
|
-
}
|
package/src/lib/admin-target.ts
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
|
|
3
|
-
import type { AstraleConfig } from './config'
|
|
4
|
-
import type { InstanceStore } from './instance'
|
|
5
|
-
|
|
6
|
-
import { AstraleError } from '../errors'
|
|
7
|
-
import { readInstances, resolveInstanceKey } from './instance'
|
|
8
|
-
import { DEFAULT_UPDATE_CHANNEL } from './update'
|
|
9
|
-
import { isHttpUrl } from './validation'
|
|
10
|
-
|
|
11
|
-
export const DEFAULT_ADMIN_TARGET_NAME = 'admin'
|
|
12
|
-
|
|
13
|
-
export function defaultAdminTargetForChannel(channel: string): {
|
|
14
|
-
readonly url: string
|
|
15
|
-
readonly domainIssuer: string
|
|
16
|
-
} {
|
|
17
|
-
return channel === 'stable'
|
|
18
|
-
? {
|
|
19
|
-
url: 'https://admin.eu.astrale.ai/api',
|
|
20
|
-
domainIssuer: 'https://admin.astrale.ai',
|
|
21
|
-
}
|
|
22
|
-
: {
|
|
23
|
-
url: 'https://admin.eu.beta.astrale.ai/api',
|
|
24
|
-
domainIssuer: 'https://admin.beta.astrale.ai',
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const DEFAULT_ADMIN_TARGET = defaultAdminTargetForChannel(DEFAULT_UPDATE_CHANNEL)
|
|
29
|
-
|
|
30
|
-
export const DEFAULT_ADMIN_TARGET_URL = DEFAULT_ADMIN_TARGET.url
|
|
31
|
-
export const DEFAULT_ADMIN_DOMAIN_ISSUER = DEFAULT_ADMIN_TARGET.domainIssuer
|
|
32
|
-
|
|
33
|
-
export const DEFAULT_ADMIN_TARGET_CONFIG = {
|
|
34
|
-
name: DEFAULT_ADMIN_TARGET_NAME,
|
|
35
|
-
url: DEFAULT_ADMIN_TARGET_URL,
|
|
36
|
-
kernelIssuer: DEFAULT_ADMIN_TARGET_URL,
|
|
37
|
-
domainIssuer: DEFAULT_ADMIN_DOMAIN_ISSUER,
|
|
38
|
-
} satisfies AdminTargetConfig
|
|
39
|
-
|
|
40
|
-
const HttpUrlSchema = z.string().refine(isHttpUrl, {
|
|
41
|
-
message: 'expected a valid http:// or https:// URL',
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
export const AdminTargetConfigSchema = z
|
|
45
|
-
.object({
|
|
46
|
-
/** Friendly name / auth registration slug for direct URL admin targets. */
|
|
47
|
-
name: z.string().min(1).optional(),
|
|
48
|
-
/** Direct admin kernel URL. */
|
|
49
|
-
url: HttpUrlSchema.optional(),
|
|
50
|
-
/** Kernel issuer / JWT audience when different from url. */
|
|
51
|
-
kernelIssuer: HttpUrlSchema.optional(),
|
|
52
|
-
/** Exact native Admin Domain issuer used by the standard token exchange. */
|
|
53
|
-
domainIssuer: HttpUrlSchema.optional(),
|
|
54
|
-
/** Bookmark name for the admin kernel. */
|
|
55
|
-
instance: z.string().min(1).optional(),
|
|
56
|
-
})
|
|
57
|
-
.superRefine((value, ctx) => {
|
|
58
|
-
if (value.url && value.instance) {
|
|
59
|
-
ctx.addIssue({
|
|
60
|
-
code: 'custom',
|
|
61
|
-
path: ['instance'],
|
|
62
|
-
message: 'admin target must use either url or instance, not both',
|
|
63
|
-
})
|
|
64
|
-
}
|
|
65
|
-
if (!value.url && !value.instance) {
|
|
66
|
-
ctx.addIssue({
|
|
67
|
-
code: 'custom',
|
|
68
|
-
message: 'admin target requires url or instance',
|
|
69
|
-
})
|
|
70
|
-
}
|
|
71
|
-
if (value.kernelIssuer && !value.url) {
|
|
72
|
-
ctx.addIssue({
|
|
73
|
-
code: 'custom',
|
|
74
|
-
path: ['kernelIssuer'],
|
|
75
|
-
message: 'admin kernel issuer is only valid with a direct url target',
|
|
76
|
-
})
|
|
77
|
-
}
|
|
78
|
-
if (value.domainIssuer && !value.url) {
|
|
79
|
-
ctx.addIssue({
|
|
80
|
-
code: 'custom',
|
|
81
|
-
path: ['domainIssuer'],
|
|
82
|
-
message: 'admin domain issuer is only valid with a direct url target',
|
|
83
|
-
})
|
|
84
|
-
}
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
export type AdminTargetConfig = z.infer<typeof AdminTargetConfigSchema>
|
|
88
|
-
|
|
89
|
-
export type AdminTargetCommandOpts = {
|
|
90
|
-
admin?: string
|
|
91
|
-
adminUrl?: string
|
|
92
|
-
domainIssuer?: string
|
|
93
|
-
instance?: string
|
|
94
|
-
url?: string
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export type AdminTargetSource = 'admin-url' | 'admin' | 'config-instance' | 'config-url' | 'default'
|
|
98
|
-
|
|
99
|
-
export type ResolvedAdminTarget = {
|
|
100
|
-
name: string
|
|
101
|
-
url: string
|
|
102
|
-
kernelIssuer: string
|
|
103
|
-
domainIssuer: string
|
|
104
|
-
defaultIdentity?: string
|
|
105
|
-
caFile?: string
|
|
106
|
-
source: AdminTargetSource
|
|
107
|
-
configured: boolean
|
|
108
|
-
registrationSlug: string
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export const ADMIN_TARGET_OPTIONS = [
|
|
112
|
-
{
|
|
113
|
-
flags: '--admin <name>',
|
|
114
|
-
description: 'Admin kernel bookmark to use for this admin operation',
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
flags: '--admin-url <url>',
|
|
118
|
-
description: 'Admin kernel URL to use for this admin operation',
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
flags: '--domain-issuer <url>',
|
|
122
|
-
description: 'Admin Domain issuer used for token exchange with an explicit URL',
|
|
123
|
-
},
|
|
124
|
-
]
|
|
125
|
-
|
|
126
|
-
export async function resolveAdminTarget(
|
|
127
|
-
opts: AdminTargetCommandOpts,
|
|
128
|
-
config: AstraleConfig,
|
|
129
|
-
store?: InstanceStore,
|
|
130
|
-
): Promise<ResolvedAdminTarget> {
|
|
131
|
-
return resolveAdminTargetFromStore(opts, config, store ?? (await readInstances()))
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export function resolveAdminTargetFromStore(
|
|
135
|
-
opts: AdminTargetCommandOpts,
|
|
136
|
-
config: AstraleConfig,
|
|
137
|
-
store: InstanceStore,
|
|
138
|
-
): ResolvedAdminTarget {
|
|
139
|
-
const override = readOverride(opts)
|
|
140
|
-
if (override) {
|
|
141
|
-
if (override.kind === 'instance' && opts.domainIssuer !== undefined) {
|
|
142
|
-
throw new AstraleError(
|
|
143
|
-
'INVALID_FLAG',
|
|
144
|
-
'--domain-issuer is only valid with --admin-url or --url.',
|
|
145
|
-
)
|
|
146
|
-
}
|
|
147
|
-
return override.kind === 'url'
|
|
148
|
-
? directTarget({
|
|
149
|
-
url: override.url,
|
|
150
|
-
name: DEFAULT_ADMIN_TARGET_NAME,
|
|
151
|
-
source: override.source,
|
|
152
|
-
configured: false,
|
|
153
|
-
domainIssuer: opts.domainIssuer ?? config.admin.domainIssuer,
|
|
154
|
-
})
|
|
155
|
-
: bookmarkTarget(
|
|
156
|
-
store,
|
|
157
|
-
override.instance,
|
|
158
|
-
override.source,
|
|
159
|
-
false,
|
|
160
|
-
config.admin.domainIssuer ?? DEFAULT_ADMIN_DOMAIN_ISSUER,
|
|
161
|
-
)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const admin = config.admin
|
|
165
|
-
if (admin.instance) {
|
|
166
|
-
return bookmarkTarget(
|
|
167
|
-
store,
|
|
168
|
-
admin.instance,
|
|
169
|
-
'config-instance',
|
|
170
|
-
true,
|
|
171
|
-
admin.domainIssuer ?? DEFAULT_ADMIN_DOMAIN_ISSUER,
|
|
172
|
-
)
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const isDefaultDirectTarget =
|
|
176
|
-
admin.url === DEFAULT_ADMIN_TARGET_URL &&
|
|
177
|
-
admin.kernelIssuer === DEFAULT_ADMIN_TARGET_URL &&
|
|
178
|
-
(admin.domainIssuer ?? DEFAULT_ADMIN_DOMAIN_ISSUER) === DEFAULT_ADMIN_DOMAIN_ISSUER &&
|
|
179
|
-
admin.name === DEFAULT_ADMIN_TARGET_NAME
|
|
180
|
-
|
|
181
|
-
return directTarget({
|
|
182
|
-
url: admin.url ?? DEFAULT_ADMIN_TARGET_URL,
|
|
183
|
-
kernelIssuer: admin.kernelIssuer,
|
|
184
|
-
domainIssuer: admin.domainIssuer ?? DEFAULT_ADMIN_DOMAIN_ISSUER,
|
|
185
|
-
name: admin.name ?? DEFAULT_ADMIN_TARGET_NAME,
|
|
186
|
-
source: isDefaultDirectTarget ? 'default' : 'config-url',
|
|
187
|
-
configured: !isDefaultDirectTarget,
|
|
188
|
-
})
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
function readOverride(opts: AdminTargetCommandOpts):
|
|
192
|
-
| { kind: 'url'; url: string; source: AdminTargetSource }
|
|
193
|
-
| {
|
|
194
|
-
kind: 'instance'
|
|
195
|
-
instance: string
|
|
196
|
-
source: AdminTargetSource
|
|
197
|
-
}
|
|
198
|
-
| null {
|
|
199
|
-
const selected = [
|
|
200
|
-
opts.adminUrl ? { label: '--admin-url', kind: 'url' as const, value: opts.adminUrl } : null,
|
|
201
|
-
opts.admin ? { label: '--admin', kind: 'instance' as const, value: opts.admin } : null,
|
|
202
|
-
opts.url ? { label: '--url', kind: 'url' as const, value: opts.url } : null,
|
|
203
|
-
opts.instance
|
|
204
|
-
? { label: '-i/--instance', kind: 'instance' as const, value: opts.instance }
|
|
205
|
-
: null,
|
|
206
|
-
].filter((entry): entry is NonNullable<typeof entry> => entry !== null)
|
|
207
|
-
|
|
208
|
-
if (selected.length > 1) {
|
|
209
|
-
throw new AstraleError(
|
|
210
|
-
'INVALID_FLAG',
|
|
211
|
-
`Choose one admin target override, not ${selected.map((entry) => entry.label).join(', ')}`,
|
|
212
|
-
'Use --admin <bookmark> or --admin-url <url> for admin operations.',
|
|
213
|
-
)
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
const first = selected[0]
|
|
217
|
-
if (!first) return null
|
|
218
|
-
if (first.kind === 'url') {
|
|
219
|
-
return {
|
|
220
|
-
kind: 'url',
|
|
221
|
-
url: first.value,
|
|
222
|
-
source: 'admin-url',
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
return {
|
|
226
|
-
kind: 'instance',
|
|
227
|
-
instance: first.value,
|
|
228
|
-
source: 'admin',
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
function bookmarkTarget(
|
|
233
|
-
store: InstanceStore,
|
|
234
|
-
identifier: string,
|
|
235
|
-
source: AdminTargetSource,
|
|
236
|
-
configured: boolean,
|
|
237
|
-
domainIssuer: string,
|
|
238
|
-
): ResolvedAdminTarget {
|
|
239
|
-
const key = resolveInstanceKey(store, identifier)
|
|
240
|
-
const entry = key ? store.instances[key] : undefined
|
|
241
|
-
if (!key || !entry?.url) {
|
|
242
|
-
throw new AstraleError(
|
|
243
|
-
'ADMIN_TARGET_NOT_FOUND',
|
|
244
|
-
`Admin target "${identifier}" is not bookmarked.`,
|
|
245
|
-
`Bookmark it first: astrale instance bookmark ${identifier} --url <admin-url>`,
|
|
246
|
-
)
|
|
247
|
-
}
|
|
248
|
-
return {
|
|
249
|
-
name: key,
|
|
250
|
-
registrationSlug: key,
|
|
251
|
-
url: entry.url,
|
|
252
|
-
kernelIssuer: entry.issuer ?? entry.url,
|
|
253
|
-
domainIssuer: requireDomainIssuer(
|
|
254
|
-
entry.domainIssuer ?? (configured ? domainIssuer : undefined),
|
|
255
|
-
`Admin bookmark "${key}"`,
|
|
256
|
-
),
|
|
257
|
-
defaultIdentity: entry.defaultIdentity,
|
|
258
|
-
...(entry.caFile ? { caFile: entry.caFile } : {}),
|
|
259
|
-
source,
|
|
260
|
-
configured,
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
function directTarget(input: {
|
|
265
|
-
url: string
|
|
266
|
-
kernelIssuer?: string
|
|
267
|
-
domainIssuer?: string
|
|
268
|
-
name: string
|
|
269
|
-
source: AdminTargetSource
|
|
270
|
-
configured: boolean
|
|
271
|
-
}): ResolvedAdminTarget {
|
|
272
|
-
return {
|
|
273
|
-
name: input.name,
|
|
274
|
-
registrationSlug: input.name,
|
|
275
|
-
url: input.url,
|
|
276
|
-
kernelIssuer: input.kernelIssuer ?? input.url,
|
|
277
|
-
domainIssuer: requireDomainIssuer(input.domainIssuer, 'Direct Admin target'),
|
|
278
|
-
source: input.source,
|
|
279
|
-
configured: input.configured,
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
function requireDomainIssuer(value: string | undefined, label: string): string {
|
|
284
|
-
if (value !== undefined) return value
|
|
285
|
-
throw new AstraleError(
|
|
286
|
-
'ADMIN_DOMAIN_ISSUER_MISSING',
|
|
287
|
-
`${label} has no Domain issuer for token exchange.`,
|
|
288
|
-
'Configure domainIssuer or pass --domain-issuer <url>; there is no legacy token fallback.',
|
|
289
|
-
)
|
|
290
|
-
}
|
package/src/lib/binary.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk'
|
|
2
|
-
import { writeFile } from 'node:fs/promises'
|
|
3
|
-
|
|
4
|
-
import type { OutputOpts } from './output'
|
|
5
|
-
|
|
6
|
-
import { output } from './output'
|
|
7
|
-
|
|
8
|
-
/** A binary kernel result: bytes (or a stream of them) plus its content-type. */
|
|
9
|
-
export type BinaryLike = {
|
|
10
|
-
readonly body: Uint8Array
|
|
11
|
-
readonly mediaType: string
|
|
12
|
-
readonly headers?: Readonly<Record<string, string>>
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/** Collapse a (possibly streamed) binary body into a single byte array. */
|
|
16
|
-
export async function readBinaryBody(body: Uint8Array): Promise<Uint8Array> {
|
|
17
|
-
return body
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function isTextLike(contentType: string): boolean {
|
|
21
|
-
const ct = contentType.toLowerCase()
|
|
22
|
-
return (
|
|
23
|
-
ct.startsWith('text/') ||
|
|
24
|
-
ct.includes('json') ||
|
|
25
|
-
ct.includes('xml') ||
|
|
26
|
-
ct.includes('event-stream')
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function humanSize(bytes: number): string {
|
|
31
|
-
if (bytes < 1024) return `${bytes} B`
|
|
32
|
-
const units = ['kB', 'MB', 'GB']
|
|
33
|
-
let v = bytes / 1024
|
|
34
|
-
let i = 0
|
|
35
|
-
while (v >= 1024 && i < units.length - 1) {
|
|
36
|
-
v /= 1024
|
|
37
|
-
i++
|
|
38
|
-
}
|
|
39
|
-
return `${v.toFixed(1)} ${units[i]}`
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** The `--json` envelope: text-like inlines decoded text, otherwise base64. */
|
|
43
|
-
function jsonEnvelope(resp: BinaryLike, bytes: Uint8Array): Record<string, unknown> {
|
|
44
|
-
if (isTextLike(resp.mediaType)) {
|
|
45
|
-
return {
|
|
46
|
-
status: 200,
|
|
47
|
-
contentType: resp.mediaType,
|
|
48
|
-
body: new TextDecoder().decode(bytes),
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return {
|
|
52
|
-
status: 200,
|
|
53
|
-
contentType: resp.mediaType,
|
|
54
|
-
bodyBase64: Buffer.from(bytes).toString('base64'),
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Present a binary kind result.
|
|
60
|
-
*
|
|
61
|
-
* Precedence:
|
|
62
|
-
* -o <file> → write raw bytes to a file (+ a dim summary on stderr)
|
|
63
|
-
* --raw → raw bytes to stdout
|
|
64
|
-
* --json → base64/text-wrapped JSON object (jq-friendly)
|
|
65
|
-
* non-TTY (pipe) → raw bytes to stdout (`astrale call … > out.png`)
|
|
66
|
-
* TTY, text-like → decode and print the text
|
|
67
|
-
* TTY, otherwise → a one-line summary (don't spew binary at a terminal)
|
|
68
|
-
*/
|
|
69
|
-
export async function presentBinary(
|
|
70
|
-
resp: BinaryLike,
|
|
71
|
-
opts: OutputOpts,
|
|
72
|
-
io?: { outFile?: string },
|
|
73
|
-
): Promise<void> {
|
|
74
|
-
const bytes = await readBinaryBody(resp.body)
|
|
75
|
-
|
|
76
|
-
if (io?.outFile) {
|
|
77
|
-
await writeFile(io.outFile, bytes)
|
|
78
|
-
process.stderr.write(
|
|
79
|
-
chalk.dim(` wrote ${humanSize(bytes.length)} (${resp.mediaType}) → ${io.outFile}\n`),
|
|
80
|
-
)
|
|
81
|
-
return
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (opts.raw) {
|
|
85
|
-
process.stdout.write(bytes)
|
|
86
|
-
return
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (opts.json) {
|
|
90
|
-
output(jsonEnvelope(resp, bytes), opts)
|
|
91
|
-
return
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (!(process.stdout.isTTY ?? false)) {
|
|
95
|
-
process.stdout.write(bytes)
|
|
96
|
-
return
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (isTextLike(resp.mediaType)) {
|
|
100
|
-
const text = new TextDecoder().decode(bytes)
|
|
101
|
-
process.stdout.write(text.endsWith('\n') ? text : text + '\n')
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
process.stdout.write(
|
|
106
|
-
chalk.dim(
|
|
107
|
-
` <binary · ${resp.mediaType} · ${humanSize(bytes.length)}> — pipe or use -o <file> to save\n`,
|
|
108
|
-
),
|
|
109
|
-
)
|
|
110
|
-
}
|
package/src/lib/browser.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
|
2
|
-
import { join } from 'node:path'
|
|
3
|
-
|
|
4
|
-
import { paths } from '../state/index'
|
|
5
|
-
import { run } from './proc'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* `astrale browser` is a thin orchestrator over `agent-browser`
|
|
9
|
-
* (https://github.com/vercel-labs/agent-browser) — the Rust browser-automation
|
|
10
|
-
* CLI that AI agents drive. We own only the *session*: resolve the active
|
|
11
|
-
* instance's GUI origin, pin a persistent per-instance profile so the WorkOS
|
|
12
|
-
* login cookie survives across runs, and verify auth. Driving (snapshot/click/
|
|
13
|
-
* eval/…) is agent-browser's job, invoked directly by the agent afterward.
|
|
14
|
-
*
|
|
15
|
-
* Why a profile and not an injected token: the GUI session is an httpOnly
|
|
16
|
-
* sealed cookie (`astrale_router_session`) with no token-injection path, so the
|
|
17
|
-
* only way to "use my session" is to drive a browser whose profile already
|
|
18
|
-
* holds the cookie — minted once via interactive login, reused thereafter.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
export const BROWSER_DIR = join(paths.home, 'browser')
|
|
22
|
-
export const BROWSER_SESSION_PATH = join(paths.home, 'browser.json')
|
|
23
|
-
export const AGENT_BROWSER_REPO = 'vercel-labs/agent-browser'
|
|
24
|
-
|
|
25
|
-
/** Per-instance persistent profile dir handed to `agent-browser --profile`. */
|
|
26
|
-
export function profileDirFor(host: string): string {
|
|
27
|
-
return join(BROWSER_DIR, host)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** The last-connected browser session, read by agents to know how to drive. */
|
|
31
|
-
export type BrowserSession = {
|
|
32
|
-
/** GUI origin, e.g. `https://alpha1.eu.astrale.ai`. */
|
|
33
|
-
url: string
|
|
34
|
-
host: string
|
|
35
|
-
/** Profile dir, or null when attached to an external Chrome over CDP. */
|
|
36
|
-
profile: string | null
|
|
37
|
-
/** CDP endpoint (`9222` or a ws URL) when in attach mode. */
|
|
38
|
-
cdp: string | null
|
|
39
|
-
email?: string
|
|
40
|
-
updatedAt: string
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export async function readSession(): Promise<BrowserSession | null> {
|
|
44
|
-
try {
|
|
45
|
-
return JSON.parse(await readFile(BROWSER_SESSION_PATH, 'utf8')) as BrowserSession
|
|
46
|
-
} catch {
|
|
47
|
-
return null
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export async function saveSession(session: BrowserSession): Promise<void> {
|
|
52
|
-
await mkdir(paths.home, { recursive: true })
|
|
53
|
-
await writeFile(BROWSER_SESSION_PATH, `${JSON.stringify(session, null, 2)}\n`)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/** Resolve `agent-browser` on PATH; null when not installed. */
|
|
57
|
-
export async function findAgentBrowser(): Promise<string | null> {
|
|
58
|
-
// `command -v` is a POSIX shell builtin (no `command` executable exists on
|
|
59
|
-
// Windows), so resolve via `where` on Windows and a shell on Unix.
|
|
60
|
-
const lookup =
|
|
61
|
-
process.platform === 'win32'
|
|
62
|
-
? run('where', ['agent-browser'])
|
|
63
|
-
: run('sh', ['-c', 'command -v agent-browser'])
|
|
64
|
-
const res = await lookup.catch(() => null)
|
|
65
|
-
if (!res || res.code !== 0) return null
|
|
66
|
-
const path = res.stdout.split(/\r?\n/)[0]?.trim()
|
|
67
|
-
return path || null
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export type AbResult = {
|
|
71
|
-
ok: boolean
|
|
72
|
-
data: unknown
|
|
73
|
-
error: string | null
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Connection target for an agent-browser invocation: either a persistent
|
|
78
|
-
* profile dir or a CDP endpoint (mutually exclusive).
|
|
79
|
-
*/
|
|
80
|
-
export type AbTarget = { profile?: string; cdp?: string }
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Run an `agent-browser` command with `--json` and parse its envelope
|
|
84
|
-
* (`{success, data, error}`). Global flags (`--profile`/`--cdp`/`--headed`)
|
|
85
|
-
* precede the subcommand; `--json` trails the args, matching the CLI's parser.
|
|
86
|
-
*/
|
|
87
|
-
export async function ab(
|
|
88
|
-
args: string[],
|
|
89
|
-
opts: AbTarget & { headed?: boolean } = {},
|
|
90
|
-
): Promise<AbResult> {
|
|
91
|
-
const argv = ['agent-browser']
|
|
92
|
-
if (opts.profile) argv.push('--profile', opts.profile)
|
|
93
|
-
if (opts.cdp) argv.push('--cdp', opts.cdp)
|
|
94
|
-
if (opts.headed) argv.push('--headed')
|
|
95
|
-
argv.push(...args, '--json')
|
|
96
|
-
|
|
97
|
-
const { code, stdout, stderr } = await run(argv[0], argv.slice(1))
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
const parsed = JSON.parse(stdout) as { success?: boolean; data?: unknown; error?: string }
|
|
101
|
-
if (parsed && typeof parsed === 'object' && 'success' in parsed) {
|
|
102
|
-
return { ok: !!parsed.success, data: parsed.data ?? null, error: parsed.error ?? null }
|
|
103
|
-
}
|
|
104
|
-
} catch {
|
|
105
|
-
// fall through to exit-code interpretation
|
|
106
|
-
}
|
|
107
|
-
return { ok: code === 0, data: null, error: stderr.trim() || null }
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Reads the GUI session from whatever origin the page currently sits on. During
|
|
111
|
-
// an interactive login the page is on the IdP origin, where `/auth/me` 404s and
|
|
112
|
-
// the fetch rejects → {authed:false}; once the router redirects back to the GUI
|
|
113
|
-
// it resolves to the authenticated user. Returned as a value (not top-level
|
|
114
|
-
// await — agent-browser's `eval` forbids it) so page.evaluate auto-resolves it.
|
|
115
|
-
const AUTH_EVAL =
|
|
116
|
-
"fetch('/auth/me',{credentials:'include'})" +
|
|
117
|
-
'.then(r=>r.json())' +
|
|
118
|
-
'.then(j=>({authed:!!j.authenticated,email:j.user&&j.user.email}))' +
|
|
119
|
-
'.catch(()=>({authed:false}))'
|
|
120
|
-
|
|
121
|
-
export type AuthState = { authed: boolean; email?: string }
|
|
122
|
-
|
|
123
|
-
function readAuthResult(res: AbResult): AuthState {
|
|
124
|
-
const result = (res.data as { result?: unknown } | null)?.result
|
|
125
|
-
if (result && typeof result === 'object') {
|
|
126
|
-
const r = result as { authed?: boolean; email?: string }
|
|
127
|
-
return { authed: !!r.authed, email: r.email }
|
|
128
|
-
}
|
|
129
|
-
return { authed: false }
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Poll auth on the current page (no navigation — safe during login redirects).
|
|
134
|
-
* Pass `headed:true` while a sign-in window is open: agent-browser defaults to
|
|
135
|
-
* headless, so an unflagged command flips the live window back to headless and
|
|
136
|
-
* closes it.
|
|
137
|
-
*/
|
|
138
|
-
export async function pollAuth(target: AbTarget & { headed?: boolean }): Promise<AuthState> {
|
|
139
|
-
return readAuthResult(await ab(['eval', AUTH_EVAL], target))
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/** Navigate to the GUI, then read auth (used for the silent reuse check). */
|
|
143
|
-
export async function navigateAndCheck(
|
|
144
|
-
url: string,
|
|
145
|
-
target: AbTarget & { headed?: boolean },
|
|
146
|
-
): Promise<AuthState> {
|
|
147
|
-
const opened = await ab(['open', url], target)
|
|
148
|
-
if (!opened.ok) return { authed: false }
|
|
149
|
-
return pollAuth(target)
|
|
150
|
-
}
|