@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,89 @@
1
+ // Bounds mirror the existing tier-3 tool capture (`@jini-ai/plugins/host` contributions.ts) so one
2
+ // plugin tool contract has one set of limits, whichever loader admitted it.
3
+ const NAME_PATTERN = /^[a-z][a-z0-9_]{0,63}$/;
4
+ const MAX_TOOLS = 128;
5
+ const MAX_DESCRIPTION = 8000;
6
+ const MAX_MODULE_PATH = 256;
7
+ const MAX_SCHEMA_BYTES = 65536;
8
+ const EFFECTS = new Set(['read', 'write', 'destructive']);
9
+ function isRecord(value) {
10
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
11
+ }
12
+ /** Why the input schema is unusable, or undefined. Detaches nothing; the caller copies. @complexity O(s) schema size. */
13
+ function schemaProblem(schema) {
14
+ if (!isRecord(schema) || schema.type !== 'object')
15
+ return 'inputSchema must be a JSON Schema describing an object';
16
+ if (new TextEncoder().encode(JSON.stringify(schema)).byteLength > MAX_SCHEMA_BYTES)
17
+ return 'inputSchema is larger than 64 KiB';
18
+ return undefined;
19
+ }
20
+ /** Why a description is unusable, or undefined. @complexity O(1). */
21
+ function descriptionProblem(name, description) {
22
+ if (typeof description === 'string' && description.trim() && description.length <= MAX_DESCRIPTION)
23
+ return undefined;
24
+ return `tool '${name}' needs a description of at most ${MAX_DESCRIPTION} characters`;
25
+ }
26
+ /** Why a module path is unusable here, or undefined; containment is checked on disk at import. @complexity O(1). */
27
+ function moduleProblem(name, module) {
28
+ if (typeof module === 'string' && module.endsWith('.mjs') && module.length <= MAX_MODULE_PATH)
29
+ return undefined;
30
+ return `tool '${name}' module must be a .mjs path inside the plugin`;
31
+ }
32
+ /** Why one declaration's scalar fields are invalid, or undefined. @complexity O(1). */
33
+ function fieldProblem(entry) {
34
+ const { name } = entry;
35
+ if (typeof name !== 'string' || !NAME_PATTERN.test(name))
36
+ return 'a tool name must be lower snake case, at most 64 characters';
37
+ const effectProblem = EFFECTS.has(entry.effect) ? undefined : `tool '${name}' effect must be read, write or destructive`;
38
+ return descriptionProblem(name, entry.description) ?? effectProblem ?? moduleProblem(name, entry.module);
39
+ }
40
+ /** One declaration, or why it is refused. Unknown keys are ignored. @complexity O(s) schema size. */
41
+ function parseEntry(entry) {
42
+ if (!isRecord(entry))
43
+ return 'every tool declaration must be an object';
44
+ const problem = fieldProblem(entry) ?? schemaProblem(entry.inputSchema);
45
+ if (problem)
46
+ return problem;
47
+ return Object.freeze({
48
+ name: entry.name, description: entry.description, effect: entry.effect,
49
+ module: entry.module, inputSchema: JSON.parse(JSON.stringify(entry.inputSchema)),
50
+ });
51
+ }
52
+ /** The declaration list from the raw file, or why the file is refused. @complexity O(n) file size. */
53
+ function declarations(raw) {
54
+ let value;
55
+ try {
56
+ value = JSON.parse(raw);
57
+ }
58
+ catch {
59
+ return 'not valid JSON';
60
+ }
61
+ if (!isRecord(value) || value.schemaVersion !== 1)
62
+ return 'schemaVersion must be 1';
63
+ const { tools } = value;
64
+ if (!Array.isArray(tools) || tools.length === 0 || tools.length > MAX_TOOLS)
65
+ return `tools must list 1 to ${MAX_TOOLS} declarations`;
66
+ return tools;
67
+ }
68
+ /**
69
+ * Parses the raw contribution file. A local name declared twice is refused (duplicate id).
70
+ * @param required.raw - The file text as read from a trusted package.
71
+ * @returns Descriptors in declaration order, or the reason the whole file is refused.
72
+ * @complexity O(t^2 + s) for t declarations (t <= 128) and s total schema size.
73
+ */
74
+ export function parseAgentPluginToolsFile(required, _optional = {}) {
75
+ const tools = declarations(required.raw);
76
+ if (typeof tools === 'string')
77
+ return { ok: false, reason: tools };
78
+ const descriptors = [];
79
+ for (const entry of tools) {
80
+ const parsed = parseEntry(entry);
81
+ if (typeof parsed === 'string')
82
+ return { ok: false, reason: parsed };
83
+ if (descriptors.some(existing => existing.name === parsed.name))
84
+ return { ok: false, reason: `tool '${parsed.name}' is declared more than once` };
85
+ descriptors.push(parsed);
86
+ }
87
+ return { ok: true, descriptors };
88
+ }
89
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/lifecycle/tools/manifest.ts"],"names":[],"mappings":"AA0BA,mGAAmG;AACnG,4EAA4E;AAC5E,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,OAAO,GAAyB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAEhF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,yHAAyH;AACzH,SAAS,aAAa,CAAC,MAAe;IACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,wDAAwD,CAAC;IACnH,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,gBAAgB;QAAE,OAAO,mCAAmC,CAAC;IAC/H,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qEAAqE;AACrE,SAAS,kBAAkB,CAAC,IAAY,EAAE,WAAoB;IAC5D,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,SAAS,CAAC;IACrH,OAAO,SAAS,IAAI,oCAAoC,eAAe,aAAa,CAAC;AACvF,CAAC;AAED,oHAAoH;AACpH,SAAS,aAAa,CAAC,IAAY,EAAE,MAAe;IAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,SAAS,CAAC;IAChH,OAAO,SAAS,IAAI,gDAAgD,CAAC;AACvE,CAAC;AAED,uFAAuF;AACvF,SAAS,YAAY,CAAC,KAA8B;IAClD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,6DAA6D,CAAC;IAC/H,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,6CAA6C,CAAC;IACzH,OAAO,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3G,CAAC;AAED,qGAAqG;AACrG,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,0CAA0C,CAAC;IACxE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxE,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAc,EAAE,WAAW,EAAE,KAAK,CAAC,WAAqB,EAAE,MAAM,EAAE,KAAK,CAAC,MAA+B;QACnH,MAAM,EAAE,KAAK,CAAC,MAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAA4B;KACtH,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,gBAAgB,CAAC;IAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC;QAAE,OAAO,yBAAyB,CAAC;IACpF,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;QAAE,OAAO,wBAAwB,SAAS,eAAe,CAAC;IACrI,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAkC,EAAE,YAAmC,EAAE;IACjH,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnE,MAAM,WAAW,GAAgC,EAAE,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACrE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,MAAM,CAAC,IAAI,8BAA8B,EAAE,CAAC;QAClJ,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { type AgentPluginToolCapabilitiesPort, type IssuedTokenMemories } from './capabilities.js';
2
+ import type { LoadedAgentPluginTool } from './definition.js';
3
+ import type { AgentPluginToolEffect } from './manifest.js';
4
+ /** What one call receives from the plugin tool contract. Structural: the host owns that contract. */
5
+ export interface AgentPluginToolInvocation {
6
+ readonly pluginId: string;
7
+ readonly auth: {
8
+ readonly workspaceId: string;
9
+ readonly principalId?: string;
10
+ };
11
+ readonly input: unknown;
12
+ readonly signal?: AbortSignal;
13
+ }
14
+ /** One tool in the contract's shape (`PluginToolContribution` in `@jini-ai/plugins/host`). */
15
+ export interface AgentPluginContractTool {
16
+ readonly name: string;
17
+ readonly description: string;
18
+ readonly inputSchema: Readonly<Record<string, unknown>>;
19
+ /** Always set here; optional so the host's own snapshot type (where it is optional) fits the port. */
20
+ readonly effect?: AgentPluginToolEffect;
21
+ handler(required: AgentPluginToolInvocation, optional?: Record<string, never>): unknown;
22
+ }
23
+ /** A host adapter over another admitted contribution, using its existing execution owner. */
24
+ export interface AgentPluginAdditionalTool {
25
+ readonly pluginId: string;
26
+ readonly tool: AgentPluginContractTool;
27
+ readonly describeAffectedResources: (required: {
28
+ readonly input: unknown;
29
+ }) => readonly string[] | Promise<readonly string[]>;
30
+ }
31
+ /** One plugin's generation in the contract's snapshot shape; routes and widgets stay empty. */
32
+ export interface AgentPluginToolSnapshot {
33
+ readonly pluginId: string;
34
+ readonly sdk: object;
35
+ readonly routes: readonly unknown[];
36
+ readonly widgets: readonly unknown[];
37
+ readonly tools: readonly AgentPluginContractTool[];
38
+ }
39
+ /** Host ports: its contribution registry and its tool-id namespacing rule (`pluginToolIdFor`). */
40
+ export interface AgentPluginToolProjectionPorts {
41
+ readonly registry: {
42
+ replace(required: {
43
+ readonly contributions: AgentPluginToolSnapshot;
44
+ }, optional?: Record<string, never>): void;
45
+ detach(required: {
46
+ readonly pluginId: string;
47
+ }, optional?: Record<string, never>): void;
48
+ list(required: Record<string, never>, optional?: Record<string, never>): readonly unknown[];
49
+ };
50
+ readonly toolIdFor: (required: {
51
+ readonly pluginId: string;
52
+ readonly name: string;
53
+ }, optional?: Record<string, never>) => string;
54
+ readonly capabilities: AgentPluginToolCapabilitiesPort;
55
+ /** The host's ONE token memory source, also passed to its admin-surface host (see `createIssuedTokenMemories`). */
56
+ readonly issuedTokens: IssuedTokenMemories;
57
+ }
58
+ /** What the host shows before confirming a call. */
59
+ export interface AgentPluginToolDisclosure {
60
+ readonly effect: AgentPluginToolEffect;
61
+ readonly resources: readonly string[];
62
+ }
63
+ /**
64
+ * Creates the projection for one dedicated contribution registry (keyed by plugin id, so it must not
65
+ * be shared with site plugins whose ids could match). Call `sync` after every load: on boot and on
66
+ * every activation change. A plugin missing from a load is detached: its tools disappear and its
67
+ * calls' capabilities are revoked.
68
+ * @param required.registry - Registry the host attached with `attachPluginContributionTools`.
69
+ * @param required.toolIdFor - The contract's namespacing rule (`pluginToolIdFor`), so ids match the registry's.
70
+ * @param required.capabilities - Host port building one call's capabilities.
71
+ * @param required.issuedTokens - Per-plugin token memory shared with the plugin's admin-surface handlers.
72
+ * @complexity sync is O(t) tools plus schema compilation; disclosure lookup is O(1).
73
+ */
74
+ export declare function createAgentPluginToolProjection(required: AgentPluginToolProjectionPorts, _optional?: Record<string, never>): {
75
+ /** Projects one load result. @returns The loader's refusals plus this seam's own, in order. */
76
+ sync(input: {
77
+ readonly loaded: readonly LoadedAgentPluginTool[];
78
+ readonly refusals: readonly string[];
79
+ readonly additionalTools?: readonly AgentPluginAdditionalTool[];
80
+ }, _options?: Record<string, never>): {
81
+ readonly refusals: readonly string[];
82
+ };
83
+ /** What a call would change, for the confirmation prompt; null for an unknown or withdrawn tool.
84
+ * @throws ToolInputError for input that fails the schema; Error for an invalid hook answer. */
85
+ describeAffectedResources(input: {
86
+ readonly toolId: string;
87
+ readonly input: unknown;
88
+ }, _options?: Record<string, never>): Promise<AgentPluginToolDisclosure | null>;
89
+ };
90
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/tools/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,283 @@
1
+ /**
2
+ * @file Projects loaded Agent Plugin tools into the EXISTING plugin tool contribution contract
3
+ * (`@jini-ai/plugins/host`: `PluginContributionRegistry` → `attachPluginContributionTools`), so these
4
+ * tools reach the assistant through the same namespaced ids, enablement recheck, auth port, confirmation
5
+ * and revocable registry scope as every other plugin tool. Nothing here registers tools directly.
6
+ *
7
+ * Added at this seam, because only it knows a tool came from an Agent Plugin module:
8
+ * - schema validation of the input before the module runs (the registry passes schemas through);
9
+ * - per-call host capabilities, revoked when the plugin's tools are withdrawn;
10
+ * - the affected-resources disclosure the host shows before confirming a write/destructive call;
11
+ * - refusal of ambiguous ids (two plugins whose namespaced ids collide) and of write/destructive
12
+ * tools that cannot disclose what they change.
13
+ */
14
+ import { Validator } from '@cfworker/json-schema';
15
+ import { requireInputRecord, ToolInputError } from '@jini-ai/core';
16
+ import { openCapabilitySession, openCredentialScan, REVOKED_MESSAGE } from './capabilities.js';
17
+ const MAX_RESOURCES = 50;
18
+ const MAX_RESOURCE_LENGTH = 300;
19
+ /** Agent Plugin tools have no site-plugin SDK; the contract's slot is filled with one that refuses. */
20
+ const refuse = () => { throw new Error('Agent Plugin tools have no site-plugin SDK.'); };
21
+ const INERT_SDK = Object.freeze({
22
+ content: Object.freeze({ read: refuse, extend: refuse }), addFilter: refuse, addAction: refuse, addContribution: refuse,
23
+ routes: Object.freeze({ add: refuse }), tools: Object.freeze({ add: refuse }), widgets: Object.freeze({ add: refuse }),
24
+ });
25
+ /** Compiles the declared schema, or says why it cannot be used. @complexity O(s) schema size. */
26
+ function compileSchema(schema) {
27
+ try {
28
+ const validator = new Validator(schema, '2020-12', true);
29
+ // cfworker resolves references lazily; one probe surfaces a root-level unresolved $ref at load.
30
+ validator.validate({});
31
+ return validator;
32
+ }
33
+ catch (error) {
34
+ return `its input schema is invalid (${error instanceof Error ? error.message : String(error)})`;
35
+ }
36
+ }
37
+ /** Why a loaded tool cannot be projected, or its admitted form. @complexity O(s) schema size. */
38
+ function admitOne(loaded, toolIdFor) {
39
+ const { descriptor, module } = loaded;
40
+ if (descriptor.effect !== 'read' && typeof module.describeAffectedResources !== 'function') {
41
+ return `a ${descriptor.effect} tool must export describeAffectedResources()`;
42
+ }
43
+ const validator = compileSchema(descriptor.inputSchema);
44
+ if (typeof validator === 'string')
45
+ return validator;
46
+ return { toolId: toolIdFor({ pluginId: loaded.pluginId, name: descriptor.name }), loaded, validator };
47
+ }
48
+ /** Admits each tool, then drops every id more than one plugin claims ("refusing to guess").
49
+ * @complexity O(t) tools plus schema compilation. */
50
+ function admitAll(loaded, refusals, toolIdFor) {
51
+ const admitted = [];
52
+ for (const entry of loaded) {
53
+ const result = admitOne(entry, toolIdFor);
54
+ if (typeof result === 'string')
55
+ refusals.push(`agent tool '${entry.descriptor.name}' from '${entry.pluginId}' was not loaded: ${result}`);
56
+ else
57
+ admitted.push(result);
58
+ }
59
+ const claimants = new Map();
60
+ for (const tool of admitted)
61
+ claimants.set(tool.toolId, (claimants.get(tool.toolId) ?? new Set()).add(tool.loaded.pluginId));
62
+ for (const [toolId, owners] of claimants) {
63
+ if (owners.size > 1)
64
+ refusals.push(`agent tool '${toolId}' was not loaded: more than one plugin declares it (${[...owners].map(id => `'${id}'`).sort().join(', ')})`);
65
+ }
66
+ return admitted.filter(tool => claimants.get(tool.toolId).size === 1);
67
+ }
68
+ /** Validates input against the declared schema; the message names locations, never values.
69
+ * @complexity O(n) input size. */
70
+ function validatedInput(tool, input) {
71
+ const record = requireInputRecord({ input });
72
+ let result;
73
+ // A schema fault reached only by some inputs (nested $ref, bad pattern) fails closed, not as bad input.
74
+ try {
75
+ result = tool.validator.validate(record);
76
+ }
77
+ catch (error) {
78
+ throw new Error(`Plugin tool '${tool.toolId}' has an unusable input schema; report it to the plugin author.`, { cause: error });
79
+ }
80
+ if (result.valid)
81
+ return record;
82
+ // cfworker roots every instanceLocation at '#' (validate()'s default, children append '/key'), so it
83
+ // is never empty; pinned by "input failing at the schema root is located at #" in projection.unit.test.ts.
84
+ const where = [...new Set(result.errors.map(unit => `${unit.instanceLocation} (${unit.keyword})`))].slice(0, 3).join(', ');
85
+ throw new ToolInputError({ message: `Input for '${tool.toolId}' does not match its schema at ${where}. Fix the input and retry.` });
86
+ }
87
+ /** True when both generations hold the same modules and declarations: no revocation needed. @complexity O(t). */
88
+ function sameTools(previous, next, additional) {
89
+ if (!previous || previous.tools.length !== next.length || previous.additional.length !== additional.length
90
+ || !previous.additional.every((tool, index) => tool === additional[index]))
91
+ return false;
92
+ return previous.tools.every((tool, index) => tool.loaded.module === next[index].loaded.module
93
+ && JSON.stringify(tool.loaded.descriptor) === JSON.stringify(next[index].loaded.descriptor));
94
+ }
95
+ /**
96
+ * Checks a disclosure hook's answer. Its text reaches the confirmation prompt and the transcript,
97
+ * and module scope may still hold a token from an earlier call, so a list that mentions one is
98
+ * refused like a malformed one. @complexity O(r) resources plus the token scan.
99
+ */
100
+ function checkedResources(toolId, value, scan) {
101
+ const valid = Array.isArray(value) && value.length <= MAX_RESOURCES
102
+ && value.every(item => typeof item === 'string' && item.length > 0 && item.length <= MAX_RESOURCE_LENGTH)
103
+ && !scan.mentionsToken({ value });
104
+ if (!valid)
105
+ throw new Error(`Plugin tool '${toolId}' returned an invalid affected-resources list; the call cannot be confirmed. Report it to the plugin author.`);
106
+ return Object.freeze([...value]);
107
+ }
108
+ /** Groups admitted tools and additional contributions in declaration order.
109
+ * Mutates only the local groups and appends admission failures to refusals. @complexity O(t) plus schema compilation. */
110
+ function groupProjectionTools({ loaded, additionalTools, refusals, toolIdFor }, _options = {}) {
111
+ const grouped = new Map();
112
+ for (const tool of admitAll(loaded, refusals, toolIdFor)) {
113
+ const group = grouped.get(tool.loaded.pluginId);
114
+ if (group)
115
+ group.push(tool);
116
+ else
117
+ grouped.set(tool.loaded.pluginId, [tool]);
118
+ }
119
+ const additional = new Map();
120
+ for (const entry of additionalTools ?? []) {
121
+ const group = additional.get(entry.pluginId);
122
+ if (group)
123
+ group.push(entry);
124
+ else
125
+ additional.set(entry.pluginId, [entry]);
126
+ if (!grouped.has(entry.pluginId))
127
+ grouped.set(entry.pluginId, []);
128
+ }
129
+ return { grouped, additional };
130
+ }
131
+ /** Counts all declarations, including refused tools, and appends ambiguous-id refusals.
132
+ * @complexity O(t * (r + 1)) time and O(t) space for t declarations and r prior refusals. */
133
+ function countProjectionClaims({ loaded, additionalTools, refusals, idFor }, _options = {}) {
134
+ // All claimants lose an ambiguous id, including collisions between executable and surface tools.
135
+ const counts = new Map();
136
+ const claimedIds = [...loaded.map(tool => idFor({ pluginId: tool.pluginId, name: tool.descriptor.name })),
137
+ ...(additionalTools ?? []).map(entry => idFor({ pluginId: entry.pluginId, name: entry.tool.name }))];
138
+ for (const id of claimedIds)
139
+ counts.set(id, (counts.get(id) ?? 0) + 1);
140
+ for (const [id, count] of counts) {
141
+ if (count <= 1)
142
+ continue;
143
+ // MOVE: Admission already reports executable collisions with their owners; preserve that diagnostic once.
144
+ if (refusals.some(reason => reason.startsWith(`agent tool '${id}' was not loaded:`)))
145
+ continue;
146
+ refusals.push(`agent tool '${id}' was not loaded: more than one contribution declares it`);
147
+ }
148
+ return counts;
149
+ }
150
+ /**
151
+ * Creates the projection for one dedicated contribution registry (keyed by plugin id, so it must not
152
+ * be shared with site plugins whose ids could match). Call `sync` after every load: on boot and on
153
+ * every activation change. A plugin missing from a load is detached: its tools disappear and its
154
+ * calls' capabilities are revoked.
155
+ * @param required.registry - Registry the host attached with `attachPluginContributionTools`.
156
+ * @param required.toolIdFor - The contract's namespacing rule (`pluginToolIdFor`), so ids match the registry's.
157
+ * @param required.capabilities - Host port building one call's capabilities.
158
+ * @param required.issuedTokens - Per-plugin token memory shared with the plugin's admin-surface handlers.
159
+ * @complexity sync is O(t) tools plus schema compilation; disclosure lookup is O(1).
160
+ */
161
+ export function createAgentPluginToolProjection(required, _optional = {}) {
162
+ const { registry } = required;
163
+ let projected = new Map();
164
+ let additionalById = new Map();
165
+ let byToolId = new Map();
166
+ /** One contract tool whose handler validates, scopes capabilities and gates the result. */
167
+ function contractTool(tool, generationOf) {
168
+ const { isLive, issued } = generationOf;
169
+ const { descriptor, module } = tool.loaded;
170
+ const contribution = {
171
+ name: descriptor.name, description: descriptor.description, inputSchema: descriptor.inputSchema, effect: descriptor.effect,
172
+ async handler({ pluginId, auth, input, signal }) {
173
+ // Defense in depth: the registry rechecks enablement, but a retained handler must not run either.
174
+ if (!isLive())
175
+ throw new Error(REVOKED_MESSAGE);
176
+ const checked = validatedInput(tool, input);
177
+ const host = required.capabilities({ pluginId, workspaceId: auth.workspaceId,
178
+ ...(auth.principalId === undefined ? {} : { principalId: auth.principalId }), ...(signal === undefined ? {} : { signal }) });
179
+ const session = openCapabilitySession({ capabilities: host, isLive, issued });
180
+ try {
181
+ const value = await module.invoke({ input: checked, capabilities: session.capabilities, ...(signal === undefined ? {} : { signal }) });
182
+ return session.release({ value });
183
+ }
184
+ catch (error) {
185
+ throw session.sanitize({ error });
186
+ }
187
+ },
188
+ };
189
+ return Object.freeze(contribution);
190
+ }
191
+ /** A fresh generation for one plugin; its tools are live only while the registry holds it. */
192
+ function generation(pluginId, tools, additional) {
193
+ let snapshot;
194
+ const isLive = () => snapshot !== undefined && registry.list({}).includes(snapshot);
195
+ const issued = required.issuedTokens.forPlugin({ pluginId });
196
+ snapshot = Object.freeze({ pluginId, sdk: INERT_SDK, routes: Object.freeze([]), widgets: Object.freeze([]),
197
+ tools: Object.freeze([...tools.map(tool => contractTool(tool, { isLive, issued })), ...additional.map(({ tool }) => Object.freeze({
198
+ ...tool,
199
+ handler(input) {
200
+ if (!isLive())
201
+ throw new Error(REVOKED_MESSAGE);
202
+ return tool.handler(input);
203
+ },
204
+ }))]) });
205
+ return { snapshot, tools, additional };
206
+ }
207
+ /** Replaces one plugin's generation unless it is unchanged; a refused replacement detaches it. */
208
+ function place(pluginId, tools, additional, refusals) {
209
+ const previous = projected.get(pluginId);
210
+ if (sameTools(previous, tools, additional))
211
+ return previous;
212
+ const next = generation(pluginId, tools, additional);
213
+ try {
214
+ registry.replace({ contributions: next.snapshot });
215
+ return next;
216
+ }
217
+ catch (error) {
218
+ registry.detach({ pluginId });
219
+ refusals.push(`agent tools from '${pluginId}' were not loaded: ${error instanceof Error ? error.message : String(error)}`);
220
+ return undefined;
221
+ }
222
+ }
223
+ return {
224
+ /** Projects one load result. @returns The loader's refusals plus this seam's own, in order. */
225
+ sync(input, _options = {}) {
226
+ const refusals = [...input.refusals];
227
+ const { grouped, additional } = groupProjectionTools({
228
+ loaded: input.loaded, additionalTools: input.additionalTools, refusals, toolIdFor: required.toolIdFor,
229
+ });
230
+ const idFor = required.toolIdFor;
231
+ const counts = countProjectionClaims({ loaded: input.loaded, additionalTools: input.additionalTools, refusals, idFor });
232
+ const nextProjected = new Map();
233
+ for (const [pluginId, tools] of grouped) {
234
+ const unique = tools.filter(tool => counts.get(tool.toolId) === 1);
235
+ const extras = (additional.get(pluginId) ?? []).filter(entry => counts.get(idFor({ pluginId, name: entry.tool.name })) === 1);
236
+ const placed = place(pluginId, unique, extras, refusals);
237
+ if (placed)
238
+ nextProjected.set(pluginId, placed);
239
+ }
240
+ for (const pluginId of projected.keys())
241
+ if (!grouped.has(pluginId))
242
+ registry.detach({ pluginId });
243
+ projected = nextProjected;
244
+ additionalById = new Map([...nextProjected.values()].flatMap(plugin => plugin.additional.map(entry => [idFor({ pluginId: entry.pluginId, name: entry.tool.name }), { entry, snapshot: plugin.snapshot }])));
245
+ byToolId = new Map([...nextProjected.values()].flatMap(plugin => plugin.tools.map(tool => [tool.toolId, { tool, snapshot: plugin.snapshot }])));
246
+ return { refusals };
247
+ },
248
+ /** What a call would change, for the confirmation prompt; null for an unknown or withdrawn tool.
249
+ * @throws ToolInputError for input that fails the schema; Error for an invalid hook answer. */
250
+ async describeAffectedResources(input, _options = {}) {
251
+ const extra = additionalById.get(input.toolId);
252
+ if (extra && registry.list({}).includes(extra.snapshot)) {
253
+ const scan = openCredentialScan({ issued: required.issuedTokens.forPlugin({ pluginId: extra.entry.pluginId }) });
254
+ try {
255
+ const resources = await extra.entry.describeAffectedResources({ input: input.input });
256
+ return { effect: extra.entry.tool.effect ?? 'write', resources: checkedResources(input.toolId, resources, scan) };
257
+ }
258
+ catch (error) {
259
+ throw scan.sanitize({ error });
260
+ }
261
+ }
262
+ const entry = byToolId.get(input.toolId);
263
+ if (!entry || !registry.list({}).includes(entry.snapshot))
264
+ return null;
265
+ const { tool } = entry;
266
+ const checked = validatedInput(tool, input.input);
267
+ const describe = tool.loaded.module.describeAffectedResources;
268
+ if (!describe)
269
+ return { effect: tool.loaded.descriptor.effect, resources: [] };
270
+ // The same per-plugin token memory the plugin's calls feed: its answers and errors are scanned alike.
271
+ const scan = openCredentialScan({ issued: required.issuedTokens.forPlugin({ pluginId: tool.loaded.pluginId }) });
272
+ let answer;
273
+ try {
274
+ answer = await describe({ input: checked });
275
+ }
276
+ catch (error) {
277
+ throw scan.sanitize({ error });
278
+ }
279
+ return { effect: tool.loaded.descriptor.effect, resources: checkedResources(tool.toolId, answer, scan) };
280
+ },
281
+ };
282
+ }
283
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/lifecycle/tools/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-plugin-files.d.ts","sourceRoot":"","sources":["../../src/lifecycle/trusted-plugin-files.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,2GAA2G;IAC3G,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAEhC,sEAAsE;IACtE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAEjD;uFACmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC5G;AAED;;oCAEoC;AACpC,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAsF7G,gFAAgF;AAChF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,yBAAyB;uCAtE7B,0BAA0B,KAAG,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;oCAsCxE,oBAAoB,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;oCAWxD,oBAAoB,cAAc,MAAM,KAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC;EAyBzI"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-plugin-files.js","sourceRoot":"","sources":["../../src/lifecycle/trusted-plugin-files.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,kCAAkC,EAAE,MAAM,gCAAgC,CAAC;AA8DpF,SAAS,WAAW,CAAC,KAAgC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,EAAE,4BAA4B,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC7G,MAAM,EAAE,qBAAqB,EAAE,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,EAAE,oBAAoB,EAAE,GAAG,kCAAkC,CAAC,KAAK,CAAC,CAAC;IAC3E;;;;;;;;KAQC;IACD,KAAK,UAAU,yBAAyB,CAAC,KAAiC;QACxE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,+BAA+B,CAAC,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACpG,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1H,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACrD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7F,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/E,IAAI,OAAO,KAAK,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;iBAC5C,IAAI,OAAO,KAAK,UAAU;gBAAE,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;;gBAC1E,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,QAAQ,sBAAsB,OAAO,EAAE,EAAE,CAAC,CAAC;QACjH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;qDACiD;IACjD,KAAK,UAAU,YAAY,CACzB,KAAiC,EACjC,MAAqE,EACrE,aAAiC,EACjC,aAAqB;QAErB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtF,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU;gBAAE,OAAO,UAAU,CAAC;YACzD,IAAI,UAAU,CAAC,OAAO,KAAK,cAAc;gBAAE,OAAO,qCAAqC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC9G,CAAC;QACD,IAAI,aAAa,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3C,OAAO,6BAA6B,KAAK,CAAC,WAAW,YAAY,KAAK,CAAC,YAAY,sBAAsB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qCAAqC,CAAC;QAClL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8FAA8F;IAC9F,KAAK,UAAU,qBAAqB,CAAC,MAA4B,EAAE,QAAgB;QACjF,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;;;KAKC;IACD,KAAK,UAAU,qBAAqB,CAAC,MAA4B,EAAE,UAAkB;QACnF,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB;gBAAE,OAAO,gBAAgB,UAAU,2BAA2B,CAAC;YACxG,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAmC,CAAC;YAChG,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,OAAO,EAA6D,CAAC;AAC3F,gFAAgF;AAChF,MAAM,UAAU,8BAA8B,CAAC,KAAgC;IAC7E,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAAC,CAAC;IACjF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -8,6 +8,8 @@ export interface InstalledAgentPluginSkill {
8
8
  export interface InstalledAgentPlugin {
9
9
  readonly id?: string | undefined;
10
10
  readonly provides?: readonly string[] | undefined;
11
+ readonly requires?: readonly string[] | undefined;
12
+ readonly hostRange?: string | undefined;
11
13
  readonly pluginId: string;
12
14
  readonly version?: (string) | undefined;
13
15
  /** the host extension namespace in `plugin.json`: `displayName` — the human-facing title when the id alone reads
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,0EAA0E;AAC1E,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAExC;;;;qCAIiC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C;;;;oEAIgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAExC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACvD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lifecycle/types.ts"],"names":[],"mappings":""}
@@ -64,7 +64,9 @@ export interface StagedTree {
64
64
  export declare function createUninstallModule(ports: AgentPluginLifecyclePorts): {
65
65
  previewAgentPluginUninstall: (required: UninstallAgentPluginRequired) => Promise<AgentPluginUninstallPreview>;
66
66
  uninstallAgentPlugin: (required: UninstallAgentPluginRequired, optional?: UninstallAgentPluginOptional) => Promise<UninstallAgentPluginResult>;
67
- stageForRemoval: (packagesDir: string, packageRoot: string) => Promise<StagedTree>;
67
+ stageForRemoval: (packagesDir: string, packageRoot: string, optional?: {
68
+ quarantined?: string;
69
+ }) => Promise<StagedTree>;
68
70
  restoreStagedTrees: (staged: readonly StagedTree[], cause: unknown) => Promise<unknown>;
69
71
  removeFrozenPackageTree: (root: string) => Promise<void>;
70
72
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/lifecycle/uninstall.ts"],"names":[],"mappings":"AAoHA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,yEAAyE;AACzE,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,GAAE,YAAiB;CACnF;AAED;2BAC2B;AAC3B,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,GAAE,YAAiB;CACnF;AAED;gFACgF;AAChF,qBAAa,mCAAoC,SAAQ,KAAK;gBAChD,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,GAAE,YAAiB;CACnF;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAE3C;;wGAEoG;IACpG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,2BAA2B,CAAC,GAAG,SAAS,CAAC;IACtE,qFAAqF;IACrF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE5C;;;wFAGoF;IACpF,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;uFAEmF;IACnF,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,kGAAkG;AAClG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,4FAA4F;IAC5F,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,qGAAqG;AACrG;iEACiE;AACjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAsTD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,yBAAyB;4CAjRf,4BAA4B,KAAG,OAAO,CAAC,2BAA2B,CAAC;qCAqB1E,4BAA4B,aAAY,4BAA4B,KAAQ,OAAO,CAAC,0BAA0B,CAAC;mCA+GjH,MAAM,eAAe,MAAM,aAAY;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAAQ,OAAO,CAAC,UAAU,CAAC;iCAwB5F,SAAS,UAAU,EAAE,SAAS,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;oCAwFrD,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;EAiCpE"}