@cuna_labs/cli 0.1.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/LICENSE +201 -0
- package/NOTICE +9 -0
- package/README.md +169 -0
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/dist/api/capability-evidence.d.ts +19 -0
- package/dist/api/capability-evidence.d.ts.map +1 -0
- package/dist/api/capability-evidence.js +38 -0
- package/dist/api/capability-evidence.js.map +1 -0
- package/dist/api/client.d.ts +167 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +937 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/contracts.d.ts +345 -0
- package/dist/api/contracts.d.ts.map +1 -0
- package/dist/api/contracts.js +976 -0
- package/dist/api/contracts.js.map +1 -0
- package/dist/api/execution-workspaces.d.ts +17 -0
- package/dist/api/execution-workspaces.d.ts.map +1 -0
- package/dist/api/execution-workspaces.js +46 -0
- package/dist/api/execution-workspaces.js.map +1 -0
- package/dist/api/http.d.ts +76 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/http.js +838 -0
- package/dist/api/http.js.map +1 -0
- package/dist/api/managed-executions.d.ts +37 -0
- package/dist/api/managed-executions.d.ts.map +1 -0
- package/dist/api/managed-executions.js +80 -0
- package/dist/api/managed-executions.js.map +1 -0
- package/dist/api/observer-v2-schema.d.ts +206 -0
- package/dist/api/observer-v2-schema.d.ts.map +1 -0
- package/dist/api/observer-v2-schema.js +264 -0
- package/dist/api/observer-v2-schema.js.map +1 -0
- package/dist/api/observer-v2.d.ts +33 -0
- package/dist/api/observer-v2.d.ts.map +1 -0
- package/dist/api/observer-v2.js +60 -0
- package/dist/api/observer-v2.js.map +1 -0
- package/dist/api/owner-observe-grants-v2-schema.d.ts +678 -0
- package/dist/api/owner-observe-grants-v2-schema.d.ts.map +1 -0
- package/dist/api/owner-observe-grants-v2-schema.js +887 -0
- package/dist/api/owner-observe-grants-v2-schema.js.map +1 -0
- package/dist/api/owner-observe-grants-v2.d.ts +268 -0
- package/dist/api/owner-observe-grants-v2.d.ts.map +1 -0
- package/dist/api/owner-observe-grants-v2.js +604 -0
- package/dist/api/owner-observe-grants-v2.js.map +1 -0
- package/dist/api/provider-v2-schema.d.ts +293 -0
- package/dist/api/provider-v2-schema.d.ts.map +1 -0
- package/dist/api/provider-v2-schema.js +381 -0
- package/dist/api/provider-v2-schema.js.map +1 -0
- package/dist/api/provider-v2.d.ts +55 -0
- package/dist/api/provider-v2.d.ts.map +1 -0
- package/dist/api/provider-v2.js +54 -0
- package/dist/api/provider-v2.js.map +1 -0
- package/dist/api/remote-workspace.d.ts +29 -0
- package/dist/api/remote-workspace.d.ts.map +1 -0
- package/dist/api/remote-workspace.js +62 -0
- package/dist/api/remote-workspace.js.map +1 -0
- package/dist/api/supervisor-live-update.d.ts +248 -0
- package/dist/api/supervisor-live-update.d.ts.map +1 -0
- package/dist/api/supervisor-live-update.js +434 -0
- package/dist/api/supervisor-live-update.js.map +1 -0
- package/dist/api/terminal-reason.d.ts +5 -0
- package/dist/api/terminal-reason.d.ts.map +1 -0
- package/dist/api/terminal-reason.js +12 -0
- package/dist/api/terminal-reason.js.map +1 -0
- package/dist/auth/browser-handoff.d.ts +59 -0
- package/dist/auth/browser-handoff.d.ts.map +1 -0
- package/dist/auth/browser-handoff.js +33 -0
- package/dist/auth/browser-handoff.js.map +1 -0
- package/dist/auth/browser.d.ts +11 -0
- package/dist/auth/browser.d.ts.map +1 -0
- package/dist/auth/browser.js +47 -0
- package/dist/auth/browser.js.map +1 -0
- package/dist/auth/human-client.d.ts +39 -0
- package/dist/auth/human-client.d.ts.map +1 -0
- package/dist/auth/human-client.js +66 -0
- package/dist/auth/human-client.js.map +1 -0
- package/dist/auth/human-contracts.d.ts +52 -0
- package/dist/auth/human-contracts.d.ts.map +1 -0
- package/dist/auth/human-contracts.js +229 -0
- package/dist/auth/human-contracts.js.map +1 -0
- package/dist/auth/human-session.d.ts +48 -0
- package/dist/auth/human-session.d.ts.map +1 -0
- package/dist/auth/human-session.js +902 -0
- package/dist/auth/human-session.js.map +1 -0
- package/dist/auth/onboarding-state.d.ts +31 -0
- package/dist/auth/onboarding-state.d.ts.map +1 -0
- package/dist/auth/onboarding-state.js +52 -0
- package/dist/auth/onboarding-state.js.map +1 -0
- package/dist/auth/pkce.d.ts +15 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +19 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/bin/cuna.d.ts +3 -0
- package/dist/bin/cuna.d.ts.map +1 -0
- package/dist/bin/cuna.js +4 -0
- package/dist/bin/cuna.js.map +1 -0
- package/dist/build-identity.d.ts +20 -0
- package/dist/build-identity.d.ts.map +1 -0
- package/dist/build-identity.js +77 -0
- package/dist/build-identity.js.map +1 -0
- package/dist/cli/command-help.d.ts +9 -0
- package/dist/cli/command-help.d.ts.map +1 -0
- package/dist/cli/command-help.js +324 -0
- package/dist/cli/command-help.js.map +1 -0
- package/dist/cli/help.d.ts +40 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +256 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/output.d.ts +28 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +95 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parser.d.ts +65 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +294 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/process-entrypoint.d.ts +18 -0
- package/dist/cli/process-entrypoint.d.ts.map +1 -0
- package/dist/cli/process-entrypoint.js +26 -0
- package/dist/cli/process-entrypoint.js.map +1 -0
- package/dist/cli/run.d.ts +114 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +1969 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/commands/commands.d.ts +74 -0
- package/dist/commands/commands.d.ts.map +1 -0
- package/dist/commands/commands.js +2814 -0
- package/dist/commands/commands.js.map +1 -0
- package/dist/config/config.d.ts +86 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +323 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/infra-contract-witness.d.ts +29 -0
- package/dist/config/infra-contract-witness.d.ts.map +1 -0
- package/dist/config/infra-contract-witness.js +30 -0
- package/dist/config/infra-contract-witness.js.map +1 -0
- package/dist/core/browser-url.d.ts +2 -0
- package/dist/core/browser-url.d.ts.map +1 -0
- package/dist/core/browser-url.js +20 -0
- package/dist/core/browser-url.js.map +1 -0
- package/dist/core/deployed-wire-compatibility.d.ts +15 -0
- package/dist/core/deployed-wire-compatibility.d.ts.map +1 -0
- package/dist/core/deployed-wire-compatibility.js +15 -0
- package/dist/core/deployed-wire-compatibility.js.map +1 -0
- package/dist/core/errors.d.ts +59 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +82 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/exit-codes.d.ts +68 -0
- package/dist/core/exit-codes.d.ts.map +1 -0
- package/dist/core/exit-codes.js +84 -0
- package/dist/core/exit-codes.js.map +1 -0
- package/dist/core/instant.d.ts +60 -0
- package/dist/core/instant.d.ts.map +1 -0
- package/dist/core/instant.js +90 -0
- package/dist/core/instant.js.map +1 -0
- package/dist/core/namespace.d.ts +171 -0
- package/dist/core/namespace.d.ts.map +1 -0
- package/dist/core/namespace.js +227 -0
- package/dist/core/namespace.js.map +1 -0
- package/dist/core/observation-budget.d.ts +185 -0
- package/dist/core/observation-budget.d.ts.map +1 -0
- package/dist/core/observation-budget.js +209 -0
- package/dist/core/observation-budget.js.map +1 -0
- package/dist/core/product-web.d.ts +81 -0
- package/dist/core/product-web.d.ts.map +1 -0
- package/dist/core/product-web.js +87 -0
- package/dist/core/product-web.js.map +1 -0
- package/dist/core/validation.d.ts +90 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +199 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/credentials/contracts.d.ts +82 -0
- package/dist/credentials/contracts.d.ts.map +1 -0
- package/dist/credentials/contracts.js +2 -0
- package/dist/credentials/contracts.js.map +1 -0
- package/dist/credentials/errors.d.ts +19 -0
- package/dist/credentials/errors.d.ts.map +1 -0
- package/dist/credentials/errors.js +16 -0
- package/dist/credentials/errors.js.map +1 -0
- package/dist/credentials/index.d.ts +6 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +6 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/local-session.d.ts +101 -0
- package/dist/credentials/local-session.d.ts.map +1 -0
- package/dist/credentials/local-session.js +839 -0
- package/dist/credentials/local-session.js.map +1 -0
- package/dist/credentials/secret-material.d.ts +17 -0
- package/dist/credentials/secret-material.d.ts.map +1 -0
- package/dist/credentials/secret-material.js +49 -0
- package/dist/credentials/secret-material.js.map +1 -0
- package/dist/credentials/vault.d.ts +41 -0
- package/dist/credentials/vault.d.ts.map +1 -0
- package/dist/credentials/vault.js +719 -0
- package/dist/credentials/vault.js.map +1 -0
- package/dist/daemon/endpoint.d.ts +29 -0
- package/dist/daemon/endpoint.d.ts.map +1 -0
- package/dist/daemon/endpoint.js +66 -0
- package/dist/daemon/endpoint.js.map +1 -0
- package/dist/daemon/journal.d.ts +62 -0
- package/dist/daemon/journal.d.ts.map +1 -0
- package/dist/daemon/journal.js +299 -0
- package/dist/daemon/journal.js.map +1 -0
- package/dist/daemon/lease.d.ts +25 -0
- package/dist/daemon/lease.d.ts.map +1 -0
- package/dist/daemon/lease.js +94 -0
- package/dist/daemon/lease.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +14 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +29 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/protocol.d.ts +65 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +194 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/daemon/supervisor.d.ts +29 -0
- package/dist/daemon/supervisor.d.ts.map +1 -0
- package/dist/daemon/supervisor.js +87 -0
- package/dist/daemon/supervisor.js.map +1 -0
- package/dist/daemon/views.d.ts +31 -0
- package/dist/daemon/views.d.ts.map +1 -0
- package/dist/daemon/views.js +86 -0
- package/dist/daemon/views.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/journey/api-effects.d.ts +59 -0
- package/dist/journey/api-effects.d.ts.map +1 -0
- package/dist/journey/api-effects.js +386 -0
- package/dist/journey/api-effects.js.map +1 -0
- package/dist/journey/derived-identity.d.ts +91 -0
- package/dist/journey/derived-identity.d.ts.map +1 -0
- package/dist/journey/derived-identity.js +123 -0
- package/dist/journey/derived-identity.js.map +1 -0
- package/dist/journey/index.d.ts +6 -0
- package/dist/journey/index.d.ts.map +1 -0
- package/dist/journey/index.js +6 -0
- package/dist/journey/index.js.map +1 -0
- package/dist/journey/intent.d.ts +36 -0
- package/dist/journey/intent.d.ts.map +1 -0
- package/dist/journey/intent.js +191 -0
- package/dist/journey/intent.js.map +1 -0
- package/dist/journey/orchestrator.d.ts +140 -0
- package/dist/journey/orchestrator.d.ts.map +1 -0
- package/dist/journey/orchestrator.js +415 -0
- package/dist/journey/orchestrator.js.map +1 -0
- package/dist/journey/provider-launch-intent.d.ts +12 -0
- package/dist/journey/provider-launch-intent.d.ts.map +1 -0
- package/dist/journey/provider-launch-intent.js +40 -0
- package/dist/journey/provider-launch-intent.js.map +1 -0
- package/dist/journey/remote-workspace.d.ts +34 -0
- package/dist/journey/remote-workspace.d.ts.map +1 -0
- package/dist/journey/remote-workspace.js +91 -0
- package/dist/journey/remote-workspace.js.map +1 -0
- package/dist/journey/root-entry.d.ts +56 -0
- package/dist/journey/root-entry.d.ts.map +1 -0
- package/dist/journey/root-entry.js +19 -0
- package/dist/journey/root-entry.js.map +1 -0
- package/dist/journey/selection.d.ts +165 -0
- package/dist/journey/selection.d.ts.map +1 -0
- package/dist/journey/selection.js +565 -0
- package/dist/journey/selection.js.map +1 -0
- package/dist/journey/session-failure.d.ts +4 -0
- package/dist/journey/session-failure.d.ts.map +1 -0
- package/dist/journey/session-failure.js +28 -0
- package/dist/journey/session-failure.js.map +1 -0
- package/dist/journey/workspace-effects.d.ts +30 -0
- package/dist/journey/workspace-effects.d.ts.map +1 -0
- package/dist/journey/workspace-effects.js +348 -0
- package/dist/journey/workspace-effects.js.map +1 -0
- package/dist/local-actions/broker.d.ts +32 -0
- package/dist/local-actions/broker.d.ts.map +1 -0
- package/dist/local-actions/broker.js +400 -0
- package/dist/local-actions/broker.js.map +1 -0
- package/dist/local-actions/browser-action.d.ts +78 -0
- package/dist/local-actions/browser-action.d.ts.map +1 -0
- package/dist/local-actions/browser-action.js +307 -0
- package/dist/local-actions/browser-action.js.map +1 -0
- package/dist/local-actions/callback-relay.d.ts +45 -0
- package/dist/local-actions/callback-relay.d.ts.map +1 -0
- package/dist/local-actions/callback-relay.js +265 -0
- package/dist/local-actions/callback-relay.js.map +1 -0
- package/dist/local-actions/clipboard.d.ts +3 -0
- package/dist/local-actions/clipboard.d.ts.map +1 -0
- package/dist/local-actions/clipboard.js +18 -0
- package/dist/local-actions/clipboard.js.map +1 -0
- package/dist/local-actions/contracts.d.ts +63 -0
- package/dist/local-actions/contracts.d.ts.map +1 -0
- package/dist/local-actions/contracts.js +18 -0
- package/dist/local-actions/contracts.js.map +1 -0
- package/dist/local-actions/desktop-presentation.d.ts +141 -0
- package/dist/local-actions/desktop-presentation.d.ts.map +1 -0
- package/dist/local-actions/desktop-presentation.js +253 -0
- package/dist/local-actions/desktop-presentation.js.map +1 -0
- package/dist/local-actions/device-selection.d.ts +43 -0
- package/dist/local-actions/device-selection.d.ts.map +1 -0
- package/dist/local-actions/device-selection.js +154 -0
- package/dist/local-actions/device-selection.js.map +1 -0
- package/dist/local-actions/executor.d.ts +49 -0
- package/dist/local-actions/executor.d.ts.map +1 -0
- package/dist/local-actions/executor.js +329 -0
- package/dist/local-actions/executor.js.map +1 -0
- package/dist/local-actions/file-transfers.d.ts +141 -0
- package/dist/local-actions/file-transfers.d.ts.map +1 -0
- package/dist/local-actions/file-transfers.js +446 -0
- package/dist/local-actions/file-transfers.js.map +1 -0
- package/dist/local-actions/foreground-notifications.d.ts +45 -0
- package/dist/local-actions/foreground-notifications.d.ts.map +1 -0
- package/dist/local-actions/foreground-notifications.js +163 -0
- package/dist/local-actions/foreground-notifications.js.map +1 -0
- package/dist/local-actions/git-signing.d.ts +39 -0
- package/dist/local-actions/git-signing.d.ts.map +1 -0
- package/dist/local-actions/git-signing.js +135 -0
- package/dist/local-actions/git-signing.js.map +1 -0
- package/dist/local-actions/index.d.ts +19 -0
- package/dist/local-actions/index.d.ts.map +1 -0
- package/dist/local-actions/index.js +19 -0
- package/dist/local-actions/index.js.map +1 -0
- package/dist/local-actions/local-service-actions.d.ts +87 -0
- package/dist/local-actions/local-service-actions.d.ts.map +1 -0
- package/dist/local-actions/local-service-actions.js +347 -0
- package/dist/local-actions/local-service-actions.js.map +1 -0
- package/dist/local-actions/loopback.d.ts +5 -0
- package/dist/local-actions/loopback.d.ts.map +1 -0
- package/dist/local-actions/loopback.js +15 -0
- package/dist/local-actions/loopback.js.map +1 -0
- package/dist/local-actions/policy-store.d.ts +7 -0
- package/dist/local-actions/policy-store.d.ts.map +1 -0
- package/dist/local-actions/policy-store.js +70 -0
- package/dist/local-actions/policy-store.js.map +1 -0
- package/dist/local-actions/policy.d.ts +21 -0
- package/dist/local-actions/policy.d.ts.map +1 -0
- package/dist/local-actions/policy.js +43 -0
- package/dist/local-actions/policy.js.map +1 -0
- package/dist/local-actions/private-port-forward.d.ts +36 -0
- package/dist/local-actions/private-port-forward.d.ts.map +1 -0
- package/dist/local-actions/private-port-forward.js +154 -0
- package/dist/local-actions/private-port-forward.js.map +1 -0
- package/dist/local-actions/provider-mcp-config.d.ts +101 -0
- package/dist/local-actions/provider-mcp-config.d.ts.map +1 -0
- package/dist/local-actions/provider-mcp-config.js +166 -0
- package/dist/local-actions/provider-mcp-config.js.map +1 -0
- package/dist/local-actions/providers.d.ts +12 -0
- package/dist/local-actions/providers.d.ts.map +1 -0
- package/dist/local-actions/providers.js +42 -0
- package/dist/local-actions/providers.js.map +1 -0
- package/dist/local-actions/schemas.d.ts +4 -0
- package/dist/local-actions/schemas.d.ts.map +1 -0
- package/dist/local-actions/schemas.js +314 -0
- package/dist/local-actions/schemas.js.map +1 -0
- package/dist/local-actions/sensitive-consent.d.ts +32 -0
- package/dist/local-actions/sensitive-consent.d.ts.map +1 -0
- package/dist/local-actions/sensitive-consent.js +47 -0
- package/dist/local-actions/sensitive-consent.js.map +1 -0
- package/dist/machines/command-launch.d.ts +17 -0
- package/dist/machines/command-launch.d.ts.map +1 -0
- package/dist/machines/command-launch.js +52 -0
- package/dist/machines/command-launch.js.map +1 -0
- package/dist/machines/execution-receipt.d.ts +18 -0
- package/dist/machines/execution-receipt.d.ts.map +1 -0
- package/dist/machines/execution-receipt.js +87 -0
- package/dist/machines/execution-receipt.js.map +1 -0
- package/dist/machines/executions-screen.d.ts +6 -0
- package/dist/machines/executions-screen.d.ts.map +1 -0
- package/dist/machines/executions-screen.js +410 -0
- package/dist/machines/executions-screen.js.map +1 -0
- package/dist/machines/explorer.d.ts +75 -0
- package/dist/machines/explorer.d.ts.map +1 -0
- package/dist/machines/explorer.js +1726 -0
- package/dist/machines/explorer.js.map +1 -0
- package/dist/machines/live-supervisor-update.d.ts +325 -0
- package/dist/machines/live-supervisor-update.d.ts.map +1 -0
- package/dist/machines/live-supervisor-update.js +513 -0
- package/dist/machines/live-supervisor-update.js.map +1 -0
- package/dist/machines/machine-first.d.ts +123 -0
- package/dist/machines/machine-first.d.ts.map +1 -0
- package/dist/machines/machine-first.js +119 -0
- package/dist/machines/machine-first.js.map +1 -0
- package/dist/machines/opencode-supervisor.d.ts +51 -0
- package/dist/machines/opencode-supervisor.d.ts.map +1 -0
- package/dist/machines/opencode-supervisor.js +124 -0
- package/dist/machines/opencode-supervisor.js.map +1 -0
- package/dist/machines/pagination.d.ts +4 -0
- package/dist/machines/pagination.d.ts.map +1 -0
- package/dist/machines/pagination.js +7 -0
- package/dist/machines/pagination.js.map +1 -0
- package/dist/machines/provider-availability.d.ts +42 -0
- package/dist/machines/provider-availability.d.ts.map +1 -0
- package/dist/machines/provider-availability.js +82 -0
- package/dist/machines/provider-availability.js.map +1 -0
- package/dist/machines/provider-screen.d.ts +12 -0
- package/dist/machines/provider-screen.d.ts.map +1 -0
- package/dist/machines/provider-screen.js +129 -0
- package/dist/machines/provider-screen.js.map +1 -0
- package/dist/machines/session-actionability.d.ts +86 -0
- package/dist/machines/session-actionability.d.ts.map +1 -0
- package/dist/machines/session-actionability.js +125 -0
- package/dist/machines/session-actionability.js.map +1 -0
- package/dist/machines/session-visibility.d.ts +139 -0
- package/dist/machines/session-visibility.d.ts.map +1 -0
- package/dist/machines/session-visibility.js +109 -0
- package/dist/machines/session-visibility.js.map +1 -0
- package/dist/platform/adapter.d.ts +62 -0
- package/dist/platform/adapter.d.ts.map +1 -0
- package/dist/platform/adapter.js +240 -0
- package/dist/platform/adapter.js.map +1 -0
- package/dist/platform/support.d.ts +12 -0
- package/dist/platform/support.d.ts.map +1 -0
- package/dist/platform/support.js +25 -0
- package/dist/platform/support.js.map +1 -0
- package/dist/pty/contracts.d.ts +45 -0
- package/dist/pty/contracts.d.ts.map +1 -0
- package/dist/pty/contracts.js +2 -0
- package/dist/pty/contracts.js.map +1 -0
- package/dist/pty/evidence-gate.d.ts +14 -0
- package/dist/pty/evidence-gate.d.ts.map +1 -0
- package/dist/pty/evidence-gate.js +35 -0
- package/dist/pty/evidence-gate.js.map +1 -0
- package/dist/pty/index.d.ts +5 -0
- package/dist/pty/index.d.ts.map +1 -0
- package/dist/pty/index.js +5 -0
- package/dist/pty/index.js.map +1 -0
- package/dist/pty/node-host-terminal.d.ts +14 -0
- package/dist/pty/node-host-terminal.d.ts.map +1 -0
- package/dist/pty/node-host-terminal.js +173 -0
- package/dist/pty/node-host-terminal.js.map +1 -0
- package/dist/pty/node-process.d.ts +26 -0
- package/dist/pty/node-process.d.ts.map +1 -0
- package/dist/pty/node-process.js +102 -0
- package/dist/pty/node-process.js.map +1 -0
- package/dist/runtime/api-terminal-control-plane.d.ts +7 -0
- package/dist/runtime/api-terminal-control-plane.d.ts.map +1 -0
- package/dist/runtime/api-terminal-control-plane.js +95 -0
- package/dist/runtime/api-terminal-control-plane.js.map +1 -0
- package/dist/runtime/backoff.d.ts +17 -0
- package/dist/runtime/backoff.d.ts.map +1 -0
- package/dist/runtime/backoff.js +61 -0
- package/dist/runtime/backoff.js.map +1 -0
- package/dist/runtime/boundary.d.ts +171 -0
- package/dist/runtime/boundary.d.ts.map +1 -0
- package/dist/runtime/boundary.js +1858 -0
- package/dist/runtime/boundary.js.map +1 -0
- package/dist/runtime/capability-gate.d.ts +25 -0
- package/dist/runtime/capability-gate.d.ts.map +1 -0
- package/dist/runtime/capability-gate.js +77 -0
- package/dist/runtime/capability-gate.js.map +1 -0
- package/dist/runtime/contracts.d.ts +25 -0
- package/dist/runtime/contracts.d.ts.map +1 -0
- package/dist/runtime/contracts.js +66 -0
- package/dist/runtime/contracts.js.map +1 -0
- package/dist/runtime/errors.d.ts +20 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +22 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +9 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/node-foreground-session.d.ts +50 -0
- package/dist/runtime/node-foreground-session.d.ts.map +1 -0
- package/dist/runtime/node-foreground-session.js +431 -0
- package/dist/runtime/node-foreground-session.js.map +1 -0
- package/dist/runtime/node-websocket-connector.d.ts +6 -0
- package/dist/runtime/node-websocket-connector.d.ts.map +1 -0
- package/dist/runtime/node-websocket-connector.js +344 -0
- package/dist/runtime/node-websocket-connector.js.map +1 -0
- package/dist/runtime/observer-screen.d.ts +6 -0
- package/dist/runtime/observer-screen.d.ts.map +1 -0
- package/dist/runtime/observer-screen.js +144 -0
- package/dist/runtime/observer-screen.js.map +1 -0
- package/dist/runtime/owner-grant-operations.d.ts +136 -0
- package/dist/runtime/owner-grant-operations.d.ts.map +1 -0
- package/dist/runtime/owner-grant-operations.js +216 -0
- package/dist/runtime/owner-grant-operations.js.map +1 -0
- package/dist/runtime/owner-grants-screen.d.ts +40 -0
- package/dist/runtime/owner-grants-screen.d.ts.map +1 -0
- package/dist/runtime/owner-grants-screen.js +987 -0
- package/dist/runtime/owner-grants-screen.js.map +1 -0
- package/dist/runtime/terminal-transport.d.ts +85 -0
- package/dist/runtime/terminal-transport.d.ts.map +1 -0
- package/dist/runtime/terminal-transport.js +152 -0
- package/dist/runtime/terminal-transport.js.map +1 -0
- package/dist/sync/continuous-sync-supervisor.d.ts +107 -0
- package/dist/sync/continuous-sync-supervisor.d.ts.map +1 -0
- package/dist/sync/continuous-sync-supervisor.js +1117 -0
- package/dist/sync/continuous-sync-supervisor.js.map +1 -0
- package/dist/sync/index.d.ts +9 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +9 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/journal.d.ts +57 -0
- package/dist/sync/journal.d.ts.map +1 -0
- package/dist/sync/journal.js +685 -0
- package/dist/sync/journal.js.map +1 -0
- package/dist/sync/revisions.d.ts +118 -0
- package/dist/sync/revisions.d.ts.map +1 -0
- package/dist/sync/revisions.js +364 -0
- package/dist/sync/revisions.js.map +1 -0
- package/dist/sync/supervisor.d.ts +107 -0
- package/dist/sync/supervisor.d.ts.map +1 -0
- package/dist/sync/supervisor.js +246 -0
- package/dist/sync/supervisor.js.map +1 -0
- package/dist/sync/workspace-sync-client.d.ts +18 -0
- package/dist/sync/workspace-sync-client.d.ts.map +1 -0
- package/dist/sync/workspace-sync-client.js +150 -0
- package/dist/sync/workspace-sync-client.js.map +1 -0
- package/dist/sync/workspace-sync-coordinator.d.ts +76 -0
- package/dist/sync/workspace-sync-coordinator.d.ts.map +1 -0
- package/dist/sync/workspace-sync-coordinator.js +621 -0
- package/dist/sync/workspace-sync-coordinator.js.map +1 -0
- package/dist/sync/workspace-sync-product-service.d.ts +79 -0
- package/dist/sync/workspace-sync-product-service.d.ts.map +1 -0
- package/dist/sync/workspace-sync-product-service.js +398 -0
- package/dist/sync/workspace-sync-product-service.js.map +1 -0
- package/dist/sync/workspace-sync-protocol.d.ts +145 -0
- package/dist/sync/workspace-sync-protocol.d.ts.map +1 -0
- package/dist/sync/workspace-sync-protocol.js +347 -0
- package/dist/sync/workspace-sync-protocol.js.map +1 -0
- package/dist/terminal/appbar.d.ts +40 -0
- package/dist/terminal/appbar.d.ts.map +1 -0
- package/dist/terminal/appbar.js +55 -0
- package/dist/terminal/appbar.js.map +1 -0
- package/dist/terminal/cell-width.d.ts +3 -0
- package/dist/terminal/cell-width.d.ts.map +1 -0
- package/dist/terminal/cell-width.js +53 -0
- package/dist/terminal/cell-width.js.map +1 -0
- package/dist/terminal/codec.d.ts +107 -0
- package/dist/terminal/codec.d.ts.map +1 -0
- package/dist/terminal/codec.js +538 -0
- package/dist/terminal/codec.js.map +1 -0
- package/dist/terminal/foreground.d.ts +135 -0
- package/dist/terminal/foreground.d.ts.map +1 -0
- package/dist/terminal/foreground.js +2097 -0
- package/dist/terminal/foreground.js.map +1 -0
- package/dist/terminal/generated/terminal-wire-v1.d.ts +26 -0
- package/dist/terminal/generated/terminal-wire-v1.d.ts.map +1 -0
- package/dist/terminal/generated/terminal-wire-v1.js +27 -0
- package/dist/terminal/generated/terminal-wire-v1.js.map +1 -0
- package/dist/terminal/mode.d.ts +33 -0
- package/dist/terminal/mode.d.ts.map +1 -0
- package/dist/terminal/mode.js +99 -0
- package/dist/terminal/mode.js.map +1 -0
- package/dist/terminal/passthrough.d.ts +47 -0
- package/dist/terminal/passthrough.d.ts.map +1 -0
- package/dist/terminal/passthrough.js +666 -0
- package/dist/terminal/passthrough.js.map +1 -0
- package/dist/terminal/resume.d.ts +58 -0
- package/dist/terminal/resume.d.ts.map +1 -0
- package/dist/terminal/resume.js +185 -0
- package/dist/terminal/resume.js.map +1 -0
- package/dist/terminal/viewport.d.ts +93 -0
- package/dist/terminal/viewport.d.ts.map +1 -0
- package/dist/terminal/viewport.js +266 -0
- package/dist/terminal/viewport.js.map +1 -0
- package/dist/terminal/workbench.d.ts +32 -0
- package/dist/terminal/workbench.d.ts.map +1 -0
- package/dist/terminal/workbench.js +316 -0
- package/dist/terminal/workbench.js.map +1 -0
- package/dist/terminal/xterm-vte.d.ts +49 -0
- package/dist/terminal/xterm-vte.d.ts.map +1 -0
- package/dist/terminal/xterm-vte.js +602 -0
- package/dist/terminal/xterm-vte.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/workspace/binding-path.d.ts +17 -0
- package/dist/workspace/binding-path.d.ts.map +1 -0
- package/dist/workspace/binding-path.js +91 -0
- package/dist/workspace/binding-path.js.map +1 -0
- package/dist/workspace/binding-store.d.ts +107 -0
- package/dist/workspace/binding-store.d.ts.map +1 -0
- package/dist/workspace/binding-store.js +783 -0
- package/dist/workspace/binding-store.js.map +1 -0
- package/dist/workspace/binding.d.ts +35 -0
- package/dist/workspace/binding.d.ts.map +1 -0
- package/dist/workspace/binding.js +70 -0
- package/dist/workspace/binding.js.map +1 -0
- package/dist/workspace/errors.d.ts +4 -0
- package/dist/workspace/errors.d.ts.map +1 -0
- package/dist/workspace/errors.js +19 -0
- package/dist/workspace/errors.js.map +1 -0
- package/dist/workspace/exclusion.d.ts +21 -0
- package/dist/workspace/exclusion.d.ts.map +1 -0
- package/dist/workspace/exclusion.js +243 -0
- package/dist/workspace/exclusion.js.map +1 -0
- package/dist/workspace/index.d.ts +8 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +8 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/lifecycle.d.ts +56 -0
- package/dist/workspace/lifecycle.d.ts.map +1 -0
- package/dist/workspace/lifecycle.js +94 -0
- package/dist/workspace/lifecycle.js.map +1 -0
- package/dist/workspace/manifest.d.ts +47 -0
- package/dist/workspace/manifest.d.ts.map +1 -0
- package/dist/workspace/manifest.js +243 -0
- package/dist/workspace/manifest.js.map +1 -0
- package/dist/workspace/paths.d.ts +14 -0
- package/dist/workspace/paths.d.ts.map +1 -0
- package/dist/workspace/paths.js +67 -0
- package/dist/workspace/paths.js.map +1 -0
- package/dist/workspace/schema.d.ts +15 -0
- package/dist/workspace/schema.d.ts.map +1 -0
- package/dist/workspace/schema.js +33 -0
- package/dist/workspace/schema.js.map +1 -0
- package/dist/workspace/selection-screen.d.ts +4 -0
- package/dist/workspace/selection-screen.d.ts.map +1 -0
- package/dist/workspace/selection-screen.js +216 -0
- package/dist/workspace/selection-screen.js.map +1 -0
- package/dist/workspace/selection-service.d.ts +16 -0
- package/dist/workspace/selection-service.d.ts.map +1 -0
- package/dist/workspace/selection-service.js +65 -0
- package/dist/workspace/selection-service.js.map +1 -0
- package/node_modules/@xterm/headless/README.md +31 -0
- package/node_modules/@xterm/headless/lib-headless/xterm-headless.js +2 -0
- package/node_modules/@xterm/headless/lib-headless/xterm-headless.js.map +1 -0
- package/node_modules/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
- package/node_modules/@xterm/headless/lib-headless/xterm-headless.mjs.map +7 -0
- package/node_modules/@xterm/headless/package.json +29 -0
- package/node_modules/@xterm/headless/typings/xterm-headless.d.ts +1385 -0
- package/package.json +75 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import { contractViolation, isObject, underIndex } from "../core/validation.js";
|
|
2
|
+
import { decodeMachineItem } from "./contracts.js";
|
|
3
|
+
/**
|
|
4
|
+
* `sessions.updateSupervisorInPlace` and `sessions.readSupervisorInPlaceUpdate`
|
|
5
|
+
* — the running-Machine supervisor update, and the read that recovers it.
|
|
6
|
+
*
|
|
7
|
+
* WHAT THE PATH ID IS. `POST /v1/sessions/{id}/supervisor/live-update` reads
|
|
8
|
+
* `{id}` as a MACHINE, exactly like its stopped-boundary sibling
|
|
9
|
+
* `sessions.replaceSupervisor`: the producer parses it with `canonicalUuid` into
|
|
10
|
+
* `machineId` and the `Session` schema it answers with is the Machine row. It is
|
|
11
|
+
* NOT an AgentSession id, and the per-session custody it reports is a separate
|
|
12
|
+
* array of `agent_session_id` values. Binding the response to the requested
|
|
13
|
+
* Machine is therefore a real check, and `api/client.ts` performs it.
|
|
14
|
+
*
|
|
15
|
+
* THE OPERATION IDENTITY, which is what makes a lost answer recoverable. The
|
|
16
|
+
* POST now carries a required body — one field, `operation_id`, chosen by the
|
|
17
|
+
* CALLER before sending. The producer records that identity durably before it
|
|
18
|
+
* issues any supervisor enrollment, so repeating the SAME value never rotates a
|
|
19
|
+
* second time: it resumes an attempt that spent nothing, reconciles one that
|
|
20
|
+
* may have spent something, and returns the recorded answer once the operation
|
|
21
|
+
* has settled. A DIFFERENT value for a Machine whose update has not settled is
|
|
22
|
+
* refused. `sessions.readSupervisorInPlaceUpdate` is the read of that record: it
|
|
23
|
+
* dispatches no installer, sends nothing to the Machine and changes no state.
|
|
24
|
+
*
|
|
25
|
+
* WHERE THE SHAPES BELOW COME FROM, exactly. The VENDORED producer contract at
|
|
26
|
+
* `contracts/infra/cuna-api.openapi.json`, synchronized by
|
|
27
|
+
* `npm run contract:sync:infra` from producer repository `Cuna-Labs/infra` at
|
|
28
|
+
* commit `7b1b3e425ed273986a909a68395b5272bd6a01ba` — read from a clean,
|
|
29
|
+
* detached, read-only reference worktree, never from a mutable one. The sync
|
|
30
|
+
* runs the producer's own `contracts/tools/verify-contract.mjs` and refuses
|
|
31
|
+
* unless the consumer's recomputed canonical digest equals the digest that
|
|
32
|
+
* verifier attests, so the artifact in this repository is the producer's bytes
|
|
33
|
+
* and is provably so. `contracts/infra/cuna-api.openapi.identity.json` carries
|
|
34
|
+
* the commit, tree and blob ids.
|
|
35
|
+
*
|
|
36
|
+
* WHY THE TABLE BELOW IS STILL HAND-WRITTEN. The repository's convention for a
|
|
37
|
+
* canonical DTO is a generated projection (`scripts/project-provider-v2.mjs`
|
|
38
|
+
* and its siblings). This module keeps its own declaration for one reason a
|
|
39
|
+
* schema projection cannot cover: the decoders enforce CROSS-FIELD invariants
|
|
40
|
+
* the producer states in prose and encodes nowhere — a settled phase agrees
|
|
41
|
+
* with `next_action: "none"` and with a non-null `settled_at`; a declared
|
|
42
|
+
* session carries no verdict; one AgentSession is never accounted for twice. A
|
|
43
|
+
* generated shape would check none of those.
|
|
44
|
+
*
|
|
45
|
+
* It is not therefore unchecked. `test/machines-live-update-supervisor.test.mjs`
|
|
46
|
+
* reads the vendored artifact and asserts that every key list, enum and bound
|
|
47
|
+
* in `SUPERVISOR_LIVE_UPDATE_WIRE` equals the producer's own, so this table is
|
|
48
|
+
* a VERIFIED projection rather than a copy that can drift in silence. If the
|
|
49
|
+
* next sync moves any of them, that test names which.
|
|
50
|
+
*/
|
|
51
|
+
export const SUPERVISOR_LIVE_UPDATE_WIRE = Object.freeze({
|
|
52
|
+
operationId: "sessions.updateSupervisorInPlace",
|
|
53
|
+
method: "POST",
|
|
54
|
+
/** `{id}` is the Machine, not the AgentSession. */
|
|
55
|
+
pathTemplate: "/v1/sessions/{id}/supervisor/live-update",
|
|
56
|
+
pathParameterSubject: "machine",
|
|
57
|
+
requestSchema: "SupervisorLiveUpdateRequest",
|
|
58
|
+
responseSchema: "SupervisorLiveUpdateResult",
|
|
59
|
+
sessionSchema: "SupervisorLiveUpdateSession",
|
|
60
|
+
requiredPermission: "machines:update",
|
|
61
|
+
/**
|
|
62
|
+
* A required JSON body carrying the caller's chosen operation identity. There
|
|
63
|
+
* is still no idempotency key: this identity is the durable one, and it is the
|
|
64
|
+
* producer's own journal key rather than a transport-level retry token.
|
|
65
|
+
*/
|
|
66
|
+
hasRequestBody: true,
|
|
67
|
+
requestContentType: "application/json; charset=utf-8",
|
|
68
|
+
requestKeys: Object.freeze(["operation_id"]),
|
|
69
|
+
responseKeys: Object.freeze([
|
|
70
|
+
"machine",
|
|
71
|
+
"operation_id",
|
|
72
|
+
"control_generation",
|
|
73
|
+
"artifact_sha256",
|
|
74
|
+
"installed_at",
|
|
75
|
+
"agent_sessions",
|
|
76
|
+
]),
|
|
77
|
+
sessionKeys: Object.freeze(["agent_session_id", "process_epoch", "outcome"]),
|
|
78
|
+
outcomes: Object.freeze(["preserved", "exited", "ended", "unknown"]),
|
|
79
|
+
/** `maxItems` on `agent_sessions` in the producer schema. */
|
|
80
|
+
maximumSessions: 64,
|
|
81
|
+
/**
|
|
82
|
+
* The read that recovers a lost answer.
|
|
83
|
+
*
|
|
84
|
+
* `machines:read`, not `machines:update`: it is a database read scoped to the
|
|
85
|
+
* owner and the exact Machine. `dispatchesInstaller: false` is the producer's
|
|
86
|
+
* own statement about it and the reason this CLI may call it freely after an
|
|
87
|
+
* interruption — the thing a caller must NOT do to resolve an operation is
|
|
88
|
+
* send a second one, and this is not that.
|
|
89
|
+
*/
|
|
90
|
+
recovery: Object.freeze({
|
|
91
|
+
operationId: "sessions.readSupervisorInPlaceUpdate",
|
|
92
|
+
method: "GET",
|
|
93
|
+
pathTemplate: "/v1/sessions/{id}/supervisor/live-update/{operationId}",
|
|
94
|
+
pathParameterSubject: "machine",
|
|
95
|
+
responseSchema: "SupervisorLiveUpdateOperation",
|
|
96
|
+
declaredSessionSchema: "SupervisorLiveUpdateDeclaredSession",
|
|
97
|
+
failureSchema: "SupervisorLiveUpdateFailure",
|
|
98
|
+
requiredPermission: "machines:read",
|
|
99
|
+
dispatchesInstaller: false,
|
|
100
|
+
operationKeys: Object.freeze([
|
|
101
|
+
"operation_id",
|
|
102
|
+
"machine_id",
|
|
103
|
+
"phase",
|
|
104
|
+
"control_rotated",
|
|
105
|
+
"installer_outcome",
|
|
106
|
+
"control_generation",
|
|
107
|
+
"artifact_sha256",
|
|
108
|
+
"installed_at",
|
|
109
|
+
"installation_evidence",
|
|
110
|
+
"declared_sessions",
|
|
111
|
+
"agent_sessions",
|
|
112
|
+
"failure",
|
|
113
|
+
"next_action",
|
|
114
|
+
"claimed_at",
|
|
115
|
+
"updated_at",
|
|
116
|
+
"settled_at",
|
|
117
|
+
/**
|
|
118
|
+
* The install fence, added at producer `7b1b3e42`. Both are required and
|
|
119
|
+
* both are nullable, and they are one fact in two fields: the producer's
|
|
120
|
+
* own column constraint is `(retired_at is null) = (retirement_receipt is
|
|
121
|
+
* null)`, so a reader that got one without the other would be reading a
|
|
122
|
+
* row the producer forbids.
|
|
123
|
+
*/
|
|
124
|
+
"retired_at",
|
|
125
|
+
"retirement_outcome",
|
|
126
|
+
]),
|
|
127
|
+
declaredSessionKeys: Object.freeze(["agent_session_id", "process_epoch"]),
|
|
128
|
+
failureKeys: Object.freeze([
|
|
129
|
+
"status",
|
|
130
|
+
"code",
|
|
131
|
+
"title",
|
|
132
|
+
"detail",
|
|
133
|
+
"retryable",
|
|
134
|
+
"action",
|
|
135
|
+
]),
|
|
136
|
+
phases: Object.freeze(["claimed", "control_rotated", "installed", "settled"]),
|
|
137
|
+
installerOutcomes: Object.freeze(["not_sent", "unknown", "refused", "installed"]),
|
|
138
|
+
/** `null` is a declared member of the producer's own enum, not an absence. */
|
|
139
|
+
installationEvidence: Object.freeze(["installer_exit", "reconciled"]),
|
|
140
|
+
nextActions: Object.freeze(["none", "repeat_same_operation"]),
|
|
141
|
+
failureActions: Object.freeze(["retry", "none"]),
|
|
142
|
+
/**
|
|
143
|
+
* What the Machine's install fence had recorded for this operation's
|
|
144
|
+
* control generation when the fence was advanced past it. `null` is a
|
|
145
|
+
* declared member of the producer's enum — "not retired yet" — and is
|
|
146
|
+
* decoded as absence rather than listed here.
|
|
147
|
+
*
|
|
148
|
+
* NEVER a substitute for `installerOutcome`. `installed` here says the
|
|
149
|
+
* fence recorded an admitted installer that finished; `installerOutcome`
|
|
150
|
+
* says what CUNA observed, and only it may be rendered as an installation.
|
|
151
|
+
*/
|
|
152
|
+
retirementOutcomes: Object.freeze(["retired", "partial", "installed"]),
|
|
153
|
+
}),
|
|
154
|
+
source: Object.freeze({
|
|
155
|
+
state: "vendored",
|
|
156
|
+
producerRepository: "Cuna-Labs/infra",
|
|
157
|
+
producerRevision: "7b1b3e425ed273986a909a68395b5272bd6a01ba",
|
|
158
|
+
/**
|
|
159
|
+
* The producer-side artifact is `contracts/` plus the producer's own file
|
|
160
|
+
* name, which still carries the earlier brand. That literal now exists in
|
|
161
|
+
* exactly ONE shipped place — `scripts/sync-infra-openapi.mjs`'s
|
|
162
|
+
* `expectedSourceName`, whose classification `test/error-namespace.test.mjs`
|
|
163
|
+
* pins line-exactly — and the sync refuses any other source, so restating it
|
|
164
|
+
* here bought no authority and minted a second unclassified copy of it.
|
|
165
|
+
* `contracts/infra/cuna-api.openapi.identity.json` records the commit, tree
|
|
166
|
+
* and blob this table is attributed to.
|
|
167
|
+
*/
|
|
168
|
+
/** `sha256` of the artifact's exact bytes at that commit. */
|
|
169
|
+
rawDigest: "f4c2d396b94f296b22df276435dc04ecf1da48807efa1e819c4cbff9ea59a83e",
|
|
170
|
+
/** The producer's own published digest, under its own canonical semantics. */
|
|
171
|
+
canonicalDigest: "43213c2adac602676437b612b7d4153707e09155bdc4fa3029cca15a0b207ecc",
|
|
172
|
+
digestSemantics: "sha256(canonical-json:utf8;recursive-object-key-sort;array-order-preserved)",
|
|
173
|
+
operations: 101,
|
|
174
|
+
sdkOperations: 40,
|
|
175
|
+
vendoredArtifact: "contracts/infra/cuna-api.openapi.json",
|
|
176
|
+
/** Synchronized 2026-09-13. The declarations above are checked against it. */
|
|
177
|
+
vendoredCarriesOperation: true,
|
|
178
|
+
synchronizeWith: "npm run contract:sync:infra",
|
|
179
|
+
}),
|
|
180
|
+
});
|
|
181
|
+
const OUTCOMES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.outcomes);
|
|
182
|
+
const PHASES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.phases);
|
|
183
|
+
const INSTALLER_OUTCOMES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.installerOutcomes);
|
|
184
|
+
const INSTALLATION_EVIDENCE = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.installationEvidence);
|
|
185
|
+
const NEXT_ACTIONS = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.nextActions);
|
|
186
|
+
const FAILURE_ACTIONS = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.failureActions);
|
|
187
|
+
const RETIREMENT_OUTCOMES = new Set(SUPERVISOR_LIVE_UPDATE_WIRE.recovery.retirementOutcomes);
|
|
188
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u;
|
|
189
|
+
const SHA256 = /^[0-9a-f]{64}$/u;
|
|
190
|
+
const PROBLEM_CODE = /^[a-z][a-z0-9_]{2,63}$/u;
|
|
191
|
+
function exactKeys(value, keys, predicate) {
|
|
192
|
+
const actual = Object.keys(value).sort();
|
|
193
|
+
const expected = [...keys].sort();
|
|
194
|
+
if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {
|
|
195
|
+
throw contractViolation(predicate);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function uuid(value, field) {
|
|
199
|
+
if (typeof value !== "string" || !UUID.test(value))
|
|
200
|
+
throw contractViolation("canonical_uuid", field);
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
function timestamp(value, field) {
|
|
204
|
+
if (typeof value !== "string" || !Number.isFinite(Date.parse(value))) {
|
|
205
|
+
throw contractViolation("parsable_timestamp", field);
|
|
206
|
+
}
|
|
207
|
+
return value;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* A field the producer types as `["X", "null"]`.
|
|
211
|
+
*
|
|
212
|
+
* `null` is the producer's own way of saying "not established yet", and it is
|
|
213
|
+
* decoded to `undefined` — absent rather than a falsy value some later branch
|
|
214
|
+
* could read as zero, empty or settled.
|
|
215
|
+
*/
|
|
216
|
+
function nullable(value, field, decode) {
|
|
217
|
+
if (value === null)
|
|
218
|
+
return undefined;
|
|
219
|
+
if (value === undefined)
|
|
220
|
+
throw contractViolation("explicit_null_not_absence", field);
|
|
221
|
+
return decode(value);
|
|
222
|
+
}
|
|
223
|
+
function decodeSession(value) {
|
|
224
|
+
if (!isObject(value))
|
|
225
|
+
throw contractViolation("object");
|
|
226
|
+
exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.sessionKeys, "exact_live_update_session_shape");
|
|
227
|
+
const outcome = value.outcome;
|
|
228
|
+
// A value this build does not know is a contract violation, never a silent
|
|
229
|
+
// demotion to `unknown`: an unrecognised outcome could be a NEW way to say
|
|
230
|
+
// "ended", and rendering it as "we could not tell" would understate it.
|
|
231
|
+
if (typeof outcome !== "string" || !OUTCOMES.has(outcome)) {
|
|
232
|
+
throw contractViolation("known_enum_value", "outcome");
|
|
233
|
+
}
|
|
234
|
+
return Object.freeze({
|
|
235
|
+
agentSessionId: uuid(value.agent_session_id, "agent_session_id"),
|
|
236
|
+
processEpoch: uuid(value.process_epoch, "process_epoch"),
|
|
237
|
+
outcome: outcome,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function decodeDeclaredSession(value) {
|
|
241
|
+
if (!isObject(value))
|
|
242
|
+
throw contractViolation("object");
|
|
243
|
+
exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.recovery.declaredSessionKeys, "exact_live_update_declared_session_shape");
|
|
244
|
+
return Object.freeze({
|
|
245
|
+
agentSessionId: uuid(value.agent_session_id, "agent_session_id"),
|
|
246
|
+
processEpoch: uuid(value.process_epoch, "process_epoch"),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
function decodeSessionArray(value, field, decode) {
|
|
250
|
+
if (!Array.isArray(value) || value.length > SUPERVISOR_LIVE_UPDATE_WIRE.maximumSessions) {
|
|
251
|
+
throw contractViolation("bounded_live_update_session_array", field);
|
|
252
|
+
}
|
|
253
|
+
const items = value.map((item, index) => underIndex(field, index, () => decode(item)));
|
|
254
|
+
// One AgentSession may not appear twice: two rows for one id would let a
|
|
255
|
+
// `preserved` and an `ended` verdict coexist for the same process.
|
|
256
|
+
if (new Set(items.map((item) => item.agentSessionId)).size !== items.length) {
|
|
257
|
+
throw contractViolation("distinct_agent_sessions", field);
|
|
258
|
+
}
|
|
259
|
+
return items;
|
|
260
|
+
}
|
|
261
|
+
function decodeFailure(value) {
|
|
262
|
+
if (!isObject(value))
|
|
263
|
+
throw contractViolation("object", "failure");
|
|
264
|
+
exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.recovery.failureKeys, "exact_live_update_failure_shape");
|
|
265
|
+
const status = value.status;
|
|
266
|
+
if (!Number.isSafeInteger(status) || Number(status) < 400 || Number(status) > 599) {
|
|
267
|
+
throw contractViolation("problem_status", "failure.status");
|
|
268
|
+
}
|
|
269
|
+
const code = value.code;
|
|
270
|
+
if (typeof code !== "string" || !PROBLEM_CODE.test(code)) {
|
|
271
|
+
throw contractViolation("problem_code", "failure.code");
|
|
272
|
+
}
|
|
273
|
+
const title = value.title;
|
|
274
|
+
if (typeof title !== "string" || title.length < 1 || title.length > 120) {
|
|
275
|
+
throw contractViolation("bounded_title", "failure.title");
|
|
276
|
+
}
|
|
277
|
+
const detail = value.detail;
|
|
278
|
+
if (typeof detail !== "string" || detail.length < 1 || detail.length > 500) {
|
|
279
|
+
throw contractViolation("bounded_detail", "failure.detail");
|
|
280
|
+
}
|
|
281
|
+
if (typeof value.retryable !== "boolean") {
|
|
282
|
+
throw contractViolation("boolean", "failure.retryable");
|
|
283
|
+
}
|
|
284
|
+
const action = value.action;
|
|
285
|
+
if (typeof action !== "string" || !FAILURE_ACTIONS.has(action)) {
|
|
286
|
+
throw contractViolation("known_enum_value", "failure.action");
|
|
287
|
+
}
|
|
288
|
+
return Object.freeze({
|
|
289
|
+
status: Number(status),
|
|
290
|
+
code,
|
|
291
|
+
title,
|
|
292
|
+
detail,
|
|
293
|
+
retryable: value.retryable,
|
|
294
|
+
action: action,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
/** Strict: the producer declares `additionalProperties: false` on both objects. */
|
|
298
|
+
export function decodeSupervisorLiveUpdate(value) {
|
|
299
|
+
if (!isObject(value))
|
|
300
|
+
throw contractViolation("object");
|
|
301
|
+
exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.responseKeys, "exact_live_update_result_shape");
|
|
302
|
+
const controlGeneration = value.control_generation;
|
|
303
|
+
if (!Number.isSafeInteger(controlGeneration) || Number(controlGeneration) < 1) {
|
|
304
|
+
throw contractViolation("safe_positive_integer", "control_generation");
|
|
305
|
+
}
|
|
306
|
+
const artifactSha256 = value.artifact_sha256;
|
|
307
|
+
if (typeof artifactSha256 !== "string" || !SHA256.test(artifactSha256)) {
|
|
308
|
+
throw contractViolation("sha256_digest", "artifact_sha256");
|
|
309
|
+
}
|
|
310
|
+
const sessions = decodeSessionArray(value.agent_sessions, "agent_sessions", decodeSession);
|
|
311
|
+
return Object.freeze({
|
|
312
|
+
machine: decodeMachineItem(value.machine),
|
|
313
|
+
operationId: uuid(value.operation_id, "operation_id"),
|
|
314
|
+
controlGeneration: Number(controlGeneration),
|
|
315
|
+
artifactSha256,
|
|
316
|
+
installedAt: timestamp(value.installed_at, "installed_at"),
|
|
317
|
+
sessions: Object.freeze(sessions),
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* The authoritative phase and known result of ONE owned in-place update.
|
|
322
|
+
*
|
|
323
|
+
* Everything optional here is optional because the producer types it nullable,
|
|
324
|
+
* and every one of those nulls means "Cuna has not established this". None of
|
|
325
|
+
* them is defaulted: a `control_generation` of null is not generation zero, an
|
|
326
|
+
* empty `agent_sessions` is not a set of `unknown` outcomes, and an
|
|
327
|
+
* `installed_at` with `installation_evidence: reconciled` is when Cuna LOOKED,
|
|
328
|
+
* not when the artifact arrived.
|
|
329
|
+
*/
|
|
330
|
+
export function decodeSupervisorLiveUpdateOperation(value) {
|
|
331
|
+
if (!isObject(value))
|
|
332
|
+
throw contractViolation("object");
|
|
333
|
+
exactKeys(value, SUPERVISOR_LIVE_UPDATE_WIRE.recovery.operationKeys, "exact_live_update_operation_shape");
|
|
334
|
+
const phase = value.phase;
|
|
335
|
+
if (typeof phase !== "string" || !PHASES.has(phase)) {
|
|
336
|
+
throw contractViolation("known_enum_value", "phase");
|
|
337
|
+
}
|
|
338
|
+
if (typeof value.control_rotated !== "boolean") {
|
|
339
|
+
throw contractViolation("boolean", "control_rotated");
|
|
340
|
+
}
|
|
341
|
+
const installerOutcome = value.installer_outcome;
|
|
342
|
+
if (typeof installerOutcome !== "string" || !INSTALLER_OUTCOMES.has(installerOutcome)) {
|
|
343
|
+
throw contractViolation("known_enum_value", "installer_outcome");
|
|
344
|
+
}
|
|
345
|
+
const nextAction = value.next_action;
|
|
346
|
+
if (typeof nextAction !== "string" || !NEXT_ACTIONS.has(nextAction)) {
|
|
347
|
+
throw contractViolation("known_enum_value", "next_action");
|
|
348
|
+
}
|
|
349
|
+
const controlGeneration = nullable(value.control_generation, "control_generation", (raw) => {
|
|
350
|
+
if (!Number.isSafeInteger(raw) || Number(raw) < 1) {
|
|
351
|
+
throw contractViolation("safe_positive_integer", "control_generation");
|
|
352
|
+
}
|
|
353
|
+
return Number(raw);
|
|
354
|
+
});
|
|
355
|
+
const artifactSha256 = nullable(value.artifact_sha256, "artifact_sha256", (raw) => {
|
|
356
|
+
if (typeof raw !== "string" || !SHA256.test(raw)) {
|
|
357
|
+
throw contractViolation("sha256_digest", "artifact_sha256");
|
|
358
|
+
}
|
|
359
|
+
return raw;
|
|
360
|
+
});
|
|
361
|
+
const installedAt = nullable(value.installed_at, "installed_at", (raw) => timestamp(raw, "installed_at"));
|
|
362
|
+
const installationEvidence = nullable(value.installation_evidence, "installation_evidence", (raw) => {
|
|
363
|
+
if (typeof raw !== "string" || !INSTALLATION_EVIDENCE.has(raw)) {
|
|
364
|
+
throw contractViolation("known_enum_value", "installation_evidence");
|
|
365
|
+
}
|
|
366
|
+
return raw;
|
|
367
|
+
});
|
|
368
|
+
const failure = nullable(value.failure, "failure", decodeFailure);
|
|
369
|
+
const settledAt = nullable(value.settled_at, "settled_at", (raw) => timestamp(raw, "settled_at"));
|
|
370
|
+
const retiredAt = nullable(value.retired_at, "retired_at", (raw) => timestamp(raw, "retired_at"));
|
|
371
|
+
const retirementOutcome = nullable(value.retirement_outcome, "retirement_outcome", (raw) => {
|
|
372
|
+
if (typeof raw !== "string" || !RETIREMENT_OUTCOMES.has(raw)) {
|
|
373
|
+
throw contractViolation("known_enum_value", "retirement_outcome");
|
|
374
|
+
}
|
|
375
|
+
return raw;
|
|
376
|
+
});
|
|
377
|
+
// The producer's own invariant, and the one a renderer would otherwise have to
|
|
378
|
+
// guess at: only a settled operation is finished with, and only a settled one
|
|
379
|
+
// stops asking for the same identity back.
|
|
380
|
+
if ((phase === "settled") !== (nextAction === "none")) {
|
|
381
|
+
throw contractViolation("settled_phase_agrees_with_next_action", "next_action");
|
|
382
|
+
}
|
|
383
|
+
if ((phase === "settled") !== (settledAt !== undefined)) {
|
|
384
|
+
throw contractViolation("settled_phase_agrees_with_settled_at", "settled_at");
|
|
385
|
+
}
|
|
386
|
+
// The producer's own column constraint, `(retired_at is null) =
|
|
387
|
+
// (retirement_receipt is null)`. One of the two alone is a row the producer
|
|
388
|
+
// forbids, and accepting it would let a surface say "the installer can no
|
|
389
|
+
// longer act" with nothing recording what it had already done, or the reverse.
|
|
390
|
+
if ((retiredAt !== undefined) !== (retirementOutcome !== undefined)) {
|
|
391
|
+
throw contractViolation("retirement_time_agrees_with_retirement_outcome", "retirement_outcome");
|
|
392
|
+
}
|
|
393
|
+
// `supervisor_live_update_retirement_after_rotation`: nothing can be retired
|
|
394
|
+
// that never authorized an installer. A retirement on an operation that never
|
|
395
|
+
// rotated control would be a fence raised against nothing.
|
|
396
|
+
if (retiredAt !== undefined && !value.control_rotated) {
|
|
397
|
+
throw contractViolation("retirement_follows_control_rotation", "retired_at");
|
|
398
|
+
}
|
|
399
|
+
// `supervisor_live_update_unknown_settles_only_on_retirement`: the retirement
|
|
400
|
+
// receipt is the ONLY evidence on which an unobserved installer outcome may
|
|
401
|
+
// settle. This is the invariant the whole presentation rests on -- it is what
|
|
402
|
+
// makes "settled and unknown" mean "it never ran and can no longer run"
|
|
403
|
+
// rather than "nobody ever found out" -- so a row that settles `unknown`
|
|
404
|
+
// without it is refused here rather than rendered as either.
|
|
405
|
+
//
|
|
406
|
+
// Deliberately NOT the converse. A retired operation may still be open: a
|
|
407
|
+
// `partial` receipt whose Machine still reports an outstanding systemd job
|
|
408
|
+
// cannot settle, and the producer records the fence anyway because raising it
|
|
409
|
+
// is true regardless and is what stops a new effect from starting.
|
|
410
|
+
if (phase === "settled" && installerOutcome === "unknown" && retiredAt === undefined) {
|
|
411
|
+
throw contractViolation("settled_unknown_carries_retirement", "retired_at");
|
|
412
|
+
}
|
|
413
|
+
return Object.freeze({
|
|
414
|
+
operationId: uuid(value.operation_id, "operation_id"),
|
|
415
|
+
machineId: uuid(value.machine_id, "machine_id"),
|
|
416
|
+
phase: phase,
|
|
417
|
+
controlRotated: value.control_rotated,
|
|
418
|
+
installerOutcome: installerOutcome,
|
|
419
|
+
...(controlGeneration === undefined ? {} : { controlGeneration }),
|
|
420
|
+
...(artifactSha256 === undefined ? {} : { artifactSha256 }),
|
|
421
|
+
...(installedAt === undefined ? {} : { installedAt }),
|
|
422
|
+
...(installationEvidence === undefined ? {} : { installationEvidence }),
|
|
423
|
+
declaredSessions: Object.freeze(decodeSessionArray(value.declared_sessions, "declared_sessions", decodeDeclaredSession)),
|
|
424
|
+
sessions: Object.freeze(decodeSessionArray(value.agent_sessions, "agent_sessions", decodeSession)),
|
|
425
|
+
...(failure === undefined ? {} : { failure }),
|
|
426
|
+
nextAction: nextAction,
|
|
427
|
+
claimedAt: timestamp(value.claimed_at, "claimed_at"),
|
|
428
|
+
updatedAt: timestamp(value.updated_at, "updated_at"),
|
|
429
|
+
...(settledAt === undefined ? {} : { settledAt }),
|
|
430
|
+
...(retiredAt === undefined ? {} : { retiredAt }),
|
|
431
|
+
...(retirementOutcome === undefined ? {} : { retirementOutcome }),
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=supervisor-live-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-live-update.js","sourceRoot":"","sources":["../../src/api/supervisor-live-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Public terminal reasons are reviewed codes, never provider output. */
|
|
2
|
+
export declare const TERMINAL_REASONS: readonly ["process_exited", "process_not_observed", "owner_unrecoverable", "opencode_server_exited", "terminal_model_terminated_unobserved", "session_executable_allowlist", "session_executable_unavailable", "session_executable_permissions", "session_executable_owner", "session_executable_location", "canonical_launch_interrupted", "machine_restarted"];
|
|
3
|
+
export type TerminalReason = typeof TERMINAL_REASONS[number];
|
|
4
|
+
export declare function isTerminalReason(value: unknown): value is TerminalReason;
|
|
5
|
+
//# sourceMappingURL=terminal-reason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-reason.d.ts","sourceRoot":"","sources":["../../src/api/terminal-reason.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,kWAMnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Public terminal reasons are reviewed codes, never provider output. */
|
|
2
|
+
export const TERMINAL_REASONS = [
|
|
3
|
+
"process_exited", "process_not_observed", "owner_unrecoverable",
|
|
4
|
+
"opencode_server_exited", "terminal_model_terminated_unobserved",
|
|
5
|
+
"session_executable_allowlist", "session_executable_unavailable",
|
|
6
|
+
"session_executable_permissions", "session_executable_owner",
|
|
7
|
+
"session_executable_location", "canonical_launch_interrupted", "machine_restarted",
|
|
8
|
+
];
|
|
9
|
+
export function isTerminalReason(value) {
|
|
10
|
+
return typeof value === "string" && TERMINAL_REASONS.some(reason => reason === value);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=terminal-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-reason.js","sourceRoot":"","sources":["../../src/api/terminal-reason.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB;IAC/D,wBAAwB,EAAE,sCAAsC;IAChE,8BAA8B,EAAE,gCAAgC;IAChE,gCAAgC,EAAE,0BAA0B;IAC5D,6BAA6B,EAAE,8BAA8B,EAAE,mBAAmB;CAC1E,CAAC;AAIX,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { BrowserOpener } from "./browser.js";
|
|
2
|
+
/**
|
|
3
|
+
* How the continuation URL reached the user.
|
|
4
|
+
*
|
|
5
|
+
* `printed_only` is a success, not a degradation to report as a failure: the
|
|
6
|
+
* printed URL is a complete affordance on its own. Spawning a browser is the
|
|
7
|
+
* convenience, not the mechanism.
|
|
8
|
+
*/
|
|
9
|
+
export type BrowserHandoffOutcome = "opened" | "printed_only";
|
|
10
|
+
/**
|
|
11
|
+
* The terminal side of the browser handoff.
|
|
12
|
+
*
|
|
13
|
+
* Declared here, in the auth layer, and implemented in the CLI layer: this
|
|
14
|
+
* module owns *when* the user is told, and the caller owns *how* it is
|
|
15
|
+
* rendered. Splitting it the other way is how the URL came to be produced and
|
|
16
|
+
* never delivered.
|
|
17
|
+
*/
|
|
18
|
+
export interface BrowserHandoffReporter {
|
|
19
|
+
/**
|
|
20
|
+
* Deliver the continuation URL to the user.
|
|
21
|
+
*
|
|
22
|
+
* Called exactly once, before any open attempt, on every path. This is the
|
|
23
|
+
* only delivery of the URL there is: the console's `/cli/continue` page reads
|
|
24
|
+
* its continuation proof from the URL fragment and refuses to fall back to an
|
|
25
|
+
* older one, and the CLI is the only holder of that fragment. If this is not
|
|
26
|
+
* called, the sign-in cannot be completed by any means.
|
|
27
|
+
*/
|
|
28
|
+
continuationUrl(url: string): void;
|
|
29
|
+
/** The open attempt succeeded. Must not restate the URL. */
|
|
30
|
+
browserOpened(): void;
|
|
31
|
+
/** The open attempt failed. Must not restate the URL. */
|
|
32
|
+
browserOpenFailed(): void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Deliver the browser continuation to the user, then try to open it.
|
|
36
|
+
*
|
|
37
|
+
* The order is the invariant, and it is the reason this is one function rather
|
|
38
|
+
* than two call sites: printing and opening are one obligation with one
|
|
39
|
+
* failure mode. `open` spawns a detached child process, so it can fail on a
|
|
40
|
+
* headless host, over SSH, inside WSL, with no registered default browser, or
|
|
41
|
+
* under a hardened desktop policy. Announcing first makes every one of those a
|
|
42
|
+
* cosmetic loss instead of a dead end.
|
|
43
|
+
*
|
|
44
|
+
* An open failure is therefore contained rather than propagated. The URL has
|
|
45
|
+
* already reached the user by the time it can happen, so failing the sign-in
|
|
46
|
+
* here would discard a working flow because a convenience did not work.
|
|
47
|
+
*
|
|
48
|
+
* `url` is the server-minted `browser_url`, already validated by
|
|
49
|
+
* `decodeCliContinuationIssued` against the bootstrap-advertised origin, the
|
|
50
|
+
* `/cli/continue` path and the exact fragment binding. This function never
|
|
51
|
+
* constructs or edits a URL: the CLI accepts the one authority the service
|
|
52
|
+
* minted and forwards it unchanged.
|
|
53
|
+
*/
|
|
54
|
+
export declare function handOffContinuationToBrowser(input: {
|
|
55
|
+
readonly url: string;
|
|
56
|
+
readonly opener: BrowserOpener;
|
|
57
|
+
readonly reporter: BrowserHandoffReporter;
|
|
58
|
+
}): Promise<BrowserHandoffOutcome>;
|
|
59
|
+
//# sourceMappingURL=browser-handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-handoff.d.ts","sourceRoot":"","sources":["../../src/auth/browser-handoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;OAQG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,4DAA4D;IAC5D,aAAa,IAAI,IAAI,CAAC;IACtB,yDAAyD;IACzD,iBAAiB,IAAI,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAUjC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deliver the browser continuation to the user, then try to open it.
|
|
3
|
+
*
|
|
4
|
+
* The order is the invariant, and it is the reason this is one function rather
|
|
5
|
+
* than two call sites: printing and opening are one obligation with one
|
|
6
|
+
* failure mode. `open` spawns a detached child process, so it can fail on a
|
|
7
|
+
* headless host, over SSH, inside WSL, with no registered default browser, or
|
|
8
|
+
* under a hardened desktop policy. Announcing first makes every one of those a
|
|
9
|
+
* cosmetic loss instead of a dead end.
|
|
10
|
+
*
|
|
11
|
+
* An open failure is therefore contained rather than propagated. The URL has
|
|
12
|
+
* already reached the user by the time it can happen, so failing the sign-in
|
|
13
|
+
* here would discard a working flow because a convenience did not work.
|
|
14
|
+
*
|
|
15
|
+
* `url` is the server-minted `browser_url`, already validated by
|
|
16
|
+
* `decodeCliContinuationIssued` against the bootstrap-advertised origin, the
|
|
17
|
+
* `/cli/continue` path and the exact fragment binding. This function never
|
|
18
|
+
* constructs or edits a URL: the CLI accepts the one authority the service
|
|
19
|
+
* minted and forwards it unchanged.
|
|
20
|
+
*/
|
|
21
|
+
export async function handOffContinuationToBrowser(input) {
|
|
22
|
+
input.reporter.continuationUrl(input.url);
|
|
23
|
+
try {
|
|
24
|
+
await input.opener.open(input.url);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
input.reporter.browserOpenFailed();
|
|
28
|
+
return "printed_only";
|
|
29
|
+
}
|
|
30
|
+
input.reporter.browserOpened();
|
|
31
|
+
return "opened";
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=browser-handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-handoff.js","sourceRoot":"","sources":["../../src/auth/browser-handoff.ts"],"names":[],"mappings":"AAoCA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAIlD;IACC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface BrowserOpener {
|
|
2
|
+
open(url: string): Promise<void>;
|
|
3
|
+
}
|
|
4
|
+
export interface BrowserCommand {
|
|
5
|
+
readonly executable: string;
|
|
6
|
+
readonly args: readonly string[];
|
|
7
|
+
readonly cwd: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveBrowserCommand(platform: NodeJS.Platform, url: string, _environment?: NodeJS.ProcessEnv): BrowserCommand;
|
|
10
|
+
export declare function createBrowserOpener(platform?: NodeJS.Platform, environment?: NodeJS.ProcessEnv): BrowserOpener;
|
|
11
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/auth/browser.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAAM,CAAC,UAAwB,GAC5C,cAAc,CAehB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,aAAa,CAqBf"}
|