@jini-ai/agent-plugins 0.4.7 → 0.6.10

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 (212) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/README.md +46 -0
  3. package/dist/admin-surfaces/action-dispatcher.d.ts +37 -0
  4. package/dist/admin-surfaces/action-dispatcher.d.ts.map +1 -0
  5. package/dist/admin-surfaces/action-dispatcher.js +69 -0
  6. package/dist/admin-surfaces/action-dispatcher.js.map +1 -0
  7. package/dist/admin-surfaces/action-schema.d.ts +56 -0
  8. package/dist/admin-surfaces/action-schema.d.ts.map +1 -0
  9. package/dist/admin-surfaces/action-schema.js +167 -0
  10. package/dist/admin-surfaces/action-schema.js.map +1 -0
  11. package/dist/admin-surfaces/action-tools.d.ts +40 -0
  12. package/dist/admin-surfaces/action-tools.d.ts.map +1 -0
  13. package/dist/admin-surfaces/action-tools.js +52 -0
  14. package/dist/admin-surfaces/action-tools.js.map +1 -0
  15. package/dist/admin-surfaces/callback-field-inbox.d.ts +35 -0
  16. package/dist/admin-surfaces/callback-field-inbox.d.ts.map +1 -0
  17. package/dist/admin-surfaces/callback-field-inbox.js +53 -0
  18. package/dist/admin-surfaces/callback-field-inbox.js.map +1 -0
  19. package/dist/admin-surfaces/capability-declarations.d.ts +41 -0
  20. package/dist/admin-surfaces/capability-declarations.d.ts.map +1 -0
  21. package/dist/admin-surfaces/capability-declarations.js +102 -0
  22. package/dist/admin-surfaces/capability-declarations.js.map +1 -0
  23. package/dist/admin-surfaces/contribution.d.ts +49 -0
  24. package/dist/admin-surfaces/contribution.d.ts.map +1 -0
  25. package/dist/admin-surfaces/contribution.js +30 -0
  26. package/dist/admin-surfaces/contribution.js.map +1 -0
  27. package/dist/admin-surfaces/delivery-bindings.d.ts +76 -0
  28. package/dist/admin-surfaces/delivery-bindings.d.ts.map +1 -0
  29. package/dist/admin-surfaces/delivery-bindings.js +99 -0
  30. package/dist/admin-surfaces/delivery-bindings.js.map +1 -0
  31. package/dist/admin-surfaces/descriptor.d.ts +69 -0
  32. package/dist/admin-surfaces/descriptor.d.ts.map +1 -0
  33. package/dist/admin-surfaces/descriptor.js +196 -0
  34. package/dist/admin-surfaces/descriptor.js.map +1 -0
  35. package/dist/admin-surfaces/external-links.d.ts +45 -0
  36. package/dist/admin-surfaces/external-links.d.ts.map +1 -0
  37. package/dist/admin-surfaces/external-links.js +70 -0
  38. package/dist/admin-surfaces/external-links.js.map +1 -0
  39. package/dist/admin-surfaces/host-validator.d.ts +62 -0
  40. package/dist/admin-surfaces/host-validator.d.ts.map +1 -0
  41. package/dist/admin-surfaces/host-validator.js +87 -0
  42. package/dist/admin-surfaces/host-validator.js.map +1 -0
  43. package/dist/admin-surfaces/index.d.ts +23 -0
  44. package/dist/admin-surfaces/index.d.ts.map +1 -0
  45. package/dist/admin-surfaces/index.js +21 -0
  46. package/dist/admin-surfaces/index.js.map +1 -0
  47. package/dist/admin-surfaces/protocol.d.ts +103 -0
  48. package/dist/admin-surfaces/protocol.d.ts.map +1 -0
  49. package/dist/admin-surfaces/protocol.js +25 -0
  50. package/dist/admin-surfaces/protocol.js.map +1 -0
  51. package/dist/admin-surfaces/sandbox.d.ts +78 -0
  52. package/dist/admin-surfaces/sandbox.d.ts.map +1 -0
  53. package/dist/admin-surfaces/sandbox.js +92 -0
  54. package/dist/admin-surfaces/sandbox.js.map +1 -0
  55. package/dist/admin-surfaces/settings-value.d.ts +28 -0
  56. package/dist/admin-surfaces/settings-value.d.ts.map +1 -0
  57. package/dist/admin-surfaces/settings-value.js +45 -0
  58. package/dist/admin-surfaces/settings-value.js.map +1 -0
  59. package/dist/admin-surfaces/surface-capabilities.d.ts +167 -0
  60. package/dist/admin-surfaces/surface-capabilities.d.ts.map +1 -0
  61. package/dist/admin-surfaces/surface-capabilities.js +215 -0
  62. package/dist/admin-surfaces/surface-capabilities.js.map +1 -0
  63. package/dist/admin-surfaces/surface-client.d.ts +116 -0
  64. package/dist/admin-surfaces/surface-client.d.ts.map +1 -0
  65. package/dist/admin-surfaces/surface-client.js +219 -0
  66. package/dist/admin-surfaces/surface-client.js.map +1 -0
  67. package/dist/admin-surfaces/surface-handlers.d.ts +111 -0
  68. package/dist/admin-surfaces/surface-handlers.d.ts.map +1 -0
  69. package/dist/admin-surfaces/surface-handlers.js +172 -0
  70. package/dist/admin-surfaces/surface-handlers.js.map +1 -0
  71. package/dist/admin-surfaces/theme.d.ts +59 -0
  72. package/dist/admin-surfaces/theme.d.ts.map +1 -0
  73. package/dist/admin-surfaces/theme.js +57 -0
  74. package/dist/admin-surfaces/theme.js.map +1 -0
  75. package/dist/folder-zip-node.d.ts.map +1 -0
  76. package/dist/folder-zip-node.js +59 -49
  77. package/dist/folder-zip-node.js.map +1 -0
  78. package/dist/folder-zip.d.ts.map +1 -0
  79. package/dist/folder-zip.js +9 -7
  80. package/dist/folder-zip.js.map +1 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/lifecycle/activation.d.ts.map +1 -0
  84. package/dist/lifecycle/activation.js.map +1 -0
  85. package/dist/lifecycle/automatic-use.d.ts +79 -0
  86. package/dist/lifecycle/automatic-use.d.ts.map +1 -0
  87. package/dist/lifecycle/automatic-use.js +165 -0
  88. package/dist/lifecycle/automatic-use.js.map +1 -0
  89. package/dist/lifecycle/bundled-digests.d.ts.map +1 -0
  90. package/dist/lifecycle/bundled-digests.js.map +1 -0
  91. package/dist/lifecycle/bundled-source-archive.d.ts.map +1 -0
  92. package/dist/lifecycle/bundled-source-archive.js.map +1 -0
  93. package/dist/lifecycle/capability-projection.d.ts.map +1 -0
  94. package/dist/lifecycle/capability-projection.js.map +1 -0
  95. package/dist/lifecycle/compatibility-metadata.d.ts +19 -0
  96. package/dist/lifecycle/compatibility-metadata.d.ts.map +1 -0
  97. package/dist/lifecycle/compatibility-metadata.js +45 -0
  98. package/dist/lifecycle/compatibility-metadata.js.map +1 -0
  99. package/dist/lifecycle/compatibility.d.ts +52 -0
  100. package/dist/lifecycle/compatibility.d.ts.map +1 -0
  101. package/dist/lifecycle/compatibility.js +60 -0
  102. package/dist/lifecycle/compatibility.js.map +1 -0
  103. package/dist/lifecycle/contribution-loader.d.ts.map +1 -0
  104. package/dist/lifecycle/contribution-loader.js.map +1 -0
  105. package/dist/lifecycle/fetch-archive.d.ts.map +1 -0
  106. package/dist/lifecycle/fetch-archive.js +26 -24
  107. package/dist/lifecycle/fetch-archive.js.map +1 -0
  108. package/dist/lifecycle/index.d.ts +14 -2
  109. package/dist/lifecycle/index.d.ts.map +1 -0
  110. package/dist/lifecycle/index.js +8 -1
  111. package/dist/lifecycle/index.js.map +1 -0
  112. package/dist/lifecycle/install-errors.d.ts.map +1 -0
  113. package/dist/lifecycle/install-errors.js.map +1 -0
  114. package/dist/lifecycle/install-from-url.d.ts.map +1 -0
  115. package/dist/lifecycle/install-from-url.js.map +1 -0
  116. package/dist/lifecycle/install.d.ts.map +1 -0
  117. package/dist/lifecycle/install.js +7 -0
  118. package/dist/lifecycle/install.js.map +1 -0
  119. package/dist/lifecycle/installed-package-index.d.ts.map +1 -0
  120. package/dist/lifecycle/installed-package-index.js +41 -29
  121. package/dist/lifecycle/installed-package-index.js.map +1 -0
  122. package/dist/lifecycle/installed-package-roots.d.ts.map +1 -0
  123. package/dist/lifecycle/installed-package-roots.js +28 -20
  124. package/dist/lifecycle/installed-package-roots.js.map +1 -0
  125. package/dist/lifecycle/layout.d.ts.map +1 -0
  126. package/dist/lifecycle/layout.js.map +1 -0
  127. package/dist/lifecycle/manifest.d.ts +13 -0
  128. package/dist/lifecycle/manifest.d.ts.map +1 -0
  129. package/dist/lifecycle/manifest.js +115 -101
  130. package/dist/lifecycle/manifest.js.map +1 -0
  131. package/dist/lifecycle/mcp-provisioning.d.ts.map +1 -0
  132. package/dist/lifecycle/mcp-provisioning.js.map +1 -0
  133. package/dist/lifecycle/node.d.ts.map +1 -0
  134. package/dist/lifecycle/node.js.map +1 -0
  135. package/dist/lifecycle/package-paths.d.ts.map +1 -0
  136. package/dist/lifecycle/package-paths.js +3 -3
  137. package/dist/lifecycle/package-paths.js.map +1 -0
  138. package/dist/lifecycle/persistent-state.d.ts.map +1 -0
  139. package/dist/lifecycle/persistent-state.js.map +1 -0
  140. package/dist/lifecycle/ports.d.ts +1 -1
  141. package/dist/lifecycle/ports.d.ts.map +1 -0
  142. package/dist/lifecycle/ports.js.map +1 -0
  143. package/dist/lifecycle/provider-contribution.d.ts +65 -0
  144. package/dist/lifecycle/provider-contribution.d.ts.map +1 -0
  145. package/dist/lifecycle/provider-contribution.js +93 -0
  146. package/dist/lifecycle/provider-contribution.js.map +1 -0
  147. package/dist/lifecycle/resolve-agent-plugin-refs.d.ts.map +1 -0
  148. package/dist/lifecycle/resolve-agent-plugin-refs.js +15 -2
  149. package/dist/lifecycle/resolve-agent-plugin-refs.js.map +1 -0
  150. package/dist/lifecycle/retire-bundled.d.ts.map +1 -0
  151. package/dist/lifecycle/retire-bundled.js +20 -18
  152. package/dist/lifecycle/retire-bundled.js.map +1 -0
  153. package/dist/lifecycle/search.d.ts +6 -1
  154. package/dist/lifecycle/search.d.ts.map +1 -0
  155. package/dist/lifecycle/search.js +45 -7
  156. package/dist/lifecycle/search.js.map +1 -0
  157. package/dist/lifecycle/seed-bundled.d.ts.map +1 -0
  158. package/dist/lifecycle/seed-bundled.js.map +1 -0
  159. package/dist/lifecycle/set-enabled.d.ts +2 -1
  160. package/dist/lifecycle/set-enabled.d.ts.map +1 -0
  161. package/dist/lifecycle/set-enabled.js +52 -8
  162. package/dist/lifecycle/set-enabled.js.map +1 -0
  163. package/dist/lifecycle/skill-file-reader.d.ts.map +1 -0
  164. package/dist/lifecycle/skill-file-reader.js +85 -71
  165. package/dist/lifecycle/skill-file-reader.js.map +1 -0
  166. package/dist/lifecycle/tools/capabilities.d.ts +199 -0
  167. package/dist/lifecycle/tools/capabilities.d.ts.map +1 -0
  168. package/dist/lifecycle/tools/capabilities.js +213 -0
  169. package/dist/lifecycle/tools/capabilities.js.map +1 -0
  170. package/dist/lifecycle/tools/definition.d.ts +32 -0
  171. package/dist/lifecycle/tools/definition.d.ts.map +1 -0
  172. package/dist/lifecycle/tools/definition.js +33 -0
  173. package/dist/lifecycle/tools/definition.js.map +1 -0
  174. package/dist/lifecycle/tools/index.d.ts +10 -0
  175. package/dist/lifecycle/tools/index.d.ts.map +1 -0
  176. package/dist/lifecycle/tools/index.js +10 -0
  177. package/dist/lifecycle/tools/index.js.map +1 -0
  178. package/dist/lifecycle/tools/manifest.d.ts +33 -0
  179. package/dist/lifecycle/tools/manifest.d.ts.map +1 -0
  180. package/dist/lifecycle/tools/manifest.js +89 -0
  181. package/dist/lifecycle/tools/manifest.js.map +1 -0
  182. package/dist/lifecycle/tools/projection.d.ts +90 -0
  183. package/dist/lifecycle/tools/projection.d.ts.map +1 -0
  184. package/dist/lifecycle/tools/projection.js +283 -0
  185. package/dist/lifecycle/tools/projection.js.map +1 -0
  186. package/dist/lifecycle/trusted-plugin-files.d.ts.map +1 -0
  187. package/dist/lifecycle/trusted-plugin-files.js.map +1 -0
  188. package/dist/lifecycle/types.d.ts +2 -0
  189. package/dist/lifecycle/types.d.ts.map +1 -0
  190. package/dist/lifecycle/types.js.map +1 -0
  191. package/dist/lifecycle/uninstall.d.ts +3 -1
  192. package/dist/lifecycle/uninstall.d.ts.map +1 -0
  193. package/dist/lifecycle/uninstall.js +51 -27
  194. package/dist/lifecycle/uninstall.js.map +1 -0
  195. package/dist/lifecycle/update-plan.d.ts +18 -0
  196. package/dist/lifecycle/update-plan.d.ts.map +1 -0
  197. package/dist/lifecycle/update-plan.js +22 -0
  198. package/dist/lifecycle/update-plan.js.map +1 -0
  199. package/dist/lifecycle/update-store.d.ts +71 -0
  200. package/dist/lifecycle/update-store.d.ts.map +1 -0
  201. package/dist/lifecycle/update-store.js +150 -0
  202. package/dist/lifecycle/update-store.js.map +1 -0
  203. package/dist/lifecycle/update.d.ts +55 -0
  204. package/dist/lifecycle/update.d.ts.map +1 -0
  205. package/dist/lifecycle/update.js +321 -0
  206. package/dist/lifecycle/update.js.map +1 -0
  207. package/dist/lifecycle/yauzl-archive-reader.d.ts.map +1 -0
  208. package/dist/lifecycle/yauzl-archive-reader.js.map +1 -0
  209. package/dist/manifest.d.ts.map +1 -0
  210. package/dist/manifest.js.map +1 -0
  211. package/package.json +39 -7
  212. package/ui-ux-design/plugin.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-archive.d.ts","sourceRoot":"","sources":["../../src/lifecycle/fetch-archive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAsBrF,MAAM,MAAM,yBAAyB,GAEjC,iBAAiB,GAEjB,gBAAgB,GAEhB,YAAY,GAEZ,mBAAmB,GAEnB,YAAY,CAAC;AAEjB;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;gBAE7B,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAKzI;AAED,MAAM,WAAW,+BAA+B;IAE9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAE9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAEzC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,+BAA+B,EACzC,QAAQ,GAAE,+BAAoC,GAC7C,OAAO,CAAC,yBAAyB,CAAC,CAiCpC;AAmCD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAEnF"}
