@timurproko/a1 0.1.8-dev.50ebb19 → 0.1.8-dev.510
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 +209 -63
- package/bin/activate.js +8 -0
- package/bin/cli.js +33 -11
- package/bin/guardian.js +16 -6
- package/bin/module-identity.js +76 -69
- package/bin/module-resolver.js +138 -0
- package/bin/pinned-pi-public.d.ts +3 -0
- package/bin/pinned-pi-public.js +93 -0
- package/bin/release-cleanup.js +8 -0
- package/bin/supervisor.js +2 -2
- package/bin/sync-pi-tui-proxy.js +7 -0
- package/bin/ui.js +67 -22
- package/bin/update-recovery.js +343 -0
- package/bin/warmup.js +28 -0
- package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
- package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
- package/dist/app/session-shell/clipboard-image.d.ts +11 -0
- package/dist/app/session-shell/clipboard-image.js +38 -0
- package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
- package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
- package/dist/app/session-shell/helper-pool.d.ts +33 -0
- package/dist/app/session-shell/helper-pool.js +98 -0
- package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
- package/dist/app/session-shell/image-preparation-client.js +145 -0
- package/dist/app/session-shell/image-preparation.d.ts +18 -0
- package/dist/app/session-shell/image-preparation.js +126 -0
- package/dist/app/session-shell/image-source.d.ts +13 -0
- package/dist/app/session-shell/image-source.js +171 -0
- package/dist/app/session-shell/image-worker.d.ts +17 -0
- package/dist/app/session-shell/image-worker.js +23 -0
- package/dist/app/session-shell/index.d.ts +7 -0
- package/dist/app/session-shell/index.js +4 -0
- package/dist/app/session-shell/paste-executor.d.ts +18 -0
- package/dist/app/session-shell/paste-executor.js +253 -0
- package/dist/app/session-shell/paste-helper.js +173 -0
- package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
- package/dist/app/session-shell/paste-preparation-client.js +170 -0
- package/dist/app/session-shell/paste-protocol.d.ts +78 -0
- package/dist/app/session-shell/paste-protocol.js +18 -0
- package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
- package/dist/app/session-shell/paste-text-preparation.js +134 -0
- package/dist/app/session-shell/paste-text-worker.js +12 -0
- package/dist/app/session-shell/paste-types.d.ts +17 -0
- package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
- package/dist/app/session-shell/path-chip-presentation.js +24 -0
- package/dist/app/session-shell/prompt-chips.d.ts +76 -0
- package/dist/app/session-shell/prompt-chips.js +507 -0
- package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
- package/dist/app/session-shell/prompt-history-controller.js +170 -0
- package/dist/app/session-shell/prompt-suggestion-controller.d.ts +37 -0
- package/dist/app/session-shell/prompt-suggestion-controller.js +219 -0
- package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
- package/dist/app/session-shell/quit-outro-effects.js +242 -0
- package/dist/app/session-shell/quit-outro.d.ts +38 -0
- package/dist/app/session-shell/quit-outro.js +98 -0
- package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
- package/dist/app/session-shell/response-copy-coordinator.js +187 -0
- package/dist/app/session-shell/response-copy-helper.js +122 -0
- package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
- package/dist/app/session-shell/response-copy-protocol.js +5 -0
- package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
- package/dist/app/session-shell/response-copy-transport.js +217 -0
- package/dist/app/session-shell/session-shell-root.d.ts +275 -0
- package/dist/app/session-shell/session-shell-root.js +1376 -0
- package/dist/app/session-shell/session-shell.d.ts +66 -0
- package/dist/app/session-shell/session-shell.js +2116 -0
- package/dist/app/session-shell/session-viewport-controller.d.ts +61 -0
- package/dist/app/session-shell/session-viewport-controller.js +597 -0
- package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
- package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
- package/dist/app/session-shell/system-clipboard.d.ts +20 -0
- package/dist/app/session-shell/system-clipboard.js +159 -0
- package/dist/app/session-shell/text-paste.d.ts +5 -0
- package/dist/app/session-shell/text-paste.js +16 -0
- package/dist/cli/capabilities.d.ts +6 -0
- package/dist/cli/capabilities.js +7 -0
- package/dist/cli/dispatch.d.ts +46 -0
- package/dist/cli/dispatch.js +261 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/package-messages.d.ts +26 -0
- package/dist/cli/package-messages.js +71 -0
- package/dist/cli/packages.d.ts +32 -0
- package/dist/cli/packages.js +81 -0
- package/dist/cli/version-stats.d.ts +22 -0
- package/dist/cli/version-stats.js +112 -0
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +2 -0
- package/dist/composition/owned-ui.d.ts +37 -0
- package/dist/composition/owned-ui.js +154 -0
- package/dist/composition/settings-route-host.d.ts +20 -0
- package/dist/composition/settings-route-host.js +141 -0
- package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
- package/dist/contracts/agent-engine/domain-validation.js +107 -0
- package/dist/contracts/agent-engine/domain.d.ts +138 -0
- package/dist/contracts/agent-engine/index.d.ts +11 -0
- package/dist/contracts/agent-engine/index.js +6 -0
- package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
- package/dist/contracts/agent-engine/ports.js +1 -0
- package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
- package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
- package/dist/contracts/owned-ui/image-attachments.js +67 -0
- package/dist/contracts/owned-ui/index.d.ts +12 -0
- package/dist/contracts/owned-ui/index.js +8 -0
- package/dist/contracts/owned-ui/model.d.ts +374 -0
- package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
- package/dist/contracts/owned-ui/prompt-history.js +23 -0
- package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
- package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
- package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
- package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
- package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
- package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
- package/dist/contracts/owned-ui/validation.d.ts +15 -0
- package/dist/contracts/owned-ui/validation.js +523 -0
- package/dist/contracts/presentation/index.d.ts +104 -0
- package/dist/features/launch/development-launch.js +36 -0
- package/dist/features/launch/index.d.ts +12 -0
- package/dist/features/launch/index.js +6 -0
- package/dist/features/launch/intent.d.ts +12 -0
- package/dist/features/launch/intent.js +8 -0
- package/dist/features/launch/prepare-launch.d.ts +11 -0
- package/dist/features/launch/prepare-launch.js +14 -0
- package/dist/features/launch/profile-paths.d.ts +16 -0
- package/dist/features/launch/profile-paths.js +36 -0
- package/dist/features/launch/runtime-selection.d.ts +16 -0
- package/dist/features/launch/runtime-selection.js +13 -0
- package/dist/features/owned-ui/index.d.ts +9 -0
- package/dist/features/owned-ui/index.js +6 -0
- package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
- package/dist/features/owned-ui/project-trust-prompt.js +149 -0
- package/dist/features/owned-ui/reference-routes.d.ts +6 -0
- package/dist/features/owned-ui/reference-routes.js +6 -0
- package/dist/features/owned-ui/reference-screen-app.d.ts +37 -0
- package/dist/features/owned-ui/reference-screen-app.js +232 -0
- package/dist/features/owned-ui/run.d.ts +17 -0
- package/dist/features/owned-ui/run.js +64 -0
- package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
- package/dist/features/owned-ui/session-fork-prompt.js +34 -0
- package/dist/features/owned-ui/settings-app.d.ts +21 -0
- package/dist/features/owned-ui/settings-app.js +802 -0
- package/dist/features/owned-ui/settings-route.d.ts +2 -0
- package/dist/features/owned-ui/settings-route.js +2 -0
- package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
- package/dist/features/prompt-history/image-sidecar.js +130 -0
- package/dist/features/prompt-history/index.d.ts +4 -0
- package/dist/features/prompt-history/index.js +3 -0
- package/dist/features/prompt-history/paths.d.ts +5 -0
- package/dist/features/prompt-history/paths.js +17 -0
- package/dist/features/prompt-history/service.d.ts +54 -0
- package/dist/features/prompt-history/service.js +425 -0
- package/dist/features/prompt-history/store.d.ts +16 -0
- package/dist/features/prompt-history/store.js +219 -0
- package/dist/features/prompt-history/worker.d.ts +9 -0
- package/dist/features/prompt-history/worker.js +45 -0
- package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
- package/dist/features/prompt-suggestions/diagnostics.js +82 -0
- package/dist/features/prompt-suggestions/index.d.ts +2 -0
- package/dist/features/prompt-suggestions/index.js +1 -0
- package/dist/foundation/launch-context/index.d.ts +59 -0
- package/dist/foundation/launch-context/index.js +136 -0
- package/dist/foundation/launch-guardian/index.d.ts +2 -0
- package/dist/foundation/launch-guardian/index.js +1 -0
- package/dist/foundation/launch-guardian/main.d.ts +33 -0
- package/dist/foundation/launch-guardian/main.js +180 -0
- package/dist/foundation/lifecycle/commands.js +1 -0
- package/dist/foundation/lifecycle/index.d.ts +11 -0
- package/dist/foundation/lifecycle/index.js +5 -0
- package/dist/foundation/lifecycle/model.d.ts +64 -0
- package/dist/foundation/lifecycle/model.js +40 -0
- package/dist/foundation/lifecycle/paths.d.ts +30 -0
- package/dist/foundation/lifecycle/paths.js +70 -0
- package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
- package/dist/foundation/lifecycle/session-selection.js +39 -0
- package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
- package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
- package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
- package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
- package/dist/foundation/process-containment/index.d.ts +8 -0
- package/dist/foundation/process-containment/index.js +6 -0
- package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
- package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
- package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
- package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
- package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
- package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
- package/dist/foundation/protocol/client.d.ts +18 -0
- package/dist/foundation/protocol/client.js +130 -0
- package/dist/foundation/protocol/index.d.ts +3 -0
- package/dist/foundation/protocol/index.js +2 -0
- package/dist/foundation/protocol/messages.d.ts +90 -0
- package/dist/foundation/protocol/messages.js +100 -0
- package/dist/foundation/release/bootstrap.d.ts +51 -0
- package/dist/foundation/release/bootstrap.js +427 -0
- package/dist/foundation/release/cohort-state.d.ts +157 -0
- package/dist/foundation/release/cohort-state.js +472 -0
- package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
- package/dist/foundation/release/dependency-certification-retention.js +88 -0
- package/dist/foundation/release/dependency-certification.d.ts +24 -0
- package/dist/foundation/release/dependency-certification.js +266 -0
- package/dist/foundation/release/dependency-layer.d.ts +78 -0
- package/dist/foundation/release/dependency-layer.js +466 -0
- package/dist/foundation/release/endpoints.d.ts +24 -0
- package/dist/foundation/release/endpoints.js +134 -0
- package/dist/foundation/release/immutable-platform.d.ts +6 -0
- package/dist/foundation/release/immutable-platform.js +13 -0
- package/dist/foundation/release/index.d.ts +32 -0
- package/dist/foundation/release/index.js +17 -0
- package/dist/foundation/release/release-gc.d.ts +71 -0
- package/dist/foundation/release/release-gc.js +764 -0
- package/dist/foundation/release/release-store.d.ts +49 -0
- package/dist/foundation/release/release-store.js +235 -0
- package/dist/foundation/release/release.d.ts +43 -0
- package/dist/foundation/release/release.js +215 -0
- package/dist/foundation/release/restart-certification.d.ts +68 -0
- package/dist/foundation/release/restart-certification.js +227 -0
- package/dist/foundation/release/types.d.ts +11 -0
- package/dist/foundation/release/types.js +1 -0
- package/dist/foundation/release/update-activation.d.ts +72 -0
- package/dist/foundation/release/update-activation.js +204 -0
- package/dist/foundation/release/update-launch.d.ts +6 -0
- package/dist/foundation/release/update-launch.js +17 -0
- package/dist/foundation/release/update-recovery.d.ts +76 -0
- package/dist/foundation/release/update-recovery.js +356 -0
- package/dist/foundation/release/update-transaction.d.ts +42 -0
- package/dist/foundation/release/update-transaction.js +101 -0
- package/dist/foundation/release/update.d.ts +114 -0
- package/dist/foundation/release/update.js +633 -0
- package/dist/foundation/release/warmup.d.ts +3 -0
- package/dist/foundation/release/warmup.js +47 -0
- package/dist/foundation/startup/index.d.ts +4 -0
- package/dist/foundation/startup/index.js +2 -0
- package/dist/foundation/startup/startup-budget.d.ts +46 -0
- package/dist/foundation/startup/startup-budget.js +42 -0
- package/dist/foundation/startup/startup-descriptor.js +34 -0
- package/dist/foundation/startup/startup-runtime.d.ts +27 -0
- package/dist/foundation/startup/startup-runtime.js +128 -0
- package/dist/foundation/storage/control-store.d.ts +18 -0
- package/dist/foundation/storage/control-store.js +342 -0
- package/dist/foundation/storage/index.d.ts +1 -0
- package/dist/foundation/storage/index.js +1 -0
- package/dist/foundation/supervision/index.d.ts +3 -0
- package/dist/foundation/supervision/index.js +3 -0
- package/dist/foundation/supervision/main.d.ts +1 -0
- package/dist/foundation/supervision/main.js +84 -0
- package/dist/foundation/supervision/paths.d.ts +1 -0
- package/dist/foundation/supervision/paths.js +1 -0
- package/dist/foundation/supervision/server.d.ts +46 -0
- package/dist/foundation/supervision/server.js +573 -0
- package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
- package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
- package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
- package/dist/foundation/terminal-cleanup/index.js +2 -0
- package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
- package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
- package/dist/integrations/pi/components/components.d.ts +4 -0
- package/dist/integrations/pi/components/components.js +64 -0
- package/dist/integrations/pi/components/conformance.d.ts +18 -0
- package/dist/integrations/pi/components/conformance.js +70 -0
- package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
- package/dist/integrations/pi/components/editor-interaction.js +1 -0
- package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
- package/dist/integrations/pi/components/history-editor-loader.js +5 -0
- package/dist/integrations/pi/components/index.d.ts +23 -0
- package/dist/integrations/pi/components/index.js +14 -0
- package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
- package/dist/integrations/pi/components/models-dialog.js +310 -0
- package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
- package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
- package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
- package/dist/integrations/pi/components/path-word-ranges.js +37 -0
- package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
- package/dist/integrations/pi/components/prompt-input-port.js +1 -0
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
- package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
- package/dist/integrations/pi/components/shell-components.d.ts +7 -0
- package/dist/integrations/pi/components/shell-components.js +7 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +21 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +322 -0
- package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
- package/dist/integrations/pi/components/shell-extension-ui.js +280 -0
- package/dist/integrations/pi/components/shell-footer-status.d.ts +7 -0
- package/dist/integrations/pi/components/shell-footer-status.js +249 -0
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +53 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +134 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.js +433 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +133 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +255 -0
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +225 -0
- package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
- package/dist/integrations/pi/components/skills-command.d.ts +47 -0
- package/dist/integrations/pi/components/skills-command.js +118 -0
- package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
- package/dist/integrations/pi/components/skills-dialog.js +112 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +49 -0
- package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
- package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
- package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
- package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
- package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
- package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +370 -0
- package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
- package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
- package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
- package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
- package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +20 -0
- package/dist/integrations/pi/components/upstream/components/extension-editor.js +84 -0
- package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +52 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -0
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +59 -0
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +346 -0
- package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +11 -0
- package/dist/integrations/pi/components/upstream/components/session-footer.js +123 -0
- package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
- package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +95 -0
- package/dist/integrations/pi/components/upstream/components/session-selector.js +893 -0
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +46 -0
- package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
- package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
- package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
- package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
- package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +101 -0
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +1275 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +81 -0
- package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
- package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
- package/dist/integrations/pi/components/upstream/history/editor-core.js +2144 -0
- package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
- package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
- package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
- package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +31 -0
- package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
- package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
- package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
- package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
- package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
- package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
- package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
- package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
- package/dist/integrations/pi/engine/adapter.d.ts +139 -0
- package/dist/integrations/pi/engine/adapter.js +660 -0
- package/dist/integrations/pi/engine/changelog.d.ts +2 -0
- package/dist/integrations/pi/engine/changelog.js +63 -0
- package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
- package/dist/integrations/pi/engine/command-dispatch.js +125 -0
- package/dist/integrations/pi/engine/compaction-progress.d.ts +28 -0
- package/dist/integrations/pi/engine/compaction-progress.js +96 -0
- package/dist/integrations/pi/engine/conformance.d.ts +39 -0
- package/dist/integrations/pi/engine/conformance.js +140 -0
- package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
- package/dist/integrations/pi/engine/event-delivery.js +184 -0
- package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
- package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
- package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
- package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
- package/dist/integrations/pi/engine/index.d.ts +18 -0
- package/dist/integrations/pi/engine/index.js +10 -0
- package/dist/integrations/pi/engine/message-values.d.ts +29 -0
- package/dist/integrations/pi/engine/message-values.js +168 -0
- package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
- package/dist/integrations/pi/engine/package-integration.js +118 -0
- package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
- package/dist/integrations/pi/engine/pending-delivery.js +156 -0
- package/dist/integrations/pi/engine/pi-settings-metadata.json +385 -0
- package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
- package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
- package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
- package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
- package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
- package/dist/integrations/pi/engine/provider-authentication.js +209 -0
- package/dist/integrations/pi/engine/resource-catalog.d.ts +50 -0
- package/dist/integrations/pi/engine/resource-catalog.js +299 -0
- package/dist/integrations/pi/engine/resources/changelog.json +12 -0
- package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
- package/dist/integrations/pi/engine/runtime-integration.js +118 -0
- package/dist/integrations/pi/engine/session-events.d.ts +48 -0
- package/dist/integrations/pi/engine/session-events.js +223 -0
- package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
- package/dist/integrations/pi/engine/session-integration.js +195 -0
- package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
- package/dist/integrations/pi/engine/session-runtime.js +249 -0
- package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
- package/dist/integrations/pi/engine/session-selection.js +90 -0
- package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
- package/dist/integrations/pi/engine/settings-bridge.js +514 -0
- package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
- package/dist/integrations/pi/engine/settings-metadata.js +67 -0
- package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
- package/dist/integrations/pi/engine/settings-port.js +353 -0
- package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
- package/dist/integrations/pi/engine/tool-rendering.js +145 -0
- package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
- package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
- package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
- package/dist/integrations/pi/engine/transcript-projection.js +405 -0
- package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
- package/dist/integrations/pi/engine/usage-view.js +56 -0
- package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
- package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
- package/dist/integrations/pi/engine/workflow-contexts.d.ts +66 -0
- package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
- package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
- package/dist/integrations/pi/engine/workflow-runner.js +533 -0
- package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
- package/dist/integrations/pi/engine/workflow-support.js +352 -0
- package/dist/integrations/pi/engine/workflows.d.ts +275 -0
- package/dist/integrations/pi/engine/workflows.js +71 -0
- package/dist/integrations/pi/startup-public.d.ts +2 -0
- package/dist/integrations/pi/startup-public.js +2223 -0
- package/dist/integrations/pi/startup-public.manifest.json +12502 -0
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +56 -0
- package/dist/integrations/pi/tui-runtime/adapter.js +783 -0
- package/dist/integrations/pi/tui-runtime/contracts.d.ts +156 -0
- package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +433 -0
- package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
- package/dist/integrations/pi/tui-runtime/index.js +5 -0
- package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
- package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
- package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
- package/dist/integrations/pi/tui-runtime/mouse-report-input.js +57 -0
- package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
- package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
- package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
- package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
- package/dist/native/darwin-arm64/manifest.json +4 -4
- package/dist/native/darwin-arm64/process-guardian +0 -0
- package/dist/native/linux-x64/manifest.json +3 -3
- package/dist/native/linux-x64/process-guardian +0 -0
- package/dist/native/win32-x64/manifest.json +3 -3
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/product-identity.d.ts +37 -0
- package/dist/product-identity.js +119 -0
- package/dist/product-identity.json +85 -0
- package/dist/runtime-payload-inventory.json +127148 -0
- package/dist/ui/apps/contracts.d.ts +72 -0
- package/dist/ui/apps/host.d.ts +42 -0
- package/dist/ui/apps/host.js +156 -0
- package/dist/ui/apps/index.d.ts +5 -0
- package/dist/ui/apps/index.js +3 -0
- package/dist/ui/apps/registry.d.ts +12 -0
- package/dist/ui/apps/registry.js +33 -0
- package/dist/ui/components/dialog-panel.js +49 -0
- package/dist/ui/components/frame.d.ts +22 -0
- package/dist/ui/components/frame.js +55 -0
- package/dist/ui/components/index.d.ts +47 -0
- package/dist/ui/components/index.js +25 -0
- package/dist/ui/components/line-input.d.ts +68 -0
- package/dist/ui/components/line-input.js +224 -0
- package/dist/ui/components/list-view.d.ts +60 -0
- package/dist/ui/components/list-view.js +82 -0
- package/dist/ui/components/mouse.d.ts +25 -0
- package/dist/ui/components/mouse.js +70 -0
- package/dist/ui/components/progress-status.d.ts +2 -0
- package/dist/ui/components/progress-status.js +4 -0
- package/dist/ui/components/prompt-input.d.ts +32 -0
- package/dist/ui/components/prompt-input.js +51 -0
- package/dist/ui/components/scrollbar.d.ts +88 -0
- package/dist/ui/components/scrollbar.js +137 -0
- package/dist/ui/components/selection-copy.d.ts +24 -0
- package/dist/ui/components/selection-copy.js +39 -0
- package/dist/ui/components/shortcuts.d.ts +58 -0
- package/dist/ui/components/shortcuts.js +82 -0
- package/dist/ui/components/spans.d.ts +28 -0
- package/dist/ui/components/spans.js +266 -0
- package/dist/ui/components/submitted-prompt.d.ts +23 -0
- package/dist/ui/components/submitted-prompt.js +50 -0
- package/dist/ui/components/surface.d.ts +20 -0
- package/dist/ui/components/surface.js +44 -0
- package/dist/ui/components/text-selection.d.ts +62 -0
- package/dist/ui/components/text-selection.js +210 -0
- package/dist/ui/components/text.d.ts +38 -0
- package/dist/ui/components/text.js +185 -0
- package/dist/ui/components/transcript-viewport.d.ts +173 -0
- package/dist/ui/components/transcript-viewport.js +753 -0
- package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
- package/dist/ui/components/visible-hyperlinks.js +97 -0
- package/dist/ui/settings/declarations.d.ts +127 -0
- package/dist/ui/settings/declarations.js +124 -0
- package/dist/ui/settings/index.d.ts +10 -0
- package/dist/ui/settings/index.js +5 -0
- package/dist/ui/settings/manager.d.ts +54 -0
- package/dist/ui/settings/manager.js +256 -0
- package/dist/ui/settings/migrations.d.ts +13 -0
- package/dist/ui/settings/migrations.js +92 -0
- package/dist/ui/settings/sections.d.ts +52 -0
- package/dist/ui/settings/sections.js +112 -0
- package/docs/architecture/boundaries.md +17 -13
- package/docs/architecture/code-documentation.md +77 -0
- package/docs/architecture/history-editor-provenance.md +100 -0
- package/docs/architecture/internal-naming.md +93 -0
- package/docs/architecture/process-guardian-provenance.md +3 -1
- package/docs/architecture/project-structure.md +69 -30
- package/docs/architecture/prompt-suggestions.md +68 -0
- package/docs/architecture/resource-and-data-policy.md +28 -2
- package/docs/architecture/response-copy-delivery.md +85 -0
- package/docs/architecture/terminal-host-proof-gate.md +1 -1
- package/docs/architecture/terminal-host-spike-evidence.md +1 -1
- package/docs/architecture/tool-image-presentation.md +62 -0
- package/docs/architecture/toolchain.md +32 -10
- package/docs/architecture/ui-reference-provenance.md +61 -6
- package/docs/ci-release-runbook.md +256 -79
- package/docs/features/launch-profiles.md +24 -17
- package/docs/features/modal-content-interaction.md +38 -0
- package/docs/features/prompt-history.md +149 -0
- package/docs/local-worktree-cleanup.md +212 -0
- package/docs/manual-code-streaming-cleanup.md +88 -0
- package/docs/manual-ghost-link-baseline.md +89 -0
- package/docs/manual-launch-instance-acceptance.md +12 -35
- package/docs/manual-owned-ui-checkpoint.md +79 -0
- package/docs/manual-pi-boundary-candidate.md +4 -5
- package/docs/manual-terminal-colour-check.md +4 -3
- package/docs/openspec-archive-automation.md +259 -0
- package/docs/repository-governance-live-acceptance.md +77 -0
- package/docs/validation.md +100 -0
- package/package.json +52 -34
- package/dist/src/cli/capabilities.d.ts +0 -15
- package/dist/src/cli/capabilities.js +0 -7
- package/dist/src/cli/dispatch.d.ts +0 -32
- package/dist/src/cli/dispatch.js +0 -142
- package/dist/src/cli/index.d.ts +0 -5
- package/dist/src/cli/index.js +0 -5
- package/dist/src/cli/packages.d.ts +0 -23
- package/dist/src/cli/packages.js +0 -84
- package/dist/src/cli/version-stats.d.ts +0 -16
- package/dist/src/cli/version-stats.js +0 -72
- package/dist/src/cli/version.d.ts +0 -2
- package/dist/src/cli/version.js +0 -23
- package/dist/src/composition/index.d.ts +0 -48
- package/dist/src/composition/index.js +0 -258
- package/dist/src/features/launch/development-launch.js +0 -28
- package/dist/src/features/launch/index.d.ts +0 -7
- package/dist/src/features/launch/index.js +0 -7
- package/dist/src/features/launch/intent.d.ts +0 -7
- package/dist/src/features/launch/intent.js +0 -4
- package/dist/src/features/launch/prepare-launch.d.ts +0 -13
- package/dist/src/features/launch/prepare-launch.js +0 -21
- package/dist/src/features/launch/profile-paths.d.ts +0 -15
- package/dist/src/features/launch/profile-paths.js +0 -31
- package/dist/src/features/launch/profiles.d.ts +0 -12
- package/dist/src/features/launch/profiles.js +0 -26
- package/dist/src/features/launch/runtime-selection.d.ts +0 -19
- package/dist/src/features/launch/runtime-selection.js +0 -13
- package/dist/src/features/owned-ui/customization.d.ts +0 -38
- package/dist/src/features/owned-ui/customization.js +0 -108
- package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
- package/dist/src/features/owned-ui/diagnostics.js +0 -94
- package/dist/src/features/owned-ui/index.d.ts +0 -4
- package/dist/src/features/owned-ui/index.js +0 -4
- package/dist/src/features/owned-ui/run.d.ts +0 -11
- package/dist/src/features/owned-ui/run.js +0 -15
- package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
- package/dist/src/features/owned-ui/settings-app.js +0 -633
- package/dist/src/features/workspace/capabilities.d.ts +0 -31
- package/dist/src/features/workspace/capabilities.js +0 -75
- package/dist/src/features/workspace/index.d.ts +0 -6
- package/dist/src/features/workspace/index.js +0 -6
- package/dist/src/features/workspace/presentation.d.ts +0 -30
- package/dist/src/features/workspace/presentation.js +0 -70
- package/dist/src/features/workspace/reconciliation.d.ts +0 -15
- package/dist/src/features/workspace/reconciliation.js +0 -82
- package/dist/src/features/workspace/reducer.d.ts +0 -42
- package/dist/src/features/workspace/reducer.js +0 -213
- package/dist/src/features/workspace/router.d.ts +0 -31
- package/dist/src/features/workspace/router.js +0 -124
- package/dist/src/features/workspace/store.d.ts +0 -17
- package/dist/src/features/workspace/store.js +0 -54
- package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
- package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
- package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
- package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
- package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
- package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
- package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
- package/dist/src/foundation/launch-guardian/index.js +0 -1
- package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
- package/dist/src/foundation/launch-guardian/main.js +0 -165
- package/dist/src/foundation/lifecycle/index.d.ts +0 -4
- package/dist/src/foundation/lifecycle/index.js +0 -4
- package/dist/src/foundation/lifecycle/model.d.ts +0 -64
- package/dist/src/foundation/lifecycle/model.js +0 -40
- package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
- package/dist/src/foundation/lifecycle/paths.js +0 -42
- package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
- package/dist/src/foundation/native-host-protocol/codec.js +0 -56
- package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
- package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
- package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
- package/dist/src/foundation/native-host-protocol/index.js +0 -4
- package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
- package/dist/src/foundation/native-host-protocol/messages.js +0 -149
- package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
- package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
- package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
- package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
- package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
- package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
- package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
- package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
- package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
- package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
- package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
- package/dist/src/foundation/owned-ui-settings/index.js +0 -6
- package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
- package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
- package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
- package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
- package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
- package/dist/src/foundation/owned-ui-settings/session.js +0 -145
- package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
- package/dist/src/foundation/owned-ui-settings/store.js +0 -90
- package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
- package/dist/src/foundation/pi-component-adapter/components.js +0 -64
- package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
- package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
- package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
- package/dist/src/foundation/pi-component-adapter/index.js +0 -13
- package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
- package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
- package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
- package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -11
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
- package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
- package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
- package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
- package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
- package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
- package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
- package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
- package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
- package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
- package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
- package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
- package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
- package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
- package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
- package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
- package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
- package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
- package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
- package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
- package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
- package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
- package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
- package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
- package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
- package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
- package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
- package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
- package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
- package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
- package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
- package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
- package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
- package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
- package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
- package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
- package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
- package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
- package/dist/src/foundation/process-containment/index.d.ts +0 -5
- package/dist/src/foundation/process-containment/index.js +0 -5
- package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
- package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
- package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
- package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
- package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
- package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
- package/dist/src/foundation/protocol/client.d.ts +0 -17
- package/dist/src/foundation/protocol/client.js +0 -129
- package/dist/src/foundation/protocol/index.d.ts +0 -2
- package/dist/src/foundation/protocol/index.js +0 -2
- package/dist/src/foundation/protocol/messages.d.ts +0 -89
- package/dist/src/foundation/protocol/messages.js +0 -99
- package/dist/src/foundation/release/bootstrap.d.ts +0 -29
- package/dist/src/foundation/release/bootstrap.js +0 -335
- package/dist/src/foundation/release/cohort-state.d.ts +0 -70
- package/dist/src/foundation/release/cohort-state.js +0 -202
- package/dist/src/foundation/release/index.d.ts +0 -10
- package/dist/src/foundation/release/index.js +0 -10
- package/dist/src/foundation/release/release-gc.d.ts +0 -5
- package/dist/src/foundation/release/release-gc.js +0 -16
- package/dist/src/foundation/release/release-store.d.ts +0 -43
- package/dist/src/foundation/release/release-store.js +0 -175
- package/dist/src/foundation/release/release.d.ts +0 -38
- package/dist/src/foundation/release/release.js +0 -204
- package/dist/src/foundation/release/update-transaction.d.ts +0 -31
- package/dist/src/foundation/release/update-transaction.js +0 -89
- package/dist/src/foundation/release/update.d.ts +0 -82
- package/dist/src/foundation/release/update.js +0 -527
- package/dist/src/foundation/storage/control-store.d.ts +0 -61
- package/dist/src/foundation/storage/control-store.js +0 -530
- package/dist/src/foundation/storage/index.d.ts +0 -1
- package/dist/src/foundation/storage/index.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
- package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
- package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
- package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
- package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
- package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
- package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
- package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
- package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
- package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
- package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
- package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
- package/dist/src/foundation/supervision/index.d.ts +0 -3
- package/dist/src/foundation/supervision/index.js +0 -3
- package/dist/src/foundation/supervision/main.d.ts +0 -1
- package/dist/src/foundation/supervision/main.js +0 -41
- package/dist/src/foundation/supervision/paths.d.ts +0 -1
- package/dist/src/foundation/supervision/paths.js +0 -1
- package/dist/src/foundation/supervision/server.d.ts +0 -22
- package/dist/src/foundation/supervision/server.js +0 -451
- package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
- package/dist/src/foundation/ui-apps/host.d.ts +0 -42
- package/dist/src/foundation/ui-apps/host.js +0 -152
- package/dist/src/foundation/ui-apps/index.d.ts +0 -3
- package/dist/src/foundation/ui-apps/index.js +0 -3
- package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
- package/dist/src/foundation/ui-apps/registry.js +0 -32
- package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
- package/dist/src/foundation/ui-components/frame.d.ts +0 -21
- package/dist/src/foundation/ui-components/frame.js +0 -54
- package/dist/src/foundation/ui-components/index.d.ts +0 -18
- package/dist/src/foundation/ui-components/index.js +0 -18
- package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
- package/dist/src/foundation/ui-components/line-input.js +0 -245
- package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
- package/dist/src/foundation/ui-components/list-view.js +0 -76
- package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
- package/dist/src/foundation/ui-components/mouse.js +0 -46
- package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
- package/dist/src/foundation/ui-components/scrollbar.js +0 -102
- package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
- package/dist/src/foundation/ui-components/shortcuts.js +0 -81
- package/dist/src/foundation/ui-components/spans.d.ts +0 -7
- package/dist/src/foundation/ui-components/spans.js +0 -59
- package/dist/src/foundation/ui-components/surface.d.ts +0 -20
- package/dist/src/foundation/ui-components/surface.js +0 -38
- package/dist/src/foundation/ui-components/text.d.ts +0 -24
- package/dist/src/foundation/ui-components/text.js +0 -123
- package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
- package/dist/src/foundation/workspace-contracts/index.js +0 -2
- package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
- package/dist/src/foundation/workspace-contracts/model.js +0 -2
- package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
- package/dist/src/foundation/workspace-contracts/validation.js +0 -335
- package/dist/src/product-identity.d.ts +0 -37
- package/dist/src/product-identity.js +0 -150
- package/dist/src/product-identity.json +0 -99
- package/docs/manual-transparent-checkpoint.md +0 -53
- /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
- /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
- /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
- /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
- /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
- /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
- /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
- /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
- /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
- /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
- /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
- /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
import { assertLaunchProfileId } from "../lifecycle/index.js";
|
|
5
|
-
import { closeVerifiedContainment, LinuxNativeProcessInspector, NativeGuardianContainment, resolveProcessGuardianPath, verifyProcessGuardianArtifact, WindowsNativeProcessInspector, } from "../process-containment/index.js";
|
|
6
|
-
import { SupervisorClient } from "../protocol/index.js";
|
|
7
|
-
import { resolveProductPaths } from "../supervision/index.js";
|
|
8
|
-
export async function runLaunchGuardian(options) {
|
|
9
|
-
assertLaunchProfileId(options.profileId);
|
|
10
|
-
const environment = { ...(options.environment ?? process.env) };
|
|
11
|
-
const paths = resolveProductPaths(environment);
|
|
12
|
-
const instanceId = randomUUID();
|
|
13
|
-
const helperPath = options.helperPath ?? resolveProcessGuardianPath(options.releaseRoot, environment);
|
|
14
|
-
const inspector = options.inspector ?? platformInspector(helperPath);
|
|
15
|
-
await (options.ensureHelper ?? verifyProcessGuardianArtifact)(helperPath);
|
|
16
|
-
const guardianIdentity = await inspector.observe(process.pid);
|
|
17
|
-
if (!guardianIdentity)
|
|
18
|
-
throw diagnosticError("launch guardian cannot verify its own native process identity", "PROCESS_IDENTITY_UNAVAILABLE");
|
|
19
|
-
const client = options.control ?? new SupervisorClient(environment[PRODUCT_IDENTITY.environment.releaseId]);
|
|
20
|
-
await client.connect(paths.endpoint);
|
|
21
|
-
const containment = options.containment ?? new NativeGuardianContainment(instanceId, helperPath, resolve(paths.runtimeDir, "launch-instances", `${instanceId}.ready.json`));
|
|
22
|
-
const stop = stopRequests(client, instanceId);
|
|
23
|
-
let rootIdentity = null;
|
|
24
|
-
try {
|
|
25
|
-
await requireAccepted(client, {
|
|
26
|
-
type: "create-launch-instance",
|
|
27
|
-
requestId: randomUUID(),
|
|
28
|
-
instanceId,
|
|
29
|
-
profileId: options.profileId,
|
|
30
|
-
shutdownPolicy: "terminate-tree-on-close",
|
|
31
|
-
guardianIdentity,
|
|
32
|
-
});
|
|
33
|
-
let handle;
|
|
34
|
-
try {
|
|
35
|
-
handle = await containment.spawn(process.execPath, [options.uiEntry], {
|
|
36
|
-
cwd: options.cwd ?? process.cwd(),
|
|
37
|
-
environment: environmentEntries(environment),
|
|
38
|
-
...(environment.TERM ? { terminalType: environment.TERM } : {}),
|
|
39
|
-
});
|
|
40
|
-
rootIdentity = handle.identity;
|
|
41
|
-
await requireAccepted(client, {
|
|
42
|
-
type: "activate-launch-instance",
|
|
43
|
-
requestId: randomUUID(),
|
|
44
|
-
instanceId,
|
|
45
|
-
rootIdentity,
|
|
46
|
-
containmentIdentity: containment.identity,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
const outcome = failureOutcome(error, "guardian-error");
|
|
51
|
-
await completeBestEffort(client, instanceId, "completed", outcome);
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
const outcome = await Promise.race([
|
|
55
|
-
handle.outcome,
|
|
56
|
-
stop.requested.then(async (reason) => {
|
|
57
|
-
if (reason !== "supervisor-disconnect") {
|
|
58
|
-
await requireAccepted(client, {
|
|
59
|
-
type: "begin-launch-instance-stop",
|
|
60
|
-
requestId: randomUUID(),
|
|
61
|
-
instanceId,
|
|
62
|
-
reason,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
if (!rootIdentity)
|
|
66
|
-
return failureOutcome(new Error("launch root identity is unavailable"), "cleanup-error");
|
|
67
|
-
const result = await closeVerifiedContainment(containment, inspector, rootIdentity, reason);
|
|
68
|
-
await containment.close();
|
|
69
|
-
if (reason === "supervisor-disconnect" && result.outcome.kind === "stopped") {
|
|
70
|
-
return {
|
|
71
|
-
kind: "interrupted",
|
|
72
|
-
reason,
|
|
73
|
-
message: "supervisor disconnected after local launch-instance containment closed",
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
return result.outcome;
|
|
77
|
-
}),
|
|
78
|
-
]);
|
|
79
|
-
await containment.close();
|
|
80
|
-
if (outcome.kind !== "interrupted" || outcome.reason !== "supervisor-disconnect") {
|
|
81
|
-
await completeBestEffort(client, instanceId, outcome.kind === "interrupted" || outcome.kind === "cleanup-error" ? "interrupted" : "completed", outcome);
|
|
82
|
-
}
|
|
83
|
-
return exitCode(outcome);
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
await containment.close().catch(() => undefined);
|
|
87
|
-
throw error;
|
|
88
|
-
}
|
|
89
|
-
finally {
|
|
90
|
-
stop.dispose();
|
|
91
|
-
client.close();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function platformInspector(helperPath) {
|
|
95
|
-
if (process.platform === "win32")
|
|
96
|
-
return new WindowsNativeProcessInspector(helperPath);
|
|
97
|
-
if (process.platform === "linux")
|
|
98
|
-
return new LinuxNativeProcessInspector();
|
|
99
|
-
throw diagnosticError(`launch-instance process containment is unsupported on ${process.platform}`, "CONTAINMENT_UNSUPPORTED");
|
|
100
|
-
}
|
|
101
|
-
function stopRequests(client, instanceId) {
|
|
102
|
-
let resolveStop;
|
|
103
|
-
let settled = false;
|
|
104
|
-
const requested = new Promise(resolvePromise => { resolveStop = resolvePromise; });
|
|
105
|
-
const request = (reason) => {
|
|
106
|
-
if (settled)
|
|
107
|
-
return;
|
|
108
|
-
settled = true;
|
|
109
|
-
resolveStop(reason);
|
|
110
|
-
};
|
|
111
|
-
const onStopIntent = (intent) => {
|
|
112
|
-
if (intent.instanceId === instanceId)
|
|
113
|
-
request(intent.reason);
|
|
114
|
-
};
|
|
115
|
-
const onDisconnect = () => request("supervisor-disconnect");
|
|
116
|
-
const onSigterm = () => request("user-request");
|
|
117
|
-
const onSigint = () => undefined;
|
|
118
|
-
client.on("stopIntent", onStopIntent);
|
|
119
|
-
client.on("disconnect", onDisconnect);
|
|
120
|
-
process.once("SIGTERM", onSigterm);
|
|
121
|
-
process.on("SIGINT", onSigint);
|
|
122
|
-
return {
|
|
123
|
-
requested,
|
|
124
|
-
dispose() {
|
|
125
|
-
client.off("stopIntent", onStopIntent);
|
|
126
|
-
client.off("disconnect", onDisconnect);
|
|
127
|
-
process.off("SIGTERM", onSigterm);
|
|
128
|
-
process.off("SIGINT", onSigint);
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
async function requireAccepted(client, command) {
|
|
133
|
-
const result = await client.command(command);
|
|
134
|
-
if (!result.ok)
|
|
135
|
-
throw diagnosticError(result.error?.message ?? `supervisor rejected ${command.type}`, result.error?.code ?? "SUPERVISOR_REJECTED");
|
|
136
|
-
}
|
|
137
|
-
async function completeBestEffort(client, instanceId, terminalState, outcome) {
|
|
138
|
-
await requireAccepted(client, {
|
|
139
|
-
type: "complete-launch-instance",
|
|
140
|
-
requestId: randomUUID(),
|
|
141
|
-
instanceId,
|
|
142
|
-
terminalState,
|
|
143
|
-
outcome,
|
|
144
|
-
}).catch(() => undefined);
|
|
145
|
-
}
|
|
146
|
-
function environmentEntries(environment) {
|
|
147
|
-
return Object.fromEntries(Object.entries(environment).filter((entry) => entry[1] !== undefined));
|
|
148
|
-
}
|
|
149
|
-
function failureOutcome(error, kind) {
|
|
150
|
-
return {
|
|
151
|
-
kind,
|
|
152
|
-
message: error instanceof Error ? error.message : String(error),
|
|
153
|
-
code: error instanceof Error && "code" in error && typeof error.code === "string" ? error.code : null,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
function exitCode(outcome) {
|
|
157
|
-
if (outcome.kind === "exited")
|
|
158
|
-
return outcome.exitCode;
|
|
159
|
-
if (outcome.kind === "stopped")
|
|
160
|
-
return 0;
|
|
161
|
-
return 1;
|
|
162
|
-
}
|
|
163
|
-
function diagnosticError(message, code) {
|
|
164
|
-
return Object.assign(new Error(`A1: ${message}`), { code });
|
|
165
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
export type LaunchProfileId = "a1" | "pi" | "sandbox";
|
|
2
|
-
export type GenerationId = string;
|
|
3
|
-
export type DriverProfileId = string;
|
|
4
|
-
export type RequestId = string;
|
|
5
|
-
export interface TerminalDimensions {
|
|
6
|
-
readonly columns: number;
|
|
7
|
-
readonly rows: number;
|
|
8
|
-
}
|
|
9
|
-
export interface TransparentTerminalLaunchProfile {
|
|
10
|
-
readonly id: DriverProfileId;
|
|
11
|
-
readonly terminalCapability: "transparent";
|
|
12
|
-
readonly executable: string;
|
|
13
|
-
readonly arguments: readonly string[];
|
|
14
|
-
readonly cwd: string;
|
|
15
|
-
readonly environment: Readonly<Record<string, string>>;
|
|
16
|
-
readonly terminalType: string;
|
|
17
|
-
readonly dimensions: TerminalDimensions;
|
|
18
|
-
readonly ownerDisconnect: "stop" | "detach";
|
|
19
|
-
readonly recovery: "detach-only" | "none";
|
|
20
|
-
readonly surface: "none";
|
|
21
|
-
readonly visualReconnection: "none";
|
|
22
|
-
}
|
|
23
|
-
export interface NativeProcessIdentity {
|
|
24
|
-
readonly pid: number;
|
|
25
|
-
readonly startIdentity: string;
|
|
26
|
-
}
|
|
27
|
-
export type TransparentTerminalLifecycleOutcome = {
|
|
28
|
-
readonly kind: "exited";
|
|
29
|
-
readonly exitCode: number;
|
|
30
|
-
} | {
|
|
31
|
-
readonly kind: "signaled";
|
|
32
|
-
readonly signal: string;
|
|
33
|
-
} | {
|
|
34
|
-
readonly kind: "stopped";
|
|
35
|
-
readonly reason: "owner-disconnect" | "user-request" | "update";
|
|
36
|
-
} | {
|
|
37
|
-
readonly kind: "detached";
|
|
38
|
-
readonly reason: "owner-disconnect";
|
|
39
|
-
} | {
|
|
40
|
-
readonly kind: "spawn-error" | "broker-error";
|
|
41
|
-
readonly message: string;
|
|
42
|
-
readonly code: string | null;
|
|
43
|
-
};
|
|
44
|
-
export interface SupervisorSnapshot {
|
|
45
|
-
readonly revision: number;
|
|
46
|
-
readonly activeInstances: readonly {
|
|
47
|
-
readonly id: string;
|
|
48
|
-
readonly profileId: LaunchProfileId;
|
|
49
|
-
readonly state: "requested" | "active" | "stopping";
|
|
50
|
-
}[];
|
|
51
|
-
}
|
|
52
|
-
export interface CommandResult {
|
|
53
|
-
readonly requestId: RequestId;
|
|
54
|
-
readonly ok: boolean;
|
|
55
|
-
readonly revision: number;
|
|
56
|
-
readonly error?: {
|
|
57
|
-
readonly code: "invalid-command" | "not-found" | "stale-generation" | "capability-error" | "containment-unsupported" | "ownership-error" | "driver-error";
|
|
58
|
-
readonly message: string;
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
export declare function assertLaunchProfileId(value: unknown): asserts value is LaunchProfileId;
|
|
62
|
-
export declare function assertDimensions(dimensions: TerminalDimensions): void;
|
|
63
|
-
export declare function assertTransparentTerminalLaunchProfile(profile: TransparentTerminalLaunchProfile): void;
|
|
64
|
-
export declare function assertNativeProcessIdentity(identity: NativeProcessIdentity): void;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { PRODUCT_TEXT } from "../../product-identity.js";
|
|
2
|
-
export function assertLaunchProfileId(value) {
|
|
3
|
-
if (value !== "a1" && value !== "pi" && value !== "sandbox")
|
|
4
|
-
throw new TypeError(PRODUCT_TEXT.diagnostic(`launch profile is invalid: ${String(value)}`));
|
|
5
|
-
}
|
|
6
|
-
export function assertDimensions(dimensions) {
|
|
7
|
-
if (!Number.isInteger(dimensions.columns) || dimensions.columns < 2 || dimensions.columns > 500) {
|
|
8
|
-
throw new RangeError("terminal columns must be an integer from 2 to 500");
|
|
9
|
-
}
|
|
10
|
-
if (!Number.isInteger(dimensions.rows) || dimensions.rows < 1 || dimensions.rows > 300) {
|
|
11
|
-
throw new RangeError("terminal rows must be an integer from 1 to 300");
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export function assertTransparentTerminalLaunchProfile(profile) {
|
|
15
|
-
if (!profile.id || profile.terminalCapability !== "transparent")
|
|
16
|
-
throw new TypeError("invalid transparent terminal profile identity");
|
|
17
|
-
if (!profile.executable || profile.executable.includes("\0"))
|
|
18
|
-
throw new TypeError("transparent executable must be non-empty and contain no null byte");
|
|
19
|
-
if (!profile.cwd || profile.cwd.includes("\0"))
|
|
20
|
-
throw new TypeError("transparent working directory must be non-empty and contain no null byte");
|
|
21
|
-
if (profile.arguments.some(value => typeof value !== "string" || value.includes("\0")))
|
|
22
|
-
throw new TypeError("transparent arguments must contain no null byte");
|
|
23
|
-
if (Object.entries(profile.environment).some(([name, value]) => !name || name.includes("=") || name.includes("\0") || value.includes("\0"))) {
|
|
24
|
-
throw new TypeError("transparent environment contains an invalid name or value");
|
|
25
|
-
}
|
|
26
|
-
if (!profile.terminalType || profile.terminalType.includes("\0"))
|
|
27
|
-
throw new TypeError("transparent terminal type is invalid");
|
|
28
|
-
assertDimensions(profile.dimensions);
|
|
29
|
-
if (profile.surface !== "none" || profile.visualReconnection !== "none")
|
|
30
|
-
throw new TypeError("transparent profiles cannot declare a surface or visual reconnection");
|
|
31
|
-
if (profile.ownerDisconnect === "detach" && profile.recovery !== "detach-only")
|
|
32
|
-
throw new TypeError("transparent detach policy requires detach-only recovery");
|
|
33
|
-
if (profile.ownerDisconnect === "stop" && profile.recovery !== "none")
|
|
34
|
-
throw new TypeError("transparent stop policy requires no recovery claim");
|
|
35
|
-
}
|
|
36
|
-
export function assertNativeProcessIdentity(identity) {
|
|
37
|
-
if (!Number.isSafeInteger(identity.pid) || identity.pid <= 0 || !identity.startIdentity || identity.startIdentity.includes("\0")) {
|
|
38
|
-
throw new TypeError("invalid native process identity");
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface ProductPaths {
|
|
2
|
-
readonly configDir: string;
|
|
3
|
-
readonly dataDir: string;
|
|
4
|
-
readonly runtimeDir: string;
|
|
5
|
-
readonly databasePath: string;
|
|
6
|
-
readonly endpoint: string;
|
|
7
|
-
readonly endpointMetadataPath: string;
|
|
8
|
-
readonly supervisorLogPath: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function resolveProductPaths(environment?: NodeJS.ProcessEnv, hostPlatform?: NodeJS.Platform, fallbackHome?: string): ProductPaths;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { homedir, platform } from "node:os";
|
|
3
|
-
import { posix, win32 } from "node:path";
|
|
4
|
-
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
5
|
-
export function resolveProductPaths(environment = process.env, hostPlatform = platform(), fallbackHome = homedir()) {
|
|
6
|
-
const windows = hostPlatform === "win32";
|
|
7
|
-
const path = windows ? win32 : posix;
|
|
8
|
-
const home = environment.HOME ?? environment.USERPROFILE ?? fallbackHome;
|
|
9
|
-
const configOverride = environment[PRODUCT_IDENTITY.environment.configDir];
|
|
10
|
-
const dataOverride = environment[PRODUCT_IDENTITY.environment.dataDir];
|
|
11
|
-
const runtimeOverride = environment[PRODUCT_IDENTITY.environment.runtimeDir];
|
|
12
|
-
const databaseOverride = environment[PRODUCT_IDENTITY.environment.databasePath];
|
|
13
|
-
const endpointOverride = environment[PRODUCT_IDENTITY.environment.endpoint];
|
|
14
|
-
const configDir = path.resolve(configOverride
|
|
15
|
-
?? (windows
|
|
16
|
-
? path.join(environment.APPDATA ?? home, PRODUCT_IDENTITY.state.windowsControlDirectory)
|
|
17
|
-
: path.join(environment.XDG_CONFIG_HOME ?? path.join(home, ".config"), PRODUCT_IDENTITY.state.unixControlDirectory)));
|
|
18
|
-
const dataDir = path.resolve(dataOverride
|
|
19
|
-
?? (windows
|
|
20
|
-
? path.join(environment.LOCALAPPDATA ?? home, PRODUCT_IDENTITY.state.windowsControlDirectory)
|
|
21
|
-
: path.join(environment.XDG_DATA_HOME ?? path.join(home, ".local", "share"), PRODUCT_IDENTITY.state.unixControlDirectory)));
|
|
22
|
-
const runtimeDir = path.resolve(runtimeOverride
|
|
23
|
-
?? (windows
|
|
24
|
-
? path.join(dataDir, "runtime")
|
|
25
|
-
: environment.XDG_RUNTIME_DIR
|
|
26
|
-
? path.join(environment.XDG_RUNTIME_DIR, PRODUCT_IDENTITY.state.unixControlDirectory)
|
|
27
|
-
: path.join(dataDir, "runtime")));
|
|
28
|
-
const namespace = createHash("sha256").update(runtimeDir.toLowerCase()).digest("hex").slice(0, 20);
|
|
29
|
-
const endpoint = endpointOverride
|
|
30
|
-
?? (windows
|
|
31
|
-
? `\\\\.\\pipe\\${PRODUCT_IDENTITY.endpoint.windowsPipeStem}-${namespace}`
|
|
32
|
-
: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.unixSocketFilename));
|
|
33
|
-
return {
|
|
34
|
-
configDir,
|
|
35
|
-
dataDir,
|
|
36
|
-
runtimeDir,
|
|
37
|
-
databasePath: path.resolve(databaseOverride ?? path.join(dataDir, PRODUCT_IDENTITY.endpoint.databaseFilename)),
|
|
38
|
-
endpoint,
|
|
39
|
-
endpointMetadataPath: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.metadataFilename),
|
|
40
|
-
supervisorLogPath: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.supervisorLogFilename),
|
|
41
|
-
};
|
|
42
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type NativeHostProofMessage } from "./messages.js";
|
|
2
|
-
export declare class NativeHostProtocolError extends Error {
|
|
3
|
-
readonly code: "frame-too-large" | "malformed-frame" | "invalid-message";
|
|
4
|
-
constructor(code: "frame-too-large" | "malformed-frame" | "invalid-message", message: string);
|
|
5
|
-
}
|
|
6
|
-
export declare class NativeHostFrameCodec {
|
|
7
|
-
#private;
|
|
8
|
-
encode(message: NativeHostProofMessage): string;
|
|
9
|
-
push(chunk: Buffer | string): NativeHostProofMessage[];
|
|
10
|
-
private decodeLine;
|
|
11
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { MAX_NATIVE_HOST_MESSAGE_BYTES, assertNativeHostProofMessage, } from "./messages.js";
|
|
2
|
-
export class NativeHostProtocolError extends Error {
|
|
3
|
-
code;
|
|
4
|
-
constructor(code, message) {
|
|
5
|
-
super(message);
|
|
6
|
-
this.code = code;
|
|
7
|
-
this.name = "NativeHostProtocolError";
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
export class NativeHostFrameCodec {
|
|
11
|
-
#buffer = "";
|
|
12
|
-
encode(message) {
|
|
13
|
-
assertNativeHostProofMessage(message);
|
|
14
|
-
const encoded = `${JSON.stringify(message)}\n`;
|
|
15
|
-
if (Buffer.byteLength(encoded, "utf8") > MAX_NATIVE_HOST_MESSAGE_BYTES) {
|
|
16
|
-
throw new NativeHostProtocolError("frame-too-large", "native-host message exceeds the 1 MiB proof frame limit");
|
|
17
|
-
}
|
|
18
|
-
return encoded;
|
|
19
|
-
}
|
|
20
|
-
push(chunk) {
|
|
21
|
-
this.#buffer += typeof chunk === "string" ? chunk : chunk.toString("utf8");
|
|
22
|
-
if (Buffer.byteLength(this.#buffer, "utf8") > MAX_NATIVE_HOST_MESSAGE_BYTES) {
|
|
23
|
-
this.#buffer = "";
|
|
24
|
-
throw new NativeHostProtocolError("frame-too-large", "native-host buffered frame exceeds the 1 MiB proof frame limit");
|
|
25
|
-
}
|
|
26
|
-
const messages = [];
|
|
27
|
-
let newline = this.#buffer.indexOf("\n");
|
|
28
|
-
while (newline >= 0) {
|
|
29
|
-
const line = this.#buffer.slice(0, newline);
|
|
30
|
-
this.#buffer = this.#buffer.slice(newline + 1);
|
|
31
|
-
if (line.length > 0)
|
|
32
|
-
messages.push(this.decodeLine(line));
|
|
33
|
-
newline = this.#buffer.indexOf("\n");
|
|
34
|
-
}
|
|
35
|
-
return messages;
|
|
36
|
-
}
|
|
37
|
-
decodeLine(line) {
|
|
38
|
-
let value;
|
|
39
|
-
try {
|
|
40
|
-
value = JSON.parse(line);
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
throw new NativeHostProtocolError("malformed-frame", "native-host frame is not valid JSON");
|
|
44
|
-
}
|
|
45
|
-
if (!isProofMessage(value))
|
|
46
|
-
throw new NativeHostProtocolError("invalid-message", "native-host frame does not match the proof message contract");
|
|
47
|
-
assertNativeHostProofMessage(value);
|
|
48
|
-
return value;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function isProofMessage(value) {
|
|
52
|
-
return typeof value === "object"
|
|
53
|
-
&& value !== null
|
|
54
|
-
&& typeof value.type === "string"
|
|
55
|
-
&& ["hello", "hello-result", "command", "command-result", "event", "error"].includes(value.type);
|
|
56
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
export declare const NATIVE_SPIKE_EVIDENCE_SCHEMA: string;
|
|
2
|
-
export declare const NATIVE_SPIKE_WORKLOADS: readonly ["four-concurrent-sessions", "input-routing", "unicode-cursor-modes", "alternate-screen", "paste", "mouse", "ime", "live-resize", "dpi", "high-rate-output", "pane-abnormal-exit", "host-cleanup"];
|
|
3
|
-
export type NativeSpikeWorkloadId = typeof NATIVE_SPIKE_WORKLOADS[number];
|
|
4
|
-
export interface NativeSpikeMetricSummary {
|
|
5
|
-
readonly minimum: number;
|
|
6
|
-
readonly p50: number;
|
|
7
|
-
readonly p95: number;
|
|
8
|
-
readonly maximum: number;
|
|
9
|
-
readonly samples: number;
|
|
10
|
-
}
|
|
11
|
-
export interface NativeSpikePaintDiagnostics {
|
|
12
|
-
readonly requestedFrames: number;
|
|
13
|
-
readonly presentedFrames: number;
|
|
14
|
-
readonly coalescedFrames: number;
|
|
15
|
-
readonly missedFrames: number;
|
|
16
|
-
readonly resizePaintGaps: number;
|
|
17
|
-
}
|
|
18
|
-
export interface NativeSpikeResourceObservation {
|
|
19
|
-
readonly cpuPercentMaximum: number;
|
|
20
|
-
readonly residentMemoryBytesMaximum: number;
|
|
21
|
-
readonly gpuMemoryBytesMaximum: number | null;
|
|
22
|
-
}
|
|
23
|
-
export interface NativeSpikeWorkloadResult {
|
|
24
|
-
readonly id: NativeSpikeWorkloadId;
|
|
25
|
-
readonly status: "passed" | "failed" | "not-run";
|
|
26
|
-
readonly durationMs: number;
|
|
27
|
-
readonly details: Readonly<Record<string, unknown>>;
|
|
28
|
-
}
|
|
29
|
-
export interface NativeSpikeEvidence {
|
|
30
|
-
readonly schema: typeof NATIVE_SPIKE_EVIDENCE_SCHEMA;
|
|
31
|
-
readonly artifact: {
|
|
32
|
-
readonly path: string;
|
|
33
|
-
readonly sha256: string;
|
|
34
|
-
readonly sizeBytes: number;
|
|
35
|
-
};
|
|
36
|
-
readonly source: {
|
|
37
|
-
readonly "a1Commit": string;
|
|
38
|
-
readonly libghosttyVtCommit: string;
|
|
39
|
-
readonly portablePtyVersion: string;
|
|
40
|
-
readonly crosstermVersion: string;
|
|
41
|
-
};
|
|
42
|
-
readonly environment: {
|
|
43
|
-
readonly platform: "windows";
|
|
44
|
-
readonly architecture: "x64" | "arm64";
|
|
45
|
-
readonly osRelease: string;
|
|
46
|
-
readonly zig: string;
|
|
47
|
-
readonly isolatedWorker: boolean;
|
|
48
|
-
};
|
|
49
|
-
readonly workloads: readonly NativeSpikeWorkloadResult[];
|
|
50
|
-
readonly latency: {
|
|
51
|
-
readonly inputToProcessMs: NativeSpikeMetricSummary;
|
|
52
|
-
readonly outputToPresentMs: NativeSpikeMetricSummary;
|
|
53
|
-
};
|
|
54
|
-
readonly paint: NativeSpikePaintDiagnostics;
|
|
55
|
-
readonly resources: NativeSpikeResourceObservation;
|
|
56
|
-
readonly physical: {
|
|
57
|
-
readonly method: "not-run" | "manual" | "isolated-worker";
|
|
58
|
-
readonly activeWorkstationAutomation: false;
|
|
59
|
-
readonly verdict: "pending" | "accepted" | "rejected";
|
|
60
|
-
readonly evidenceReference: string | null;
|
|
61
|
-
};
|
|
62
|
-
readonly summary: {
|
|
63
|
-
readonly technical: "passed" | "failed" | "incomplete";
|
|
64
|
-
readonly overall: "pending" | "accepted" | "rejected";
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
export declare function assertNativeSpikeEvidence(value: NativeSpikeEvidence): void;
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
|
|
2
|
-
export const NATIVE_SPIKE_EVIDENCE_SCHEMA = PRODUCT_IDENTITY.evidence.nativeSpikeSchema;
|
|
3
|
-
export const NATIVE_SPIKE_WORKLOADS = [
|
|
4
|
-
"four-concurrent-sessions",
|
|
5
|
-
"input-routing",
|
|
6
|
-
"unicode-cursor-modes",
|
|
7
|
-
"alternate-screen",
|
|
8
|
-
"paste",
|
|
9
|
-
"mouse",
|
|
10
|
-
"ime",
|
|
11
|
-
"live-resize",
|
|
12
|
-
"dpi",
|
|
13
|
-
"high-rate-output",
|
|
14
|
-
"pane-abnormal-exit",
|
|
15
|
-
"host-cleanup",
|
|
16
|
-
];
|
|
17
|
-
const EXPECTED_LIBGHOSTTY_VT = "c5a21edfcbc2d5b46540ad91b7980aca31f5f1f3";
|
|
18
|
-
const EXPECTED_PORTABLE_PTY = "0.9.0";
|
|
19
|
-
const EXPECTED_CROSSTERM = "0.29.0";
|
|
20
|
-
const FORBIDDEN_EVIDENCE_KEYS = new Set([
|
|
21
|
-
"pty" + "Bytes",
|
|
22
|
-
"terminal" + "Bytes",
|
|
23
|
-
"terminal" + "Output",
|
|
24
|
-
"input" + "Bytes",
|
|
25
|
-
"rendered" + "Cells",
|
|
26
|
-
"cell" + "Grid",
|
|
27
|
-
"screen" + "Buffer",
|
|
28
|
-
"ansi" + "Stream",
|
|
29
|
-
"raw" + "Terminal",
|
|
30
|
-
]);
|
|
31
|
-
export function assertNativeSpikeEvidence(value) {
|
|
32
|
-
if (value.schema !== NATIVE_SPIKE_EVIDENCE_SCHEMA)
|
|
33
|
-
throw new TypeError("native spike evidence schema is invalid");
|
|
34
|
-
if (!/^[a-f0-9]{64}$/.test(value.artifact.sha256))
|
|
35
|
-
throw new TypeError("native spike artifact hash must be SHA-256");
|
|
36
|
-
if (!Number.isSafeInteger(value.artifact.sizeBytes) || value.artifact.sizeBytes <= 0)
|
|
37
|
-
throw new RangeError("native spike artifact size is invalid");
|
|
38
|
-
if (!/^[a-f0-9]{40}$/.test(value.source["a1Commit"]))
|
|
39
|
-
throw new TypeError(PRODUCT_TEXT.diagnostic("native spike commit is invalid"));
|
|
40
|
-
if (value.source.libghosttyVtCommit !== EXPECTED_LIBGHOSTTY_VT ||
|
|
41
|
-
value.source.portablePtyVersion !== EXPECTED_PORTABLE_PTY ||
|
|
42
|
-
value.source.crosstermVersion !== EXPECTED_CROSSTERM) {
|
|
43
|
-
throw new TypeError("native spike terminal-core sources do not match the pinned provenance");
|
|
44
|
-
}
|
|
45
|
-
if (value.environment.platform !== "windows")
|
|
46
|
-
throw new TypeError("native spike evidence must identify Windows");
|
|
47
|
-
if (!["x64", "arm64"].includes(value.environment.architecture))
|
|
48
|
-
throw new TypeError("native spike architecture is invalid");
|
|
49
|
-
if (!/^0\.15\.(?:[2-9]|[1-9][0-9])$/.test(value.environment.zig))
|
|
50
|
-
throw new TypeError("native spike Zig version must be 0.15.2 or newer");
|
|
51
|
-
if (value.environment.isolatedWorker !== true)
|
|
52
|
-
throw new TypeError("native spike evidence requires an isolated worker");
|
|
53
|
-
const expected = new Set(NATIVE_SPIKE_WORKLOADS);
|
|
54
|
-
const seen = new Set();
|
|
55
|
-
for (const workload of value.workloads) {
|
|
56
|
-
if (!expected.has(workload.id))
|
|
57
|
-
throw new TypeError(`unknown native spike workload: ${String(workload.id)}`);
|
|
58
|
-
if (seen.has(workload.id))
|
|
59
|
-
throw new TypeError(`duplicate native spike workload: ${workload.id}`);
|
|
60
|
-
seen.add(workload.id);
|
|
61
|
-
if (!["passed", "failed", "not-run"].includes(workload.status))
|
|
62
|
-
throw new TypeError("native spike workload status is invalid");
|
|
63
|
-
assertNonNegative(workload.durationMs, "native spike workload duration");
|
|
64
|
-
assertJsonObject(workload.details, "native spike workload details");
|
|
65
|
-
}
|
|
66
|
-
if (seen.size !== expected.size)
|
|
67
|
-
throw new TypeError("native spike evidence is missing one or more mandatory workloads");
|
|
68
|
-
assertMetric(value.latency.inputToProcessMs, "input-to-process latency");
|
|
69
|
-
assertMetric(value.latency.outputToPresentMs, "output-to-present latency");
|
|
70
|
-
assertNonNegative(value.paint.requestedFrames, "requested frames");
|
|
71
|
-
assertNonNegative(value.paint.presentedFrames, "presented frames");
|
|
72
|
-
assertNonNegative(value.paint.coalescedFrames, "coalesced frames");
|
|
73
|
-
assertNonNegative(value.paint.missedFrames, "missed frames");
|
|
74
|
-
assertNonNegative(value.paint.resizePaintGaps, "resize paint gaps");
|
|
75
|
-
if (value.paint.presentedFrames > value.paint.requestedFrames)
|
|
76
|
-
throw new RangeError("presented frames cannot exceed requested frames");
|
|
77
|
-
if (value.paint.missedFrames > value.paint.requestedFrames)
|
|
78
|
-
throw new RangeError("missed frames cannot exceed requested frames");
|
|
79
|
-
assertNonNegative(value.resources.cpuPercentMaximum, "maximum CPU observation");
|
|
80
|
-
assertNonNegative(value.resources.residentMemoryBytesMaximum, "maximum resident memory observation");
|
|
81
|
-
if (value.resources.gpuMemoryBytesMaximum !== null)
|
|
82
|
-
assertNonNegative(value.resources.gpuMemoryBytesMaximum, "maximum GPU memory observation");
|
|
83
|
-
if (value.physical.activeWorkstationAutomation !== false)
|
|
84
|
-
throw new TypeError("active-workstation automation is forbidden");
|
|
85
|
-
if (!["not-run", "manual", "isolated-worker"].includes(value.physical.method))
|
|
86
|
-
throw new TypeError("native spike physical method is invalid");
|
|
87
|
-
if (!["pending", "accepted", "rejected"].includes(value.physical.verdict))
|
|
88
|
-
throw new TypeError("native spike physical verdict is invalid");
|
|
89
|
-
if (value.physical.verdict === "accepted" && value.physical.method === "not-run")
|
|
90
|
-
throw new TypeError("physical acceptance requires manual or isolated-worker evidence");
|
|
91
|
-
if (value.physical.verdict !== "pending" && !value.physical.evidenceReference)
|
|
92
|
-
throw new TypeError("non-pending physical verdict requires evidence reference");
|
|
93
|
-
const failed = value.workloads.some(workload => workload.status === "failed");
|
|
94
|
-
const incomplete = value.workloads.some(workload => workload.status === "not-run");
|
|
95
|
-
const expectedTechnical = failed ? "failed" : incomplete ? "incomplete" : "passed";
|
|
96
|
-
if (value.summary.technical !== expectedTechnical)
|
|
97
|
-
throw new TypeError(`native spike technical summary must be ${expectedTechnical}`);
|
|
98
|
-
if (value.summary.overall === "accepted" && (expectedTechnical !== "passed" || value.physical.verdict !== "accepted")) {
|
|
99
|
-
throw new TypeError("overall native spike acceptance requires technical and physical acceptance");
|
|
100
|
-
}
|
|
101
|
-
if (value.summary.overall === "rejected" && !failed && value.physical.verdict !== "rejected") {
|
|
102
|
-
throw new TypeError("overall native spike rejection requires a failed workload or physical rejection");
|
|
103
|
-
}
|
|
104
|
-
assertNoForbiddenEvidenceKeys(value);
|
|
105
|
-
}
|
|
106
|
-
function assertMetric(metric, name) {
|
|
107
|
-
assertNonNegative(metric.minimum, `${name} minimum`);
|
|
108
|
-
assertNonNegative(metric.p50, `${name} p50`);
|
|
109
|
-
assertNonNegative(metric.p95, `${name} p95`);
|
|
110
|
-
assertNonNegative(metric.maximum, `${name} maximum`);
|
|
111
|
-
if (!Number.isSafeInteger(metric.samples) || metric.samples <= 0)
|
|
112
|
-
throw new RangeError(`${name} sample count is invalid`);
|
|
113
|
-
if (!(metric.minimum <= metric.p50 && metric.p50 <= metric.p95 && metric.p95 <= metric.maximum)) {
|
|
114
|
-
throw new RangeError(`${name} measurements must be ordered`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function assertNoForbiddenEvidenceKeys(value) {
|
|
118
|
-
if (Array.isArray(value)) {
|
|
119
|
-
for (const item of value)
|
|
120
|
-
assertNoForbiddenEvidenceKeys(item);
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
if (typeof value !== "object" || value === null)
|
|
124
|
-
return;
|
|
125
|
-
for (const [key, item] of Object.entries(value)) {
|
|
126
|
-
if (FORBIDDEN_EVIDENCE_KEYS.has(key))
|
|
127
|
-
throw new TypeError(`native spike evidence may not contain hot-path payload field ${key}`);
|
|
128
|
-
assertNoForbiddenEvidenceKeys(item);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
function assertNonNegative(value, name) {
|
|
132
|
-
if (!Number.isFinite(value) || value < 0)
|
|
133
|
-
throw new RangeError(`${name} must be a non-negative finite number`);
|
|
134
|
-
}
|
|
135
|
-
function assertJsonObject(value, name) {
|
|
136
|
-
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
137
|
-
throw new TypeError(`${name} must be an object`);
|
|
138
|
-
const encoded = JSON.stringify(value);
|
|
139
|
-
if (!encoded || encoded.length > 64_000)
|
|
140
|
-
throw new RangeError(`${name} exceeds the bounded evidence detail limit`);
|
|
141
|
-
}
|