@nklisch/pi-enhanced 0.1.11 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/node_modules/@nklisch/pi-clearance/native/clearance-core.darwin-arm64.node +0 -0
- package/node_modules/@nklisch/pi-clearance/native/clearance-core.darwin-x64.node +0 -0
- package/node_modules/@nklisch/pi-clearance/native/clearance-core.linux-arm64-gnu.node +0 -0
- package/node_modules/@nklisch/pi-clearance/native/clearance-core.win32-x64-msvc.node +0 -0
- package/node_modules/@nklisch/pi-plugins/README.md +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/adoption-contract.d.ts +0 -6
- package/node_modules/@nklisch/pi-plugins/dist/application/agent-orientation.d.ts +66 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/agent-orientation.js +223 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/agent-orientation.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-trust-continuity.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-trust-continuity.js +15 -33
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-trust-continuity.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js +17 -20
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.d.ts +3 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.d.ts +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.js +5 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/convergence-service.d.ts +98 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/convergence-service.js +270 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/convergence-service.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.d.ts +3 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.js +18 -20
- package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/hook-visibility-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/hook-visibility-service.js +3 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/hook-visibility-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.d.ts +25 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.js +5 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.js +3 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/inspection-contract.d.ts +0 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/installed-revision-descriptor.d.ts +0 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.d.ts +0 -9
- package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.js +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-contract.d.ts +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.d.ts +4 -7
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js +88 -122
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.js +56 -94
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.js +7 -6
- package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.d.ts +3 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.js +8 -11
- package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.d.ts +7 -6
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.js +4 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js +2 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.js +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-help.d.ts +5 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-install.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.js +4 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js +13 -21
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-operation.d.ts +122 -1124
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.d.ts +8 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js +4 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-progress.d.ts +6 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.d.ts +30 -7
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js +4 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-control-safe-projection.d.ts +0 -6
- package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.d.ts +49 -49
- package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js +10 -10
- package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.d.ts +0 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js +13 -11
- package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.d.ts +55 -70
- package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.js +4 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.js +30 -11
- package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js +46 -35
- package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.d.ts +362 -1284
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js +11 -12
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.js +4 -26
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.d.ts +79 -235
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.js +26 -41
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js +23 -68
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.d.ts +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.js +0 -18
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.d.ts +0 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.js +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.d.ts +2 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js +5 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.js +4 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.d.ts +30 -57
- package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.js +9 -32
- package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.d.ts +57 -75
- package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js +293 -583
- package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/artifact-gc.d.ts +21 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/artifact-gc.js +2 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/artifact-gc.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/automatic-update-lifecycle.d.ts +5 -6
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/installed-plugin-loader.d.ts +0 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.d.ts +80 -13
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.js +6 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-runtime.d.ts +0 -16
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-input.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-inspection-evidence.d.ts +4 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/pending-data-deletion.d.ts +26 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/pending-data-deletion.js +8 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/pending-data-deletion.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.d.ts +12 -9
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.js +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.js +1 -10
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.js +6 -10
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.d.ts +2 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.js +9 -8
- package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/state-contract.d.ts +16 -32
- package/node_modules/@nklisch/pi-plugins/dist/application/state-transaction.d.ts +48 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/state-transaction.js +107 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/state-transaction.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.d.ts +1725 -4546
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js +3 -22
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.d.ts +1 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.js +1 -5
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js +33 -122
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.d.ts +0 -20
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.js +1 -23
- package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.d.ts +0 -7
- package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.js +5 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.js +6 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/agent-orientation-facts.d.ts +42 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/agent-orientation-facts.js +223 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/agent-orientation-facts.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js +12 -18
- package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.d.ts +3 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.js +10 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.d.ts +3 -7
- package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js +64 -153
- package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.d.ts +2 -3
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.d.ts +3 -7
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.js +4 -8
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.d.ts +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.d.ts +2 -5
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.js +70 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.d.ts +12 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js +177 -66
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.d.ts +2 -4
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.js +24 -43
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.js +4 -4
- package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.d.ts +3 -3
- package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.js +6 -6
- package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.d.ts +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js +4 -5
- package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-plugin-host-contract.d.ts +5 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.d.ts +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.js +6 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.d.ts +15 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js +228 -154
- package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.d.ts +6 -0
- package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.js +13 -3
- package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-policy.d.ts +0 -4
- package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility.d.ts +0 -6
- package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.d.ts +0 -6
- package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.js +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/domain/errors.d.ts +0 -6
- package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace.d.ts +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/config-state.d.ts +2 -6
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.d.ts +4 -4
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.js +5 -7
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/project-state.d.ts +2 -4
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.d.ts +1 -8
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.js +0 -9
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/domain/state/registry.d.ts +4 -8
- package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.d.ts +5 -13
- package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js +2 -3
- package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/index.d.ts +16 -38
- package/node_modules/@nklisch/pi-plugins/dist/index.js +8 -22
- package/node_modules/@nklisch/pi-plugins/dist/index.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/cleanup/pending-data-deletion.d.ts +8 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/cleanup/pending-data-deletion.js +112 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/cleanup/pending-data-deletion.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/artifact-gc.d.ts +17 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/artifact-gc.js +143 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/artifact-gc.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/create-node-convergence.d.ts +16 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/create-node-convergence.js +14 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/create-node-convergence.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.d.ts +0 -8
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.d.ts +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.js +1 -24
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-convergence-migration.d.ts +33 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-convergence-migration.js +416 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-convergence-migration.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.d.ts +10 -0
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js +31 -4
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/agent-orientation-publisher.d.ts +17 -0
- package/node_modules/@nklisch/pi-plugins/dist/pi/agent-orientation-publisher.js +81 -0
- package/node_modules/@nklisch/pi-plugins/dist/pi/agent-orientation-publisher.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js +8 -3
- package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.js +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js +9 -22
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-flow.d.ts +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.d.ts +2 -2
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js +7 -7
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.d.ts +8 -0
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js +7 -0
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js +6 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js +11 -22
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.d.ts +1 -2
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.js +1 -3
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js +2 -4
- package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js +5 -7
- package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.d.ts +6 -6
- package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.js +36 -6
- package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.js +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/lifecycle-participant.d.ts +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/mcp-runtime-binding-provider.d.ts +12 -0
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/mcp-runtime-binding-provider.js +43 -0
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/mcp-runtime-binding-provider.js.map +1 -0
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.d.ts +12 -1
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js +27 -10
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js.map +1 -1
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-runtime.js +1 -1
- package/node_modules/@nklisch/pi-plugins/package.json +2 -2
- package/package.json +3 -3
- package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.d.ts +0 -79
- package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.js +0 -424
- package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.d.ts +0 -19
- package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.js +0 -235
- package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.d.ts +0 -79
- package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js +0 -236
- package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.d.ts +0 -19
- package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.js +0 -12
- package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.d.ts +0 -25
- package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.js +0 -39
- package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.d.ts +0 -5020
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.js +0 -129
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.d.ts +0 -9
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.js +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.d.ts +0 -29
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.js +0 -4
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.d.ts +0 -65
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.js +0 -16
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.d.ts +0 -43
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.js +0 -12
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.d.ts +0 -15
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.js +0 -2
- package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.d.ts +0 -1078
- package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.js +0 -126
- package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.d.ts +0 -39
- package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.js +0 -170
- package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.d.ts +0 -52
- package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.js +0 -228
- package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.d.ts +0 -23
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.js +0 -82
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.d.ts +0 -15
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js +0 -35
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.d.ts +0 -7
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js +0 -95
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.d.ts +0 -3
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.js +0 -83
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.d.ts +0 -3
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.js +0 -178
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.d.ts +0 -7
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js +0 -73
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.d.ts +0 -28
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js +0 -445
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.d.ts +0 -5
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.js +0 -17
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.d.ts +0 -15
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js +0 -292
- package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js.map +0 -1
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.d.ts +0 -18
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.js +0 -180
- package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.js.map +0 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { runScopedMutation } from "./state-transaction.js";
|
|
3
|
+
import { PENDING_DELETE_GRACE_MS } from "./ports/pending-data-deletion.js";
|
|
4
|
+
import { createInstalledUserStateDocument } from "../domain/state/installed-state.js";
|
|
5
|
+
import { createProjectLocalStateDocument } from "../domain/state/project-state.js";
|
|
6
|
+
import { parseStateMutation } from "./state-contract.js";
|
|
7
|
+
import { contentStoreKeyDigest, createPluginStoreIdentityFromEvidence, createMarketplaceStoreIdentityFromEvidence } from "../domain/content-store.js";
|
|
8
|
+
export const ConvergenceDiagnosticCodeSchema = z.enum([
|
|
9
|
+
"MARKER_REPLAY_FAILED",
|
|
10
|
+
"MARKER_RETAINED",
|
|
11
|
+
"MARKER_SCOPE_UNAVAILABLE",
|
|
12
|
+
"INVENTORY_UNAVAILABLE",
|
|
13
|
+
"STATE_CORRUPT",
|
|
14
|
+
"BUDGET_EXHAUSTED",
|
|
15
|
+
"ORPHAN_RETAINED",
|
|
16
|
+
"PRUNE_FAILED",
|
|
17
|
+
]);
|
|
18
|
+
export const ConvergenceResultSchema = z.object({
|
|
19
|
+
kind: z.enum(["completed", "deferred", "blocked"]),
|
|
20
|
+
scope: z.union([z.object({ kind: z.literal("user") }).strict(), z.object({ kind: z.literal("project"), projectKey: z.string() }).strict()]).optional(),
|
|
21
|
+
plugin: z.string().optional(),
|
|
22
|
+
code: ConvergenceDiagnosticCodeSchema,
|
|
23
|
+
}).strict().readonly();
|
|
24
|
+
export const ConvergenceReportSchema = z.object({ results: z.array(ConvergenceResultSchema).readonly(), deferred: z.boolean(), processed: z.number().int().nonnegative() }).strict().readonly();
|
|
25
|
+
export const DefaultConvergencePolicy = Object.freeze({ requiredBudgetMs: 2_000, maxItems: 128, stagingGraceMs: 7 * 86_400_000, orphanGraceMs: 7 * 86_400_000 });
|
|
26
|
+
function records(snapshot) { return "installed" in snapshot ? snapshot.installed.plugins : snapshot.project.plugins; }
|
|
27
|
+
function replaceRecords(snapshot, next, sha256) {
|
|
28
|
+
if ("installed" in snapshot) {
|
|
29
|
+
const installed = createInstalledUserStateDocument({ ...snapshot.installed, generation: snapshot.generation, plugins: next }, sha256);
|
|
30
|
+
return parseStateMutation({ scope: snapshot.scope, expectedGeneration: snapshot.generation, replace: { installed } }, sha256);
|
|
31
|
+
}
|
|
32
|
+
const project = createProjectLocalStateDocument({ ...snapshot.project, generation: snapshot.generation, plugins: next }, snapshot.scope, sha256);
|
|
33
|
+
return parseStateMutation({ scope: snapshot.scope, expectedGeneration: snapshot.generation, replace: { project } }, sha256);
|
|
34
|
+
}
|
|
35
|
+
function scopeRef(scope) { return scope.kind === "user" ? { kind: "user" } : { kind: "project", projectKey: scope.projectKey }; }
|
|
36
|
+
function sameScope(left, right) {
|
|
37
|
+
return left.kind === right.kind && (left.kind === "user" || (right.kind === "project" && left.projectKey === right.projectKey));
|
|
38
|
+
}
|
|
39
|
+
function contextForMarker(marker, inventory) {
|
|
40
|
+
return inventory?.scopes.find((candidate) => sameScope(scopeRef(candidate), marker.scope));
|
|
41
|
+
}
|
|
42
|
+
function prunedRecords(snapshot) {
|
|
43
|
+
const current = records(snapshot);
|
|
44
|
+
const next = current.map((record) => {
|
|
45
|
+
const keep = new Set([record.selectedRevision, ...(record.previousRevision === undefined ? [] : [record.previousRevision])]);
|
|
46
|
+
const revisions = record.revisions.filter((revision) => keep.has(revision.revision));
|
|
47
|
+
return revisions.length === record.revisions.length ? record : { ...record, revisions };
|
|
48
|
+
});
|
|
49
|
+
return { records: next, changed: next.some((record, index) => JSON.stringify(record) !== JSON.stringify(current[index])) };
|
|
50
|
+
}
|
|
51
|
+
async function replayMarkers(input) {
|
|
52
|
+
const now = input.now ?? Date.now();
|
|
53
|
+
const results = [];
|
|
54
|
+
const record = (entry) => { results.push(entry); input.onProcessed?.(); };
|
|
55
|
+
for (const marker of await input.markers.list(input.signal)) {
|
|
56
|
+
if (input.shouldStop())
|
|
57
|
+
return { entries: results, exhausted: true };
|
|
58
|
+
input.signal.throwIfAborted();
|
|
59
|
+
const evidence = await input.scopeEvidence(marker);
|
|
60
|
+
if (evidence === "unavailable") {
|
|
61
|
+
record({ marker, outcome: "retained-scope" });
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (evidence === "installed") {
|
|
65
|
+
if (now - marker.requestedAt < PENDING_DELETE_GRACE_MS) {
|
|
66
|
+
record({ marker, outcome: "retained-age" });
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
await input.markers.remove(marker);
|
|
71
|
+
record({ marker, outcome: "discarded-installed" });
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
record({ marker, outcome: "retained-failure" });
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
await input.data.remove({ scope: marker.scope, plugin: marker.plugin, dataRef: marker.dataRef, confirmation: "delete-confirmed", capability: {} }, input.signal);
|
|
80
|
+
await input.markers.remove(marker);
|
|
81
|
+
record({ marker, outcome: "deleted" });
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
record({ marker, outcome: "retained-failure" });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { entries: results, exhausted: false };
|
|
88
|
+
}
|
|
89
|
+
export function createConvergenceService(dependencies) {
|
|
90
|
+
if (dependencies === null || typeof dependencies !== "object" || typeof dependencies.state?.read !== "function" || typeof dependencies.state?.commit !== "function" || typeof dependencies.inventory?.discover !== "function" || typeof dependencies.sha256 !== "function")
|
|
91
|
+
throw new TypeError("convergence dependencies are required");
|
|
92
|
+
const policy = { ...DefaultConvergencePolicy, ...(dependencies.policy ?? {}) };
|
|
93
|
+
async function sweep(request) {
|
|
94
|
+
const signal = request.signal ?? new AbortController().signal;
|
|
95
|
+
signal.throwIfAborted();
|
|
96
|
+
const monotonicNow = () => dependencies.clock?.monotonicMilliseconds() ?? Date.now();
|
|
97
|
+
const started = monotonicNow();
|
|
98
|
+
const now = dependencies.clock?.nowEpochMilliseconds() ?? Date.now();
|
|
99
|
+
let processed = 0;
|
|
100
|
+
let deferred = false;
|
|
101
|
+
const results = [];
|
|
102
|
+
const shouldStop = () => processed >= policy.maxItems || monotonicNow() - started >= policy.requiredBudgetMs;
|
|
103
|
+
let inventory;
|
|
104
|
+
try {
|
|
105
|
+
inventory = await dependencies.inventory.discover(signal);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
if (signal.aborted)
|
|
109
|
+
throw error;
|
|
110
|
+
deferred = true;
|
|
111
|
+
results.push({ kind: "deferred", code: "INVENTORY_UNAVAILABLE" });
|
|
112
|
+
}
|
|
113
|
+
const discoveredScopes = inventory?.scopes ?? request.scopes;
|
|
114
|
+
if (dependencies.dataRemoval !== undefined) {
|
|
115
|
+
let replayed = 0;
|
|
116
|
+
try {
|
|
117
|
+
const markerResults = await replayMarkers({
|
|
118
|
+
markers: dependencies.pendingDeletes,
|
|
119
|
+
scopeEvidence: async (marker) => {
|
|
120
|
+
const context = contextForMarker(marker, inventory);
|
|
121
|
+
if (context === undefined)
|
|
122
|
+
return "unavailable";
|
|
123
|
+
try {
|
|
124
|
+
const loaded = await dependencies.state.read(context, signal);
|
|
125
|
+
if (!loaded.ok || (loaded.snapshot.corruptions?.length ?? 0) > 0)
|
|
126
|
+
return "unavailable";
|
|
127
|
+
return records(loaded.snapshot).some((record) => record.plugin === marker.plugin) ? "installed" : "absent";
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (signal.aborted)
|
|
131
|
+
throw error;
|
|
132
|
+
return "unavailable";
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
data: dependencies.dataRemoval,
|
|
136
|
+
signal,
|
|
137
|
+
now,
|
|
138
|
+
shouldStop: () => processed + replayed >= policy.maxItems || monotonicNow() - started >= policy.requiredBudgetMs,
|
|
139
|
+
onProcessed: () => { replayed += 1; },
|
|
140
|
+
});
|
|
141
|
+
for (const entry of markerResults.entries) {
|
|
142
|
+
processed += 1;
|
|
143
|
+
if (entry.outcome === "retained-age") {
|
|
144
|
+
deferred = true;
|
|
145
|
+
results.push({ kind: "deferred", scope: entry.marker.scope, plugin: entry.marker.plugin, code: "MARKER_RETAINED" });
|
|
146
|
+
}
|
|
147
|
+
else if (entry.outcome === "retained-scope") {
|
|
148
|
+
deferred = true;
|
|
149
|
+
results.push({ kind: "deferred", scope: entry.marker.scope, plugin: entry.marker.plugin, code: "MARKER_SCOPE_UNAVAILABLE" });
|
|
150
|
+
}
|
|
151
|
+
else if (entry.outcome === "retained-failure") {
|
|
152
|
+
deferred = true;
|
|
153
|
+
results.push({ kind: "deferred", scope: entry.marker.scope, plugin: entry.marker.plugin, code: "MARKER_REPLAY_FAILED" });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (markerResults.exhausted) {
|
|
157
|
+
deferred = true;
|
|
158
|
+
results.push({ kind: "deferred", code: "BUDGET_EXHAUSTED" });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (signal.aborted)
|
|
163
|
+
throw error;
|
|
164
|
+
deferred = true;
|
|
165
|
+
results.push({ kind: "deferred", code: "MARKER_REPLAY_FAILED" });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
for (const scope of request.scopes) {
|
|
169
|
+
signal.throwIfAborted();
|
|
170
|
+
if (shouldStop()) {
|
|
171
|
+
deferred = true;
|
|
172
|
+
results.push({ kind: "deferred", scope: scopeRef(scope), code: "BUDGET_EXHAUSTED" });
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const mutation = await runScopedMutation(dependencies.state, scope, (snapshot) => {
|
|
177
|
+
const pruned = prunedRecords(snapshot);
|
|
178
|
+
if (!pruned.changed)
|
|
179
|
+
return { kind: "no-op", value: undefined };
|
|
180
|
+
return { kind: "commit", mutation: replaceRecords(snapshot, pruned.records, dependencies.sha256), value: undefined };
|
|
181
|
+
}, signal);
|
|
182
|
+
if (mutation.kind !== "committed" && mutation.kind !== "no-op") {
|
|
183
|
+
deferred = true;
|
|
184
|
+
results.push({ kind: "deferred", scope: scopeRef(scope), code: "PRUNE_FAILED" });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
if (signal.aborted)
|
|
189
|
+
throw error;
|
|
190
|
+
deferred = true;
|
|
191
|
+
results.push({ kind: "deferred", scope: scopeRef(scope), code: "PRUNE_FAILED" });
|
|
192
|
+
}
|
|
193
|
+
processed += 1;
|
|
194
|
+
}
|
|
195
|
+
if (dependencies.artifacts !== undefined && !shouldStop()) {
|
|
196
|
+
const referenced = new Set();
|
|
197
|
+
let referenceEvidenceComplete = inventory !== undefined && inventory.complete;
|
|
198
|
+
for (const scope of discoveredScopes) {
|
|
199
|
+
try {
|
|
200
|
+
const loaded = await dependencies.state.read(scope, signal);
|
|
201
|
+
if (!loaded.ok) {
|
|
202
|
+
referenceEvidenceComplete = false;
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if ((loaded.snapshot.corruptions?.length ?? 0) > 0)
|
|
206
|
+
referenceEvidenceComplete = false;
|
|
207
|
+
for (const record of records(loaded.snapshot)) {
|
|
208
|
+
for (const revision of record.revisions) {
|
|
209
|
+
const identity = createPluginStoreIdentityFromEvidence({ sourceHash: revision.evidence.source.sourceHash, binding: revision.revision }, dependencies.sha256);
|
|
210
|
+
referenced.add(`revision:${contentStoreKeyDigest(identity)}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const marketplaces = "installed" in loaded.snapshot ? loaded.snapshot.installed.marketplaces : loaded.snapshot.project.marketplaces;
|
|
214
|
+
for (const marketplace of marketplaces) {
|
|
215
|
+
const identity = createMarketplaceStoreIdentityFromEvidence({ sourceHash: marketplace.source.sourceHash, revision: marketplace.source.revision, binding: marketplace.binding }, dependencies.sha256);
|
|
216
|
+
referenced.add(`marketplace:${contentStoreKeyDigest(identity)}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
if (signal.aborted)
|
|
221
|
+
throw error;
|
|
222
|
+
referenceEvidenceComplete = false;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const retainKinds = new Set();
|
|
226
|
+
if (!referenceEvidenceComplete) {
|
|
227
|
+
// Missing a scope or an unreadable scope can hide a live reference in
|
|
228
|
+
// each state-backed category. Staging remains independently safe to
|
|
229
|
+
// collect because it is protected by its own grace period.
|
|
230
|
+
retainKinds.add("revision");
|
|
231
|
+
retainKinds.add("marketplace");
|
|
232
|
+
retainKinds.add("projection");
|
|
233
|
+
deferred = true;
|
|
234
|
+
results.push({ kind: "deferred", code: "ORPHAN_RETAINED" });
|
|
235
|
+
}
|
|
236
|
+
let projectionReferences;
|
|
237
|
+
try {
|
|
238
|
+
projectionReferences = dependencies.projectionReferences?.();
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
projectionReferences = undefined;
|
|
242
|
+
deferred = true;
|
|
243
|
+
results.push({ kind: "deferred", code: "ORPHAN_RETAINED" });
|
|
244
|
+
}
|
|
245
|
+
if (projectionReferences === undefined)
|
|
246
|
+
retainKinds.add("projection");
|
|
247
|
+
else
|
|
248
|
+
for (const key of projectionReferences)
|
|
249
|
+
referenced.add(`projection:${key}`);
|
|
250
|
+
try {
|
|
251
|
+
const gc = await dependencies.artifacts.sweep({ referenced, ...(retainKinds.size === 0 ? {} : { retainKinds: [...retainKinds] }), signal });
|
|
252
|
+
if (gc.deferred || gc.incompleteEvidence)
|
|
253
|
+
deferred = true;
|
|
254
|
+
if (gc.incompleteEvidence && referenceEvidenceComplete)
|
|
255
|
+
results.push({ kind: "deferred", code: "ORPHAN_RETAINED" });
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
if (signal.aborted)
|
|
259
|
+
throw error;
|
|
260
|
+
deferred = true;
|
|
261
|
+
results.push({ kind: "deferred", code: "ORPHAN_RETAINED" });
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (shouldStop())
|
|
265
|
+
deferred = true;
|
|
266
|
+
return ConvergenceReportSchema.parse({ results, deferred, processed });
|
|
267
|
+
}
|
|
268
|
+
return Object.freeze({ sweep });
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=convergence-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convergence-service.js","sourceRoot":"","sources":["../../src/application/convergence-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { type ScopeContext } from "../domain/state/scope.js";
|
|
2
2
|
import { type TrustCandidate } from "../domain/trust-policy.js";
|
|
3
|
-
import type { GenerationMutationCoordinator } from "./generation-mutation-coordinator.js";
|
|
4
3
|
import type { LifecycleStateStore } from "./ports/lifecycle-state-store.js";
|
|
5
4
|
import type { ProjectRootAuthorityPort, TrustedProjectRoot } from "./ports/project-root-authority.js";
|
|
6
5
|
import { type ProjectTrustPort } from "./ports/project-trust.js";
|
|
7
6
|
import type { Sha256 } from "../domain/source.js";
|
|
8
|
-
import type
|
|
7
|
+
import { type Generation } from "../domain/state/config-state.js";
|
|
9
8
|
import type { TrustSubjectRef } from "../domain/state/references.js";
|
|
10
9
|
export type ExactTrustGrantResult = Readonly<{
|
|
11
10
|
kind: "recorded" | "already-recorded";
|
|
@@ -20,9 +19,8 @@ export type ExactTrustGrantResult = Readonly<{
|
|
|
20
19
|
recorded?: true;
|
|
21
20
|
generation?: Generation;
|
|
22
21
|
}> | Readonly<{
|
|
23
|
-
kind: "
|
|
22
|
+
kind: "unavailable";
|
|
24
23
|
subject: TrustSubjectRef;
|
|
25
|
-
committed?: Generation;
|
|
26
24
|
}>;
|
|
27
25
|
export interface ExactTrustGrantService {
|
|
28
26
|
grant(request: Readonly<{
|
|
@@ -33,7 +31,7 @@ export interface ExactTrustGrantService {
|
|
|
33
31
|
}
|
|
34
32
|
export type ExactTrustGrantDependencies = Readonly<{
|
|
35
33
|
state: LifecycleStateStore;
|
|
36
|
-
mutations:
|
|
34
|
+
mutations: LifecycleStateStore;
|
|
37
35
|
projectTrust: ProjectTrustPort;
|
|
38
36
|
projectRoots: ProjectRootAuthorityPort;
|
|
39
37
|
sha256: Sha256;
|
|
@@ -4,8 +4,9 @@ import { createTrustStateDocument } from "../domain/state/trust-state.js";
|
|
|
4
4
|
import { createScopeContext, toScopeReference } from "../domain/state/scope.js";
|
|
5
5
|
import { grantTrust, verifyTrustCandidate } from "../domain/trust-policy.js";
|
|
6
6
|
import { parseStateMutation } from "./state-contract.js";
|
|
7
|
-
import {
|
|
7
|
+
import { runScopedMutation } from "./state-transaction.js";
|
|
8
8
|
import { ProjectTrustAssessmentSchema } from "./ports/project-trust.js";
|
|
9
|
+
import { GenerationSchema } from "../domain/state/config-state.js";
|
|
9
10
|
class AlreadyRecorded extends Error {
|
|
10
11
|
generation;
|
|
11
12
|
constructor(generation) {
|
|
@@ -61,7 +62,7 @@ export function createExactTrustGrantService(dependencies) {
|
|
|
61
62
|
return { kind: "project-stale" };
|
|
62
63
|
}
|
|
63
64
|
catch {
|
|
64
|
-
return { kind: "
|
|
65
|
+
return { kind: "unavailable", subject: request.candidate.subject };
|
|
65
66
|
}
|
|
66
67
|
const status = await projectStatus(candidate, scope, request.projectRoot, dependencies, signal);
|
|
67
68
|
if (status !== "trusted")
|
|
@@ -73,39 +74,40 @@ export function createExactTrustGrantService(dependencies) {
|
|
|
73
74
|
catch (error) {
|
|
74
75
|
if (signal.aborted)
|
|
75
76
|
throw signal.reason ?? error;
|
|
76
|
-
return { kind: "
|
|
77
|
+
return { kind: "unavailable", subject: candidate.subject };
|
|
77
78
|
}
|
|
78
79
|
if (!loaded.ok || !("trust" in loaded.snapshot))
|
|
79
|
-
return { kind: "
|
|
80
|
+
return { kind: "unavailable", subject: candidate.subject };
|
|
80
81
|
if (exactGranted(loaded.snapshot.trust.records, candidate)) {
|
|
81
82
|
return { kind: "already-recorded", subject: candidate.subject, generation: loaded.snapshot.generation };
|
|
82
83
|
}
|
|
83
84
|
const expected = loaded.snapshot.generation;
|
|
84
85
|
try {
|
|
85
|
-
const result = await dependencies.mutations
|
|
86
|
-
if (!("trust" in
|
|
86
|
+
const result = await runScopedMutation(dependencies.mutations, { kind: "user" }, (snapshot) => {
|
|
87
|
+
if (!("trust" in snapshot))
|
|
87
88
|
throw new Error("trust authority is not user state");
|
|
88
|
-
if (exactGranted(
|
|
89
|
-
throw new AlreadyRecorded(
|
|
89
|
+
if (exactGranted(snapshot.trust.records, candidate))
|
|
90
|
+
throw new AlreadyRecorded(snapshot.generation);
|
|
90
91
|
const record = grantTrust(candidate, dependencies.sha256);
|
|
91
92
|
const records = [
|
|
92
|
-
...
|
|
93
|
+
...snapshot.trust.records.filter((entry) => entry.subject !== candidate.subject),
|
|
93
94
|
record,
|
|
94
95
|
].sort((left, right) => compareUtf8(left.subject, right.subject));
|
|
95
96
|
const trust = createTrustStateDocument({
|
|
96
97
|
schemaVersion: 1,
|
|
97
|
-
generation:
|
|
98
|
+
generation: snapshot.generation,
|
|
98
99
|
records,
|
|
99
100
|
}, dependencies.sha256);
|
|
100
101
|
return {
|
|
102
|
+
kind: "commit",
|
|
101
103
|
mutation: parseStateMutation({
|
|
102
104
|
scope: { kind: "user" },
|
|
103
|
-
expectedGeneration:
|
|
105
|
+
expectedGeneration: snapshot.generation,
|
|
104
106
|
replace: { trust },
|
|
105
107
|
}, dependencies.sha256),
|
|
106
108
|
value: candidate.subject,
|
|
107
109
|
...(scope.kind === "project" ? {
|
|
108
|
-
|
|
110
|
+
recheckAuthority: async () => {
|
|
109
111
|
const current = await projectStatus(candidate, scope, request.projectRoot, dependencies, signal);
|
|
110
112
|
if (current !== "trusted")
|
|
111
113
|
throw Object.assign(new Error(current), { code: current });
|
|
@@ -119,17 +121,13 @@ export function createExactTrustGrantService(dependencies) {
|
|
|
119
121
|
return { kind: finalStatus, recorded: true, generation: result.snapshot.generation };
|
|
120
122
|
return { kind: "recorded", subject: candidate.subject, generation: result.snapshot.generation };
|
|
121
123
|
}
|
|
122
|
-
if (result.kind === "stale
|
|
123
|
-
return { kind: "stale", expected
|
|
124
|
-
}
|
|
125
|
-
return { kind: "recovery-required", subject: candidate.subject, ...(result.actual === undefined ? {} : { committed: result.actual }) };
|
|
124
|
+
if (result.kind === "stale")
|
|
125
|
+
return { kind: "stale", expected, actual: GenerationSchema.parse(result.actual ?? expected) };
|
|
126
|
+
return { kind: "unavailable", subject: candidate.subject };
|
|
126
127
|
}
|
|
127
128
|
catch (error) {
|
|
128
129
|
if (error instanceof AlreadyRecorded)
|
|
129
130
|
return { kind: "already-recorded", subject: candidate.subject, generation: error.generation };
|
|
130
|
-
if (error instanceof CommittedMutationCleanupError) {
|
|
131
|
-
return { kind: "recovery-required", subject: candidate.subject, committed: error.committed.snapshot.generation };
|
|
132
|
-
}
|
|
133
131
|
if (signal.aborted)
|
|
134
132
|
throw signal.reason ?? error;
|
|
135
133
|
if (error !== null && typeof error === "object" && "code" in error) {
|
|
@@ -137,7 +135,7 @@ export function createExactTrustGrantService(dependencies) {
|
|
|
137
135
|
if (code === "project-untrusted" || code === "project-stale")
|
|
138
136
|
return { kind: code };
|
|
139
137
|
}
|
|
140
|
-
return { kind: "
|
|
138
|
+
return { kind: "unavailable", subject: candidate.subject };
|
|
141
139
|
}
|
|
142
140
|
},
|
|
143
141
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exact-trust-grant-service.js","sourceRoot":"","sources":["../../src/application/exact-trust-grant-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAyB,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAuB,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"exact-trust-grant-service.js","sourceRoot":"","sources":["../../src/application/exact-trust-grant-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type HookContextVisibility } from "../domain/hook-visibility.js";
|
|
2
2
|
import type { Sha256 } from "../domain/source.js";
|
|
3
|
-
import type { GenerationMutationCoordinator } from "./generation-mutation-coordinator.js";
|
|
4
3
|
import type { LifecycleStateStore } from "./ports/lifecycle-state-store.js";
|
|
5
4
|
import { type NativeHookVisibilityRequest, type NativeHookVisibilityResult } from "./hook-visibility-contract.js";
|
|
6
5
|
export interface HookVisibilityService {
|
|
@@ -11,7 +10,7 @@ export interface HookVisibilityService {
|
|
|
11
10
|
}
|
|
12
11
|
export type HookVisibilityServiceDependencies = Readonly<{
|
|
13
12
|
state: LifecycleStateStore;
|
|
14
|
-
mutations:
|
|
13
|
+
mutations: LifecycleStateStore;
|
|
15
14
|
sha256: Sha256;
|
|
16
15
|
}>;
|
|
17
16
|
/**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HostConfigDocumentSchema } from "../domain/state/config-state.js";
|
|
2
2
|
import { DefaultHookContextVisibility, HookContextVisibilitySchema } from "../domain/hook-visibility.js";
|
|
3
|
+
import { runScopedMutation } from "./state-transaction.js";
|
|
3
4
|
import { parseStateMutation } from "./state-contract.js";
|
|
4
5
|
import { NativeHookVisibilityRequestSchema, NativeHookVisibilityResultSchema, } from "./hook-visibility-contract.js";
|
|
5
6
|
/**
|
|
@@ -35,7 +36,7 @@ export function createHookVisibilityService(dependencies) {
|
|
|
35
36
|
return NativeHookVisibilityResultSchema.parse({ kind: "rejected", code: "STATE_UNAVAILABLE" });
|
|
36
37
|
}
|
|
37
38
|
const before = loaded.snapshot.config.hooks.contextVisibility;
|
|
38
|
-
const result = await dependencies.mutations
|
|
39
|
+
const result = await runScopedMutation(dependencies.mutations, { kind: "user" }, (snapshot) => {
|
|
39
40
|
if (!("config" in snapshot))
|
|
40
41
|
throw new Error("hook visibility requires user scope");
|
|
41
42
|
// Same replace pattern as the host precedence service: rebuild the
|
|
@@ -47,6 +48,7 @@ export function createHookVisibilityService(dependencies) {
|
|
|
47
48
|
hooks: { contextVisibility: visibility },
|
|
48
49
|
});
|
|
49
50
|
return {
|
|
51
|
+
kind: "commit",
|
|
50
52
|
mutation: parseStateMutation({
|
|
51
53
|
scope: snapshot.scope,
|
|
52
54
|
expectedGeneration: snapshot.generation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-visibility-service.js","sourceRoot":"","sources":["../../src/application/hook-visibility-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAA8B,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"hook-visibility-service.js","sourceRoot":"","sources":["../../src/application/hook-visibility-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,14 @@ export declare const HostCapabilitiesSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
41
41
|
export type HostCapabilities = z.infer<typeof HostCapabilitiesSchema>;
|
|
42
42
|
export declare const HostBlockedPluginSchema: z.ZodReadonly<z.ZodObject<{
|
|
43
43
|
plugin: z.ZodUnion<readonly [z.core.$ZodBranded<z.ZodString, "PluginKey", "out">, z.ZodString]>;
|
|
44
|
+
scope: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
|
|
45
|
+
kind: z.ZodLiteral<"user">;
|
|
46
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
47
|
+
kind: z.ZodLiteral<"project">;
|
|
48
|
+
projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
|
|
49
|
+
}, z.core.$strict>>], "kind">>;
|
|
50
|
+
selectedRevision: z.ZodOptional<z.ZodString>;
|
|
51
|
+
runningRevision: z.ZodOptional<z.ZodString>;
|
|
44
52
|
code: z.ZodString;
|
|
45
53
|
explanation: z.ZodString;
|
|
46
54
|
}, z.core.$strict>>;
|
|
@@ -59,6 +67,14 @@ export declare const HostStartupResultSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
59
67
|
}>;
|
|
60
68
|
blocked: z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
|
|
61
69
|
plugin: z.ZodUnion<readonly [z.core.$ZodBranded<z.ZodString, "PluginKey", "out">, z.ZodString]>;
|
|
70
|
+
scope: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
|
|
71
|
+
kind: z.ZodLiteral<"user">;
|
|
72
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
73
|
+
kind: z.ZodLiteral<"project">;
|
|
74
|
+
projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
|
|
75
|
+
}, z.core.$strict>>], "kind">>;
|
|
76
|
+
selectedRevision: z.ZodOptional<z.ZodString>;
|
|
77
|
+
runningRevision: z.ZodOptional<z.ZodString>;
|
|
62
78
|
code: z.ZodString;
|
|
63
79
|
explanation: z.ZodString;
|
|
64
80
|
}, z.core.$strict>>>>;
|
|
@@ -101,7 +117,7 @@ export declare const HostStatusSnapshotSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
101
117
|
ready: "ready";
|
|
102
118
|
}>;
|
|
103
119
|
local: z.ZodReadonly<z.ZodObject<{
|
|
104
|
-
|
|
120
|
+
convergence: z.ZodEnum<{
|
|
105
121
|
blocked: "blocked";
|
|
106
122
|
degraded: "degraded";
|
|
107
123
|
settled: "settled";
|
|
@@ -140,6 +156,14 @@ export declare const HostStatusSnapshotSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
140
156
|
}, z.core.$strict>>;
|
|
141
157
|
blocked: z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
|
|
142
158
|
plugin: z.ZodUnion<readonly [z.core.$ZodBranded<z.ZodString, "PluginKey", "out">, z.ZodString]>;
|
|
159
|
+
scope: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
|
|
160
|
+
kind: z.ZodLiteral<"user">;
|
|
161
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
162
|
+
kind: z.ZodLiteral<"project">;
|
|
163
|
+
projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
|
|
164
|
+
}, z.core.$strict>>], "kind">>;
|
|
165
|
+
selectedRevision: z.ZodOptional<z.ZodString>;
|
|
166
|
+
runningRevision: z.ZodOptional<z.ZodString>;
|
|
143
167
|
code: z.ZodString;
|
|
144
168
|
explanation: z.ZodString;
|
|
145
169
|
}, z.core.$strict>>>>;
|
|
@@ -14,6 +14,10 @@ export const HostCapabilitiesSchema = z.object({
|
|
|
14
14
|
}).strict().readonly();
|
|
15
15
|
export const HostBlockedPluginSchema = z.object({
|
|
16
16
|
plugin: z.union([PluginKeySchema, z.string().min(1)]),
|
|
17
|
+
/** Scope/revision evidence is present for plugin-local degradation. */
|
|
18
|
+
scope: ScopeReferenceSchema.optional(),
|
|
19
|
+
selectedRevision: z.string().regex(/^sha256:[0-9a-f]{64}$/).optional(),
|
|
20
|
+
runningRevision: z.string().regex(/^sha256:[0-9a-f]{64}$/).optional(),
|
|
17
21
|
code: z.string().min(1),
|
|
18
22
|
explanation: z.string().min(1),
|
|
19
23
|
}).strict().readonly();
|
|
@@ -26,7 +30,7 @@ export const HostStartupResultSchema = z.object({
|
|
|
26
30
|
export const HostStatusSnapshotSchema = z.object({
|
|
27
31
|
status: HostReadinessStatusSchema,
|
|
28
32
|
local: z.object({
|
|
29
|
-
|
|
33
|
+
convergence: z.enum(["settled", "degraded", "blocked"]),
|
|
30
34
|
runtime: z.enum(["reconciled", "degraded", "blocked"]),
|
|
31
35
|
}).strict().readonly(),
|
|
32
36
|
update: z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-observation-contract.js","sourceRoot":"","sources":["../../src/application/host-observation-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAGvB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,GAAG,EAAE,0BAA0B;IAC/B,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE,0BAA0B;IACpC,OAAO,EAAE,0BAA0B;CACpC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAGvB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAGvB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAGlF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;IACpD,YAAY,EAAE,sBAAsB;CACrC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAGvB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,yBAAyB;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,
|
|
1
|
+
{"version":3,"file":"host-observation-contract.js","sourceRoot":"","sources":["../../src/application/host-observation-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type HostPrecedence } from "../domain/host-precedence.js";
|
|
2
2
|
import type { Sha256 } from "../domain/source.js";
|
|
3
|
-
import type { GenerationMutationCoordinator } from "./generation-mutation-coordinator.js";
|
|
4
3
|
import type { LifecycleStateStore } from "./ports/lifecycle-state-store.js";
|
|
5
4
|
import { type NativeHostPrecedenceRequest, type NativeHostPrecedenceResult } from "./host-precedence-contract.js";
|
|
6
5
|
export interface HostPrecedenceService {
|
|
@@ -16,7 +15,7 @@ export interface HostPrecedenceService {
|
|
|
16
15
|
}
|
|
17
16
|
export type HostPrecedenceServiceDependencies = Readonly<{
|
|
18
17
|
state: LifecycleStateStore;
|
|
19
|
-
mutations:
|
|
18
|
+
mutations: LifecycleStateStore;
|
|
20
19
|
sha256: Sha256;
|
|
21
20
|
}>;
|
|
22
21
|
/**
|