@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,136 @@
|
|
|
1
|
+
import type { PlatformAdapter } from '../platform/adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Durable identity for one in-flight owner grant mutation.
|
|
4
|
+
*
|
|
5
|
+
* Modelled on `machines/execution-receipt.ts`: one immutable file per operation
|
|
6
|
+
* ID, written BEFORE the request is dispatched, so a process that dies between
|
|
7
|
+
* dispatch and answer still knows which authority it may have created or which
|
|
8
|
+
* session it may have started sharing. Nothing secret is persisted -- only
|
|
9
|
+
* UUIDs, integers and the operation kind and action. No bearer, no email, no
|
|
10
|
+
* session name, no grant secret.
|
|
11
|
+
*
|
|
12
|
+
* A record's presence means "the outcome of this exact operation is unknown
|
|
13
|
+
* here". It is never permission to replay: replay is an explicit human action
|
|
14
|
+
* that reuses the SAME operation ID, and only the server can say what exists.
|
|
15
|
+
*/
|
|
16
|
+
export interface OwnerGrantOperationScope {
|
|
17
|
+
readonly baseUrl: string;
|
|
18
|
+
readonly profile: string;
|
|
19
|
+
readonly ownerPrincipalId: string;
|
|
20
|
+
readonly projectId: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PendingCreateOperation {
|
|
23
|
+
readonly version: 1;
|
|
24
|
+
readonly scope: string;
|
|
25
|
+
readonly operationId: string;
|
|
26
|
+
readonly kind: 'create';
|
|
27
|
+
readonly agentSessionId: string;
|
|
28
|
+
readonly subjectPrincipalId: string;
|
|
29
|
+
readonly expectedMembershipRevision: number;
|
|
30
|
+
readonly expiresAtMs: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PendingRevokeOperation {
|
|
33
|
+
readonly version: 1;
|
|
34
|
+
readonly scope: string;
|
|
35
|
+
readonly operationId: string;
|
|
36
|
+
readonly kind: 'revoke';
|
|
37
|
+
readonly grantId: string;
|
|
38
|
+
readonly agentSessionId: string;
|
|
39
|
+
readonly subjectPrincipalId: string;
|
|
40
|
+
readonly expectedRevision: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* An unanswered publish or return-to-private.
|
|
44
|
+
*
|
|
45
|
+
* It carries no subject: publication is a property of the session, not of one
|
|
46
|
+
* member. The action is part of the durable identity because
|
|
47
|
+
* `issue_collab_v2_session_audience_request` refuses an operation ID replayed
|
|
48
|
+
* with a different action -- replaying the wrong one would turn a recoverable
|
|
49
|
+
* request into a conflict.
|
|
50
|
+
*/
|
|
51
|
+
export interface PendingAudienceOperation {
|
|
52
|
+
readonly version: 1;
|
|
53
|
+
readonly scope: string;
|
|
54
|
+
readonly operationId: string;
|
|
55
|
+
readonly kind: 'audience';
|
|
56
|
+
readonly action: 'publish' | 'private';
|
|
57
|
+
readonly agentSessionId: string;
|
|
58
|
+
}
|
|
59
|
+
export type PendingOwnerGrantOperation = PendingCreateOperation | PendingRevokeOperation | PendingAudienceOperation;
|
|
60
|
+
export type OwnerGrantOperationIntent = Omit<PendingCreateOperation, 'version' | 'scope'> | Omit<PendingRevokeOperation, 'version' | 'scope'> | Omit<PendingAudienceOperation, 'version' | 'scope'>;
|
|
61
|
+
/**
|
|
62
|
+
* The newest audience fact this computer holds about one run of one AgentSession.
|
|
63
|
+
*
|
|
64
|
+
* It exists because ordering is otherwise per-process: two `cuna share`
|
|
65
|
+
* processes on one state directory each kept their knowledge in a closure, so a
|
|
66
|
+
* reading answered in one could be painted as the present after the other had
|
|
67
|
+
* already confirmed the opposite. This record is the shared ground both read.
|
|
68
|
+
*
|
|
69
|
+
* It is deliberately NOT a clock and NOT a local counter. The order comes from
|
|
70
|
+
* the producer's own arithmetic: `issue_collab_v2_session_audience_request`
|
|
71
|
+
* answers a publish at `expected_generation + 1` and a return to private at
|
|
72
|
+
* `expected_generation`, and refuses to issue while an answer is outstanding.
|
|
73
|
+
* So generation G can only be created by the publish that answers `public@G`,
|
|
74
|
+
* and any `private@G` must have been issued when G already existed -- meaning
|
|
75
|
+
* `public@G` always precedes `private@G`, and nothing can put a second
|
|
76
|
+
* `public@G` after it. `(generation, state)` is therefore a total order over one
|
|
77
|
+
* run, computed in `audienceFactRank`, and no local tie-break is invented.
|
|
78
|
+
*
|
|
79
|
+
* It is bound to the exact run: a fact about another `sessionIncarnation` or
|
|
80
|
+
* `processEpoch` says nothing about this one and is never compared to it.
|
|
81
|
+
* Nothing secret is persisted -- identifiers, a state word and a counter.
|
|
82
|
+
*/
|
|
83
|
+
export interface ConfirmedAudienceFact {
|
|
84
|
+
readonly version: 1;
|
|
85
|
+
readonly scope: string;
|
|
86
|
+
readonly agentSessionId: string;
|
|
87
|
+
readonly sessionIncarnation: string;
|
|
88
|
+
readonly processEpoch: string;
|
|
89
|
+
/** `transition` is a decision this account had confirmed here; `reading` is an answer the session gave here. */
|
|
90
|
+
readonly kind: 'transition' | 'reading';
|
|
91
|
+
readonly state: 'public' | 'private';
|
|
92
|
+
readonly generation: string;
|
|
93
|
+
}
|
|
94
|
+
export type ConfirmedAudienceFactInput = Omit<ConfirmedAudienceFact, 'version' | 'scope'>;
|
|
95
|
+
export interface OwnerGrantOperationStore {
|
|
96
|
+
/** Persist one unresolved operation before its request leaves. Refuses to overwrite an existing identity. */
|
|
97
|
+
reserve(intent: OwnerGrantOperationIntent): Promise<PendingOwnerGrantOperation>;
|
|
98
|
+
/** Drop the record once the outcome is known. Failure to drop over-reports, which is the safe direction. */
|
|
99
|
+
settle(operationId: string): Promise<void>;
|
|
100
|
+
/** Every operation in this scope whose outcome is still unknown here. */
|
|
101
|
+
list(signal?: AbortSignal): Promise<readonly PendingOwnerGrantOperation[]>;
|
|
102
|
+
/** The newest audience fact recorded on this computer for this session, or null. Unreadable bytes throw rather than read as absence. */
|
|
103
|
+
readAudienceFact(agentSessionId: string): Promise<ConfirmedAudienceFact | null>;
|
|
104
|
+
/** Record one fact. A fact the stored one already supersedes is not written, and the stored winner is returned either way. */
|
|
105
|
+
recordAudienceFact(input: ConfirmedAudienceFactInput): Promise<ConfirmedAudienceFact>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The producer's own order over one run, as one number.
|
|
109
|
+
*
|
|
110
|
+
* `2*generation + (private ? 1 : 0)`: a higher generation always wins, and at an
|
|
111
|
+
* equal generation `private` is never older than `public`, because the publish
|
|
112
|
+
* that created G answers `public@G` and every `private@G` is issued after G
|
|
113
|
+
* exists. Equal ranks agree and need no tie-break.
|
|
114
|
+
*/
|
|
115
|
+
export declare function audienceFactRank(fact: {
|
|
116
|
+
state: 'public' | 'private';
|
|
117
|
+
generation: string;
|
|
118
|
+
}): bigint;
|
|
119
|
+
/** True when `candidate` describes a strictly earlier moment of the same run than `held`. */
|
|
120
|
+
export declare function audienceFactIsOlder(candidate: {
|
|
121
|
+
state: 'public' | 'private';
|
|
122
|
+
generation: string;
|
|
123
|
+
}, held: {
|
|
124
|
+
state: 'public' | 'private';
|
|
125
|
+
generation: string;
|
|
126
|
+
}): boolean;
|
|
127
|
+
/** True when two facts describe the same run and can therefore be ordered against each other. */
|
|
128
|
+
export declare function audienceFactSameRun(a: {
|
|
129
|
+
sessionIncarnation: string;
|
|
130
|
+
processEpoch: string;
|
|
131
|
+
}, b: {
|
|
132
|
+
sessionIncarnation: string;
|
|
133
|
+
processEpoch: string;
|
|
134
|
+
}): boolean;
|
|
135
|
+
export declare function ownerGrantOperationStore(platform: PlatformAdapter, scope: OwnerGrantOperationScope): OwnerGrantOperationStore;
|
|
136
|
+
//# sourceMappingURL=owner-grant-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-grant-operations.d.ts","sourceRoot":"","sources":["../../src/runtime/owner-grant-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { lstat, opendir, unlink } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { assertCanonicalUuid } from '../core/validation.js';
|
|
5
|
+
const MAXIMUM_BYTES = 2048;
|
|
6
|
+
const RECORD_NAME = /^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.json$/u;
|
|
7
|
+
const CREATE_KEYS = 'agentSessionId,expectedMembershipRevision,expiresAtMs,kind,operationId,scope,subjectPrincipalId,version';
|
|
8
|
+
const REVOKE_KEYS = 'agentSessionId,expectedRevision,grantId,kind,operationId,scope,subjectPrincipalId,version';
|
|
9
|
+
const AUDIENCE_KEYS = 'action,agentSessionId,kind,operationId,scope,version';
|
|
10
|
+
function scopeDigest(scope) {
|
|
11
|
+
const url = new URL(scope.baseUrl);
|
|
12
|
+
if (url.username || url.password || url.search || url.hash || !['https:', 'http:'].includes(url.protocol) || !scope.profile)
|
|
13
|
+
throw new Error('Invalid owner grant operation scope.');
|
|
14
|
+
assertCanonicalUuid(scope.ownerPrincipalId, 'Principal ID');
|
|
15
|
+
assertCanonicalUuid(scope.projectId, 'Project ID');
|
|
16
|
+
return createHash('sha256').update(JSON.stringify(['owner-observe-grants-v2', url.href, scope.profile, scope.ownerPrincipalId, scope.projectId])).digest('hex');
|
|
17
|
+
}
|
|
18
|
+
function record(scope, intent) {
|
|
19
|
+
const digest = scopeDigest(scope);
|
|
20
|
+
assertCanonicalUuid(intent.operationId, 'Operation ID');
|
|
21
|
+
assertCanonicalUuid(intent.agentSessionId, 'AgentSession ID');
|
|
22
|
+
if (intent.kind === 'audience') {
|
|
23
|
+
if (intent.action !== 'publish' && intent.action !== 'private')
|
|
24
|
+
throw new Error('Invalid sharing action.');
|
|
25
|
+
return Object.freeze({ version: 1, scope: digest, operationId: intent.operationId, kind: 'audience', action: intent.action, agentSessionId: intent.agentSessionId });
|
|
26
|
+
}
|
|
27
|
+
assertCanonicalUuid(intent.subjectPrincipalId, 'Principal ID');
|
|
28
|
+
if (intent.kind === 'create') {
|
|
29
|
+
if (!Number.isSafeInteger(intent.expectedMembershipRevision) || intent.expectedMembershipRevision < 1)
|
|
30
|
+
throw new Error('Invalid membership revision.');
|
|
31
|
+
if (!Number.isSafeInteger(intent.expiresAtMs) || intent.expiresAtMs < 0)
|
|
32
|
+
throw new Error('Invalid expiry.');
|
|
33
|
+
return Object.freeze({ version: 1, scope: digest, operationId: intent.operationId, kind: 'create', agentSessionId: intent.agentSessionId, subjectPrincipalId: intent.subjectPrincipalId, expectedMembershipRevision: intent.expectedMembershipRevision, expiresAtMs: intent.expiresAtMs });
|
|
34
|
+
}
|
|
35
|
+
assertCanonicalUuid(intent.grantId, 'Grant ID');
|
|
36
|
+
if (!Number.isSafeInteger(intent.expectedRevision) || intent.expectedRevision < 1)
|
|
37
|
+
throw new Error('Invalid grant revision.');
|
|
38
|
+
return Object.freeze({ version: 1, scope: digest, operationId: intent.operationId, kind: 'revoke', grantId: intent.grantId, agentSessionId: intent.agentSessionId, subjectPrincipalId: intent.subjectPrincipalId, expectedRevision: intent.expectedRevision });
|
|
39
|
+
}
|
|
40
|
+
const AUDIENCE_FACT_KEYS = 'agentSessionId,generation,kind,processEpoch,scope,sessionIncarnation,state,version';
|
|
41
|
+
/**
|
|
42
|
+
* The producer's own order over one run, as one number.
|
|
43
|
+
*
|
|
44
|
+
* `2*generation + (private ? 1 : 0)`: a higher generation always wins, and at an
|
|
45
|
+
* equal generation `private` is never older than `public`, because the publish
|
|
46
|
+
* that created G answers `public@G` and every `private@G` is issued after G
|
|
47
|
+
* exists. Equal ranks agree and need no tie-break.
|
|
48
|
+
*/
|
|
49
|
+
export function audienceFactRank(fact) {
|
|
50
|
+
return BigInt(fact.generation) * 2n + (fact.state === 'private' ? 1n : 0n);
|
|
51
|
+
}
|
|
52
|
+
/** True when `candidate` describes a strictly earlier moment of the same run than `held`. */
|
|
53
|
+
export function audienceFactIsOlder(candidate, held) {
|
|
54
|
+
return audienceFactRank(candidate) < audienceFactRank(held);
|
|
55
|
+
}
|
|
56
|
+
/** True when two facts describe the same run and can therefore be ordered against each other. */
|
|
57
|
+
export function audienceFactSameRun(a, b) {
|
|
58
|
+
return a.sessionIncarnation === b.sessionIncarnation && a.processEpoch === b.processEpoch;
|
|
59
|
+
}
|
|
60
|
+
function audienceFact(scope, input) {
|
|
61
|
+
const digest = scopeDigest(scope);
|
|
62
|
+
assertCanonicalUuid(input.agentSessionId, 'AgentSession ID');
|
|
63
|
+
assertCanonicalUuid(input.sessionIncarnation, 'Session incarnation');
|
|
64
|
+
assertCanonicalUuid(input.processEpoch, 'Process epoch');
|
|
65
|
+
if (input.kind !== 'transition' && input.kind !== 'reading')
|
|
66
|
+
throw new Error('Invalid audience fact kind.');
|
|
67
|
+
if (input.state !== 'public' && input.state !== 'private')
|
|
68
|
+
throw new Error('Invalid audience state.');
|
|
69
|
+
if (!/^(?:0|[1-9][0-9]{0,19})$/u.test(input.generation) || BigInt(input.generation) > 18446744073709551615n)
|
|
70
|
+
throw new Error('Invalid audience generation.');
|
|
71
|
+
return Object.freeze({ version: 1, scope: digest, agentSessionId: input.agentSessionId, sessionIncarnation: input.sessionIncarnation, processEpoch: input.processEpoch, kind: input.kind, state: input.state, generation: input.generation });
|
|
72
|
+
}
|
|
73
|
+
export function ownerGrantOperationStore(platform, scope) {
|
|
74
|
+
const digest = scopeDigest(scope);
|
|
75
|
+
const directory = join(platform.paths.stateDirectory, 'owner-observe-grants-v2', digest);
|
|
76
|
+
const file = (operationId) => join(directory, `${operationId}.json`);
|
|
77
|
+
// A separate tree, so an audience fact can never be mistaken for an unresolved
|
|
78
|
+
// operation by `list()` and cannot make that scan fail closed.
|
|
79
|
+
const factFile = (agentSessionId) => { assertCanonicalUuid(agentSessionId, 'AgentSession ID'); return join(platform.paths.stateDirectory, 'owner-audience-facts-v2', digest, `${agentSessionId}.json`); };
|
|
80
|
+
const readFact = async (agentSessionId) => {
|
|
81
|
+
const path = factFile(agentSessionId);
|
|
82
|
+
const snapshot = await platform.readSafeConfig(path, MAXIMUM_BYTES);
|
|
83
|
+
if (!snapshot.exists)
|
|
84
|
+
return null;
|
|
85
|
+
let value;
|
|
86
|
+
try {
|
|
87
|
+
value = JSON.parse(snapshot.text ?? '');
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
throw new Error(`A local audience state record is unreadable: ${path}`);
|
|
91
|
+
}
|
|
92
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
93
|
+
throw new Error(`Invalid local audience state record: ${path}`);
|
|
94
|
+
const row = value;
|
|
95
|
+
if (row.version !== 1 || row.scope !== digest || row.agentSessionId !== agentSessionId || Object.keys(row).sort().join(',') !== AUDIENCE_FACT_KEYS)
|
|
96
|
+
throw new Error(`Invalid local audience state record: ${path}`);
|
|
97
|
+
return audienceFact(scope, row);
|
|
98
|
+
};
|
|
99
|
+
const store = {
|
|
100
|
+
async reserve(intent) {
|
|
101
|
+
const value = record(scope, intent);
|
|
102
|
+
const text = JSON.stringify(value) + '\n';
|
|
103
|
+
const previous = await platform.readSafeConfig(file(value.operationId), MAXIMUM_BYTES);
|
|
104
|
+
if (previous.exists)
|
|
105
|
+
throw new Error('This operation ID already has an unresolved record. Resolve it before starting another.');
|
|
106
|
+
await platform.writeSafeConfig(file(value.operationId), text, MAXIMUM_BYTES);
|
|
107
|
+
const saved = await platform.readSafeConfig(file(value.operationId), MAXIMUM_BYTES);
|
|
108
|
+
if (!saved.exists || saved.text !== text)
|
|
109
|
+
throw new Error('The operation record could not be verified. Nothing was sent.');
|
|
110
|
+
return value;
|
|
111
|
+
},
|
|
112
|
+
async settle(operationId) {
|
|
113
|
+
assertCanonicalUuid(operationId, 'Operation ID');
|
|
114
|
+
const path = file(operationId);
|
|
115
|
+
try {
|
|
116
|
+
const metadata = await lstat(path);
|
|
117
|
+
if (metadata.isSymbolicLink() || !metadata.isFile())
|
|
118
|
+
throw new Error('Unsafe owner grant operation record.');
|
|
119
|
+
await unlink(path);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
if (error.code === 'ENOENT')
|
|
123
|
+
return;
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
async list(signal) {
|
|
128
|
+
signal?.throwIfAborted();
|
|
129
|
+
const root = join(platform.paths.stateDirectory, 'owner-observe-grants-v2');
|
|
130
|
+
try {
|
|
131
|
+
for (const target of [root, directory]) {
|
|
132
|
+
const metadata = await lstat(target);
|
|
133
|
+
if (!metadata.isDirectory() || metadata.isSymbolicLink())
|
|
134
|
+
throw new Error('Unsafe owner grant operation directory.');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (error.code === 'ENOENT')
|
|
139
|
+
return Object.freeze([]);
|
|
140
|
+
throw new Error('Local owner grant operation records cannot be read safely.');
|
|
141
|
+
}
|
|
142
|
+
const items = [];
|
|
143
|
+
let scanned = 0;
|
|
144
|
+
for await (const entry of await opendir(directory)) {
|
|
145
|
+
signal?.throwIfAborted();
|
|
146
|
+
if (++scanned > 4096)
|
|
147
|
+
throw new Error('Too many local operation records to list safely. No partial result is shown.');
|
|
148
|
+
const match = RECORD_NAME.exec(entry.name);
|
|
149
|
+
if (match === null)
|
|
150
|
+
continue;
|
|
151
|
+
const path = join(directory, entry.name);
|
|
152
|
+
if (!entry.isFile() || entry.isSymbolicLink())
|
|
153
|
+
throw new Error(`Unsafe owner grant operation record: ${path}`);
|
|
154
|
+
const snapshot = await platform.readSafeConfig(path, MAXIMUM_BYTES);
|
|
155
|
+
let value;
|
|
156
|
+
try {
|
|
157
|
+
value = JSON.parse(snapshot.text ?? '');
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
throw new Error(`A local owner grant operation record is unreadable: ${path}`);
|
|
161
|
+
}
|
|
162
|
+
// Failing closed is the safe direction, but a message that named no file
|
|
163
|
+
// left no way back: one unreadable record refuses the whole scope, and the
|
|
164
|
+
// person could not know which file to move aside.
|
|
165
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
166
|
+
throw new Error(`Invalid local owner grant operation record: ${path}`);
|
|
167
|
+
const row = value;
|
|
168
|
+
const keys = Object.keys(row).sort().join(',');
|
|
169
|
+
if (row.version !== 1 || row.scope !== digest || row.operationId !== match[1] || (row.kind === 'create' ? keys !== CREATE_KEYS : row.kind === 'revoke' ? keys !== REVOKE_KEYS : row.kind === 'audience' ? keys !== AUDIENCE_KEYS : true))
|
|
170
|
+
throw new Error(`Invalid local owner grant operation record: ${path}`);
|
|
171
|
+
items.push(record(scope, row));
|
|
172
|
+
}
|
|
173
|
+
signal?.throwIfAborted();
|
|
174
|
+
return Object.freeze(items.sort((a, b) => a.operationId.localeCompare(b.operationId)));
|
|
175
|
+
},
|
|
176
|
+
readAudienceFact: agentSessionId => readFact(agentSessionId),
|
|
177
|
+
/**
|
|
178
|
+
* Record one fact, keeping whichever of the two describes the later moment.
|
|
179
|
+
*
|
|
180
|
+
* A fact about a different run replaces the stored one outright: the counter
|
|
181
|
+
* restarts with the run, so the old one cannot be compared and must not be
|
|
182
|
+
* allowed to order anything about the new one.
|
|
183
|
+
*
|
|
184
|
+
* There is no cross-process lock here, and none can be built from the
|
|
185
|
+
* primitives this store has. Two processes writing at once can lose one
|
|
186
|
+
* write, so the read-back below re-merges once against whatever actually
|
|
187
|
+
* landed; a fact that is still missing after that is reported rather than
|
|
188
|
+
* assumed. The residual window is stated in the delivery, not papered over.
|
|
189
|
+
*/
|
|
190
|
+
async recordAudienceFact(input) {
|
|
191
|
+
const next = audienceFact(scope, input), path = factFile(next.agentSessionId);
|
|
192
|
+
/** True when what is stored already describes this run at or after `next`. */
|
|
193
|
+
const supersedes = (stored) => stored !== null && audienceFactSameRun(stored, next) && !audienceFactIsOlder(stored, next);
|
|
194
|
+
const current = await readFact(next.agentSessionId);
|
|
195
|
+
if (supersedes(current))
|
|
196
|
+
return current;
|
|
197
|
+
const text = JSON.stringify(next) + '\n';
|
|
198
|
+
await platform.writeSafeConfig(path, text, MAXIMUM_BYTES);
|
|
199
|
+
const saved = await readFact(next.agentSessionId);
|
|
200
|
+
if (saved === null)
|
|
201
|
+
throw new Error('The audience state record could not be verified after writing.');
|
|
202
|
+
if (supersedes(saved))
|
|
203
|
+
return saved;
|
|
204
|
+
// An older fact landed between the read and the write. Re-merge once against
|
|
205
|
+
// what is actually there; either way the store ends holding a fact some
|
|
206
|
+
// process really observed, never one invented to break a tie.
|
|
207
|
+
await platform.writeSafeConfig(path, text, MAXIMUM_BYTES);
|
|
208
|
+
const settled = await readFact(next.agentSessionId);
|
|
209
|
+
if (settled === null)
|
|
210
|
+
throw new Error('The audience state record could not be verified after writing.');
|
|
211
|
+
return settled;
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
return Object.freeze(store);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=owner-grant-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-grant-operations.js","sourceRoot":"","sources":["../../src/runtime/owner-grant-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ForegroundTerminalHost } from '../terminal/foreground.js';
|
|
2
|
+
import { type ownerObserveGrantsApi } from '../api/owner-observe-grants-v2.js';
|
|
3
|
+
import { type OwnerGrantOperationStore } from './owner-grant-operations.js';
|
|
4
|
+
/** One session the owner may share. `projectId` undefined means the server did not name one. */
|
|
5
|
+
export type ShareableSession = {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
agent: string;
|
|
9
|
+
machineName: string;
|
|
10
|
+
state: string;
|
|
11
|
+
projectId?: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* What one listing pass actually saw.
|
|
15
|
+
*
|
|
16
|
+
* The reads behind this are bounded -- a fixed number of Machines, one page of
|
|
17
|
+
* AgentSessions each -- so a listing can be a strict subset of what exists. A
|
|
18
|
+
* screen that shows a subset while implying completeness is a false statement
|
|
19
|
+
* about the owner's own account, so the bounds are reported, not hidden.
|
|
20
|
+
*/
|
|
21
|
+
export type ShareableSessionListing = {
|
|
22
|
+
items: ShareableSession[];
|
|
23
|
+
omittedMachines: number;
|
|
24
|
+
machinesWithMoreSessions: number;
|
|
25
|
+
};
|
|
26
|
+
export interface ShareableSessionSource {
|
|
27
|
+
list(signal: AbortSignal): Promise<ShareableSessionListing>;
|
|
28
|
+
}
|
|
29
|
+
type Api = ReturnType<typeof ownerObserveGrantsApi>;
|
|
30
|
+
export declare function runOwnerGrantsScreen(api: Api, sessions: ShareableSessionSource, store: OwnerGrantOperationStore, identity: {
|
|
31
|
+
project: string;
|
|
32
|
+
owner: string;
|
|
33
|
+
}, options?: {
|
|
34
|
+
host?: ForegroundTerminalHost;
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
initialGrantId?: string;
|
|
37
|
+
now?: () => number;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=owner-grants-screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-grants-screen.d.ts","sourceRoot":"","sources":["../../src/runtime/owner-grants-screen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAsF,KAAK,qBAAqB,EAA4I,MAAM,mCAAmC,CAAC;AAC7S,OAAO,EAAoG,KAAK,wBAAwB,EAAiC,MAAM,6BAA6B,CAAC;AAE7M,gGAAgG;AAChG,MAAM,MAAM,gBAAgB,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,CAAC;AACpH;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAC;IAAC,KAAK,EAAC,gBAAgB,EAAE,CAAC;IAAA,eAAe,EAAC,MAAM,CAAC;IAAA,wBAAwB,EAAC,MAAM,CAAA;CAAC,CAAC;AACtH,MAAM,WAAW,sBAAsB;IAAC,IAAI,CAAC,MAAM,EAAC,WAAW,GAAE,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAAC;AAClG,KAAK,GAAG,GAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAoDlD,wBAAsB,oBAAoB,CAAC,GAAG,EAAC,GAAG,EAAC,QAAQ,EAAC,sBAAsB,EAAC,KAAK,EAAC,wBAAwB,EAAC,QAAQ,EAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAA;CAAC,EAAC,OAAO,GAAC;IAAC,IAAI,CAAC,EAAC,sBAAsB,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAC;IAAA,cAAc,CAAC,EAAC,MAAM,CAAC;IAAA,GAAG,CAAC,EAAC,MAAI,MAAM,CAAA;CAAI,GAAE,OAAO,CAAC,IAAI,CAAC,CAolB3Q"}
|