@@ -57,12 +57,28 @@ export async function fetchAgentPluginArchive(required, optional = {}) {
57
57
  throw new RangeError("maxBytes must be a positive integer");
58
58
  assertAllowedUrl(required.url, "requested");
59
59
  const diagnosticUrl = redactArchiveUrl({ value: required.url });
60
- let response;
61
- let finalRequestedUrl = required.url;
60
+ const { response, resolvedUrl: finalRequestedUrl } = await requestArchive({ required, diagnosticUrl }, optional);
61
+ // A server-controlled reason phrase can reflect secrets; use the standard status label.
62
+ if (!response.ok) {
63
+ throw new AgentPluginFetchError({ code: "HTTP_ERROR", message: `'${diagnosticUrl}' returned HTTP ${response.status} ${STATUS_CODES[response.status] ?? ''}`.trimEnd() });
64
+ }
65
+ const resolvedUrl = response.url || finalRequestedUrl;
66
+ assertAllowedUrl(resolvedUrl, "redirected-to");
67
+ assertDeclaredSizeWithinCap(response, maxBytes, diagnosticUrl);
68
+ const archive = await readArchiveBody({ response, maxBytes, diagnosticUrl });
69
+ if (archive.byteLength === 0) {
70
+ throw new AgentPluginFetchError({ code: "EMPTY_BODY", message: `'${diagnosticUrl}' returned an empty body` });
71
+ }
72
+ return {
73
+ archive,
74
+ sha256: createHash("sha256").update(archive).digest("hex"),
75
+ resolvedUrl,
76
+ };
77
+ }
78
+ /** Runs the guarded request; any failure becomes one redacted `REQUEST_FAILED`. */
79
+ async function requestArchive({ required, diagnosticUrl }, optional = {}) {
62
80
  try {
63
- const downloaded = await fetchWithGuard(required, optional);
64
- response = downloaded.response;
65
- finalRequestedUrl = downloaded.resolvedUrl;
81
+ return await fetchWithGuard(required, optional);
66
82
  }
67
83
  catch {
68
84
  // Dependency messages and nested causes can contain signed redirect URLs or bare tokens.
@@ -71,16 +87,11 @@ export async function fetchAgentPluginArchive(required, optional = {}) {
71
87
  cause: new Error("archive request failed"),
72
88
  });
73
89
  }
