@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,40 +1,42 @@
|
|
|
1
1
|
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import { lineDiff, viewPath } from "../../view.js";
|
|
3
|
-
import { checkWritable, clip, display, inSandbox, looksBinary, sandboxBaseTimeoutMs, unavailableWhenNoSandbox, withNotices, withPathLease, } from "./common.js";
|
|
4
|
-
|
|
3
|
+
import { checkPathShape, checkWritable, clip, display, inSandbox, looksBinary, sandboxBaseTimeoutMs, unavailableWhenNoSandbox, withNotices, withPathLease, } from "./common.js";
|
|
4
|
+
import { assertReadAndUnchanged, fileStateOf, normalizeSandboxPath, recordedFile, } from "./file-state.js";
|
|
5
|
+
import { READ_MAX_BYTES } from "./read.js";
|
|
6
|
+
/** 可编辑的最大文件(字节):更大的用 Bash 处理。 */
|
|
5
7
|
const EDIT_MAX_BYTES = 10 * 1024 * 1024;
|
|
6
8
|
const SPEC = {
|
|
7
|
-
name: "
|
|
9
|
+
name: "Edit",
|
|
8
10
|
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
9
|
-
keyArgs: ["
|
|
10
|
-
description: "Edit a text file in this conversation's sandbox by replacing exact text.
|
|
11
|
-
"the file exactly (including whitespace and indentation) and, unless
|
|
12
|
-
"exactly once; include enough surrounding lines to make it unique. Read the file
|
|
13
|
-
"
|
|
11
|
+
keyArgs: ["file_path"],
|
|
12
|
+
description: "Edit a text file in this conversation's sandbox by replacing exact text. old_string must match " +
|
|
13
|
+
"the file exactly (including whitespace and indentation) and, unless replace_all is true, occur " +
|
|
14
|
+
"exactly once; include enough surrounding lines to make it unique. Read the file first; " +
|
|
15
|
+
"editing a file you have not read, or one changed since you read it, fails. Use Write to create a file or replace all of it.",
|
|
14
16
|
inputSchema: {
|
|
15
17
|
type: "object",
|
|
16
18
|
properties: {
|
|
17
|
-
|
|
19
|
+
file_path: {
|
|
18
20
|
type: "string",
|
|
19
21
|
minLength: 1,
|
|
20
|
-
description:
|
|
22
|
+
description: "Absolute path of the file, e.g. src/app.py in the workspace directory.",
|
|
21
23
|
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
old_string: { type: "string", minLength: 1, description: "The exact text to replace." },
|
|
25
|
+
new_string: { type: "string", description: "The replacement text." },
|
|
26
|
+
replace_all: {
|
|
25
27
|
type: "boolean",
|
|
26
|
-
description: "Replace every occurrence of
|
|
28
|
+
description: "Replace every occurrence of old_string instead of exactly one. Default false.",
|
|
27
29
|
},
|
|
28
30
|
},
|
|
29
|
-
required: ["
|
|
31
|
+
required: ["file_path", "old_string", "new_string"],
|
|
30
32
|
additionalProperties: false,
|
|
31
33
|
},
|
|
32
34
|
};
|
|
33
|
-
const notFound = (path) => `File not found: ${clip(path, 200)}. Check the path with
|
|
34
|
-
const notText = (path) => `${clip(path, 200)} is a directory, a binary file or larger than ${EDIT_MAX_BYTES} bytes; use
|
|
35
|
-
const SAME_TEXT = "
|
|
36
|
-
const noMatch = (path) => `
|
|
37
|
-
const ambiguous = (n) => `
|
|
35
|
+
const notFound = (path) => `File not found: ${clip(path, 200)}. Check the path with Glob, or use Write to create it.`;
|
|
36
|
+
const notText = (path) => `${clip(path, 200)} is a directory, a binary file or larger than ${EDIT_MAX_BYTES} bytes; use Bash to change it.`;
|
|
37
|
+
const SAME_TEXT = "old_string and new_string are the same; pass the text you want to change and its replacement.";
|
|
38
|
+
const noMatch = (path) => `old_string was not found in ${clip(path, 200)}; call Read and pass the exact text, including whitespace.`;
|
|
39
|
+
const ambiguous = (n) => `old_string occurs ${n} times; pass more surrounding text to make it unique, or pass replace_all: true.`;
|
|
38
40
|
/** 出现次数(不重叠)。 */
|
|
39
41
|
function occurrences(text, sub) {
|
|
40
42
|
let n = 0;
|
|
@@ -42,7 +44,7 @@ function occurrences(text, sub) {
|
|
|
42
44
|
n++;
|
|
43
45
|
return n;
|
|
44
46
|
}
|
|
45
|
-
/** 内置工具 `
|
|
47
|
+
/** 内置工具 `Edit`:按精确文本替换。 */
|
|
46
48
|
export function sandboxEditTool(deps) {
|
|
47
49
|
return {
|
|
48
50
|
spec: SPEC,
|
|
@@ -50,36 +52,47 @@ export function sandboxEditTool(deps) {
|
|
|
50
52
|
unavailable: unavailableWhenNoSandbox(deps),
|
|
51
53
|
timeoutMs: () => sandboxBaseTimeoutMs(deps.config.get()),
|
|
52
54
|
async run(input, ctx) {
|
|
53
|
-
const {
|
|
54
|
-
|
|
55
|
-
if (oldText === newText)
|
|
55
|
+
const { old_string, new_string, replace_all = false } = input;
|
|
56
|
+
if (old_string === new_string)
|
|
56
57
|
throw new ToolError(SAME_TEXT);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
58
|
+
checkPathShape(input.file_path, "file_path");
|
|
59
|
+
let path = "";
|
|
60
|
+
const { value: edit, notices } = await inSandbox(deps, ctx, ({ deviceId, h, roots, p, signal }) => {
|
|
61
|
+
path = checkWritable(input.file_path, roots);
|
|
62
|
+
// read, replace, write: one holder at a time per file
|
|
63
|
+
return withPathLease(deps, { deviceId }, path, signal, async (signal) => {
|
|
64
|
+
const st = await p.stat(h, path, signal);
|
|
65
|
+
if (st === null)
|
|
66
|
+
throw new ToolError(notFound(path));
|
|
67
|
+
if (st.isDir)
|
|
68
|
+
throw new ToolError(notText(path));
|
|
69
|
+
const got = await p.readFile(h, path, { maxBytes: EDIT_MAX_BYTES, signal });
|
|
70
|
+
if (got === null)
|
|
71
|
+
throw new ToolError(notFound(path));
|
|
72
|
+
if (got.truncated || looksBinary(got.data))
|
|
73
|
+
throw new ToolError(notText(path));
|
|
74
|
+
await assertReadAndUnchanged(deps, ctx.conversationId, path, fileStateOf(got.data, st.size));
|
|
75
|
+
const text = new TextDecoder().decode(got.data);
|
|
76
|
+
const count = occurrences(text, old_string);
|
|
77
|
+
if (count === 0)
|
|
78
|
+
throw new ToolError(noMatch(path));
|
|
79
|
+
if (count > 1 && !replace_all)
|
|
80
|
+
throw new ToolError(ambiguous(count));
|
|
81
|
+
// 用函数形式替换:new_string 里的 `$&` 等不被当成替换模式
|
|
82
|
+
const next = replace_all
|
|
83
|
+
? text.split(old_string).join(new_string)
|
|
84
|
+
: text.replace(old_string, () => new_string);
|
|
85
|
+
const nextBytes = new TextEncoder().encode(next);
|
|
86
|
+
await p.writeFile(h, path, nextBytes, signal);
|
|
87
|
+
return {
|
|
88
|
+
n: replace_all ? count : 1,
|
|
89
|
+
before: text,
|
|
90
|
+
after: next,
|
|
91
|
+
// over the bytes the next Write / Edit reads back (Read's limit), as Read records it
|
|
92
|
+
file: recordedFile(normalizeSandboxPath(path), nextBytes.subarray(0, READ_MAX_BYTES), nextBytes.byteLength),
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
});
|
|
83
96
|
const { n } = edit;
|
|
84
97
|
const text = `Edited ${path}: replaced ${n} occurrence${n === 1 ? "" : "s"}.`;
|
|
85
98
|
return {
|
|
@@ -91,6 +104,7 @@ export function sandboxEditTool(deps) {
|
|
|
91
104
|
path: viewPath(path),
|
|
92
105
|
created: false,
|
|
93
106
|
...lineDiff(edit.before, edit.after),
|
|
107
|
+
file: edit.file,
|
|
94
108
|
},
|
|
95
109
|
};
|
|
96
110
|
},
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { EventLog } from "../../../conversations/event-log.js";
|
|
2
|
+
/**
|
|
3
|
+
* Read before `Write` / `Edit` (tool naming spec §4.5). The state of a file as a `Read`, `Write` or
|
|
4
|
+
* `Edit` saw or left it is recorded in the display-only `tool_result.view.file`; before writing,
|
|
5
|
+
* the tools compare the latest recorded state of the path in this conversation's log with the
|
|
6
|
+
* content they read anyway. Nothing lives in process memory, so every replica decides the same.
|
|
7
|
+
*/
|
|
8
|
+
export interface FileState {
|
|
9
|
+
/** The file's full size in bytes. */
|
|
10
|
+
size: number;
|
|
11
|
+
/** sha256 (hex) of the bytes handled: the first bytes only for a file over `Read`'s byte limit. */
|
|
12
|
+
sha256: string;
|
|
13
|
+
}
|
|
14
|
+
/** What the tools put into `view.file`: the state plus the full normalized path (never cut). */
|
|
15
|
+
export interface RecordedFile extends FileState {
|
|
16
|
+
path: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const NOT_READ_TEXT = "File has not been read yet. Read it first before writing to it.";
|
|
19
|
+
export declare const MODIFIED_TEXT = "File has been modified since it was read, either by the user or by another command. Read it again before writing to it.";
|
|
20
|
+
/** The state of `bytes`, the bytes handled of a file whose full size is `fullSize`. */
|
|
21
|
+
export declare function fileStateOf(bytes: Uint8Array, fullSize: number): FileState;
|
|
22
|
+
/** The `view.file` value for a file at `path` (already normalized). */
|
|
23
|
+
export declare function recordedFile(path: string, bytes: Uint8Array, fullSize: number): RecordedFile;
|
|
24
|
+
/** POSIX-normalized absolute path (`/workspace/./a.txt` and `/workspace/a.txt` are one file). */
|
|
25
|
+
export declare function normalizeSandboxPath(path: string): string;
|
|
26
|
+
/** The latest recorded state of `path` in the conversation's log; null when it was never recorded. */
|
|
27
|
+
export declare function lastFileState(log: Pick<EventLog, "latestFileState">, conversationId: string, path: string): Promise<FileState | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Throws the model-visible error unless the conversation read (or wrote) the file and it is
|
|
30
|
+
* unchanged: `current` is the state of the content the caller just read.
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertReadAndUnchanged(deps: {
|
|
33
|
+
eventLog: Pick<EventLog, "latestFileState">;
|
|
34
|
+
}, conversationId: string, path: string, current: FileState): Promise<void>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { posix } from "node:path";
|
|
3
|
+
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
4
|
+
export const NOT_READ_TEXT = "File has not been read yet. Read it first before writing to it.";
|
|
5
|
+
export const MODIFIED_TEXT = "File has been modified since it was read, either by the user or by another command. Read it again before writing to it.";
|
|
6
|
+
/** The state of `bytes`, the bytes handled of a file whose full size is `fullSize`. */
|
|
7
|
+
export function fileStateOf(bytes, fullSize) {
|
|
8
|
+
return { size: fullSize, sha256: createHash("sha256").update(bytes).digest("hex") };
|
|
9
|
+
}
|
|
10
|
+
/** The `view.file` value for a file at `path` (already normalized). */
|
|
11
|
+
export function recordedFile(path, bytes, fullSize) {
|
|
12
|
+
return { path, ...fileStateOf(bytes, fullSize) };
|
|
13
|
+
}
|
|
14
|
+
/** POSIX-normalized absolute path (`/workspace/./a.txt` and `/workspace/a.txt` are one file). */
|
|
15
|
+
export function normalizeSandboxPath(path) {
|
|
16
|
+
const n = posix.normalize(path);
|
|
17
|
+
return n.length > 1 && n.endsWith("/") ? n.slice(0, -1) : n;
|
|
18
|
+
}
|
|
19
|
+
/** The latest recorded state of `path` in the conversation's log; null when it was never recorded. */
|
|
20
|
+
export async function lastFileState(log, conversationId, path) {
|
|
21
|
+
return log.latestFileState(conversationId, normalizeSandboxPath(path));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Throws the model-visible error unless the conversation read (or wrote) the file and it is
|
|
25
|
+
* unchanged: `current` is the state of the content the caller just read.
|
|
26
|
+
*/
|
|
27
|
+
export async function assertReadAndUnchanged(deps, conversationId, path, current) {
|
|
28
|
+
const seen = await lastFileState(deps.eventLog, conversationId, path);
|
|
29
|
+
if (seen === null)
|
|
30
|
+
throw new ToolError(NOT_READ_TEXT);
|
|
31
|
+
if (seen.size !== current.size || seen.sha256 !== current.sha256) {
|
|
32
|
+
throw new ToolError(MODIFIED_TEXT);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 线性时间的 glob 匹配(
|
|
2
|
+
* 线性时间的 glob 匹配(Glob 用;模式由模型给出,不能编译成会回溯爆炸的正则)。
|
|
3
3
|
*
|
|
4
4
|
* 语法:路径按 `/` 分段;整段 `**` 跨任意层目录(含零层);段内 `*` 匹配任意个字符(不跨 `/`),`?` 一个字符,
|
|
5
5
|
* `[abc]` / `[a-z]` / `[!x]`(或 `[^x]`)字符类,`{a,b}` 二选一(可嵌套,展开后最多 {@link MAX_ALTERNATIVES} 个);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 线性时间的 glob 匹配(
|
|
2
|
+
* 线性时间的 glob 匹配(Glob 用;模式由模型给出,不能编译成会回溯爆炸的正则)。
|
|
3
3
|
*
|
|
4
4
|
* 语法:路径按 `/` 分段;整段 `**` 跨任意层目录(含零层);段内 `*` 匹配任意个字符(不跨 `/`),`?` 一个字符,
|
|
5
5
|
* `[abc]` / `[a-z]` / `[!x]`(或 `[^x]`)字符类,`{a,b}` 二选一(可嵌套,展开后最多 {@link MAX_ALTERNATIVES} 个);
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import { checkPath, clip, display, inSandbox,
|
|
2
|
+
import { checkPath, checkPathShape, clip, display, inSandbox, sandboxBaseTimeoutMs, searchTimeoutMs, syncMarkerMatcher, unavailableWhenNoSandbox, withNotices, } from "./common.js";
|
|
3
3
|
import { compileGlob, GlobPatternError } from "./glob-match.js";
|
|
4
4
|
/** 最多列出的文件数。 */
|
|
5
5
|
const MAX_RESULTS = 1000;
|
|
6
6
|
/** `find` 输出的上限(字节)。 */
|
|
7
7
|
const MAX_FIND_BYTES = 8 * 1024 * 1024;
|
|
8
8
|
const SPEC = {
|
|
9
|
-
name: "
|
|
9
|
+
name: "Glob",
|
|
10
10
|
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
11
11
|
keyArgs: ["pattern"],
|
|
12
12
|
description: "Find files by name pattern in this conversation's sandbox. Use it to list files and to " +
|
|
13
13
|
'locate files by name, e.g. pattern "**/*.py" for all Python files. The pattern is matched ' +
|
|
14
|
-
"against paths relative to path (default
|
|
14
|
+
"against paths relative to path (default: the workspace directory): * matches within one directory, ** " +
|
|
15
15
|
"matches across directories, ? matches one character, {a,b} matches either. Returns absolute " +
|
|
16
|
-
"paths sorted by name, up to 1000. To search file contents, use
|
|
16
|
+
"paths sorted by name, up to 1000. To search file contents, use Grep.",
|
|
17
17
|
inputSchema: {
|
|
18
18
|
type: "object",
|
|
19
19
|
properties: {
|
|
@@ -25,7 +25,7 @@ const SPEC = {
|
|
|
25
25
|
path: {
|
|
26
26
|
type: "string",
|
|
27
27
|
minLength: 1,
|
|
28
|
-
description: "Absolute directory to search in. Default
|
|
28
|
+
description: "Absolute directory to search in. Default: the workspace directory.",
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
31
|
required: ["pattern"],
|
|
@@ -34,9 +34,9 @@ const SPEC = {
|
|
|
34
34
|
annotations: { readOnlyHint: true },
|
|
35
35
|
};
|
|
36
36
|
const ABSOLUTE_PATTERN = 'The pattern must be relative to path; pass the directory in path and a relative pattern such as "**/*.py".';
|
|
37
|
-
const notDirectory = (path) => `${clip(path, 200)} is not a directory; pass an existing directory in path (default
|
|
37
|
+
const notDirectory = (path, workspace) => `${clip(path, 200)} is not a directory; pass an existing directory in path (default ${workspace}).`;
|
|
38
38
|
const FIND_FAILED = "Listing files did not finish in time; pass a narrower path or pattern and retry.";
|
|
39
|
-
/** 内置工具 `
|
|
39
|
+
/** 内置工具 `Glob`:按文件名模式找文件(只读)。 */
|
|
40
40
|
export function sandboxGlobTool(deps) {
|
|
41
41
|
return {
|
|
42
42
|
spec: SPEC,
|
|
@@ -48,7 +48,6 @@ export function sandboxGlobTool(deps) {
|
|
|
48
48
|
const { pattern } = input;
|
|
49
49
|
if (pattern.startsWith("/"))
|
|
50
50
|
throw new ToolError(ABSOLUTE_PATTERN);
|
|
51
|
-
const dir = checkPath(input.path ?? "/workspace");
|
|
52
51
|
let matches;
|
|
53
52
|
try {
|
|
54
53
|
matches = compileGlob(pattern);
|
|
@@ -58,10 +57,15 @@ export function sandboxGlobTool(deps) {
|
|
|
58
57
|
throw e;
|
|
59
58
|
throw new ToolError(`Invalid glob pattern: ${e.message}; pass a simpler pattern (fewer wildcards and braces) and retry.`);
|
|
60
59
|
}
|
|
61
|
-
const
|
|
60
|
+
const given = input.path;
|
|
61
|
+
if (given !== undefined)
|
|
62
|
+
checkPathShape(given);
|
|
63
|
+
let dir = "";
|
|
64
|
+
const { value: files, notices } = await inSandbox(deps, ctx, async ({ h, roots, p, signal }) => {
|
|
65
|
+
dir = checkPath(input.path ?? roots.workspace, roots);
|
|
62
66
|
const st = await p.stat(h, dir, signal);
|
|
63
67
|
if (!st?.isDir)
|
|
64
|
-
throw new ToolError(notDirectory(dir));
|
|
68
|
+
throw new ToolError(notDirectory(dir, roots.workspace));
|
|
65
69
|
const r = await p.exec(h, {
|
|
66
70
|
command: "find . -type f -print0",
|
|
67
71
|
cwd: dir,
|
|
@@ -77,14 +81,15 @@ export function sandboxGlobTool(deps) {
|
|
|
77
81
|
if (r.truncated)
|
|
78
82
|
names.pop();
|
|
79
83
|
const base = dir === "/" ? "" : dir;
|
|
84
|
+
const isMarker = syncMarkerMatcher(roots);
|
|
80
85
|
return (names
|
|
81
86
|
.filter((l) => l.startsWith("./"))
|
|
82
87
|
.map((l) => l.slice(2))
|
|
83
88
|
.filter((rel) => matches(rel))
|
|
84
89
|
.map((rel) => `${base}/${rel}`)
|
|
85
|
-
.filter((abs) => abs
|
|
90
|
+
.filter((abs) => !isMarker(abs))
|
|
86
91
|
.sort()
|
|
87
|
-
// 文件名里的换行显示为 `\n`(与
|
|
92
|
+
// 文件名里的换行显示为 `\n`(与 Grep 一致),一行一个文件
|
|
88
93
|
.map((abs) => abs.replace(/\n/g, "\\n")));
|
|
89
94
|
});
|
|
90
95
|
const shown = files.slice(0, MAX_RESULTS);
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { BuiltinTool } from "../../registry.js";
|
|
2
2
|
import { type SandboxToolDeps } from "./common.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Parses the output of `grep -H --null` (with `-n` when `numbered`): each entry is
|
|
5
|
+
* `<file name>\0<line number>:<line>\n` (the file name may contain newlines, the line does not).
|
|
6
|
+
* Returns `<absolute path>:<line number>:<line>`; context lines (`<line number>-<line>`, only with
|
|
7
|
+
* `-A/-B/-C`) become `<absolute path>-<line number>-<line>`, and the `--` group separator is kept.
|
|
8
|
+
* A newline in a file name shows as `\n`. An incomplete last entry (truncated output) is dropped.
|
|
6
9
|
*/
|
|
7
|
-
export declare function parseGrepNull(stdout: string, base: string): string[];
|
|
8
|
-
/** 内置工具 `
|
|
10
|
+
export declare function parseGrepNull(stdout: string, base: string, numbered?: boolean): string[];
|
|
11
|
+
/** 内置工具 `Grep`:按正则搜文件内容(只读)。 */
|
|
9
12
|
export declare function sandboxGrepTool(deps: SandboxToolDeps): BuiltinTool;
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { ToolError } from "@capybara-hq/plugin-sdk";
|
|
2
|
-
import { checkPath, clip, display, inSandbox,
|
|
3
|
-
/**
|
|
2
|
+
import { checkPath, checkPathShape, clip, display, inSandbox, sandboxBaseTimeoutMs, searchTimeoutMs, shellQuote, syncMarkerMatcher, unavailableWhenNoSandbox, withNotices, } from "./common.js";
|
|
3
|
+
/** The most output entries (lines, files or counts) returned in one call, whatever `head_limit` says. */
|
|
4
4
|
const MAX_MATCHES = 500;
|
|
5
|
+
/** `head_limit` when the model gives none. */
|
|
6
|
+
const DEFAULT_HEAD_LIMIT = 250;
|
|
5
7
|
/** 每个匹配行最多显示的字符数。 */
|
|
6
8
|
const MAX_LINE_CHARS = 500;
|
|
7
9
|
/** grep 输出的上限(字节)。 */
|
|
8
10
|
const MAX_GREP_BYTES = 4 * 1024 * 1024;
|
|
11
|
+
const MODES = ["content", "files_with_matches", "count"];
|
|
9
12
|
const SPEC = {
|
|
10
|
-
name: "
|
|
13
|
+
name: "Grep",
|
|
11
14
|
// Display only (the tool row; not in the fingerprint, never sent to the model).
|
|
12
15
|
keyArgs: ["pattern", "path"],
|
|
13
16
|
description: "Search file contents in this conversation's sandbox with a regular expression (POSIX " +
|
|
14
17
|
"extended, as grep -E). Use it to find where something is defined or mentioned. Searches path " +
|
|
15
|
-
"(a file, or a directory recursively; default
|
|
16
|
-
'the files searched by name, e.g. "*.py".
|
|
17
|
-
"
|
|
18
|
+
"(a file, or a directory recursively; default: the workspace directory), skipping binary files; glob limits " +
|
|
19
|
+
'the files searched by name, e.g. "*.py". output_mode picks what comes back: ' +
|
|
20
|
+
'"files_with_matches" (default) lists the paths of files that match, "content" returns the ' +
|
|
21
|
+
"matching lines as <path>:<line>:<text> (with -A, -B or -C lines of context around them), " +
|
|
22
|
+
'"count" returns <path>:<number of matching lines> per file. -n (line numbers) and the context ' +
|
|
23
|
+
"options apply only to content mode. head_limit caps the entries returned (default 250; " +
|
|
24
|
+
"0 = up to 500); pass offset to skip entries and page through more. To find files by " +
|
|
25
|
+
"name, use Glob.",
|
|
18
26
|
inputSchema: {
|
|
19
27
|
type: "object",
|
|
20
28
|
properties: {
|
|
@@ -26,31 +34,73 @@ const SPEC = {
|
|
|
26
34
|
path: {
|
|
27
35
|
type: "string",
|
|
28
36
|
minLength: 1,
|
|
29
|
-
description: "Absolute file or directory to search. Default
|
|
37
|
+
description: "Absolute file or directory to search. Default: the workspace directory.",
|
|
30
38
|
},
|
|
31
39
|
glob: {
|
|
32
40
|
type: "string",
|
|
33
41
|
minLength: 1,
|
|
34
42
|
description: 'Only search files whose name matches this glob, e.g. "*.md".',
|
|
35
43
|
},
|
|
36
|
-
|
|
44
|
+
"-i": { type: "boolean", description: "Case-insensitive match. Default false." },
|
|
45
|
+
output_mode: {
|
|
46
|
+
type: "string",
|
|
47
|
+
enum: [...MODES],
|
|
48
|
+
description: 'What to return: "files_with_matches" (file paths, default), "content" (matching lines) or "count" (matching lines per file).',
|
|
49
|
+
},
|
|
50
|
+
"-n": {
|
|
51
|
+
type: "boolean",
|
|
52
|
+
description: "Show line numbers in content mode. Default true.",
|
|
53
|
+
},
|
|
54
|
+
"-A": {
|
|
55
|
+
type: "integer",
|
|
56
|
+
minimum: 0,
|
|
57
|
+
description: "Lines of context after each match (content mode).",
|
|
58
|
+
},
|
|
59
|
+
"-B": {
|
|
60
|
+
type: "integer",
|
|
61
|
+
minimum: 0,
|
|
62
|
+
description: "Lines of context before each match (content mode).",
|
|
63
|
+
},
|
|
64
|
+
"-C": {
|
|
65
|
+
type: "integer",
|
|
66
|
+
minimum: 0,
|
|
67
|
+
description: "Lines of context before and after each match (content mode).",
|
|
68
|
+
},
|
|
69
|
+
head_limit: {
|
|
70
|
+
type: "integer",
|
|
71
|
+
minimum: 0,
|
|
72
|
+
description: `Return at most this many entries (lines, files or counts, by mode). Default ${DEFAULT_HEAD_LIMIT}; 0 = up to ${MAX_MATCHES}.`,
|
|
73
|
+
},
|
|
74
|
+
offset: {
|
|
75
|
+
type: "integer",
|
|
76
|
+
minimum: 0,
|
|
77
|
+
description: "Skip this many entries before returning (for paging). Default 0.",
|
|
78
|
+
},
|
|
37
79
|
},
|
|
38
80
|
required: ["pattern"],
|
|
39
81
|
additionalProperties: false,
|
|
40
82
|
},
|
|
41
83
|
annotations: { readOnlyHint: true },
|
|
42
84
|
};
|
|
43
|
-
const notFound = (path) => `${clip(path, 200)} does not exist; check the path with
|
|
85
|
+
const notFound = (path) => `${clip(path, 200)} does not exist; check the path with Glob.`;
|
|
44
86
|
const failed = (stderr) => `grep failed: ${clip(stderr, 300)}. Check the pattern (POSIX extended regular expression) and retry.`;
|
|
45
87
|
const GREP_TIMEOUT = "The search did not finish in time; pass a narrower path or a glob and retry.";
|
|
46
88
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
89
|
+
* Parses the output of `grep -H --null` (with `-n` when `numbered`): each entry is
|
|
90
|
+
* `<file name>\0<line number>:<line>\n` (the file name may contain newlines, the line does not).
|
|
91
|
+
* Returns `<absolute path>:<line number>:<line>`; context lines (`<line number>-<line>`, only with
|
|
92
|
+
* `-A/-B/-C`) become `<absolute path>-<line number>-<line>`, and the `--` group separator is kept.
|
|
93
|
+
* A newline in a file name shows as `\n`. An incomplete last entry (truncated output) is dropped.
|
|
49
94
|
*/
|
|
50
|
-
export function parseGrepNull(stdout, base) {
|
|
95
|
+
export function parseGrepNull(stdout, base, numbered = true) {
|
|
51
96
|
const out = [];
|
|
52
97
|
let pos = 0;
|
|
53
98
|
for (;;) {
|
|
99
|
+
if (stdout.startsWith("--\n", pos)) {
|
|
100
|
+
out.push("--");
|
|
101
|
+
pos += 3;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
54
104
|
const nul = stdout.indexOf("\0", pos);
|
|
55
105
|
if (nul === -1)
|
|
56
106
|
break;
|
|
@@ -59,12 +109,45 @@ export function parseGrepNull(stdout, base) {
|
|
|
59
109
|
break;
|
|
60
110
|
const raw = stdout.slice(pos, nul);
|
|
61
111
|
const name = (raw.startsWith("./") ? raw.slice(2) : raw).replace(/\n/g, "\\n");
|
|
62
|
-
|
|
112
|
+
const rest = stdout.slice(nul + 1, nl);
|
|
113
|
+
out.push(numbered && /^\d+-/.test(rest) ? `${base}/${name}-${rest}` : `${base}/${name}:${rest}`);
|
|
63
114
|
pos = nl + 1;
|
|
64
115
|
}
|
|
65
116
|
return out;
|
|
66
117
|
}
|
|
67
|
-
|
|
118
|
+
const displayName = (raw) => (raw.startsWith("./") ? raw.slice(2) : raw).replace(/\n/g, "\\n");
|
|
119
|
+
/** `grep -l --null` output: the matching files, each followed by NUL. */
|
|
120
|
+
function parseFileList(stdout, base) {
|
|
121
|
+
const parts = stdout.split("\0");
|
|
122
|
+
// the last part is empty, or an incomplete name when the output was truncated: dropped
|
|
123
|
+
parts.pop();
|
|
124
|
+
return parts.filter((n) => n !== "").map((n) => `${base}/${displayName(n)}`);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* `grep -c` output as `<path>:<count>` for the files with at least one matching line. GNU grep
|
|
128
|
+
* with `--null` writes `<file>\0<count>\n`; other implementations write `<file>:<count>`.
|
|
129
|
+
*/
|
|
130
|
+
function parseCounts(stdout, base) {
|
|
131
|
+
const out = [];
|
|
132
|
+
if (stdout.includes("\0")) {
|
|
133
|
+
for (const l of parseGrepNull(stdout, base, false)) {
|
|
134
|
+
if (!l.endsWith(":0"))
|
|
135
|
+
out.push(l);
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
for (const line of stdout.split("\n")) {
|
|
140
|
+
const i = line.lastIndexOf(":");
|
|
141
|
+
if (i <= 0)
|
|
142
|
+
continue;
|
|
143
|
+
const count = line.slice(i + 1);
|
|
144
|
+
if (count === "0" || !/^\d+$/.test(count))
|
|
145
|
+
continue;
|
|
146
|
+
out.push(`${base}/${displayName(line.slice(0, i))}:${count}`);
|
|
147
|
+
}
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
/** 内置工具 `Grep`:按正则搜文件内容(只读)。 */
|
|
68
151
|
export function sandboxGrepTool(deps) {
|
|
69
152
|
return {
|
|
70
153
|
spec: SPEC,
|
|
@@ -73,9 +156,15 @@ export function sandboxGrepTool(deps) {
|
|
|
73
156
|
timeoutMs: () => sandboxBaseTimeoutMs(deps.config.get()),
|
|
74
157
|
async run(input, ctx) {
|
|
75
158
|
const startedAt = Date.now();
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
const
|
|
159
|
+
const g = input;
|
|
160
|
+
const { pattern, glob } = g;
|
|
161
|
+
const mode = g.output_mode ?? "files_with_matches";
|
|
162
|
+
const numbered = g["-n"] ?? true;
|
|
163
|
+
if (g.path !== undefined)
|
|
164
|
+
checkPathShape(g.path);
|
|
165
|
+
let path = "";
|
|
166
|
+
const { value, notices } = await inSandbox(deps, ctx, async ({ h, roots, p, signal }) => {
|
|
167
|
+
path = checkPath(g.path ?? roots.workspace, roots);
|
|
79
168
|
const st = await p.stat(h, path, signal);
|
|
80
169
|
if (st === null)
|
|
81
170
|
throw new ToolError(notFound(path));
|
|
@@ -83,10 +172,22 @@ export function sandboxGrepTool(deps) {
|
|
|
83
172
|
const slash = path.lastIndexOf("/");
|
|
84
173
|
const cwd = st.isDir ? path : path.slice(0, slash) || "/";
|
|
85
174
|
const target = st.isDir ? "." : path.slice(slash + 1);
|
|
175
|
+
const base = cwd === "/" ? "" : cwd;
|
|
176
|
+
// GNU grep options (`-l`, `-c`, `-n`, `-A/-B/-C`, `--null`): the sandbox images are Debian
|
|
177
|
+
const modeFlags = mode === "files_with_matches"
|
|
178
|
+
? ["-rlIE", "--null"]
|
|
179
|
+
: mode === "count"
|
|
180
|
+
? ["-rcHIE", "--null"]
|
|
181
|
+
: [numbered ? "-rnHIE" : "-rHIE", "--null"];
|
|
182
|
+
const context = mode === "content"
|
|
183
|
+
? ["-A", "-B", "-C"].flatMap((f) => g[f] !== undefined ? [f, String(g[f])] : [])
|
|
184
|
+
: [];
|
|
86
185
|
const command = [
|
|
87
186
|
// --null:文件名后跟 NUL 而不是 `:`,文件名里有换行或冒号也能解析
|
|
88
|
-
"grep
|
|
89
|
-
...
|
|
187
|
+
"grep",
|
|
188
|
+
...modeFlags,
|
|
189
|
+
...(g["-i"] === true ? ["-i"] : []),
|
|
190
|
+
...context,
|
|
90
191
|
...(glob !== undefined ? [`--include=${shellQuote(glob)}`] : []),
|
|
91
192
|
"-e",
|
|
92
193
|
shellQuote(pattern),
|
|
@@ -103,27 +204,45 @@ export function sandboxGrepTool(deps) {
|
|
|
103
204
|
if (r.timedOut || r.exitCode === null)
|
|
104
205
|
throw new ToolError(GREP_TIMEOUT);
|
|
105
206
|
if (r.exitCode === 1)
|
|
106
|
-
return {
|
|
107
|
-
const all =
|
|
108
|
-
|
|
207
|
+
return { entries: [], warning: null };
|
|
208
|
+
const all = mode === "files_with_matches"
|
|
209
|
+
? parseFileList(r.stdout, base)
|
|
210
|
+
: mode === "count"
|
|
211
|
+
? parseCounts(r.stdout, base)
|
|
212
|
+
: parseGrepNull(r.stdout, base, numbered);
|
|
213
|
+
const isMarker = syncMarkerMatcher(roots);
|
|
214
|
+
const entries = all.filter((l) => !isMarker(l));
|
|
109
215
|
// 退出码 2 = 有错误(如个别文件不可读);有输出时照常返回(可能为空:只匹配到隐藏的标记文件)并附上说明
|
|
110
216
|
if (r.exitCode !== 0 && all.length === 0)
|
|
111
217
|
throw new ToolError(failed(r.stderr));
|
|
112
218
|
const warning = r.exitCode !== 0 ? clip(r.stderr, 300) : null;
|
|
113
|
-
return {
|
|
219
|
+
return { entries, warning };
|
|
114
220
|
});
|
|
115
|
-
const {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
221
|
+
const { entries, warning } = value;
|
|
222
|
+
const total = entries.length;
|
|
223
|
+
const offset = g.offset ?? 0;
|
|
224
|
+
const headLimit = g.head_limit === undefined ? DEFAULT_HEAD_LIMIT : g.head_limit;
|
|
225
|
+
const limit = headLimit === 0 ? MAX_MATCHES : Math.min(headLimit, MAX_MATCHES);
|
|
226
|
+
const page = entries.slice(offset, offset + limit);
|
|
227
|
+
const shown = page.map((l) => l.length > MAX_LINE_CHARS ? `${l.slice(0, MAX_LINE_CHARS)}…` : l);
|
|
119
228
|
const note = warning !== null ? `\n[grep also reported errors: ${warning}]` : "";
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
229
|
+
let text;
|
|
230
|
+
if (total === 0) {
|
|
231
|
+
text = `No matches for ${pattern} in ${path}.${note}`;
|
|
232
|
+
}
|
|
233
|
+
else if (page.length === 0) {
|
|
234
|
+
text = `No more results (${total} total).${note}`;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
const end = offset + page.length;
|
|
238
|
+
text =
|
|
239
|
+
shown.join("\n") +
|
|
240
|
+
(end < total
|
|
241
|
+
? `\n[Showing entries ${offset + 1}–${end} of ${total}; pass offset=${end} to continue, or use a narrower pattern, path or glob.]`
|
|
242
|
+
: "") +
|
|
243
|
+
note;
|
|
244
|
+
}
|
|
245
|
+
const n = total;
|
|
127
246
|
return {
|
|
128
247
|
content: [{ type: "text", text: withNotices(notices, text) }],
|
|
129
248
|
display: display(`搜索 ${clip(pattern, 120)}(${n} 处)`, `Searched for ${clip(pattern, 120)} (${n} match${n === 1 ? "" : "es"})`),
|