@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
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { randomUUID } from "node:crypto";
|
|
11
|
+
import { DEVICE_PROTOCOL_VERSION, parseDeviceFrame, } from "@capybara-hq/plugin-sdk";
|
|
12
|
+
import { Inject, Injectable } from "@nestjs/common";
|
|
13
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
14
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
15
|
+
import { KERNEL_BUS, KERNEL_LOGGER, REDIS } from "../infra/tokens.js";
|
|
16
|
+
import { DEVICE_TAKEN_PREFIX, deviceLeaseKey, deviceReqKey, deviceReqTopic, deviceResKey, deviceResTopic, deviceRevokedTopic, deviceTakenKey, deviceTakeoverTopic, } from "./keys.js";
|
|
17
|
+
import { MachinesService } from "./machines.js";
|
|
18
|
+
import { LIST_TTL_MARGIN_MS } from "./relay.js";
|
|
19
|
+
/** WebSocket close codes the gateway uses (the program reads 4002 and 4003). */
|
|
20
|
+
export const DEVICE_CLOSE = {
|
|
21
|
+
/** The kernel is shutting down: reconnect (another gateway replica takes over). */
|
|
22
|
+
shutdown: 1001,
|
|
23
|
+
/** A frame larger than `devices.local.maxFrameBytes` (sent by `ws` itself). */
|
|
24
|
+
tooBig: 1009,
|
|
25
|
+
/** The kernel failed (e.g. the database): reconnect. */
|
|
26
|
+
internal: 1011,
|
|
27
|
+
/** The lease was lost (renewal kept failing or the key was taken): reconnect. */
|
|
28
|
+
leaseLost: 4001,
|
|
29
|
+
/** A newer connection of the device took over: the program exits. */
|
|
30
|
+
replaced: 4002,
|
|
31
|
+
/** The machine's credential was revoked: the program exits. */
|
|
32
|
+
revoked: 4003,
|
|
33
|
+
/** No valid `hello` first, or a frame that is not protocol v1 from a device. */
|
|
34
|
+
protocol: 4400,
|
|
35
|
+
/** The lease could not be claimed in time: reconnect. */
|
|
36
|
+
claimTimeout: 4409,
|
|
37
|
+
};
|
|
38
|
+
/** How long the program has to send `hello` after the upgrade. */
|
|
39
|
+
export const HELLO_TIMEOUT_MS = 10_000;
|
|
40
|
+
/** How often a connection is pinged; two pings without a pong close it. */
|
|
41
|
+
export const PING_INTERVAL_MS = 20_000;
|
|
42
|
+
/** How long a new connection retries the lease after asking the holder to let go. */
|
|
43
|
+
export const CLAIM_TIMEOUT_MS = 5_000;
|
|
44
|
+
/** The pause between two tries at the lease while claiming. */
|
|
45
|
+
export const CLAIM_RETRY_MS = 250;
|
|
46
|
+
/** Traffic marks the machine seen at most this often per connection (the row has its own gate). */
|
|
47
|
+
const TOUCH_EVERY_MS = 30_000;
|
|
48
|
+
/** How often a held connection re-checks its credential (membership, org, device). */
|
|
49
|
+
const REAUTH_EVERY_MS = 60_000;
|
|
50
|
+
/**
|
|
51
|
+
* Puts a frame the holder popped but could not send back at the head of the list, keeping the
|
|
52
|
+
* list's TTL at least `ARGV[2]` ms (the list never exists without one).
|
|
53
|
+
*/
|
|
54
|
+
const PUT_BACK = `
|
|
55
|
+
redis.call('LPUSH', KEYS[1], ARGV[1])
|
|
56
|
+
if redis.call('PTTL', KEYS[1]) < tonumber(ARGV[2]) then
|
|
57
|
+
redis.call('PEXPIRE', KEYS[1], ARGV[2])
|
|
58
|
+
end
|
|
59
|
+
return 1
|
|
60
|
+
`;
|
|
61
|
+
/**
|
|
62
|
+
* Pops the next frame of the request list (`KEYS[1]`) and, when it is a `req`, marks it taken in
|
|
63
|
+
* the same step: `<ARGV[1]><id>` → the device id `ARGV[2]`, for the reconnect grace
|
|
64
|
+
* `ARGV[3]` ms plus the request's deadline plus the margin `ARGV[4]` ms (ruling R20). Returns the
|
|
65
|
+
* frame, or false when the list is empty. A frame that is not JSON is returned as is (the caller
|
|
66
|
+
* drops it). The taken key cannot be declared in KEYS (its id is known only after the pop): like
|
|
67
|
+
* the rest of the kernel, this assumes a single-node Valkey / Redis, not a cluster.
|
|
68
|
+
*/
|
|
69
|
+
const TAKE = `
|
|
70
|
+
local raw = redis.call('LPOP', KEYS[1])
|
|
71
|
+
if not raw then return false end
|
|
72
|
+
local ok, f = pcall(cjson.decode, raw)
|
|
73
|
+
if ok and type(f) == 'table' and f.type == 'req' and type(f.id) == 'string'
|
|
74
|
+
and type(f.deadlineMs) == 'number' and f.deadlineMs > 0 then
|
|
75
|
+
local ttl = tonumber(ARGV[3]) + math.ceil(f.deadlineMs) + tonumber(ARGV[4])
|
|
76
|
+
redis.call('SET', ARGV[1] .. f.id, ARGV[2], 'PX', ttl)
|
|
77
|
+
end
|
|
78
|
+
return raw
|
|
79
|
+
`;
|
|
80
|
+
/**
|
|
81
|
+
* Accepts a result (ruling R20): only when its request is marked taken (`KEYS[1]`) for the
|
|
82
|
+
* device `ARGV[1]`. Stores the frame `ARGV[2]` under `KEYS[2]` for what is left of the taken
|
|
83
|
+
* mark's TTL (the caller's whole window, also after a reconnect) and clears the mark. Returns 1
|
|
84
|
+
* when stored, 0 otherwise.
|
|
85
|
+
*/
|
|
86
|
+
const ACCEPT = `
|
|
87
|
+
if redis.call('GET', KEYS[1]) ~= ARGV[1] then return 0 end
|
|
88
|
+
local ttl = redis.call('PTTL', KEYS[1])
|
|
89
|
+
if ttl <= 0 then return 0 end
|
|
90
|
+
redis.call('SET', KEYS[2], ARGV[2], 'PX', ttl)
|
|
91
|
+
redis.call('DEL', KEYS[1])
|
|
92
|
+
return 1
|
|
93
|
+
`;
|
|
94
|
+
const errMsg = (e) => (e instanceof Error ? e.message : String(e));
|
|
95
|
+
/**
|
|
96
|
+
* One machine connection on this replica. Its state (the socket, the lease handle, the requests
|
|
97
|
+
* it forwarded) is the socket's own and lives exactly as long as the socket.
|
|
98
|
+
*/
|
|
99
|
+
class DeviceConnection {
|
|
100
|
+
gw;
|
|
101
|
+
socket;
|
|
102
|
+
identity;
|
|
103
|
+
credential;
|
|
104
|
+
token = randomUUID();
|
|
105
|
+
state = "hello";
|
|
106
|
+
lease;
|
|
107
|
+
unsubscribes = [];
|
|
108
|
+
helloTimer;
|
|
109
|
+
pingTimer;
|
|
110
|
+
missedPongs = 0;
|
|
111
|
+
lastTouch = 0;
|
|
112
|
+
lastAuth = Date.now();
|
|
113
|
+
/** The drains (and the close after a revocation) run one after another. */
|
|
114
|
+
chain = Promise.resolve();
|
|
115
|
+
/** Resolves once the lease is handed back (or was never held). */
|
|
116
|
+
released;
|
|
117
|
+
constructor(gw, socket, identity, credential) {
|
|
118
|
+
this.gw = gw;
|
|
119
|
+
this.socket = socket;
|
|
120
|
+
this.identity = identity;
|
|
121
|
+
this.credential = credential;
|
|
122
|
+
}
|
|
123
|
+
get deviceId() {
|
|
124
|
+
return this.identity.deviceId;
|
|
125
|
+
}
|
|
126
|
+
start() {
|
|
127
|
+
const { socket } = this;
|
|
128
|
+
this.helloTimer = setTimeout(() => this.close(DEVICE_CLOSE.protocol, "hello expected"), HELLO_TIMEOUT_MS);
|
|
129
|
+
this.schedulePing();
|
|
130
|
+
socket.on("pong", () => {
|
|
131
|
+
this.missedPongs = 0;
|
|
132
|
+
this.traffic();
|
|
133
|
+
});
|
|
134
|
+
socket.on("message", (data, isBinary) => {
|
|
135
|
+
if (this.state === "closed")
|
|
136
|
+
return;
|
|
137
|
+
this.traffic();
|
|
138
|
+
if (isBinary) {
|
|
139
|
+
this.close(DEVICE_CLOSE.protocol, "frames are JSON text");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const text = Array.isArray(data)
|
|
143
|
+
? Buffer.concat(data).toString("utf8")
|
|
144
|
+
: Buffer.isBuffer(data)
|
|
145
|
+
? data.toString("utf8")
|
|
146
|
+
: Buffer.from(data).toString("utf8");
|
|
147
|
+
void this.onFrame(text);
|
|
148
|
+
});
|
|
149
|
+
socket.on("close", () => {
|
|
150
|
+
void this.shutdown();
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
async onFrame(text) {
|
|
154
|
+
let frame;
|
|
155
|
+
try {
|
|
156
|
+
frame = parseDeviceFrame(text, "device");
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
this.gw.log.warn("device sent an invalid frame", {
|
|
160
|
+
deviceId: this.deviceId,
|
|
161
|
+
error: errMsg(e),
|
|
162
|
+
});
|
|
163
|
+
this.close(DEVICE_CLOSE.protocol, "invalid frame");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (frame.type === "hello") {
|
|
167
|
+
if (this.state !== "hello") {
|
|
168
|
+
this.close(DEVICE_CLOSE.protocol, "hello sent twice");
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (frame.protocol !== DEVICE_PROTOCOL_VERSION) {
|
|
172
|
+
this.close(DEVICE_CLOSE.protocol, "unsupported protocol");
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
clearTimeout(this.helloTimer);
|
|
176
|
+
this.state = "claiming";
|
|
177
|
+
if (!(await this.claim()))
|
|
178
|
+
return;
|
|
179
|
+
try {
|
|
180
|
+
await this.gw.machines.recordHello(this.identity.machineId, frame);
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
this.gw.log.warn("could not record a device hello", {
|
|
184
|
+
deviceId: this.deviceId,
|
|
185
|
+
error: errMsg(e),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (frame.type !== "res" || this.state === "hello") {
|
|
191
|
+
this.close(DEVICE_CLOSE.protocol, "hello expected");
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
// results are stored in any state after hello: the program sends those it kept while
|
|
195
|
+
// disconnected right after its hello, before the lease is claimed
|
|
196
|
+
await this.store(frame);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Stores one result and announces it (the relay's wire, relay.ts), only for a request taken for
|
|
200
|
+
* this device (ruling R20); anything else is dropped.
|
|
201
|
+
*/
|
|
202
|
+
async store(res) {
|
|
203
|
+
try {
|
|
204
|
+
const stored = await this.gw.redis.eval(ACCEPT, 2, deviceTakenKey(res.id), deviceResKey(res.id), this.deviceId, JSON.stringify(res));
|
|
205
|
+
if (Number(stored) !== 1) {
|
|
206
|
+
this.gw.log.warn("dropping a device result for a request not taken for its device", {
|
|
207
|
+
deviceId: this.deviceId,
|
|
208
|
+
});
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
await this.gw.bus.publish(deviceResTopic(res.id), res);
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
this.gw.log.warn("could not store a device result", {
|
|
215
|
+
deviceId: this.deviceId,
|
|
216
|
+
error: errMsg(e),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Claims the device's lease; true when this connection holds it. The newest connection
|
|
222
|
+
* wins (ruling R21): when another connection holds the lease, a takeover is published (the
|
|
223
|
+
* holder yields to any takeover) and the lease retried every {@link CLAIM_RETRY_MS} for
|
|
224
|
+
* {@link CLAIM_TIMEOUT_MS}, then 4409 (the program reconnects). A claimer never yields.
|
|
225
|
+
*/
|
|
226
|
+
async claim() {
|
|
227
|
+
const env = this.deviceId;
|
|
228
|
+
try {
|
|
229
|
+
// subscribed before claiming, so a takeover right after the claim is not missed
|
|
230
|
+
await this.subscribe(deviceTakeoverTopic(env), (p) => {
|
|
231
|
+
const token = p?.token;
|
|
232
|
+
if (this.state === "holding" && token !== this.token) {
|
|
233
|
+
this.close(DEVICE_CLOSE.replaced, "replaced by a newer connection");
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
if (this.state !== "claiming")
|
|
237
|
+
return false;
|
|
238
|
+
const ttl = this.gw.leaseTtlMs();
|
|
239
|
+
let lease = await this.gw.locks.hold(deviceLeaseKey(env), this.token, ttl);
|
|
240
|
+
if (!lease) {
|
|
241
|
+
await this.gw.bus.publish(deviceTakeoverTopic(env), { token: this.token });
|
|
242
|
+
const until = Date.now() + CLAIM_TIMEOUT_MS;
|
|
243
|
+
while (!lease && this.state === "claiming" && Date.now() < until) {
|
|
244
|
+
await new Promise((r) => setTimeout(r, CLAIM_RETRY_MS));
|
|
245
|
+
if (this.state !== "claiming")
|
|
246
|
+
break;
|
|
247
|
+
lease = await this.gw.locks.hold(deviceLeaseKey(env), this.token, ttl);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (this.state !== "claiming") {
|
|
251
|
+
// closed while claiming (replaced, revoked, shutdown, the machine left)
|
|
252
|
+
await lease?.release();
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
if (!lease) {
|
|
256
|
+
this.close(DEVICE_CLOSE.claimTimeout, "the device is held by another connection");
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
this.lease = lease;
|
|
260
|
+
this.state = "holding";
|
|
261
|
+
const onLost = () => this.close(DEVICE_CLOSE.leaseLost, "lease lost");
|
|
262
|
+
if (lease.lost.aborted) {
|
|
263
|
+
onLost();
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
lease.lost.addEventListener("abort", onLost, { once: true });
|
|
267
|
+
await this.subscribe(deviceReqTopic(env), () => this.drain());
|
|
268
|
+
await this.subscribe(deviceRevokedTopic(env), (p) => {
|
|
269
|
+
const id = p?.machineId;
|
|
270
|
+
if (id !== this.identity.machineId)
|
|
271
|
+
return;
|
|
272
|
+
// one more drain first: a stop frame whose nudge was lost still goes out before the close
|
|
273
|
+
this.drain();
|
|
274
|
+
this.chain = this.chain.then(() => this.close(DEVICE_CLOSE.revoked, "the machine was disconnected"));
|
|
275
|
+
});
|
|
276
|
+
if (this.state !== "holding")
|
|
277
|
+
return false;
|
|
278
|
+
this.gw.log.info("device connected", {
|
|
279
|
+
deviceId: env,
|
|
280
|
+
machineId: this.identity.machineId,
|
|
281
|
+
});
|
|
282
|
+
// what was queued while nobody held the machine
|
|
283
|
+
this.drain();
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
catch (e) {
|
|
287
|
+
this.gw.log.warn("could not claim a device connection", {
|
|
288
|
+
deviceId: env,
|
|
289
|
+
error: errMsg(e),
|
|
290
|
+
});
|
|
291
|
+
this.close(DEVICE_CLOSE.internal, "internal error");
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/** Subscribes for this connection; a subscription that completes after the close is ended. */
|
|
296
|
+
async subscribe(topic, handler) {
|
|
297
|
+
const unsubscribe = await this.gw.bus.subscribe(topic, handler);
|
|
298
|
+
if (this.state === "closed")
|
|
299
|
+
await unsubscribe().catch(() => { });
|
|
300
|
+
else
|
|
301
|
+
this.unsubscribes.push(unsubscribe);
|
|
302
|
+
}
|
|
303
|
+
/** Queues one drain of the request list after the ones already queued. */
|
|
304
|
+
drain() {
|
|
305
|
+
this.chain = this.chain
|
|
306
|
+
.then(() => this.drainOnce())
|
|
307
|
+
.catch((e) => {
|
|
308
|
+
this.gw.log.warn("device request drain failed", {
|
|
309
|
+
deviceId: this.deviceId,
|
|
310
|
+
error: errMsg(e),
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
async drainOnce() {
|
|
315
|
+
const key = deviceReqKey(this.deviceId);
|
|
316
|
+
while (this.state === "holding") {
|
|
317
|
+
// no lease fencing needed: the pop is atomic, so each frame reaches one connection only, and
|
|
318
|
+
// a holder that lost its lease still talks to the device's own machine (or puts it back)
|
|
319
|
+
const raw = (await this.gw.redis.eval(TAKE, 1, key, DEVICE_TAKEN_PREFIX, this.deviceId, String(this.gw.graceMs()), String(LIST_TTL_MARGIN_MS)));
|
|
320
|
+
if (raw === null)
|
|
321
|
+
return;
|
|
322
|
+
let frame;
|
|
323
|
+
try {
|
|
324
|
+
frame = parseDeviceFrame(raw, "kernel");
|
|
325
|
+
}
|
|
326
|
+
catch (e) {
|
|
327
|
+
this.gw.log.warn("dropping an invalid device request", {
|
|
328
|
+
deviceId: this.deviceId,
|
|
329
|
+
error: errMsg(e),
|
|
330
|
+
});
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
const ttlMs = this.gw.graceMs() + (frame.type === "req" ? frame.deadlineMs : 0) + LIST_TTL_MARGIN_MS;
|
|
334
|
+
if (this.state !== "holding" || this.socket.readyState !== this.socket.OPEN) {
|
|
335
|
+
// closed while popping: back to the head of the list for the next connection
|
|
336
|
+
await this.gw.redis.eval(PUT_BACK, 1, key, raw, String(ttlMs));
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
if (frame.type === "req" && Buffer.byteLength(raw) > this.gw.maxFrameBytes()) {
|
|
340
|
+
await this.store({
|
|
341
|
+
type: "res",
|
|
342
|
+
id: frame.id,
|
|
343
|
+
ok: false,
|
|
344
|
+
error: {
|
|
345
|
+
kind: "error",
|
|
346
|
+
message: "The request is larger than devices.local.maxFrameBytes",
|
|
347
|
+
},
|
|
348
|
+
});
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
this.socket.send(raw);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/** The next ping (a chain of timeouts; the lease renewal is LockService's, not this timer's). */
|
|
355
|
+
schedulePing() {
|
|
356
|
+
this.pingTimer = setTimeout(() => {
|
|
357
|
+
this.ping();
|
|
358
|
+
if (this.state !== "closed")
|
|
359
|
+
this.schedulePing();
|
|
360
|
+
}, this.gw.pingIntervalMs);
|
|
361
|
+
}
|
|
362
|
+
ping() {
|
|
363
|
+
if (this.state === "closed")
|
|
364
|
+
return;
|
|
365
|
+
if (this.missedPongs >= 2) {
|
|
366
|
+
this.gw.log.info("device connection missed two pongs", { deviceId: this.deviceId });
|
|
367
|
+
this.socket.terminate();
|
|
368
|
+
void this.shutdown();
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
this.missedPongs++;
|
|
372
|
+
this.socket.ping();
|
|
373
|
+
// a backstop for a lost nudge (the bus delivers at most once)
|
|
374
|
+
if (this.state === "holding")
|
|
375
|
+
this.drain();
|
|
376
|
+
if (this.state === "holding" && Date.now() - this.lastAuth >= REAUTH_EVERY_MS) {
|
|
377
|
+
this.lastAuth = Date.now();
|
|
378
|
+
void this.reauthenticate();
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/** The credential still stands (membership, org and device are read live). */
|
|
382
|
+
async reauthenticate() {
|
|
383
|
+
try {
|
|
384
|
+
const id = await this.gw.machines.authenticate(this.credential);
|
|
385
|
+
if (id === null || id.machineId !== this.identity.machineId) {
|
|
386
|
+
this.close(DEVICE_CLOSE.revoked, "the machine was disconnected");
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
catch (e) {
|
|
390
|
+
this.gw.log.warn("could not re-check a device credential", {
|
|
391
|
+
deviceId: this.deviceId,
|
|
392
|
+
error: errMsg(e),
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
traffic() {
|
|
397
|
+
const now = Date.now();
|
|
398
|
+
if (now - this.lastTouch < TOUCH_EVERY_MS)
|
|
399
|
+
return;
|
|
400
|
+
this.lastTouch = now;
|
|
401
|
+
this.gw.machines.touch(this.identity.machineId).catch((e) => {
|
|
402
|
+
this.gw.log.warn("could not mark a machine seen", {
|
|
403
|
+
deviceId: this.deviceId,
|
|
404
|
+
error: errMsg(e),
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
/** Closes the socket with `code` and hands the lease back; idempotent. */
|
|
409
|
+
close(code, reason) {
|
|
410
|
+
if (this.state !== "closed") {
|
|
411
|
+
try {
|
|
412
|
+
this.socket.close(code, reason);
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
this.socket.terminate();
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return this.shutdown();
|
|
419
|
+
}
|
|
420
|
+
/** Stops timers and subscriptions and releases the lease (a lost one is abandoned). */
|
|
421
|
+
shutdown() {
|
|
422
|
+
if (this.released)
|
|
423
|
+
return this.released;
|
|
424
|
+
this.state = "closed";
|
|
425
|
+
clearTimeout(this.helloTimer);
|
|
426
|
+
clearTimeout(this.pingTimer);
|
|
427
|
+
const lease = this.lease;
|
|
428
|
+
this.released = (async () => {
|
|
429
|
+
try {
|
|
430
|
+
if (lease) {
|
|
431
|
+
if (lease.lost.aborted)
|
|
432
|
+
lease.abandon();
|
|
433
|
+
else
|
|
434
|
+
await lease.release();
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
catch (e) {
|
|
438
|
+
this.gw.log.warn("could not release a device lease", {
|
|
439
|
+
deviceId: this.deviceId,
|
|
440
|
+
error: errMsg(e),
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
await Promise.all(this.unsubscribes.splice(0).map((u) => u().catch(() => { })));
|
|
444
|
+
this.gw.forget(this);
|
|
445
|
+
if (lease) {
|
|
446
|
+
this.gw.log.info("device disconnected", {
|
|
447
|
+
deviceId: this.deviceId,
|
|
448
|
+
machineId: this.identity.machineId,
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
})();
|
|
452
|
+
return this.released;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* The gateway role's half of the device relay (environments spec §13.4): holds the WebSocket
|
|
457
|
+
* connections of connected machines (`GET /device/connect`, device-routes.ts). One connection per
|
|
458
|
+
* device across replicas, under the lease `capk:device-lease:<deviceId>` (the newest
|
|
459
|
+
* connection wins: it publishes `device.takeover.<deviceId>` and the holder lets go). The
|
|
460
|
+
* holder drains `capk:device-req:<deviceId>` on every `device.req.<deviceId>` nudge,
|
|
461
|
+
* once after claiming and on every ping, marking each forwarded request taken for its device
|
|
462
|
+
* (`capk:device-taken:<id>`, TTL the reconnect grace plus the request's deadline plus a margin).
|
|
463
|
+
* A `res` is accepted only for a request taken for the socket's device: it is stored under
|
|
464
|
+
* `capk:device-res:<id>` for the rest of that TTL and published on `device.res.<id>`.
|
|
465
|
+
* `device.revoked.<deviceId>` closes the connection of that machine only (ruling R16). The
|
|
466
|
+
* sockets are this process's own; everything other replicas need is in Redis.
|
|
467
|
+
*/
|
|
468
|
+
let LocalDeviceGateway = class LocalDeviceGateway {
|
|
469
|
+
machines;
|
|
470
|
+
locks;
|
|
471
|
+
bus;
|
|
472
|
+
redis;
|
|
473
|
+
config;
|
|
474
|
+
log;
|
|
475
|
+
/** This replica's open connections (the sockets cannot live anywhere else). */
|
|
476
|
+
connections = new Set();
|
|
477
|
+
stopping = false;
|
|
478
|
+
/** How often connections are pinged ({@link PING_INTERVAL_MS}; a test seam). */
|
|
479
|
+
pingIntervalMs = PING_INTERVAL_MS;
|
|
480
|
+
constructor(machines, locks, bus, redis, config, log) {
|
|
481
|
+
this.machines = machines;
|
|
482
|
+
this.locks = locks;
|
|
483
|
+
this.bus = bus;
|
|
484
|
+
this.redis = redis;
|
|
485
|
+
this.config = config;
|
|
486
|
+
this.log = log;
|
|
487
|
+
}
|
|
488
|
+
graceMs() {
|
|
489
|
+
return this.config.get().devices.local.reconnectGraceSeconds * 1000;
|
|
490
|
+
}
|
|
491
|
+
leaseTtlMs() {
|
|
492
|
+
return this.config.get().devices.local.leaseTtlMs;
|
|
493
|
+
}
|
|
494
|
+
maxFrameBytes() {
|
|
495
|
+
return this.config.get().devices.local.maxFrameBytes;
|
|
496
|
+
}
|
|
497
|
+
/** Who a `Bearer` machine credential stands for, or null (checked before the upgrade). */
|
|
498
|
+
authenticate(credential) {
|
|
499
|
+
return this.machines.authenticate(credential);
|
|
500
|
+
}
|
|
501
|
+
/** Serves one upgraded socket of an authenticated machine until it closes. */
|
|
502
|
+
accept(socket, identity, credential) {
|
|
503
|
+
if (this.stopping) {
|
|
504
|
+
socket.close(DEVICE_CLOSE.shutdown, "shutting down");
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
const conn = new DeviceConnection(this, socket, identity, credential);
|
|
508
|
+
this.connections.add(conn);
|
|
509
|
+
conn.start();
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* How many devices this process holds the connection of (replica presence reports it): only
|
|
513
|
+
* sockets past the hello that hold their device's lease, so a socket still claiming or being
|
|
514
|
+
* replaced by a newer one does not count a device twice.
|
|
515
|
+
*/
|
|
516
|
+
connectionCount() {
|
|
517
|
+
let n = 0;
|
|
518
|
+
for (const c of this.connections)
|
|
519
|
+
if (c.state === "holding")
|
|
520
|
+
n++;
|
|
521
|
+
return n;
|
|
522
|
+
}
|
|
523
|
+
/** @internal a connection that ended. */
|
|
524
|
+
forget(conn) {
|
|
525
|
+
this.connections.delete(conn);
|
|
526
|
+
}
|
|
527
|
+
/** Closes every connection (1001) and hands their leases back. */
|
|
528
|
+
async stop() {
|
|
529
|
+
this.stopping = true;
|
|
530
|
+
await Promise.all([...this.connections].map((c) => c.close(DEVICE_CLOSE.shutdown, "shutting down")));
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
LocalDeviceGateway = __decorate([
|
|
534
|
+
Injectable(),
|
|
535
|
+
__param(0, Inject(MachinesService)),
|
|
536
|
+
__param(1, Inject(LockService)),
|
|
537
|
+
__param(2, Inject(KERNEL_BUS)),
|
|
538
|
+
__param(3, Inject(REDIS)),
|
|
539
|
+
__param(4, Inject(KernelConfigService)),
|
|
540
|
+
__param(5, Inject(KERNEL_LOGGER))
|
|
541
|
+
], LocalDeviceGateway);
|
|
542
|
+
export { LocalDeviceGateway };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { ExecResult, FileSystemHandle, SandboxHandle, SandboxLimits, SandboxProvider, SandboxRoots } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
3
|
+
import { SandboxService } from "../sandbox/sandbox.service.js";
|
|
4
|
+
import { LocalDeviceRelay } from "./relay.js";
|
|
5
|
+
import { DeviceTargets } from "./targets.js";
|
|
6
|
+
/** Extra time the machine gets beyond a command's own timeout (spawn, output, the trip back). */
|
|
7
|
+
export declare const EXEC_DEADLINE_MARGIN_MS = 5000;
|
|
8
|
+
/** How long the machine may take for one non-exec operation. */
|
|
9
|
+
export declare const OP_DEADLINE_MS = 30000;
|
|
10
|
+
/**
|
|
11
|
+
* Room left in a frame for everything around a `readFile` result's base64 data (the `res`
|
|
12
|
+
* envelope): a read is clamped so the machine's answer fits `devices.local.maxFrameBytes`
|
|
13
|
+
* (ruling R26).
|
|
14
|
+
*/
|
|
15
|
+
export declare const FRAME_ENVELOPE_BYTES: number;
|
|
16
|
+
/** The most raw bytes whose base64 plus {@link FRAME_ENVELOPE_BYTES} fit in `maxFrameBytes`. */
|
|
17
|
+
export declare const maxReadBytes: (maxFrameBytes: number) => number;
|
|
18
|
+
/**
|
|
19
|
+
* The handle of an instance on a machine: the device id (ruling R1: the relay is keyed by
|
|
20
|
+
* device), the roots the machine reported at `create`, and the org's effective limits at
|
|
21
|
+
* creation (for the record: every `exec` carries the org's limits read at that moment, ruling
|
|
22
|
+
* R27, so the machine intersects its local policy with the current egress).
|
|
23
|
+
*/
|
|
24
|
+
export interface LocalDeviceHandle extends SandboxHandle {
|
|
25
|
+
roots: SandboxRoots;
|
|
26
|
+
limits: SandboxLimits;
|
|
27
|
+
}
|
|
28
|
+
/** The device id of a `cap-device-<deviceId>` name; undefined for any other name. */
|
|
29
|
+
export declare const deviceIdOfName: (name: string) => string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* The kernel-internal provider `@local` (environments spec §13.5): every operation runs on the
|
|
32
|
+
* device's connected machine through the {@link LocalDeviceRelay}. The file system is the
|
|
33
|
+
* machine's device directory (the program creates it on first use), so `createFileSystem`
|
|
34
|
+
* touches nothing; `suspend` and `destroy` do nothing (the machine is not the platform's to stop);
|
|
35
|
+
* deleting the device leaves the files on the machine where they are. Nothing here throws `device.offline` on the cleanup paths (ruling R9).
|
|
36
|
+
*
|
|
37
|
+
* The files on a machine are its owner's: `destroyFileSystem` (a files reset, the deletion sweep)
|
|
38
|
+
* does nothing; the deletion's `stop` comes from `MachinesService.revokeActive` (ruling R24).
|
|
39
|
+
*/
|
|
40
|
+
export declare class LocalDeviceProvider implements SandboxProvider {
|
|
41
|
+
private readonly relay;
|
|
42
|
+
private readonly targets;
|
|
43
|
+
private readonly sandbox;
|
|
44
|
+
private readonly config;
|
|
45
|
+
readonly concurrentExec: true;
|
|
46
|
+
readonly sessionIsolation = false;
|
|
47
|
+
constructor(relay: LocalDeviceRelay, targets: Pick<DeviceTargets, "orgOf" | "machineRoots">, sandbox: Pick<SandboxService, "orgLimits">, config: Pick<KernelConfigService, "get">);
|
|
48
|
+
createFileSystem(args: {
|
|
49
|
+
name: string;
|
|
50
|
+
limits: SandboxLimits;
|
|
51
|
+
signal: AbortSignal;
|
|
52
|
+
}): Promise<FileSystemHandle>;
|
|
53
|
+
/** The files are the machine owner's: nothing to do (ruling R24; never a `stop`). */
|
|
54
|
+
destroyFileSystem(_fs: FileSystemHandle, signal: AbortSignal): Promise<void>;
|
|
55
|
+
destroyFileSystemByName(_name: string, signal: AbortSignal): Promise<void>;
|
|
56
|
+
create(args: {
|
|
57
|
+
name: string;
|
|
58
|
+
image?: string;
|
|
59
|
+
limits: SandboxLimits;
|
|
60
|
+
fileSystem: FileSystemHandle;
|
|
61
|
+
signal: AbortSignal;
|
|
62
|
+
}): Promise<LocalDeviceHandle>;
|
|
63
|
+
/**
|
|
64
|
+
* Needs the machine online. `gone` (the kernel recreates the instance) when the active machine
|
|
65
|
+
* last reported other roots than the instance was created with (a new login into another
|
|
66
|
+
* directory or mode, ruling R23).
|
|
67
|
+
*/
|
|
68
|
+
resume(h: SandboxHandle, signal: AbortSignal): Promise<"resumed" | "gone">;
|
|
69
|
+
suspend(_h: SandboxHandle, signal: AbortSignal): Promise<void>;
|
|
70
|
+
destroy(_h: SandboxHandle, signal: AbortSignal): Promise<void>;
|
|
71
|
+
destroyByName(_name: string, signal: AbortSignal): Promise<void>;
|
|
72
|
+
killAll(h: SandboxHandle, signal: AbortSignal): Promise<void>;
|
|
73
|
+
killTagged(h: SandboxHandle, tags: string[], signal: AbortSignal): Promise<void>;
|
|
74
|
+
exec(h: SandboxHandle, args: Parameters<SandboxProvider["exec"]>[1]): Promise<ExecResult>;
|
|
75
|
+
readFile(h: SandboxHandle, path: string, opts: {
|
|
76
|
+
maxBytes: number;
|
|
77
|
+
signal: AbortSignal;
|
|
78
|
+
}): Promise<{
|
|
79
|
+
data: Uint8Array;
|
|
80
|
+
truncated: boolean;
|
|
81
|
+
} | null>;
|
|
82
|
+
writeFile(h: SandboxHandle, path: string, data: Uint8Array, signal: AbortSignal): Promise<void>;
|
|
83
|
+
stat(h: SandboxHandle, path: string, signal: AbortSignal): Promise<{
|
|
84
|
+
size: number;
|
|
85
|
+
isDir: boolean;
|
|
86
|
+
} | null>;
|
|
87
|
+
/** The org's effective limits now (ruling R27); a deleted device is not found. */
|
|
88
|
+
private currentLimits;
|
|
89
|
+
}
|