74
- // A server-controlled reason phrase can reflect secrets; use the standard status label.
75
- if (!response.ok) {
76
- throw new AgentPluginFetchError({ code: "HTTP_ERROR", message: `'${diagnosticUrl}' returned HTTP ${response.status} ${STATUS_CODES[response.status] ?? ''}`.trimEnd() });
77
- }
78
- const resolvedUrl = response.url || finalRequestedUrl;
79
- assertAllowedUrl(resolvedUrl, "redirected-to");
80
- assertDeclaredSizeWithinCap(response, maxBytes, diagnosticUrl);
81
- let archive;
90
+ }
91
+ /** Reads the body within the cap; an over-cap body stays `ARCHIVE_TOO_LARGE`, anything else one redacted `REQUEST_FAILED`. */
92
+ async function readArchiveBody({ response, maxBytes, diagnosticUrl }) {
82
93
  try {
83
- archive = await readBodyWithinCap(response, maxBytes, diagnosticUrl);
94
+ return await readBodyWithinCap(response, maxBytes, diagnosticUrl);
84
95
  }
85
96
  catch (error) {
86
97
  // Preserve our bounded-download error; stream failures must not escape as raw transport text.
@@ -91,14 +102,6 @@ export async function fetchAgentPluginArchive(required, optional = {}) {
91
102
  cause: new Error("archive response body failed"),
92
103
  });
93
104
  }
