@jini-ai/agent-plugins 0.6.15-rc.2 → 0.6.16
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.
- package/CHANGELOG.md +18 -0
- package/README.md +21 -50
- package/dist/admin-surfaces/action-tools.js +1 -1
- package/dist/admin-surfaces/external-links.js +2 -1
- package/dist/admin-surfaces/host-validator.js +2 -2
- package/dist/admin-surfaces/settings-value.js +3 -1
- package/dist/admin-surfaces/surface-client.js +13 -5
- package/dist/core/plugin-name.d.ts +11 -0
- package/dist/core/plugin-name.js +19 -0
- package/dist/folder-zip-node.d.ts +21 -0
- package/dist/folder-zip-node.js +85 -3
- package/dist/lifecycle/activation.js +2 -2
- package/dist/lifecycle/automatic-use.js +12 -7
- package/dist/lifecycle/bundled-digests.js +3 -8
- package/dist/lifecycle/bundled-source-archive.d.ts +8 -2
- package/dist/lifecycle/bundled-source-archive.js +17 -8
- package/dist/lifecycle/contribution-loader.js +4 -5
- package/dist/lifecycle/index.d.ts +1 -2
- package/dist/lifecycle/install.js +59 -53
- package/dist/lifecycle/installed-package-index.js +4 -2
- package/dist/lifecycle/manifest.d.ts +1 -9
- package/dist/lifecycle/manifest.js +6 -21
- package/dist/lifecycle/node.js +4 -2
- package/dist/lifecycle/resolve-agent-plugin-refs.js +1 -3
- package/dist/lifecycle/search-projection.js +7 -6
- package/dist/lifecycle/seed-bundled.js +1 -3
- package/dist/lifecycle/skill-file-reader.js +15 -5
- package/dist/lifecycle/tools/capabilities.js +5 -3
- package/dist/lifecycle/tools/projection.js +3 -4
- package/dist/lifecycle/update.js +4 -2
- package/dist/lifecycle/yauzl-archive-reader.js +21 -23
- package/package.json +11 -8
- package/dist/admin-surfaces/action-dispatcher.d.ts.map +0 -1
- package/dist/admin-surfaces/action-dispatcher.js.map +0 -1
- package/dist/admin-surfaces/action-schema.d.ts.map +0 -1
- package/dist/admin-surfaces/action-schema.js.map +0 -1
- package/dist/admin-surfaces/action-tools.d.ts.map +0 -1
- package/dist/admin-surfaces/action-tools.js.map +0 -1
- package/dist/admin-surfaces/callback-field-inbox.d.ts.map +0 -1
- package/dist/admin-surfaces/callback-field-inbox.js.map +0 -1
- package/dist/admin-surfaces/capability-declarations.d.ts.map +0 -1
- package/dist/admin-surfaces/capability-declarations.js.map +0 -1
- package/dist/admin-surfaces/contribution.d.ts.map +0 -1
- package/dist/admin-surfaces/contribution.js.map +0 -1
- package/dist/admin-surfaces/delivery-bindings.d.ts.map +0 -1
- package/dist/admin-surfaces/delivery-bindings.js.map +0 -1
- package/dist/admin-surfaces/descriptor.d.ts.map +0 -1
- package/dist/admin-surfaces/descriptor.js.map +0 -1
- package/dist/admin-surfaces/external-links.d.ts.map +0 -1
- package/dist/admin-surfaces/external-links.js.map +0 -1
- package/dist/admin-surfaces/host-validator.d.ts.map +0 -1
- package/dist/admin-surfaces/host-validator.js.map +0 -1
- package/dist/admin-surfaces/index.d.ts.map +0 -1
- package/dist/admin-surfaces/index.js.map +0 -1
- package/dist/admin-surfaces/protocol.d.ts.map +0 -1
- package/dist/admin-surfaces/protocol.js.map +0 -1
- package/dist/admin-surfaces/sandbox.d.ts.map +0 -1
- package/dist/admin-surfaces/sandbox.js.map +0 -1
- package/dist/admin-surfaces/settings-value.d.ts.map +0 -1
- package/dist/admin-surfaces/settings-value.js.map +0 -1
- package/dist/admin-surfaces/surface-capabilities.d.ts.map +0 -1
- package/dist/admin-surfaces/surface-capabilities.js.map +0 -1
- package/dist/admin-surfaces/surface-client.d.ts.map +0 -1
- package/dist/admin-surfaces/surface-client.js.map +0 -1
- package/dist/admin-surfaces/surface-handlers.d.ts.map +0 -1
- package/dist/admin-surfaces/surface-handlers.js.map +0 -1
- package/dist/admin-surfaces/theme.d.ts.map +0 -1
- package/dist/admin-surfaces/theme.js.map +0 -1
- package/dist/contracts/admin-surface-action-schema.d.ts.map +0 -1
- package/dist/contracts/admin-surface-action-schema.js.map +0 -1
- package/dist/folder-zip-node.d.ts.map +0 -1
- package/dist/folder-zip-node.js.map +0 -1
- package/dist/folder-zip.d.ts.map +0 -1
- package/dist/folder-zip.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lifecycle/activation.d.ts.map +0 -1
- package/dist/lifecycle/activation.js.map +0 -1
- package/dist/lifecycle/automatic-use.d.ts.map +0 -1
- package/dist/lifecycle/automatic-use.js.map +0 -1
- package/dist/lifecycle/bundled-digests.d.ts.map +0 -1
- package/dist/lifecycle/bundled-digests.js.map +0 -1
- package/dist/lifecycle/bundled-source-archive.d.ts.map +0 -1
- package/dist/lifecycle/bundled-source-archive.js.map +0 -1
- package/dist/lifecycle/capability-projection.d.ts.map +0 -1
- package/dist/lifecycle/capability-projection.js.map +0 -1
- package/dist/lifecycle/compatibility-metadata.d.ts.map +0 -1
- package/dist/lifecycle/compatibility-metadata.js.map +0 -1
- package/dist/lifecycle/compatibility.d.ts.map +0 -1
- package/dist/lifecycle/compatibility.js.map +0 -1
- package/dist/lifecycle/contribution-loader.d.ts.map +0 -1
- package/dist/lifecycle/contribution-loader.js.map +0 -1
- package/dist/lifecycle/exports.d.ts.map +0 -1
- package/dist/lifecycle/exports.js.map +0 -1
- package/dist/lifecycle/fetch-archive.d.ts.map +0 -1
- package/dist/lifecycle/fetch-archive.js.map +0 -1
- package/dist/lifecycle/index.d.ts.map +0 -1
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/lifecycle/install-errors.d.ts.map +0 -1
- package/dist/lifecycle/install-errors.js.map +0 -1
- package/dist/lifecycle/install-from-url.d.ts.map +0 -1
- package/dist/lifecycle/install-from-url.js.map +0 -1
- package/dist/lifecycle/install.d.ts.map +0 -1
- package/dist/lifecycle/install.js.map +0 -1
- package/dist/lifecycle/installed-package-index.d.ts.map +0 -1
- package/dist/lifecycle/installed-package-index.js.map +0 -1
- package/dist/lifecycle/installed-package-roots.d.ts.map +0 -1
- package/dist/lifecycle/installed-package-roots.js.map +0 -1
- package/dist/lifecycle/layout.d.ts.map +0 -1
- package/dist/lifecycle/layout.js.map +0 -1
- package/dist/lifecycle/manifest.d.ts.map +0 -1
- package/dist/lifecycle/manifest.js.map +0 -1
- package/dist/lifecycle/mcp-provisioning.d.ts.map +0 -1
- package/dist/lifecycle/mcp-provisioning.js.map +0 -1
- package/dist/lifecycle/node.d.ts.map +0 -1
- package/dist/lifecycle/node.js.map +0 -1
- package/dist/lifecycle/package-paths.d.ts.map +0 -1
- package/dist/lifecycle/package-paths.js.map +0 -1
- package/dist/lifecycle/persistent-state.d.ts.map +0 -1
- package/dist/lifecycle/persistent-state.js.map +0 -1
- package/dist/lifecycle/ports.d.ts.map +0 -1
- package/dist/lifecycle/ports.js.map +0 -1
- package/dist/lifecycle/provider-contribution.d.ts.map +0 -1
- package/dist/lifecycle/provider-contribution.js.map +0 -1
- package/dist/lifecycle/resolve-agent-plugin-refs.d.ts.map +0 -1
- package/dist/lifecycle/resolve-agent-plugin-refs.js.map +0 -1
- package/dist/lifecycle/retire-bundled.d.ts.map +0 -1
- package/dist/lifecycle/retire-bundled.js.map +0 -1
- package/dist/lifecycle/search-projection.d.ts.map +0 -1
- package/dist/lifecycle/search-projection.js.map +0 -1
- package/dist/lifecycle/search.d.ts.map +0 -1
- package/dist/lifecycle/search.js.map +0 -1
- package/dist/lifecycle/seed-bundled.d.ts.map +0 -1
- package/dist/lifecycle/seed-bundled.js.map +0 -1
- package/dist/lifecycle/set-enabled.d.ts.map +0 -1
- package/dist/lifecycle/set-enabled.js.map +0 -1
- package/dist/lifecycle/skill-file-reader.d.ts.map +0 -1
- package/dist/lifecycle/skill-file-reader.js.map +0 -1
- package/dist/lifecycle/tools/capabilities.d.ts.map +0 -1
- package/dist/lifecycle/tools/capabilities.js.map +0 -1
- package/dist/lifecycle/tools/definition.d.ts.map +0 -1
- package/dist/lifecycle/tools/definition.js.map +0 -1
- package/dist/lifecycle/tools/index.d.ts.map +0 -1
- package/dist/lifecycle/tools/index.js.map +0 -1
- package/dist/lifecycle/tools/manifest.d.ts.map +0 -1
- package/dist/lifecycle/tools/manifest.js.map +0 -1
- package/dist/lifecycle/tools/projection.d.ts.map +0 -1
- package/dist/lifecycle/tools/projection.js.map +0 -1
- package/dist/lifecycle/trusted-plugin-files.d.ts.map +0 -1
- package/dist/lifecycle/trusted-plugin-files.js.map +0 -1
- package/dist/lifecycle/types.d.ts.map +0 -1
- package/dist/lifecycle/types.js.map +0 -1
- package/dist/lifecycle/uninstall.d.ts.map +0 -1
- package/dist/lifecycle/uninstall.js.map +0 -1
- package/dist/lifecycle/update-plan.d.ts.map +0 -1
- package/dist/lifecycle/update-plan.js.map +0 -1
- package/dist/lifecycle/update-store.d.ts.map +0 -1
- package/dist/lifecycle/update-store.js.map +0 -1
- package/dist/lifecycle/update.d.ts.map +0 -1
- package/dist/lifecycle/update.js.map +0 -1
- package/dist/lifecycle/yauzl-archive-reader.d.ts.map +0 -1
- package/dist/lifecycle/yauzl-archive-reader.js.map +0 -1
- package/dist/manifest.d.ts.map +0 -1
- package/dist/manifest.js.map +0 -1
- package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +0 -4
- package/ui-ux-design/mcp.json +0 -4
- package/ui-ux-design/plugin.json +0 -25
- package/ui-ux-design/skills/frontend-accessibility/SKILL.md +0 -60
- package/ui-ux-design/skills/gstack-design/SKILL.md +0 -53
- package/ui-ux-design/skills/gstack-design/references/consultation.md +0 -30
- package/ui-ux-design/skills/gstack-design/references/html.md +0 -29
- package/ui-ux-design/skills/gstack-design/references/review.md +0 -28
- package/ui-ux-design/skills/gstack-design/references/shotgun.md +0 -33
- package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +0 -23
- package/ui-ux-design/skills/interface-design/ORIGINAL.md +0 -16
- package/ui-ux-design/skills/interface-design/SKILL.md +0 -41
- package/ui-ux-design/skills/interface-design/references/commands/audit.md +0 -40
- package/ui-ux-design/skills/interface-design/references/commands/critique.md +0 -21
- package/ui-ux-design/skills/interface-design/references/commands/extract.md +0 -34
- package/ui-ux-design/skills/interface-design/references/commands/init.md +0 -31
- package/ui-ux-design/skills/interface-design/references/commands/status.md +0 -22
- package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +0 -29
- package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +0 -29
- package/ui-ux-design/skills/interface-design/references/system-template.md +0 -57
- package/ui-ux-design/skills/shadcn-ui/README.md +0 -244
- package/ui-ux-design/skills/shadcn-ui/SKILL.md +0 -326
- package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +0 -177
- package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +0 -313
- package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +0 -177
- package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +0 -481
- package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +0 -516
- package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +0 -463
- package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +0 -412
- package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +0 -134
- package/ui-ux-design/skills/ui-ux-design/SKILL.md +0 -77
- package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +0 -72
- package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +0 -107
- package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +0 -65
- package/ui-ux-design/skills/ui-ux-design/references/foundations.md +0 -144
- package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +0 -57
- package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +0 -102
- package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +0 -139
- package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +0 -63
- package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +0 -78
- package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +0 -93
- package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +0 -123
- package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +0 -57
- package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +0 -39
- package/ui-ux-design/skills/web-compliance/SKILL.md +0 -129
- package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +0 -59
|
@@ -194,59 +194,59 @@ function buildModule(ports) {
|
|
|
194
194
|
const indexed = await indexInstalledRoot(extractionRoot, digest);
|
|
195
195
|
if (optional.previewOnly)
|
|
196
196
|
return indexed;
|
|
197
|
+
// Layout B needs the manifest id before choosing the package destination. Dedup still
|
|
198
|
+
// skips publication and freezing, after one bounded staging extraction.
|
|
199
|
+
// Owner decision 2026-10-04: learned facts begin empty for each site; author guidance stays
|
|
200
|
+
// in package docs. Package extension files never seed learned memory or the user's notes.
|
|
201
|
+
// Content-addressed dedup, scoped to THIS workspace's own tree (`workspaceLayout` was just
|
|
202
|
+
// resolved above, atomically, from this same `workspaceId`): identical bytes were already
|
|
203
|
+
// extracted, verified, and frozen by a prior install of this same workspace's — never
|
|
204
|
+
// re-extracted for a different workspace, by construction, since a different workspace's
|
|
205
|
+
// `workspaceLayout.packages` is a different path entirely. one bounded staging extraction precedes this check.
|
|
206
|
+
// Publish BEFORE freezing permissions, not after: `rename()` moves `extractionRoot` as a single
|
|
207
|
+
// directory-entry operation, and on this filesystem renaming an already-read-only (0o555)
|
|
208
|
+
// directory itself fails EACCES (observed, not merely theoretical — see the regression test this
|
|
209
|
+
// ordering fixed). Freezing after publish also closes a smaller race for free: nothing outside
|
|
210
|
+
// this function can observe the package at its live path while it is still writable, because the
|
|
211
|
+
// live path does not exist until `publish` returns.
|
|
212
|
+
let publishedPlugin;
|
|
213
|
+
const publishPackage = async () => {
|
|
214
|
+
// The manifest identifies the plugin only after bounded staging extraction (Layout B).
|
|
215
|
+
const pluginId = indexed.pluginId;
|
|
216
|
+
const packagesDir = workspaceLayout.pluginPackagesDir({ pluginId });
|
|
217
|
+
await persistentState.assertOwnedPath({ workspaceRoot: workspaceLayout.root, entryPath: path.relative(workspaceLayout.root, packagesDir) });
|
|
218
|
+
await mkdir(packagesDir, { recursive: true, mode: 0o700 });
|
|
219
|
+
const finalRoot = await assertContainedOnDisk(packagesDir, digest);
|
|
220
|
+
for (const directory of [workspaceLayout.pluginDataDir({ pluginId }),
|
|
221
|
+
workspaceLayout.pluginMemoryDir({ pluginId, kind: 'learned' }),
|
|
222
|
+
workspaceLayout.pluginMemoryDir({ pluginId, kind: 'notes' })]) {
|
|
223
|
+
await persistentState.assertOwnedPath({ workspaceRoot: workspaceLayout.root, entryPath: path.relative(workspaceLayout.root, directory) });
|
|
224
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
225
|
+
}
|
|
226
|
+
if (await isRealDirectory(finalRoot)) {
|
|
227
|
+
publishedPlugin = await indexInstalledRoot(finalRoot, digest);
|
|
228
|
+
return publishedPlugin;
|
|
229
|
+
}
|
|
230
|
+
await publish(extractionRoot, finalRoot);
|
|
231
|
+
await freezeTree(finalRoot, executablePaths);
|
|
232
|
+
/** Absolute, read-only (frozen) path to the extracted package root. */
|
|
233
|
+
publishedPlugin = { ...indexed, packageRoot: finalRoot };
|
|
234
|
+
return publishedPlugin;
|
|
235
|
+
};
|
|
236
|
+
const publishWithinPluginLock = () => persistentState.withPluginLock({ workspaceRoot: workspaceLayout.root, pluginId: indexed.pluginId, run: async () => {
|
|
237
|
+
// Every install and replacement, not only an update, is a mutation of this plugin: an
|
|
238
|
+
// unfinished update journal refuses it here, under the same plugin lock, because boot
|
|
239
|
+
// recovery removes only the journal's own candidate digest and would otherwise restore the
|
|
240
|
+
// old revision beside whatever this install published.
|
|
241
|
+
// The journal lives under the layout this install was given, the one it publishes into.
|
|
242
|
+
await settleAgentPluginUpdateJournal({ store: createAgentPluginUpdateStore({ ports: { ...ports, layout }, workspaceId, pluginId: indexed.pluginId }) });
|
|
243
|
+
const installed = await (optional.publishGuard ? optional.publishGuard({ plugin: indexed, publish: publishPackage }, {}) : publishPackage());
|
|
244
|
+
if (publishedPlugin)
|
|
245
|
+
await pruneSupersededRevisions({ workspaceRoot: workspaceLayout.root, installed: publishedPlugin });
|
|
246
|
+
return installed;
|
|
247
|
+
} });
|
|
197
248
|
return await persistentState.withIdentityLock({ workspaceRoot: workspaceLayout.root, run: async () => {
|
|
198
249
|
await assertIdentityAvailable(workspaceLayout.root, indexed);
|
|
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 }) });
|
|
206
|
-
// Layout B needs the manifest id before choosing the package destination. Dedup still
|
|
207
|
-
// skips publication and freezing, after one bounded staging extraction.
|
|
208
|
-
// Owner decision 2026-10-04: learned facts begin empty for each site; author guidance stays
|
|
209
|
-
// in package docs. Package extension files never seed learned memory or the user's notes.
|
|
210
|
-
// Content-addressed dedup, scoped to THIS workspace's own tree (`workspaceLayout` was just
|
|
211
|
-
// resolved above, atomically, from this same `workspaceId`): identical bytes were already
|
|
212
|
-
// extracted, verified, and frozen by a prior install of this same workspace's — never
|
|
213
|
-
// re-extracted for a different workspace, by construction, since a different workspace's
|
|
214
|
-
// `workspaceLayout.packages` is a different path entirely. one bounded staging extraction precedes this check.
|
|
215
|
-
// Publish BEFORE freezing permissions, not after: `rename()` moves `extractionRoot` as a single
|
|
216
|
-
// directory-entry operation, and on this filesystem renaming an already-read-only (0o555)
|
|
217
|
-
// directory itself fails EACCES (observed, not merely theoretical — see the regression test this
|
|
218
|
-
// ordering fixed). Freezing after publish also closes a smaller race for free: nothing outside
|
|
219
|
-
// this function can observe the package at its live path while it is still writable, because the
|
|
220
|
-
// live path does not exist until `publish` returns.
|
|
221
|
-
let publishedPlugin;
|
|
222
|
-
const publishPackage = async () => {
|
|
223
|
-
// The manifest identifies the plugin only after bounded staging extraction (Layout B).
|
|
224
|
-
const pluginId = indexed.pluginId;
|
|
225
|
-
const packagesDir = workspaceLayout.pluginPackagesDir({ pluginId });
|
|
226
|
-
await persistentState.assertOwnedPath({ workspaceRoot: workspaceLayout.root, entryPath: path.relative(workspaceLayout.root, packagesDir) });
|
|
227
|
-
await mkdir(packagesDir, { recursive: true, mode: 0o700 });
|
|
228
|
-
const finalRoot = await assertContainedOnDisk(packagesDir, digest);
|
|
229
|
-
for (const directory of [workspaceLayout.pluginDataDir({ pluginId }),
|
|
230
|
-
workspaceLayout.pluginMemoryDir({ pluginId, kind: 'learned' }),
|
|
231
|
-
workspaceLayout.pluginMemoryDir({ pluginId, kind: 'notes' })]) {
|
|
232
|
-
await persistentState.assertOwnedPath({ workspaceRoot: workspaceLayout.root, entryPath: path.relative(workspaceLayout.root, directory) });
|
|
233
|
-
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
234
|
-
}
|
|
235
|
-
if (await isRealDirectory(finalRoot)) {
|
|
236
|
-
publishedPlugin = await indexInstalledRoot(finalRoot, digest);
|
|
237
|
-
return publishedPlugin;
|
|
238
|
-
}
|
|
239
|
-
await publish(extractionRoot, finalRoot);
|
|
240
|
-
await freezeTree(finalRoot, executablePaths);
|
|
241
|
-
/** Absolute, read-only (frozen) path to the extracted package root. */
|
|
242
|
-
publishedPlugin = { ...indexed, packageRoot: finalRoot };
|
|
243
|
-
return publishedPlugin;
|
|
244
|
-
};
|
|
245
|
-
const installed = await (optional.publishGuard ? optional.publishGuard({ plugin: indexed, publish: publishPackage }, {}) : publishPackage());
|
|
246
|
-
if (publishedPlugin)
|
|
247
|
-
await pruneSupersededRevisions({ workspaceRoot: workspaceLayout.root, installed: publishedPlugin });
|
|
248
|
-
return installed;
|
|
249
|
-
} });
|
|
250
250
|
if (ports.identityAdmission)
|
|
251
251
|
return ports.identityAdmission({ id: indexed.id, localId: indexed.pluginId, run: publishWithinPluginLock }, {});
|
|
252
252
|
return publishWithinPluginLock();
|
|
@@ -332,11 +332,17 @@ function buildModule(ports) {
|
|
|
332
332
|
/** Ported from Jini 78d4b60b: reject from metadata before a staging transaction exists.
|
|
333
333
|
* A second central-directory walk opens no content streams and avoids over-cap disk churn. */
|
|
334
334
|
async function assertEntryCountWithinCap(entries) {
|
|
335
|
+
// Only the count matters, so the entries are stepped through without being bound to a name.
|
|
336
|
+
// Leaving early closes the walk the way for-await would, without letting a failing close
|
|
337
|
+
// replace the cap error.
|
|
338
|
+
const iterator = entries[Symbol.asyncIterator]();
|
|
335
339
|
let entryCount = 0;
|
|
336
|
-
for await (
|
|
340
|
+
for (let next = await iterator.next(); !next.done; next = await iterator.next()) {
|
|
337
341
|
entryCount += 1;
|
|
338
|
-
if (entryCount > LIMITS.maxEntries)
|
|
342
|
+
if (entryCount > LIMITS.maxEntries) {
|
|
343
|
+
await Promise.resolve(iterator.return?.()).catch(() => undefined);
|
|
339
344
|
throw tooManyEntriesError();
|
|
345
|
+
}
|
|
340
346
|
}
|
|
341
347
|
}
|
|
342
348
|
function tooManyEntriesError() {
|
|
@@ -59,9 +59,11 @@ export function createInstalledPackageIndex(required, _optional = {}) {
|
|
|
59
59
|
async function walk(absolute, prefix) {
|
|
60
60
|
for (const entry of await readdir(absolute, { withFileTypes: true })) {
|
|
61
61
|
const relative = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
62
|
-
if (entry.isDirectory())
|
|
62
|
+
if (entry.isDirectory()) {
|
|
63
63
|
await walk(path.join(absolute, entry.name), relative);
|
|
64
|
-
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (entry.isFile())
|
|
65
67
|
files.push(relative);
|
|
66
68
|
// Anything that is neither a directory nor a regular file (a symlink somehow already present,
|
|
67
69
|
// a device node) is skipped rather than indexed — extraction itself never creates one, so
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { isAgentPluginName } from '../core/plugin-name.js';
|
|
1
2
|
import { type AgentPluginExportMetadata } from './exports.js';
|
|
2
3
|
export * from './exports.js';
|
|
3
4
|
export { validatePluginManifest, validateMcpManifest } from '../manifest.js';
|
|
@@ -10,15 +11,6 @@ export type AgentPluginServerMetadataReader = (required: {
|
|
|
10
11
|
readonly value: Readonly<Record<string, unknown>>;
|
|
11
12
|
readonly server: Readonly<Record<string, unknown>>;
|
|
12
13
|
}) => Readonly<Record<string, unknown>>;
|
|
13
|
-
/**
|
|
14
|
-
* True when `value` is a valid Agent Plugin id: `plugin.json`'s `name` grammar (§5.5, see
|
|
15
|
-
* `NAME_PATTERN`), 1-64 characters. The one owner of that grammar: a host checks an id taken from a
|
|
16
|
-
* URL or a tool input here before it names anything on disk, instead of restating the pattern.
|
|
17
|
-
* @complexity O(n) in the value's length.
|
|
18
|
-
*/
|
|
19
|
-
export declare function isAgentPluginName({ value }: {
|
|
20
|
-
readonly value: unknown;
|
|
21
|
-
}, _optional?: Record<string, never>): boolean;
|
|
22
14
|
export interface AgentPluginManifest extends AgentPluginExportMetadata {
|
|
23
15
|
readonly name: string;
|
|
24
16
|
readonly version?: (string) | undefined;
|
|
@@ -54,6 +54,8 @@
|
|
|
54
54
|
* own "receives a JS value, never a file path or raw bytes" contract. `install.ts` is the only
|
|
55
55
|
* caller that reads the file and hands the parsed value here.
|
|
56
56
|
*/
|
|
57
|
+
import { isAgentPluginName, MAX_NAME_LENGTH } from '../core/plugin-name.js';
|
|
58
|
+
export { isAgentPluginName } from '../core/plugin-name.js';
|
|
57
59
|
import { readAgentPluginCompatibilityMetadata } from "./compatibility-metadata.js";
|
|
58
60
|
import { parseAgentPluginExports } from './exports.js';
|
|
59
61
|
export * from './exports.js';
|
|
@@ -98,24 +100,6 @@ function readSpecVersion(value, file) {
|
|
|
98
100
|
const newest = KNOWN_SPEC_VERSIONS[KNOWN_SPEC_VERSIONS.length - 1];
|
|
99
101
|
return { version, warning: `${file}.json targets Agent Plugins ${version}, newer than this loader knows; validated with the ${newest} grammar` };
|
|
100
102
|
}
|
|
101
|
-
/**
|
|
102
|
-
* §5.5's grammar as one regex: alnum runs separated by single `-`/`.` delimiters. This shape alone
|
|
103
|
-
* guarantees start/end are alphanumeric (the regex can only start and end on `[a-z0-9]+`) AND that
|
|
104
|
-
* no two delimiters are ever adjacent (a delimiter is always followed by at least one alnum char
|
|
105
|
-
* before the next one can appear) — so "no leading/trailing hyphen" and "no consecutive delimiters"
|
|
106
|
-
* fall out of one pattern rather than needing separate checks that could disagree.
|
|
107
|
-
*/
|
|
108
|
-
const NAME_PATTERN = /^[a-z0-9]+(?:[-.][a-z0-9]+)*$/;
|
|
109
|
-
const MAX_NAME_LENGTH = 64;
|
|
110
|
-
/**
|
|
111
|
-
* True when `value` is a valid Agent Plugin id: `plugin.json`'s `name` grammar (§5.5, see
|
|
112
|
-
* `NAME_PATTERN`), 1-64 characters. The one owner of that grammar: a host checks an id taken from a
|
|
113
|
-
* URL or a tool input here before it names anything on disk, instead of restating the pattern.
|
|
114
|
-
* @complexity O(n) in the value's length.
|
|
115
|
-
*/
|
|
116
|
-
export function isAgentPluginName({ value }, _optional = {}) {
|
|
117
|
-
return typeof value === "string" && value.length <= MAX_NAME_LENGTH && NAME_PATTERN.test(value);
|
|
118
|
-
}
|
|
119
103
|
const KNOWN_MANIFEST_KEYS = new Set(["$schema", "name", "version", "description", "author", "license", "keywords", "extensions"]);
|
|
120
104
|
/**
|
|
121
105
|
* True for a non-null, non-array plain object — the "is this actually a JSON object" gate both
|
|
@@ -151,7 +135,7 @@ function parseManifestAuthor(value) {
|
|
|
151
135
|
return definedFields({ name: coerceOptionalString(value.name), email: coerceOptionalString(value.email), url: coerceOptionalString(value.url) });
|
|
152
136
|
}
|
|
153
137
|
/**
|
|
154
|
-
* Validates `plugin.json`'s `name` field per §5.5's grammar (see `
|
|
138
|
+
* Validates `plugin.json`'s `name` field per §5.5's grammar (see `core/plugin-name.ts`'s header for
|
|
155
139
|
* what the one regex encodes). Returns the valid name, or the one error message to report — never
|
|
156
140
|
* both, so the caller needs exactly one branch to consume this instead of the original's
|
|
157
141
|
* required-then-format else-if chain.
|
|
@@ -174,7 +158,8 @@ function collectManifestProblems({ raw, identityNamespace }, { nameError } = {})
|
|
|
174
158
|
const specVersion = readSpecVersion(raw.$schema, "plugin");
|
|
175
159
|
if (specVersion.error)
|
|
176
160
|
errors.push(specVersion.error);
|
|
177
|
-
|
|
161
|
+
// A version error already explains the schema; its warning would only repeat it.
|
|
162
|
+
if (!specVersion.error && specVersion.warning)
|
|
178
163
|
warnings.push(specVersion.warning);
|
|
179
164
|
if (raw.extensions !== undefined && !isJsonObject(raw.extensions))
|
|
180
165
|
errors.push("plugin.json extensions must be an object");
|
|
@@ -412,7 +397,7 @@ function collectMcpConfigErrors({ raw }, { pluginManifest } = {}) {
|
|
|
412
397
|
const pluginVersion = isJsonObject(pluginManifest) ? readSpecVersion(pluginManifest.$schema, "plugin").version : undefined;
|
|
413
398
|
if (mcpSpec.error)
|
|
414
399
|
errors.push(mcpSpec.error);
|
|
415
|
-
|
|
400
|
+
if (!mcpSpec.error && pluginVersion !== undefined && pluginVersion !== mcpVersion) {
|
|
416
401
|
errors.push(`mcp.json targets Agent Plugins ${mcpVersion} but plugin.json targets ${pluginVersion}; the versions must match`);
|
|
417
402
|
}
|
|
418
403
|
if (!isJsonObject(raw.mcpServers))
|
package/dist/lifecycle/node.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as nativeFilesystem from 'node:fs/promises';
|
|
2
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { randomInt, randomUUID } from 'node:crypto';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { performance } from 'node:perf_hooks';
|
|
5
5
|
import { setTimeout } from 'node:timers/promises';
|
|
6
|
+
/** Granularity of the uniform [0, 1) value: crypto.randomInt's largest exclusive bound (2^48 - 1). */
|
|
7
|
+
const RANDOM_RESOLUTION = 2 ** 48 - 1;
|
|
6
8
|
/** Opt-in native effects. Layout, fetch, guard, namespace and provisioning remain host-owned. */
|
|
7
9
|
export function createNodeAgentPluginEffects(_required, optional = {}) {
|
|
8
10
|
return {
|
|
@@ -12,7 +14,7 @@ export function createNodeAgentPluginEffects(_required, optional = {}) {
|
|
|
12
14
|
monotonicMs: () => performance.now(),
|
|
13
15
|
sleep: ({ ms }) => setTimeout(ms),
|
|
14
16
|
},
|
|
15
|
-
ids: { newId: () => randomUUID(), random: () =>
|
|
17
|
+
ids: { newId: () => randomUUID(), random: () => randomInt(RANDOM_RESOLUTION) / RANDOM_RESOLUTION },
|
|
16
18
|
process: {
|
|
17
19
|
pid: process.pid,
|
|
18
20
|
platform: process.platform,
|
|
@@ -58,14 +58,12 @@ import { listInstalledPackageRoots, INSTALLED_PLUGIN_DIGEST_PATTERN } from "./in
|
|
|
58
58
|
*/
|
|
59
59
|
import { createPersistentStateModule } from "./persistent-state.js";
|
|
60
60
|
import path from "node:path";
|
|
61
|
-
import { createPackagePathsModule } from "./package-paths.js";
|
|
62
61
|
import { createActivationModule } from "./activation.js";
|
|
63
62
|
import { createBundledDigestsModule } from "./bundled-digests.js";
|
|
64
63
|
import { createInstalledPackageIndex } from "./installed-package-index.js";
|
|
65
64
|
import { createCapabilityProjectionModule } from "./capability-projection.js";
|
|
66
65
|
function buildModule(ports) {
|
|
67
66
|
const persistentState = createPersistentStateModule(ports);
|
|
68
|
-
const { assertContainedOnDisk } = createPackagePathsModule(ports);
|
|
69
67
|
const stat = ports.filesystem.stat.bind(ports.filesystem);
|
|
70
68
|
const { resolveAgentPluginActivation } = createActivationModule(ports);
|
|
71
69
|
const { preferBundledAgentPluginDigests, readBundledAgentPluginDigests } = createBundledDigestsModule(ports);
|
|
@@ -281,7 +279,7 @@ function buildModule(ports) {
|
|
|
281
279
|
function renderSkillInventory({ pluginRefId, skill, file, files, fileNote }, _options = {}) {
|
|
282
280
|
const framing = file === undefined || file === 'SKILL.md' ? "The SKILL.md above is this Agent Plugin's own instructions — follow them, including any files it directs you to load before starting work." : "The content above is the requested skill file.";
|
|
283
281
|
const pointer = ports.formatPluginToolPointer({ pluginId: pluginRefId, skill, file: '<relative path>' });
|
|
284
|
-
return `\n\n${framing} Readable supporting files are listed relative to this skill folder. Request one with ${pointer}.\nfiles: ${JSON.stringify(files)}${fileNote ?
|
|
282
|
+
return `\n\n${framing} Readable supporting files are listed relative to this skill folder. Request one with ${pointer}.\nfiles: ${JSON.stringify(files)}${fileNote ? "\n" + fileNote : ""}`;
|
|
285
283
|
}
|
|
286
284
|
// Parity with `inject`'s own failure: a pinned ref whose eponymous skill is missing must fail
|
|
287
285
|
// loudly in BOTH modes. Without this check `pointer` would happily emit a well-formed instruction
|
|
@@ -39,14 +39,15 @@ export function projectAgentPluginSearchPage({ candidates, offset, limit, totalI
|
|
|
39
39
|
// whether to suggest installing something new versus rephrasing the search.
|
|
40
40
|
const page = () => ({ matches, totalInstalled, totalMatches: candidates.length,
|
|
41
41
|
nextOffset: offset + matches.length < candidates.length ? offset + matches.length : null });
|
|
42
|
+
// Add candidates while the page still fits; the first one that overflows is taken back out.
|
|
42
43
|
for (const candidate of candidates.slice(offset, offset + limit)) {
|
|
43
44
|
matches.push(discoveryMatch({ candidate }));
|
|
44
|
-
if (Buffer.byteLength(JSON.stringify(page()))
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
if (Buffer.byteLength(JSON.stringify(page())) > maxBytes) {
|
|
46
|
+
matches.pop();
|
|
47
|
+
if (!matches.length)
|
|
48
|
+
throw new RangeError('Plugin identity exceeds the discovery page byte budget');
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
50
51
|
}
|
|
51
52
|
return page();
|
|
52
53
|
}
|
|
@@ -230,9 +230,7 @@ function buildModule(ports) {
|
|
|
230
230
|
}
|
|
231
231
|
const dirs = [];
|
|
232
232
|
for (const entry of entries) {
|
|
233
|
-
if (!entry.isDirectory())
|
|
234
|
-
continue;
|
|
235
|
-
if (ports.retiredBundledPlugins.has(entry.name))
|
|
233
|
+
if (!entry.isDirectory() || ports.retiredBundledPlugins.has(entry.name))
|
|
236
234
|
continue;
|
|
237
235
|
try {
|
|
238
236
|
const manifest = await stat(path.join(sourceRoot, entry.name, "plugin.json"));
|
|
@@ -25,9 +25,14 @@ async function readOpened(handle) {
|
|
|
25
25
|
}
|
|
26
26
|
return length > MAX_FILE_BYTES ? { refusal: TOO_LARGE } : decodeText(buffer.subarray(0, length));
|
|
27
27
|
}
|
|
28
|
+
/** Whitespace control bytes text may carry: tab, LF and CR. */
|
|
29
|
+
const TEXT_CONTROL_BYTES = new Set([9, 10, 13]);
|
|
30
|
+
function isControlByte(byte) {
|
|
31
|
+
return byte === 127 || (byte < 32 && !TEXT_CONTROL_BYTES.has(byte));
|
|
32
|
+
}
|
|
28
33
|
/** Admit only control-free UTF-8 text (tab, LF and CR allowed). */
|
|
29
34
|
function decodeText(bytes) {
|
|
30
|
-
if (bytes.some(
|
|
35
|
+
if (bytes.some(isControlByte))
|
|
31
36
|
return { refusal: "File request refused: binary content cannot be read as text." };
|
|
32
37
|
try {
|
|
33
38
|
return { text: new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes) };
|
|
@@ -47,7 +52,8 @@ export function createSkillFileReader({ skillRoot, filesystem }, _options = {})
|
|
|
47
52
|
/** Reject traversal even when normalization would leave it inside the folder.
|
|
48
53
|
* @returns The refusal message, or `undefined` for an admissible name. */
|
|
49
54
|
function validateFile(file) {
|
|
50
|
-
|
|
55
|
+
const absolute = path.posix.isAbsolute(file) || /^[a-zA-Z]:/.test(file);
|
|
56
|
+
if (!file || /[\0\\]/.test(file) || absolute || file.split("/").some(segment => segment === "..")) {
|
|
51
57
|
return "File request refused: use a path relative to this skill folder, without traversal or absolute paths.";
|
|
52
58
|
}
|
|
53
59
|
if (!TEXT_EXTENSIONS.has(path.extname(file).toLowerCase())) {
|
|
@@ -102,7 +108,9 @@ export function createSkillFileReader({ skillRoot, filesystem }, _options = {})
|
|
|
102
108
|
return;
|
|
103
109
|
}
|
|
104
110
|
for (const entry of entries) {
|
|
105
|
-
|
|
111
|
+
const exhausted = remaining <= 0;
|
|
112
|
+
remaining -= 1;
|
|
113
|
+
if (exhausted) {
|
|
106
114
|
incomplete = true;
|
|
107
115
|
break;
|
|
108
116
|
}
|
|
@@ -110,8 +118,10 @@ export function createSkillFileReader({ skillRoot, filesystem }, _options = {})
|
|
|
110
118
|
}
|
|
111
119
|
}
|
|
112
120
|
async function visit(entry, file, depth) {
|
|
113
|
-
if (entry.isDirectory())
|
|
114
|
-
|
|
121
|
+
if (entry.isDirectory()) {
|
|
122
|
+
await walk(file, depth + 1);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
115
125
|
if (file === "SKILL.md" || !(entry.isFile() || entry.isSymbolicLink()))
|
|
116
126
|
return;
|
|
117
127
|
// Refused files must not be advertised as readable.
|
|
@@ -42,9 +42,11 @@ export function createIssuedTokenMemories(_required = {}, _optional = {}) {
|
|
|
42
42
|
const byPlugin = new Map();
|
|
43
43
|
return Object.freeze({
|
|
44
44
|
forPlugin({ pluginId }) {
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
|
|
45
|
+
const existing = byPlugin.get(pluginId);
|
|
46
|
+
if (existing !== undefined)
|
|
47
|
+
return existing;
|
|
48
|
+
const issued = new Set();
|
|
49
|
+
byPlugin.set(pluginId, issued);
|
|
48
50
|
return issued;
|
|
49
51
|
},
|
|
50
52
|
});
|
|
@@ -63,7 +63,7 @@ function admitAll(loaded, refusals, toolIdFor) {
|
|
|
63
63
|
claimants.set(tool.toolId, (claimants.get(tool.toolId) ?? new Set()).add(tool.loaded.pluginId));
|
|
64
64
|
for (const [toolId, owners] of claimants) {
|
|
65
65
|
if (owners.size > 1)
|
|
66
|
-
refusals.push(`agent tool '${toolId}' was not loaded: more than one plugin declares it (${[...owners].map(id =>
|
|
66
|
+
refusals.push(`agent tool '${toolId}' was not loaded: more than one plugin declares it (${[...owners].map(id => "'" + id + "'").sort().join(', ')})`);
|
|
67
67
|
}
|
|
68
68
|
return admitted.filter(tool => claimants.get(tool.toolId).size === 1);
|
|
69
69
|
}
|
|
@@ -149,10 +149,9 @@ function countProjectionClaims({ loaded, additionalTools, refusals, idFor }, _op
|
|
|
149
149
|
for (const id of claimedIds)
|
|
150
150
|
counts.set(id, (counts.get(id) ?? 0) + 1);
|
|
151
151
|
for (const [id, count] of counts) {
|
|
152
|
-
if (count <= 1)
|
|
153
|
-
continue;
|
|
154
152
|
// MOVE: Admission already reports executable collisions with their owners; preserve that diagnostic once.
|
|
155
|
-
|
|
153
|
+
const alreadyReported = refusals.some(reason => reason.startsWith(`agent tool '${id}' was not loaded:`));
|
|
154
|
+
if (count <= 1 || alreadyReported)
|
|
156
155
|
continue;
|
|
157
156
|
refusals.push(`agent tool '${id}' was not loaded: more than one contribution declares it`);
|
|
158
157
|
}
|
package/dist/lifecycle/update.js
CHANGED
|
@@ -292,9 +292,11 @@ export function createUpdateModule(ports, optional = {}) {
|
|
|
292
292
|
const store = createAgentPluginUpdateStore({ ports, workspaceId, pluginId });
|
|
293
293
|
const switchOff = (error) => switchOffUnrecovered({ workspaceId, pluginId, error });
|
|
294
294
|
const journal = await store.read({}).catch(switchOff);
|
|
295
|
-
|
|
295
|
+
// A committed update only needs finishing; any other journal is rolled back.
|
|
296
|
+
const committed = journal?.state === 'committed';
|
|
297
|
+
if (journal && committed)
|
|
296
298
|
await store.finish({ journal });
|
|
297
|
-
|
|
299
|
+
if (journal && !committed)
|
|
298
300
|
await restoreUpdate({ workspaceId, journal }).catch(switchOff);
|
|
299
301
|
for (const rollbackRoot of await store.listRollbackRoots({}))
|
|
300
302
|
await removal.removeFrozenPackageTree(rollbackRoot);
|
|
@@ -24,29 +24,8 @@ export function createYauzlAgentPluginArchiveReader({ yauzl }) {
|
|
|
24
24
|
validateEntrySizes: true,
|
|
25
25
|
});
|
|
26
26
|
try {
|
|
27
|
-
for await (const entry of zipfile.eachEntry())
|
|
28
|
-
|
|
29
|
-
* The entry's content (the link target text) is deliberately never read — see this
|
|
30
|
-
* module's header. `install.ts` rejects every symlink entry unconditionally.
|
|
31
|
-
*/
|
|
32
|
-
const unixMode = readUnixMode(entry);
|
|
33
|
-
if (unixMode !== null && (unixMode & S_IFMT) === S_IFLNK) {
|
|
34
|
-
yield { kind: "symlink", entryPath: entry.fileName };
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
// File mode defines links even when a hostile filename masquerades as a directory.
|
|
38
|
-
if (entry.fileName.endsWith("/")) {
|
|
39
|
-
yield { kind: "directory", entryPath: entry.fileName };
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
yield {
|
|
43
|
-
kind: "file",
|
|
44
|
-
entryPath: entry.fileName,
|
|
45
|
-
declaredSize: entry.uncompressedSize,
|
|
46
|
-
executable: unixMode !== null && (unixMode & EXECUTABLE_MODE_MASK) !== 0,
|
|
47
|
-
openReadStream: () => streamEntry(zipfile, entry),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
27
|
+
for await (const entry of zipfile.eachEntry())
|
|
28
|
+
yield archiveEntryFor(zipfile, entry);
|
|
50
29
|
}
|
|
51
30
|
finally {
|
|
52
31
|
zipfile.close();
|
|
@@ -65,6 +44,25 @@ function readUnixMode(entry) {
|
|
|
65
44
|
return null;
|
|
66
45
|
return (entry.externalFileAttributes >>> 16) & 0xffff;
|
|
67
46
|
}
|
|
47
|
+
function archiveEntryFor(zipfile, entry) {
|
|
48
|
+
/**
|
|
49
|
+
* The entry's content (the link target text) is deliberately never read — see this
|
|
50
|
+
* module's header. `install.ts` rejects every symlink entry unconditionally.
|
|
51
|
+
*/
|
|
52
|
+
const unixMode = readUnixMode(entry);
|
|
53
|
+
if (unixMode !== null && (unixMode & S_IFMT) === S_IFLNK)
|
|
54
|
+
return { kind: "symlink", entryPath: entry.fileName };
|
|
55
|
+
// File mode defines links even when a hostile filename masquerades as a directory.
|
|
56
|
+
if (entry.fileName.endsWith("/"))
|
|
57
|
+
return { kind: "directory", entryPath: entry.fileName };
|
|
58
|
+
return {
|
|
59
|
+
kind: "file",
|
|
60
|
+
entryPath: entry.fileName,
|
|
61
|
+
declaredSize: entry.uncompressedSize,
|
|
62
|
+
executable: unixMode !== null && (unixMode & EXECUTABLE_MODE_MASK) !== 0,
|
|
63
|
+
openReadStream: () => streamEntry(zipfile, entry),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
68
66
|
async function* streamEntry(zipfile, entry) {
|
|
69
67
|
const readStream = await zipfile.openReadStreamPromise(entry);
|
|
70
68
|
for await (const chunk of readStream) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jini-ai/agent-plugins",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"description": "Support for Agent Plugins
|
|
3
|
+
"version": "0.6.16",
|
|
4
|
+
"description": "Support for Agent Plugins: vendor-neutral manifest types and validators, installation, activation, digests and trusted contribution loading. Portable plugin payloads are published separately; ui-ux-design is available as @jini-ai/plugin-ui-ux-design.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
"runtime": "universal",
|
|
15
15
|
"entries": {
|
|
16
16
|
".": "universal",
|
|
17
|
-
"./ui-ux-design/*": "universal",
|
|
18
17
|
"./lifecycle": "node",
|
|
19
18
|
"./lifecycle/node": "node",
|
|
20
19
|
"./lifecycle/yauzl": "node",
|
|
@@ -37,6 +36,12 @@
|
|
|
37
36
|
"src/lifecycle/contribution-loader.ts",
|
|
38
37
|
"src/lifecycle/tools/capabilities.ts"
|
|
39
38
|
]
|
|
39
|
+
},
|
|
40
|
+
"optionalPeers": {
|
|
41
|
+
"yauzl": "opt-in: plugin zip import — Plugin ZIP import could not load yauzl. Install yauzl to enable this feature, or check its installed version and native binaries.",
|
|
42
|
+
"@jini-ai/platform": "opt-in: platform-backed adapters; import @jini-ai/agent-plugins/lifecycle — Platform-backed adapters could not load @jini-ai/platform. Install @jini-ai/platform to enable this feature, or check its installed version and native binaries.",
|
|
43
|
+
"@cfworker/json-schema": "opt-in: json schema validation; import @jini-ai/agent-plugins/lifecycle/tools — JSON Schema validation could not load @cfworker/json-schema. Install @cfworker/json-schema to enable this feature, or check its installed version and native binaries.",
|
|
44
|
+
"semver": "opt-in: plugin version compatibility; import @jini-ai/agent-plugins/lifecycle — Plugin version compatibility could not load semver. Install semver to enable this feature, or check its installed version and native binaries."
|
|
40
45
|
}
|
|
41
46
|
},
|
|
42
47
|
"type": "module",
|
|
@@ -47,7 +52,6 @@
|
|
|
47
52
|
"import": "./dist/index.js",
|
|
48
53
|
"default": "./dist/index.js"
|
|
49
54
|
},
|
|
50
|
-
"./ui-ux-design/*": "./ui-ux-design/*",
|
|
51
55
|
"./lifecycle": {
|
|
52
56
|
"types": "./dist/lifecycle/index.d.ts",
|
|
53
57
|
"import": "./dist/lifecycle/index.js",
|
|
@@ -104,7 +108,6 @@
|
|
|
104
108
|
"README.md",
|
|
105
109
|
"CHANGELOG.md",
|
|
106
110
|
"LICENSE",
|
|
107
|
-
"ui-ux-design",
|
|
108
111
|
"!dist/**/*.test.js",
|
|
109
112
|
"!dist/**/*.test.d.ts",
|
|
110
113
|
"!dist/**/*.test.js.map",
|
|
@@ -126,12 +129,12 @@
|
|
|
126
129
|
"@cfworker/json-schema": "^4.1.1",
|
|
127
130
|
"@types/semver": "^7.5.8",
|
|
128
131
|
"semver": "^7.6.2",
|
|
129
|
-
"@jini-ai/plugins": "^0.6.
|
|
132
|
+
"@jini-ai/plugins": "^0.6.16"
|
|
130
133
|
},
|
|
131
134
|
"peerDependencies": {
|
|
132
135
|
"yauzl": "^3.4.0",
|
|
133
|
-
"@jini-ai/core": "^0.6.
|
|
134
|
-
"@jini-ai/platform": "^0.6.
|
|
136
|
+
"@jini-ai/core": "^0.6.10",
|
|
137
|
+
"@jini-ai/platform": "^0.6.10",
|
|
135
138
|
"@cfworker/json-schema": "^4.1.1",
|
|
136
139
|
"semver": "^7.6.2"
|
|
137
140
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../../src/admin-surfaces/action-dispatcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAA6B,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1F,6GAA6G;AAC7G,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAChB,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,GAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAMrJ;AAED;6EAC6E;AAC7E,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAuB9H,wBAAgB,kCAAkC,CAAC,CAAC,EAClD,QAAQ,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,EAC5J,QAAQ,GAAE;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;CAAO;sBAI/G;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;KAAE,KAAG,OAAO,CAAC,yBAAyB,CAAC;EAmBhJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../../src/admin-surfaces/action-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAItG,6GAA6G;AAC7G,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,CAAS;IACb,SAAS,CAAU;IAC5B,YAAY,QAA6D,EAAE,WAAuE,EAAE;QAClJ,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC;IAC/C,CAAC;CACF;AAMD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,SAAS,GAAG,KAAK,EAA6B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAEtJ,wEAAwE;AACxE,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,uBAAuB;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC9H,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,0EAA0E,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACzI,CAAC;AAED;;;;;GAKG;AACH,+HAA+H;AAC/H,SAAS,cAAc,CAAC,MAA0D,EAAE,OAAgB;IAClG,IAAI,+BAA+B,CAAC,EAAE,OAAO,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,+BAA+B,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,kDAAkD,SAAS,GAAG,CAAC,CAAC;AAChI,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,QAA4J,EAC5J,WAA4I,EAAE;IAE9I,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC1C,0DAA0D;IAC1D,KAAK,UAAU,QAAQ,CAAC,KAAkF;QACxG,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACrF,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,mBAAmB,EAAE,2CAA2C,CAAC,CAAC;QAC3G,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,oBAAoB,EAAE,4CAA4C,CAAC,CAAC;QAC9G,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QACrC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YAAC,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;QACnF,OAAO,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,+BAA+B,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACtH,OAAO,OAAO,CAAC,gBAAgB,EAAE,0DAA0D,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-schema.d.ts","sourceRoot":"","sources":["../../src/admin-surfaces/action-schema.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,cAAc,6CAA6C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-schema.js","sourceRoot":"","sources":["../../src/admin-surfaces/action-schema.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,cAAc,6CAA6C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-tools.d.ts","sourceRoot":"","sources":["../../src/admin-surfaces/action-tools.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAE,yBAAyB,EAA6B,MAAM,kCAAkC,CAAC;AAC7G,OAAO,EAAsC,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAE5G,OAAO,KAAK,EAAsB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,uFAAuF;AACvF,MAAM,WAAW,uBAAwB,SAAQ,0BAA0B;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oGAAoG;AACpG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;CAC7C;AAcD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACzK,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7F,EAAE,QAAQ,GAAE;IACX,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5G;kGAC8F;IAC9F,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;CACxG,GAAG,SAAS,yBAAyB,EAAE,CA2B5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-tools.js","sourceRoot":"","sources":["../../src/admin-surfaces/action-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"callback-field-inbox.d.ts","sourceRoot":"","sources":["../../src/admin-surfaces/callback-field-inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAUD;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAA;CAAE,EACxC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM;IAWnC,+FAA+F;mBAChF,4BAA4B,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAE,aAAY,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAQ,IAAI;IAKhJ,uHAAuH;gBAC3G,4BAA4B,aAAY,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;EAQ3H"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"callback-field-inbox.js","sourceRoot":"","sources":["../../src/admin-surfaces/callback-field-inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,0EAA0E;AAC1E,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACpC,wDAAwD;AACxD,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,+EAA+E;AAC/E,MAAM,KAAK,GAAG,CAAC,GAAiC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAErI;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAAwC,EACxC,YAAmC,EAAE;IAErC,mFAAmF;IACnF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6F,CAAC;IAErH,SAAS,KAAK,CAAC,KAAa;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO;YAAE,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtF,OAAO,OAAO,CAAC,IAAI,IAAI,iBAAiB;YAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAC;IACzF,CAAC;IAED,OAAO;QACL,+FAA+F;QAC/F,OAAO,CAAC,KAA2F,EAAE,WAAkC,EAAE;YACvI,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,YAAY,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,uHAAuH;QACvH,IAAI,CAAC,KAAmC,EAAE,WAAkC,EAAE;YAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capability-declarations.d.ts","sourceRoot":"","sources":["../../src/admin-surfaces/capability-declarations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+GAA+G;AAC/G,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,iCAAiC,EAAE,CAAC;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;uEACmE;IACnE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,KAAK,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AA0E/C;;;;GAIG;AACH,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,kCAAkC,GAAG,MAAM,CAUpM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capability-declarations.js","sourceRoot":"","sources":["../../src/admin-surfaces/capability-declarations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuBH,gGAAgG;AAChG,MAAM,qBAAqB,GAAG,mCAAmC,CAAC;AAClE,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AACpD;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AACrE,6FAA6F;AAC7F,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AACrD,0FAA0F;AAC1F,MAAM,mBAAmB,GAAG,wEAAwE,CAAC;AACrG,0GAA0G;AAC1G,MAAM,kBAAkB,GAAG,wCAAwC,CAAC;AACpE,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,aAAa,GAAG,CAAC,KAAc,EAAkB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE/H,qGAAqG;AACrG,SAAS,UAAU,CAAC,KAAc,EAAE,QAAiF;IACnH,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,GAAG,EAAE,gCAAgC,GAAG,EAAE,CAAC;IACnG,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC/H,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,oCAAoC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC7G,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,EAAU;IACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,oBAAoB,CAAC;IAC5D,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,GAAG,EAAE,mCAAmC,CAAC;IAC3H,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;IACnI,IAAI,OAAO,WAAW,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IACxD,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACrJ,OAAO,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAC7G,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,EAAU;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,eAAe;QAAE,OAAO,GAAG,EAAE,gCAAgC,eAAe,EAAE,CAAC;IAC3H,MAAM,WAAW,GAAwC,EAAE,CAAC;IAC5D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;QACzD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,GAAG,EAAE,IAAI,KAAK,SAAS,MAAM,CAAC,EAAE,qBAAqB,CAAC;QACpH,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,EAAU;IACnD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7F,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,4EAA4E,CAAC;AAC7H,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,EAAU;IACvD,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,iFAAiF;AACjF,SAAS,UAAU,CAAC,KAAc,EAAE,EAAU;IAC5C,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,qEAAqE;AACrE,MAAM,mBAAmB,GAAG;IAC1B,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;CACd,CAAC;AAE/H;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CAAC,QAAwD,EAAE,YAAmC,EAAE;IACrJ,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;IAC/B,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QACxC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC9C,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAC9B,CAAC;IACD,OAAO,YAAkD,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contribution.d.ts","sourceRoot":"","sources":["../../src/admin-surfaces/contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGtF,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,4BAA4B,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAQvM;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE;IACnD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACrH,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CAK7M"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contribution.js","sourceRoot":"","sources":["../../src/admin-surfaces/contribution.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,sBAAsB,EAA+B,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAQvD;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,QAAuC,EAAE,YAAmC,EAAE;IAC3H,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,YAAY,EAAE,gBAAgB;QAC9B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,GAAG,EAAE,CAAC;QACnD,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAI1C,EAAE,YAAmC,EAAE;IACtC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IACnC,IAAI,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAChI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxG,CAAC"}
|