@maiaos/node 0.1.0-canary.44938d4.manual.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +517 -0
- package/dist/admin-monitor/application-projection.d.ts +27 -0
- package/dist/admin-monitor/application-projection.d.ts.map +1 -0
- package/dist/admin-monitor/application-projection.js +299 -0
- package/dist/admin-monitor/application-projection.js.map +1 -0
- package/dist/admin-monitor/application-reads.d.ts +20 -0
- package/dist/admin-monitor/application-reads.d.ts.map +1 -0
- package/dist/admin-monitor/application-reads.js +82 -0
- package/dist/admin-monitor/application-reads.js.map +1 -0
- package/dist/admin-monitor/assets.d.ts +7 -0
- package/dist/admin-monitor/assets.d.ts.map +1 -0
- package/dist/admin-monitor/assets.js +506 -0
- package/dist/admin-monitor/assets.js.map +1 -0
- package/dist/admin-monitor/housekeeping.d.ts +12 -0
- package/dist/admin-monitor/housekeeping.d.ts.map +1 -0
- package/dist/admin-monitor/housekeeping.js +59 -0
- package/dist/admin-monitor/housekeeping.js.map +1 -0
- package/dist/admin-monitor/http.d.ts +22 -0
- package/dist/admin-monitor/http.d.ts.map +1 -0
- package/dist/admin-monitor/http.js +219 -0
- package/dist/admin-monitor/http.js.map +1 -0
- package/dist/admin-monitor/listener.d.ts +9 -0
- package/dist/admin-monitor/listener.d.ts.map +1 -0
- package/dist/admin-monitor/listener.js +118 -0
- package/dist/admin-monitor/listener.js.map +1 -0
- package/dist/admin-monitor/model.d.ts +71 -0
- package/dist/admin-monitor/model.d.ts.map +1 -0
- package/dist/admin-monitor/model.js +31 -0
- package/dist/admin-monitor/model.js.map +1 -0
- package/dist/admin-monitor/projection.d.ts +10 -0
- package/dist/admin-monitor/projection.d.ts.map +1 -0
- package/dist/admin-monitor/projection.js +48 -0
- package/dist/admin-monitor/projection.js.map +1 -0
- package/dist/admin-monitor/routes.d.ts +13 -0
- package/dist/admin-monitor/routes.d.ts.map +1 -0
- package/dist/admin-monitor/routes.js +290 -0
- package/dist/admin-monitor/routes.js.map +1 -0
- package/dist/admin-monitor/service.d.ts +5 -0
- package/dist/admin-monitor/service.d.ts.map +1 -0
- package/dist/admin-monitor/service.js +155 -0
- package/dist/admin-monitor/service.js.map +1 -0
- package/dist/application/control-request.d.ts +38 -0
- package/dist/application/control-request.d.ts.map +1 -0
- package/dist/application/control-request.js +164 -0
- package/dist/application/control-request.js.map +1 -0
- package/dist/application/run-desktop-node.d.ts +18 -0
- package/dist/application/run-desktop-node.d.ts.map +1 -0
- package/dist/application/run-desktop-node.js +482 -0
- package/dist/application/run-desktop-node.js.map +1 -0
- package/dist/bin/maia-node.NOTICES.txt +100 -0
- package/dist/bin/maia-node.cdx.json +273 -0
- package/dist/bin/maia-node.d.ts +3 -0
- package/dist/bin/maia-node.d.ts.map +1 -0
- package/dist/bin/maia-node.meta.json +1 -0
- package/dist/bin/maia-node.mjs +4546 -0
- package/dist/bin/maia-node.mjs.map +6 -0
- package/dist/bin/maia-node.release.json +90 -0
- package/dist/bin/maia-process-host-darwin-arm64 +0 -0
- package/dist/bin/maia-process-host-darwin-arm64.build.json +59 -0
- package/dist/command-receipt/storage/codec.d.ts +16 -0
- package/dist/command-receipt/storage/codec.d.ts.map +1 -0
- package/dist/command-receipt/storage/codec.js +51 -0
- package/dist/command-receipt/storage/codec.js.map +1 -0
- package/dist/command-receipt/storage/cursor.d.ts +7 -0
- package/dist/command-receipt/storage/cursor.d.ts.map +1 -0
- package/dist/command-receipt/storage/cursor.js +62 -0
- package/dist/command-receipt/storage/cursor.js.map +1 -0
- package/dist/command-receipt/storage/list.d.ts +28 -0
- package/dist/command-receipt/storage/list.d.ts.map +1 -0
- package/dist/command-receipt/storage/list.js +113 -0
- package/dist/command-receipt/storage/list.js.map +1 -0
- package/dist/configuration/document-role.d.ts +4 -0
- package/dist/configuration/document-role.d.ts.map +1 -0
- package/dist/configuration/document-role.js +10 -0
- package/dist/configuration/document-role.js.map +1 -0
- package/dist/configuration/filesystem.d.ts +27 -0
- package/dist/configuration/filesystem.d.ts.map +1 -0
- package/dist/configuration/filesystem.js +227 -0
- package/dist/configuration/filesystem.js.map +1 -0
- package/dist/configuration/model.d.ts +68 -0
- package/dist/configuration/model.d.ts.map +1 -0
- package/dist/configuration/model.js +2 -0
- package/dist/configuration/model.js.map +1 -0
- package/dist/configuration/parser.d.ts +49 -0
- package/dist/configuration/parser.d.ts.map +1 -0
- package/dist/configuration/parser.js +35 -0
- package/dist/configuration/parser.js.map +1 -0
- package/dist/configuration/policy.d.ts +15 -0
- package/dist/configuration/policy.d.ts.map +1 -0
- package/dist/configuration/policy.js +15 -0
- package/dist/configuration/policy.js.map +1 -0
- package/dist/configuration/resolver.d.ts +15 -0
- package/dist/configuration/resolver.d.ts.map +1 -0
- package/dist/configuration/resolver.js +260 -0
- package/dist/configuration/resolver.js.map +1 -0
- package/dist/configuration/writer-child.d.ts +2 -0
- package/dist/configuration/writer-child.d.ts.map +1 -0
- package/dist/configuration/writer-child.js +32 -0
- package/dist/configuration/writer-child.js.map +1 -0
- package/dist/configuration/writer.d.ts +15 -0
- package/dist/configuration/writer.d.ts.map +1 -0
- package/dist/configuration/writer.js +789 -0
- package/dist/configuration/writer.js.map +1 -0
- package/dist/execution/application.d.ts +135 -0
- package/dist/execution/application.d.ts.map +1 -0
- package/dist/execution/application.js +14 -0
- package/dist/execution/application.js.map +1 -0
- package/dist/execution/database-operations.d.ts +15 -0
- package/dist/execution/database-operations.d.ts.map +1 -0
- package/dist/execution/database-operations.js +9 -0
- package/dist/execution/database-operations.js.map +1 -0
- package/dist/execution/request-digest.d.ts +3 -0
- package/dist/execution/request-digest.d.ts.map +1 -0
- package/dist/execution/request-digest.js +22 -0
- package/dist/execution/request-digest.js.map +1 -0
- package/dist/execution/service.d.ts +14 -0
- package/dist/execution/service.d.ts.map +1 -0
- package/dist/execution/service.js +19 -0
- package/dist/execution/service.js.map +1 -0
- package/dist/execution/storage.d.ts +20 -0
- package/dist/execution/storage.d.ts.map +1 -0
- package/dist/execution/storage.js +349 -0
- package/dist/execution/storage.js.map +1 -0
- package/dist/harness/application/requests.d.ts +304 -0
- package/dist/harness/application/requests.d.ts.map +1 -0
- package/dist/harness/application/requests.js +45 -0
- package/dist/harness/application/requests.js.map +1 -0
- package/dist/harness/codex/lifecycle.d.ts +39 -0
- package/dist/harness/codex/lifecycle.d.ts.map +1 -0
- package/dist/harness/codex/lifecycle.js +55 -0
- package/dist/harness/codex/lifecycle.js.map +1 -0
- package/dist/harness/codex/observability.d.ts +6 -0
- package/dist/harness/codex/observability.d.ts.map +1 -0
- package/dist/harness/codex/observability.js +58 -0
- package/dist/harness/codex/observability.js.map +1 -0
- package/dist/harness/codex/policy.d.ts +15 -0
- package/dist/harness/codex/policy.d.ts.map +1 -0
- package/dist/harness/codex/policy.js +15 -0
- package/dist/harness/codex/policy.js.map +1 -0
- package/dist/harness/codex/probe.d.ts +173 -0
- package/dist/harness/codex/probe.d.ts.map +1 -0
- package/dist/harness/codex/probe.js +134 -0
- package/dist/harness/codex/probe.js.map +1 -0
- package/dist/harness/codex/protocol.d.ts +15 -0
- package/dist/harness/codex/protocol.d.ts.map +1 -0
- package/dist/harness/codex/protocol.js +52 -0
- package/dist/harness/codex/protocol.js.map +1 -0
- package/dist/harness/codex/service.d.ts +196 -0
- package/dist/harness/codex/service.d.ts.map +1 -0
- package/dist/harness/codex/service.js +141 -0
- package/dist/harness/codex/service.js.map +1 -0
- package/dist/harness/codex/session-lifecycle.d.ts +40 -0
- package/dist/harness/codex/session-lifecycle.d.ts.map +1 -0
- package/dist/harness/codex/session-lifecycle.js +39 -0
- package/dist/harness/codex/session-lifecycle.js.map +1 -0
- package/dist/harness/codex/session-observability.d.ts +7 -0
- package/dist/harness/codex/session-observability.d.ts.map +1 -0
- package/dist/harness/codex/session-observability.js +39 -0
- package/dist/harness/codex/session-observability.js.map +1 -0
- package/dist/harness/codex/session-protocol.d.ts +92 -0
- package/dist/harness/codex/session-protocol.d.ts.map +1 -0
- package/dist/harness/codex/session-protocol.js +475 -0
- package/dist/harness/codex/session-protocol.js.map +1 -0
- package/dist/harness/codex/session-service.d.ts +59 -0
- package/dist/harness/codex/session-service.d.ts.map +1 -0
- package/dist/harness/codex/session-service.js +340 -0
- package/dist/harness/codex/session-service.js.map +1 -0
- package/dist/harness/codex/session-transport.d.ts +22 -0
- package/dist/harness/codex/session-transport.d.ts.map +1 -0
- package/dist/harness/codex/session-transport.js +152 -0
- package/dist/harness/codex/session-transport.js.map +1 -0
- package/dist/harness/codex/transport.d.ts +104 -0
- package/dist/harness/codex/transport.d.ts.map +1 -0
- package/dist/harness/codex/transport.js +645 -0
- package/dist/harness/codex/transport.js.map +1 -0
- package/dist/harness/codex/turn/lifecycle.d.ts +40 -0
- package/dist/harness/codex/turn/lifecycle.d.ts.map +1 -0
- package/dist/harness/codex/turn/lifecycle.js +43 -0
- package/dist/harness/codex/turn/lifecycle.js.map +1 -0
- package/dist/harness/codex/turn/observability.d.ts +8 -0
- package/dist/harness/codex/turn/observability.d.ts.map +1 -0
- package/dist/harness/codex/turn/observability.js +63 -0
- package/dist/harness/codex/turn/observability.js.map +1 -0
- package/dist/harness/codex/turn/transport.d.ts +21 -0
- package/dist/harness/codex/turn/transport.d.ts.map +1 -0
- package/dist/harness/codex/turn/transport.js +387 -0
- package/dist/harness/codex/turn/transport.js.map +1 -0
- package/dist/harness/installed/catalog.d.ts +30 -0
- package/dist/harness/installed/catalog.d.ts.map +1 -0
- package/dist/harness/installed/catalog.js +29 -0
- package/dist/harness/installed/catalog.js.map +1 -0
- package/dist/harness/installed/policy.d.ts +23 -0
- package/dist/harness/installed/policy.d.ts.map +1 -0
- package/dist/harness/installed/policy.js +29 -0
- package/dist/harness/installed/policy.js.map +1 -0
- package/dist/harness/installed/resolver.d.ts +39 -0
- package/dist/harness/installed/resolver.d.ts.map +1 -0
- package/dist/harness/installed/resolver.js +93 -0
- package/dist/harness/installed/resolver.js.map +1 -0
- package/dist/harness/installed/scan.d.ts +61 -0
- package/dist/harness/installed/scan.d.ts.map +1 -0
- package/dist/harness/installed/scan.js +327 -0
- package/dist/harness/installed/scan.js.map +1 -0
- package/dist/harness/installed/service.d.ts +99 -0
- package/dist/harness/installed/service.d.ts.map +1 -0
- package/dist/harness/installed/service.js +206 -0
- package/dist/harness/installed/service.js.map +1 -0
- package/dist/harness/pi-rpc/artifact.d.ts +57 -0
- package/dist/harness/pi-rpc/artifact.d.ts.map +1 -0
- package/dist/harness/pi-rpc/artifact.js +431 -0
- package/dist/harness/pi-rpc/artifact.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/authorization-store.d.ts +41 -0
- package/dist/harness/pi-rpc/authorization/authorization-store.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/authorization-store.js +235 -0
- package/dist/harness/pi-rpc/authorization/authorization-store.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/database.d.ts +99 -0
- package/dist/harness/pi-rpc/authorization/database.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/database.js +94 -0
- package/dist/harness/pi-rpc/authorization/database.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/index.d.ts +7 -0
- package/dist/harness/pi-rpc/authorization/index.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/index.js +6 -0
- package/dist/harness/pi-rpc/authorization/index.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/permit-compaction-store.d.ts +3 -0
- package/dist/harness/pi-rpc/authorization/permit-compaction-store.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/permit-compaction-store.js +61 -0
- package/dist/harness/pi-rpc/authorization/permit-compaction-store.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/permit-store.d.ts +38 -0
- package/dist/harness/pi-rpc/authorization/permit-store.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/permit-store.js +310 -0
- package/dist/harness/pi-rpc/authorization/permit-store.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/plan-store.d.ts +14 -0
- package/dist/harness/pi-rpc/authorization/plan-store.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/plan-store.js +205 -0
- package/dist/harness/pi-rpc/authorization/plan-store.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/policy.d.ts +18 -0
- package/dist/harness/pi-rpc/authorization/policy.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/policy.js +131 -0
- package/dist/harness/pi-rpc/authorization/policy.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/projection.d.ts +7 -0
- package/dist/harness/pi-rpc/authorization/projection.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/projection.js +195 -0
- package/dist/harness/pi-rpc/authorization/projection.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/recovery-store.d.ts +3 -0
- package/dist/harness/pi-rpc/authorization/recovery-store.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/recovery-store.js +63 -0
- package/dist/harness/pi-rpc/authorization/recovery-store.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/replay-store.d.ts +11 -0
- package/dist/harness/pi-rpc/authorization/replay-store.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/replay-store.js +60 -0
- package/dist/harness/pi-rpc/authorization/replay-store.js.map +1 -0
- package/dist/harness/pi-rpc/authorization/types.d.ts +117 -0
- package/dist/harness/pi-rpc/authorization/types.d.ts.map +1 -0
- package/dist/harness/pi-rpc/authorization/types.js +3 -0
- package/dist/harness/pi-rpc/authorization/types.js.map +1 -0
- package/dist/harness/pi-rpc/contract.d.ts +86 -0
- package/dist/harness/pi-rpc/contract.d.ts.map +1 -0
- package/dist/harness/pi-rpc/contract.js +206 -0
- package/dist/harness/pi-rpc/contract.js.map +1 -0
- package/dist/harness/pi-rpc/conversation.d.ts +129 -0
- package/dist/harness/pi-rpc/conversation.d.ts.map +1 -0
- package/dist/harness/pi-rpc/conversation.js +885 -0
- package/dist/harness/pi-rpc/conversation.js.map +1 -0
- package/dist/harness/pi-rpc/jsonl.d.ts +16 -0
- package/dist/harness/pi-rpc/jsonl.d.ts.map +1 -0
- package/dist/harness/pi-rpc/jsonl.js +115 -0
- package/dist/harness/pi-rpc/jsonl.js.map +1 -0
- package/dist/harness/pi-rpc/managed-process.d.ts +13 -0
- package/dist/harness/pi-rpc/managed-process.d.ts.map +1 -0
- package/dist/harness/pi-rpc/managed-process.js +64 -0
- package/dist/harness/pi-rpc/managed-process.js.map +1 -0
- package/dist/harness/pi-rpc/manifest-order.d.ts +7 -0
- package/dist/harness/pi-rpc/manifest-order.d.ts.map +1 -0
- package/dist/harness/pi-rpc/manifest-order.js +11 -0
- package/dist/harness/pi-rpc/manifest-order.js.map +1 -0
- package/dist/harness/pi-rpc/probe.d.ts +18 -0
- package/dist/harness/pi-rpc/probe.d.ts.map +1 -0
- package/dist/harness/pi-rpc/probe.js +168 -0
- package/dist/harness/pi-rpc/probe.js.map +1 -0
- package/dist/harness/pi-rpc/runtime-probe.d.ts +93 -0
- package/dist/harness/pi-rpc/runtime-probe.d.ts.map +1 -0
- package/dist/harness/pi-rpc/runtime-probe.js +381 -0
- package/dist/harness/pi-rpc/runtime-probe.js.map +1 -0
- package/dist/harness/pi-rpc/session-launch.d.ts +46 -0
- package/dist/harness/pi-rpc/session-launch.d.ts.map +1 -0
- package/dist/harness/pi-rpc/session-launch.js +547 -0
- package/dist/harness/pi-rpc/session-launch.js.map +1 -0
- package/dist/harness/pi-rpc/session-service.d.ts +71 -0
- package/dist/harness/pi-rpc/session-service.d.ts.map +1 -0
- package/dist/harness/pi-rpc/session-service.js +336 -0
- package/dist/harness/pi-rpc/session-service.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +173 -0
- package/dist/index.js.map +1 -0
- package/dist/integration-authorization/application.d.ts +56 -0
- package/dist/integration-authorization/application.d.ts.map +1 -0
- package/dist/integration-authorization/application.js +185 -0
- package/dist/integration-authorization/application.js.map +1 -0
- package/dist/integration-authorization/pi-rpc-application.d.ts +46 -0
- package/dist/integration-authorization/pi-rpc-application.d.ts.map +1 -0
- package/dist/integration-authorization/pi-rpc-application.js +201 -0
- package/dist/integration-authorization/pi-rpc-application.js.map +1 -0
- package/dist/integration-authorization/pi-rpc-requests.d.ts +10 -0
- package/dist/integration-authorization/pi-rpc-requests.d.ts.map +1 -0
- package/dist/integration-authorization/pi-rpc-requests.js +221 -0
- package/dist/integration-authorization/pi-rpc-requests.js.map +1 -0
- package/dist/integration-authorization/requests.d.ts +10 -0
- package/dist/integration-authorization/requests.d.ts.map +1 -0
- package/dist/integration-authorization/requests.js +208 -0
- package/dist/integration-authorization/requests.js.map +1 -0
- package/dist/invocation-context/application.d.ts +34 -0
- package/dist/invocation-context/application.d.ts.map +1 -0
- package/dist/invocation-context/application.js +14 -0
- package/dist/invocation-context/application.js.map +1 -0
- package/dist/invocation-context/resolver.d.ts +6 -0
- package/dist/invocation-context/resolver.d.ts.map +1 -0
- package/dist/invocation-context/resolver.js +15 -0
- package/dist/invocation-context/resolver.js.map +1 -0
- package/dist/lifecycle/node-machine.d.ts +45 -0
- package/dist/lifecycle/node-machine.d.ts.map +1 -0
- package/dist/lifecycle/node-machine.js +64 -0
- package/dist/lifecycle/node-machine.js.map +1 -0
- package/dist/orchestration/application.d.ts +10 -0
- package/dist/orchestration/application.d.ts.map +1 -0
- package/dist/orchestration/application.js +97 -0
- package/dist/orchestration/application.js.map +1 -0
- package/dist/orchestration/lifecycle.d.ts +98 -0
- package/dist/orchestration/lifecycle.d.ts.map +1 -0
- package/dist/orchestration/lifecycle.js +118 -0
- package/dist/orchestration/lifecycle.js.map +1 -0
- package/dist/orchestration/mutations.d.ts +28 -0
- package/dist/orchestration/mutations.d.ts.map +1 -0
- package/dist/orchestration/mutations.js +562 -0
- package/dist/orchestration/mutations.js.map +1 -0
- package/dist/orchestration/storage.d.ts +200 -0
- package/dist/orchestration/storage.d.ts.map +1 -0
- package/dist/orchestration/storage.js +1214 -0
- package/dist/orchestration/storage.js.map +1 -0
- package/dist/project-workspace/application/requests.d.ts +44 -0
- package/dist/project-workspace/application/requests.d.ts.map +1 -0
- package/dist/project-workspace/application/requests.js +92 -0
- package/dist/project-workspace/application/requests.js.map +1 -0
- package/dist/project-workspace/repository/inspector.d.ts +47 -0
- package/dist/project-workspace/repository/inspector.d.ts.map +1 -0
- package/dist/project-workspace/repository/inspector.js +311 -0
- package/dist/project-workspace/repository/inspector.js.map +1 -0
- package/dist/project-workspace/storage/request-digest.d.ts +11 -0
- package/dist/project-workspace/storage/request-digest.d.ts.map +1 -0
- package/dist/project-workspace/storage/request-digest.js +21 -0
- package/dist/project-workspace/storage/request-digest.js.map +1 -0
- package/dist/project-workspace/storage/store.d.ts +34 -0
- package/dist/project-workspace/storage/store.d.ts.map +1 -0
- package/dist/project-workspace/storage/store.js +603 -0
- package/dist/project-workspace/storage/store.js.map +1 -0
- package/dist/runtime/connection-descriptor.d.ts +19 -0
- package/dist/runtime/connection-descriptor.d.ts.map +1 -0
- package/dist/runtime/connection-descriptor.js +136 -0
- package/dist/runtime/connection-descriptor.js.map +1 -0
- package/dist/runtime/errors.d.ts +21 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +48 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/framing.d.ts +9 -0
- package/dist/runtime/framing.d.ts.map +1 -0
- package/dist/runtime/framing.js +48 -0
- package/dist/runtime/framing.js.map +1 -0
- package/dist/runtime/instance-lock.d.ts +54 -0
- package/dist/runtime/instance-lock.d.ts.map +1 -0
- package/dist/runtime/instance-lock.js +566 -0
- package/dist/runtime/instance-lock.js.map +1 -0
- package/dist/runtime/local-credential.d.ts +16 -0
- package/dist/runtime/local-credential.d.ts.map +1 -0
- package/dist/runtime/local-credential.js +66 -0
- package/dist/runtime/local-credential.js.map +1 -0
- package/dist/runtime/local-server-channels.d.ts +11 -0
- package/dist/runtime/local-server-channels.d.ts.map +1 -0
- package/dist/runtime/local-server-channels.js +21 -0
- package/dist/runtime/local-server-channels.js.map +1 -0
- package/dist/runtime/local-server-listener.d.ts +12 -0
- package/dist/runtime/local-server-listener.d.ts.map +1 -0
- package/dist/runtime/local-server-listener.js +41 -0
- package/dist/runtime/local-server-listener.js.map +1 -0
- package/dist/runtime/local-server.d.ts +27 -0
- package/dist/runtime/local-server.d.ts.map +1 -0
- package/dist/runtime/local-server.js +639 -0
- package/dist/runtime/local-server.js.map +1 -0
- package/dist/runtime/observability.d.ts +21 -0
- package/dist/runtime/observability.d.ts.map +1 -0
- package/dist/runtime/observability.js +164 -0
- package/dist/runtime/observability.js.map +1 -0
- package/dist/runtime/process/owned-tree.d.ts +24 -0
- package/dist/runtime/process/owned-tree.d.ts.map +1 -0
- package/dist/runtime/process/owned-tree.js +228 -0
- package/dist/runtime/process/owned-tree.js.map +1 -0
- package/dist/runtime/process/resource/cleanup.d.ts +13 -0
- package/dist/runtime/process/resource/cleanup.d.ts.map +1 -0
- package/dist/runtime/process/resource/cleanup.js +196 -0
- package/dist/runtime/process/resource/cleanup.js.map +1 -0
- package/dist/runtime/process/resource/contract.d.ts +382 -0
- package/dist/runtime/process/resource/contract.d.ts.map +1 -0
- package/dist/runtime/process/resource/contract.js +2 -0
- package/dist/runtime/process/resource/contract.js.map +1 -0
- package/dist/runtime/process/resource/darwin-native-host-bootstrap.d.ts +7 -0
- package/dist/runtime/process/resource/darwin-native-host-bootstrap.d.ts.map +1 -0
- package/dist/runtime/process/resource/darwin-native-host-bootstrap.js +196 -0
- package/dist/runtime/process/resource/darwin-native-host-bootstrap.js.map +1 -0
- package/dist/runtime/process/resource/darwin-source-candidate-layer.d.ts +16 -0
- package/dist/runtime/process/resource/darwin-source-candidate-layer.d.ts.map +1 -0
- package/dist/runtime/process/resource/darwin-source-candidate-layer.js +51 -0
- package/dist/runtime/process/resource/darwin-source-candidate-layer.js.map +1 -0
- package/dist/runtime/process/resource/darwin-vouch-policy.d.ts +44 -0
- package/dist/runtime/process/resource/darwin-vouch-policy.d.ts.map +1 -0
- package/dist/runtime/process/resource/darwin-vouch-policy.js +253 -0
- package/dist/runtime/process/resource/darwin-vouch-policy.js.map +1 -0
- package/dist/runtime/process/resource/health.d.ts +45 -0
- package/dist/runtime/process/resource/health.d.ts.map +1 -0
- package/dist/runtime/process/resource/health.js +197 -0
- package/dist/runtime/process/resource/health.js.map +1 -0
- package/dist/runtime/process/resource/host-frame.d.ts +39 -0
- package/dist/runtime/process/resource/host-frame.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-frame.js +266 -0
- package/dist/runtime/process/resource/host-frame.js.map +1 -0
- package/dist/runtime/process/resource/host-launch.d.ts +11 -0
- package/dist/runtime/process/resource/host-launch.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-launch.js +296 -0
- package/dist/runtime/process/resource/host-launch.js.map +1 -0
- package/dist/runtime/process/resource/host-lifecycle.d.ts +91 -0
- package/dist/runtime/process/resource/host-lifecycle.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-lifecycle.js +96 -0
- package/dist/runtime/process/resource/host-lifecycle.js.map +1 -0
- package/dist/runtime/process/resource/host-message.d.ts +15 -0
- package/dist/runtime/process/resource/host-message.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-message.js +538 -0
- package/dist/runtime/process/resource/host-message.js.map +1 -0
- package/dist/runtime/process/resource/host-protocol-contract.d.ts +222 -0
- package/dist/runtime/process/resource/host-protocol-contract.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-protocol-contract.js +69 -0
- package/dist/runtime/process/resource/host-protocol-contract.js.map +1 -0
- package/dist/runtime/process/resource/host-protocol-sequence.d.ts +14 -0
- package/dist/runtime/process/resource/host-protocol-sequence.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-protocol-sequence.js +304 -0
- package/dist/runtime/process/resource/host-protocol-sequence.js.map +1 -0
- package/dist/runtime/process/resource/host-protocol.d.ts +5 -0
- package/dist/runtime/process/resource/host-protocol.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-protocol.js +5 -0
- package/dist/runtime/process/resource/host-protocol.js.map +1 -0
- package/dist/runtime/process/resource/host-snapshot.d.ts +11 -0
- package/dist/runtime/process/resource/host-snapshot.d.ts.map +1 -0
- package/dist/runtime/process/resource/host-snapshot.js +239 -0
- package/dist/runtime/process/resource/host-snapshot.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/authorization-store.d.ts +48 -0
- package/dist/runtime/process/resource/integration-authorization/authorization-store.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/authorization-store.js +269 -0
- package/dist/runtime/process/resource/integration-authorization/authorization-store.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/database.d.ts +10 -0
- package/dist/runtime/process/resource/integration-authorization/database.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/database.js +98 -0
- package/dist/runtime/process/resource/integration-authorization/database.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/index.d.ts +7 -0
- package/dist/runtime/process/resource/integration-authorization/index.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/index.js +6 -0
- package/dist/runtime/process/resource/integration-authorization/index.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/permit-compaction-store.d.ts +3 -0
- package/dist/runtime/process/resource/integration-authorization/permit-compaction-store.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/permit-compaction-store.js +87 -0
- package/dist/runtime/process/resource/integration-authorization/permit-compaction-store.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/permit-store.d.ts +44 -0
- package/dist/runtime/process/resource/integration-authorization/permit-store.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/permit-store.js +486 -0
- package/dist/runtime/process/resource/integration-authorization/permit-store.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/plan-integrity.d.ts +21 -0
- package/dist/runtime/process/resource/integration-authorization/plan-integrity.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/plan-integrity.js +172 -0
- package/dist/runtime/process/resource/integration-authorization/plan-integrity.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/plan-payload.d.ts +31 -0
- package/dist/runtime/process/resource/integration-authorization/plan-payload.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/plan-payload.js +15 -0
- package/dist/runtime/process/resource/integration-authorization/plan-payload.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/plan-store.d.ts +11 -0
- package/dist/runtime/process/resource/integration-authorization/plan-store.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/plan-store.js +124 -0
- package/dist/runtime/process/resource/integration-authorization/plan-store.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/policy.d.ts +37 -0
- package/dist/runtime/process/resource/integration-authorization/policy.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/policy.js +141 -0
- package/dist/runtime/process/resource/integration-authorization/policy.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/projection.d.ts +5 -0
- package/dist/runtime/process/resource/integration-authorization/projection.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/projection.js +56 -0
- package/dist/runtime/process/resource/integration-authorization/projection.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/replay-store.d.ts +9 -0
- package/dist/runtime/process/resource/integration-authorization/replay-store.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/replay-store.js +55 -0
- package/dist/runtime/process/resource/integration-authorization/replay-store.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/types.d.ts +152 -0
- package/dist/runtime/process/resource/integration-authorization/types.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization/types.js +3 -0
- package/dist/runtime/process/resource/integration-authorization/types.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization-manager.d.ts +9 -0
- package/dist/runtime/process/resource/integration-authorization-manager.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization-manager.js +353 -0
- package/dist/runtime/process/resource/integration-authorization-manager.js.map +1 -0
- package/dist/runtime/process/resource/integration-authorization-storage.d.ts +2 -0
- package/dist/runtime/process/resource/integration-authorization-storage.d.ts.map +1 -0
- package/dist/runtime/process/resource/integration-authorization-storage.js +2 -0
- package/dist/runtime/process/resource/integration-authorization-storage.js.map +1 -0
- package/dist/runtime/process/resource/internal-spawn.d.ts +27 -0
- package/dist/runtime/process/resource/internal-spawn.d.ts.map +1 -0
- package/dist/runtime/process/resource/internal-spawn.js +7 -0
- package/dist/runtime/process/resource/internal-spawn.js.map +1 -0
- package/dist/runtime/process/resource/launch-authority.d.ts +5 -0
- package/dist/runtime/process/resource/launch-authority.d.ts.map +1 -0
- package/dist/runtime/process/resource/launch-authority.js +37 -0
- package/dist/runtime/process/resource/launch-authority.js.map +1 -0
- package/dist/runtime/process/resource/launch-gate.d.ts +19 -0
- package/dist/runtime/process/resource/launch-gate.d.ts.map +1 -0
- package/dist/runtime/process/resource/launch-gate.js +16 -0
- package/dist/runtime/process/resource/launch-gate.js.map +1 -0
- package/dist/runtime/process/resource/linux-process-identity.d.ts +13 -0
- package/dist/runtime/process/resource/linux-process-identity.d.ts.map +1 -0
- package/dist/runtime/process/resource/linux-process-identity.js +40 -0
- package/dist/runtime/process/resource/linux-process-identity.js.map +1 -0
- package/dist/runtime/process/resource/managed-tree.d.ts +28 -0
- package/dist/runtime/process/resource/managed-tree.d.ts.map +1 -0
- package/dist/runtime/process/resource/managed-tree.js +79 -0
- package/dist/runtime/process/resource/managed-tree.js.map +1 -0
- package/dist/runtime/process/resource/native-host-adapter.d.ts +17 -0
- package/dist/runtime/process/resource/native-host-adapter.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-adapter.js +169 -0
- package/dist/runtime/process/resource/native-host-adapter.js.map +1 -0
- package/dist/runtime/process/resource/native-host-artifact.d.ts +28 -0
- package/dist/runtime/process/resource/native-host-artifact.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-artifact.js +110 -0
- package/dist/runtime/process/resource/native-host-artifact.js.map +1 -0
- package/dist/runtime/process/resource/native-host-bootstrap.d.ts +29 -0
- package/dist/runtime/process/resource/native-host-bootstrap.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-bootstrap.js +2 -0
- package/dist/runtime/process/resource/native-host-bootstrap.js.map +1 -0
- package/dist/runtime/process/resource/native-host-capability.d.ts +5 -0
- package/dist/runtime/process/resource/native-host-capability.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-capability.js +86 -0
- package/dist/runtime/process/resource/native-host-capability.js.map +1 -0
- package/dist/runtime/process/resource/native-host-connection.d.ts +82 -0
- package/dist/runtime/process/resource/native-host-connection.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-connection.js +448 -0
- package/dist/runtime/process/resource/native-host-connection.js.map +1 -0
- package/dist/runtime/process/resource/native-host-contract.d.ts +47 -0
- package/dist/runtime/process/resource/native-host-contract.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-contract.js +2 -0
- package/dist/runtime/process/resource/native-host-contract.js.map +1 -0
- package/dist/runtime/process/resource/native-host-frame-parser.d.ts +22 -0
- package/dist/runtime/process/resource/native-host-frame-parser.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-frame-parser.js +110 -0
- package/dist/runtime/process/resource/native-host-frame-parser.js.map +1 -0
- package/dist/runtime/process/resource/native-host-output.d.ts +16 -0
- package/dist/runtime/process/resource/native-host-output.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-output.js +94 -0
- package/dist/runtime/process/resource/native-host-output.js.map +1 -0
- package/dist/runtime/process/resource/native-host-projection.d.ts +20 -0
- package/dist/runtime/process/resource/native-host-projection.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-projection.js +74 -0
- package/dist/runtime/process/resource/native-host-projection.js.map +1 -0
- package/dist/runtime/process/resource/native-host-release-identity.d.ts +19 -0
- package/dist/runtime/process/resource/native-host-release-identity.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-release-identity.js +56 -0
- package/dist/runtime/process/resource/native-host-release-identity.js.map +1 -0
- package/dist/runtime/process/resource/native-host-state.d.ts +38 -0
- package/dist/runtime/process/resource/native-host-state.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-host-state.js +303 -0
- package/dist/runtime/process/resource/native-host-state.js.map +1 -0
- package/dist/runtime/process/resource/native-manager.d.ts +11 -0
- package/dist/runtime/process/resource/native-manager.d.ts.map +1 -0
- package/dist/runtime/process/resource/native-manager.js +646 -0
- package/dist/runtime/process/resource/native-manager.js.map +1 -0
- package/dist/runtime/process/resource/pi-rpc-launch-authority.d.ts +8 -0
- package/dist/runtime/process/resource/pi-rpc-launch-authority.d.ts.map +1 -0
- package/dist/runtime/process/resource/pi-rpc-launch-authority.js +158 -0
- package/dist/runtime/process/resource/pi-rpc-launch-authority.js.map +1 -0
- package/dist/runtime/process/resource/policy.d.ts +53 -0
- package/dist/runtime/process/resource/policy.d.ts.map +1 -0
- package/dist/runtime/process/resource/policy.js +501 -0
- package/dist/runtime/process/resource/policy.js.map +1 -0
- package/dist/runtime/process/resource/process-identity.d.ts +29 -0
- package/dist/runtime/process/resource/process-identity.d.ts.map +1 -0
- package/dist/runtime/process/resource/process-identity.js +199 -0
- package/dist/runtime/process/resource/process-identity.js.map +1 -0
- package/dist/runtime/process/resource/ps-snapshot.d.ts +12 -0
- package/dist/runtime/process/resource/ps-snapshot.d.ts.map +1 -0
- package/dist/runtime/process/resource/ps-snapshot.js +77 -0
- package/dist/runtime/process/resource/ps-snapshot.js.map +1 -0
- package/dist/runtime/process/resource/sampler.d.ts +18 -0
- package/dist/runtime/process/resource/sampler.d.ts.map +1 -0
- package/dist/runtime/process/resource/sampler.js +19 -0
- package/dist/runtime/process/resource/sampler.js.map +1 -0
- package/dist/runtime/process/resource/sampling.d.ts +23 -0
- package/dist/runtime/process/resource/sampling.d.ts.map +1 -0
- package/dist/runtime/process/resource/sampling.js +131 -0
- package/dist/runtime/process/resource/sampling.js.map +1 -0
- package/dist/runtime/process/resource/service.d.ts +15 -0
- package/dist/runtime/process/resource/service.d.ts.map +1 -0
- package/dist/runtime/process/resource/service.js +39 -0
- package/dist/runtime/process/resource/service.js.map +1 -0
- package/dist/runtime/process/resource/snapshot.d.ts +24 -0
- package/dist/runtime/process/resource/snapshot.d.ts.map +1 -0
- package/dist/runtime/process/resource/snapshot.js +149 -0
- package/dist/runtime/process/resource/snapshot.js.map +1 -0
- package/dist/runtime/process/resource/telemetry.d.ts +9 -0
- package/dist/runtime/process/resource/telemetry.d.ts.map +1 -0
- package/dist/runtime/process/resource/telemetry.js +51 -0
- package/dist/runtime/process/resource/telemetry.js.map +1 -0
- package/dist/runtime/process/resource/test-runtime-layer.d.ts +25 -0
- package/dist/runtime/process/resource/test-runtime-layer.d.ts.map +1 -0
- package/dist/runtime/process/resource/test-runtime-layer.js +296 -0
- package/dist/runtime/process/resource/test-runtime-layer.js.map +1 -0
- package/dist/runtime/process/resource/testing.d.ts +18 -0
- package/dist/runtime/process/resource/testing.d.ts.map +1 -0
- package/dist/runtime/process/resource/testing.js +216 -0
- package/dist/runtime/process/resource/testing.js.map +1 -0
- package/dist/runtime/profile-paths.d.ts +27 -0
- package/dist/runtime/profile-paths.d.ts.map +1 -0
- package/dist/runtime/profile-paths.js +111 -0
- package/dist/runtime/profile-paths.js.map +1 -0
- package/dist/runtime/startup/testing/benchmark-evidence.d.ts +45 -0
- package/dist/runtime/startup/testing/benchmark-evidence.d.ts.map +1 -0
- package/dist/runtime/startup/testing/benchmark-evidence.js +261 -0
- package/dist/runtime/startup/testing/benchmark-evidence.js.map +1 -0
- package/dist/session/application/activation.d.ts +22 -0
- package/dist/session/application/activation.d.ts.map +1 -0
- package/dist/session/application/activation.js +202 -0
- package/dist/session/application/activation.js.map +1 -0
- package/dist/session/application/requests.d.ts +25 -0
- package/dist/session/application/requests.d.ts.map +1 -0
- package/dist/session/application/requests.js +76 -0
- package/dist/session/application/requests.js.map +1 -0
- package/dist/session/application/testing/activation-barrier.d.ts +8 -0
- package/dist/session/application/testing/activation-barrier.d.ts.map +1 -0
- package/dist/session/application/testing/activation-barrier.js +55 -0
- package/dist/session/application/testing/activation-barrier.js.map +1 -0
- package/dist/session/runtime/admission.d.ts +8 -0
- package/dist/session/runtime/admission.d.ts.map +1 -0
- package/dist/session/runtime/admission.js +22 -0
- package/dist/session/runtime/admission.js.map +1 -0
- package/dist/session/runtime/policy.d.ts +5 -0
- package/dist/session/runtime/policy.d.ts.map +1 -0
- package/dist/session/runtime/policy.js +5 -0
- package/dist/session/runtime/policy.js.map +1 -0
- package/dist/session/storage/activation-command.d.ts +12 -0
- package/dist/session/storage/activation-command.d.ts.map +1 -0
- package/dist/session/storage/activation-command.js +146 -0
- package/dist/session/storage/activation-command.js.map +1 -0
- package/dist/session/storage/activation-mutations.d.ts +25 -0
- package/dist/session/storage/activation-mutations.d.ts.map +1 -0
- package/dist/session/storage/activation-mutations.js +34 -0
- package/dist/session/storage/activation-mutations.js.map +1 -0
- package/dist/session/storage/activation-record.d.ts +28 -0
- package/dist/session/storage/activation-record.d.ts.map +1 -0
- package/dist/session/storage/activation-record.js +109 -0
- package/dist/session/storage/activation-record.js.map +1 -0
- package/dist/session/storage/activation-state.d.ts +18 -0
- package/dist/session/storage/activation-state.d.ts.map +1 -0
- package/dist/session/storage/activation-state.js +173 -0
- package/dist/session/storage/activation-state.js.map +1 -0
- package/dist/session/storage/activation.d.ts +4 -0
- package/dist/session/storage/activation.d.ts.map +1 -0
- package/dist/session/storage/activation.js +4 -0
- package/dist/session/storage/activation.js.map +1 -0
- package/dist/session/storage/create.d.ts +12 -0
- package/dist/session/storage/create.d.ts.map +1 -0
- package/dist/session/storage/create.js +115 -0
- package/dist/session/storage/create.js.map +1 -0
- package/dist/session/storage/events.d.ts +4 -0
- package/dist/session/storage/events.d.ts.map +1 -0
- package/dist/session/storage/events.js +119 -0
- package/dist/session/storage/events.js.map +1 -0
- package/dist/session/storage/queries.d.ts +5 -0
- package/dist/session/storage/queries.d.ts.map +1 -0
- package/dist/session/storage/queries.js +24 -0
- package/dist/session/storage/queries.js.map +1 -0
- package/dist/session/storage/request-digest.d.ts +4 -0
- package/dist/session/storage/request-digest.d.ts.map +1 -0
- package/dist/session/storage/request-digest.js +19 -0
- package/dist/session/storage/request-digest.js.map +1 -0
- package/dist/session/storage/runtime-profile.d.ts +15 -0
- package/dist/session/storage/runtime-profile.d.ts.map +1 -0
- package/dist/session/storage/runtime-profile.js +4 -0
- package/dist/session/storage/runtime-profile.js.map +1 -0
- package/dist/session/storage/session-record.d.ts +25 -0
- package/dist/session/storage/session-record.d.ts.map +1 -0
- package/dist/session/storage/session-record.js +53 -0
- package/dist/session/storage/session-record.js.map +1 -0
- package/dist/session/storage/testing/database.d.ts +13 -0
- package/dist/session/storage/testing/database.d.ts.map +1 -0
- package/dist/session/storage/testing/database.js +63 -0
- package/dist/session/storage/testing/database.js.map +1 -0
- package/dist/session/testing/activation-waiter.d.ts +7 -0
- package/dist/session/testing/activation-waiter.d.ts.map +1 -0
- package/dist/session/testing/activation-waiter.js +38 -0
- package/dist/session/testing/activation-waiter.js.map +1 -0
- package/dist/session/testing/built-session-bounded-capture.d.ts +15 -0
- package/dist/session/testing/built-session-bounded-capture.d.ts.map +1 -0
- package/dist/session/testing/built-session-bounded-capture.js +136 -0
- package/dist/session/testing/built-session-bounded-capture.js.map +1 -0
- package/dist/session/testing/built-session-cli-supervisor.d.ts +36 -0
- package/dist/session/testing/built-session-cli-supervisor.d.ts.map +1 -0
- package/dist/session/testing/built-session-cli-supervisor.js +52 -0
- package/dist/session/testing/built-session-cli-supervisor.js.map +1 -0
- package/dist/session/testing/built-session-execution-authenticator.d.ts +11 -0
- package/dist/session/testing/built-session-execution-authenticator.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-authenticator.js +33 -0
- package/dist/session/testing/built-session-execution-authenticator.js.map +1 -0
- package/dist/session/testing/built-session-execution-authority.d.ts +12 -0
- package/dist/session/testing/built-session-execution-authority.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-authority.js +1242 -0
- package/dist/session/testing/built-session-execution-authority.js.map +1 -0
- package/dist/session/testing/built-session-execution-budget.d.ts +29 -0
- package/dist/session/testing/built-session-execution-budget.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-budget.js +72 -0
- package/dist/session/testing/built-session-execution-budget.js.map +1 -0
- package/dist/session/testing/built-session-execution-contract.d.ts +64 -0
- package/dist/session/testing/built-session-execution-contract.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-contract.js +4 -0
- package/dist/session/testing/built-session-execution-contract.js.map +1 -0
- package/dist/session/testing/built-session-execution-failure.d.ts +32 -0
- package/dist/session/testing/built-session-execution-failure.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-failure.js +51 -0
- package/dist/session/testing/built-session-execution-failure.js.map +1 -0
- package/dist/session/testing/built-session-execution-handle.d.ts +29 -0
- package/dist/session/testing/built-session-execution-handle.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-handle.js +37 -0
- package/dist/session/testing/built-session-execution-handle.js.map +1 -0
- package/dist/session/testing/built-session-execution-input.d.ts +94 -0
- package/dist/session/testing/built-session-execution-input.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-input.js +356 -0
- package/dist/session/testing/built-session-execution-input.js.map +1 -0
- package/dist/session/testing/built-session-execution-lifecycle.d.ts +36 -0
- package/dist/session/testing/built-session-execution-lifecycle.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-lifecycle.js +143 -0
- package/dist/session/testing/built-session-execution-lifecycle.js.map +1 -0
- package/dist/session/testing/built-session-execution-policy.d.ts +67 -0
- package/dist/session/testing/built-session-execution-policy.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-policy.js +110 -0
- package/dist/session/testing/built-session-execution-policy.js.map +1 -0
- package/dist/session/testing/built-session-execution-private-types.d.ts +137 -0
- package/dist/session/testing/built-session-execution-private-types.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-private-types.js +2 -0
- package/dist/session/testing/built-session-execution-private-types.js.map +1 -0
- package/dist/session/testing/built-session-execution-projection.d.ts +177 -0
- package/dist/session/testing/built-session-execution-projection.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-projection.js +226 -0
- package/dist/session/testing/built-session-execution-projection.js.map +1 -0
- package/dist/session/testing/built-session-execution-provider.d.ts +36 -0
- package/dist/session/testing/built-session-execution-provider.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-provider.js +2 -0
- package/dist/session/testing/built-session-execution-provider.js.map +1 -0
- package/dist/session/testing/built-session-execution-receipt.d.ts +331 -0
- package/dist/session/testing/built-session-execution-receipt.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-receipt.js +243 -0
- package/dist/session/testing/built-session-execution-receipt.js.map +1 -0
- package/dist/session/testing/built-session-execution-record.d.ts +15 -0
- package/dist/session/testing/built-session-execution-record.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-record.js +27 -0
- package/dist/session/testing/built-session-execution-record.js.map +1 -0
- package/dist/session/testing/built-session-execution-snapshot.d.ts +83 -0
- package/dist/session/testing/built-session-execution-snapshot.d.ts.map +1 -0
- package/dist/session/testing/built-session-execution-snapshot.js +5 -0
- package/dist/session/testing/built-session-execution-snapshot.js.map +1 -0
- package/dist/session/testing/built-session-node.d.ts +110 -0
- package/dist/session/testing/built-session-node.d.ts.map +1 -0
- package/dist/session/testing/built-session-node.js +715 -0
- package/dist/session/testing/built-session-node.js.map +1 -0
- package/dist/session/testing/built-session-structural-gate.d.ts +40 -0
- package/dist/session/testing/built-session-structural-gate.d.ts.map +1 -0
- package/dist/session/testing/built-session-structural-gate.js +207 -0
- package/dist/session/testing/built-session-structural-gate.js.map +1 -0
- package/dist/session/testing/built-session-temporary-lifecycle.d.ts +35 -0
- package/dist/session/testing/built-session-temporary-lifecycle.d.ts.map +1 -0
- package/dist/session/testing/built-session-temporary-lifecycle.js +314 -0
- package/dist/session/testing/built-session-temporary-lifecycle.js.map +1 -0
- package/dist/session/testing/git-repository.d.ts +2 -0
- package/dist/session/testing/git-repository.d.ts.map +1 -0
- package/dist/session/testing/git-repository.js +29 -0
- package/dist/session/testing/git-repository.js.map +1 -0
- package/dist/session/testing/session-fixture.d.ts +7 -0
- package/dist/session/testing/session-fixture.d.ts.map +1 -0
- package/dist/session/testing/session-fixture.js +53 -0
- package/dist/session/testing/session-fixture.js.map +1 -0
- package/dist/session/turn/application/requests.d.ts +24 -0
- package/dist/session/turn/application/requests.d.ts.map +1 -0
- package/dist/session/turn/application/requests.js +164 -0
- package/dist/session/turn/application/requests.js.map +1 -0
- package/dist/session/turn/application/source-candidate-authority.d.ts +5 -0
- package/dist/session/turn/application/source-candidate-authority.d.ts.map +1 -0
- package/dist/session/turn/application/source-candidate-authority.js +4 -0
- package/dist/session/turn/application/source-candidate-authority.js.map +1 -0
- package/dist/session/turn/storage/interrupt.d.ts +74 -0
- package/dist/session/turn/storage/interrupt.d.ts.map +1 -0
- package/dist/session/turn/storage/interrupt.js +757 -0
- package/dist/session/turn/storage/interrupt.js.map +1 -0
- package/dist/session/turn/storage/lifecycle.d.ts +29 -0
- package/dist/session/turn/storage/lifecycle.d.ts.map +1 -0
- package/dist/session/turn/storage/lifecycle.js +310 -0
- package/dist/session/turn/storage/lifecycle.js.map +1 -0
- package/dist/session/turn/storage/queries.d.ts +4 -0
- package/dist/session/turn/storage/queries.d.ts.map +1 -0
- package/dist/session/turn/storage/queries.js +7 -0
- package/dist/session/turn/storage/queries.js.map +1 -0
- package/dist/session/turn/storage/record.d.ts +28 -0
- package/dist/session/turn/storage/record.d.ts.map +1 -0
- package/dist/session/turn/storage/record.js +84 -0
- package/dist/session/turn/storage/record.js.map +1 -0
- package/dist/session/turn/storage/request-digest.d.ts +8 -0
- package/dist/session/turn/storage/request-digest.d.ts.map +1 -0
- package/dist/session/turn/storage/request-digest.js +20 -0
- package/dist/session/turn/storage/request-digest.js.map +1 -0
- package/dist/session/turn/storage/send.d.ts +12 -0
- package/dist/session/turn/storage/send.d.ts.map +1 -0
- package/dist/session/turn/storage/send.js +149 -0
- package/dist/session/turn/storage/send.js.map +1 -0
- package/dist/storage/database-files.d.ts +6 -0
- package/dist/storage/database-files.d.ts.map +1 -0
- package/dist/storage/database-files.js +146 -0
- package/dist/storage/database-files.js.map +1 -0
- package/dist/storage/integration-authorization-operations.d.ts +7 -0
- package/dist/storage/integration-authorization-operations.d.ts.map +1 -0
- package/dist/storage/integration-authorization-operations.js +134 -0
- package/dist/storage/integration-authorization-operations.js.map +1 -0
- package/dist/storage/journal.d.ts +108 -0
- package/dist/storage/journal.d.ts.map +1 -0
- package/dist/storage/journal.js +459 -0
- package/dist/storage/journal.js.map +1 -0
- package/dist/storage/migration-eleven.d.ts +2 -0
- package/dist/storage/migration-eleven.d.ts.map +1 -0
- package/dist/storage/migration-eleven.js +298 -0
- package/dist/storage/migration-eleven.js.map +1 -0
- package/dist/storage/migration-fourteen.d.ts +2 -0
- package/dist/storage/migration-fourteen.d.ts.map +1 -0
- package/dist/storage/migration-fourteen.js +316 -0
- package/dist/storage/migration-fourteen.js.map +1 -0
- package/dist/storage/migration-nine.d.ts +2 -0
- package/dist/storage/migration-nine.d.ts.map +1 -0
- package/dist/storage/migration-nine.js +1224 -0
- package/dist/storage/migration-nine.js.map +1 -0
- package/dist/storage/migration-ten.d.ts +2 -0
- package/dist/storage/migration-ten.d.ts.map +1 -0
- package/dist/storage/migration-ten.js +14 -0
- package/dist/storage/migration-ten.js.map +1 -0
- package/dist/storage/migration-thirteen.d.ts +2 -0
- package/dist/storage/migration-thirteen.d.ts.map +1 -0
- package/dist/storage/migration-thirteen.js +380 -0
- package/dist/storage/migration-thirteen.js.map +1 -0
- package/dist/storage/migration-twelve.d.ts +2 -0
- package/dist/storage/migration-twelve.d.ts.map +1 -0
- package/dist/storage/migration-twelve.js +85 -0
- package/dist/storage/migration-twelve.js.map +1 -0
- package/dist/storage/migrations.d.ts +20 -0
- package/dist/storage/migrations.d.ts.map +1 -0
- package/dist/storage/migrations.js +909 -0
- package/dist/storage/migrations.js.map +1 -0
- package/dist/storage/node-database.d.ts +282 -0
- package/dist/storage/node-database.d.ts.map +1 -0
- package/dist/storage/node-database.js +448 -0
- package/dist/storage/node-database.js.map +1 -0
- package/dist/storage/pi-rpc-authorization-operations.d.ts +91 -0
- package/dist/storage/pi-rpc-authorization-operations.d.ts.map +1 -0
- package/dist/storage/pi-rpc-authorization-operations.js +136 -0
- package/dist/storage/pi-rpc-authorization-operations.js.map +1 -0
- package/dist/storage/policy.d.ts +8 -0
- package/dist/storage/policy.d.ts.map +1 -0
- package/dist/storage/policy.js +8 -0
- package/dist/storage/policy.js.map +1 -0
- package/dist/storage/sqlite-integer.d.ts +3 -0
- package/dist/storage/sqlite-integer.d.ts.map +1 -0
- package/dist/storage/sqlite-integer.js +25 -0
- package/dist/storage/sqlite-integer.js.map +1 -0
- package/dist/storage/store-effect.d.ts +5 -0
- package/dist/storage/store-effect.d.ts.map +1 -0
- package/dist/storage/store-effect.js +15 -0
- package/dist/storage/store-effect.js.map +1 -0
- package/dist/terminal/application/live-requests.d.ts +18 -0
- package/dist/terminal/application/live-requests.d.ts.map +1 -0
- package/dist/terminal/application/live-requests.js +24 -0
- package/dist/terminal/application/live-requests.js.map +1 -0
- package/dist/terminal/application/requests.d.ts +10 -0
- package/dist/terminal/application/requests.d.ts.map +1 -0
- package/dist/terminal/application/requests.js +50 -0
- package/dist/terminal/application/requests.js.map +1 -0
- package/dist/terminal/live-launch.d.ts +16 -0
- package/dist/terminal/live-launch.d.ts.map +1 -0
- package/dist/terminal/live-launch.js +213 -0
- package/dist/terminal/live-launch.js.map +1 -0
- package/dist/terminal/live-lifecycle.d.ts +104 -0
- package/dist/terminal/live-lifecycle.d.ts.map +1 -0
- package/dist/terminal/live-lifecycle.js +185 -0
- package/dist/terminal/live-lifecycle.js.map +1 -0
- package/dist/terminal/live-native-control.d.ts +7 -0
- package/dist/terminal/live-native-control.d.ts.map +1 -0
- package/dist/terminal/live-native-control.js +233 -0
- package/dist/terminal/live-native-control.js.map +1 -0
- package/dist/terminal/live-runtime-state.d.ts +69 -0
- package/dist/terminal/live-runtime-state.d.ts.map +1 -0
- package/dist/terminal/live-runtime-state.js +75 -0
- package/dist/terminal/live-runtime-state.js.map +1 -0
- package/dist/terminal/live-service.d.ts +29 -0
- package/dist/terminal/live-service.d.ts.map +1 -0
- package/dist/terminal/live-service.js +79 -0
- package/dist/terminal/live-service.js.map +1 -0
- package/dist/terminal/live-supervision.d.ts +19 -0
- package/dist/terminal/live-supervision.d.ts.map +1 -0
- package/dist/terminal/live-supervision.js +78 -0
- package/dist/terminal/live-supervision.js.map +1 -0
- package/dist/terminal/storage/create.d.ts +23 -0
- package/dist/terminal/storage/create.d.ts.map +1 -0
- package/dist/terminal/storage/create.js +151 -0
- package/dist/terminal/storage/create.js.map +1 -0
- package/dist/terminal/storage/events.d.ts +4 -0
- package/dist/terminal/storage/events.d.ts.map +1 -0
- package/dist/terminal/storage/events.js +151 -0
- package/dist/terminal/storage/events.js.map +1 -0
- package/dist/terminal/storage/live-command-shared.d.ts +39 -0
- package/dist/terminal/storage/live-command-shared.d.ts.map +1 -0
- package/dist/terminal/storage/live-command-shared.js +142 -0
- package/dist/terminal/storage/live-command-shared.js.map +1 -0
- package/dist/terminal/storage/live-commands.d.ts +7 -0
- package/dist/terminal/storage/live-commands.d.ts.map +1 -0
- package/dist/terminal/storage/live-commands.js +7 -0
- package/dist/terminal/storage/live-commands.js.map +1 -0
- package/dist/terminal/storage/live-controller-commands.d.ts +4 -0
- package/dist/terminal/storage/live-controller-commands.d.ts.map +1 -0
- package/dist/terminal/storage/live-controller-commands.js +4 -0
- package/dist/terminal/storage/live-controller-commands.js.map +1 -0
- package/dist/terminal/storage/live-controller-lease.d.ts +17 -0
- package/dist/terminal/storage/live-controller-lease.d.ts.map +1 -0
- package/dist/terminal/storage/live-controller-lease.js +316 -0
- package/dist/terminal/storage/live-controller-lease.js.map +1 -0
- package/dist/terminal/storage/live-controller-policy.d.ts +44 -0
- package/dist/terminal/storage/live-controller-policy.d.ts.map +1 -0
- package/dist/terminal/storage/live-controller-policy.js +135 -0
- package/dist/terminal/storage/live-controller-policy.js.map +1 -0
- package/dist/terminal/storage/live-controller-request.d.ts +15 -0
- package/dist/terminal/storage/live-controller-request.d.ts.map +1 -0
- package/dist/terminal/storage/live-controller-request.js +166 -0
- package/dist/terminal/storage/live-controller-request.js.map +1 -0
- package/dist/terminal/storage/live-controller-shared.d.ts +40 -0
- package/dist/terminal/storage/live-controller-shared.d.ts.map +1 -0
- package/dist/terminal/storage/live-controller-shared.js +74 -0
- package/dist/terminal/storage/live-controller-shared.js.map +1 -0
- package/dist/terminal/storage/live-create-commands.d.ts +21 -0
- package/dist/terminal/storage/live-create-commands.d.ts.map +1 -0
- package/dist/terminal/storage/live-create-commands.js +227 -0
- package/dist/terminal/storage/live-create-commands.js.map +1 -0
- package/dist/terminal/storage/live-launch-context.d.ts +17 -0
- package/dist/terminal/storage/live-launch-context.d.ts.map +1 -0
- package/dist/terminal/storage/live-launch-context.js +44 -0
- package/dist/terminal/storage/live-launch-context.js.map +1 -0
- package/dist/terminal/storage/live-mutations.d.ts +65 -0
- package/dist/terminal/storage/live-mutations.d.ts.map +1 -0
- package/dist/terminal/storage/live-mutations.js +291 -0
- package/dist/terminal/storage/live-mutations.js.map +1 -0
- package/dist/terminal/storage/live-native-commands.d.ts +77 -0
- package/dist/terminal/storage/live-native-commands.d.ts.map +1 -0
- package/dist/terminal/storage/live-native-commands.js +728 -0
- package/dist/terminal/storage/live-native-commands.js.map +1 -0
- package/dist/terminal/storage/live-process-settlement.d.ts +30 -0
- package/dist/terminal/storage/live-process-settlement.d.ts.map +1 -0
- package/dist/terminal/storage/live-process-settlement.js +159 -0
- package/dist/terminal/storage/live-process-settlement.js.map +1 -0
- package/dist/terminal/storage/live-record.d.ts +36 -0
- package/dist/terminal/storage/live-record.d.ts.map +1 -0
- package/dist/terminal/storage/live-record.js +153 -0
- package/dist/terminal/storage/live-record.js.map +1 -0
- package/dist/terminal/storage/live-recovery.d.ts +6 -0
- package/dist/terminal/storage/live-recovery.d.ts.map +1 -0
- package/dist/terminal/storage/live-recovery.js +539 -0
- package/dist/terminal/storage/live-recovery.js.map +1 -0
- package/dist/terminal/storage/live-retention.d.ts +46 -0
- package/dist/terminal/storage/live-retention.d.ts.map +1 -0
- package/dist/terminal/storage/live-retention.js +362 -0
- package/dist/terminal/storage/live-retention.js.map +1 -0
- package/dist/terminal/storage/queries.d.ts +6 -0
- package/dist/terminal/storage/queries.d.ts.map +1 -0
- package/dist/terminal/storage/queries.js +85 -0
- package/dist/terminal/storage/queries.js.map +1 -0
- package/dist/terminal/storage/record.d.ts +29 -0
- package/dist/terminal/storage/record.d.ts.map +1 -0
- package/dist/terminal/storage/record.js +87 -0
- package/dist/terminal/storage/record.js.map +1 -0
- package/dist/terminal/storage/request-digest.d.ts +3 -0
- package/dist/terminal/storage/request-digest.d.ts.map +1 -0
- package/dist/terminal/storage/request-digest.js +10 -0
- package/dist/terminal/storage/request-digest.js.map +1 -0
- package/dist/terminal/storage/sqlite-counter.d.ts +4 -0
- package/dist/terminal/storage/sqlite-counter.d.ts.map +1 -0
- package/dist/terminal/storage/sqlite-counter.js +15 -0
- package/dist/terminal/storage/sqlite-counter.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,1224 @@
|
|
|
1
|
+
import { MAX_LIVE_TERMINALS, MAX_RETAINED_INACTIVE_TERMINALS, MAX_TERMINAL_CONTROLLER_REQUESTS_GLOBAL, MAX_TERMINAL_CONTROLLER_REQUESTS_PER_TERMINAL, MAX_TERMINAL_DURABLE_SCROLLBACK_BYTES_GLOBAL, MAX_TERMINAL_GENERATION, MAX_TERMINAL_MUTATION_SEQUENCE, MAX_TERMINAL_NATIVE_OPERATION_SEQUENCE, MAX_TERMINAL_OBSERVERS_GLOBAL, MAX_TERMINAL_OBSERVERS_PER_TERMINAL, MAX_TERMINAL_SCROLLBACK_BYTES, MAX_TERMINAL_SCROLLBACK_LINES, } from "@maiaos/protocol";
|
|
2
|
+
const MAX_TERMINAL_DURABLE_EVENTS_PER_TERMINAL = 50_000;
|
|
3
|
+
const MAX_TERMINAL_MUTATIONS_PER_TERMINAL = 65_536;
|
|
4
|
+
export const migrationNineSql = `
|
|
5
|
+
CREATE TABLE terminal_live_generations (
|
|
6
|
+
terminal_id TEXT NOT NULL
|
|
7
|
+
REFERENCES terminals(terminal_id) ON DELETE RESTRICT,
|
|
8
|
+
generation INTEGER NOT NULL CHECK (
|
|
9
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
10
|
+
),
|
|
11
|
+
cleanup_state TEXT NOT NULL CHECK (
|
|
12
|
+
cleanup_state IN ('pending', 'known_identity_members_complete', 'unknown')
|
|
13
|
+
),
|
|
14
|
+
cleanup_reason TEXT CHECK (
|
|
15
|
+
cleanup_reason IS NULL OR cleanup_reason IN (
|
|
16
|
+
'cleanup_deadline', 'containment_lost', 'host_failed',
|
|
17
|
+
'identity_observation_lost', 'native_acknowledgement_lost',
|
|
18
|
+
'node_restarted'
|
|
19
|
+
)
|
|
20
|
+
),
|
|
21
|
+
created_at TEXT NOT NULL,
|
|
22
|
+
updated_at TEXT NOT NULL,
|
|
23
|
+
PRIMARY KEY (terminal_id, generation),
|
|
24
|
+
CHECK (
|
|
25
|
+
(cleanup_state = 'unknown' AND cleanup_reason IS NOT NULL) OR
|
|
26
|
+
(cleanup_state <> 'unknown' AND cleanup_reason IS NULL)
|
|
27
|
+
)
|
|
28
|
+
) STRICT, WITHOUT ROWID;
|
|
29
|
+
|
|
30
|
+
CREATE TABLE terminal_live_sessions (
|
|
31
|
+
terminal_id TEXT PRIMARY KEY NOT NULL
|
|
32
|
+
REFERENCES terminals(terminal_id) ON DELETE RESTRICT,
|
|
33
|
+
generation INTEGER NOT NULL CHECK (
|
|
34
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
35
|
+
),
|
|
36
|
+
state TEXT NOT NULL CHECK (
|
|
37
|
+
state IN ('creating', 'running', 'closing', 'restarting', 'exited', 'disconnected')
|
|
38
|
+
),
|
|
39
|
+
cleanup_state TEXT NOT NULL CHECK (
|
|
40
|
+
cleanup_state IN ('pending', 'known_identity_members_complete', 'unknown')
|
|
41
|
+
),
|
|
42
|
+
cleanup_reason TEXT CHECK (
|
|
43
|
+
cleanup_reason IS NULL OR cleanup_reason IN (
|
|
44
|
+
'cleanup_deadline', 'containment_lost', 'host_failed',
|
|
45
|
+
'identity_observation_lost', 'native_acknowledgement_lost',
|
|
46
|
+
'node_restarted'
|
|
47
|
+
)
|
|
48
|
+
),
|
|
49
|
+
revision INTEGER NOT NULL CHECK (revision >= 1),
|
|
50
|
+
event_head INTEGER NOT NULL DEFAULT 0 CHECK (event_head >= 0),
|
|
51
|
+
chunk_head INTEGER NOT NULL DEFAULT 0 CHECK (chunk_head >= 0),
|
|
52
|
+
mutation_head INTEGER NOT NULL DEFAULT 0 CHECK (
|
|
53
|
+
mutation_head BETWEEN 0 AND ${String(MAX_TERMINAL_MUTATION_SEQUENCE)}
|
|
54
|
+
),
|
|
55
|
+
native_operation_head INTEGER NOT NULL DEFAULT 0 CHECK (
|
|
56
|
+
native_operation_head BETWEEN 0 AND ${String(MAX_TERMINAL_NATIVE_OPERATION_SEQUENCE)}
|
|
57
|
+
),
|
|
58
|
+
columns INTEGER NOT NULL CHECK (columns BETWEEN 2 AND 500),
|
|
59
|
+
rows INTEGER NOT NULL CHECK (rows BETWEEN 2 AND 300),
|
|
60
|
+
retained_bytes INTEGER NOT NULL DEFAULT 0 CHECK (
|
|
61
|
+
retained_bytes BETWEEN 0 AND ${String(MAX_TERMINAL_SCROLLBACK_BYTES)}
|
|
62
|
+
),
|
|
63
|
+
retained_lines INTEGER NOT NULL DEFAULT 0 CHECK (
|
|
64
|
+
retained_lines BETWEEN 0 AND ${String(MAX_TERMINAL_SCROLLBACK_LINES)}
|
|
65
|
+
),
|
|
66
|
+
exit_code INTEGER,
|
|
67
|
+
exit_signal TEXT CHECK (
|
|
68
|
+
exit_signal IS NULL OR exit_signal IN (
|
|
69
|
+
'hangup', 'interrupt', 'kill', 'terminate', 'unknown'
|
|
70
|
+
)
|
|
71
|
+
),
|
|
72
|
+
exit_observed_at TEXT,
|
|
73
|
+
deleted_at TEXT,
|
|
74
|
+
created_at TEXT NOT NULL,
|
|
75
|
+
updated_at TEXT NOT NULL,
|
|
76
|
+
FOREIGN KEY (terminal_id, generation)
|
|
77
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT,
|
|
78
|
+
CHECK (
|
|
79
|
+
(cleanup_state = 'unknown' AND cleanup_reason IS NOT NULL) OR
|
|
80
|
+
(cleanup_state <> 'unknown' AND cleanup_reason IS NULL)
|
|
81
|
+
),
|
|
82
|
+
CHECK (
|
|
83
|
+
(state IN ('creating', 'running', 'closing') AND cleanup_state = 'pending') OR
|
|
84
|
+
(state = 'restarting' AND cleanup_state IN ('pending', 'known_identity_members_complete')) OR
|
|
85
|
+
(state = 'disconnected' AND cleanup_state = 'unknown') OR
|
|
86
|
+
state = 'exited'
|
|
87
|
+
),
|
|
88
|
+
CHECK (
|
|
89
|
+
(state = 'exited' AND exit_observed_at IS NOT NULL) OR
|
|
90
|
+
(state = 'disconnected' AND (
|
|
91
|
+
(exit_code IS NULL AND exit_signal IS NULL AND exit_observed_at IS NULL) OR
|
|
92
|
+
exit_observed_at IS NOT NULL
|
|
93
|
+
)) OR
|
|
94
|
+
(state NOT IN ('exited', 'disconnected') AND exit_code IS NULL
|
|
95
|
+
AND exit_signal IS NULL AND exit_observed_at IS NULL)
|
|
96
|
+
)
|
|
97
|
+
) STRICT;
|
|
98
|
+
|
|
99
|
+
CREATE TRIGGER terminal_live_sessions_admit
|
|
100
|
+
BEFORE INSERT ON terminal_live_sessions
|
|
101
|
+
BEGIN
|
|
102
|
+
SELECT CASE WHEN NOT (
|
|
103
|
+
NEW.generation = 1 AND NEW.state = 'creating'
|
|
104
|
+
AND NEW.cleanup_state = 'pending' AND NEW.cleanup_reason IS NULL
|
|
105
|
+
AND NEW.revision = 1 AND NEW.event_head = 0 AND NEW.chunk_head = 0
|
|
106
|
+
AND NEW.mutation_head = 0 AND NEW.native_operation_head = 0
|
|
107
|
+
AND NEW.deleted_at IS NULL
|
|
108
|
+
) THEN RAISE(ABORT, 'terminal_live_initial_state_invalid') END;
|
|
109
|
+
SELECT CASE WHEN (
|
|
110
|
+
SELECT COUNT(*) FROM terminal_live_sessions
|
|
111
|
+
WHERE state IN ('creating', 'running', 'closing', 'restarting')
|
|
112
|
+
OR cleanup_state IN ('pending', 'unknown')
|
|
113
|
+
) >= ${String(MAX_LIVE_TERMINALS)}
|
|
114
|
+
THEN RAISE(ABORT, 'terminal_live_global_limit') END;
|
|
115
|
+
SELECT CASE WHEN NEW.state = 'exited'
|
|
116
|
+
AND NEW.cleanup_state = 'known_identity_members_complete'
|
|
117
|
+
AND NEW.deleted_at IS NULL
|
|
118
|
+
AND (
|
|
119
|
+
SELECT COUNT(*) FROM terminal_live_sessions
|
|
120
|
+
WHERE state = 'exited'
|
|
121
|
+
AND cleanup_state = 'known_identity_members_complete'
|
|
122
|
+
AND deleted_at IS NULL
|
|
123
|
+
) >= ${String(MAX_RETAINED_INACTIVE_TERMINALS)}
|
|
124
|
+
THEN RAISE(ABORT, 'terminal_live_inactive_history_limit') END;
|
|
125
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
126
|
+
SELECT 1 FROM terminals
|
|
127
|
+
WHERE terminal_id = NEW.terminal_id AND platform = 'darwin'
|
|
128
|
+
AND state = 'unavailable'
|
|
129
|
+
AND unavailability_code = 'terminal_containment_unsupported'
|
|
130
|
+
AND revision = 1 AND chunk_head = 0
|
|
131
|
+
) THEN RAISE(ABORT, 'terminal_live_base_identity_invalid') END;
|
|
132
|
+
SELECT CASE WHEN EXISTS (
|
|
133
|
+
SELECT 1 FROM orchestration_runs WHERE terminal_id = NEW.terminal_id
|
|
134
|
+
) THEN RAISE(ABORT, 'terminal_live_orchestration_ineligible') END;
|
|
135
|
+
END;
|
|
136
|
+
|
|
137
|
+
CREATE TRIGGER terminal_live_sessions_lifecycle_update
|
|
138
|
+
BEFORE UPDATE OF state, cleanup_state, cleanup_reason ON terminal_live_sessions
|
|
139
|
+
WHEN NEW.generation = OLD.generation AND (
|
|
140
|
+
NEW.state <> OLD.state OR NEW.cleanup_state <> OLD.cleanup_state
|
|
141
|
+
OR NEW.cleanup_reason IS NOT OLD.cleanup_reason
|
|
142
|
+
)
|
|
143
|
+
BEGIN
|
|
144
|
+
SELECT CASE WHEN NOT (
|
|
145
|
+
(OLD.state = 'creating' AND OLD.cleanup_state = 'pending'
|
|
146
|
+
AND NEW.state = 'running' AND NEW.cleanup_state = 'pending') OR
|
|
147
|
+
(OLD.state = 'creating' AND OLD.cleanup_state = 'pending'
|
|
148
|
+
AND NEW.state = 'disconnected' AND NEW.cleanup_state = 'unknown') OR
|
|
149
|
+
(OLD.state = 'creating' AND OLD.cleanup_state = 'pending'
|
|
150
|
+
AND NEW.state = 'exited'
|
|
151
|
+
AND NEW.cleanup_state = 'known_identity_members_complete') OR
|
|
152
|
+
(OLD.state = 'running' AND OLD.cleanup_state = 'pending'
|
|
153
|
+
AND NEW.state IN ('closing', 'restarting')
|
|
154
|
+
AND NEW.cleanup_state = 'pending') OR
|
|
155
|
+
(OLD.state = 'running' AND OLD.cleanup_state = 'pending'
|
|
156
|
+
AND NEW.state = 'exited'
|
|
157
|
+
AND NEW.cleanup_state = 'pending') OR
|
|
158
|
+
(OLD.state = 'running' AND OLD.cleanup_state = 'pending'
|
|
159
|
+
AND NEW.state = 'disconnected' AND NEW.cleanup_state = 'unknown') OR
|
|
160
|
+
(OLD.state = 'closing' AND OLD.cleanup_state = 'pending'
|
|
161
|
+
AND NEW.state = 'exited'
|
|
162
|
+
AND NEW.cleanup_state = 'pending') OR
|
|
163
|
+
(OLD.state = 'closing' AND OLD.cleanup_state = 'pending'
|
|
164
|
+
AND NEW.state = 'disconnected' AND NEW.cleanup_state = 'unknown') OR
|
|
165
|
+
(OLD.state = 'restarting' AND OLD.cleanup_state = 'pending'
|
|
166
|
+
AND NEW.state = 'restarting'
|
|
167
|
+
AND NEW.cleanup_state = 'known_identity_members_complete') OR
|
|
168
|
+
(OLD.state = 'restarting' AND OLD.cleanup_state = 'pending'
|
|
169
|
+
AND NEW.state = 'disconnected' AND NEW.cleanup_state = 'unknown') OR
|
|
170
|
+
(OLD.state = 'exited' AND OLD.cleanup_state = 'pending'
|
|
171
|
+
AND NEW.state = 'exited'
|
|
172
|
+
AND NEW.cleanup_state IN ('known_identity_members_complete', 'unknown')) OR
|
|
173
|
+
(OLD.state = 'exited'
|
|
174
|
+
AND OLD.cleanup_state = 'known_identity_members_complete'
|
|
175
|
+
AND NEW.state = 'restarting'
|
|
176
|
+
AND NEW.cleanup_state = 'known_identity_members_complete')
|
|
177
|
+
) OR NEW.revision <> OLD.revision + 1
|
|
178
|
+
THEN RAISE(ABORT, 'terminal_live_lifecycle_transition_invalid') END;
|
|
179
|
+
SELECT CASE WHEN OLD.state = 'creating' AND NEW.state = 'running'
|
|
180
|
+
AND NOT EXISTS (
|
|
181
|
+
SELECT 1 FROM terminal_live_mutations
|
|
182
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
183
|
+
AND mutation_sequence = OLD.mutation_head
|
|
184
|
+
AND method = 'terminal.create' AND dispatch_state = 'acknowledged'
|
|
185
|
+
AND acknowledgement_kind = 'process-started'
|
|
186
|
+
)
|
|
187
|
+
THEN RAISE(ABORT, 'terminal_live_create_acknowledgement_required') END;
|
|
188
|
+
SELECT CASE WHEN OLD.state = 'running' AND NEW.state = 'closing'
|
|
189
|
+
AND NOT EXISTS (
|
|
190
|
+
SELECT 1 FROM terminal_live_mutations
|
|
191
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
192
|
+
AND mutation_sequence = OLD.mutation_head
|
|
193
|
+
AND method = 'terminal.session.close'
|
|
194
|
+
AND effect_phase = 'native-effect' AND dispatch_state = 'prepared'
|
|
195
|
+
)
|
|
196
|
+
THEN RAISE(ABORT, 'terminal_live_close_dispatch_required') END;
|
|
197
|
+
SELECT CASE WHEN OLD.state <> 'restarting' AND NEW.state = 'restarting'
|
|
198
|
+
AND NOT EXISTS (
|
|
199
|
+
SELECT 1 FROM terminal_live_mutations
|
|
200
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
201
|
+
AND mutation_sequence = OLD.mutation_head
|
|
202
|
+
AND method = 'terminal.session.restart' AND dispatch_state = 'prepared'
|
|
203
|
+
AND (
|
|
204
|
+
(OLD.state = 'running' AND effect_phase = 'source-cleanup'
|
|
205
|
+
AND restart_source_cleanup_required = 1) OR
|
|
206
|
+
(OLD.state = 'exited' AND effect_phase = 'target-start'
|
|
207
|
+
AND restart_source_cleanup_required = 0)
|
|
208
|
+
)
|
|
209
|
+
)
|
|
210
|
+
THEN RAISE(ABORT, 'terminal_live_restart_dispatch_required') END;
|
|
211
|
+
SELECT CASE WHEN OLD.state = 'exited' AND NEW.state = 'restarting'
|
|
212
|
+
AND NOT EXISTS (
|
|
213
|
+
SELECT 1 FROM terminal_live_generations
|
|
214
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation + 1
|
|
215
|
+
AND cleanup_state = 'pending'
|
|
216
|
+
)
|
|
217
|
+
THEN RAISE(ABORT, 'terminal_live_restart_target_generation_required') END;
|
|
218
|
+
SELECT CASE WHEN OLD.state = 'restarting'
|
|
219
|
+
AND OLD.cleanup_state = 'pending'
|
|
220
|
+
AND NEW.state = 'restarting'
|
|
221
|
+
AND NEW.cleanup_state = 'known_identity_members_complete'
|
|
222
|
+
AND NOT EXISTS (
|
|
223
|
+
SELECT 1 FROM terminal_live_mutations
|
|
224
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
225
|
+
AND mutation_sequence = OLD.mutation_head
|
|
226
|
+
AND method = 'terminal.session.restart'
|
|
227
|
+
AND effect_phase = 'source-cleanup'
|
|
228
|
+
AND dispatch_state = 'attempted'
|
|
229
|
+
AND source_cleanup_ack_digest IS NOT NULL
|
|
230
|
+
)
|
|
231
|
+
THEN RAISE(ABORT, 'terminal_live_restart_source_cleanup_ack_required') END;
|
|
232
|
+
SELECT CASE WHEN OLD.state = 'creating' AND NEW.state = 'disconnected'
|
|
233
|
+
AND NOT EXISTS (
|
|
234
|
+
SELECT 1 FROM terminal_live_mutations
|
|
235
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
236
|
+
AND mutation_sequence = OLD.mutation_head
|
|
237
|
+
AND method = 'terminal.create' AND dispatch_state = 'outcome_unknown'
|
|
238
|
+
)
|
|
239
|
+
THEN RAISE(ABORT, 'terminal_live_create_unknown_required') END;
|
|
240
|
+
SELECT CASE WHEN OLD.state = 'creating' AND NEW.state = 'exited'
|
|
241
|
+
AND NOT EXISTS (
|
|
242
|
+
SELECT 1 FROM terminal_live_mutations
|
|
243
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
244
|
+
AND mutation_sequence = OLD.mutation_head
|
|
245
|
+
AND method = 'terminal.create' AND dispatch_state = 'outcome_unknown'
|
|
246
|
+
AND effect_phase = 'native-effect'
|
|
247
|
+
AND mutation_sequence = 1 AND native_operation_sequence = 1
|
|
248
|
+
AND unknown_reason = 'native_acknowledgement_lost'
|
|
249
|
+
AND acknowledgement_command_id IS NULL
|
|
250
|
+
AND acknowledgement_kind IS NULL
|
|
251
|
+
AND acknowledgement_digest IS NULL
|
|
252
|
+
)
|
|
253
|
+
THEN RAISE(ABORT, 'terminal_live_create_cleanup_required') END;
|
|
254
|
+
SELECT CASE WHEN OLD.state = 'closing' AND NEW.state = 'disconnected'
|
|
255
|
+
AND NOT EXISTS (
|
|
256
|
+
SELECT 1 FROM terminal_live_mutations
|
|
257
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
258
|
+
AND mutation_sequence = OLD.mutation_head
|
|
259
|
+
AND method = 'terminal.session.close'
|
|
260
|
+
AND dispatch_state = 'outcome_unknown'
|
|
261
|
+
)
|
|
262
|
+
THEN RAISE(ABORT, 'terminal_live_close_unknown_required') END;
|
|
263
|
+
SELECT CASE WHEN OLD.state = 'restarting'
|
|
264
|
+
AND OLD.cleanup_state = 'pending' AND NEW.state = 'disconnected'
|
|
265
|
+
AND NOT EXISTS (
|
|
266
|
+
SELECT 1 FROM terminal_live_mutations
|
|
267
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
268
|
+
AND mutation_sequence = OLD.mutation_head
|
|
269
|
+
AND method = 'terminal.session.restart'
|
|
270
|
+
AND effect_phase = 'source-cleanup'
|
|
271
|
+
AND dispatch_state = 'outcome_unknown'
|
|
272
|
+
)
|
|
273
|
+
THEN RAISE(ABORT, 'terminal_live_restart_source_unknown_required') END;
|
|
274
|
+
END;
|
|
275
|
+
|
|
276
|
+
CREATE TRIGGER terminal_live_sessions_bound_inactive_update
|
|
277
|
+
BEFORE UPDATE OF state, cleanup_state, deleted_at ON terminal_live_sessions
|
|
278
|
+
WHEN NEW.state = 'exited'
|
|
279
|
+
AND NEW.cleanup_state = 'known_identity_members_complete'
|
|
280
|
+
AND NEW.deleted_at IS NULL
|
|
281
|
+
AND NOT (
|
|
282
|
+
OLD.state = 'exited'
|
|
283
|
+
AND OLD.cleanup_state = 'known_identity_members_complete'
|
|
284
|
+
AND OLD.deleted_at IS NULL
|
|
285
|
+
)
|
|
286
|
+
BEGIN
|
|
287
|
+
SELECT CASE WHEN (
|
|
288
|
+
SELECT COUNT(*) FROM terminal_live_sessions
|
|
289
|
+
WHERE state = 'exited'
|
|
290
|
+
AND cleanup_state = 'known_identity_members_complete'
|
|
291
|
+
AND deleted_at IS NULL
|
|
292
|
+
) >= ${String(MAX_RETAINED_INACTIVE_TERMINALS)}
|
|
293
|
+
THEN RAISE(ABORT, 'terminal_live_inactive_history_limit') END;
|
|
294
|
+
END;
|
|
295
|
+
|
|
296
|
+
CREATE TRIGGER terminal_live_generations_admit
|
|
297
|
+
BEFORE INSERT ON terminal_live_generations
|
|
298
|
+
BEGIN
|
|
299
|
+
SELECT CASE WHEN EXISTS (
|
|
300
|
+
SELECT 1 FROM orchestration_runs WHERE terminal_id = NEW.terminal_id
|
|
301
|
+
) THEN RAISE(ABORT, 'terminal_live_orchestration_ineligible') END;
|
|
302
|
+
SELECT CASE WHEN (
|
|
303
|
+
(NOT EXISTS (
|
|
304
|
+
SELECT 1 FROM terminal_live_generations
|
|
305
|
+
WHERE terminal_id = NEW.terminal_id
|
|
306
|
+
) AND NOT (
|
|
307
|
+
NEW.generation = 1 AND NEW.cleanup_state = 'pending'
|
|
308
|
+
AND NEW.cleanup_reason IS NULL
|
|
309
|
+
)) OR
|
|
310
|
+
(EXISTS (
|
|
311
|
+
SELECT 1 FROM terminal_live_generations
|
|
312
|
+
WHERE terminal_id = NEW.terminal_id
|
|
313
|
+
) AND NOT EXISTS (
|
|
314
|
+
SELECT 1 FROM terminal_live_sessions current
|
|
315
|
+
JOIN terminal_live_generations previous
|
|
316
|
+
ON previous.terminal_id = current.terminal_id
|
|
317
|
+
AND previous.generation = current.generation
|
|
318
|
+
WHERE current.terminal_id = NEW.terminal_id
|
|
319
|
+
AND NEW.generation = current.generation + 1
|
|
320
|
+
AND current.state IN ('exited', 'restarting')
|
|
321
|
+
AND current.cleanup_state = 'known_identity_members_complete'
|
|
322
|
+
AND previous.cleanup_state = 'known_identity_members_complete'
|
|
323
|
+
AND NEW.cleanup_state = 'pending' AND NEW.cleanup_reason IS NULL
|
|
324
|
+
AND EXISTS (
|
|
325
|
+
SELECT 1 FROM terminal_live_mutations mutation
|
|
326
|
+
WHERE mutation.terminal_id = current.terminal_id
|
|
327
|
+
AND mutation.generation = current.generation
|
|
328
|
+
AND mutation.mutation_sequence = current.mutation_head
|
|
329
|
+
AND mutation.method = 'terminal.session.restart'
|
|
330
|
+
AND mutation.planned_target_generation = NEW.generation
|
|
331
|
+
AND mutation.effect_phase = 'target-start'
|
|
332
|
+
AND mutation.dispatch_state = 'prepared'
|
|
333
|
+
)
|
|
334
|
+
))
|
|
335
|
+
) THEN RAISE(ABORT, 'terminal_live_generation_not_next') END;
|
|
336
|
+
END;
|
|
337
|
+
|
|
338
|
+
CREATE TRIGGER terminal_live_generations_identity_immutable
|
|
339
|
+
BEFORE UPDATE OF terminal_id, generation ON terminal_live_generations
|
|
340
|
+
BEGIN
|
|
341
|
+
SELECT RAISE(ABORT, 'terminal_live_generation_identity_immutable');
|
|
342
|
+
END;
|
|
343
|
+
|
|
344
|
+
CREATE TRIGGER terminal_live_generations_cleanup_monotonic
|
|
345
|
+
BEFORE UPDATE OF cleanup_state, cleanup_reason ON terminal_live_generations
|
|
346
|
+
WHEN (
|
|
347
|
+
OLD.cleanup_state IN ('known_identity_members_complete', 'unknown')
|
|
348
|
+
AND (
|
|
349
|
+
NEW.cleanup_state <> OLD.cleanup_state OR
|
|
350
|
+
NEW.cleanup_reason IS NOT OLD.cleanup_reason
|
|
351
|
+
)
|
|
352
|
+
) OR (
|
|
353
|
+
OLD.cleanup_state = 'pending'
|
|
354
|
+
AND NEW.cleanup_state NOT IN (
|
|
355
|
+
'pending', 'known_identity_members_complete', 'unknown'
|
|
356
|
+
)
|
|
357
|
+
)
|
|
358
|
+
BEGIN
|
|
359
|
+
SELECT RAISE(ABORT, 'terminal_live_generation_cleanup_final');
|
|
360
|
+
END;
|
|
361
|
+
|
|
362
|
+
CREATE TRIGGER terminal_live_generations_identity_retained
|
|
363
|
+
BEFORE DELETE ON terminal_live_generations
|
|
364
|
+
BEGIN
|
|
365
|
+
SELECT RAISE(ABORT, 'terminal_live_generation_identity_retained');
|
|
366
|
+
END;
|
|
367
|
+
|
|
368
|
+
CREATE TRIGGER terminal_live_sessions_generation_advance
|
|
369
|
+
BEFORE UPDATE OF generation ON terminal_live_sessions
|
|
370
|
+
WHEN NEW.generation <> OLD.generation
|
|
371
|
+
BEGIN
|
|
372
|
+
SELECT CASE WHEN NOT (
|
|
373
|
+
NEW.generation = OLD.generation + 1
|
|
374
|
+
AND OLD.state = 'restarting'
|
|
375
|
+
AND OLD.cleanup_state = 'known_identity_members_complete'
|
|
376
|
+
AND NEW.revision = OLD.revision + 1
|
|
377
|
+
AND EXISTS (
|
|
378
|
+
SELECT 1 FROM terminal_live_mutations
|
|
379
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
380
|
+
AND mutation_sequence = OLD.mutation_head
|
|
381
|
+
AND method = 'terminal.session.restart'
|
|
382
|
+
AND planned_target_generation = NEW.generation
|
|
383
|
+
AND effect_phase = 'target-start'
|
|
384
|
+
AND (
|
|
385
|
+
(dispatch_state = 'acknowledged'
|
|
386
|
+
AND acknowledgement_kind = 'process-started'
|
|
387
|
+
AND NEW.state = 'running' AND NEW.cleanup_state = 'pending'
|
|
388
|
+
AND NEW.cleanup_reason IS NULL) OR
|
|
389
|
+
(dispatch_state = 'outcome_unknown'
|
|
390
|
+
AND unknown_reason = 'native_acknowledgement_lost'
|
|
391
|
+
AND NEW.state = 'disconnected' AND NEW.cleanup_state = 'unknown'
|
|
392
|
+
AND NEW.cleanup_reason = 'native_acknowledgement_lost')
|
|
393
|
+
)
|
|
394
|
+
)
|
|
395
|
+
AND NOT EXISTS (
|
|
396
|
+
SELECT 1 FROM terminal_live_observers
|
|
397
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
398
|
+
)
|
|
399
|
+
AND NOT EXISTS (
|
|
400
|
+
SELECT 1 FROM terminal_live_controller_requests
|
|
401
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
402
|
+
AND state IN ('pending', 'ready')
|
|
403
|
+
)
|
|
404
|
+
AND NOT EXISTS (
|
|
405
|
+
SELECT 1 FROM terminal_live_controller_leases
|
|
406
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
407
|
+
AND state = 'active'
|
|
408
|
+
)
|
|
409
|
+
AND NOT EXISTS (
|
|
410
|
+
SELECT 1 FROM terminal_live_mutations
|
|
411
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
412
|
+
AND dispatch_state IN ('prepared', 'dispatching', 'attempted')
|
|
413
|
+
)
|
|
414
|
+
) THEN RAISE(ABORT, 'terminal_live_generation_advance_invalid') END;
|
|
415
|
+
END;
|
|
416
|
+
|
|
417
|
+
CREATE TRIGGER terminal_live_sessions_sync_generation_insert
|
|
418
|
+
AFTER INSERT ON terminal_live_sessions
|
|
419
|
+
BEGIN
|
|
420
|
+
UPDATE terminal_live_generations
|
|
421
|
+
SET cleanup_state = NEW.cleanup_state,
|
|
422
|
+
cleanup_reason = NEW.cleanup_reason,
|
|
423
|
+
updated_at = NEW.updated_at
|
|
424
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation;
|
|
425
|
+
END;
|
|
426
|
+
|
|
427
|
+
CREATE TRIGGER terminal_live_sessions_sync_generation_update
|
|
428
|
+
AFTER UPDATE OF cleanup_state, cleanup_reason, generation ON terminal_live_sessions
|
|
429
|
+
BEGIN
|
|
430
|
+
UPDATE terminal_live_generations
|
|
431
|
+
SET cleanup_state = NEW.cleanup_state,
|
|
432
|
+
cleanup_reason = NEW.cleanup_reason,
|
|
433
|
+
updated_at = NEW.updated_at
|
|
434
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation;
|
|
435
|
+
END;
|
|
436
|
+
|
|
437
|
+
CREATE TRIGGER terminal_live_sessions_identity_immutable
|
|
438
|
+
BEFORE UPDATE OF terminal_id ON terminal_live_sessions
|
|
439
|
+
BEGIN
|
|
440
|
+
SELECT RAISE(ABORT, 'terminal_live_identity_immutable');
|
|
441
|
+
END;
|
|
442
|
+
|
|
443
|
+
CREATE TRIGGER terminal_live_sessions_kind_marker_immutable
|
|
444
|
+
BEFORE DELETE ON terminal_live_sessions
|
|
445
|
+
BEGIN
|
|
446
|
+
SELECT RAISE(ABORT, 'terminal_live_kind_marker_immutable');
|
|
447
|
+
END;
|
|
448
|
+
|
|
449
|
+
CREATE TRIGGER orchestration_runs_reject_live_terminal_insert
|
|
450
|
+
BEFORE INSERT ON orchestration_runs
|
|
451
|
+
WHEN EXISTS (
|
|
452
|
+
SELECT 1 FROM terminal_live_generations
|
|
453
|
+
WHERE terminal_id = NEW.terminal_id
|
|
454
|
+
)
|
|
455
|
+
BEGIN
|
|
456
|
+
SELECT RAISE(ABORT, 'orchestration_live_terminal_ineligible');
|
|
457
|
+
END;
|
|
458
|
+
|
|
459
|
+
CREATE TRIGGER orchestration_runs_reject_live_terminal_update
|
|
460
|
+
BEFORE UPDATE OF terminal_id ON orchestration_runs
|
|
461
|
+
WHEN EXISTS (
|
|
462
|
+
SELECT 1 FROM terminal_live_generations
|
|
463
|
+
WHERE terminal_id = NEW.terminal_id
|
|
464
|
+
)
|
|
465
|
+
BEGIN
|
|
466
|
+
SELECT RAISE(ABORT, 'orchestration_live_terminal_ineligible');
|
|
467
|
+
END;
|
|
468
|
+
|
|
469
|
+
CREATE TABLE terminal_live_chunks (
|
|
470
|
+
terminal_id TEXT NOT NULL,
|
|
471
|
+
chunk_cursor INTEGER NOT NULL CHECK (chunk_cursor >= 1),
|
|
472
|
+
generation INTEGER NOT NULL CHECK (
|
|
473
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
474
|
+
),
|
|
475
|
+
content BLOB NOT NULL,
|
|
476
|
+
byte_length INTEGER NOT NULL CHECK (
|
|
477
|
+
byte_length BETWEEN 1 AND 32768 AND length(content) = byte_length
|
|
478
|
+
),
|
|
479
|
+
line_count INTEGER NOT NULL CHECK (
|
|
480
|
+
line_count BETWEEN 0 AND byte_length
|
|
481
|
+
),
|
|
482
|
+
content_digest TEXT NOT NULL CHECK (
|
|
483
|
+
length(content_digest) = 64 AND content_digest NOT GLOB '*[^a-f0-9]*'
|
|
484
|
+
),
|
|
485
|
+
recorded_at TEXT NOT NULL,
|
|
486
|
+
PRIMARY KEY (terminal_id, chunk_cursor),
|
|
487
|
+
UNIQUE (terminal_id, chunk_cursor, generation),
|
|
488
|
+
FOREIGN KEY (terminal_id, generation)
|
|
489
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT
|
|
490
|
+
) STRICT, WITHOUT ROWID;
|
|
491
|
+
|
|
492
|
+
CREATE TRIGGER terminal_live_chunks_bound_insert
|
|
493
|
+
BEFORE INSERT ON terminal_live_chunks
|
|
494
|
+
BEGIN
|
|
495
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
496
|
+
SELECT 1 FROM terminal_live_sessions
|
|
497
|
+
WHERE terminal_id = NEW.terminal_id
|
|
498
|
+
AND generation = NEW.generation
|
|
499
|
+
AND chunk_head + 1 = NEW.chunk_cursor
|
|
500
|
+
AND deleted_at IS NULL
|
|
501
|
+
AND state IN ('running', 'closing', 'restarting')
|
|
502
|
+
) THEN RAISE(ABORT, 'terminal_live_chunk_sequence_invalid') END;
|
|
503
|
+
SELECT CASE WHEN (
|
|
504
|
+
SELECT COUNT(*) FROM terminal_live_chunks
|
|
505
|
+
WHERE terminal_id = NEW.terminal_id
|
|
506
|
+
) >= ${String(MAX_TERMINAL_DURABLE_EVENTS_PER_TERMINAL)}
|
|
507
|
+
THEN RAISE(ABORT, 'terminal_live_chunk_history_limit') END;
|
|
508
|
+
SELECT CASE WHEN (
|
|
509
|
+
SELECT retained_bytes + NEW.byte_length FROM terminal_live_sessions
|
|
510
|
+
WHERE terminal_id = NEW.terminal_id
|
|
511
|
+
) > ${String(MAX_TERMINAL_SCROLLBACK_BYTES)}
|
|
512
|
+
THEN RAISE(ABORT, 'terminal_live_scrollback_bytes_limit') END;
|
|
513
|
+
SELECT CASE WHEN (
|
|
514
|
+
SELECT retained_lines + NEW.line_count FROM terminal_live_sessions
|
|
515
|
+
WHERE terminal_id = NEW.terminal_id
|
|
516
|
+
) > ${String(MAX_TERMINAL_SCROLLBACK_LINES)}
|
|
517
|
+
THEN RAISE(ABORT, 'terminal_live_scrollback_lines_limit') END;
|
|
518
|
+
SELECT CASE WHEN (
|
|
519
|
+
SELECT COALESCE(SUM(retained_bytes), 0) FROM terminal_live_sessions
|
|
520
|
+
) + NEW.byte_length > ${String(MAX_TERMINAL_DURABLE_SCROLLBACK_BYTES_GLOBAL)}
|
|
521
|
+
THEN RAISE(ABORT, 'terminal_live_global_scrollback_limit') END;
|
|
522
|
+
END;
|
|
523
|
+
|
|
524
|
+
CREATE TRIGGER terminal_live_chunks_immutable
|
|
525
|
+
BEFORE UPDATE ON terminal_live_chunks
|
|
526
|
+
BEGIN
|
|
527
|
+
SELECT RAISE(ABORT, 'terminal_live_chunk_immutable');
|
|
528
|
+
END;
|
|
529
|
+
|
|
530
|
+
CREATE TRIGGER terminal_live_chunks_account_insert
|
|
531
|
+
AFTER INSERT ON terminal_live_chunks
|
|
532
|
+
BEGIN
|
|
533
|
+
UPDATE terminal_live_sessions
|
|
534
|
+
SET retained_bytes = retained_bytes + NEW.byte_length,
|
|
535
|
+
retained_lines = retained_lines + NEW.line_count,
|
|
536
|
+
chunk_head = NEW.chunk_cursor
|
|
537
|
+
WHERE terminal_id = NEW.terminal_id;
|
|
538
|
+
END;
|
|
539
|
+
|
|
540
|
+
CREATE TRIGGER terminal_live_chunks_account_delete
|
|
541
|
+
AFTER DELETE ON terminal_live_chunks
|
|
542
|
+
BEGIN
|
|
543
|
+
UPDATE terminal_live_sessions
|
|
544
|
+
SET retained_bytes = retained_bytes - OLD.byte_length,
|
|
545
|
+
retained_lines = retained_lines - OLD.line_count
|
|
546
|
+
WHERE terminal_id = OLD.terminal_id;
|
|
547
|
+
END;
|
|
548
|
+
|
|
549
|
+
CREATE TABLE terminal_live_events (
|
|
550
|
+
terminal_id TEXT NOT NULL,
|
|
551
|
+
event_cursor INTEGER NOT NULL CHECK (event_cursor >= 1),
|
|
552
|
+
generation INTEGER NOT NULL CHECK (
|
|
553
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
554
|
+
),
|
|
555
|
+
event_type TEXT NOT NULL CHECK (
|
|
556
|
+
event_type IN (
|
|
557
|
+
'output', 'cleanup', 'exit', 'gap', 'controller-revoked',
|
|
558
|
+
'lifecycle-transition'
|
|
559
|
+
)
|
|
560
|
+
),
|
|
561
|
+
chunk_cursor INTEGER,
|
|
562
|
+
metadata_json TEXT NOT NULL CHECK (
|
|
563
|
+
json_valid(metadata_json) AND length(CAST(metadata_json AS BLOB)) <= 65536
|
|
564
|
+
AND instr(metadata_json, 'bytesBase64') = 0
|
|
565
|
+
),
|
|
566
|
+
recorded_at TEXT NOT NULL,
|
|
567
|
+
PRIMARY KEY (terminal_id, event_cursor),
|
|
568
|
+
CHECK (
|
|
569
|
+
(event_type = 'output' AND chunk_cursor IS NOT NULL) OR
|
|
570
|
+
(event_type <> 'output' AND chunk_cursor IS NULL)
|
|
571
|
+
),
|
|
572
|
+
FOREIGN KEY (terminal_id, generation)
|
|
573
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT,
|
|
574
|
+
FOREIGN KEY (terminal_id, chunk_cursor, generation)
|
|
575
|
+
REFERENCES terminal_live_chunks(terminal_id, chunk_cursor, generation) ON DELETE CASCADE
|
|
576
|
+
) STRICT, WITHOUT ROWID;
|
|
577
|
+
|
|
578
|
+
CREATE TRIGGER terminal_live_events_bound_insert
|
|
579
|
+
BEFORE INSERT ON terminal_live_events
|
|
580
|
+
BEGIN
|
|
581
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
582
|
+
SELECT 1 FROM terminal_live_sessions
|
|
583
|
+
WHERE terminal_id = NEW.terminal_id
|
|
584
|
+
AND generation = NEW.generation
|
|
585
|
+
AND event_head + 1 = NEW.event_cursor
|
|
586
|
+
AND deleted_at IS NULL
|
|
587
|
+
) THEN RAISE(ABORT, 'terminal_live_event_sequence_invalid') END;
|
|
588
|
+
SELECT CASE WHEN (
|
|
589
|
+
SELECT COUNT(*) FROM terminal_live_events
|
|
590
|
+
WHERE terminal_id = NEW.terminal_id
|
|
591
|
+
) >= ${String(MAX_TERMINAL_DURABLE_EVENTS_PER_TERMINAL)}
|
|
592
|
+
THEN RAISE(ABORT, 'terminal_live_event_history_limit') END;
|
|
593
|
+
END;
|
|
594
|
+
|
|
595
|
+
CREATE TRIGGER terminal_live_events_advance_head
|
|
596
|
+
AFTER INSERT ON terminal_live_events
|
|
597
|
+
BEGIN
|
|
598
|
+
UPDATE terminal_live_sessions
|
|
599
|
+
SET event_head = NEW.event_cursor
|
|
600
|
+
WHERE terminal_id = NEW.terminal_id;
|
|
601
|
+
END;
|
|
602
|
+
|
|
603
|
+
CREATE TRIGGER terminal_live_events_immutable
|
|
604
|
+
BEFORE UPDATE ON terminal_live_events
|
|
605
|
+
BEGIN
|
|
606
|
+
SELECT RAISE(ABORT, 'terminal_live_event_immutable');
|
|
607
|
+
END;
|
|
608
|
+
|
|
609
|
+
CREATE TABLE terminal_live_observers (
|
|
610
|
+
observer_id TEXT PRIMARY KEY NOT NULL,
|
|
611
|
+
terminal_id TEXT NOT NULL,
|
|
612
|
+
generation INTEGER NOT NULL CHECK (
|
|
613
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
614
|
+
),
|
|
615
|
+
attach_id TEXT NOT NULL,
|
|
616
|
+
command_id TEXT UNIQUE NOT NULL,
|
|
617
|
+
after_cursor INTEGER NOT NULL CHECK (after_cursor >= 0),
|
|
618
|
+
expires_at TEXT NOT NULL,
|
|
619
|
+
created_at TEXT NOT NULL,
|
|
620
|
+
updated_at TEXT NOT NULL,
|
|
621
|
+
UNIQUE (terminal_id, attach_id),
|
|
622
|
+
FOREIGN KEY (terminal_id, generation)
|
|
623
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT
|
|
624
|
+
) STRICT;
|
|
625
|
+
|
|
626
|
+
CREATE TRIGGER terminal_live_observers_bound_insert
|
|
627
|
+
BEFORE INSERT ON terminal_live_observers
|
|
628
|
+
BEGIN
|
|
629
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
630
|
+
SELECT 1 FROM terminal_live_sessions
|
|
631
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation
|
|
632
|
+
AND deleted_at IS NULL
|
|
633
|
+
AND state IN ('creating', 'running', 'closing', 'restarting')
|
|
634
|
+
) THEN RAISE(ABORT, 'terminal_live_observer_generation_stale') END;
|
|
635
|
+
SELECT CASE WHEN (
|
|
636
|
+
SELECT COUNT(*) FROM terminal_live_observers
|
|
637
|
+
) >= ${String(MAX_TERMINAL_OBSERVERS_GLOBAL)}
|
|
638
|
+
THEN RAISE(ABORT, 'terminal_live_observer_global_limit') END;
|
|
639
|
+
SELECT CASE WHEN (
|
|
640
|
+
SELECT COUNT(*) FROM terminal_live_observers
|
|
641
|
+
WHERE terminal_id = NEW.terminal_id
|
|
642
|
+
) >= ${String(MAX_TERMINAL_OBSERVERS_PER_TERMINAL)}
|
|
643
|
+
THEN RAISE(ABORT, 'terminal_live_observer_terminal_limit') END;
|
|
644
|
+
END;
|
|
645
|
+
|
|
646
|
+
CREATE TRIGGER terminal_live_observers_bound_update
|
|
647
|
+
BEFORE UPDATE ON terminal_live_observers
|
|
648
|
+
BEGIN
|
|
649
|
+
SELECT CASE WHEN NEW.observer_id <> OLD.observer_id
|
|
650
|
+
OR NEW.terminal_id <> OLD.terminal_id OR NEW.generation <> OLD.generation
|
|
651
|
+
OR NEW.attach_id <> OLD.attach_id OR NEW.command_id <> OLD.command_id
|
|
652
|
+
OR NEW.created_at <> OLD.created_at
|
|
653
|
+
THEN RAISE(ABORT, 'terminal_live_observer_identity_immutable') END;
|
|
654
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
655
|
+
SELECT 1 FROM terminal_live_sessions
|
|
656
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation
|
|
657
|
+
AND deleted_at IS NULL
|
|
658
|
+
AND state IN ('creating', 'running', 'closing', 'restarting')
|
|
659
|
+
) THEN RAISE(ABORT, 'terminal_live_observer_generation_stale') END;
|
|
660
|
+
END;
|
|
661
|
+
|
|
662
|
+
CREATE TABLE terminal_live_controller_requests (
|
|
663
|
+
controller_request_id TEXT PRIMARY KEY NOT NULL,
|
|
664
|
+
terminal_id TEXT NOT NULL,
|
|
665
|
+
generation INTEGER NOT NULL CHECK (
|
|
666
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
667
|
+
),
|
|
668
|
+
command_id TEXT UNIQUE NOT NULL,
|
|
669
|
+
state TEXT NOT NULL CHECK (state IN ('pending', 'ready', 'denied')),
|
|
670
|
+
position INTEGER,
|
|
671
|
+
requested_lease_ms INTEGER NOT NULL CHECK (
|
|
672
|
+
requested_lease_ms BETWEEN 1000 AND 30000
|
|
673
|
+
),
|
|
674
|
+
denial_reason TEXT CHECK (
|
|
675
|
+
denial_reason IS NULL OR denial_reason IN ('expired', 'policy', 'queue_saturated')
|
|
676
|
+
),
|
|
677
|
+
requested_at TEXT NOT NULL,
|
|
678
|
+
expires_at TEXT NOT NULL,
|
|
679
|
+
updated_at TEXT NOT NULL,
|
|
680
|
+
UNIQUE (terminal_id, generation, position),
|
|
681
|
+
CHECK (
|
|
682
|
+
(state = 'pending' AND position BETWEEN 1 AND ${String(MAX_TERMINAL_CONTROLLER_REQUESTS_PER_TERMINAL)}
|
|
683
|
+
AND denial_reason IS NULL) OR
|
|
684
|
+
(state = 'ready' AND position IS NULL AND denial_reason IS NULL) OR
|
|
685
|
+
(state = 'denied' AND position IS NULL AND denial_reason IS NOT NULL)
|
|
686
|
+
),
|
|
687
|
+
FOREIGN KEY (terminal_id, generation)
|
|
688
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT
|
|
689
|
+
) STRICT;
|
|
690
|
+
|
|
691
|
+
CREATE TRIGGER terminal_live_controller_requests_bound_insert
|
|
692
|
+
BEFORE INSERT ON terminal_live_controller_requests
|
|
693
|
+
BEGIN
|
|
694
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
695
|
+
SELECT 1 FROM terminal_live_sessions
|
|
696
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation
|
|
697
|
+
AND state = 'running' AND deleted_at IS NULL
|
|
698
|
+
) THEN RAISE(ABORT, 'terminal_live_controller_generation_stale') END;
|
|
699
|
+
SELECT CASE WHEN (
|
|
700
|
+
SELECT COUNT(*) FROM terminal_live_controller_requests
|
|
701
|
+
WHERE state IN ('pending', 'ready')
|
|
702
|
+
) >= ${String(MAX_TERMINAL_CONTROLLER_REQUESTS_GLOBAL)}
|
|
703
|
+
THEN RAISE(ABORT, 'terminal_live_controller_request_global_limit') END;
|
|
704
|
+
SELECT CASE WHEN (
|
|
705
|
+
SELECT COUNT(*) FROM terminal_live_controller_requests
|
|
706
|
+
WHERE terminal_id = NEW.terminal_id AND state IN ('pending', 'ready')
|
|
707
|
+
) >= ${String(MAX_TERMINAL_CONTROLLER_REQUESTS_PER_TERMINAL)}
|
|
708
|
+
THEN RAISE(ABORT, 'terminal_live_controller_request_terminal_limit') END;
|
|
709
|
+
END;
|
|
710
|
+
|
|
711
|
+
CREATE TRIGGER terminal_live_controller_requests_bound_update
|
|
712
|
+
BEFORE UPDATE ON terminal_live_controller_requests
|
|
713
|
+
BEGIN
|
|
714
|
+
SELECT CASE WHEN NEW.controller_request_id <> OLD.controller_request_id
|
|
715
|
+
OR NEW.terminal_id <> OLD.terminal_id OR NEW.generation <> OLD.generation
|
|
716
|
+
OR NEW.command_id <> OLD.command_id
|
|
717
|
+
OR NEW.requested_lease_ms <> OLD.requested_lease_ms
|
|
718
|
+
OR NEW.requested_at <> OLD.requested_at
|
|
719
|
+
THEN RAISE(ABORT, 'terminal_live_controller_request_identity_immutable') END;
|
|
720
|
+
SELECT CASE WHEN NOT (
|
|
721
|
+
(OLD.state = 'pending' AND NEW.state = 'pending'
|
|
722
|
+
AND NEW.denial_reason IS NULL) OR
|
|
723
|
+
(OLD.state = 'pending' AND NEW.state IN ('ready', 'denied')) OR
|
|
724
|
+
(OLD.state = 'ready' AND NEW.state = 'denied')
|
|
725
|
+
) THEN RAISE(ABORT, 'terminal_live_controller_request_final') END;
|
|
726
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
727
|
+
SELECT 1 FROM terminal_live_sessions
|
|
728
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation
|
|
729
|
+
AND deleted_at IS NULL
|
|
730
|
+
AND state IN ('running', 'closing', 'restarting')
|
|
731
|
+
) THEN RAISE(ABORT, 'terminal_live_controller_generation_stale') END;
|
|
732
|
+
END;
|
|
733
|
+
|
|
734
|
+
CREATE TABLE terminal_live_controller_leases (
|
|
735
|
+
lease_id TEXT PRIMARY KEY NOT NULL,
|
|
736
|
+
terminal_id TEXT NOT NULL,
|
|
737
|
+
generation INTEGER NOT NULL CHECK (
|
|
738
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
739
|
+
),
|
|
740
|
+
epoch INTEGER NOT NULL CHECK (epoch >= 1),
|
|
741
|
+
revision INTEGER NOT NULL CHECK (revision >= 1),
|
|
742
|
+
state TEXT NOT NULL CHECK (state IN ('active', 'expired', 'released', 'revoked')),
|
|
743
|
+
expires_at TEXT NOT NULL,
|
|
744
|
+
created_at TEXT NOT NULL,
|
|
745
|
+
updated_at TEXT NOT NULL,
|
|
746
|
+
UNIQUE (terminal_id, generation, epoch),
|
|
747
|
+
FOREIGN KEY (terminal_id, generation)
|
|
748
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT
|
|
749
|
+
) STRICT;
|
|
750
|
+
|
|
751
|
+
CREATE UNIQUE INDEX terminal_live_controller_one_active
|
|
752
|
+
ON terminal_live_controller_leases(terminal_id) WHERE state = 'active';
|
|
753
|
+
|
|
754
|
+
CREATE TRIGGER terminal_live_controller_leases_bound_insert
|
|
755
|
+
BEFORE INSERT ON terminal_live_controller_leases
|
|
756
|
+
BEGIN
|
|
757
|
+
SELECT CASE WHEN NEW.state <> 'active' OR NOT EXISTS (
|
|
758
|
+
SELECT 1 FROM terminal_live_sessions
|
|
759
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation
|
|
760
|
+
AND state = 'running' AND deleted_at IS NULL
|
|
761
|
+
) THEN RAISE(ABORT, 'terminal_live_controller_lease_invalid') END;
|
|
762
|
+
END;
|
|
763
|
+
|
|
764
|
+
CREATE TRIGGER terminal_live_controller_leases_reactivate_guard
|
|
765
|
+
BEFORE UPDATE ON terminal_live_controller_leases
|
|
766
|
+
BEGIN
|
|
767
|
+
SELECT CASE WHEN NEW.lease_id <> OLD.lease_id
|
|
768
|
+
OR NEW.terminal_id <> OLD.terminal_id OR NEW.generation <> OLD.generation
|
|
769
|
+
OR NEW.epoch <> OLD.epoch OR NEW.created_at <> OLD.created_at
|
|
770
|
+
THEN RAISE(ABORT, 'terminal_live_controller_lease_identity_immutable') END;
|
|
771
|
+
SELECT CASE WHEN OLD.state <> 'active'
|
|
772
|
+
OR NEW.state NOT IN ('active', 'expired', 'released', 'revoked')
|
|
773
|
+
OR NEW.revision <> OLD.revision + 1
|
|
774
|
+
THEN RAISE(ABORT, 'terminal_live_controller_lease_final') END;
|
|
775
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
776
|
+
SELECT 1 FROM terminal_live_sessions
|
|
777
|
+
WHERE terminal_id = NEW.terminal_id AND generation = NEW.generation
|
|
778
|
+
AND state IN ('running', 'closing', 'restarting') AND deleted_at IS NULL
|
|
779
|
+
) THEN RAISE(ABORT, 'terminal_live_controller_lease_generation_stale') END;
|
|
780
|
+
END;
|
|
781
|
+
|
|
782
|
+
CREATE TABLE terminal_live_mutations (
|
|
783
|
+
command_id TEXT PRIMARY KEY NOT NULL,
|
|
784
|
+
terminal_id TEXT NOT NULL,
|
|
785
|
+
generation INTEGER NOT NULL CHECK (
|
|
786
|
+
generation BETWEEN 1 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
787
|
+
),
|
|
788
|
+
planned_target_generation INTEGER CHECK (
|
|
789
|
+
planned_target_generation IS NULL OR planned_target_generation BETWEEN 2 AND ${String(MAX_TERMINAL_GENERATION)}
|
|
790
|
+
),
|
|
791
|
+
restart_source_cleanup_required INTEGER CHECK (
|
|
792
|
+
restart_source_cleanup_required IS NULL OR
|
|
793
|
+
restart_source_cleanup_required IN (0, 1)
|
|
794
|
+
),
|
|
795
|
+
mutation_sequence INTEGER NOT NULL CHECK (
|
|
796
|
+
mutation_sequence BETWEEN 1 AND ${String(MAX_TERMINAL_MUTATION_SEQUENCE)}
|
|
797
|
+
),
|
|
798
|
+
native_operation_sequence INTEGER CHECK (
|
|
799
|
+
native_operation_sequence IS NULL OR native_operation_sequence BETWEEN 1 AND ${String(MAX_TERMINAL_NATIVE_OPERATION_SEQUENCE)}
|
|
800
|
+
),
|
|
801
|
+
method TEXT NOT NULL CHECK (method IN (
|
|
802
|
+
'terminal.create', 'terminal.controller.request',
|
|
803
|
+
'terminal.controller.acquire', 'terminal.controller.renew',
|
|
804
|
+
'terminal.controller.release', 'terminal.input.write',
|
|
805
|
+
'terminal.session.resize', 'terminal.session.signal',
|
|
806
|
+
'terminal.session.close', 'terminal.session.restart',
|
|
807
|
+
'terminal.session.delete'
|
|
808
|
+
)),
|
|
809
|
+
request_digest TEXT NOT NULL CHECK (
|
|
810
|
+
length(request_digest) = 64 AND request_digest NOT GLOB '*[^a-f0-9]*'
|
|
811
|
+
),
|
|
812
|
+
controller_epoch INTEGER CHECK (controller_epoch IS NULL OR controller_epoch >= 1),
|
|
813
|
+
controller_revision INTEGER CHECK (controller_revision IS NULL OR controller_revision >= 1),
|
|
814
|
+
input_id TEXT,
|
|
815
|
+
input_sequence INTEGER CHECK (
|
|
816
|
+
input_sequence IS NULL OR input_sequence BETWEEN 1 AND 2147483647
|
|
817
|
+
),
|
|
818
|
+
input_byte_length INTEGER CHECK (
|
|
819
|
+
input_byte_length IS NULL OR input_byte_length BETWEEN 1 AND 32768
|
|
820
|
+
),
|
|
821
|
+
input_digest TEXT CHECK (
|
|
822
|
+
input_digest IS NULL OR (
|
|
823
|
+
length(input_digest) = 64 AND input_digest NOT GLOB '*[^a-f0-9]*'
|
|
824
|
+
)
|
|
825
|
+
),
|
|
826
|
+
resize_columns INTEGER CHECK (
|
|
827
|
+
resize_columns IS NULL OR resize_columns BETWEEN 2 AND 500
|
|
828
|
+
),
|
|
829
|
+
resize_rows INTEGER CHECK (
|
|
830
|
+
resize_rows IS NULL OR resize_rows BETWEEN 2 AND 300
|
|
831
|
+
),
|
|
832
|
+
signal_name TEXT CHECK (
|
|
833
|
+
signal_name IS NULL OR signal_name IN ('hangup', 'interrupt', 'terminate')
|
|
834
|
+
),
|
|
835
|
+
effect_phase TEXT NOT NULL CHECK (
|
|
836
|
+
effect_phase IN ('policy', 'native-effect', 'source-cleanup', 'target-start')
|
|
837
|
+
),
|
|
838
|
+
dispatch_state TEXT NOT NULL CHECK (
|
|
839
|
+
dispatch_state IN (
|
|
840
|
+
'prepared', 'dispatching', 'attempted', 'acknowledged', 'outcome_unknown'
|
|
841
|
+
)
|
|
842
|
+
),
|
|
843
|
+
target_attempt TEXT CHECK (
|
|
844
|
+
target_attempt IS NULL OR target_attempt IN (
|
|
845
|
+
'not-attempted', 'may-have-been-attempted', 'attempted'
|
|
846
|
+
)
|
|
847
|
+
),
|
|
848
|
+
source_cleanup_ack_digest TEXT CHECK (
|
|
849
|
+
source_cleanup_ack_digest IS NULL OR (
|
|
850
|
+
length(source_cleanup_ack_digest) = 64
|
|
851
|
+
AND source_cleanup_ack_digest NOT GLOB '*[^a-f0-9]*'
|
|
852
|
+
)
|
|
853
|
+
),
|
|
854
|
+
acknowledgement_command_id TEXT
|
|
855
|
+
REFERENCES command_receipts(command_id) ON DELETE RESTRICT,
|
|
856
|
+
acknowledgement_kind TEXT CHECK (
|
|
857
|
+
acknowledgement_kind IS NULL OR acknowledgement_kind IN (
|
|
858
|
+
'policy-recorded', 'process-started', 'pty-write-accepted',
|
|
859
|
+
'pty-resized', 'signal-delivered', 'cleanup-known'
|
|
860
|
+
)
|
|
861
|
+
),
|
|
862
|
+
acknowledgement_digest TEXT CHECK (
|
|
863
|
+
acknowledgement_digest IS NULL OR (
|
|
864
|
+
length(acknowledgement_digest) = 64
|
|
865
|
+
AND acknowledgement_digest NOT GLOB '*[^a-f0-9]*'
|
|
866
|
+
)
|
|
867
|
+
),
|
|
868
|
+
acknowledged_byte_length INTEGER CHECK (
|
|
869
|
+
acknowledged_byte_length IS NULL OR
|
|
870
|
+
acknowledged_byte_length BETWEEN 1 AND 32768
|
|
871
|
+
),
|
|
872
|
+
unknown_reason TEXT CHECK (
|
|
873
|
+
unknown_reason IS NULL OR unknown_reason IN (
|
|
874
|
+
'deadline_exceeded', 'host_failed', 'interrupted',
|
|
875
|
+
'native_acknowledgement_lost', 'node_restarted', 'transport_failed'
|
|
876
|
+
)
|
|
877
|
+
),
|
|
878
|
+
created_at TEXT NOT NULL,
|
|
879
|
+
updated_at TEXT NOT NULL,
|
|
880
|
+
UNIQUE (terminal_id, generation, mutation_sequence),
|
|
881
|
+
UNIQUE (terminal_id, generation, native_operation_sequence),
|
|
882
|
+
UNIQUE (terminal_id, generation, input_id, input_sequence),
|
|
883
|
+
CHECK (
|
|
884
|
+
(method IN (
|
|
885
|
+
'terminal.create', 'terminal.input.write', 'terminal.session.resize',
|
|
886
|
+
'terminal.session.signal', 'terminal.session.close'
|
|
887
|
+
) AND native_operation_sequence IS NOT NULL) OR
|
|
888
|
+
(method NOT IN (
|
|
889
|
+
'terminal.create', 'terminal.input.write', 'terminal.session.resize',
|
|
890
|
+
'terminal.session.signal', 'terminal.session.close'
|
|
891
|
+
) AND native_operation_sequence IS NULL)
|
|
892
|
+
),
|
|
893
|
+
CHECK (
|
|
894
|
+
(method = 'terminal.session.resize' AND resize_columns IS NOT NULL
|
|
895
|
+
AND resize_rows IS NOT NULL) OR
|
|
896
|
+
(method <> 'terminal.session.resize' AND resize_columns IS NULL
|
|
897
|
+
AND resize_rows IS NULL)
|
|
898
|
+
),
|
|
899
|
+
CHECK (
|
|
900
|
+
(method = 'terminal.session.signal' AND signal_name IS NOT NULL) OR
|
|
901
|
+
(method <> 'terminal.session.signal' AND signal_name IS NULL)
|
|
902
|
+
),
|
|
903
|
+
CHECK (
|
|
904
|
+
(method = 'terminal.session.restart'
|
|
905
|
+
AND generation < ${String(MAX_TERMINAL_GENERATION)}
|
|
906
|
+
AND planned_target_generation = generation + 1
|
|
907
|
+
AND restart_source_cleanup_required IS NOT NULL
|
|
908
|
+
AND effect_phase IN ('source-cleanup', 'target-start')
|
|
909
|
+
AND target_attempt IS NOT NULL
|
|
910
|
+
AND (
|
|
911
|
+
(effect_phase = 'source-cleanup'
|
|
912
|
+
AND restart_source_cleanup_required = 1
|
|
913
|
+
AND target_attempt = 'not-attempted'
|
|
914
|
+
AND (
|
|
915
|
+
source_cleanup_ack_digest IS NULL OR
|
|
916
|
+
(dispatch_state = 'attempted'
|
|
917
|
+
AND source_cleanup_ack_digest IS NOT NULL)
|
|
918
|
+
)) OR
|
|
919
|
+
(effect_phase = 'target-start'
|
|
920
|
+
AND (
|
|
921
|
+
(restart_source_cleanup_required = 0
|
|
922
|
+
AND source_cleanup_ack_digest IS NULL) OR
|
|
923
|
+
(restart_source_cleanup_required = 1
|
|
924
|
+
AND source_cleanup_ack_digest IS NOT NULL)
|
|
925
|
+
))
|
|
926
|
+
)) OR
|
|
927
|
+
(method <> 'terminal.session.restart'
|
|
928
|
+
AND planned_target_generation IS NULL
|
|
929
|
+
AND restart_source_cleanup_required IS NULL
|
|
930
|
+
AND target_attempt IS NULL
|
|
931
|
+
AND source_cleanup_ack_digest IS NULL
|
|
932
|
+
AND (
|
|
933
|
+
(method IN (
|
|
934
|
+
'terminal.controller.request', 'terminal.controller.acquire',
|
|
935
|
+
'terminal.controller.renew', 'terminal.controller.release',
|
|
936
|
+
'terminal.session.delete'
|
|
937
|
+
) AND effect_phase = 'policy') OR
|
|
938
|
+
(method IN (
|
|
939
|
+
'terminal.create', 'terminal.input.write', 'terminal.session.resize',
|
|
940
|
+
'terminal.session.signal', 'terminal.session.close'
|
|
941
|
+
) AND effect_phase = 'native-effect')
|
|
942
|
+
))
|
|
943
|
+
),
|
|
944
|
+
CHECK (
|
|
945
|
+
(method = 'terminal.input.write' AND input_id IS NOT NULL AND
|
|
946
|
+
input_sequence IS NOT NULL AND input_byte_length IS NOT NULL AND
|
|
947
|
+
input_digest IS NOT NULL) OR
|
|
948
|
+
(method <> 'terminal.input.write' AND input_id IS NULL AND
|
|
949
|
+
input_sequence IS NULL AND input_byte_length IS NULL AND
|
|
950
|
+
input_digest IS NULL)
|
|
951
|
+
),
|
|
952
|
+
CHECK (
|
|
953
|
+
(method IN (
|
|
954
|
+
'terminal.controller.renew', 'terminal.controller.release',
|
|
955
|
+
'terminal.input.write', 'terminal.session.resize',
|
|
956
|
+
'terminal.session.signal', 'terminal.session.close',
|
|
957
|
+
'terminal.session.restart'
|
|
958
|
+
) AND controller_epoch IS NOT NULL AND controller_revision IS NOT NULL) OR
|
|
959
|
+
(method NOT IN (
|
|
960
|
+
'terminal.controller.renew', 'terminal.controller.release',
|
|
961
|
+
'terminal.input.write', 'terminal.session.resize',
|
|
962
|
+
'terminal.session.signal', 'terminal.session.close',
|
|
963
|
+
'terminal.session.restart'
|
|
964
|
+
) AND controller_epoch IS NULL AND controller_revision IS NULL)
|
|
965
|
+
),
|
|
966
|
+
CHECK (
|
|
967
|
+
(method IN (
|
|
968
|
+
'terminal.controller.request', 'terminal.controller.acquire',
|
|
969
|
+
'terminal.controller.renew', 'terminal.controller.release',
|
|
970
|
+
'terminal.session.delete'
|
|
971
|
+
) AND dispatch_state = 'acknowledged') OR
|
|
972
|
+
(method IN (
|
|
973
|
+
'terminal.create', 'terminal.input.write', 'terminal.session.resize',
|
|
974
|
+
'terminal.session.signal', 'terminal.session.close',
|
|
975
|
+
'terminal.session.restart'
|
|
976
|
+
) AND dispatch_state IN (
|
|
977
|
+
'prepared', 'dispatching', 'attempted', 'acknowledged', 'outcome_unknown'
|
|
978
|
+
))
|
|
979
|
+
),
|
|
980
|
+
CHECK (
|
|
981
|
+
(dispatch_state = 'acknowledged'
|
|
982
|
+
AND acknowledgement_command_id = command_id
|
|
983
|
+
AND acknowledgement_kind IS NOT NULL
|
|
984
|
+
AND acknowledgement_digest IS NOT NULL
|
|
985
|
+
AND unknown_reason IS NULL
|
|
986
|
+
AND (
|
|
987
|
+
(method IN (
|
|
988
|
+
'terminal.controller.request', 'terminal.controller.acquire',
|
|
989
|
+
'terminal.controller.renew', 'terminal.controller.release',
|
|
990
|
+
'terminal.session.delete'
|
|
991
|
+
) AND acknowledgement_kind = 'policy-recorded'
|
|
992
|
+
AND acknowledged_byte_length IS NULL) OR
|
|
993
|
+
(method IN ('terminal.create', 'terminal.session.restart')
|
|
994
|
+
AND acknowledgement_kind = 'process-started'
|
|
995
|
+
AND acknowledged_byte_length IS NULL) OR
|
|
996
|
+
(method = 'terminal.input.write'
|
|
997
|
+
AND acknowledgement_kind = 'pty-write-accepted'
|
|
998
|
+
AND acknowledged_byte_length = input_byte_length) OR
|
|
999
|
+
(method = 'terminal.session.resize'
|
|
1000
|
+
AND acknowledgement_kind = 'pty-resized'
|
|
1001
|
+
AND acknowledged_byte_length IS NULL) OR
|
|
1002
|
+
(method = 'terminal.session.signal'
|
|
1003
|
+
AND acknowledgement_kind = 'signal-delivered'
|
|
1004
|
+
AND acknowledged_byte_length IS NULL) OR
|
|
1005
|
+
(method = 'terminal.session.close'
|
|
1006
|
+
AND acknowledgement_kind = 'cleanup-known'
|
|
1007
|
+
AND acknowledged_byte_length IS NULL)
|
|
1008
|
+
)) OR
|
|
1009
|
+
(dispatch_state = 'outcome_unknown'
|
|
1010
|
+
AND method IN (
|
|
1011
|
+
'terminal.create', 'terminal.input.write', 'terminal.session.resize',
|
|
1012
|
+
'terminal.session.signal', 'terminal.session.close',
|
|
1013
|
+
'terminal.session.restart'
|
|
1014
|
+
) AND acknowledgement_command_id IS NULL
|
|
1015
|
+
AND acknowledgement_kind IS NULL AND acknowledgement_digest IS NULL
|
|
1016
|
+
AND acknowledged_byte_length IS NULL AND unknown_reason IS NOT NULL) OR
|
|
1017
|
+
(dispatch_state IN ('prepared', 'dispatching', 'attempted')
|
|
1018
|
+
AND method IN (
|
|
1019
|
+
'terminal.create', 'terminal.input.write', 'terminal.session.resize',
|
|
1020
|
+
'terminal.session.signal', 'terminal.session.close',
|
|
1021
|
+
'terminal.session.restart'
|
|
1022
|
+
) AND acknowledgement_command_id IS NULL
|
|
1023
|
+
AND acknowledgement_kind IS NULL AND acknowledgement_digest IS NULL
|
|
1024
|
+
AND acknowledged_byte_length IS NULL AND unknown_reason IS NULL)
|
|
1025
|
+
),
|
|
1026
|
+
CHECK (
|
|
1027
|
+
method <> 'terminal.session.restart' OR
|
|
1028
|
+
(effect_phase = 'source-cleanup'
|
|
1029
|
+
AND dispatch_state IN (
|
|
1030
|
+
'prepared', 'dispatching', 'attempted', 'outcome_unknown'
|
|
1031
|
+
) AND target_attempt = 'not-attempted') OR
|
|
1032
|
+
(effect_phase = 'target-start' AND (
|
|
1033
|
+
(dispatch_state = 'prepared' AND target_attempt = 'not-attempted') OR
|
|
1034
|
+
(dispatch_state = 'dispatching'
|
|
1035
|
+
AND target_attempt = 'may-have-been-attempted') OR
|
|
1036
|
+
(dispatch_state = 'attempted' AND target_attempt = 'attempted') OR
|
|
1037
|
+
(dispatch_state = 'acknowledged' AND target_attempt = 'attempted') OR
|
|
1038
|
+
(dispatch_state = 'outcome_unknown'
|
|
1039
|
+
AND target_attempt IN ('may-have-been-attempted', 'attempted')
|
|
1040
|
+
AND unknown_reason = 'native_acknowledgement_lost')
|
|
1041
|
+
))
|
|
1042
|
+
),
|
|
1043
|
+
FOREIGN KEY (terminal_id, generation)
|
|
1044
|
+
REFERENCES terminal_live_generations(terminal_id, generation) ON DELETE RESTRICT
|
|
1045
|
+
) STRICT;
|
|
1046
|
+
|
|
1047
|
+
CREATE TRIGGER terminal_live_mutations_bound_insert
|
|
1048
|
+
BEFORE INSERT ON terminal_live_mutations
|
|
1049
|
+
BEGIN
|
|
1050
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
1051
|
+
SELECT 1 FROM terminal_live_sessions
|
|
1052
|
+
WHERE terminal_id = NEW.terminal_id
|
|
1053
|
+
AND generation = NEW.generation
|
|
1054
|
+
AND mutation_head + 1 = NEW.mutation_sequence
|
|
1055
|
+
AND (
|
|
1056
|
+
NEW.native_operation_sequence IS NULL OR
|
|
1057
|
+
native_operation_head + 1 = NEW.native_operation_sequence
|
|
1058
|
+
)
|
|
1059
|
+
AND deleted_at IS NULL
|
|
1060
|
+
AND (
|
|
1061
|
+
(NEW.method = 'terminal.create' AND state = 'creating'
|
|
1062
|
+
AND generation = 1 AND NEW.mutation_sequence = 1
|
|
1063
|
+
AND NEW.native_operation_sequence = 1
|
|
1064
|
+
AND NEW.effect_phase = 'native-effect'
|
|
1065
|
+
AND NEW.dispatch_state = 'prepared') OR
|
|
1066
|
+
(NEW.method IN (
|
|
1067
|
+
'terminal.controller.request', 'terminal.controller.acquire',
|
|
1068
|
+
'terminal.controller.renew', 'terminal.controller.release'
|
|
1069
|
+
) AND state = 'running' AND NEW.effect_phase = 'policy'
|
|
1070
|
+
AND NEW.dispatch_state = 'acknowledged') OR
|
|
1071
|
+
(NEW.method IN (
|
|
1072
|
+
'terminal.input.write', 'terminal.session.resize',
|
|
1073
|
+
'terminal.session.signal'
|
|
1074
|
+
) AND state = 'running' AND NEW.effect_phase = 'native-effect'
|
|
1075
|
+
AND NEW.dispatch_state = 'prepared') OR
|
|
1076
|
+
(NEW.method = 'terminal.session.close' AND state = 'running'
|
|
1077
|
+
AND NEW.effect_phase = 'native-effect'
|
|
1078
|
+
AND NEW.dispatch_state = 'prepared') OR
|
|
1079
|
+
(NEW.method = 'terminal.session.restart'
|
|
1080
|
+
AND (
|
|
1081
|
+
(state = 'running' AND cleanup_state = 'pending'
|
|
1082
|
+
AND NEW.effect_phase = 'source-cleanup'
|
|
1083
|
+
AND NEW.restart_source_cleanup_required = 1) OR
|
|
1084
|
+
(state = 'exited'
|
|
1085
|
+
AND cleanup_state = 'known_identity_members_complete'
|
|
1086
|
+
AND NEW.effect_phase = 'target-start'
|
|
1087
|
+
AND NEW.restart_source_cleanup_required = 0)
|
|
1088
|
+
) AND NEW.dispatch_state = 'prepared') OR
|
|
1089
|
+
(NEW.method = 'terminal.session.delete'
|
|
1090
|
+
AND state IN ('exited', 'disconnected')
|
|
1091
|
+
AND NEW.effect_phase = 'policy'
|
|
1092
|
+
AND NEW.dispatch_state = 'acknowledged')
|
|
1093
|
+
)
|
|
1094
|
+
) THEN RAISE(ABORT, 'terminal_live_mutation_sequence_invalid') END;
|
|
1095
|
+
SELECT CASE WHEN NEW.dispatch_state <> 'acknowledged'
|
|
1096
|
+
AND NEW.dispatch_state <> 'prepared'
|
|
1097
|
+
THEN RAISE(ABORT, 'terminal_live_mutation_initial_state_invalid') END;
|
|
1098
|
+
SELECT CASE WHEN NEW.dispatch_state = 'prepared' AND EXISTS (
|
|
1099
|
+
SELECT 1 FROM terminal_live_mutations
|
|
1100
|
+
WHERE terminal_id = NEW.terminal_id
|
|
1101
|
+
AND dispatch_state IN ('prepared', 'dispatching', 'attempted')
|
|
1102
|
+
) THEN RAISE(ABORT, 'terminal_live_native_operation_in_flight') END;
|
|
1103
|
+
SELECT CASE WHEN NEW.effect_phase = 'policy' AND EXISTS (
|
|
1104
|
+
SELECT 1 FROM terminal_live_mutations
|
|
1105
|
+
WHERE terminal_id = NEW.terminal_id
|
|
1106
|
+
AND dispatch_state IN ('prepared', 'dispatching', 'attempted')
|
|
1107
|
+
) THEN RAISE(ABORT, 'terminal_live_native_operation_in_flight') END;
|
|
1108
|
+
SELECT CASE WHEN (
|
|
1109
|
+
SELECT COUNT(*) FROM terminal_live_mutations
|
|
1110
|
+
WHERE terminal_id = NEW.terminal_id
|
|
1111
|
+
) >= ${String(MAX_TERMINAL_MUTATIONS_PER_TERMINAL)}
|
|
1112
|
+
THEN RAISE(ABORT, 'terminal_live_mutation_history_limit') END;
|
|
1113
|
+
END;
|
|
1114
|
+
|
|
1115
|
+
CREATE TRIGGER terminal_live_mutations_final_receipt_insert
|
|
1116
|
+
BEFORE INSERT ON terminal_live_mutations
|
|
1117
|
+
WHEN NEW.dispatch_state IN ('acknowledged', 'outcome_unknown')
|
|
1118
|
+
BEGIN
|
|
1119
|
+
SELECT CASE WHEN NOT EXISTS (
|
|
1120
|
+
SELECT 1 FROM command_receipts receipt
|
|
1121
|
+
WHERE receipt.command_id = NEW.command_id
|
|
1122
|
+
AND receipt.actor_id = 'actor_local_user'
|
|
1123
|
+
AND receipt.method = NEW.method
|
|
1124
|
+
AND receipt.target_type = 'terminal'
|
|
1125
|
+
AND receipt.target_id = NEW.terminal_id
|
|
1126
|
+
AND length(CAST(receipt.result_json AS BLOB)) <= 65536
|
|
1127
|
+
AND instr(receipt.result_json, 'bytesBase64') = 0
|
|
1128
|
+
AND instr(receipt.result_json, 'rawInput') = 0
|
|
1129
|
+
) THEN RAISE(ABORT, 'terminal_live_acknowledgement_receipt_invalid') END;
|
|
1130
|
+
END;
|
|
1131
|
+
|
|
1132
|
+
CREATE TRIGGER terminal_live_mutations_advance_head
|
|
1133
|
+
AFTER INSERT ON terminal_live_mutations
|
|
1134
|
+
BEGIN
|
|
1135
|
+
UPDATE terminal_live_sessions
|
|
1136
|
+
SET mutation_head = NEW.mutation_sequence,
|
|
1137
|
+
native_operation_head = COALESCE(
|
|
1138
|
+
NEW.native_operation_sequence, native_operation_head
|
|
1139
|
+
)
|
|
1140
|
+
WHERE terminal_id = NEW.terminal_id;
|
|
1141
|
+
END;
|
|
1142
|
+
|
|
1143
|
+
CREATE TRIGGER terminal_live_mutations_finality
|
|
1144
|
+
BEFORE UPDATE
|
|
1145
|
+
ON terminal_live_mutations
|
|
1146
|
+
BEGIN
|
|
1147
|
+
SELECT CASE WHEN NOT (
|
|
1148
|
+
(OLD.method <> 'terminal.session.restart' AND (
|
|
1149
|
+
(OLD.dispatch_state = 'prepared' AND NEW.dispatch_state = 'dispatching') OR
|
|
1150
|
+
(OLD.dispatch_state = 'dispatching' AND NEW.dispatch_state = 'attempted') OR
|
|
1151
|
+
(OLD.dispatch_state IN ('dispatching', 'attempted')
|
|
1152
|
+
AND NEW.dispatch_state = 'outcome_unknown') OR
|
|
1153
|
+
(OLD.dispatch_state = 'attempted'
|
|
1154
|
+
AND NEW.dispatch_state = 'acknowledged')
|
|
1155
|
+
)) OR
|
|
1156
|
+
(OLD.method = 'terminal.session.restart'
|
|
1157
|
+
AND OLD.effect_phase = NEW.effect_phase AND (
|
|
1158
|
+
(OLD.dispatch_state = 'prepared'
|
|
1159
|
+
AND NEW.dispatch_state = 'dispatching') OR
|
|
1160
|
+
(OLD.dispatch_state = 'dispatching'
|
|
1161
|
+
AND NEW.dispatch_state = 'attempted') OR
|
|
1162
|
+
(OLD.dispatch_state IN ('dispatching', 'attempted')
|
|
1163
|
+
AND NEW.dispatch_state = 'outcome_unknown') OR
|
|
1164
|
+
(OLD.effect_phase = 'target-start'
|
|
1165
|
+
AND OLD.dispatch_state = 'attempted'
|
|
1166
|
+
AND NEW.dispatch_state = 'acknowledged') OR
|
|
1167
|
+
(OLD.effect_phase = 'source-cleanup'
|
|
1168
|
+
AND OLD.dispatch_state = 'attempted'
|
|
1169
|
+
AND NEW.dispatch_state = 'attempted'
|
|
1170
|
+
AND OLD.source_cleanup_ack_digest IS NULL
|
|
1171
|
+
AND NEW.source_cleanup_ack_digest IS NOT NULL)
|
|
1172
|
+
)) OR
|
|
1173
|
+
(OLD.method = 'terminal.session.restart'
|
|
1174
|
+
AND OLD.effect_phase = 'source-cleanup'
|
|
1175
|
+
AND OLD.dispatch_state = 'attempted'
|
|
1176
|
+
AND NEW.effect_phase = 'target-start'
|
|
1177
|
+
AND NEW.dispatch_state = 'prepared'
|
|
1178
|
+
AND OLD.source_cleanup_ack_digest IS NOT NULL
|
|
1179
|
+
AND NEW.source_cleanup_ack_digest = OLD.source_cleanup_ack_digest)
|
|
1180
|
+
) THEN RAISE(ABORT, 'terminal_live_mutation_transition_invalid') END;
|
|
1181
|
+
SELECT CASE WHEN OLD.method = 'terminal.session.restart'
|
|
1182
|
+
AND OLD.effect_phase = 'source-cleanup'
|
|
1183
|
+
AND NEW.effect_phase = 'target-start'
|
|
1184
|
+
AND NOT EXISTS (
|
|
1185
|
+
SELECT 1 FROM terminal_live_sessions
|
|
1186
|
+
WHERE terminal_id = OLD.terminal_id AND generation = OLD.generation
|
|
1187
|
+
AND state = 'restarting'
|
|
1188
|
+
AND cleanup_state = 'known_identity_members_complete'
|
|
1189
|
+
AND deleted_at IS NULL
|
|
1190
|
+
)
|
|
1191
|
+
THEN RAISE(ABORT, 'terminal_live_restart_source_cleanup_incomplete') END;
|
|
1192
|
+
SELECT CASE WHEN NEW.dispatch_state IN ('acknowledged', 'outcome_unknown')
|
|
1193
|
+
AND NOT EXISTS (
|
|
1194
|
+
SELECT 1 FROM command_receipts receipt
|
|
1195
|
+
WHERE receipt.command_id = NEW.command_id
|
|
1196
|
+
AND receipt.actor_id = 'actor_local_user'
|
|
1197
|
+
AND receipt.method = NEW.method
|
|
1198
|
+
AND receipt.target_type = 'terminal'
|
|
1199
|
+
AND receipt.target_id = NEW.terminal_id
|
|
1200
|
+
AND length(CAST(receipt.result_json AS BLOB)) <= 65536
|
|
1201
|
+
AND instr(receipt.result_json, 'bytesBase64') = 0
|
|
1202
|
+
AND instr(receipt.result_json, 'rawInput') = 0
|
|
1203
|
+
) THEN RAISE(ABORT, 'terminal_live_acknowledgement_receipt_invalid') END;
|
|
1204
|
+
END;
|
|
1205
|
+
|
|
1206
|
+
CREATE TRIGGER terminal_live_mutations_identity_immutable
|
|
1207
|
+
BEFORE UPDATE OF command_id, terminal_id, generation, mutation_sequence,
|
|
1208
|
+
native_operation_sequence,
|
|
1209
|
+
planned_target_generation, restart_source_cleanup_required,
|
|
1210
|
+
method, request_digest, controller_epoch, controller_revision,
|
|
1211
|
+
input_id, input_sequence, input_byte_length, input_digest,
|
|
1212
|
+
resize_columns, resize_rows, signal_name, created_at
|
|
1213
|
+
ON terminal_live_mutations
|
|
1214
|
+
BEGIN
|
|
1215
|
+
SELECT RAISE(ABORT, 'terminal_live_mutation_identity_immutable');
|
|
1216
|
+
END;
|
|
1217
|
+
|
|
1218
|
+
CREATE TRIGGER terminal_live_mutations_retained
|
|
1219
|
+
BEFORE DELETE ON terminal_live_mutations
|
|
1220
|
+
BEGIN
|
|
1221
|
+
SELECT RAISE(ABORT, 'terminal_live_mutation_retained');
|
|
1222
|
+
END;
|
|
1223
|
+
`;
|
|
1224
|
+
//# sourceMappingURL=migration-nine.js.map
|