@nklisch/pi-enhanced 0.1.1 → 0.1.2

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 (159) hide show
  1. package/node_modules/@nklisch/pi-conveniences/package.json +5 -2
  2. package/node_modules/@nklisch/pi-fff-compat/package.json +5 -2
  3. package/node_modules/@nklisch/pi-plugins/README.md +16 -13
  4. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.d.ts +0 -2
  5. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js +15 -21
  6. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-coordinator.js.map +1 -1
  7. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.d.ts +0 -3
  8. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js +0 -1
  9. package/node_modules/@nklisch/pi-plugins/dist/application/automatic-update-eligibility.js.map +1 -1
  10. package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.d.ts +110 -0
  11. package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.js +186 -0
  12. package/node_modules/@nklisch/pi-plugins/dist/application/installed-trust-grant-service.js.map +1 -0
  13. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.d.ts +3 -0
  14. package/node_modules/@nklisch/pi-plugins/dist/application/lifecycle-transition-reconciler.js.map +1 -1
  15. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-plugin-probe.d.ts +0 -1
  16. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-plugin-probe.js +38 -11
  17. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-plugin-probe.js.map +1 -1
  18. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.d.ts +2 -0
  19. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js +22 -2
  20. package/node_modules/@nklisch/pi-plugins/dist/application/marketplace-refresh-service.js.map +1 -1
  21. package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.d.ts +11 -0
  22. package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.js +58 -0
  23. package/node_modules/@nklisch/pi-plugins/dist/application/native-automatic-run-presenter.js.map +1 -0
  24. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-contract.d.ts +1 -0
  25. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js +1 -0
  26. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-dispatcher.js.map +1 -1
  27. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-help.d.ts +3 -1
  28. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js +38 -2
  29. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-mutation-dispatch.js.map +1 -1
  30. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-operation.d.ts +2505 -2439
  31. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.d.ts +1 -0
  32. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js +2 -1
  33. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-parser.js.map +1 -1
  34. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-progress.d.ts +2 -0
  35. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.d.ts +23 -0
  36. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js +5 -2
  37. package/node_modules/@nklisch/pi-plugins/dist/application/native-control-registry.js.map +1 -1
  38. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.d.ts +12 -1
  39. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js +2 -1
  40. package/node_modules/@nklisch/pi-plugins/dist/application/native-diagnostic-registry.js.map +1 -1
  41. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js +1 -1
  42. package/node_modules/@nklisch/pi-plugins/dist/application/native-failure-presenter.js.map +1 -1
  43. package/node_modules/@nklisch/pi-plugins/dist/application/native-inspection-contract.d.ts +5 -0
  44. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js +7 -2
  45. package/node_modules/@nklisch/pi-plugins/dist/application/native-installed-inspection.js.map +1 -1
  46. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.d.ts +464 -0
  47. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js +3 -2
  48. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-contract.js.map +1 -1
  49. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js +1 -1
  50. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation-session.js.map +1 -1
  51. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-operation.d.ts +77 -11
  52. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js +3 -0
  53. package/node_modules/@nklisch/pi-plugins/dist/application/native-lifecycle-result.js.map +1 -1
  54. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.d.ts +11 -1
  55. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js +9 -1
  56. package/node_modules/@nklisch/pi-plugins/dist/application/native-update-contract.js.map +1 -1
  57. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.d.ts +22 -1
  58. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js +21 -2
  59. package/node_modules/@nklisch/pi-plugins/dist/application/plugin-lifecycle-service.js.map +1 -1
  60. package/node_modules/@nklisch/pi-plugins/dist/application/ports/automatic-update-lifecycle.d.ts +4 -0
  61. package/node_modules/@nklisch/pi-plugins/dist/application/ports/native-control-applications.d.ts +2 -0
  62. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.d.ts +15 -0
  63. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js +1 -1
  64. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-contract.js.map +1 -1
  65. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js +4 -0
  66. package/node_modules/@nklisch/pi-plugins/dist/application/trusted-install-service.js.map +1 -1
  67. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js +88 -80
  68. package/node_modules/@nklisch/pi-plugins/dist/composition/automatic-update-lifecycle-adapter.js.map +1 -1
  69. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js +32 -4
  70. package/node_modules/@nklisch/pi-plugins/dist/composition/complete-plugin-reload.js.map +1 -1
  71. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.d.ts +0 -2
  72. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.js +0 -1
  73. package/node_modules/@nklisch/pi-plugins/dist/composition/create-native-update-management-service.js.map +1 -1
  74. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js +43 -9
  75. package/node_modules/@nklisch/pi-plugins/dist/composition/create-packaged-plugin-host.js.map +1 -1
  76. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js +4 -3
  77. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-host-startup.js.map +1 -1
  78. package/node_modules/@nklisch/pi-plugins/dist/composition/packaged-plugin-host-contract.d.ts +2 -2
  79. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js +21 -7
  80. package/node_modules/@nklisch/pi-plugins/dist/composition/runtime-desired-state.js.map +1 -1
  81. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-session-environment.d.ts +23 -0
  82. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-session-environment.js +30 -0
  83. package/node_modules/@nklisch/pi-plugins/dist/domain/mcp-session-environment.js.map +1 -0
  84. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js +2 -0
  85. package/node_modules/@nklisch/pi-plugins/dist/domain/update-policy.js.map +1 -1
  86. package/node_modules/@nklisch/pi-plugins/dist/index.d.ts +0 -1
  87. package/node_modules/@nklisch/pi-plugins/dist/index.js.map +1 -1
  88. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-root-resolver.js +8 -1
  89. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/project/node-project-root-resolver.js.map +1 -1
  90. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.d.ts +0 -2
  91. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js +3 -52
  92. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/local-recovery-filesystem.js.map +1 -1
  93. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js +6 -8
  94. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/process-revision-leases.js.map +1 -1
  95. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js +6 -6
  96. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-revision-retention.js.map +1 -1
  97. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js +4 -49
  98. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/recovery/sqlite-transition-journal.js.map +1 -1
  99. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js +9 -18
  100. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-lifecycle-state-store.js.map +1 -1
  101. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-open.d.ts +23 -0
  102. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-open.js +80 -0
  103. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-open.js.map +1 -0
  104. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.d.ts +1 -11
  105. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js +59 -593
  106. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/sqlite-scope-lock.js.map +1 -1
  107. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js +2 -1
  108. package/node_modules/@nklisch/pi-plugins/dist/pi/extension.js.map +1 -1
  109. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js +2 -2
  110. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-install-component.js.map +1 -1
  111. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.d.ts +7 -1
  112. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js +26 -2
  113. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-actions.js.map +1 -1
  114. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-commands.d.ts +1 -1
  115. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-commands.js +1 -1
  116. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-commands.js.map +1 -1
  117. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-component.d.ts +4 -0
  118. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-component.js +24 -2
  119. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-component.js.map +1 -1
  120. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js +9 -1
  121. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-controller.js.map +1 -1
  122. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.d.ts +4 -0
  123. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js +5 -0
  124. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-model.js.map +1 -1
  125. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.d.ts +3 -0
  126. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js +20 -12
  127. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-render.js.map +1 -1
  128. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js +43 -14
  129. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-manager-session.js.map +1 -1
  130. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js +13 -8
  131. package/node_modules/@nklisch/pi-plugins/dist/pi/manager/plugin-operation-view.js.map +1 -1
  132. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js +2 -2
  133. package/node_modules/@nklisch/pi-plugins/dist/pi/native-control-human.js.map +1 -1
  134. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-reload-broker.d.ts +2 -2
  135. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-trust-review.d.ts +8 -0
  136. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-trust-review.js +93 -0
  137. package/node_modules/@nklisch/pi-plugins/dist/pi/pi-trust-review.js.map +1 -0
  138. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js +3 -3
  139. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-command.js.map +1 -1
  140. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-manager-lifecycle.d.ts +2 -0
  141. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-manager-lifecycle.js +8 -2
  142. package/node_modules/@nklisch/pi-plugins/dist/pi/plugin-manager-lifecycle.js.map +1 -1
  143. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-value-provider.js +24 -0
  144. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/launch-value-provider.js.map +1 -1
  145. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-package.js +1 -1
  146. package/node_modules/@nklisch/pi-plugins/dist/runtime/mcp/pi-mcp-adapter-runtime.js +1 -1
  147. package/node_modules/@nklisch/pi-plugins/package.json +2 -2
  148. package/package.json +7 -7
  149. package/node_modules/@nklisch/pi-conveniences/extensions/agents-context.test.ts +0 -140
  150. package/node_modules/@nklisch/pi-conveniences/extensions/context-window-footer.test.ts +0 -30
  151. package/node_modules/@nklisch/pi-conveniences/extensions/exit.test.ts +0 -44
  152. package/node_modules/@nklisch/pi-conveniences/extensions/model-list.test.ts +0 -34
  153. package/node_modules/@nklisch/pi-fff-compat/extensions/fff-compat-search.test.ts +0 -76
  154. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-activation-context.d.ts +0 -4
  155. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-activation-context.js +0 -2
  156. package/node_modules/@nklisch/pi-plugins/dist/application/ports/update-activation-context.js.map +0 -1
  157. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/identity-bound-sqlite.d.ts +0 -22
  158. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/identity-bound-sqlite.js +0 -256
  159. package/node_modules/@nklisch/pi-plugins/dist/infrastructure/state/identity-bound-sqlite.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nklisch/pi-conveniences",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Small drop-in quality-of-life conveniences for Pi — /exit, .agents/AGENTS.md context loading, context-window footer, and subagent model listing.",
