@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.
Files changed (390) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/node_modules/@nklisch/pi-clearance/native/clearance-core.darwin-arm64.node +0 -0
  3. package/node_modules/@nklisch/pi-clearance/native/clearance-core.darwin-x64.node +0 -0
  4. package/node_modules/@nklisch/pi-clearance/native/clearance-core.linux-arm64-gnu.node +0 -0
  5. package/node_modules/@nklisch/pi-clearance/native/clearance-core.win32-x64-msvc.node +0 -0
  6. package/node_modules/@nklisch/pi-plugins/README.md +1 -1
  7. package/node_modules/@nklisch/pi-plugins/dist/application/adoption-contract.d.ts +0 -6
  8. package/node_modules/@nklisch/pi-plugins/dist/application/agent-orientation.d.ts +66 -0
  9. package/node_modules/@nklisch/pi-plugins/dist/application/agent-orientation.js +223 -0
  10. package/node_modules/@nklisch/pi-plugins/dist/application/agent-orientation.js.map +1 -0
  11. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-trust-continuity.d.ts +1 -2
  12. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-trust-continuity.js +15 -33
  13. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-trust-continuity.js.map +1 -1
  14. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.d.ts +1 -2
  15. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js +17 -20
  16. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js.map +1 -1
  17. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.d.ts +3 -3
  18. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js +1 -1
  19. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js.map +1 -1
  20. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.d.ts +2 -2
  21. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.js +5 -5
  22. package/node_modules/@nklisch/pi-plugins/dist/application/configuration-service.js.map +1 -1
  23. package/node_modules/@nklisch/pi-plugins/dist/application/convergence-service.d.ts +98 -0
  24. package/node_modules/@nklisch/pi-plugins/dist/application/convergence-service.js +270 -0
  25. package/node_modules/@nklisch/pi-plugins/dist/application/convergence-service.js.map +1 -0
  26. package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.d.ts +3 -5
  27. package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.js +18 -20
  28. package/node_modules/@nklisch/pi-plugins/dist/application/exact-trust-grant-service.js.map +1 -1
  29. package/node_modules/@nklisch/pi-plugins/dist/application/hook-visibility-service.d.ts +1 -2
  30. package/node_modules/@nklisch/pi-plugins/dist/application/hook-visibility-service.js +3 -1
  31. package/node_modules/@nklisch/pi-plugins/dist/application/hook-visibility-service.js.map +1 -1
  32. package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.d.ts +25 -1
  33. package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.js +5 -1
  34. package/node_modules/@nklisch/pi-plugins/dist/application/host-observation-contract.js.map +1 -1
  35. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.d.ts +1 -2
  36. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.js +3 -1
  37. package/node_modules/@nklisch/pi-plugins/dist/application/host-precedence-service.js.map +1 -1
  38. package/node_modules/@nklisch/pi-plugins/dist/application/inspection-contract.d.ts +0 -4
  39. package/node_modules/@nklisch/pi-plugins/dist/application/installed-revision-descriptor.d.ts +0 -4
  40. package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.d.ts +0 -9
  41. package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.js +1 -2
  42. package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.js.map +1 -1
  43. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-inspection-contract.d.ts +0 -2
  44. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.d.ts +4 -7
  45. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js +88 -122
  46. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js.map +1 -1
  47. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.d.ts +1 -2
  48. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.js +56 -94
  49. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-registration-service.js.map +1 -1
  50. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.d.ts +1 -2
  51. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.js +7 -6
  52. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-update-policy-service.js.map +1 -1
  53. package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.d.ts +3 -4
  54. package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.js +8 -11
  55. package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.js.map +1 -1
  56. package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.js +1 -1
  57. package/node_modules/@nklisch/pi-plugins/dist/application/native-candidate-inspection.js.map +1 -1
  58. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.d.ts +7 -6
  59. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.js +4 -5
  60. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.js.map +1 -1
  61. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js +2 -1
  62. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js.map +1 -1
  63. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.d.ts +1 -1
  64. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.js +2 -2
  65. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-error.js.map +1 -1
  66. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-help.d.ts +5 -3
  67. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-install.d.ts +1 -1
  68. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.js +4 -1
  69. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-lifecycle.js.map +1 -1
  70. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js +13 -21
  71. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js.map +1 -1
  72. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-operation.d.ts +122 -1124
  73. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.d.ts +8 -4
  74. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js +4 -3
  75. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js.map +1 -1
  76. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-progress.d.ts +6 -4
  77. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.js +1 -1
  78. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-read-dispatch.js.map +1 -1
  79. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.d.ts +30 -7
  80. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js +4 -3
  81. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js.map +1 -1
  82. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-safe-projection.d.ts +0 -6
  83. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.d.ts +49 -49
  84. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js +10 -10
  85. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js.map +1 -1
  86. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.d.ts +0 -5
  87. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js +13 -11
  88. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js.map +1 -1
  89. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.d.ts +55 -70
  90. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.js +4 -3
  91. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.js.map +1 -1
  92. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.js +30 -11
  93. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-service.js.map +1 -1
  94. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js +46 -35
  95. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js.map +1 -1
  96. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.d.ts +362 -1284
  97. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js +11 -12
  98. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js.map +1 -1
  99. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.d.ts +1 -1
  100. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.js +4 -26
  101. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-service.js.map +1 -1
  102. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js +1 -1
  103. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js.map +1 -1
  104. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.d.ts +79 -235
  105. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.js +26 -41
  106. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.js.map +1 -1
  107. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.d.ts +1 -1
  108. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js +23 -68
  109. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js.map +1 -1
  110. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.d.ts +2 -2
  111. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.js +0 -18
  112. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-target.js.map +1 -1
  113. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.d.ts +0 -4
  114. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.js +0 -2
  115. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-update.js.map +1 -1
  116. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.d.ts +2 -5
  117. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js +5 -5
  118. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js.map +1 -1
  119. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.d.ts +1 -2
  120. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.js +4 -2
  121. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-policy-service.js.map +1 -1
  122. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.d.ts +30 -57
  123. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.js +9 -32
  124. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-contract.js.map +1 -1
  125. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.d.ts +57 -75
  126. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js +293 -583
  127. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js.map +1 -1
  128. package/node_modules/@nklisch/pi-plugins/dist/application/ports/artifact-gc.d.ts +21 -0
  129. package/node_modules/@nklisch/pi-plugins/dist/application/ports/artifact-gc.js +2 -0
  130. package/node_modules/@nklisch/pi-plugins/dist/application/ports/artifact-gc.js.map +1 -0
  131. package/node_modules/@nklisch/pi-plugins/dist/application/ports/automatic-update-lifecycle.d.ts +5 -6
  132. package/node_modules/@nklisch/pi-plugins/dist/application/ports/installed-plugin-loader.d.ts +0 -4
  133. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.d.ts +80 -13
  134. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.js +6 -3
  135. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-reload.js.map +1 -1
  136. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mcp-runtime.d.ts +0 -16
  137. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-input.d.ts +1 -1
  138. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-inspection-evidence.d.ts +4 -4
  139. package/node_modules/@nklisch/pi-plugins/dist/application/ports/pending-data-deletion.d.ts +26 -0
  140. package/node_modules/@nklisch/pi-plugins/dist/application/ports/pending-data-deletion.js +8 -0
  141. package/node_modules/@nklisch/pi-plugins/dist/application/ports/pending-data-deletion.js.map +1 -0
  142. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.d.ts +12 -9
  143. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.js +2 -2
  144. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-contract.js.map +1 -1
  145. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.js +1 -10
  146. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-planner.js.map +1 -1
  147. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.js +1 -1
  148. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-projection.js.map +1 -1
  149. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.d.ts +1 -2
  150. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.js +6 -10
  151. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-service.js.map +1 -1
  152. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.d.ts +2 -4
  153. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.js +9 -8
  154. package/node_modules/@nklisch/pi-plugins/dist/application/project-sync-state.js.map +1 -1
  155. package/node_modules/@nklisch/pi-plugins/dist/application/state-contract.d.ts +16 -32
  156. package/node_modules/@nklisch/pi-plugins/dist/application/state-transaction.d.ts +48 -0
  157. package/node_modules/@nklisch/pi-plugins/dist/application/state-transaction.js +107 -0
  158. package/node_modules/@nklisch/pi-plugins/dist/application/state-transaction.js.map +1 -0
  159. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.d.ts +1725 -4546
  160. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js +3 -22
  161. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js.map +1 -1
  162. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.d.ts +1 -3
  163. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.js +1 -5
  164. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-lifecycle.js.map +1 -1
  165. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js +33 -122
  166. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js.map +1 -1
  167. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.d.ts +0 -20
  168. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.js +1 -23
  169. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-session.js.map +1 -1
  170. package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.d.ts +0 -7
  171. package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.js +1 -1
  172. package/node_modules/@nklisch/pi-plugins/dist/application/update-contract.js.map +1 -1
  173. package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.d.ts +1 -2
  174. package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.js +5 -3
  175. package/node_modules/@nklisch/pi-plugins/dist/application/update-notification-service.js.map +1 -1
  176. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.d.ts +1 -2
  177. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.js +6 -4
  178. package/node_modules/@nklisch/pi-plugins/dist/application/update-scheduler-lease-state.js.map +1 -1
  179. package/node_modules/@nklisch/pi-plugins/dist/composition/agent-orientation-facts.d.ts +42 -0
  180. package/node_modules/@nklisch/pi-plugins/dist/composition/agent-orientation-facts.js +223 -0
  181. package/node_modules/@nklisch/pi-plugins/dist/composition/agent-orientation-facts.js.map +1 -0
  182. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js +12 -18
  183. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js.map +1 -1
  184. package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.d.ts +3 -0
  185. package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.js +10 -0
  186. package/node_modules/@nklisch/pi-plugins/dist/composition/background-update-coordinator.js.map +1 -1
  187. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.d.ts +3 -7
  188. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js +64 -153
  189. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js.map +1 -1
  190. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.d.ts +2 -3
  191. package/node_modules/@nklisch/pi-plugins/dist/composition/create-marketplace-discovery-services.js.map +1 -1
  192. package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.d.ts +3 -7
  193. package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.js +4 -8
  194. package/node_modules/@nklisch/pi-plugins/dist/composition/create-mcp-runtime.js.map +1 -1
  195. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.d.ts +2 -2
  196. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.js +1 -1
  197. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-inspection-service.js.map +1 -1
  198. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.d.ts +2 -5
  199. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.js +70 -1
  200. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-lifecycle-operation-service.js.map +1 -1
  201. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.d.ts +1 -2
  202. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.js.map +1 -1
  203. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.d.ts +12 -1
  204. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js +177 -66
  205. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js.map +1 -1
  206. package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.d.ts +2 -4
  207. package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.js +24 -43
  208. package/node_modules/@nklisch/pi-plugins/dist/composition/create-skill-hook-runtime.js.map +1 -1
  209. package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.d.ts +1 -2
  210. package/node_modules/@nklisch/pi-plugins/dist/composition/create-trusted-installation-service.js.map +1 -1
  211. package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.d.ts +1 -1
  212. package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.js +4 -4
  213. package/node_modules/@nklisch/pi-plugins/dist/composition/host-status-service.js.map +1 -1
  214. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.d.ts +3 -3
  215. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.js +6 -6
  216. package/node_modules/@nklisch/pi-plugins/dist/composition/native-inspection-evidence.js.map +1 -1
  217. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.d.ts +1 -1
  218. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js +4 -5
  219. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js.map +1 -1
  220. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-plugin-host-contract.d.ts +5 -0
  221. package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.d.ts +1 -0
  222. package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.js +6 -0
  223. package/node_modules/@nklisch/pi-plugins/dist/composition/plugin-host-paths.js.map +1 -1
  224. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.d.ts +15 -0
  225. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js +228 -154
  226. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js.map +1 -1
  227. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.d.ts +6 -0
  228. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.js +13 -3
  229. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-participant-qualification.js.map +1 -1
  230. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility-policy.d.ts +0 -4
  231. package/node_modules/@nklisch/pi-plugins/dist/domain/compatibility.d.ts +0 -6
  232. package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.d.ts +0 -6
  233. package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.js +0 -2
  234. package/node_modules/@nklisch/pi-plugins/dist/domain/error-contract.js.map +1 -1
  235. package/node_modules/@nklisch/pi-plugins/dist/domain/errors.d.ts +0 -6
  236. package/node_modules/@nklisch/pi-plugins/dist/domain/marketplace.d.ts +0 -2
  237. package/node_modules/@nklisch/pi-plugins/dist/domain/state/config-state.d.ts +2 -6
  238. package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.d.ts +4 -4
  239. package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.js +5 -7
  240. package/node_modules/@nklisch/pi-plugins/dist/domain/state/installed-state.js.map +1 -1
  241. package/node_modules/@nklisch/pi-plugins/dist/domain/state/project-state.d.ts +2 -4
  242. package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.d.ts +1 -8
  243. package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.js +0 -9
  244. package/node_modules/@nklisch/pi-plugins/dist/domain/state/references.js.map +1 -1
  245. package/node_modules/@nklisch/pi-plugins/dist/domain/state/registry.d.ts +4 -8
  246. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.d.ts +5 -13
  247. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js +2 -3
  248. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js.map +1 -1
  249. package/node_modules/@nklisch/pi-plugins/dist/index.d.ts +16 -38
  250. package/node_modules/@nklisch/pi-plugins/dist/index.js +8 -22
  251. package/node_modules/@nklisch/pi-plugins/dist/index.js.map +1 -1
  252. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/cleanup/pending-data-deletion.d.ts +8 -0
  253. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/cleanup/pending-data-deletion.js +112 -0
  254. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/cleanup/pending-data-deletion.js.map +1 -0
  255. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/artifact-gc.d.ts +17 -0
  256. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/artifact-gc.js +143 -0
  257. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/artifact-gc.js.map +1 -0
  258. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/create-node-convergence.d.ts +16 -0
  259. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/create-node-convergence.js +14 -0
  260. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/convergence/create-node-convergence.js.map +1 -0
  261. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.d.ts +0 -8
  262. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.js +1 -1
  263. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/immutable-content-store.js.map +1 -1
  264. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.d.ts +0 -1
  265. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.js +1 -24
  266. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/filesystem/staging-allocator.js.map +1 -1
  267. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-convergence-migration.d.ts +33 -0
  268. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-convergence-migration.js +416 -0
  269. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/lifecycle-convergence-migration.js.map +1 -0
  270. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.d.ts +10 -0
  271. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js +31 -4
  272. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js.map +1 -1
  273. package/node_modules/@nklisch/pi-plugins/dist/pi/agent-orientation-publisher.d.ts +17 -0
  274. package/node_modules/@nklisch/pi-plugins/dist/pi/agent-orientation-publisher.js +81 -0
  275. package/node_modules/@nklisch/pi-plugins/dist/pi/agent-orientation-publisher.js.map +1 -0
  276. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js +8 -3
  277. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js.map +1 -1
  278. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.js +0 -2
  279. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/pi-control-input.js.map +1 -1
  280. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js +9 -22
  281. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js.map +1 -1
  282. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-flow.d.ts +2 -2
  283. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.d.ts +2 -2
  284. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js +7 -7
  285. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js.map +1 -1
  286. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js +1 -1
  287. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js.map +1 -1
  288. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.d.ts +8 -0
  289. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js +7 -0
  290. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js.map +1 -1
  291. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js +6 -1
  292. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js.map +1 -1
  293. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js +11 -22
  294. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js.map +1 -1
  295. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.d.ts +1 -2
  296. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.js +1 -3
  297. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-status.js.map +1 -1
  298. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js +2 -4
  299. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js.map +1 -1
  300. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js +5 -7
  301. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js.map +1 -1
  302. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.d.ts +6 -6
  303. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.js +36 -6
  304. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.js.map +1 -1
  305. package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.js +1 -0
  306. package/node_modules/@nklisch/pi-plugins/dist/pi/plain-language.js.map +1 -1
  307. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js +1 -1
  308. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js.map +1 -1
  309. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/lifecycle-participant.d.ts +0 -2
  310. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/mcp-runtime-binding-provider.d.ts +12 -0
  311. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/mcp-runtime-binding-provider.js +43 -0
  312. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/mcp-runtime-binding-provider.js.map +1 -0
  313. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.d.ts +12 -1
  314. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js +27 -10
  315. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js.map +1 -1
  316. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-runtime.js +1 -1
  317. package/node_modules/@nklisch/pi-plugins/package.json +2 -2
  318. package/package.json +3 -3
  319. package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.d.ts +0 -79
  320. package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.js +0 -424
  321. package/node_modules/@nklisch/pi-plugins/dist/application/generation-mutation-coordinator.js.map +0 -1
  322. package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.d.ts +0 -19
  323. package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.js +0 -235
  324. package/node_modules/@nklisch/pi-plugins/dist/application/keyed-mutation-scheduler.js.map +0 -1
  325. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.d.ts +0 -79
  326. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js +0 -236
  327. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js.map +0 -1
  328. package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.d.ts +0 -19
  329. package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.js +0 -12
  330. package/node_modules/@nklisch/pi-plugins/dist/application/mutation-coordination.js.map +0 -1
  331. package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.d.ts +0 -25
  332. package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.js +0 -39
  333. package/node_modules/@nklisch/pi-plugins/dist/application/native-uninstall-cleanup.js.map +0 -1
  334. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.d.ts +0 -5020
  335. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.js +0 -129
  336. package/node_modules/@nklisch/pi-plugins/dist/application/ports/lifecycle-transition-store.js.map +0 -1
  337. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.d.ts +0 -9
  338. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.js +0 -2
  339. package/node_modules/@nklisch/pi-plugins/dist/application/ports/mutation-execution-context.js.map +0 -1
  340. package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.d.ts +0 -29
  341. package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.js +0 -4
  342. package/node_modules/@nklisch/pi-plugins/dist/application/ports/recovery-artifacts.js.map +0 -1
  343. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.d.ts +0 -65
  344. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.js +0 -16
  345. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-lease-store.js.map +0 -1
  346. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.d.ts +0 -43
  347. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.js +0 -12
  348. package/node_modules/@nklisch/pi-plugins/dist/application/ports/revision-retention-store.js.map +0 -1
  349. package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.d.ts +0 -15
  350. package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.js +0 -2
  351. package/node_modules/@nklisch/pi-plugins/dist/application/ports/scope-lock.js.map +0 -1
  352. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.d.ts +0 -1078
  353. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.js +0 -126
  354. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-contract.js.map +0 -1
  355. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.d.ts +0 -39
  356. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.js +0 -170
  357. package/node_modules/@nklisch/pi-plugins/dist/application/recovery-service.js.map +0 -1
  358. package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.d.ts +0 -52
  359. package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.js +0 -228
  360. package/node_modules/@nklisch/pi-plugins/dist/application/revision-collection-service.js.map +0 -1
  361. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.d.ts +0 -23
  362. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.js +0 -82
  363. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/create-node-recovery-adapters.js.map +0 -1
  364. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.d.ts +0 -15
  365. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js +0 -35
  366. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js.map +0 -1
  367. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.d.ts +0 -7
  368. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js +0 -95
  369. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js.map +0 -1
  370. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.d.ts +0 -3
  371. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.js +0 -83
  372. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/recovery-artifact-scanner.js.map +0 -1
  373. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.d.ts +0 -3
  374. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.js +0 -178
  375. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/revision-artifact-store.js.map +0 -1
  376. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.d.ts +0 -7
  377. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js +0 -73
  378. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js.map +0 -1
  379. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.d.ts +0 -28
  380. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js +0 -445
  381. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js.map +0 -1
  382. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.d.ts +0 -5
  383. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.js +0 -17
  384. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/keyed-mutation-scheduler.js.map +0 -1
  385. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.d.ts +0 -15
  386. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js +0 -292
  387. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js.map +0 -1
  388. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.d.ts +0 -18
  389. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.js +0 -180
  390. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/revision-lease-provider.js.map +0 -1
