@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,11 +1,10 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { createHash } from "node:crypto";
3
+ import { readFile } from "node:fs/promises";
3
4
  import { join } from "node:path";
4
5
  import { createHookFailureLog } from "../runtime/hooks/hook-failure-log.js";
5
6
  import { VERSION as PI_VERSION, getAgentDir } from "@earendil-works/pi-coding-agent";
6
7
  import { createCompatibilityService } from "../application/compatibility-service.js";
7
- import { createGenerationMutationCoordinator } from "../application/generation-mutation-coordinator.js";
8
- import { createLifecycleTransitionReconciler } from "../application/lifecycle-transition-reconciler.js";
9
8
  import { createMarketplaceInspectionService } from "../application/marketplace-inspection-service.js";
10
9
  import { createMarketplacePluginProbe } from "../application/marketplace-plugin-probe.js";
11
10
  import { createPluginLifecycleComposition } from "../application/plugin-lifecycle-service.js";
@@ -15,15 +14,14 @@ import { verifyPluginConfigurationDocument } from "../domain/configured-values.j
15
14
  import { createTrustCandidate } from "../domain/trust-policy.js";
16
15
  import { toScopeReference } from "../domain/state/scope.js";
17
16
  import { createRuntimeProjectionCache } from "../infrastructure/filesystem/runtime-projection-cache.js";
18
- import { createKeyedMutationScheduler } from "../infrastructure/state/keyed-mutation-scheduler.js";
19
- import { createSqliteScopeLockManager } from "../infrastructure/state/sqlite-scope-lock.js";
20
17
  import { createNodeLifecycleStateAdapters } from "../infrastructure/state/sqlite-lifecycle-state-store.js";
21
18
  import { createSqlitePluginConfigurationStore } from "../infrastructure/configuration/sqlite-plugin-configuration-store.js";
22
19
  import { createNodeConfigurationPathPort } from "../infrastructure/configuration/node-configuration-path.js";
23
20
  import { createNodeHostIdentifiers } from "../infrastructure/node/node-identifiers.js";
24
21
  import { createNodeLifecycleClock } from "../infrastructure/node/node-lifecycle-clock.js";
25
22
  import { createNodeContentInfrastructure } from "../infrastructure/filesystem/create-content-store.js";
26
- import { createNodeRecoveryAdapters } from "../infrastructure/recovery/create-node-recovery-adapters.js";
23
+ import { createNodeConvergenceService } from "../infrastructure/convergence/create-node-convergence.js";
24
+ import { createPendingDeleteMarkerStore } from "../infrastructure/cleanup/pending-data-deletion.js";
27
25
  import { createPlatformSecretStore } from "../infrastructure/secrets/create-platform-secret-store.js";
28
26
  import { createNodeMcpLaunchEnvironment } from "../infrastructure/environment/node-mcp-launch-environment.js";
29
27
  import { createNodeHookExecutableResolver } from "../infrastructure/process/hook-executable-resolver.js";
@@ -41,7 +39,6 @@ import { createCandidateContentLeasePort } from "./candidate-content-lease.js";
41
39
  import { createNativeInspectionComposition } from "./create-native-inspection-service.js";
42
40
  import { createComposedTrustedInstallationService } from "./create-trusted-installation-service.js";
43
41
  import { createComposedNativeLifecycleOperationService } from "./create-native-lifecycle-operation-service.js";
44
- import { createNativeUninstallCleanupService } from "../application/native-uninstall-cleanup.js";
45
42
  import { createNodeProjectIntentFilePort } from "../infrastructure/project/node-project-intent-file.js";
46
43
  import { deriveInspectionDetailId, deriveInspectionEvidenceSnapshotId } from "../application/native-inspection-identifiers.js";
47
44
  import { createHostConfigurationServices } from "./create-host-configuration.js";
@@ -49,6 +46,9 @@ import { createNodePiRuntimeCapabilityProbe } from "./node-pi-runtime-capability
49
46
  import { createPublishedSubagentLifecyclePort } from "./create-subagent-lifecycle.js";
50
47
  import { buildRuntimeDesiredState } from "./runtime-desired-state.js";