94
- if (archive.byteLength === 0) {
95
- throw new AgentPluginFetchError({ code: "EMPTY_BODY", message: `'${diagnosticUrl}' returned an empty body` });
96
- }
97
- return {
98
- archive,
99
- sha256: createHash("sha256").update(archive).digest("hex"),
100
- resolvedUrl,
101
- };
102
105
  }
103
106
  /**
104
107
  * The module's own cap, exported so a caller (or a test pinning it against `install.ts`'s
@@ -150,10 +153,9 @@ async function readBodyWithinCap(response, maxBytes, url) {
150
153
  try {
151
154
  for (;;) {
152
155
  const { done, value } = await reader.read();
156
+ // A read that is not `done` always carries a chunk (`ReadableStreamReadValueResult`).
153
157
  if (done)
154
158
  break;
155
- if (value === undefined)
156
- continue;
157
159
  total += value.byteLength;
158
160
  if (total > maxBytes) {
159
161
  throw new AgentPluginFetchError({ code: "ARCHIVE_TOO_LARGE", message: `'${url}' body exceeded the ${maxBytes}-byte cap` });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-archive.js","sourceRoot":"","sources":["../../src/lifecycle/fetch-archive.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ export * from './update-plan.js';
2
+ export { AgentPluginUpdateError } from './update-store.js';
3
+ export type { UpdateAgentPluginRequired, UpdateAgentPluginResult } from './update.js';
4
+ export * from './compatibility.js';
5
+ export * from './automatic-use.js';
1
6
  import { maxAgentPluginArchiveBytes } from './fetch-archive.js';
2
7
  import type { FetchAgentPluginArchiveOptional } from './fetch-archive.js';
3
8
  import type { AgentPluginLifecycleRequired, AgentPluginLifecycleOptional } from './ports.js';
@@ -13,6 +18,7 @@ export * from './manifest.js';
13
18
  export * from './fetch-archive.js';
14
19
  export * from './mcp-provisioning.js';
15
20
  export * from './contribution-loader.js';
21
+ export * from './provider-contribution.js';
16
22
  export { createAgentPluginActivations, ACTIVATIONS_FILENAME, ACTIVATIONS_LOCK_FILENAME, AgentPluginActivationsBusyError, AgentPluginActivationsUnreadableError } from './activation.js';
17
23
  export { BUNDLED_DIGESTS_FILENAME } from './bundled-digests.js';
18
24
  export { AgentPluginInstallError } from './install.js';
@@ -72,7 +78,7 @@ export declare function createAgentPluginLifecycle(required: AgentPluginLifecycl
72
78
  }) => Promise<boolean>;
73
79
  installAgentPlugin: (required: import("./install.js").InstallAgentPluginRequired, optional?: import("./install.js").InstallAgentPluginOptional) => Promise<import("./types.js").InstalledAgentPlugin>;
74
80
  installAgentPluginFromUrl: (required: import("./install-from-url.js").InstallAgentPluginFromUrlRequired, optional?: import("./install-from-url.js").InstallAgentPluginFromUrlOptional) => Promise<import("./install-from-url.js").InstalledAgentPluginFromUrl>;
75
- setAgentPluginEnabled: (input: import("./set-enabled.js").SetAgentPluginEnabledInput) => Promise<import("./set-enabled.js").SetAgentPluginEnabledResult>;
81
+ setAgentPluginEnabled: (input: import("./set-enabled.js").SetAgentPluginEnabledInput, _optional?: Record<string, never>) => Promise<import("./set-enabled.js").SetAgentPluginEnabledResult>;
76
82
  findTrustedPluginPackages: (input: Omit<Parameters<(query: import("./trusted-plugin-files.js").TrustedPluginPackagesQuery) => Promise<readonly import("./trusted-plugin-files.js").TrustedPluginVerdict[]>>[0], "orderByPluginId" | "onInactive">, optional?: Pick<Parameters<(query: import("./trusted-plugin-files.js").TrustedPluginPackagesQuery) => Promise<readonly import("./trusted-plugin-files.js").TrustedPluginVerdict[]>>[0], "orderByPluginId" | "onInactive">) => Promise<readonly import("./trusted-plugin-files.js").TrustedPluginVerdict[]>;
77
83
  previewAgentPluginUninstall: (required: import("./uninstall.js").UninstallAgentPluginRequired) => Promise<import("./uninstall.js").AgentPluginUninstallPreview>;
78
84
  uninstallAgentPlugin: (required: import("./uninstall.js").UninstallAgentPluginRequired, optional?: import("./uninstall.js").UninstallAgentPluginOptional) => Promise<import("./uninstall.js").UninstallAgentPluginResult>;
@@ -176,8 +182,10 @@ export declare function createAgentPluginLifecycle(required: AgentPluginLifecycl
176
182
  }) => Promise<boolean>;
177
183
  rankInstalledAgentPlugins: (input: {
178
184
  readonly query: string;
179
- readonly candidates: Parameters<(query: string, candidates: readonly import("./search.js").AgentPluginSearchCandidate[], limit: number) => readonly import("./search.js").AgentPluginSearchMatch[]>[1];
185
+ readonly candidates: Parameters<(query: string, candidates: readonly import("./search.js").AgentPluginSearchCandidate[], limit: number, automatic?: boolean) => readonly import("./search.js").AgentPluginSearchMatch[]>[1];
180
186
  readonly limit: number;
187
+ }, optional?: {
188
+ readonly automatic?: boolean;
181
189
  }) => readonly import("./search.js").AgentPluginSearchMatch[];
182
190
  readTrustedPluginFile: (input: {
183
191
  readonly plugin: Parameters<(plugin: import("./trusted-plugin-files.js").TrustedPluginPackage, filename: string) => Promise<string>>[0];
@@ -208,5 +216,9 @@ export declare function createAgentPluginLifecycle(required: AgentPluginLifecycl
208
216
  readonly plugin: import("./trusted-plugin-files.js").TrustedPluginPackage;
209
217
  readonly definition: import("./contribution-loader.js").PluginContributionDefinition<D, T>;
210
218
  }, _options?: Record<string, never>) => Promise<import("./contribution-loader.js").PluginContributionResult<T>>;
219
+ updateAgentPlugin: (required: import("./update.js").UpdateAgentPluginRequired, _optional?: Record<string, never>) => Promise<import("./update.js").UpdateAgentPluginResult>;
220
+ reconcileAgentPluginUpdates: ({ workspaceId }: {
221
+ workspaceId: string;
222
+ }, _optional?: Record<string, never>) => Promise<void>;
211
223
  };
212
224
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ export * from './update-plan.js';
2
+ export { AgentPluginUpdateError } from './update-store.js';
3
+ import { createUpdateModule } from './update.js';
4
+ export * from './compatibility.js';
5
+ export * from './automatic-use.js';
1
6
  import { createPersistentStateModule } from "./persistent-state.js";
2
7
  import { fetchAgentPluginArchive, maxAgentPluginArchiveBytes } from './fetch-archive.js';
3
8
  import { createSeedBundledModule } from './seed-bundled.js';
@@ -22,6 +27,7 @@ export * from './manifest.js';
22
27
  export * from './fetch-archive.js';
23
28
  export * from './mcp-provisioning.js';
24
29
  export * from './contribution-loader.js';
30
+ export * from './provider-contribution.js';
25
31
  export { createAgentPluginActivations, ACTIVATIONS_FILENAME, ACTIVATIONS_LOCK_FILENAME, AgentPluginActivationsBusyError, AgentPluginActivationsUnreadableError } from './activation.js';
26
32
  export { BUNDLED_DIGESTS_FILENAME } from './bundled-digests.js';
27
33
  export { AgentPluginInstallError } from './install.js';
@@ -56,6 +62,7 @@ export function createAgentPluginLifecycle(required, optional = {}) {
56
62
  });
57
63
  const uninstall = createUninstallModule(context);
58
64
  return {
65
+ ...createUpdateModule(context),
59
66
  ...contributions,
60
67
  fetchAgentPluginArchive: (input, optional = {}) => fetchAgentPluginArchive({ ...input, fetch: context.fetch, outboundGuard: context.outboundGuard }, optional),
61
68
  maxAgentPluginArchiveBytes,
@@ -102,7 +109,7 @@ export function createAgentPluginLifecycle(required, optional = {}) {
102
109
  }),
103
110
  listInstalledPlugins: (input) => refs.listInstalledPlugins(input.workspaceRoot),
104
111
  isInstalledDigestPresent: (input) => refs.isInstalledDigestPresent(input.packagesDir, input.archiveDigest),
105
- rankInstalledAgentPlugins: (input) => search.rankInstalledAgentPlugins(input.query, input.candidates, input.limit),
112
+ rankInstalledAgentPlugins: (input, optional = {}) => search.rankInstalledAgentPlugins(input.query, input.candidates, input.limit, optional.automatic),
106
113
  readTrustedPluginFile: (input) => trusted.readTrustedPluginFile(input.plugin, input.filename),
107
114
  importContainedModule: (input) => trusted.importContainedModule(input.plugin, input.modulePath),
108
115
  maxAgentPluginInstallArchiveBytes: (_input) => install.maxAgentPluginInstallArchiveBytes(),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-errors.d.ts","sourceRoot":"","sources":["../../src/lifecycle/install-errors.ts"],"names":[],"mappings":"AAAA;;uFAEuF;AACvF,MAAM,MAAM,2BAA2B,GACnC,oBAAoB,GACpB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,wBAAwB,GACxB,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;gBAE/B,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAK3I"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-errors.js","sourceRoot":"","sources":["../../src/lifecycle/install-errors.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,CAA8B;IAE3C,YAAY,EAAE,IAAI,EAAE,OAAO,EAA4E,EAAE,UAA+B,EAAE;QACxI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-from-url.d.ts","sourceRoot":"","sources":["../../src/lifecycle/install-from-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAA2B,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAuB,KAAK,4BAA4B,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IAEzC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAEhD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAAC,GAAG,SAAS,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IAEzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,yBAAyB;0CAsB/D,iCAAiC,aACjC,iCAAiC,KAC1C,OAAO,CAAC,2BAA2B,CAAC;EAiBtC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-from-url.js","sourceRoot":"","sources":["../../src/lifecycle/install-from-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,uBAAuB,EAAwC,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAgE,MAAM,cAAc,CAAC;AAiDjH,MAAM,UAAU,0BAA0B,CAAC,KAAgC;IAC3E,MAAM,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC1D;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,UAAU,yBAAyB,CACtC,QAA2C,EAC3C,WAA8C,EAAE;QAEhD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEtK,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAEjG,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC;YACzC,OAAO;YACP,cAAc;YACd,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC,CAAC;QAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;IACnG,CAAC;IAED,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/lifecycle/install.ts"],"names":[],"mappings":"AAsEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACvE;;;4EAG4E;AAC5E,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,6FAA6F;IACjG,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC;CACzF,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAExI;;;GAGG;AACH,yGAAyG;AACzG,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;KAAE,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B;;iBAEa;IACb,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC;0DACsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;oGACgG;IAChG;mHAC+G;IAC/G,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACxM;AA6aD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB;6CA7VpB,MAAM;mCAwBxC,0BAA0B,aAC1B,0BAA0B,KACnC,OAAO,CAAC,oBAAoB,CAAC;sCA7FS,MAAM,iBAAiB,MAAM;EAoavE"}
@@ -63,6 +63,7 @@ import { readPluginIdentity, assertPluginIdentityAvailable } from "@jini-ai/core
63
63
  * "how does the archive get here" is out of this slice) and no execution of anything extracted.
64
64
  */
