@capybara-hq/kernel 0.1.0-rc.2 → 0.1.0-rc.20
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/bootstrap.json +85 -5
- package/dist/admin/admin-agents.controller.d.ts +28 -0
- package/dist/admin/admin-agents.controller.js +79 -0
- package/dist/admin/admin-connectors.controller.d.ts +29 -0
- package/dist/admin/admin-connectors.controller.js +79 -0
- package/dist/admin/admin-items.schemas.d.ts +42 -0
- package/dist/admin/admin-items.schemas.js +48 -0
- package/dist/admin/admin.controller.d.ts +52 -80
- package/dist/admin/admin.controller.js +112 -81
- package/dist/admin/admin.module.d.ts +4 -1
- package/dist/admin/admin.module.js +50 -4
- package/dist/admin/admin.schemas.d.ts +69 -0
- package/dist/admin/admin.schemas.js +53 -0
- package/dist/admin/audit.controller.d.ts +14 -0
- package/dist/admin/audit.controller.js +42 -0
- package/dist/admin/audit.schemas.d.ts +8 -0
- package/dist/admin/audit.schemas.js +17 -0
- package/dist/admin/extensions.controller.d.ts +34 -3
- package/dist/admin/extensions.controller.js +66 -8
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/health.service.d.ts +104 -0
- package/dist/admin/health.service.js +246 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/overview.controller.d.ts +31 -0
- package/dist/admin/overview.controller.js +78 -0
- package/dist/admin/overview.schemas.d.ts +8 -0
- package/dist/admin/overview.schemas.js +13 -0
- package/dist/admin/overview.service.d.ts +112 -0
- package/dist/admin/overview.service.js +223 -0
- package/dist/admin/platform-audit.service.d.ts +41 -0
- package/dist/admin/platform-audit.service.js +70 -0
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/admin/usage.service.d.ts +149 -0
- package/dist/admin/usage.service.js +321 -0
- package/dist/agents/admin-agents.d.ts +92 -0
- package/dist/agents/admin-agents.js +170 -0
- package/dist/agents/agent-lookup.d.ts +24 -0
- package/dist/agents/agent-lookup.js +46 -2
- package/dist/agents/agent-profile.service.d.ts +31 -0
- package/dist/agents/agent-profile.service.js +122 -0
- package/dist/agents/agents.controller.d.ts +53 -168
- package/dist/agents/agents.controller.js +163 -34
- package/dist/agents/agents.module.d.ts +6 -2
- package/dist/agents/agents.module.js +41 -7
- package/dist/agents/agents.schemas.d.ts +392 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +121 -36
- package/dist/agents/agents.service.js +411 -121
- package/dist/agents/definition.d.ts +142 -21
- package/dist/agents/definition.js +389 -43
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +680 -0
- package/dist/agents/from-template.service.d.ts +72 -0
- package/dist/agents/from-template.service.js +178 -0
- package/dist/agents/instruction-files.d.ts +60 -0
- package/dist/agents/instruction-files.js +111 -0
- package/dist/agents/models.controller.d.ts +44 -6
- package/dist/agents/models.controller.js +84 -8
- package/dist/agents/org-templates.d.ts +186 -0
- package/dist/agents/org-templates.js +876 -0
- package/dist/agents/pending-connector-requests.d.ts +79 -0
- package/dist/agents/pending-connector-requests.js +215 -0
- package/dist/agents/pending-connectors.controller.d.ts +39 -0
- package/dist/agents/pending-connectors.controller.js +91 -0
- package/dist/agents/pending-connectors.service.d.ts +62 -0
- package/dist/agents/pending-connectors.service.js +282 -0
- package/dist/agents/profile.d.ts +114 -0
- package/dist/agents/profile.js +55 -0
- package/dist/agents/readiness.controller.d.ts +26 -0
- package/dist/agents/readiness.controller.js +56 -0
- package/dist/agents/templates.controller.d.ts +77 -5
- package/dist/agents/templates.controller.js +153 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +482 -44
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +88 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/background.schemas.d.ts +10 -0
- package/dist/background/background.schemas.js +16 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +95 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +42 -0
- package/dist/background/launch.js +77 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +195 -0
- package/dist/background/render.d.ts +23 -0
- package/dist/background/render.js +48 -0
- package/dist/background/session.d.ts +48 -0
- package/dist/background/session.js +80 -0
- package/dist/background/status.d.ts +35 -0
- package/dist/background/status.js +57 -0
- package/dist/background/stop.d.ts +68 -0
- package/dist/background/stop.js +244 -0
- package/dist/background/store.d.ts +167 -0
- package/dist/background/store.js +361 -0
- package/dist/background/store.module.d.ts +6 -0
- package/dist/background/store.module.js +22 -0
- package/dist/background/tasks.service.d.ts +109 -0
- package/dist/background/tasks.service.js +271 -0
- package/dist/background/wake-rules.d.ts +66 -0
- package/dist/background/wake-rules.js +113 -0
- package/dist/background/wake.d.ts +30 -0
- package/dist/background/wake.js +63 -0
- package/dist/catalog/admin-catalog.controller.d.ts +136 -52
- package/dist/catalog/admin-catalog.controller.js +275 -65
- package/dist/catalog/admin-catalog.schemas.d.ts +82 -0
- package/dist/catalog/admin-catalog.schemas.js +99 -0
- package/dist/catalog/appearance.schemas.d.ts +10 -0
- package/dist/catalog/appearance.schemas.js +20 -0
- package/dist/catalog/appearance.service.d.ts +105 -0
- package/dist/catalog/appearance.service.js +306 -0
- package/dist/catalog/catalog-content.d.ts +122 -35
- package/dist/catalog/catalog-content.js +122 -14
- package/dist/catalog/catalog-files.d.ts +42 -0
- package/dist/catalog/catalog-files.js +89 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +63 -0
- package/dist/catalog/catalog-items.d.ts +122 -7
- package/dist/catalog/catalog-items.js +301 -13
- package/dist/catalog/catalog-scope.service.d.ts +293 -0
- package/dist/catalog/catalog-scope.service.js +1236 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +47 -31
- package/dist/catalog/catalog.service.d.ts +122 -31
- package/dist/catalog/catalog.service.js +177 -105
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/claude/translate.js +3 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +29 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +102 -0
- package/dist/catalog/component-scope.controller.js +257 -0
- package/dist/catalog/component-scope.schemas.d.ts +118 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +394 -0
- package/dist/catalog/component-scope.service.js +1133 -0
- package/dist/catalog/component-state.d.ts +207 -0
- package/dist/catalog/component-state.js +484 -0
- package/dist/catalog/git-source.d.ts +9 -1
- package/dist/catalog/git-source.js +29 -2
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplace-icons.d.ts +64 -0
- package/dist/catalog/marketplace-icons.js +131 -0
- package/dist/catalog/marketplaces.controller.d.ts +50 -41
- package/dist/catalog/marketplaces.controller.js +130 -46
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +110 -17
- package/dist/catalog/marketplaces.service.js +337 -29
- package/dist/catalog/org-catalog.controller.d.ts +114 -62
- package/dist/catalog/org-catalog.controller.js +191 -98
- package/dist/catalog/org-catalog.schemas.d.ts +104 -0
- package/dist/catalog/org-catalog.schemas.js +107 -0
- package/dist/catalog/org-catalog.service.d.ts +72 -33
- package/dist/catalog/org-catalog.service.js +367 -158
- package/dist/catalog/org-extension-switch.d.ts +41 -0
- package/dist/catalog/org-extension-switch.js +115 -0
- package/dist/catalog/org-extension.controller.d.ts +133 -0
- package/dist/catalog/org-extension.controller.js +313 -0
- package/dist/catalog/org-extension.schemas.d.ts +15 -0
- package/dist/catalog/org-extension.schemas.js +22 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +77 -0
- package/dist/catalog/org-plugin-uploads.controller.js +200 -0
- package/dist/catalog/org-plugin-uploads.d.ts +71 -0
- package/dist/catalog/org-plugin-uploads.js +122 -0
- package/dist/catalog/org-plugin-uploads.schemas.d.ts +20 -0
- package/dist/catalog/org-plugin-uploads.schemas.js +32 -0
- package/dist/catalog/owned-items.d.ts +188 -0
- package/dist/catalog/owned-items.js +808 -0
- package/dist/catalog/owned-plugin-cleanup.d.ts +56 -0
- package/dist/catalog/owned-plugin-cleanup.js +194 -0
- package/dist/catalog/ownership.d.ts +172 -0
- package/dist/catalog/ownership.js +326 -0
- package/dist/catalog/platform-components.d.ts +243 -0
- package/dist/catalog/platform-components.js +872 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +583 -0
- package/dist/catalog/plugin-import.d.ts +254 -47
- package/dist/catalog/plugin-import.js +810 -112
- package/dist/catalog/plugin-install.d.ts +205 -42
- package/dist/catalog/plugin-install.js +828 -126
- package/dist/catalog/plugin-package.d.ts +43 -4
- package/dist/catalog/plugin-package.js +194 -7
- package/dist/catalog/plugin-upgrade.d.ts +308 -225
- package/dist/catalog/plugin-upgrade.js +1325 -1131
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +194 -118
- package/dist/catalog/requests.service.js +530 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +119 -0
- package/dist/channels/actions.js +10 -3
- package/dist/channels/cards.d.ts +36 -10
- package/dist/channels/cards.js +100 -25
- package/dist/channels/channels.module.js +13 -2
- package/dist/channels/channels.schemas.d.ts +41 -0
- package/dist/channels/channels.schemas.js +40 -0
- package/dist/channels/connections.controller.d.ts +46 -37
- package/dist/channels/connections.controller.js +76 -34
- package/dist/channels/connections.service.d.ts +102 -10
- package/dist/channels/connections.service.js +271 -24
- package/dist/channels/inbound.d.ts +11 -1
- package/dist/channels/inbound.js +87 -7
- package/dist/channels/outbound.d.ts +14 -1
- package/dist/channels/outbound.js +64 -15
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +2 -0
- package/dist/channels/supervisor.js +4 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/client/client-access.service.d.ts +102 -0
- package/dist/client/client-access.service.js +303 -0
- package/dist/client/client-builds.service.d.ts +109 -0
- package/dist/client/client-builds.service.js +229 -0
- package/dist/client/client-delivery.controller.d.ts +25 -0
- package/dist/client/client-delivery.controller.js +66 -0
- package/dist/client/client-files.d.ts +48 -0
- package/dist/client/client-files.js +136 -0
- package/dist/client/client-reports.cron.d.ts +13 -0
- package/dist/client/client-reports.cron.js +42 -0
- package/dist/client/client-reports.service.d.ts +30 -0
- package/dist/client/client-reports.service.js +102 -0
- package/dist/client/client-sign-in.service.d.ts +21 -0
- package/dist/client/client-sign-in.service.js +49 -0
- package/dist/client/client.controller.d.ts +49 -0
- package/dist/client/client.controller.js +129 -0
- package/dist/client/client.module.d.ts +8 -0
- package/dist/client/client.module.js +28 -0
- package/dist/client/client.schemas.d.ts +61 -0
- package/dist/client/client.schemas.js +27 -0
- package/dist/config/docs.js +5 -1
- package/dist/config/schema.d.ts +35 -2
- package/dist/config/schema.js +216 -21
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +1 -1
- package/dist/conversations/artifacts.js +1 -1
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -44
- package/dist/conversations/conversations.controller.js +133 -82
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +161 -13
- package/dist/conversations/conversations.service.js +329 -57
- package/dist/conversations/device-status.d.ts +24 -0
- package/dist/conversations/device-status.js +71 -0
- package/dist/conversations/event-log.d.ts +45 -9
- package/dist/conversations/event-log.js +113 -6
- package/dist/conversations/events.d.ts +255 -9
- package/dist/conversations/events.js +250 -34
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/queue.d.ts +5 -2
- package/dist/conversations/queue.js +24 -4
- package/dist/conversations/queue.service.d.ts +2 -2
- package/dist/conversations/queue.service.js +21 -3
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +40 -16
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +48 -5
- package/dist/ctx/create-ctx.js +174 -34
- package/dist/db/kernel-schema.d.ts +668 -27
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/devices/access.d.ts +66 -0
- package/dist/devices/access.js +113 -0
- package/dist/devices/conversation-devices.d.ts +75 -0
- package/dist/devices/conversation-devices.js +230 -0
- package/dist/devices/devices.controller.d.ts +36 -0
- package/dist/devices/devices.controller.js +124 -0
- package/dist/devices/devices.module.d.ts +8 -0
- package/dist/devices/devices.module.js +34 -0
- package/dist/devices/devices.schemas.d.ts +3 -0
- package/dist/devices/devices.schemas.js +14 -0
- package/dist/devices/devices.service.d.ts +251 -0
- package/dist/devices/devices.service.js +791 -0
- package/dist/devices/dto.d.ts +25 -0
- package/dist/devices/dto.js +12 -0
- package/dist/devices/label.d.ts +11 -0
- package/dist/devices/label.js +25 -0
- package/dist/devices/legacy-cleanup.job.d.ts +34 -0
- package/dist/devices/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +215 -3
- package/dist/errors.js +215 -3
- package/dist/evals/evals.module.js +11 -2
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +36 -10
- package/dist/evals/recorded-tools.d.ts +37 -1
- package/dist/evals/recorded-tools.js +120 -10
- package/dist/evals/run-replay.d.ts +20 -3
- package/dist/evals/run-replay.js +78 -14
- package/dist/evals/runs.controller.d.ts +2 -57
- package/dist/evals/runs.controller.js +1 -42
- package/dist/evals/runs.service.d.ts +8 -7
- package/dist/evals/runs.service.js +45 -30
- package/dist/evals/sets.controller.d.ts +2 -28
- package/dist/evals/sets.controller.js +1 -31
- package/dist/evals/sets.service.d.ts +7 -7
- package/dist/evals/sets.service.js +23 -17
- package/dist/evals/snapshot.d.ts +3 -2
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +4 -6
- package/dist/evals/step-replay.js +16 -9
- package/dist/evals/trajectory.d.ts +5 -3
- package/dist/evals/trajectory.js +4 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +81 -14
- package/dist/extensions/admin-ops.js +181 -47
- package/dist/extensions/admin-view.d.ts +57 -10
- package/dist/extensions/admin-view.js +249 -27
- package/dist/extensions/approvals.d.ts +12 -2
- package/dist/extensions/blobs.d.ts +14 -1
- package/dist/extensions/blobs.js +49 -5
- package/dist/extensions/bootstrap.d.ts +41 -5
- package/dist/extensions/bootstrap.js +121 -19
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +94 -9
- package/dist/extensions/deployment-config.js +255 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +133 -0
- package/dist/extensions/effective-config.js +379 -0
- package/dist/extensions/extensions.module.js +31 -12
- package/dist/extensions/guide-places.d.ts +68 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +105 -12
- package/dist/extensions/host.js +372 -87
- package/dist/extensions/installs.d.ts +30 -9
- package/dist/extensions/installs.js +57 -16
- package/dist/extensions/instance.d.ts +17 -2
- package/dist/extensions/instance.js +21 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/locks.d.ts +12 -0
- package/dist/extensions/locks.js +26 -0
- package/dist/extensions/org-config.d.ts +97 -7
- package/dist/extensions/org-config.js +215 -45
- package/dist/extensions/org-levels.d.ts +37 -0
- package/dist/extensions/org-levels.js +71 -0
- package/dist/extensions/org-overrides.d.ts +151 -0
- package/dist/extensions/org-overrides.js +524 -0
- package/dist/extensions/package.d.ts +18 -4
- package/dist/extensions/package.js +56 -3
- package/dist/extensions/permission-set.d.ts +35 -5
- package/dist/extensions/permission-set.js +36 -5
- package/dist/extensions/permission-view.d.ts +106 -13
- package/dist/extensions/permission-view.js +33 -15
- package/dist/extensions/plugin-guides.d.ts +282 -0
- package/dist/extensions/plugin-guides.js +554 -0
- package/dist/extensions/plugin-icons.d.ts +54 -0
- package/dist/extensions/plugin-icons.js +125 -0
- package/dist/extensions/plugin-items.d.ts +21 -0
- package/dist/extensions/plugin-items.js +42 -0
- package/dist/extensions/point-defaults.controller.d.ts +28 -0
- package/dist/extensions/point-defaults.controller.js +69 -0
- package/dist/extensions/point-defaults.d.ts +73 -0
- package/dist/extensions/point-defaults.js +236 -0
- package/dist/extensions/point-defaults.schemas.d.ts +9 -0
- package/dist/extensions/point-defaults.schemas.js +14 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +51 -1
- package/dist/extensions/resolve.js +85 -3
- package/dist/extensions/single-provider.d.ts +92 -0
- package/dist/extensions/single-provider.js +180 -0
- package/dist/extensions/sources.d.ts +13 -2
- package/dist/extensions/sources.js +2 -0
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +46 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/previewers.controller.js +2 -3
- package/dist/files/previewers.d.ts +10 -3
- package/dist/files/previewers.js +40 -11
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/api.module.js +76 -4
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/gateway-routes.d.ts +7 -3
- package/dist/http/gateway-routes.js +6 -3
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/http/plugin-dispatch.d.ts +4 -1
- package/dist/http/plugin-dispatch.js +14 -2
- package/dist/identity/accounts.d.ts +77 -31
- package/dist/identity/accounts.js +133 -52
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +35 -9
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +7 -4
- package/dist/identity/initial-passwords.controller.d.ts +22 -0
- package/dist/identity/initial-passwords.controller.js +49 -0
- package/dist/identity/initial-passwords.d.ts +61 -0
- package/dist/identity/initial-passwords.job.d.ts +16 -0
- package/dist/identity/initial-passwords.job.js +46 -0
- package/dist/identity/initial-passwords.js +159 -0
- package/dist/identity/me.controller.d.ts +17 -1
- package/dist/identity/me.controller.js +45 -4
- package/dist/identity/me.schemas.d.ts +24 -0
- package/dist/identity/me.schemas.js +25 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +99 -12
- package/dist/identity/settings.js +234 -25
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/identity/write-actor.d.ts +11 -0
- package/dist/identity/write-actor.js +7 -0
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +64 -4
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +157 -0
- package/dist/inbox/platform-inbox.service.js +281 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +32 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +31 -3
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/presence/presence.module.d.ts +6 -0
- package/dist/infra/presence/presence.module.js +22 -0
- package/dist/infra/presence/replica-presence.d.ts +87 -0
- package/dist/infra/presence/replica-presence.js +189 -0
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/throttler/named-throttlers.d.ts +12 -0
- package/dist/infra/throttler/named-throttlers.js +67 -0
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +15 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +4 -2
- package/dist/lifecycle/kernel-lifecycle.js +35 -7
- package/dist/local-devices/device-auth.controller.d.ts +42 -0
- package/dist/local-devices/device-auth.controller.js +116 -0
- package/dist/local-devices/device-auth.d.ts +119 -0
- package/dist/local-devices/device-auth.js +401 -0
- package/dist/local-devices/device-auth.module.d.ts +7 -0
- package/dist/local-devices/device-auth.module.js +25 -0
- package/dist/local-devices/device-routes.d.ts +36 -0
- package/dist/local-devices/device-routes.js +90 -0
- package/dist/local-devices/dto.d.ts +66 -0
- package/dist/local-devices/dto.js +44 -0
- package/dist/local-devices/keys.d.ts +25 -0
- package/dist/local-devices/keys.js +25 -0
- package/dist/local-devices/local-device-gateway.d.ts +134 -0
- package/dist/local-devices/local-device-gateway.js +542 -0
- package/dist/local-devices/local-device-provider.d.ts +89 -0
- package/dist/local-devices/local-device-provider.js +151 -0
- package/dist/local-devices/local-devices.module.d.ts +16 -0
- package/dist/local-devices/local-devices.module.js +44 -0
- package/dist/local-devices/machines.d.ts +118 -0
- package/dist/local-devices/machines.js +366 -0
- package/dist/local-devices/relay.d.ts +100 -0
- package/dist/local-devices/relay.js +373 -0
- package/dist/local-devices/targets.d.ts +28 -0
- package/dist/local-devices/targets.js +73 -0
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/embeddings.d.ts +82 -0
- package/dist/models/embeddings.js +326 -0
- package/dist/models/enablement.controller.d.ts +40 -0
- package/dist/models/enablement.controller.js +74 -0
- package/dist/models/enablement.d.ts +101 -0
- package/dist/models/enablement.js +264 -0
- package/dist/models/models.module.d.ts +5 -1
- package/dist/models/models.module.js +16 -4
- package/dist/models/org-models.schemas.d.ts +8 -0
- package/dist/models/org-models.schemas.js +22 -0
- package/dist/models/prices.d.ts +8 -6
- package/dist/models/prices.js +11 -9
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +72 -14
- package/dist/models/purposes.js +115 -34
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.controller.d.ts +2 -5
- package/dist/orgs/orgs.controller.js +3 -6
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.schemas.d.ts +8 -0
- package/dist/orgs/orgs.schemas.js +16 -0
- package/dist/orgs/orgs.service.d.ts +23 -8
- package/dist/orgs/orgs.service.js +38 -16
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +66 -6
- package/dist/orgs/settings.service.js +89 -10
- package/dist/overrides.d.ts +16 -1
- package/dist/overrides.js +10 -0
- package/dist/platform/actor.d.ts +48 -0
- package/dist/platform/actor.js +100 -0
- package/dist/platform/agent-docs.d.ts +18 -0
- package/dist/platform/agent-docs.js +59 -0
- package/dist/platform/availability.d.ts +14 -0
- package/dist/platform/availability.js +43 -0
- package/dist/platform/errors.d.ts +28 -0
- package/dist/platform/errors.js +65 -0
- package/dist/platform/exclusions.d.ts +11 -0
- package/dist/platform/exclusions.js +774 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +169 -0
- package/dist/platform/operation.js +102 -0
- package/dist/platform/ops/accounts.ops.d.ts +32 -0
- package/dist/platform/ops/accounts.ops.js +291 -0
- package/dist/platform/ops/admin-items.ops.d.ts +37 -0
- package/dist/platform/ops/admin-items.ops.js +278 -0
- package/dist/platform/ops/admin.ops.d.ts +38 -0
- package/dist/platform/ops/admin.ops.js +497 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +50 -0
- package/dist/platform/ops/agent-skills.ops.js +509 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +17 -0
- package/dist/platform/ops/agent-templates.ops.js +272 -0
- package/dist/platform/ops/agents.ops.d.ts +37 -0
- package/dist/platform/ops/agents.ops.js +730 -0
- package/dist/platform/ops/approvals.ops.d.ts +30 -0
- package/dist/platform/ops/approvals.ops.js +116 -0
- package/dist/platform/ops/background.ops.d.ts +14 -0
- package/dist/platform/ops/background.ops.js +134 -0
- package/dist/platform/ops/catalog-admin.ops.d.ts +92 -0
- package/dist/platform/ops/catalog-admin.ops.js +682 -0
- package/dist/platform/ops/channels.ops.d.ts +16 -0
- package/dist/platform/ops/channels.ops.js +195 -0
- package/dist/platform/ops/components.ops.d.ts +46 -0
- package/dist/platform/ops/components.ops.js +854 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +190 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/devices.ops.d.ts +26 -0
- package/dist/platform/ops/devices.ops.js +311 -0
- package/dist/platform/ops/errors.d.ts +16 -0
- package/dist/platform/ops/errors.js +30 -0
- package/dist/platform/ops/evals.ops.d.ts +28 -0
- package/dist/platform/ops/evals.ops.js +783 -0
- package/dist/platform/ops/extensions-admin.ops.d.ts +25 -0
- package/dist/platform/ops/extensions-admin.ops.js +372 -0
- package/dist/platform/ops/extensions.ops.d.ts +25 -0
- package/dist/platform/ops/extensions.ops.js +347 -0
- package/dist/platform/ops/inbox.ops.d.ts +25 -0
- package/dist/platform/ops/inbox.ops.js +381 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +22 -0
- package/dist/platform/ops/marketplaces.ops.js +466 -0
- package/dist/platform/ops/models.ops.d.ts +25 -0
- package/dist/platform/ops/models.ops.js +232 -0
- package/dist/platform/ops/org-plugins.ops.d.ts +35 -0
- package/dist/platform/ops/org-plugins.ops.js +388 -0
- package/dist/platform/ops/org-settings.ops.d.ts +18 -0
- package/dist/platform/ops/org-settings.ops.js +127 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +298 -0
- package/dist/platform/ops/other-orgs.d.ts +20 -0
- package/dist/platform/ops/other-orgs.js +72 -0
- package/dist/platform/ops/paging.d.ts +14 -0
- package/dist/platform/ops/paging.js +20 -0
- package/dist/platform/ops/platform.ops.d.ts +30 -0
- package/dist/platform/ops/platform.ops.js +231 -0
- package/dist/platform/ops/plugins.ops.d.ts +35 -0
- package/dist/platform/ops/plugins.ops.js +476 -0
- package/dist/platform/ops/previewers.ops.d.ts +14 -0
- package/dist/platform/ops/previewers.ops.js +109 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +191 -0
- package/dist/platform/ops/role.d.ts +4 -0
- package/dist/platform/ops/role.js +10 -0
- package/dist/platform/ops/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/ops/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +160 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/ops/themes.ops.d.ts +14 -0
- package/dist/platform/ops/themes.ops.js +47 -0
- package/dist/platform/ops/ui.ops.d.ts +8 -0
- package/dist/platform/ops/ui.ops.js +41 -0
- package/dist/platform/ops/unavailable.d.ts +23 -0
- package/dist/platform/ops/unavailable.js +118 -0
- package/dist/platform/parity.d.ts +33 -0
- package/dist/platform/parity.js +272 -0
- package/dist/platform/platform-ops.module.d.ts +43 -0
- package/dist/platform/platform-ops.module.js +142 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/platform/route-schemas.d.ts +18 -0
- package/dist/platform/route-schemas.js +85 -0
- package/dist/roles/gateway-role.d.ts +18 -3
- package/dist/roles/gateway-role.js +33 -5
- package/dist/roles/gateway.module.d.ts +2 -1
- package/dist/roles/gateway.module.js +6 -3
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +21 -1
- package/dist/runtime/context/build.d.ts +21 -13
- package/dist/runtime/context/build.js +106 -29
- package/dist/runtime/context/claude-tools.d.ts +4 -1
- package/dist/runtime/context/claude-tools.js +13 -12
- package/dist/runtime/context/compaction.js +24 -1
- package/dist/runtime/context/device-paths.d.ts +40 -0
- package/dist/runtime/context/device-paths.js +48 -0
- package/dist/runtime/context/legacy-text.d.ts +22 -0
- package/dist/runtime/context/legacy-text.js +37 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/run-context.d.ts +65 -0
- package/dist/runtime/context/run-context.js +215 -0
- package/dist/runtime/context/skills.d.ts +29 -11
- package/dist/runtime/context/skills.js +46 -32
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.d.ts +8 -1
- package/dist/runtime/hook-calls.js +40 -7
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +35 -6
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +54 -11
- package/dist/runtime/model-call.js +105 -28
- package/dist/runtime/providers.d.ts +149 -29
- package/dist/runtime/providers.js +332 -63
- package/dist/runtime/run-context.service.d.ts +65 -0
- package/dist/runtime/run-context.service.js +236 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-finish.d.ts +1 -1
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +7 -9
- package/dist/runtime/run-queue.d.ts +62 -5
- package/dist/runtime/run-queue.js +313 -40
- package/dist/runtime/run-worker.d.ts +19 -8
- package/dist/runtime/run-worker.js +105 -44
- package/dist/runtime/runtime.module.js +13 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +31 -26
- package/dist/runtime/subagents/definition.js +89 -142
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +116 -27
- package/dist/runtime/subagents/dispatch.js +213 -142
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.js +2 -1
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +25 -8
- package/dist/runtime/subagents/roster.js +48 -12
- package/dist/runtime/subagents/skill-fork.d.ts +4 -3
- package/dist/runtime/subagents/skill-fork.js +9 -5
- package/dist/runtime/subagents/status.d.ts +14 -0
- package/dist/runtime/subagents/status.js +23 -0
- package/dist/runtime/subagents/subagents.service.d.ts +9 -6
- package/dist/runtime/subagents/subagents.service.js +13 -8
- package/dist/runtime/usage-report-jobs.d.ts +88 -0
- package/dist/runtime/usage-report-jobs.js +158 -0
- package/dist/runtime/usage-report.d.ts +35 -39
- package/dist/runtime/usage-report.js +171 -97
- package/dist/runtime/waits.d.ts +148 -39
- package/dist/runtime/waits.js +426 -112
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +34 -7
- package/dist/sandbox/providers.js +54 -9
- package/dist/sandbox/sandbox-file-reader.d.ts +35 -0
- package/dist/sandbox/sandbox-file-reader.js +98 -0
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +345 -132
- package/dist/sandbox/sandbox.service.js +883 -399
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/skills/agent-skills.controller.d.ts +48 -0
- package/dist/skills/agent-skills.controller.js +131 -0
- package/dist/skills/agent-skills.service.d.ts +262 -0
- package/dist/skills/agent-skills.service.js +996 -0
- package/dist/skills/catalog.d.ts +14 -11
- package/dist/skills/catalog.js +32 -50
- package/dist/skills/changes.controller.d.ts +12 -22
- package/dist/skills/changes.controller.js +27 -56
- package/dist/skills/changes.service.d.ts +69 -115
- package/dist/skills/changes.service.js +249 -598
- package/dist/skills/conversation-catalog.d.ts +53 -0
- package/dist/skills/conversation-catalog.js +149 -0
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +2 -2
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +3 -3
- package/dist/skills/invoke.js +21 -8
- package/dist/skills/package.d.ts +15 -1
- package/dist/skills/package.js +14 -1
- package/dist/skills/skills.controller.d.ts +32 -6
- package/dist/skills/skills.controller.js +64 -11
- package/dist/skills/skills.module.js +25 -3
- package/dist/skills/skills.schemas.d.ts +44 -0
- package/dist/skills/skills.schemas.js +68 -0
- package/dist/skills/skills.service.d.ts +123 -26
- package/dist/skills/skills.service.js +493 -76
- package/dist/skills/usable.d.ts +82 -0
- package/dist/skills/usable.js +388 -0
- package/dist/themes/render-css.d.ts +13 -0
- package/dist/themes/render-css.js +135 -0
- package/dist/themes/theme-delivery.service.d.ts +36 -0
- package/dist/themes/theme-delivery.service.js +116 -0
- package/dist/themes/theme-state.d.ts +116 -0
- package/dist/themes/theme-state.js +221 -0
- package/dist/themes/theme-usage.d.ts +61 -0
- package/dist/themes/theme-usage.js +98 -0
- package/dist/themes/themes-public.controller.d.ts +33 -0
- package/dist/themes/themes-public.controller.js +98 -0
- package/dist/themes/themes.controller.d.ts +13 -0
- package/dist/themes/themes.controller.js +38 -0
- package/dist/themes/themes.module.d.ts +3 -0
- package/dist/themes/themes.module.js +21 -0
- package/dist/themes/themes.schemas.d.ts +3 -0
- package/dist/themes/themes.schemas.js +2 -0
- package/dist/themes/themes.service.d.ts +50 -0
- package/dist/themes/themes.service.js +99 -0
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/admin-connectors.d.ts +69 -0
- package/dist/tools/admin-connectors.js +135 -0
- package/dist/tools/approvals.controller.js +2 -3
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +26 -2
- package/dist/tools/approvals.service.js +44 -5
- package/dist/tools/builtin-names.d.ts +104 -0
- package/dist/tools/builtin-names.js +164 -0
- package/dist/tools/builtins/agent.d.ts +27 -25
- package/dist/tools/builtins/agent.js +66 -63
- package/dist/tools/builtins/ask-user.d.ts +1 -1
- package/dist/tools/builtins/ask-user.js +5 -4
- package/dist/tools/builtins/builtin-tools.d.ts +23 -4
- package/dist/tools/builtins/builtin-tools.js +78 -12
- package/dist/tools/builtins/current-time.d.ts +26 -0
- package/dist/tools/builtins/current-time.js +99 -0
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +51 -0
- package/dist/tools/builtins/platform.js +451 -0
- package/dist/tools/builtins/read-tool-output.d.ts +1 -1
- package/dist/tools/builtins/read-tool-output.js +2 -2
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +291 -39
- package/dist/tools/builtins/sandbox/common.d.ts +135 -36
- package/dist/tools/builtins/sandbox/common.js +222 -62
- package/dist/tools/builtins/sandbox/deliver.d.ts +1 -1
- package/dist/tools/builtins/sandbox/deliver.js +19 -16
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +64 -50
- package/dist/tools/builtins/sandbox/file-state.d.ts +34 -0
- package/dist/tools/builtins/sandbox/file-state.js +34 -0
- package/dist/tools/builtins/sandbox/glob-match.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob-match.js +1 -1
- package/dist/tools/builtins/sandbox/glob.d.ts +1 -1
- package/dist/tools/builtins/sandbox/glob.js +17 -12
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +153 -34
- package/dist/tools/builtins/sandbox/index.d.ts +9 -5
- package/dist/tools/builtins/sandbox/index.js +13 -5
- package/dist/tools/builtins/sandbox/read.d.ts +2 -2
- package/dist/tools/builtins/sandbox/read.js +29 -19
- package/dist/tools/builtins/sandbox/task-output.d.ts +79 -0
- package/dist/tools/builtins/sandbox/task-output.js +334 -0
- package/dist/tools/builtins/sandbox/task-stop.d.ts +10 -0
- package/dist/tools/builtins/sandbox/task-stop.js +113 -0
- package/dist/tools/builtins/sandbox/write.d.ts +1 -1
- package/dist/tools/builtins/sandbox/write.js +51 -44
- package/dist/tools/builtins/send-message.d.ts +56 -0
- package/dist/tools/builtins/send-message.js +100 -0
- package/dist/tools/builtins/skill-load.d.ts +29 -18
- package/dist/tools/builtins/skill-load.js +125 -73
- package/dist/tools/builtins/tool-search.d.ts +13 -9
- package/dist/tools/builtins/tool-search.js +25 -14
- package/dist/tools/builtins/web/errors.d.ts +8 -0
- package/dist/tools/builtins/web/errors.js +53 -0
- package/dist/tools/builtins/web/extract.d.ts +62 -0
- package/dist/tools/builtins/web/extract.js +271 -0
- package/dist/tools/builtins/web/fetch.d.ts +55 -0
- package/dist/tools/builtins/web/fetch.js +175 -0
- package/dist/tools/builtins/web/index.d.ts +13 -0
- package/dist/tools/builtins/web/index.js +12 -0
- package/dist/tools/builtins/web/page-cache.d.ts +25 -0
- package/dist/tools/builtins/web/page-cache.js +77 -0
- package/dist/tools/builtins/web/search.d.ts +25 -0
- package/dist/tools/builtins/web/search.js +210 -0
- package/dist/tools/builtins/web/url.d.ts +17 -0
- package/dist/tools/builtins/web/url.js +43 -0
- package/dist/tools/connector-account-policies.d.ts +51 -0
- package/dist/tools/connector-account-policies.js +165 -0
- package/dist/tools/connectors.controller.d.ts +74 -9
- package/dist/tools/connectors.controller.js +133 -16
- package/dist/tools/connectors.schemas.d.ts +27 -0
- package/dist/tools/connectors.schemas.js +34 -0
- package/dist/tools/connectors.service.d.ts +101 -8
- package/dist/tools/connectors.service.js +266 -28
- package/dist/tools/credentials.d.ts +23 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.js +5 -5
- package/dist/tools/elicitation.js +1 -1
- package/dist/tools/extension-tools.controller.d.ts +14 -0
- package/dist/tools/extension-tools.controller.js +37 -0
- package/dist/tools/info.d.ts +61 -4
- package/dist/tools/info.js +119 -33
- package/dist/tools/legacy-data.d.ts +34 -0
- package/dist/tools/legacy-data.js +76 -0
- package/dist/tools/legacy-keys.d.ts +51 -0
- package/dist/tools/legacy-keys.js +114 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/oauth/flow.js +1 -1
- package/dist/tools/oauth/tokens.d.ts +54 -7
- package/dist/tools/oauth/tokens.js +87 -17
- package/dist/tools/org-tool-switches.d.ts +89 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.js +1 -1
- package/dist/tools/pipeline.d.ts +67 -47
- package/dist/tools/pipeline.js +319 -380
- package/dist/tools/policy.d.ts +30 -23
- package/dist/tools/policy.js +142 -64
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +1 -1
- package/dist/tools/questions.service.d.ts +23 -2
- package/dist/tools/questions.service.js +104 -2
- package/dist/tools/registry.d.ts +189 -68
- package/dist/tools/registry.js +318 -236
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/tools.module.js +31 -3
- package/dist/tools/validate.js +1 -1
- package/dist/ui/admin-ui.controller.d.ts +56 -0
- package/dist/ui/admin-ui.controller.js +192 -0
- package/dist/ui/arrangement.d.ts +65 -0
- package/dist/ui/arrangement.js +171 -0
- package/dist/ui/embed-token.d.ts +2 -2
- package/dist/ui/embed-token.js +30 -5
- package/dist/ui/registry.d.ts +42 -17
- package/dist/ui/registry.js +46 -14
- package/dist/ui/slots.controller.d.ts +11 -0
- package/dist/ui/slots.controller.js +25 -0
- package/dist/ui/ui-stream.d.ts +20 -3
- package/dist/ui/ui-stream.js +25 -7
- package/dist/ui/ui.schemas.d.ts +70 -0
- package/dist/ui/ui.schemas.js +65 -0
- package/dist/ui/views.controller.d.ts +35 -49
- package/dist/ui/views.controller.js +48 -70
- package/dist/ui/views.d.ts +112 -18
- package/dist/ui/views.js +254 -47
- package/package.json +6 -3
- package/src/migrations/0063_tool_keys_claude_code.sql +220 -0
- package/src/migrations/0064_account_last_org.sql +7 -0
- package/src/migrations/0065_conversation_archive.sql +8 -0
- package/src/migrations/0066_extension_display_name.sql +4 -0
- package/src/migrations/0067_agent_profiles.sql +20 -0
- package/src/migrations/0068_agent_avatar_uploads.sql +7 -0
- package/src/migrations/0069_attachments_agent_idx.sql +3 -0
- package/src/migrations/0070_background_tasks.sql +37 -0
- package/src/migrations/0071_background_tasks_reserve.sql +6 -0
- package/src/migrations/0072_background_tasks_stopping.sql +5 -0
- package/src/migrations/0073_org_extension_point_defaults.sql +11 -0
- package/src/migrations/0074_subagent_tree.sql +50 -0
- package/src/migrations/0075_plugin_scope.sql +61 -0
- package/src/migrations/0076_skills_created_by_nullable.sql +6 -0
- package/src/migrations/0077_scope_requests.sql +52 -0
- package/src/migrations/0078_scope_grant_switches.sql +18 -0
- package/src/migrations/0079_scope_live_install_switches.sql +19 -0
- package/src/migrations/0080_rename_enterprise_admin.sql +18 -0
- package/src/migrations/0081_platform_components.sql +129 -0
- package/src/migrations/0082_platform_migration.sql +33 -0
- package/src/migrations/0083_plugin_scope_sync_failures.sql +15 -0
- package/src/migrations/0084_org_owned_items.sql +85 -0
- package/src/migrations/0085_agent_templates_phase4.sql +45 -0
- package/src/migrations/0086_org_layering.sql +30 -0
- package/src/migrations/0087_approval_summary.sql +6 -0
- package/src/migrations/0088_environments.sql +80 -0
- package/src/migrations/0089_model_kinds_usage.sql +38 -0
- package/src/migrations/0090_initial_passwords.sql +27 -0
- package/src/migrations/0091_account_time_zone.sql +4 -0
- package/src/migrations/0092_tools_default_on.sql +27 -0
- package/src/migrations/0093_connected_environments.sql +37 -0
- package/src/migrations/0094_environment_paths_idx.sql +7 -0
- package/src/migrations/0095_environment_files_resets.sql +5 -0
- package/src/migrations/0096_environment_demoted_default.sql +18 -0
- package/src/migrations/0097_extension_installs_enabled_at.sql +16 -0
- package/src/migrations/0098_single_provider_running_first.sql +41 -0
- package/src/migrations/0099_channel_connection_guide_ack.sql +6 -0
- package/src/migrations/0100_catalog_files.sql +13 -0
- package/src/migrations/0101_marketplace_icons.sql +32 -0
- package/src/migrations/0102_themes.sql +64 -0
- package/src/migrations/0103_ui_theme_setting.sql +7 -0
- package/src/migrations/0104_connector_tool_account_policies.sql +16 -0
- package/src/migrations/0105_devices_rename.sql +136 -0
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
- package/src/migrations/0107_extension_client_builds.sql +50 -0
- package/src/migrations/0108_question_skipped.sql +6 -0
- package/src/migrations/0109_audit_platform_idx.sql +5 -0
- package/src/migrations/0110_usage_time_idx.sql +8 -0
- package/src/migrations/0111_agent_skill_sharing.sql +22 -0
- package/src/migrations/0112_skill_share_requests.sql +4 -0
- package/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
- package/dist/tools/builtins/skill-write.d.ts +0 -59
- package/dist/tools/builtins/skill-write.js +0 -244
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import { parseSkillMd, SKILL_ENTRY_FILE, SKILLS_SANDBOX_ROOT, skillSandboxPath, ToolError, } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { parseSkillMd, renderSkillBody, SKILL_ENTRY_FILE, SKILL_INVOCATION_LIMITS, SKILLS_SANDBOX_ROOT, skillDigest, skillSandboxDir, skillSandboxPath, ToolError, } from "@capybara-hq/plugin-sdk";
|
|
3
3
|
import { sql } from "kysely";
|
|
4
4
|
import { normalizeStoredDefinition } from "../../agents/definition.js";
|
|
5
5
|
import { ApiError } from "../../errors.js";
|
|
@@ -7,55 +7,67 @@ import { latestInvocation } from "../../runtime/context/skills.js";
|
|
|
7
7
|
import { dispatchOfChildRun } from "../../runtime/subagents/child.js";
|
|
8
8
|
import { resolveSkillForkType } from "../../runtime/subagents/roster.js";
|
|
9
9
|
import { invocationOf, resolveSkills } from "../../skills/catalog.js";
|
|
10
|
-
import {
|
|
11
|
-
import { SANDBOX_TOOL_NAMES } from "
|
|
10
|
+
import { PLATFORM_SOURCE, skillFileStore } from "../../skills/usable.js";
|
|
11
|
+
import { AGENT_TOOL, SANDBOX_TOOL_NAMES } from "../builtin-names.js";
|
|
12
|
+
import { clip, display, inSandbox, sandboxBaseTimeoutMs, sandboxConversationOf, sandboxUsable, withNotices, withPathLease, } from "./sandbox/common.js";
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
-
* SKILL.md
|
|
15
|
-
*
|
|
14
|
+
* Builtin tool `Skill` (M5 T14, ruling M17): resolves the name against the latest skills catalog
|
|
15
|
+
* snapshot in the log to an id and version, and returns that version's SKILL.md body and file list
|
|
16
|
+
* (the result names the version). A skill with other files is copied whole into the conversation's
|
|
17
|
+
* device at `<skills root>/<name>@<digest>/` (the instance's skills root, `/skills` by default; the provider writes as root, commands read only; the
|
|
18
|
+
* digest is {@link skillDigest} of the version's file manifest, so versions of one skill coexist in
|
|
19
|
+
* the shared file system). Without a sandbox provider only the body is given, with a note that
|
|
20
|
+
* scripts are unavailable.
|
|
16
21
|
*
|
|
17
|
-
* -
|
|
18
|
-
* -
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* - agent
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* 旧版本独有的文件留在原处、记进标记的 `stale`,每次加载都在结果里列出「不属于当前版本、忽略它们」。
|
|
22
|
+
* - Every file read from storage is checked against the manifest's sha256; a mismatch is refused.
|
|
23
|
+
* - The copy is recorded in a kernel-controlled marker, one per skill version
|
|
24
|
+
* ({@link skillMarkerPath}: `<skills root>/.capybara/<name>@<digest>.json`, commands cannot change it):
|
|
25
|
+
* `{ digest, files }`. A present marker with the same digest skips the copy.
|
|
26
|
+
* - An agent without any sandbox tool creates no sandbox and copies nothing (the model could not
|
|
27
|
+
* run the scripts), and is told so.
|
|
28
|
+
* - Executable bit: files the provider writes are never executable (0644). The result tells the model
|
|
29
|
+
* to run scripts with an interpreter (`sh` / `python3` / `node`).
|
|
26
30
|
*/
|
|
27
31
|
/**
|
|
28
|
-
*
|
|
32
|
+
* 已复制进沙箱的技能的标记目录(内核控制:技能根目录只有提供方以 root 能写;技能名不以 `.` 开头,不会撞名)。
|
|
33
|
+
* `skillsRoot`: the instance's skills root.
|
|
29
34
|
*/
|
|
30
|
-
export const
|
|
31
|
-
/**
|
|
32
|
-
export const
|
|
35
|
+
export const skillsMarkerDir = (skillsRoot = SKILLS_SANDBOX_ROOT) => `${skillsRoot}/.capybara`;
|
|
36
|
+
/** {@link skillsMarkerDir} of an instance with the default roots. */
|
|
37
|
+
export const SKILLS_MARKER_DIR = skillsMarkerDir();
|
|
38
|
+
/** The marker file of one skill version. */
|
|
39
|
+
export const skillMarkerPath = (name, digest, skillsRoot = SKILLS_SANDBOX_ROOT) => `${skillsMarkerDir(skillsRoot)}/${name}@${digest}.json`;
|
|
33
40
|
const MARKER_MAX_BYTES = 256 * 1024;
|
|
34
41
|
/** 结果里最多列出的文件数(其余只给数量)。 */
|
|
35
42
|
const MAX_LISTED_FILES = 200;
|
|
36
43
|
/** 「不在目录里」的错误里最多列出的技能名。 */
|
|
37
44
|
const MAX_LISTED_NAMES = 50;
|
|
38
45
|
const SPEC = {
|
|
39
|
-
name: "
|
|
46
|
+
name: "Skill",
|
|
40
47
|
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
41
|
-
keyArgs: ["
|
|
48
|
+
keyArgs: ["skill"],
|
|
42
49
|
description: "Load a skill from the skills list: returns the skill's instructions " +
|
|
43
50
|
"(its SKILL.md) and the list of its files. Call it before starting a task that matches a " +
|
|
44
51
|
"skill's description, then follow the returned instructions. If the skill has scripts or other " +
|
|
45
|
-
"files, they are copied read-only to
|
|
46
|
-
"there with an interpreter (sh, python3, node). Call it again when the skills list changes
|
|
47
|
-
"
|
|
52
|
+
"files, they are copied read-only to <name>@<version-id>/ in the skills directory of this device; run scripts " +
|
|
53
|
+
"there with an interpreter (sh, python3, node). Call it again when the skills list changes. Pass args when the task gives the skill arguments (they replace " +
|
|
54
|
+
"$ARGUMENTS and $1, $2… in the instructions). Do not use it for skills that are not in the list.",
|
|
48
55
|
inputSchema: {
|
|
49
56
|
type: "object",
|
|
50
57
|
properties: {
|
|
51
|
-
|
|
58
|
+
skill: {
|
|
52
59
|
type: "string",
|
|
53
60
|
minLength: 1,
|
|
54
61
|
maxLength: 64,
|
|
55
62
|
description: 'The skill name exactly as listed, e.g. "pdf-report".',
|
|
56
63
|
},
|
|
64
|
+
args: {
|
|
65
|
+
type: "string",
|
|
66
|
+
maxLength: SKILL_INVOCATION_LIMITS.argumentsMaxChars,
|
|
67
|
+
description: 'Optional arguments for the skill, e.g. "123 api".',
|
|
68
|
+
},
|
|
57
69
|
},
|
|
58
|
-
required: ["
|
|
70
|
+
required: ["skill"],
|
|
59
71
|
additionalProperties: false,
|
|
60
72
|
},
|
|
61
73
|
annotations: { readOnlyHint: true },
|
|
@@ -66,29 +78,27 @@ const STORAGE_UNAVAILABLE_TEXT = "File storage is temporarily unavailable, so th
|
|
|
66
78
|
const notInCatalog = (name, skills) => {
|
|
67
79
|
const names = skills.slice(0, MAX_LISTED_NAMES).map((s) => s.name);
|
|
68
80
|
const more = skills.length > names.length ? ", …" : "";
|
|
69
|
-
return `Skill "${clip(name, 80)}" is not in the skills catalog for this conversation; call
|
|
81
|
+
return `Skill "${clip(name, 80)}" is not in the skills catalog for this conversation; call Skill with one of the listed names: ${names.join(", ")}${more}.`;
|
|
70
82
|
};
|
|
71
83
|
const removedText = (name) => `Skill "${name}" was removed after the skills list was shown and can no longer be loaded; do the task without it, or ask the user to restore it.`;
|
|
72
84
|
/** Phase D spec §4.4: the line before a forked skill's instructions (model-visible, English). */
|
|
73
|
-
const forkAvailableText = (type) => `This skill is written to run in a sub-agent: call
|
|
85
|
+
const forkAvailableText = (type) => `This skill is written to run in a sub-agent: call Agent with subagent_type "${type}" and a prompt containing these instructions and the details of the task, then use its report; do not follow the instructions yourself.`;
|
|
74
86
|
const FORK_UNAVAILABLE_TEXT = "This skill is written to run in a sub-agent, which is not available here; follow the instructions yourself.";
|
|
75
87
|
const integrityText = (name) => `Skill "${name}" failed an integrity check (its stored files do not match the uploaded package); ask an administrator to upload the skill again.`;
|
|
76
|
-
|
|
77
|
-
/** 解析一个技能的标记文件;坏的按没有处理(重新复制)。 */
|
|
88
|
+
/** Parses a version's marker; a broken one counts as missing (the version is copied again). */
|
|
78
89
|
function parseMarker(data) {
|
|
79
90
|
try {
|
|
80
91
|
const r = JSON.parse(new TextDecoder().decode(data));
|
|
81
92
|
if (r === null || typeof r !== "object" || Array.isArray(r))
|
|
82
93
|
return undefined;
|
|
83
94
|
const e = r;
|
|
84
|
-
if (typeof e.
|
|
95
|
+
if (typeof e.digest !== "string")
|
|
85
96
|
return undefined;
|
|
86
97
|
return {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
stale: strings(e.stale),
|
|
98
|
+
digest: e.digest,
|
|
99
|
+
files: Array.isArray(e.files)
|
|
100
|
+
? e.files.filter((x) => typeof x === "string")
|
|
101
|
+
: [],
|
|
92
102
|
};
|
|
93
103
|
}
|
|
94
104
|
catch {
|
|
@@ -150,34 +160,25 @@ async function readVerified(store, key, file, skill, signal) {
|
|
|
150
160
|
}
|
|
151
161
|
}
|
|
152
162
|
/**
|
|
153
|
-
*
|
|
154
|
-
*
|
|
163
|
+
* Copies the skill version whole to `<skills root>/<name>@<digest>/` (skipped when its marker matches).
|
|
164
|
+
* Every file is checked against the manifest before it is written; the marker is written last, so
|
|
165
|
+
* a failure midway means the next call starts over.
|
|
155
166
|
*/
|
|
156
167
|
async function copySkill(s, v) {
|
|
157
|
-
const { name
|
|
158
|
-
const markerPath = skillMarkerPath(name);
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
cur = parseMarker(m.data);
|
|
164
|
-
}
|
|
165
|
-
if (cur && cur.id === id && cur.version === version && cur.prefix === v.prefix) {
|
|
166
|
-
return { stale: cur.stale };
|
|
167
|
-
}
|
|
168
|
+
const { name } = v.entry;
|
|
169
|
+
const markerPath = skillMarkerPath(name, v.digest, s.roots.skills);
|
|
170
|
+
const m = await s.p.readFile(s.h, markerPath, { maxBytes: MARKER_MAX_BYTES, signal: s.signal });
|
|
171
|
+
const cur = m && !m.truncated ? parseMarker(m.data) : undefined;
|
|
172
|
+
if (cur?.digest === v.digest)
|
|
173
|
+
return;
|
|
168
174
|
for (const f of v.manifest.files) {
|
|
169
175
|
const data = f.path === SKILL_ENTRY_FILE
|
|
170
176
|
? v.entryBytes
|
|
171
|
-
: await readVerified(v.store, `${v.
|
|
172
|
-
await s.p.writeFile(s.h, skillSandboxPath(name, f.path), data, s.signal);
|
|
177
|
+
: await readVerified(v.store, `${v.keyPrefix}${f.path}`, f, name, s.signal);
|
|
178
|
+
await s.p.writeFile(s.h, skillSandboxPath(name, v.digest, f.path, s.roots.skills), data, s.signal);
|
|
173
179
|
}
|
|
174
|
-
const
|
|
175
|
-
const now = new Set(files);
|
|
176
|
-
const stale = cur ? [...new Set([...cur.stale, ...cur.files])].filter((p) => !now.has(p)) : [];
|
|
177
|
-
stale.sort();
|
|
178
|
-
const entry = { id, version, prefix: v.prefix, files, stale };
|
|
180
|
+
const entry = { digest: v.digest, files: v.manifest.files.map((f) => f.path) };
|
|
179
181
|
await s.p.writeFile(s.h, markerPath, new TextEncoder().encode(JSON.stringify(entry)), s.signal);
|
|
180
|
-
return { stale };
|
|
181
182
|
}
|
|
182
183
|
/** 本步可用的工具里是否有沙箱工具(没有时模型用不了复制进去的文件)。 */
|
|
183
184
|
const hasSandboxTools = (ctx) => (ctx.tools ?? []).some((t) => t.source.kind === "builtin" &&
|
|
@@ -194,8 +195,15 @@ function fileList(files) {
|
|
|
194
195
|
* 批准时草稿前缀原样成为版本前缀,版本号变了也能找到),再找本对话发起、仍待批准、前缀相同的技能改动(试用草稿:
|
|
195
196
|
* 没有 `skill_versions` 行,新技能连 `skills` 行都没有)。绝不按版本号解析——被拒绝的草稿与之后别人批准的同号版本
|
|
196
197
|
* 内容不同。都没有 → undefined(已移除)。
|
|
198
|
+
*
|
|
199
|
+
* Phase 2 (ruling D2): a `platform:<prefix>` source is a platform skill version: found by its
|
|
200
|
+
* prefix for the platform skill with the entry's id, or the platform skill an org copy with that id
|
|
201
|
+
* links to (ruling B2), while neither is deleted. The returned `object_prefix` keeps the
|
|
202
|
+
* `platform:` form; `skillFileStore` picks the store for it.
|
|
197
203
|
*/
|
|
198
204
|
export async function findSkillVersion(db, ctx, entry) {
|
|
205
|
+
if (entry.source.startsWith(PLATFORM_SOURCE))
|
|
206
|
+
return findPlatformVersion(db, ctx.orgId, entry);
|
|
199
207
|
const row = await db
|
|
200
208
|
.selectFrom("skills")
|
|
201
209
|
.innerJoin("skill_versions", "skill_versions.skill_id", "skills.id")
|
|
@@ -212,6 +220,7 @@ export async function findSkillVersion(db, ctx, entry) {
|
|
|
212
220
|
.where("org_id", "=", ctx.orgId)
|
|
213
221
|
.where("requested_in_conversation", "=", ctx.conversationId)
|
|
214
222
|
.where("status", "=", "pending")
|
|
223
|
+
.where("kind", "=", "version")
|
|
215
224
|
.where("object_prefix", "=", entry.source)
|
|
216
225
|
.where(sql `proposed_version ->> 'skillId'`, "=", entry.id)
|
|
217
226
|
.executeTakeFirst();
|
|
@@ -219,6 +228,29 @@ export async function findSkillVersion(db, ctx, entry) {
|
|
|
219
228
|
return undefined;
|
|
220
229
|
return { manifest: draft.proposed_version.manifest, object_prefix: draft.object_prefix };
|
|
221
230
|
}
|
|
231
|
+
/** {@link findSkillVersion} for a `platform:<prefix>` source. */
|
|
232
|
+
async function findPlatformVersion(db, orgId, entry) {
|
|
233
|
+
const row = await db
|
|
234
|
+
.selectFrom("platform_skill_versions as v")
|
|
235
|
+
.innerJoin("platform_skills as p", "p.id", "v.skill_id")
|
|
236
|
+
.select(["v.manifest"])
|
|
237
|
+
.where("v.object_prefix", "=", entry.source.slice(PLATFORM_SOURCE.length))
|
|
238
|
+
.where("p.deleted_at", "is", null)
|
|
239
|
+
// a platform skill disabled on the deployment is not loaded, even from an older snapshot
|
|
240
|
+
.where("p.disabled", "=", false)
|
|
241
|
+
.where((eb) => eb.or([
|
|
242
|
+
eb("p.id", "=", entry.id),
|
|
243
|
+
eb("p.id", "in", eb
|
|
244
|
+
.selectFrom("skills")
|
|
245
|
+
.select("platform_skill_id")
|
|
246
|
+
.where("id", "=", entry.id)
|
|
247
|
+
.where("org_id", "=", orgId)
|
|
248
|
+
.where("deleted_at", "is", null)
|
|
249
|
+
.where("platform_skill_id", "is not", null)),
|
|
250
|
+
]))
|
|
251
|
+
.executeTakeFirst();
|
|
252
|
+
return row && { manifest: row.manifest, object_prefix: entry.source };
|
|
253
|
+
}
|
|
222
254
|
/** A Claude Code style qualified name `<plugin>:<skill>` (phase B, spec §9.3). */
|
|
223
255
|
const QUALIFIED_NAME_RE = /^([a-z0-9][a-z0-9-]{0,63}):(.+)$/;
|
|
224
256
|
/**
|
|
@@ -333,11 +365,11 @@ async function invokedEntry(db, ctx, name) {
|
|
|
333
365
|
};
|
|
334
366
|
}
|
|
335
367
|
/**
|
|
336
|
-
* The line before a forked skill's instructions (spec §4.4): run it through `
|
|
368
|
+
* The line before a forked skill's instructions (spec §4.4): run it through `Agent` when this step
|
|
337
369
|
* offers the tool and the skill's type is in the agent's roster, else follow it yourself.
|
|
338
370
|
*/
|
|
339
371
|
async function forkLine(db, ctx, fork, plugin) {
|
|
340
|
-
const hasAgent = (ctx.tools ?? []).some((t) => t.source.kind === "builtin" && t.source.name ===
|
|
372
|
+
const hasAgent = (ctx.tools ?? []).some((t) => t.source.kind === "builtin" && t.source.name === AGENT_TOOL);
|
|
341
373
|
if (!hasAgent)
|
|
342
374
|
return FORK_UNAVAILABLE_TEXT;
|
|
343
375
|
const agent = await runAgent(db, ctx);
|
|
@@ -346,7 +378,7 @@ async function forkLine(db, ctx, fork, plugin) {
|
|
|
346
378
|
const type = await resolveSkillForkType(db, ctx.orgId, agent.definition, fork.agent, plugin);
|
|
347
379
|
return type.inRoster ? forkAvailableText(type.agentType) : FORK_UNAVAILABLE_TEXT;
|
|
348
380
|
}
|
|
349
|
-
/** 内置工具 `
|
|
381
|
+
/** 内置工具 `Skill`(见文件头)。 */
|
|
350
382
|
export function skillLoadTool(deps) {
|
|
351
383
|
return {
|
|
352
384
|
spec: SPEC,
|
|
@@ -354,7 +386,7 @@ export function skillLoadTool(deps) {
|
|
|
354
386
|
// 可能要创建 / 恢复沙箱并复制文件:与沙箱工具同一时限
|
|
355
387
|
timeoutMs: () => sandboxBaseTimeoutMs(deps.config.get()),
|
|
356
388
|
async run(input, ctx) {
|
|
357
|
-
const asked = input
|
|
389
|
+
const { skill: asked, args } = input;
|
|
358
390
|
const snap = await deps.eventLog.latestOfType(ctx.conversationId, "skills_catalog");
|
|
359
391
|
const skills = snap?.payload.skills ?? [];
|
|
360
392
|
let entry = findEntry(skills, asked);
|
|
@@ -379,13 +411,23 @@ export function skillLoadTool(deps) {
|
|
|
379
411
|
if (!row)
|
|
380
412
|
throw new ToolError(removedText(name));
|
|
381
413
|
const manifest = row.manifest;
|
|
382
|
-
|
|
414
|
+
// the marker records the source (`platform:` included); keys use the store's own prefix
|
|
383
415
|
const prefix = row.object_prefix;
|
|
416
|
+
const { store, prefix: keyPrefix } = skillFileStore(deps.storage, ctx.orgId, prefix);
|
|
384
417
|
const md = manifest.files.find((f) => f.path === SKILL_ENTRY_FILE);
|
|
385
418
|
if (!md)
|
|
386
419
|
throw new ToolError(integrityText(name));
|
|
387
|
-
const mdBytes = await readVerified(store, `${
|
|
388
|
-
const
|
|
420
|
+
const mdBytes = await readVerified(store, `${keyPrefix}${md.path}`, md, name, ctx.signal);
|
|
421
|
+
const digest = skillDigest(manifest.files);
|
|
422
|
+
const v = {
|
|
423
|
+
entry,
|
|
424
|
+
manifest,
|
|
425
|
+
digest,
|
|
426
|
+
prefix,
|
|
427
|
+
keyPrefix,
|
|
428
|
+
store,
|
|
429
|
+
entryBytes: mdBytes,
|
|
430
|
+
};
|
|
389
431
|
let parsed;
|
|
390
432
|
try {
|
|
391
433
|
parsed = parseSkillMd(new TextDecoder("utf-8", { fatal: true }).decode(mdBytes), {
|
|
@@ -397,14 +439,15 @@ export function skillLoadTool(deps) {
|
|
|
397
439
|
}
|
|
398
440
|
if ("errors" in parsed)
|
|
399
441
|
throw new ToolError(integrityText(name));
|
|
400
|
-
|
|
442
|
+
// the skills root of the instance the files were copied to (the default without a copy)
|
|
443
|
+
let skillsRoot = SKILLS_SANDBOX_ROOT;
|
|
401
444
|
const others = manifest.files.filter((f) => f.path !== SKILL_ENTRY_FILE);
|
|
402
445
|
let notices = [];
|
|
403
446
|
let filesText;
|
|
404
447
|
if (others.length === 0) {
|
|
405
448
|
filesText = "This skill has no files besides its instructions.";
|
|
406
449
|
}
|
|
407
|
-
else if (!deps.
|
|
450
|
+
else if (!(await sandboxUsable(deps, ctx.orgId, sandboxConversationOf(ctx)))) {
|
|
408
451
|
filesText =
|
|
409
452
|
`Skill files (for reference):\n${fileList(manifest.files)}\n` +
|
|
410
453
|
"This deployment has no sandbox, so the skill's scripts and other files are not available; " +
|
|
@@ -419,23 +462,32 @@ export function skillLoadTool(deps) {
|
|
|
419
462
|
}
|
|
420
463
|
else {
|
|
421
464
|
// the skill's marker is read, compared and written: one holder at a time per skill
|
|
422
|
-
const r = await inSandbox(deps, ctx, (s) => withPathLease(deps,
|
|
465
|
+
const r = await inSandbox(deps, ctx, (s) => withPathLease(deps, s, skillMarkerPath(name, digest, s.roots.skills), s.signal, (signal) => copySkill({ ...s, signal }, v).then(() => s.roots)));
|
|
423
466
|
notices = r.notices;
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
: "";
|
|
467
|
+
skillsRoot = r.value.skills;
|
|
468
|
+
const dir = `${skillSandboxDir(name, digest, skillsRoot)}/`;
|
|
427
469
|
filesText =
|
|
428
470
|
`Skill files (copied to ${dir} in the sandbox, read-only):\n${fileList(manifest.files)}\n` +
|
|
429
471
|
`Run scripts with an interpreter, e.g. \`sh ${dir}<script>.sh\`, \`python3 ${dir}<script>.py\` ` +
|
|
430
472
|
"or `node`; the files are not executable, so `./script` does not work. Write outputs under " +
|
|
431
|
-
|
|
473
|
+
`${r.value.workspace}, not ${skillsRoot}.`;
|
|
474
|
+
}
|
|
475
|
+
const invocation = invocationOf(manifest);
|
|
476
|
+
const fork = invocation.fork;
|
|
477
|
+
let instructions;
|
|
478
|
+
try {
|
|
479
|
+
instructions = renderSkillBody(parsed.body.trim(), invocation, args ?? "", name, digest, skillsRoot);
|
|
480
|
+
}
|
|
481
|
+
catch (e) {
|
|
482
|
+
if (!(e instanceof RangeError))
|
|
483
|
+
throw e;
|
|
484
|
+
throw new ToolError(`Skill "${name}" cannot be rendered: ${e.message}; check the args against the skill's placeholders and retry with shorter args.`);
|
|
432
485
|
}
|
|
433
|
-
const fork = invocationOf(manifest).fork;
|
|
434
486
|
const text = [
|
|
435
487
|
...(fork ? [await forkLine(deps.db, ctx, fork, entry.plugin)] : []),
|
|
436
488
|
`Loaded skill "${name}" (version ${entry.version}).`,
|
|
437
489
|
filesText,
|
|
438
|
-
`<skill name="${name}" version="${entry.version}">\n${
|
|
490
|
+
`<skill name="${name}" version="${entry.version}">\n${instructions}\n</skill>`,
|
|
439
491
|
].join("\n\n");
|
|
440
492
|
return {
|
|
441
493
|
content: [{ type: "text", text: withNotices(notices, text) }],
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare const TOOL_SEARCH = "tool_search";
|
|
1
|
+
import { type ToolSpec } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import type { BuiltinTool, ResolvedTool } from "../registry.js";
|
|
3
|
+
export { TOOL_SEARCH } from "../builtin-names.js";
|
|
5
4
|
export declare const TOOL_SEARCH_SPEC: ToolSpec;
|
|
6
5
|
/** 目录(system 第二个块)的开头说明(模型可见,英文)。 */
|
|
7
6
|
export declare const CATALOG_HEADER: string;
|
|
8
7
|
/** 调用目录里尚未加载的工具(模型可见,英文;spec 5.5:不自动加载)。 */
|
|
9
8
|
export declare const notLoadedText: (key: string) => string;
|
|
10
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* 始终完整加载、不进目录的工具(内置工具)。A release-candidate builtin key counts too: a request
|
|
11
|
+
* recorded before the tool rename is rebuilt with its old keys, and its builtins were loaded.
|
|
12
|
+
*/
|
|
11
13
|
export declare const isAlwaysLoaded: (key: string) => boolean;
|
|
12
14
|
type CatalogTool = Pick<ResolvedTool, "key" | "spec">;
|
|
13
15
|
/** 分词:切开驼峰,按非字母数字切分,转小写。 */
|
|
@@ -20,12 +22,14 @@ export declare function tokenize(text: string): string[];
|
|
|
20
22
|
export declare function searchTools<T extends CatalogTool>(query: string, tools: readonly T[], limit: number): T[];
|
|
21
23
|
/** 目录行:`- <key>: <描述的第一行>`(超长截断)。 */
|
|
22
24
|
export declare function catalogLine(t: CatalogTool): string;
|
|
23
|
-
/** 目录全文:开头说明 + 按 key 排序的目录行。只依赖工具集合,与加载状态无关(缓存前缀稳定)。 */
|
|
24
|
-
export declare function catalogText(tools: readonly CatalogTool[]): string;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* 目录全文:开头说明 + 按 key 排序的目录行。只依赖工具集合,与加载状态无关(缓存前缀稳定)。
|
|
27
|
+
* `header`: a request recorded before the tool rename passes the frozen legacy header.
|
|
28
|
+
*/
|
|
29
|
+
export declare function catalogText(tools: readonly CatalogTool[], header?: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* 内置工具 `ToolSearch`(spec 5.5):在本次运行可用、但未直接加载的工具中按关键词搜索,返回完整定义,
|
|
27
32
|
* 并在结果里带 `loadedTools`(管线写进 `tool_result.loadedTools`;已加载集合只由日志还原)。
|
|
28
33
|
* 搜索范围来自管线传入的 `ctx.tools`(本步解析出的工具);内置工具始终加载,不参与搜索。
|
|
29
34
|
*/
|
|
30
35
|
export declare function toolSearchTool(): BuiltinTool;
|
|
31
|
-
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { parseToolKey } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { BUILTIN_TOOL_NAMES, TOOL_SEARCH } from "../builtin-names.js";
|
|
3
|
+
import { isLegacyBuiltinKey } from "../legacy-keys.js";
|
|
4
|
+
export { TOOL_SEARCH } from "../builtin-names.js";
|
|
4
5
|
/** 默认返回的匹配数。 */
|
|
5
6
|
const DEFAULT_LIMIT = 5;
|
|
6
7
|
/** 单次最多返回的匹配数。 */
|
|
@@ -27,7 +28,7 @@ export const TOOL_SEARCH_SPEC = {
|
|
|
27
28
|
maxLength: 500,
|
|
28
29
|
description: "Keywords describing the tool you need, e.g. 'create calendar event'.",
|
|
29
30
|
},
|
|
30
|
-
|
|
31
|
+
max_results: {
|
|
31
32
|
type: "integer",
|
|
32
33
|
minimum: 1,
|
|
33
34
|
maximum: MAX_LIMIT,
|
|
@@ -40,16 +41,23 @@ export const TOOL_SEARCH_SPEC = {
|
|
|
40
41
|
annotations: { readOnlyHint: true },
|
|
41
42
|
};
|
|
42
43
|
/** 目录(system 第二个块)的开头说明(模型可见,英文)。 */
|
|
43
|
-
export const CATALOG_HEADER = "More tools are available but not loaded. To use one, first call
|
|
44
|
+
export const CATALOG_HEADER = "More tools are available but not loaded. To use one, first call ToolSearch with keywords; " +
|
|
44
45
|
"it returns the full definitions and loads the matching tools for your next step. " +
|
|
45
46
|
"Calling a tool that is not loaded returns an error. Tool catalog:";
|
|
46
47
|
/** 调用目录里尚未加载的工具(模型可见,英文;spec 5.5:不自动加载)。 */
|
|
47
|
-
export const notLoadedText = (key) => `Tool "${key}" is not loaded. Call
|
|
48
|
-
/**
|
|
49
|
-
|
|
48
|
+
export const notLoadedText = (key) => `Tool "${key}" is not loaded. Call ToolSearch first with keywords for this tool, then call it in a later step.`;
|
|
49
|
+
/**
|
|
50
|
+
* 始终完整加载、不进目录的工具(内置工具)。A release-candidate builtin key counts too: a request
|
|
51
|
+
* recorded before the tool rename is rebuilt with its old keys, and its builtins were loaded.
|
|
52
|
+
*/
|
|
53
|
+
export const isAlwaysLoaded = (key) => BUILTIN_TOOL_NAMES.includes(key) || isLegacyBuiltinKey(key);
|
|
50
54
|
/** 分词:切开驼峰,按非字母数字切分,转小写。 */
|
|
51
55
|
export function tokenize(text) {
|
|
56
|
+
const parsed = parseToolKey(text);
|
|
57
|
+
// The family token (`mcp`, `plugin`) is the same on every connector or extension key: drop it.
|
|
58
|
+
const family = parsed && parsed.kind !== "builtin" ? text.indexOf("__") + 2 : 0;
|
|
52
59
|
return text
|
|
60
|
+
.slice(family)
|
|
53
61
|
.replace(/([\p{Ll}\p{N}])(\p{Lu})/gu, "$1 $2")
|
|
54
62
|
.toLowerCase()
|
|
55
63
|
.split(/[^\p{L}\p{N}]+/u)
|
|
@@ -106,12 +114,15 @@ export function catalogLine(t) {
|
|
|
106
114
|
: first;
|
|
107
115
|
return `- ${t.key}: ${desc}`;
|
|
108
116
|
}
|
|
109
|
-
/**
|
|
110
|
-
|
|
117
|
+
/**
|
|
118
|
+
* 目录全文:开头说明 + 按 key 排序的目录行。只依赖工具集合,与加载状态无关(缓存前缀稳定)。
|
|
119
|
+
* `header`: a request recorded before the tool rename passes the frozen legacy header.
|
|
120
|
+
*/
|
|
121
|
+
export function catalogText(tools, header = CATALOG_HEADER) {
|
|
111
122
|
const sorted = [...tools].sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0));
|
|
112
|
-
return [
|
|
123
|
+
return [header, ...sorted.map(catalogLine)].join("\n");
|
|
113
124
|
}
|
|
114
|
-
/**
|
|
125
|
+
/** 一个工具的完整定义文本(`ToolSearch` 的结果)。 */
|
|
115
126
|
function definitionText(t) {
|
|
116
127
|
return [
|
|
117
128
|
`Tool: ${t.key}`,
|
|
@@ -128,7 +139,7 @@ function displayQuery(query) {
|
|
|
128
139
|
return cps.length > DISPLAY_QUERY_MAX ? `${cps.slice(0, DISPLAY_QUERY_MAX - 1).join("")}…` : one;
|
|
129
140
|
}
|
|
130
141
|
/**
|
|
131
|
-
* 内置工具 `
|
|
142
|
+
* 内置工具 `ToolSearch`(spec 5.5):在本次运行可用、但未直接加载的工具中按关键词搜索,返回完整定义,
|
|
132
143
|
* 并在结果里带 `loadedTools`(管线写进 `tool_result.loadedTools`;已加载集合只由日志还原)。
|
|
133
144
|
* 搜索范围来自管线传入的 `ctx.tools`(本步解析出的工具);内置工具始终加载,不参与搜索。
|
|
134
145
|
*/
|
|
@@ -137,7 +148,7 @@ export function toolSearchTool() {
|
|
|
137
148
|
spec: TOOL_SEARCH_SPEC,
|
|
138
149
|
defaultPolicy: "allow",
|
|
139
150
|
async run(input, ctx) {
|
|
140
|
-
const { query, limit = DEFAULT_LIMIT } = input;
|
|
151
|
+
const { query, max_results: limit = DEFAULT_LIMIT } = input;
|
|
141
152
|
const catalog = (ctx.tools ?? []).filter((t) => !isAlwaysLoaded(t.key));
|
|
142
153
|
const found = searchTools(query, catalog, limit);
|
|
143
154
|
const q = displayQuery(query);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Which web tool is calling its provider (it names the provider in some texts). */
|
|
2
|
+
export type WebToolKind = "search" | "fetch";
|
|
3
|
+
/**
|
|
4
|
+
* Rethrows a web provider's failure for the tool pipeline: a `WebProviderError` becomes a
|
|
5
|
+
* `ToolError` with its kind's fixed text; anything else is rethrown unchanged (the pipeline's
|
|
6
|
+
* generic failure, which names only the error class, never the provider's message).
|
|
7
|
+
*/
|
|
8
|
+
export declare function webToolError(e: unknown, tool: WebToolKind): never;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ToolError, WebProviderError } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
const KINDS = new Set([
|
|
3
|
+
"not_found",
|
|
4
|
+
"blocked",
|
|
5
|
+
"auth",
|
|
6
|
+
"rate_limited",
|
|
7
|
+
"unavailable",
|
|
8
|
+
"invalid",
|
|
9
|
+
]);
|
|
10
|
+
/**
|
|
11
|
+
* The kind of a provider's `WebProviderError`, or undefined for any other error. Matched by name
|
|
12
|
+
* as well as by class, so an extension bundled with its own copy of the class still maps.
|
|
13
|
+
*/
|
|
14
|
+
function providerErrorKind(e) {
|
|
15
|
+
if (!(e instanceof Error))
|
|
16
|
+
return undefined;
|
|
17
|
+
if (!(e instanceof WebProviderError) && e.name !== "WebProviderError")
|
|
18
|
+
return undefined;
|
|
19
|
+
const kind = e.kind;
|
|
20
|
+
return typeof kind === "string" && KINDS.has(kind) ? kind : undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The fixed model-visible text of a provider error kind (web tools spec §4.2): providers never
|
|
24
|
+
* write model-visible text.
|
|
25
|
+
*/
|
|
26
|
+
function providerErrorText(kind, tool) {
|
|
27
|
+
const provider = tool === "search" ? "web search" : "web fetch";
|
|
28
|
+
switch (kind) {
|
|
29
|
+
case "auth":
|
|
30
|
+
return `The ${provider} provider rejected its credentials; ask an org admin to check the provider's configuration.`;
|
|
31
|
+
case "rate_limited":
|
|
32
|
+
return `The ${provider} provider is rate limiting this org; retry in a minute or continue without it.`;
|
|
33
|
+
case "not_found":
|
|
34
|
+
return "No results or page found; check the query or URL and retry.";
|
|
35
|
+
case "blocked":
|
|
36
|
+
return "The site refused the provider; use another source.";
|
|
37
|
+
case "unavailable":
|
|
38
|
+
return "The web provider is unavailable right now; retry later or continue without it.";
|
|
39
|
+
case "invalid":
|
|
40
|
+
return "The provider rejected the request; check the query or URL and retry.";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Rethrows a web provider's failure for the tool pipeline: a `WebProviderError` becomes a
|
|
45
|
+
* `ToolError` with its kind's fixed text; anything else is rethrown unchanged (the pipeline's
|
|
46
|
+
* generic failure, which names only the error class, never the provider's message).
|
|
47
|
+
*/
|
|
48
|
+
export function webToolError(e, tool) {
|
|
49
|
+
const kind = providerErrorKind(e);
|
|
50
|
+
if (kind === undefined)
|
|
51
|
+
throw e;
|
|
52
|
+
throw new ToolError(providerErrorText(kind, tool));
|
|
53
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type Logger, type WebFetchPage } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import type { EventLog } from "../../../conversations/event-log.js";
|
|
3
|
+
import type { KernelConfigService } from "../../../infra/config/kernel-config.service.js";
|
|
4
|
+
import { type ModelPurposesService } from "../../../models/purposes.js";
|
|
5
|
+
import { type HookRunner } from "../../../runtime/hook-calls.js";
|
|
6
|
+
import type { StepLog } from "../../../runtime/step-log.js";
|
|
7
|
+
import type { UsageReporter } from "../../../runtime/usage-report.js";
|
|
8
|
+
import type { BuiltinCallContext } from "../../registry.js";
|
|
9
|
+
/**
|
|
10
|
+
* The `WebFetch` extraction call (web tools spec §5): the fetched page and the model's prompt go to
|
|
11
|
+
* the `web_fetch` model purpose (unmapped → the calling conversation's current chat model, a
|
|
12
|
+
* sub-agent's call: the sub-agent's), and only its answer comes back. One call, no tools, output
|
|
13
|
+
* capped at `web.fetch.maxAnswerTokens`. The page sits between a random per-call tag the system
|
|
14
|
+
* prompt names, so page text cannot close it or fake the prompt; it is cut to fit the purpose
|
|
15
|
+
* model's context window ({@link fitPage}). It fires `model.request` (a policy denial is the tool error
|
|
16
|
+
* {@link WEB_FETCH_DENIED_TEXT}, logged as any hook denial) and `model.response` like the title
|
|
17
|
+
* call; its tokens are a `usage` event with `purpose: "web_fetch"` and the call id, reported, and
|
|
18
|
+
* counted on the parent run of a sub-agent. The page itself is never stored and never returned:
|
|
19
|
+
* a failure is the tool error {@link WEB_FETCH_EXTRACT_FAILED_TEXT}. The call is not model-visible
|
|
20
|
+
* to the agent (its result is the recorded `tool_result`), so replays never make it.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* The fixed start of the extraction call's system prompt (model-facing, English; a core constant).
|
|
24
|
+
* The prompt sent is {@link webFetchSystemPrompt}, which adds the call's page tag.
|
|
25
|
+
*/
|
|
26
|
+
export declare const WEB_FETCH_SYSTEM_PROMPT: string;
|
|
27
|
+
/** The system prompt of one extraction call: {@link WEB_FETCH_SYSTEM_PROMPT} naming its page tag. */
|
|
28
|
+
export declare function webFetchSystemPrompt(tag: string): string;
|
|
29
|
+
/** The tool error when the extraction call fails (the page is never returned instead). */
|
|
30
|
+
export declare const WEB_FETCH_EXTRACT_FAILED_TEXT = "Could not extract an answer from the page; retry, or try another URL.";
|
|
31
|
+
/** The tool error when a `model.request` policy hook denies the extraction call. */
|
|
32
|
+
export declare const WEB_FETCH_DENIED_TEXT = "An org policy blocked reading this page; continue without it or ask the user.";
|
|
33
|
+
/** What {@link extractAnswer} needs. */
|
|
34
|
+
export interface WebFetchExtractDeps {
|
|
35
|
+
purposes: Pick<ModelPurposesService, "chat" | "chatLimits">;
|
|
36
|
+
eventLog: Pick<EventLog, "append" | "notify" | "latestOfType">;
|
|
37
|
+
stepLog: Pick<StepLog, "appendCounted" | "appendAudited">;
|
|
38
|
+
config: Pick<KernelConfigService, "get">;
|
|
39
|
+
log: Pick<Logger, "warn">;
|
|
40
|
+
/** Extension hooks (absent: none fire). */
|
|
41
|
+
hooks?: HookRunner | undefined;
|
|
42
|
+
usageReport?: Pick<UsageReporter, "enqueue"> | undefined;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The user message of the extraction call: the URL, then the page (title, markdown) between
|
|
46
|
+
* `<tag>` and `</tag>`, then the prompt.
|
|
47
|
+
*/
|
|
48
|
+
export declare function extractionMessage(page: WebFetchPage, prompt: string, tag: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* The page cut so the extraction request fits the purpose model's context (web tools spec §4.2):
|
|
51
|
+
* system prompt + message + answer cap + headroom within `contextWindow`, by the kernel's
|
|
52
|
+
* `estimateTokens`. A cut page ends with {@link TRUNCATED_MARKER}; one that fits is unchanged.
|
|
53
|
+
*/
|
|
54
|
+
export declare function fitPage(page: WebFetchPage, prompt: string, tag: string, system: string, limits: {
|
|
55
|
+
contextWindow: number;
|
|
56
|
+
answerTokens: number;
|
|
57
|
+
}): WebFetchPage;
|
|
58
|
+
/**
|
|
59
|
+
* Answers `prompt` from `page` with one call on the `web_fetch` purpose (see the module comment).
|
|
60
|
+
* Returns the answer text; throws a {@link ToolError} on a denial or a failure.
|
|
61
|
+
*/
|
|
62
|
+
export declare function extractAnswer(deps: WebFetchExtractDeps, ctx: BuiltinCallContext, page: WebFetchPage, prompt: string): Promise<string>;
|