51
48
  import { createRuntimeSelectionCatalog } from "./runtime-selection-catalog.js";
49
+ import { createAgentOrientationFactsCollector } from "./agent-orientation-facts.js";
50
+ import { createAgentOrientationPublisher } from "../pi/agent-orientation-publisher.js";
51
+ import { assembleAgentOrientation, AgentOrientationUnavailableError } from "../application/agent-orientation.js";
52
52
  import { createComposedSkillHookRuntime } from "./create-skill-hook-runtime.js";
53
53
  import { createComposedMcpRuntime } from "./create-mcp-runtime.js";
54
54
  import { createCompletePluginReloadPort } from "./complete-plugin-reload.js";
@@ -73,6 +73,15 @@ import { createHookContextVisibilityProvider, createHookVisibilityService } from
73
73
  import { createNativeControlCurrentProjectPort } from "./create-native-control-current-project.js";
74
74
  import { createNodeControlTimeoutPort } from "../infrastructure/node/node-control-timeout.js";
75
75
  const sha256 = (bytes) => new Uint8Array(createHash("sha256").update(bytes).digest());
76
+ async function readPiPluginsPackageVersion() {
77
+ try {
78
+ const manifest = JSON.parse(await readFile(new URL("../../package.json", import.meta.url), "utf8"));
79
+ return typeof manifest.version === "string" && manifest.version.length > 0 ? manifest.version : "unknown";
80
+ }
81
+ catch {
82
+ return "unknown";
83
+ }
84
+ }
76
85
  /** Render a compact `A <- B <- C` description of thrown values and their cause chains. */