65
65
  import { createPersistentStateModule } from "./persistent-state.js";
66
+ import { createAgentPluginUpdateStore, settleAgentPluginUpdateJournal } from "./update-store.js";
66
67
  /** Extracted from the host plugin lifecycle. Effects are supplied per host context. */
67
68
  import { createHash } from "node:crypto";
68
69
  import { constants } from "node:fs";
@@ -196,6 +197,12 @@ function buildModule(ports) {
196
197
  return await persistentState.withIdentityLock({ workspaceRoot: workspaceLayout.root, run: async () => {
197
198
  await assertIdentityAvailable(workspaceLayout.root, indexed);
198
199
  const publishWithinPluginLock = () => persistentState.withPluginLock({ workspaceRoot: workspaceLayout.root, pluginId: indexed.pluginId, run: async () => {
200
+ // Every install and replacement, not only an update, is a mutation of this plugin: an
201
+ // unfinished update journal refuses it here, under the same plugin lock, because boot
202
+ // recovery removes only the journal's own candidate digest and would otherwise restore the
203
+ // old revision beside whatever this install published.
204
+ // The journal lives under the layout this install was given, the one it publishes into.
205
+ await settleAgentPluginUpdateJournal({ store: createAgentPluginUpdateStore({ ports: { ...ports, layout }, workspaceId, pluginId: indexed.pluginId }) });
199
206
  // Layout B needs the manifest id before choosing the package destination. Dedup still
200
207
  // skips publication and freezing, after one bounded staging extraction.
201
208
  // Owner decision 2026-10-04: learned facts begin empty for each site; author guidance stays
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/lifecycle/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installed-package-index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/installed-package-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAA6B,MAAM,YAAY,CAAC;AAElF;8FAC8F;AAC9F,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAA;CAAE,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM;yDAuFtE;QAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B;6FACqF;QACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,cAAa,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAQ,OAAO,CAAC,oBAAoB,CAAC;EAsCzE"}
@@ -22,24 +22,8 @@ export function createInstalledPackageIndex(required, _optional = {}) {
22
22
  } });
23
23
  return text ? { [required.key]: text.slice(0, required.maxLength) } : {};
24
24
  }
25
- /**
26
- * Reads the (already-extracted-and-trusted, or already-published) `plugin.json` at `packageRoot`
27
- * and walks the tree to build the `files`/`skills` index. Shared between a fresh install and the
28
- * content-addressed dedup fast path so both return an identically-shaped result.
29
- *
30
- * Exported (2026-08-21) for a second caller outside this module:
31
- * `resolve-agent-plugin-refs.ts`'s run-time resolution of a pinned `pluginRefId` against the
32
- * packages already on disk needs the SAME `plugin.json`-parse-plus-tree-walk this function
33
- * already does correctly (manifest validation via `parseAgentPluginManifest`, sorted `files`), so
34
- * it re-derives an `InstalledAgentPlugin` per installed digest rather than hand-rolling a second,
35
- * less-validated reader.
36
- */
37
- // Conditional spreads, not `field: parsed.manifest.field` directly: an `exactOptionalPropertyTypes`-
38
- // style caller (and this codebase's own convention elsewhere — see `buildToolSource`'s identical
39
- // `defaultSkillReason` spread in `tool-registrations.ts`) must see an ABSENT key, not a key present
40
- // with value `undefined`, when the manifest declared none of these — `deepEqual` fixtures across
41
- // this feature's own tests already assert exact object shape.
42
- async function indexInstalledRoot({ packageRoot, archiveDigest }, _optional = {}) {
25
+ /** Reads and validates `packageRoot`'s `plugin.json`, refusing a missing, unparseable or invalid one. */
26
+ async function readInstalledManifest({ packageRoot }) {
43
27
  let manifestRaw;
44
28
  try {
45
29
  manifestRaw = await readFile(path.join(packageRoot, "plugin.json"), "utf8");
@@ -61,22 +45,19 @@ export function createInstalledPackageIndex(required, _optional = {}) {
61
45
  if (!parsed.ok) {
62
46
  throw new AgentPluginInstallError({ code: "MANIFEST_INVALID", message: `plugin.json failed validation: ${parsed.errors.join("; ")}` });
63
47
  }
48
+ return parsed;
49
+ }
50
+ /** Every regular file under `packageRoot` (sorted) and every `skills/<name>/SKILL.md` (sorted by name). */
51
+ async function walkPackageTree({ packageRoot }) {
64
52
  const files = [];
65
- for (const message of parsed.warnings)
66
- ports.onEvent?.({ event: 'agent-plugin-identity-warning', message });
67
53
  const skills = [];
68
54
  async function walk(absolute, prefix) {
69
55
  for (const entry of await readdir(absolute, { withFileTypes: true })) {
70
56
  const relative = prefix ? `${prefix}/${entry.name}` : entry.name;
71
- if (entry.isDirectory()) {
57
+ if (entry.isDirectory())
72
58
  await walk(path.join(absolute, entry.name), relative);
73
- }
74
- else if (entry.isFile()) {
59
+ else if (entry.isFile())
75
60
  files.push(relative);
76
- const match = relative.match(/^skills\/([^/]+)\/SKILL\.md$/);
77
- if (match)
78
- skills.push({ name: match[1], skillPath: relative });
79
- }
80
61
  // Anything that is neither a directory nor a regular file (a symlink somehow already present,
81
62
  // a device node) is skipped rather than indexed — extraction itself never creates one, so
82
63
  // encountering one here would mean the filesystem changed out from under an already-published,
@@ -84,10 +65,41 @@ export function createInstalledPackageIndex(required, _optional = {}) {
84
65
  }
85
66
  }
86
67
  await walk(packageRoot, "");
68
+ for (const relative of files) {
69
+ const match = relative.match(/^skills\/([^/]+)\/SKILL\.md$/);
70
+ if (match)
71
+ skills.push({ name: match[1], skillPath: relative });
72
+ }
73
+ return { files: files.sort(), skills: skills.sort((a, b) => a.name.localeCompare(b.name)) };
74
+ }
75
+ /**
76
+ * Reads the (already-extracted-and-trusted, or already-published) `plugin.json` at `packageRoot`
77
+ * and walks the tree to build the `files`/`skills` index. Shared between a fresh install and the
78
+ * content-addressed dedup fast path so both return an identically-shaped result.
79
+ *
80
+ * Exported (2026-08-21) for a second caller outside this module:
81
+ * `resolve-agent-plugin-refs.ts`'s run-time resolution of a pinned `pluginRefId` against the
82
+ * packages already on disk needs the SAME `plugin.json`-parse-plus-tree-walk this function
83
+ * already does correctly (manifest validation via `parseAgentPluginManifest`, sorted `files`), so
84
+ * it re-derives an `InstalledAgentPlugin` per installed digest rather than hand-rolling a second,
85
+ * less-validated reader.
86
+ */
87
+ // Conditional spreads, not `field: parsed.manifest.field` directly: an `exactOptionalPropertyTypes`-
88
+ // style caller (and this codebase's own convention elsewhere — see `buildToolSource`'s identical
89
+ // `defaultSkillReason` spread in `tool-registrations.ts`) must see an ABSENT key, not a key present
90
+ // with value `undefined`, when the manifest declared none of these — `deepEqual` fixtures across
91
+ // this feature's own tests already assert exact object shape.
92
+ async function indexInstalledRoot({ packageRoot, archiveDigest }, _optional = {}) {
93
+ const parsed = await readInstalledManifest({ packageRoot });
94
+ for (const message of parsed.warnings)
95
+ ports.onEvent?.({ event: 'agent-plugin-identity-warning', message });
96
+ const { files, skills } = await walkPackageTree({ packageRoot });
87
97
  return {
88
98
  pluginId: parsed.manifest.name,
89
99
  id: parsed.manifest.id,
90
100
  provides: parsed.manifest.provides,
101
+ ...(parsed.manifest.requires === undefined ? {} : { requires: parsed.manifest.requires }),
102
+ ...(parsed.manifest.hostRange === undefined ? {} : { hostRange: parsed.manifest.hostRange }),
91
103
  version: parsed.manifest.version,
92
104
  ...( /**
93
105
  * `plugin.json`'s own `description`/`keywords`/`author`/`license` (`manifest.ts`'s
@@ -107,8 +119,8 @@ export function createInstalledPackageIndex(required, _optional = {}) {
107
119
  ...readDisplayText({ manifest: parsed.manifest, key: "summary", maxLength: 1200 }),
108
120
  archiveDigest,
109
121
  packageRoot,
110
- files: files.sort(),
111
- skills: skills.sort((a, b) => a.name.localeCompare(b.name)),
122
+ files,
123
+ skills,
112
124
  };
113
125
  }
114
126
  return { indexInstalledRoot };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installed-package-index.js","sourceRoot":"","sources":["../../src/lifecycle/installed-package-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installed-package-roots.d.ts","sourceRoot":"","sources":["../../src/lifecycle/installed-package-roots.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,eAAO,MAAM,+BAA+B,QAAmB,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;IAAE,KAAK,EAAE,yBAAyB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACrF,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GACpC,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAe1C"}
@@ -9,12 +9,14 @@ export const INSTALLED_PLUGIN_DIGEST_PATTERN = /^[a-f0-9]{64}$/;
9
9
  * @complexity O(d) directory/containment operations for d revisions; no executable imports.
10
10
  */
11
11
  export async function listInstalledPackageRoots({ ports, workspaceRoot }, _optional = {}) {
12
- const persistentState = createPersistentStateModule(ports);
13
- const { assertContainedOnDisk } = createPackagePathsModule(ports);
14
- const readdir = ports.filesystem.readdir.bind(ports.filesystem);
12
+ const effects = {
13
+ readdir: ports.filesystem.readdir.bind(ports.filesystem),
14
+ assertOwnedPath: createPersistentStateModule(ports).assertOwnedPath,
15
+ assertContainedOnDisk: createPackagePathsModule(ports).assertContainedOnDisk,
16
+ };
15
17
  let folders;
16
18
  try {
17
- folders = await readdir(workspaceRoot, { withFileTypes: true });
19
+ folders = await effects.readdir(workspaceRoot, { withFileTypes: true });
18
20
  }
19
21
  catch (error) {
20
22
  if (isEnoent(error))
@@ -25,25 +27,31 @@ export async function listInstalledPackageRoots({ ports, workspaceRoot }, _optio
25
27
  for (const folder of folders) {
26
28
  if (!folder.isDirectory() || !/^[a-z0-9]+(?:[-.][a-z0-9]+)*$/.test(folder.name) || folder.name.length > 64)
27
29
  continue;
28
- const packagesDir = path.join(workspaceRoot, folder.name, 'package', 'sha256');
29
- let entries;
30
+ roots.push(...await listFolderRevisions({ effects, workspaceRoot, localId: folder.name }));
31
+ }
32
+ return roots;
33
+ }
34
+ /** One plugin folder's contained digest revisions; a folder with no owned package store has none. */
35
+ async function listFolderRevisions({ effects, workspaceRoot, localId }) {
36
+ const packagesDir = path.join(workspaceRoot, localId, 'package', 'sha256');
37
+ let entries;
38
+ try {
39
+ await effects.assertOwnedPath({ workspaceRoot, entryPath: path.relative(workspaceRoot, packagesDir) });
40
+ entries = await effects.readdir(packagesDir, { withFileTypes: true });
41
+ }
42
+ catch {
43
+ return [];
44
+ }
45
+ const roots = [];
46
+ for (const entry of entries) {
47
+ if (!entry.isDirectory() || !INSTALLED_PLUGIN_DIGEST_PATTERN.test(entry.name))
48
+ continue;
30
49
  try {
31
- await persistentState.assertOwnedPath({ workspaceRoot, entryPath: path.relative(workspaceRoot, packagesDir) });
32
- entries = await readdir(packagesDir, { withFileTypes: true });
50
+ const packageRoot = await effects.assertContainedOnDisk(workspaceRoot, path.relative(workspaceRoot, path.join(packagesDir, entry.name)));
51
+ roots.push({ localId, archiveDigest: entry.name, packageRoot });
33
52
  }
34
53
  catch {
35
- continue;
36
- }
37
- for (const entry of entries) {
38
- if (!entry.isDirectory() || !INSTALLED_PLUGIN_DIGEST_PATTERN.test(entry.name))
39
- continue;
40
- try {
41
- const packageRoot = await assertContainedOnDisk(workspaceRoot, path.relative(workspaceRoot, path.join(packagesDir, entry.name)));
42
- roots.push({ localId: folder.name, archiveDigest: entry.name, packageRoot });
43
- }
44
- catch {
45
- // One corrupt package never hides another plugin. Memory-only folders are not installs.
46
- }
54
+ // One corrupt package never hides another plugin. Memory-only folders are not installs.
47
55
  }
48
56
  }
49
57
  return roots;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installed-package-roots.js","sourceRoot":"","sources":["../../src/lifecycle/installed-package-roots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/lifecycle/layout.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC;IACjG,iBAAiB,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC;IACrG,eAAe,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAA;KAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC;IACvI,aAAa,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CAChE;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,0BAA0B,CAAC;CACtF;AACD,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEtD,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,qBAAqB,CA0BlG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/lifecycle/layout.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAiBlE,uFAAuF;AACvF,MAAM,UAAU,uBAAuB,CAAC,QAAmC;IACzE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO;QACL,IAAI;QACJ,YAAY,CAAC,EAAE,WAAW,EAAE;YAC1B,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;YACrC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;gBACxD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;gBAC5C,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI;gBACnG,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBAC3G,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE;oBACtD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACnF,OAAO,gBAAgB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7D,CAAC;gBACD,aAAa,CAAC,EAAE,QAAQ,EAAE;oBACxB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAC5B,OAAO,gBAAgB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;gBAC5D,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AACD,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qCAAqC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -8,6 +8,15 @@ export type AgentPluginServerMetadataReader = (required: {
8
8
  readonly value: Readonly<Record<string, unknown>>;
9
9
  readonly server: Readonly<Record<string, unknown>>;
10
10
  }) => Readonly<Record<string, unknown>>;
11
+ /**
12
+ * True when `value` is a valid Agent Plugin id: `plugin.json`'s `name` grammar (§5.5, see
13
+ * `NAME_PATTERN`), 1-64 characters. The one owner of that grammar: a host checks an id taken from a
14
+ * URL or a tool input here before it names anything on disk, instead of restating the pattern.
15
+ * @complexity O(n) in the value's length.
16
+ */
17
+ export declare function isAgentPluginName({ value }: {
18
+ readonly value: unknown;
19
+ }, _optional?: Record<string, never>): boolean;
11
20
  export interface AgentPluginManifest {
12
21
  readonly name: string;
13
22
  readonly version?: (string) | undefined;
@@ -19,6 +28,10 @@ export interface AgentPluginManifest {
19
28
  /** Normalized publisher identity, independent of name/storage key and version. */
20
29
  readonly id?: string | undefined;
21
30
  readonly provides?: readonly string[] | undefined;
31
+ /** `extensions.<ns>.requires`: advisory capability ids other active plugins should provide. */
32
+ readonly requires?: readonly string[] | undefined;
33
+ /** `extensions.<ns>.hostRange`: semver range over AGENT_PLUGIN_CONTRACT_VERSION; a malformed value is stored as `<invalid>`. */
34
+ readonly hostRange?: string | undefined;
22
35
  }
23
36
  export type ParseAgentPluginManifestResult = {
24
37
  readonly ok: true;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lifecycle/manifest.ts"],"names":[],"mappings":"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"}