@@ -1,292 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import { chmodSync, lstatSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { BoundaryError } from "../../domain/errors.js";
5
- import { ScopeReferenceSchema, } from "../../domain/state/scope.js";
6
- import { ensurePrivateLockRoot, LOCAL_LOCK_DATABASE_MODE, verifyLocalFilesystemCapability, } from "./local-lock-filesystem.js";
7
- const PROTOCOL = "pi-plugin-host-scope-lock";
8
- const PROTOCOL_VERSION = 1;
9
- const PROTOCOL_TABLE = "scope_lock_protocol";
10
- const DEFAULT_RETRY_DELAY = Object.freeze({ minimum: 2, maximum: 25 });
11
- const SQLITE_BUSY = 5;
12
- function assertSignal(signal) {
13
- if (signal === null ||
14
- typeof signal !== "object" ||
15
- typeof signal.addEventListener !== "function" ||
16
- typeof signal.removeEventListener !== "function" ||
17
- typeof signal.aborted !== "boolean") {
18
- throw new TypeError("scope lock acquisition requires an AbortSignal");
19
- }
20
- }
21
- function throwIfAborted(signal) {
22
- if (signal.aborted)
23
- throw signal.reason;
24
- }
25
- function isBusy(error) {
26
- return typeof error === "object" && error !== null && error.errcode === SQLITE_BUSY;
27
- }
28
- function adapterFailure(operation, cause) {
29
- return new BoundaryError({
30
- code: "ADAPTER_FAILED",
31
- operation,
32
- message: "local scope lock capability failed",
33
- cause,
34
- });
35
- }
36
- function cleanupCause(rollback, close) {
37
- if (rollback !== undefined && close !== undefined)
38
- return { rollback, close };
39
- return rollback ?? close;
40
- }
41
- function validateRetryDelay(input) {
42
- if (input === null ||
43
- typeof input !== "object" ||
44
- !Number.isSafeInteger(input.minimum) ||
45
- !Number.isSafeInteger(input.maximum) ||
46
- input.minimum < 0 ||
47
- input.maximum < input.minimum) {
48
- throw new TypeError("scope lock retry delays must be ordered non-negative safe integers");
49
- }
50
- return { minimum: input.minimum, maximum: input.maximum };
51
- }
52
- function validateRandom(random) {
53
- if (typeof random !== "function")
54
- throw new TypeError("scope lock jitter source must be a function");
55
- }
56
- function scopeDatabaseName(scope) {
57
- const value = ScopeReferenceSchema.parse(scope);
58
- if (value.kind === "user")
59
- return "user.sqlite";
60
- // Keep the domain's key grammar out of the adapter. URI escaping is injective
61
- // for the validated key and remains a legal filename on every supported OS.
62
- return `project-${encodeURIComponent(value.projectKey)}.sqlite`;
63
- }
64
- function databasePath(root, scope) {
65
- return join(root, scopeDatabaseName(scope));
66
- }
67
- function createProtocolSchema(database) {
68
- database.exec(`CREATE TABLE IF NOT EXISTS ${PROTOCOL_TABLE} (protocol TEXT PRIMARY KEY NOT NULL CHECK (protocol = '${PROTOCOL}'), version INTEGER NOT NULL CHECK (version = ${PROTOCOL_VERSION})) STRICT;`);
69
- database.prepare(`INSERT OR IGNORE INTO ${PROTOCOL_TABLE} (protocol, version) VALUES ('${PROTOCOL}', ${PROTOCOL_VERSION})`).run();
70
- }
71
- function validateProtocolSchema(database) {
72
- const objects = database
73
- .prepare("SELECT name, type FROM sqlite_master WHERE name NOT LIKE 'sqlite_%' ORDER BY name")
74
- .all();
75
- if (objects.length !== 1 || objects[0]?.name !== PROTOCOL_TABLE || objects[0]?.type !== "table") {
76
- throw new Error("scope lock database contains an unexpected object");
77
- }
78
- const tableDefinition = database
79
- .prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?")
80
- .get(PROTOCOL_TABLE);
81
- const expectedDefinition = `CREATE TABLE ${PROTOCOL_TABLE} (protocol TEXT PRIMARY KEY NOT NULL CHECK (protocol = '${PROTOCOL}'), version INTEGER NOT NULL CHECK (version = ${PROTOCOL_VERSION})) STRICT`;
82
- if (typeof tableDefinition?.sql !== "string" || tableDefinition.sql.replaceAll(/\s+/g, " ").trim() !== expectedDefinition) {
83
- throw new Error("scope lock protocol table definition is invalid");
84
- }
85
- const columns = database.prepare(`PRAGMA table_info(${PROTOCOL_TABLE})`).all();
86
- const expected = [
87
- { name: "protocol", type: "TEXT", notnull: 1, pk: 1 },
88
- { name: "version", type: "INTEGER", notnull: 1, pk: 0 },
89
- ];
90
- if (columns.length !== expected.length ||
91
- columns.some((column, index) => {
92
- const wanted = expected[index];
93
- return wanted === undefined ||
94
- column.name !== wanted.name ||
95
- column.type !== wanted.type ||
96
- column.notnull !== wanted.notnull ||
97
- column.pk !== wanted.pk ||
98
- column.dflt_value !== null;
99
- })) {
100
- throw new Error("scope lock protocol schema is invalid");
101
- }
102
- const rows = database.prepare(`SELECT protocol, version FROM ${PROTOCOL_TABLE}`).all();
103
- if (rows.length !== 1 ||
104
- rows[0]?.protocol !== PROTOCOL ||
105
- rows[0]?.version !== PROTOCOL_VERSION) {
106
- throw new Error("scope lock protocol version is invalid");
107
- }
108
- }
109
- /**
110
- * Open the scope database and take the write lock. The lock itself is the
111
- * held BEGIN IMMEDIATE transaction; first-use schema setup runs under the
112
- * same transaction so concurrent creators serialize on the database. No
113
- * sidecar marker, claim, or alias files exist to drift across mounts or
114
- * strand a later process — a killed holder's transaction is released by the
115
- * OS and the next acquirer proceeds after the busy window.
116
- */
117
- function openLockedDatabase(path) {
118
- const database = new DatabaseSync(path, {
119
- allowExtension: false,
120
- defensive: true,
121
- enableDoubleQuotedStringLiterals: false,
122
- enableForeignKeyConstraints: true,
123
- readOnly: false,
124
- timeout: 0,
125
- });
126
- try {
127
- const stats = lstatSync(path);
128
- if (!stats.isFile() || stats.isSymbolicLink())
129
- throw new Error("scope lock database is not a regular file");
130
- chmodSync(path, LOCAL_LOCK_DATABASE_MODE);
131
- if (process.platform !== "win32" && (lstatSync(path).mode & 0o777) !== LOCAL_LOCK_DATABASE_MODE) {
132
- throw new Error("scope lock database is not private");
133
- }
134
- database.exec("PRAGMA journal_mode = DELETE; PRAGMA locking_mode = NORMAL; PRAGMA foreign_keys = ON; PRAGMA trusted_schema = OFF;");
135
- database.exec("BEGIN IMMEDIATE");
136
- createProtocolSchema(database);
137
- validateProtocolSchema(database);
138
- const journal = database.prepare("PRAGMA journal_mode").get();
139
- if (journal?.journal_mode !== "delete")
140
- throw new Error("scope lock database is not using rollback journal mode");
141
- return database;
142
- }
143
- catch (error) {
144
- try {
145
- database.close();
146
- }
147
- catch { /* preserve primary failure */ }
148
- throw error;
149
- }
150
- }
151
- async function waitForRetry(delayMs, signal) {
152
- throwIfAborted(signal);
153
- await new Promise((resolve, reject) => {
154
- let timer = setTimeout(() => {
155
- timer = undefined;
156
- signal.removeEventListener("abort", onAbort);
157
- resolve();
158
- }, delayMs);
159
- const onAbort = () => {
160
- if (timer !== undefined)
161
- clearTimeout(timer);
162
- timer = undefined;
163
- signal.removeEventListener("abort", onAbort);
164
- reject(signal.reason);
165
- };
166
- signal.addEventListener("abort", onAbort, { once: true });
167
- if (signal.aborted)
168
- onAbort();
169
- });
170
- }
171
- class SqliteScopeLockLease {
172
- database;
173
- scope;
174
- status = "held";
175
- constructor(scope, database) {
176
- this.database = database;
177
- this.scope = scope;
178
- }
179
- async assertOwned(signal) {
180
- assertSignal(signal);
181
- throwIfAborted(signal);
182
- if (this.status !== "held" || !this.database.isOpen || !this.database.isTransaction) {
183
- throw adapterFailure("scope-lock.assert-owned", new Error("scope lock is no longer held"));
184
- }
185
- }
186
- async release() {
187
- if (this.status === "released")
188
- return;
189
- let rollbackError;
190
- let closeError;
191
- try {
192
- if (this.database.isOpen && this.database.isTransaction)
193
- this.database.exec("ROLLBACK");
194
- }
195
- catch (error) {
196
- rollbackError = error;
197
- }
198
- finally {
199
- try {
200
- if (this.database.isOpen)
201
- this.database.close();
202
- }
203
- catch (error) {
204
- closeError = error;
205
- }
206
- }
207
- if (!this.database.isOpen && closeError === undefined)
208
- this.status = "released";
209
- else
210
- this.status = "uncertain";
211
- if (rollbackError !== undefined || closeError !== undefined) {
212
- throw adapterFailure("scope-lock.release", cleanupCause(rollbackError, closeError));
213
- }
214
- }
215
- }
216
- class SqliteScopeLockManager {
217
- root;
218
- retryDelayMs;
219
- random;
220
- constructor(root, retryDelayMs, random) {
221
- this.root = root;
222
- this.retryDelayMs = retryDelayMs;
223
- this.random = random;
224
- }
225
- async acquire(input, signal) {
226
- assertSignal(signal);
227
- const scope = ScopeReferenceSchema.parse(input);
228
- const path = databasePath(this.root, scope);
229
- for (;;) {
230
- throwIfAborted(signal);
231
- let database;
232
- try {
233
- database = openLockedDatabase(path);
234
- if (signal.aborted)
235
- throw signal.reason;
236
- return new SqliteScopeLockLease(scope, database);
237
- }
238
- catch (error) {
239
- if (database !== undefined) {
240
- try {
241
- if (database.isOpen)
242
- database.close();
243
- }
244
- catch (closeError) {
245
- throw adapterFailure("scope-lock.acquire", cleanupCause(error, closeError));
246
- }
247
- }
248
- if (signal.aborted)
249
- throw signal.reason;
250
- if (!isBusy(error))
251
- throw adapterFailure("scope-lock.acquire", error);
252
- const delay = await this.retryDelay();
253
- await waitForRetry(delay, signal);
254
- }
255
- }
256
- }
257
- async retryDelay() {
258
- let value;
259
- try {
260
- value = this.random();
261
- }
262
- catch (error) {
263
- throw adapterFailure("scope-lock.retry", error);
264
- }
265
- if (!Number.isFinite(value) || value < 0 || value > 1) {
266
- throw adapterFailure("scope-lock.retry", new Error("invalid retry jitter"));
267
- }
268
- return Math.floor(this.retryDelayMs.minimum + value * (this.retryDelayMs.maximum - this.retryDelayMs.minimum));
269
- }
270
- }
271
- /** Create a scope lock manager rooted at a private, local-filesystem directory. */
272
- export async function createSqliteScopeLockManager(options) {
273
- if (options === null || typeof options !== "object")
274
- throw new TypeError("scope lock options are required");
275
- const retryDelayMs = validateRetryDelay(options.retryDelayMs ?? DEFAULT_RETRY_DELAY);
276
- const random = options.random ?? Math.random;
277
- validateRandom(random);
278
- const root = await ensurePrivateLockRoot(options.lockRoot).catch((error) => {
279
- throw adapterFailure("scope-lock.initialize", error);
280
- });
281
- try {
282
- await (options.verifyLocalFilesystem ?? verifyLocalFilesystemCapability)(root);
283
- return new SqliteScopeLockManager(root, retryDelayMs, random);
284
- }
285
- catch (error) {
286
- if (error instanceof BoundaryError)
287
- throw error;
288
- throw adapterFailure("scope-lock.initialize", error);
289
- }
290
- }
291
- export { scopeDatabaseName };
292
- //# sourceMappingURL=sqlite-scope-lock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-scope-lock.js","sourceRoot":"","sources":["../../../src/infrastructure/state/sqlite-scope-lock.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { Sha256 } from "../../domain/source.js";
2
- import type { LifecycleClock } from "../../application/ports/lifecycle-clock.js";
3
- import type { McpLaunchActiveSelectionPort } from "../../application/ports/mcp-launch-context.js";
4
- import { type McpRuntimeLeaseProvider, type McpSourceRegistration } from "../../application/ports/mcp-runtime.js";
5
- import type { RevisionLeaseStore } from "../../application/ports/revision-lease-store.js";
6
- /**
7
- * Adapt one immutable MCP registration to the existing revision-retention
8
- * lease store. Selection authority remains owned by native composition; this
9
- * provider only pins its already-selected plugin and projection artifacts.
10
- */
11
- export declare function createMcpRevisionLeaseProvider(input: Readonly<{
12
- source: McpSourceRegistration;
13
- active: McpLaunchActiveSelectionPort;
14
- leases: RevisionLeaseStore;
15
- clock: LifecycleClock;
16
- sessionId: string;
17
- sha256: Sha256;
18
- }>): McpRuntimeLeaseProvider;
@@ -1,180 +0,0 @@
1
- import { canonicalJson } from "../../domain/canonical-json.js";
2
- import { McpServerComponentSchema } from "../../domain/components.js";
3
- import { createPluginStoreIdentityFromEvidence } from "../../domain/content-store.js";
4
- import { verifyInstalledRevisionRecord } from "../../domain/state/installed-state.js";
5
- import { createMcpLaunchTemplate } from "../../domain/mcp-launch-template.js";
6
- import { verifyMcpSourceRegistration } from "../../application/mcp-source-registration.js";
7
- import { McpRuntimeServerBindingSchemaV1, } from "../../application/ports/mcp-runtime.js";
8
- import { verifyProjectionExpectation } from "../../application/ports/runtime-projection.js";
9
- const inspectSymbol = Symbol.for("nodejs.util.inspect.custom");
10
- class McpRevisionLeaseError extends Error {
11
- constructor() {
12
- super("MCP runtime revision lease is unavailable");
13
- this.name = "McpRevisionLeaseError";
14
- }
15
- }
16
- function sameJson(left, right) {
17
- return canonicalJson(left) === canonicalJson(right);
18
- }
19
- function createOpaqueToken(states, state) {
20
- const token = Object.create(null);
21
- Object.defineProperties(token, {
22
- toString: { value: () => "[REDACTED]" },
23
- toJSON: { value: () => "[REDACTED]" },
24
- [inspectSymbol]: { value: () => "[REDACTED]" },
25
- });
26
- states.set(token, state);
27
- return Object.freeze(token);
28
- }
29
- /**
30
- * Adapt one immutable MCP registration to the existing revision-retention
31
- * lease store. Selection authority remains owned by native composition; this
32
- * provider only pins its already-selected plugin and projection artifacts.
33
- */
34
- export function createMcpRevisionLeaseProvider(input) {
35
- if (input === null || typeof input !== "object" ||
36
- input.active === undefined || input.leases === undefined || input.clock === undefined ||
37
- typeof input.sessionId !== "string" || input.sessionId.length === 0 ||
38
- typeof input.sha256 !== "function") {
39
- throw new TypeError("MCP revision lease provider dependencies are required");
40
- }
41
- const registration = verifyMcpSourceRegistration(input.source, input.sha256);
42
- const states = new WeakMap();
43
- // A strong set is intentional: it preserves cleanup ownership even when an
44
- // acquire cannot transfer an opaque token to its caller.
45
- const outstanding = new Set();
46
- async function releaseState(state, signal) {
47
- if (state.released)
48
- return;
49
- if (state.releasing !== undefined)
50
- return state.releasing;
51
- const releasing = (async () => {
52
- try {
53
- signal.throwIfAborted();
54
- await input.leases.release(state.lease, input.clock.nowEpochMilliseconds(), signal);
55
- state.released = true;
56
- outstanding.delete(state);
57
- }
58
- catch {
59
- throw new McpRevisionLeaseError();
60
- }
61
- finally {
62
- state.releasing = undefined;
63
- }
64
- })();
65
- state.releasing = releasing;
66
- return releasing;
67
- }
68
- async function acquire(bindingInput, signal) {
69
- signal.throwIfAborted();
70
- let binding;
71
- try {
72
- binding = McpRuntimeServerBindingSchemaV1.parse(bindingInput);
73
- }
74
- catch {
75
- throw new McpRevisionLeaseError();
76
- }
77
- const server = registration.source.servers[binding.serverKey];
78
- if (!sameJson(binding.source, registration.source.identity) || server === undefined ||
79
- server.componentId !== binding.componentId || server.transport !== binding.transport) {
80
- throw new McpRevisionLeaseError();
81
- }
82
- let acquiredState;
83
- try {
84
- await input.active.withSelection(binding, signal, async (selection) => {
85
- if (acquiredState !== undefined)
86
- throw new McpRevisionLeaseError();
87
- signal.throwIfAborted();
88
- const expectation = verifyProjectionExpectation(selection.expectation, input.sha256);
89
- if (expectation.kind !== "active")
90
- throw new McpRevisionLeaseError();
91
- const revision = verifyInstalledRevisionRecord({
92
- ...selection.revision,
93
- scope: binding.source.scope,
94
- }, input.sha256);
95
- const component = McpServerComponentSchema.parse(selection.component);
96
- const selected = expectation.projection.components.mcpServers.filter((candidate) => candidate.id === binding.componentId);
97
- const template = createMcpLaunchTemplate(component, expectation.projection.plugin);
98
- const currentProject = selection.currentProject;
99
- if (!sameJson(expectation.projection.scope, binding.source.scope) ||
100
- expectation.projection.plugin !== binding.source.plugin ||
101
- expectation.projection.revision !== binding.source.revision ||
102
- expectation.projection.digest !== binding.source.projectionDigest ||
103
- revision.revision !== binding.source.revision ||
104
- revision.evidence.plugin.key !== binding.source.plugin ||
105
- revision.contentRef !== expectation.projection.contentRef ||
106
- revision.dataRef !== expectation.projection.dataRef ||
107
- revision.configurationRef !== expectation.projection.configurationRef ||
108
- selected.length !== 1 || !sameJson(selected[0], component) ||
109
- template.transport !== binding.transport ||
110
- !sameJson(server.projection, {
111
- schemaVersion: 1,
112
- componentId: component.id,
113
- contentRef: expectation.projection.contentRef,
114
- dataRef: expectation.projection.dataRef,
115
- ...(expectation.projection.configurationRef === undefined
116
- ? {}
117
- : { configurationRef: expectation.projection.configurationRef }),
118
- }) ||
119
- currentProject === undefined || currentProject.trust.kind !== "trusted" ||
120
- (binding.source.scope.kind === "project" &&
121
- currentProject.projectKey !== binding.source.scope.projectKey)) {
122
- throw new McpRevisionLeaseError();
123
- }
124
- const pluginStore = createPluginStoreIdentityFromEvidence({
125
- sourceHash: revision.evidence.source.sourceHash,
126
- binding: revision.revision,
127
- }, input.sha256);
128
- const lease = await input.leases.acquire({
129
- sessionId: input.sessionId,
130
- artifacts: [
131
- { kind: "plugin", key: pluginStore.key },
132
- { kind: "projection", reference: expectation.projectionRef },
133
- ],
134
- at: input.clock.nowEpochMilliseconds(),
135
- }, signal);
136
- acquiredState = { lease, released: false, releasing: undefined };
137
- outstanding.add(acquiredState);
138
- });
139
- signal.throwIfAborted();
140
- if (acquiredState === undefined)
141
- throw new McpRevisionLeaseError();
142
- return createOpaqueToken(states, acquiredState);
143
- }
144
- catch {
145
- if (acquiredState !== undefined) {
146
- try {
147
- await releaseState(acquiredState, new AbortController().signal);
148
- }
149
- catch {
150
- // The state stays in `outstanding`; runtime replacement/removal owns
151
- // the deterministic drain retry before it can report cleanup success.
152
- }
153
- }
154
- throw new McpRevisionLeaseError();
155
- }
156
- }
157
- async function release(lease, signal) {
158
- const state = states.get(lease);
159
- if (state === undefined)
160
- throw new McpRevisionLeaseError();
161
- return releaseState(state, signal);
162
- }
163
- async function drain(signal) {
164
- let failed = false;
165
- const pending = [...outstanding]
166
- .sort((left, right) => left.lease.leaseId.localeCompare(right.lease.leaseId));
167
- for (const state of pending) {
168
- try {
169
- await releaseState(state, signal);
170
- }
171
- catch {
172
- failed = true;
173
- }
174
- }
175
- if (failed)
176
- throw new McpRevisionLeaseError();
177
- }
178
- return Object.freeze({ acquire, release, drain });
179
- }
180
- //# sourceMappingURL=revision-lease-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"revision-lease-provider.js","sourceRoot":"","sources":["../../../src/runtime/mcp/revision-lease-provider.ts"],"names":[],"mappings":"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"}