77
86
  function describeErrorChain(errors) {
78
87
  const parts = [];
@@ -89,13 +98,18 @@ function describeErrorChain(errors) {
89
98
  visit(error);
90
99
  return parts.join(" <- ");
91
100
  }
92
- function startupResult(input) {
101
+ export function startupResult(input) {
102
+ const blocked = [...input.blocked, ...(input.reconcileReport?.degraded ?? [])];
103
+ const uniqueBlocked = [...new Map(blocked.map((entry) => [
104
+ JSON.stringify([entry.scope, entry.plugin, entry.selectedRevision, entry.runningRevision, entry.code]),
105
+ entry,
106
+ ])).values()];
93
107
  const secrets = input.secrets === "available"
94
108
  ? { status: "available", explanation: "encrypted operating-system secret custody is available" }
95
109
  : { status: "unavailable", explanation: "encrypted operating-system secret custody is unavailable" };
96
110
  return Object.freeze({
97
- status: input.blocked.length === 0 ? "ready" : "degraded",
98
- blocked: Object.freeze(input.blocked.map((entry) => Object.freeze({ ...entry }))),
111
+ status: uniqueBlocked.length === 0 ? "ready" : "degraded",
112
+ blocked: Object.freeze(uniqueBlocked.map((entry) => Object.freeze({ ...entry }))),
99
113
  capabilities: Object.freeze({
100
114
  mcp: Object.freeze({ status: input.mcp.status, explanation: input.mcp.explanation }),
101
115
  subagents: Object.freeze({ status: input.subagents.status, explanation: input.subagents.explanation }),
@@ -144,6 +158,18 @@ export function createPackagedPluginHost(options) {
144
158
  let activeResources;
145
159
  let stopBackground;
146
160
  let wakeBackground;
161
+ let refreshOrientation;
162
+ let publishUnavailableOrientation;
163
+ let orientationPackageVersion = "unknown";
164
+ let orientationBriefPaths = [paths.orientationBrief({ kind: "user" })];
165
+ let orientationPublisher;
166
+ try {
167
+ orientationPublisher = createAgentOrientationPublisher({ pi: options.pi });
168
+ }
169
+ catch {
170
+ // Orientation is advisory. A host without the optional delivery method
171
+ // still starts and retains every lifecycle capability.
172
+ }
147
173
  async function start(_event, context) {
148
174
  if (terminal)
149
175
  throw new PackagedPluginHostError(PackagedPluginHostErrorCode.terminal, "packaged plugin host is terminal");
@@ -162,6 +188,7 @@ export function createPackagedPluginHost(options) {
162
188
  try {
163
189
  const binding = createPiSessionBinding(context);
164
190
  activeBinding = binding;
191
+ orientationPackageVersion = await readPiPluginsPackageVersion();
165
192
  const startupSignal = new AbortController().signal;
166
193
  // The packaged host has one lifecycle package selection. Test fakes
167
194
  // exercise the package-neutral port below its composition boundary.
@@ -171,6 +198,7 @@ export function createPackagedPluginHost(options) {
171
198
  nodeVersion: process.versions.node,
172
199
  piVersion: PI_VERSION,
173
200
  ...(options.runtime?.mcp === undefined ? {} : { mcp: options.runtime.mcp }),
201
+ ...(options.runtime?.mcpUnavailable === undefined ? {} : { mcpUnavailable: options.runtime.mcpUnavailable }),
174
202
  ...(subagentLifecycle === undefined ? {} : { subagents: subagentLifecycle }),
175
203
  signal: startupSignal,
176
204
  });
@@ -181,6 +209,10 @@ export function createPackagedPluginHost(options) {
181
209
  delegates.bindSession(binding);
182
210
  own(async () => delegates.clear());
183
211
  const project = await createPiProjectContextAdapters({ binding, sha256, git: createNodeCommandRunner() });
212
+ orientationBriefPaths = Object.freeze([
213
+ paths.orientationBrief({ kind: "user" }),
214
+ paths.orientationBrief(toScopeReference(project.scope)),
215
+ ]);
184
216
  const state = await createNodeLifecycleStateAdapters({ paths, currentProject: project.scope, sha256 });
185
217
  own(() => state.close());
186
218
  // Host precedence is read through the state store at call time so a
@@ -189,9 +221,8 @@ export function createPackagedPluginHost(options) {
189
221
  const hookVisibility = createHookContextVisibilityProvider(state.state);
190
222
  const configurations = await createSqlitePluginConfigurationStore({ root: paths.configurationRoot });
191
223
  own(async () => configurations[Symbol.asyncDispose]());
192
- const recoveryAdapters = await createNodeRecoveryAdapters({ hostRoot: paths.hostRoot });
193
- own(() => recoveryAdapters.close());
194
224
  const content = await createNodeContentInfrastructure({ hostRoot: paths.hostRoot });
225
+ const manifestContentReader = createManifestContentReader(sha256);
195
226
  const secrets = await createPlatformSecretStore();
196
227
  own(() => secrets.close());
197
228
  const identifiers = createNodeHostIdentifiers();
@@ -237,8 +268,6 @@ export function createPackagedPluginHost(options) {
237
268
  project,
238
269
  configuration: configuration.execution,
239
270
  hookVisibility,
240
- leases: recoveryAdapters.leases,
241
- clock,
242
271
  sha256,
243
272
  failureLog: createHookFailureLog({ file: join(paths.hostRoot, "logs", "hooks.jsonl") }),
244
273
  ...(qualification.subagents.lifecycle === undefined ? {} : { subagents: qualification.subagents.lifecycle }),
@@ -251,9 +280,6 @@ export function createPackagedPluginHost(options) {
251
280
  project,
252
281
  configuration: configuration.execution,
253
282
  environment: createNodeMcpLaunchEnvironment(),
254
- leases: recoveryAdapters.leases,
255
- clock,
256
- sessionId: binding.current().sessionId,
257
283
  sha256,
258
284
  });
259
285
  own(() => mcp.close());
@@ -274,10 +300,14 @@ export function createPackagedPluginHost(options) {
274
300
  projections,
275
301
  project,
276
302
  ...(qualification.mcp.runtime === undefined ? {} : { mcp: qualification.mcp.runtime }),
303
+ ...(qualification.mcp.status === "unavailable" && qualification.mcp.code !== undefined
304
+ ? { mcpUnavailable: { code: qualification.mcp.code, explanation: qualification.mcp.explanation } }
305
+ : {}),
277
306
  state: state.state,
278
307
  content: content.content,
279
308
  userBaseDirectory: binding.current().cwd,
280
309
  sha256,
310
+ subagentRegistrationAvailable: skillHook.subagentRegistrationAvailable,
281
311
  }, signal, overrides);
282
312
  return latestDesired;
283
313
  },
@@ -298,26 +328,20 @@ export function createPackagedPluginHost(options) {
298
328
  selections,
299
329
  skillHook,
300
330
  mcp,
301
- transitions: recoveryAdapters.transitions,
302
331
  markDraining: claim.markDraining,
303
332
  sha256,
304
333
  });
305
- const locks = await createSqliteScopeLockManager({
306
- lockRoot: paths.lockRoot,
307
- retryDelayMs: { minimum: 5, maximum: 100 },
308
- });
309
- const mutations = createGenerationMutationCoordinator({ scheduler: createKeyedMutationScheduler(), locks, state: state.state });
334
+ const mutations = state.state;
310
335
  const hostPrecedenceConfig = createHostPrecedenceService({ state: state.state, mutations, sha256 });
311
336
  const hookVisibilityConfig = createHookVisibilityService({ state: state.state, mutations, sha256 });
312
- const reconciler = createLifecycleTransitionReconciler({ mutations, state: state.state, reload, transitions: recoveryAdapters.transitionStore, sha256 });
313
337
  const sourceOptions = {
314
338
  ...(options.source ?? {}),
315
339
  networkPolicy: options.source?.networkPolicy ?? networkEgressPolicyOptionsFromEnvironment(process.env),
316
340
  };
317
341
  const materializers = createNodeSourceMaterializers(sourceOptions);
342
+ const pendingDeletes = createPendingDeleteMarkerStore({ root: join(paths.hostRoot, "cleanup", "v1", "pending-deletes") });
318
343
  const lifecycleComposition = createPluginLifecycleComposition({
319
344
  state: state.state,
320
- mutations,
321
345
  content: content.content,
322
346
  materializer: materializers.plugins,
323
347
  inspector: inspection,
@@ -325,28 +349,27 @@ export function createPackagedPluginHost(options) {
325
349
  installed: content.installed,
326
350
  projections,
327
351
  reload,
328
- transitions: recoveryAdapters.transitionStore,
329
- operationIds: identifiers.operationIds,
330
352
  projectTrust: project.trust,
331
353
  projectRoots: project.authority,
332
354
  configurations,
333
355
  secrets: secrets.store,
334
356
  paths: configurationPaths,
357
+ pendingDeletes,
358
+ dataRemoval: content.dataRemoval,
335
359
  sha256,
336
360
  });
337
361
  const lifecycle = lifecycleComposition.application;
338
- const uninstallCleanup = createNativeUninstallCleanupService({ transitions: recoveryAdapters.transitions, data: content.dataRemoval, clock });
339
- const recovery = recoveryAdapters.createRecoveryService({
362
+ const convergence = createNodeConvergenceService({
340
363
  state: state.state,
341
364
  inventory: state.inventory,
342
- reconciler,
343
- reload,
344
- uninstallCleanup,
365
+ hostRoot: paths.hostRoot,
366
+ dataRemoval: content.dataRemoval,
367
+ sha256,
345
368
  clock,
369
+ projectionReferences: () => latestDesired === undefined ? undefined : new Set(latestDesired.selections.flatMap((selection) => selection.skillHook.prepared.expectation.kind === "active" ? [selection.skillHook.prepared.expectation.projectionRef.slice(selection.skillHook.prepared.expectation.projectionRef.lastIndexOf(":") + 1)] : [])),
346
370
  });
347
- const collection = recoveryAdapters.createCollectionService({ state: state.state, inventory: state.inventory, mutations, clock });
348
371
  const marketplaceInspection = createMarketplaceInspectionService({
349
- content: createManifestContentReader(sha256),
372
+ content: manifestContentReader,
350
373
  readers: { claude: readClaudeMarketplace, codex: readCodexMarketplace, merge: mergeMarketplaces },
351
374
  sha256,
352
375
  hostPrecedence,
@@ -379,9 +402,16 @@ export function createPackagedPluginHost(options) {
379
402
  });
380
403
  const marketplace = marketplaceComposition.application;
381
404
  const runtimeStartupBlocked = [];
405
+ let runtimeStartupReport;
406
+ const recordStartupReport = (report) => {
407
+ // MCP apply failures are part of the successor report, not the
408
+ // desired-state snapshot. Keep that report in startup visibility so
409
+ // a plugin cannot look healthy merely because skills reconstructed.
410
+ runtimeStartupReport = report;
411
+ };
382
412
  if (successor === undefined) {
383
413
  try {
384
- await reload.reconcileCurrent(startupSignal);
414
+ recordStartupReport(await reload.reconcileCurrent(startupSignal));
385
415
  }
386
416
  catch (error) {
387
417
  if (startupSignal.aborted)
@@ -395,7 +425,7 @@ export function createPackagedPluginHost(options) {
395
425
  }
396
426
  else {
397
427
  try {
398
- await reload.acceptSuccessor(successor, startupSignal);
428
+ recordStartupReport(await reload.acceptSuccessor(successor, startupSignal));
399
429
  reloadSuccessor = Object.freeze({ ticket: successor, reload });
400
430
  }
401
431
  catch (error) {
@@ -403,32 +433,16 @@ export function createPackagedPluginHost(options) {
403
433
  runtimeStartupBlocked.push({
404
434
  plugin: "host-runtime",
405
435
  code: "RUNTIME_RECONSTRUCTION_FAILED",
406
- explanation: "reload successor reconstruction failed; recovery remains authoritative",
436
+ explanation: "reload successor reconstruction failed; convergence will retry on the next start",
407
437
  });
408
438
  }
409
439
  }
410
- // Recovery runs after runtime reconstruction so activation
411
- // observations exist when pending transitions are classified: a
412
- // committed candidate whose projection now runs finalizes as
413
- // completed. Before this ordering, the sweep ran with an empty
414
- // observation map and compensated (rolled back) every interrupted
415
- // transition on every start. If reconstruction failed, observations
416
- // are absent and recovery keeps the conservative compensate path.
417
- const recoveryResult = await recovery.recover({
418
- requiredScopes: [{ kind: "user" }, project.scope],
419
- ...(successor === undefined ? {} : { reservedTransitions: [successor.transition] }),
420
- }, startupSignal);
421
- const unresolvedRecovery = successor === undefined
422
- ? recoveryResult.results
423
- .filter((result) => result.kind === "blocked" || result.kind === "deferred")
424
- .map((result) => ({
425
- plugin: result.plugin ?? "host-recovery",
426
- code: `RECOVERY_${result.code}`,
427
- explanation: "startup recovery did not settle authoritative pending state",
428
- }))
429
- : [];
440
+ const convergenceResult = await convergence.sweep({ scopes: [{ kind: "user" }, project.scope], signal: startupSignal });
441
+ const unresolvedConvergence = convergenceResult.results.filter((result) => result.kind !== "completed").map((result) => ({ plugin: result.plugin ?? "convergence", code: `CONVERGENCE_${result.code}`, explanation: "startup convergence retained work for a later pass" }));
442
+ const runtimeBlocked = [...(latestDesired?.degraded ?? []), ...(runtimeStartupReport?.degraded ?? []), ...runtimeStartupBlocked];
430
443
  const startup = startupResult({
431
- blocked: [...(latestDesired?.blocked ?? []), ...unresolvedRecovery, ...runtimeStartupBlocked],
444
+ blocked: [...(latestDesired?.degraded ?? []), ...unresolvedConvergence, ...runtimeStartupBlocked],
445
+ ...(runtimeStartupReport === undefined ? {} : { reconcileReport: runtimeStartupReport }),
432
446
  mcp: qualification.mcp,
433
447
  subagents: qualification.subagents,
434
448
  piReload: qualification.hostApi,
@@ -436,10 +450,52 @@ export function createPackagedPluginHost(options) {
436
450
  });
437
451
  const hostStatus = createHostStatusService({
438
452
  startup,
439
- recovery: unresolvedRecovery.length === 0 ? "settled" : "degraded",
440
- runtime: [...(latestDesired?.blocked ?? []), ...runtimeStartupBlocked].length === 0 ? "reconciled" : "degraded",
453
+ convergence: unresolvedConvergence.length === 0 ? "settled" : "degraded",
454
+ runtime: runtimeBlocked.length === 0 ? "reconciled" : "degraded",
441
455
  schedulerStatus: marketplaceComposition.updates.schedulerStatus,
442
456
  });
457
+ const orientationFacts = createAgentOrientationFactsCollector({
458
+ paths,
459
+ packageVersion: orientationPackageVersion,
460
+ state: state.state,
461
+ project,
462
+ installed: content.installed,
463
+ content: content.content,
464
+ contentReader: manifestContentReader,
465
+ selections,
466
+ startup,
467
+ latestDesired: () => latestDesired,
468
+ sha256,
469
+ });
470
+ refreshOrientation = async () => {
471
+ if (orientationPublisher === undefined)
472
+ return;
473
+ const signal = new AbortController().signal;
474
+ const collected = await orientationFacts.collect(signal);
475
+ const orientation = assembleAgentOrientation(collected.input);
476
+ // Recheck after pure assembly and immediately before the adapter
477
+ // write. No lock is introduced; a later mutation is picked up by
478
+ // the next admitted-operation refresh.
479
+ if (!await orientationFacts.isCurrent(collected, signal))
480
+ return;
481
+ await orientationPublisher.publish(orientation, collected.input.briefPath, context);
482
+ };
483
+ publishUnavailableOrientation = async (error, unavailableContext) => {
484
+ if (orientationPublisher === undefined)
485
+ return;
486
+ const code = error instanceof AgentOrientationUnavailableError
487
+ ? error.code
488
+ : "ORIENTATION_STATE_UNAVAILABLE";
489
+ for (const briefPath of orientationBriefPaths) {
490
+ await orientationPublisher.publishUnavailable({
491
+ briefPath,
492
+ code,
493
+ packageVersion: orientationPackageVersion,
494
+ sha256,
495
+ context: unavailableContext,
496
+ });
497
+ }
498
+ };
443
499
  const candidateContent = createCandidateContentLeasePort({ content: content.content, materializer: materializers.plugins });
444
500
  const nativeInspection = createNativeInspectionComposition({
445
501
  state: state.state,
@@ -450,7 +506,7 @@ export function createPackagedPluginHost(options) {
450
506
  skillHook: skillHook.participant,
451
507
  mcp: mcp.participant,
452
508
  capabilities: capabilitySnapshot,
453
- recovery: recoveryResult,
509
+ convergence: convergenceResult,
454
510
  startup,
455
511
  status: hostStatus,
456
512
  configurations,
@@ -563,7 +619,6 @@ export function createPackagedPluginHost(options) {
563
619
  projectWriteIds: identifiers.projectIntentWriteIds,
564
620
  registrations: marketplaceComposition.application.registration,
565
621
  lifecycle: lifecycleComposition,
566
- uninstallCleanup,
567
622
  clock,
568
623
  sessionIds: identifiers.operationIds,
569
624
  hostEpoch,
@@ -608,6 +663,7 @@ export function createPackagedPluginHost(options) {
608
663
  cancel: requireOperationContext(operations.application.cancel),
609
664
  });
610
665
  const background = createBackgroundUpdateCoordinator({
666
+ convergence: { sweep: async (signal) => { await convergence.sweep({ scopes: [{ kind: "user" }, project.scope], signal }); } },
611
667
  scheduler: marketplaceComposition.updates.scheduler,
612
668
  schedulerStatus: marketplaceComposition.updates.schedulerStatus,
613
669
  notifications: updates.notifications,
@@ -723,7 +779,7 @@ export function createPackagedPluginHost(options) {
723
779
  });
724
780
  started = value;
725
781
  // Background maintenance is detached: session_start returns from local
726
- // recovery/reconciliation even if a remote adapter or publisher hangs.
782
+ // convergence even if a remote adapter or publisher hangs.
727
783
  void background.start();
728
784
  return value;
729
785
  }
@@ -771,6 +827,9 @@ export function createPackagedPluginHost(options) {
771
827
  finally {
772
828
  activeBinding = undefined;
773
829
  activeResources = undefined;
830
+ orientationBriefPaths = [paths.orientationBrief({ kind: "user" })];
831
+ refreshOrientation = undefined;
832
+ publishUnavailableOrientation = undefined;
774
833
  if (reloadSuccessor !== undefined) {
775
834
  try {
776
835
  reloadSuccessor.reload.failSuccessor(reloadSuccessor.ticket);
@@ -832,6 +891,11 @@ export function createPackagedPluginHost(options) {
832
891
  return await operationContexts.run(frame, () => use(current.application));
833
892
  }
834
893
  finally {
894
+ // A committed foreground mutation is the completion boundary for the
895
+ // derived brief. The refresh is advisory, but awaiting it ensures a
896
+ // successful operation does not return before its orientation write is
897
+ // attempted. State-generation checks make read-only operations cheap.
898
+ await refreshOrientation?.().catch(() => undefined);
835
899
  // Lifecycle/local operations may settle installed state and notices.
836
900
  // Wake the one owner without coupling the foreground result to it.
837
901
  wakeBackground?.();
@@ -847,7 +911,39 @@ export function createPackagedPluginHost(options) {
847
911
  };
848
912
  const target = Object.freeze({
849
913
  async sessionStart(event, context) {
850
- await start(event, context);
914
+ try {
915
+ await start(event, context);
916
+ }
917
+ catch (error) {
918
+ // Startup failure must not strand an old brief. Replace it with an
919
+ // honest marker, then preserve the host's existing startup error.
920
+ try {
921
+ if (orientationPublisher !== undefined) {
922
+ for (const briefPath of orientationBriefPaths) {
923
+ await orientationPublisher.publishUnavailable({
924
+ briefPath,
925
+ code: error instanceof AgentOrientationUnavailableError ? error.code : "ORIENTATION_STATE_UNAVAILABLE",
926
+ packageVersion: orientationPackageVersion,
927
+ sha256,
928
+ context,
929
+ });
930
+ }
931
+ }
932
+ }
933
+ catch {
934
+ // Orientation cannot turn a host startup failure into a second error.
935
+ }
936
+ throw error;
937
+ }
938
+ try {
939
+ await refreshOrientation?.();
940
+ }
941
+ catch (error) {
942
+ try {
943
+ await publishUnavailableOrientation?.(error, context);
944
+ }
945
+ catch { /* informational surface only */ }
946
+ }
851
947
  sessionStartDispatch ??= delegates.dispatchSessionStart(event, context);
852
948
  await sessionStartDispatch;
853
949
  },
@@ -859,11 +955,26 @@ export function createPackagedPluginHost(options) {
859
955
  const resources = activeResources;
860
956
  const result = await resources.discover({ reason: _event.reason, projectTrusted: activeBinding?.isProjectTrusted() === true }, new AbortController().signal);
861
957
  if (result.kind === "ready" && reloadSuccessor !== undefined) {
862
- reloadSuccessor.reload.publishSuccessor(reloadSuccessor.ticket);
863
- reloadSuccessor = undefined;
958
+ const successor = reloadSuccessor;
959
+ try {
960
+ successor.reload.publishSuccessor(successor.ticket);
961
+ }
962
+ catch (error) {
963
+ try {
964
+ successor.reload.failSuccessor(successor.ticket, error);
965
+ }
966
+ catch { /* broker may already be settled */ }
967
+ }
968
+ finally {
969
+ reloadSuccessor = undefined;
970
+ }
864
971
  }
865
972
  else if (result.kind !== "ready" && reloadSuccessor !== undefined) {
866
- reloadSuccessor.reload.failSuccessor(reloadSuccessor.ticket, new Error("Pi reload resource publication failed"));
973
+ const successor = reloadSuccessor;
974
+ try {
975
+ successor.reload.failSuccessor(successor.ticket, new Error("Pi reload resource publication failed"));
976
+ }
977
+ catch { /* broker may already be settled */ }
867
978
  reloadSuccessor = undefined;
868
979
  }
869
980
  return result.kind === "ready" ? { skillPaths: [...(result.skillPaths ?? [])] } : undefined;