5
5
  "author": {
6
6
  "name": "nklisch"
@@ -44,5 +44,8 @@
44
44
  "@earendil-works/pi-ai": "0.82.0",
45
45
  "@earendil-works/pi-coding-agent": "0.82.0",
46
46
  "@earendil-works/pi-tui": "0.82.0"
47
- }
47
+ },
48
+ "files": [
49
+ "extensions"
50
+ ]
48
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nklisch/pi-fff-compat",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Fast FFF-backed file search through Pi-native find/grep semantics — glob-only file lookup and exact regex/literal grep with no fuzzy fallback.",
5
5
  "author": {
6
6
  "name": "nklisch"
@@ -47,5 +47,8 @@
47
47
  },
48
48
  "scripts": {
49
49
  "test": "bun test extensions/*.test.ts"
50
- }
50
+ },
51
+ "files": [
52
+ "extensions"
53
+ ]
51
54
  }
@@ -8,7 +8,7 @@ Native plugin management for [Pi](https://github.com/badlogic/pi-mono), with com
8
8
  - transactional install, enable, disable, update, recovery, and uninstall;
9
9
  - Agent Skills and command-hook activation;
10
10
  - receipt-qualified MCP and subagent lifecycle integration;
11
- - deterministic `/plugin` commands and a Pi-native interactive manager;
11
+ - deterministic `/plugins` commands and a Pi-native interactive manager;
12
12
  - offline-safe startup, update policy, diagnostics, and multiprocess coordination.
13
13
 
14
14
  ## Requirements
@@ -22,24 +22,27 @@ Native plugin management for [Pi](https://github.com/badlogic/pi-mono), with com
22
22
  pi install npm:@nklisch/pi-plugins
23
23
  ```
24
24
 
25
- Then start Pi and run `/plugin`. The manager uses the same progressive list footprint as Pi settings: choose **My Plugins**, **Discover**, **Sources**, **Updates**, or **Health**, then drill into an item and its available actions. Escape returns one level. On a clean installation, open Sources and choose **Add Source**, or use:
25
+ Then start Pi and run `/plugins`. The manager uses the same progressive list footprint as Pi settings: choose **My Plugins**, **Discover**, **Sources**, **Updates**, or **Health**, then drill into an item and its available actions. Escape returns one level. On a clean installation, open Sources and choose **Add Source**, or use:
26
26
 
27
27
  ```text
28
- /plugin marketplace add nklisch/skills
29
- /plugin add <plugin@marketplace> --scope user
28
+ /plugins marketplace add nklisch/skills
29
+ /plugins add <plugin@marketplace> --scope user
30
30
  ```
31
31
 
32
- `/plugin add` adds the complete plugin to the selected user or project plugin list, collects any required configuration and executable trust, installs and enables it, and reloads Pi when activation changes. Use `/plugin help` for the concise command surface:
32
+ `/plugins add` adds the complete plugin to the selected user or project plugin list, collects any required configuration and executable trust, installs and enables it, and reloads Pi when activation changes. Use `/plugins help` for the concise command surface:
33
+
34
+ If an installed plugin's executable content changes outside a managed update (a rebuilt local source, a refreshed payload), its exact-trust grant no longer covers it and its hooks and MCP servers stop. At the next session start Pi asks whether to trust the changed content again; accepting records the grant and one `/reload` reactivates the plugin. The same remedy is available any time as the manager's **Trust plugin** action or `/plugins trust`.
33
35
 
34
36
  ```text
35
- /plugin add <plugin> --scope user|project
36
- /plugin remove <plugin> --scope user|project --keep-data|--delete-data
37
- /plugin update <plugin> --scope user|project
38
- /plugin enable <plugin> --scope user|project
39
- /plugin disable <plugin> --scope user|project
40
- /plugin list
41
- /plugin doctor [plugin]
42
- /plugin marketplace add|list|refresh|remove ...
37
+ /plugins add <plugin> --scope user|project
38
+ /plugins remove <plugin> --scope user|project --keep-data|--delete-data
39
+ /plugins update <plugin> --scope user|project
40
+ /plugins enable <plugin> --scope user|project
41
+ /plugins disable <plugin> --scope user|project
42
+ /plugins trust <plugin> --scope user|project --yes
43
+ /plugins list
44
+ /plugins doctor [plugin]
45
+ /plugins marketplace add|list|refresh|remove ...
43
46
  ```
44
47
 
45
48
  The older `install`, `uninstall`, and `diagnose` forms remain accepted as compatibility aliases. Workflow-phase and operation-token routes remain available to automation but are intentionally omitted from normal help and completion.
@@ -8,7 +8,6 @@ import type { AutomaticUpdateLifecyclePort } from "./ports/automatic-update-life
8
8
  import type { LifecycleClock } from "./ports/lifecycle-clock.js";
9
9
  import type { LifecycleStateInventoryPort } from "./ports/lifecycle-state-inventory.js";
10
10
  import type { LifecycleStateStore } from "./ports/lifecycle-state-store.js";
11
- import type { UpdateActivationContextPort } from "./ports/update-activation-context.js";
12
11
  import type { UpdatePolicyAuthorityPort } from "./ports/update-policy-authority.js";
13
12
  import { type CurrentScopeAuthorityDependencies } from "./current-scope-authority.js";
14
13
  export interface AutomaticUpdateCoordinator {
@@ -24,7 +23,6 @@ export type AutomaticUpdateCoordinatorDependencies = Readonly<{
24
23
  mutations: GenerationMutationCoordinator;
25
24
  policy: UpdatePolicyAuthorityPort;
26
25
  lifecycle: AutomaticUpdateLifecyclePort;
27
- activation: UpdateActivationContextPort;
28
26
  continuity: AutomaticTrustContinuity;
29
27
  clock: LifecycleClock;
30
28
  sha256: Sha256;
@@ -60,10 +60,6 @@ export function createAutomaticUpdateCoordinator(dependencies) {
60
60
  return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "retryable", retryAt: notice.automatic.retryAt });
61
61
  }
62
62
  }
63
- // Without a live reload-capable context, defer before candidate materialization
64
- // or lifecycle inspection. Every authority is reread on the admitted call.
65
- if (dependencies.activation.availability() !== "available")
66
- return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "awaiting-host-context" });
67
63
  const authority = await dependencies.lifecycle.inspect(notice, signal);
68
64
  if (authority.source === "changed")
69
65
  return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "approval-required" });
@@ -79,8 +75,6 @@ export function createAutomaticUpdateCoordinator(dependencies) {
79
75
  return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "secret-unavailable" });
80
76
  if (authority.capability === "unavailable")
81
77
  return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "capability-unavailable" });
82
- if (dependencies.activation.availability() !== "available")
83
- return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "awaiting-host-context" });
84
78
  return AutomaticUpdateEligibilitySchema.parse({ noticeId, kind: "eligible" });
85
79
  }
86
80
  async function updateNotice(context, id, update, signal) {
@@ -127,7 +121,6 @@ export function createAutomaticUpdateCoordinator(dependencies) {
127
121
  case "eligible": return notice;
128
122
  case "manual": return UpdateNoticeSchema.parse({ ...notice, disposition: "manual-required", automatic: undefined });
129
123
  case "approval-required": return UpdateNoticeSchema.parse({ ...notice, disposition: "approval-required", automatic: { state: "blocked", reason: "approval-required", attemptedAt } });
130
- case "awaiting-host-context": return UpdateNoticeSchema.parse({ ...notice, disposition: "automatic-pending", automatic: { state: "pending", reason: "awaiting-host-context", attemptedAt } });
131
124
  case "configuration-required": return UpdateNoticeSchema.parse({ ...notice, disposition: "configuration-blocked", automatic: { state: "blocked", reason: "configuration-required", attemptedAt } });
132
125
  case "secret-unavailable": return UpdateNoticeSchema.parse({ ...notice, disposition: "configuration-blocked", automatic: { state: "blocked", reason: "secret-unavailable", attemptedAt } });
133
126
  case "capability-unavailable": return UpdateNoticeSchema.parse({ ...notice, disposition: "capability-blocked", automatic: { state: "blocked", reason: "capability-unavailable", attemptedAt } });
@@ -153,6 +146,11 @@ export function createAutomaticUpdateCoordinator(dependencies) {
153
146
  kind: result.kind === "changed" ? "applied" : "current",
154
147
  notice: UpdateNoticeSchema.parse({ ...notice, disposition: "automatic-applied", automatic: { state: "applied", attemptedAt }, resolution: { kind: "installed", at: attemptedAt } }),
155
148
  };
149
+ if (result.kind === "staged")
150
+ return {
151
+ kind: "staged",
152
+ notice: UpdateNoticeSchema.parse({ ...notice, disposition: "automatic-applied", automatic: { state: "applied", attemptedAt }, resolution: { kind: "installed", at: attemptedAt } }),
153
+ };
156
154
  if (result.kind === "recovery-required")
157
155
  return {
158
156
  kind: "recovery-required",
@@ -162,7 +160,7 @@ export function createAutomaticUpdateCoordinator(dependencies) {
162
160
  if (result.kind === "stale")
163
161
  return { kind: "stale", reason: "stale", notice: eligibilityUpdate(notice, AutomaticUpdateEligibilitySchema.parse({ noticeId: notice.id, kind: "stale" })) };
164
162
  if (result.kind === "cancelled-before-commit")
165
- return { kind: "pending", reason: "cancelled-before-commit", notice: UpdateNoticeSchema.parse({ ...notice, disposition: "automatic-pending", automatic: { state: "pending", reason: "awaiting-host-context", attemptedAt } }) };
163
+ return { kind: "pending", reason: "cancelled-before-commit", notice: UpdateNoticeSchema.parse({ ...notice, disposition: "automatic-pending", automatic: { state: "pending", attemptedAt } }) };
166
164
  const retryAt = attemptedAt + AUTOMATIC_RETRY_BASE_MS;
167
165
  if (result.kind === "rolled-back") {
168
166
  return { kind: "retryable", reason: "rolled-back", notice: eligibilityUpdate(notice, AutomaticUpdateEligibilitySchema.parse({ noticeId: notice.id, kind: "retryable", retryAt })) };
@@ -204,24 +202,20 @@ export function createAutomaticUpdateCoordinator(dependencies) {
204
202
  const eligibility = await evaluate({ noticeId: candidate.notice.id }, signal, parsed.explicit === true);
205
203
  if (eligibility.kind !== "eligible") {
206
204
  await updateNotice(candidate.context, candidate.notice.id, (notice) => eligibilityUpdate(notice, eligibility), signal);
207
- outcomes.push({ noticeId: candidate.notice.id, kind: eligibility.kind === "awaiting-host-context" ? "pending" : eligibility.kind === "retryable" ? "retryable" : eligibility.kind === "recovery-required" ? "recovery-required" : eligibility.kind === "stale" ? "stale" : "blocked", reason: eligibility.kind });
205
+ outcomes.push({ noticeId: candidate.notice.id, plugin: candidate.notice.plugin, display: candidate.notice.display, kind: eligibility.kind === "retryable" ? "retryable" : eligibility.kind === "recovery-required" ? "recovery-required" : eligibility.kind === "stale" ? "stale" : "blocked", reason: eligibility.kind });
208
206
  continue;
209
207
  }
210
208
  const latest = await locate(candidate.notice.id, signal);
211
209
  if (latest === undefined || latest.notice.resolution !== undefined) {
212
- outcomes.push({ noticeId: candidate.notice.id, kind: "stale", reason: "notice-stale" });
213
- continue;
214
- }
215
- if (dependencies.activation.availability() !== "available") {
216
- const pending = AutomaticUpdateEligibilitySchema.parse({ noticeId: latest.notice.id, kind: "awaiting-host-context" });
217
- await updateNotice(latest.context, latest.notice.id, (notice) => eligibilityUpdate(notice, pending), signal);
218
- outcomes.push({ noticeId: latest.notice.id, kind: "pending", reason: "awaiting-host-context" });
210
+ outcomes.push({ noticeId: candidate.notice.id, plugin: candidate.notice.plugin, display: candidate.notice.display, kind: "stale", reason: "notice-stale" });
219
211
  continue;
220
212
  }
221
- const result = await dependencies.lifecycle.apply(latest.notice, signal);
222
- if (result.kind === "changed") {
223
- // Chain the exact trust grant for the just-activated revision within
224
- // this run so its hooks and MCP servers launch without re-consent.
213
+ const result = parsed.mode === "stage"
214
+ ? await dependencies.lifecycle.stage(latest.notice, signal)
215
+ : await dependencies.lifecycle.apply(latest.notice, signal);
216
+ if (result.kind === "changed" || result.kind === "staged") {
217
+ // Chain the exact trust grant for the just-committed revision within
218
+ // this run so its hooks and MCP servers activate without re-consent.
225
219
  // Like ledger settlement, this local write outranks caller
226
220
  // cancellation once the update has committed.
227
221
  try {
@@ -234,7 +228,7 @@ export function createAutomaticUpdateCoordinator(dependencies) {
234
228
  // caller's cancellation. Settle the durable ledger with fresh authority.
235
229
  const settlementSignal = new AbortController().signal;
236
230
  await updateNotice(latest.context, latest.notice.id, (notice) => lifecycleOutcome(notice, result).notice, settlementSignal);
237
- outcomes.push({ noticeId: latest.notice.id, kind: projected.kind, ...(projected.reason === undefined ? {} : { reason: projected.reason }) });
231
+ outcomes.push({ noticeId: latest.notice.id, plugin: latest.notice.plugin, display: latest.notice.display, kind: projected.kind, ...(projected.reason === undefined ? {} : { reason: projected.reason }) });
238
232
  }
239
233
  return NativeAutomaticUpdateRunResultSchema.parse({ outcomes });
240
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"automatic-update-coordinator.js","sourceRoot":"","sources":["../../src/application/automatic-update-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automatic-update-coordinator.js","sourceRoot":"","sources":["../../src/application/automatic-update-coordinator.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,11 @@ export declare const AutomaticUpdateEligibilityReasonRegistry: Readonly<{
9
9
  readonly configurationRequired: "configuration-required";
10
10
  readonly secretUnavailable: "secret-unavailable";
11
11
  readonly capabilityUnavailable: "capability-unavailable";
12
- readonly awaitingHostContext: "awaiting-host-context";
13
12
  readonly retryable: "retryable";
14
13
  }>;
15
14
  export type AutomaticUpdateEligibilityReason = (typeof AutomaticUpdateEligibilityReasonRegistry)[keyof typeof AutomaticUpdateEligibilityReasonRegistry];
16
15
  export declare const AutomaticUpdateEligibilityReasonSchema: z.ZodEnum<{
17
16
  "approval-required": "approval-required";
18
- "awaiting-host-context": "awaiting-host-context";
19
17
  "capability-unavailable": "capability-unavailable";
20
18
  "configuration-required": "configuration-required";
21
19
  eligible: "eligible";
@@ -30,7 +28,6 @@ export declare const AutomaticUpdateEligibilitySchema: z.ZodReadonly<z.ZodObject
30
28
  noticeId: z.core.$ZodBranded<z.ZodString, "UpdateNoticeId", "out">;
31
29
  kind: z.ZodEnum<{
32
30
  "approval-required": "approval-required";
33
- "awaiting-host-context": "awaiting-host-context";
34
31
  "capability-unavailable": "capability-unavailable";
35
32
  "configuration-required": "configuration-required";
36
33
  eligible: "eligible";
@@ -10,7 +10,6 @@ export const AutomaticUpdateEligibilityReasonRegistry = Object.freeze({
10
10
  configurationRequired: "configuration-required",
11
11
  secretUnavailable: "secret-unavailable",
12
12
  capabilityUnavailable: "capability-unavailable",
13
- awaitingHostContext: "awaiting-host-context",
14
13
  retryable: "retryable",
15
14
  });
16
15
  export const AutomaticUpdateEligibilityReasonSchema = z.enum(Object.values(AutomaticUpdateEligibilityReasonRegistry));
@@ -1 +1 @@
1
- {"version":3,"file":"automatic-update-eligibility.js","sourceRoot":"","sources":["../../src/application/automatic-update-eligibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,CAAC,MAAM,wCAAwC,GAAG,MAAM,CAAC,MAAM,CAAC;IACpE,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,mBAAmB;IACrC,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,mBAAmB;IACrC,gBAAgB,EAAE,mBAAmB;IACrC,qBAAqB,EAAE,wBAAwB;IAC/C,iBAAiB,EAAE,oBAAoB;IACvC,qBAAqB,EAAE,wBAAwB;IAC/C,mBAAmB,EAAE,uBAAuB;IAC5C,SAAS,EAAE,WAAW;CACd,CAAC,CAAC;AAKZ,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,MAAM,CAAC,wCAAwC,CAGrD,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,QAAQ,EAAE,oBAAoB;IAC9B,IAAI,EAAE,sCAAsC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACrD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAC;AACxL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"automatic-update-eligibility.js","sourceRoot":"","sources":["../../src/application/automatic-update-eligibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,CAAC,MAAM,wCAAwC,GAAG,MAAM,CAAC,MAAM,CAAC;IACpE,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,mBAAmB;IACrC,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,mBAAmB;IACrC,gBAAgB,EAAE,mBAAmB;IACrC,qBAAqB,EAAE,wBAAwB;IAC/C,iBAAiB,EAAE,oBAAoB;IACvC,qBAAqB,EAAE,wBAAwB;IAC/C,SAAS,EAAE,WAAW;CACd,CAAC,CAAC;AAKZ,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,MAAM,CAAC,wCAAwC,CAGrD,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,QAAQ,EAAE,oBAAoB;IAC9B,IAAI,EAAE,sCAAsC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACrD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAC;AACxL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { z } from "zod";
2
+ import type { Sha256 } from "../domain/source.js";
3
+ import { type ScopeContext } from "../domain/state/scope.js";
4
+ import type { CompatibilityService } from "./compatibility-service.js";
5
+ import type { ExactTrustGrantService } from "./exact-trust-grant-service.js";
6
+ import type { InstalledPluginLoader } from "./ports/installed-plugin-loader.js";
7
+ import type { LifecycleStateStore } from "./ports/lifecycle-state-store.js";
8
+ import type { ProjectRootAuthorityPort } from "./ports/project-root-authority.js";
9
+ /**
10
+ * Exact re-trust of the currently installed revision. Updates grant trust as
11
+ * one lifecycle phase, but no other surface can re-grant trust for a revision
12
+ * that is already installed — without this service a trust-required verdict
13
+ * on an unchanged install is only fixable by remove + add.
14
+ */
15
+ export declare const NativeTrustGrantResultSchema: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
16
+ kind: z.ZodLiteral<"granted">;
17
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
18
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
19
+ kind: z.ZodLiteral<"user">;
20
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
21
+ kind: z.ZodLiteral<"project">;
22
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
23
+ }, z.core.$strict>>], "kind">;
24
+ subject: z.core.$ZodBranded<z.ZodString, "TrustSubjectRef", "out">;
25
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
26
+ kind: z.ZodLiteral<"current-state">;
27
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
28
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
29
+ kind: z.ZodLiteral<"user">;
30
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
31
+ kind: z.ZodLiteral<"project">;
32
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
33
+ }, z.core.$strict>>], "kind">;
34
+ reason: z.ZodLiteral<"already-authorized">;
35
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
36
+ kind: z.ZodLiteral<"stale">;
37
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
38
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
39
+ kind: z.ZodLiteral<"user">;
40
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
41
+ kind: z.ZodLiteral<"project">;
42
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
43
+ }, z.core.$strict>>], "kind">;
44
+ reason: z.ZodEnum<{
45
+ capability: "capability";
46
+ generation: "generation";
47
+ project: "project";
48
+ revision: "revision";
49
+ }>;
50
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
51
+ kind: z.ZodLiteral<"rejected">;
52
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
53
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
54
+ kind: z.ZodLiteral<"user">;
55
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
56
+ kind: z.ZodLiteral<"project">;
57
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
58
+ }, z.core.$strict>>], "kind">;
59
+ code: z.ZodEnum<{
60
+ INCOMPATIBLE: "INCOMPATIBLE";
61
+ PROJECT_UNTRUSTED: "PROJECT_UNTRUSTED";
62
+ }>;
63
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
64
+ kind: z.ZodLiteral<"unavailable">;
65
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
66
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
67
+ kind: z.ZodLiteral<"user">;
68
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
69
+ kind: z.ZodLiteral<"project">;
70
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
71
+ }, z.core.$strict>>], "kind">;
72
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
73
+ kind: z.ZodLiteral<"recovery-required">;
74
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
75
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
76
+ kind: z.ZodLiteral<"user">;
77
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
78
+ kind: z.ZodLiteral<"project">;
79
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
80
+ }, z.core.$strict>>], "kind">;
81
+ }, z.core.$strict>>], "kind">;
82
+ export type NativeTrustGrantResult = z.infer<typeof NativeTrustGrantResultSchema>;
83
+ export declare const InstalledTrustGrantRequestSchema: z.ZodReadonly<z.ZodObject<{
84
+ scope: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
85
+ kind: z.ZodLiteral<"user">;
86
+ }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
87
+ kind: z.ZodLiteral<"project">;
88
+ projectKey: z.core.$ZodBranded<z.ZodString, "ProjectKey", "out">;
89
+ }, z.core.$strict>>], "kind">;
90
+ plugin: z.core.$ZodBranded<z.ZodString, "PluginKey", "out">;
91
+ expectedRevision: z.ZodString;
92
+ expectedCompatibilityFingerprint: z.ZodString;
93
+ }, z.core.$strict>>;
94
+ export type InstalledTrustGrantRequest = z.infer<typeof InstalledTrustGrantRequestSchema>;
95
+ export interface InstalledTrustGrantService {
96
+ grant(request: InstalledTrustGrantRequest, signal: AbortSignal): Promise<NativeTrustGrantResult>;
97
+ }
98
+ export type InstalledTrustGrantDependencies = Readonly<{
99
+ state: LifecycleStateStore;
100
+ installed: InstalledPluginLoader;
101
+ compatibility: CompatibilityService;
102
+ trust: ExactTrustGrantService;
103
+ projectRoots: ProjectRootAuthorityPort;
104
+ /** The one project this host is bound to; project grants outside it are stale. */
105
+ projectScope: Extract<ScopeContext, {
106
+ kind: "project";
107
+ }>;
108
+ sha256: Sha256;
109
+ }>;
110
+ export declare function createInstalledTrustGrantService(dependencies: InstalledTrustGrantDependencies): InstalledTrustGrantService;
@@ -0,0 +1,186 @@
1
+ import { z } from "zod";
2
+ import { PluginKeySchema } from "../domain/identity.js";
3
+ import { ScopeReferenceSchema, createScopeContext, } from "../domain/state/scope.js";
4
+ import { TrustSubjectRefSchema } from "../domain/state/references.js";
5
+ import { createTrustCandidate, evaluateTrust } from "../domain/trust-policy.js";
6
+ import { digestCompatibilityReport } from "./ports/runtime-projection.js";
7
+ /**
8
+ * Exact re-trust of the currently installed revision. Updates grant trust as
9
+ * one lifecycle phase, but no other surface can re-grant trust for a revision
10
+ * that is already installed — without this service a trust-required verdict
11
+ * on an unchanged install is only fixable by remove + add.
12
+ */
13
+ export const NativeTrustGrantResultSchema = z.discriminatedUnion("kind", [
14
+ z.object({ kind: z.literal("granted"), plugin: PluginKeySchema, scope: ScopeReferenceSchema, subject: TrustSubjectRefSchema }).strict().readonly(),
15
+ z.object({ kind: z.literal("current-state"), plugin: PluginKeySchema, scope: ScopeReferenceSchema, reason: z.literal("already-authorized") }).strict().readonly(),
16
+ z.object({ kind: z.literal("stale"), plugin: PluginKeySchema, scope: ScopeReferenceSchema, reason: z.enum(["revision", "generation", "project", "capability"]) }).strict().readonly(),
17
+ z.object({ kind: z.literal("rejected"), plugin: PluginKeySchema, scope: ScopeReferenceSchema, code: z.enum(["PROJECT_UNTRUSTED", "INCOMPATIBLE"]) }).strict().readonly(),
18
+ z.object({ kind: z.literal("unavailable"), plugin: PluginKeySchema, scope: ScopeReferenceSchema }).strict().readonly(),
19
+ z.object({ kind: z.literal("recovery-required"), plugin: PluginKeySchema, scope: ScopeReferenceSchema }).strict().readonly(),
20
+ ]);
21
+ export const InstalledTrustGrantRequestSchema = z.object({
22
+ // Facade-level reference; the full project context is resolved against the
23
+ // host's one bound project inside the service.
24
+ scope: ScopeReferenceSchema,
25
+ plugin: PluginKeySchema,
26
+ // The exact revision the caller inspected. Anything newer in state is a
27
+ // concurrent change and must be re-inspected, never silently trusted.
28
+ expectedRevision: z.string().min(1),
29
+ // The compatibility report fingerprint the caller reviewed. The service
30
+ // re-assesses live (matching the runtime's construction); a drifted report
31
+ // means the granted evidence would differ from the reviewed evidence, so
32
+ // the grant must fail stale rather than trust content nobody confirmed.
33
+ expectedCompatibilityFingerprint: z.string().min(1),
34
+ }).strict().readonly();
35
+ export function createInstalledTrustGrantService(dependencies) {
36
+ if (dependencies === null || typeof dependencies !== "object" || typeof dependencies.sha256 !== "function") {
37
+ throw new TypeError("installed trust grant dependencies are required");
38
+ }
39
+ const service = {
40
+ async grant(requestInput, signal) {
41
+ signal.throwIfAborted();
42
+ const request = InstalledTrustGrantRequestSchema.parse(requestInput);
43
+ const base = { plugin: request.plugin, scope: request.scope };
44
+ let scope;
45
+ if (request.scope.kind === "user") {
46
+ scope = createScopeContext({ kind: "user" }, dependencies.sha256);
47
+ }
48
+ else if (dependencies.projectScope.projectKey === request.scope.projectKey) {
49
+ scope = dependencies.projectScope;
50
+ }
51
+ else {
52
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "project" });
53
+ }
54
+ let installedSnapshot;
55
+ try {
56
+ installedSnapshot = await dependencies.state.read(scope, signal);
57
+ }
58
+ catch (error) {
59
+ if (signal.aborted)
60
+ throw signal.reason ?? error;
61
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
62
+ }
63
+ if (!installedSnapshot.ok)
64
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
65
+ const records = "installed" in installedSnapshot.snapshot ? installedSnapshot.snapshot.installed.plugins : installedSnapshot.snapshot.project.plugins;
66
+ const record = records.find((candidate) => candidate.plugin === request.plugin);
67
+ const revision = record?.revisions.find((candidate) => candidate.revision === record.selectedRevision);
68
+ if (record === undefined || revision === undefined || record.selectedRevision !== request.expectedRevision) {
69
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "revision" });
70
+ }
71
+ let loaded;
72
+ try {
73
+ loaded = await dependencies.installed.load({ scope, revision }, signal);
74
+ }
75
+ catch (error) {
76
+ if (signal.aborted)
77
+ throw signal.reason ?? error;
78
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
79
+ }
80
+ if (loaded.plugin.identity.key !== request.plugin || loaded.binding !== record.selectedRevision) {
81
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "revision" });
82
+ }
83
+ let compatibility;
84
+ try {
85
+ // Re-assess live with the install-time policy so the granted evidence
86
+ // is byte-identical to the candidate the runtime will evaluate at
87
+ // hook/MCP execution time. The stored install-time report would
88
+ // authorize evidence the runtime no longer computes.
89
+ compatibility = await dependencies.compatibility.assess({
90
+ plugin: loaded.plugin,
91
+ ...(loaded.installationPolicy === undefined ? {} : { marketplacePolicy: loaded.installationPolicy }),
92
+ }, signal);
93
+ }
94
+ catch (error) {
95
+ if (signal.aborted)
96
+ throw signal.reason ?? error;
97
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
98
+ }
99
+ if (!compatibility.activatable) {
100
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "rejected", code: "INCOMPATIBLE" });
101
+ }
102
+ if (digestCompatibilityReport(compatibility, dependencies.sha256) !== request.expectedCompatibilityFingerprint) {
103
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "capability" });
104
+ }
105
+ const candidate = createTrustCandidate({
106
+ scope: request.scope,
107
+ marketplaceSource: loaded.marketplaceSource,
108
+ plugin: loaded.plugin,
109
+ compatibility,
110
+ content: loaded.content,
111
+ materializationBinding: loaded.binding,
112
+ }, dependencies.sha256);
113
+ // The granted evidence must be byte-identical to the installed record's
114
+ // install-time evidence; a divergence means the content store drifted
115
+ // and nothing here should be trusted.
116
+ if (candidate.evidence.executableSurfaceDigest !== revision.evidence.trust.executableSurfaceDigest) {
117
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
118
+ }
119
+ // Trust authority is the user state document regardless of the
120
+ // plugin's install scope.
121
+ let trustSnapshot;
122
+ try {
123
+ trustSnapshot = await dependencies.state.read({ kind: "user" }, signal);
124
+ }
125
+ catch (error) {
126
+ if (signal.aborted)
127
+ throw signal.reason ?? error;
128
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
129
+ }
130
+ if (!trustSnapshot.ok || !("trust" in trustSnapshot.snapshot)) {
131
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "unavailable" });
132
+ }
133
+ const decision = evaluateTrust(candidate, trustSnapshot.snapshot.trust.records, dependencies.sha256);
134
+ if (decision.kind === "authorized") {
135
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "current-state", reason: "already-authorized" });
136
+ }
137
+ let projectRoot;
138
+ if (scope.kind === "project") {
139
+ try {
140
+ projectRoot = await dependencies.projectRoots.acquire(signal);
141
+ }
142
+ catch (error) {
143
+ if (signal.aborted)
144
+ throw signal.reason ?? error;
145
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "project" });
146
+ }
147
+ }
148
+ const granted = await dependencies.trust.grant({
149
+ candidate,
150
+ scope,
151
+ ...(projectRoot === undefined ? {} : { projectRoot }),
152
+ }, signal);
153
+ if (granted.kind === "recorded") {
154
+ // The grant guards the trust generation, not the installed record; a
155
+ // concurrent update/uninstall could have moved the selection while the
156
+ // mutation committed. The recorded grant is evidence-keyed and inert
157
+ // in that case, but the honest answer is stale, not granted.
158
+ try {
159
+ const settled = await dependencies.state.read(scope, signal);
160
+ const settledRecord = settled.ok
161
+ ? ("installed" in settled.snapshot ? settled.snapshot.installed.plugins : settled.snapshot.project.plugins).find((entry) => entry.plugin === request.plugin)
162
+ : undefined;
163
+ if (settledRecord?.selectedRevision !== request.expectedRevision) {
164
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "revision" });
165
+ }
166
+ }
167
+ catch (error) {
168
+ if (signal.aborted)
169
+ throw signal.reason ?? error;
170
+ }
171
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "granted", subject: granted.subject });
172
+ }
173
+ if (granted.kind === "already-recorded")
174
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "current-state", reason: "already-authorized" });
175
+ if (granted.kind === "stale")
176
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "generation" });
177
+ if (granted.kind === "project-stale")
178
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "stale", reason: "project" });
179
+ if (granted.kind === "project-untrusted")
180
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "rejected", code: "PROJECT_UNTRUSTED" });
181
+ return NativeTrustGrantResultSchema.parse({ ...base, kind: "recovery-required" });
182
+ },
183
+ };
184
+ return Object.freeze(service);
185
+ }
186
+ //# sourceMappingURL=installed-trust-grant-service.js.map