@capybara-hq/kernel 0.1.0-rc.1 → 0.1.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bootstrap.json +85 -5
- package/dist/admin/admin.controller.d.ts +52 -71
- package/dist/admin/admin.controller.js +117 -63
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/admin.schemas.d.ts +57 -0
- package/dist/admin/admin.schemas.js +50 -0
- package/dist/admin/extensions.controller.d.ts +47 -16
- package/dist/admin/extensions.controller.js +94 -23
- package/dist/admin/extensions.schemas.d.ts +7 -0
- package/dist/admin/extensions.schemas.js +10 -0
- package/dist/admin/limit-defaults.d.ts +20 -0
- package/dist/admin/limit-defaults.js +10 -0
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +9 -9
- package/dist/admin/setup.controller.js +28 -26
- package/dist/admin/setup.service.d.ts +20 -28
- package/dist/admin/setup.service.js +65 -65
- package/dist/agents/agent-lookup.d.ts +72 -0
- package/dist/agents/agent-lookup.js +208 -0
- 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 +54 -169
- package/dist/agents/agents.controller.js +172 -37
- package/dist/agents/agents.module.d.ts +10 -0
- package/dist/agents/agents.module.js +71 -0
- package/dist/agents/agents.schemas.d.ts +389 -0
- package/dist/agents/agents.schemas.js +126 -0
- package/dist/agents/agents.service.d.ts +104 -76
- package/dist/agents/agents.service.js +509 -383
- package/dist/agents/definition.d.ts +133 -21
- package/dist/agents/definition.js +361 -41
- 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 +868 -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 +78 -6
- package/dist/agents/templates.controller.js +154 -8
- package/dist/agents/templates.d.ts +132 -30
- package/dist/agents/templates.js +500 -46
- package/dist/agents/templates.schemas.d.ts +20 -0
- package/dist/agents/templates.schemas.js +45 -0
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -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 +77 -0
- package/dist/background/tasks.service.js +216 -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 +102 -52
- package/dist/catalog/admin-catalog.controller.js +222 -67
- package/dist/catalog/admin-catalog.schemas.d.ts +72 -0
- package/dist/catalog/admin-catalog.schemas.js +92 -0
- package/dist/catalog/catalog-content.d.ts +232 -0
- package/dist/catalog/catalog-content.js +367 -0
- package/dist/catalog/catalog-files.d.ts +41 -0
- package/dist/catalog/catalog-files.js +86 -0
- package/dist/catalog/catalog-import.module.d.ts +7 -0
- package/dist/catalog/catalog-import.module.js +60 -0
- package/dist/catalog/catalog-items.d.ts +290 -0
- package/dist/catalog/catalog-items.js +676 -0
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1124 -0
- package/dist/catalog/catalog.module.d.ts +12 -0
- package/dist/catalog/catalog.module.js +81 -0
- package/dist/catalog/catalog.service.d.ts +141 -206
- package/dist/catalog/catalog.service.js +237 -528
- package/dist/catalog/claude/agents.js +15 -10
- package/dist/catalog/cli.d.ts +14 -3
- package/dist/catalog/cli.js +39 -32
- 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 +90 -0
- package/dist/catalog/component-scope.controller.js +234 -0
- package/dist/catalog/component-scope.schemas.d.ts +114 -0
- package/dist/catalog/component-scope.schemas.js +97 -0
- package/dist/catalog/component-scope.service.d.ts +327 -0
- package/dist/catalog/component-scope.service.js +990 -0
- package/dist/catalog/component-state.d.ts +188 -0
- package/dist/catalog/component-state.js +455 -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 +45 -0
- package/dist/catalog/job-ids.js +40 -0
- package/dist/catalog/jobs.d.ts +27 -0
- package/dist/catalog/jobs.js +70 -0
- package/dist/catalog/locks.d.ts +24 -0
- package/dist/catalog/locks.js +63 -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 +53 -44
- package/dist/catalog/marketplaces.controller.js +146 -51
- package/dist/catalog/marketplaces.schemas.d.ts +48 -0
- package/dist/catalog/marketplaces.schemas.js +53 -0
- package/dist/catalog/marketplaces.service.d.ts +136 -26
- package/dist/catalog/marketplaces.service.js +663 -281
- package/dist/catalog/org-catalog.controller.d.ts +115 -63
- package/dist/catalog/org-catalog.controller.js +207 -100
- package/dist/catalog/org-catalog.schemas.d.ts +88 -0
- package/dist/catalog/org-catalog.schemas.js +93 -0
- package/dist/catalog/org-catalog.service.d.ts +89 -216
- package/dist/catalog/org-catalog.service.js +431 -472
- 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 +113 -0
- package/dist/catalog/org-extension.controller.js +271 -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 +801 -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 +223 -0
- package/dist/catalog/platform-components.js +763 -0
- package/dist/catalog/platform-migration.d.ts +115 -0
- package/dist/catalog/platform-migration.js +582 -0
- package/dist/catalog/plugin-import.d.ts +270 -68
- package/dist/catalog/plugin-import.js +1004 -277
- package/dist/catalog/plugin-install.d.ts +251 -65
- package/dist/catalog/plugin-install.js +1128 -344
- package/dist/catalog/plugin-package.js +14 -1
- package/dist/catalog/plugin-upgrade.d.ts +301 -188
- package/dist/catalog/plugin-upgrade.js +1256 -1068
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +205 -117
- package/dist/catalog/requests.service.js +612 -369
- 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 +118 -0
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +11 -4
- package/dist/channels/cards.d.ts +33 -11
- package/dist/channels/cards.js +96 -24
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +130 -0
- package/dist/channels/channels.schemas.d.ts +37 -0
- package/dist/channels/channels.schemas.js +38 -0
- package/dist/channels/connections.controller.d.ts +44 -37
- package/dist/channels/connections.controller.js +83 -38
- package/dist/channels/connections.service.d.ts +101 -30
- package/dist/channels/connections.service.js +380 -147
- package/dist/channels/inbound.d.ts +44 -38
- package/dist/channels/inbound.js +190 -44
- package/dist/channels/job-ids.d.ts +10 -0
- package/dist/channels/job-ids.js +10 -0
- package/dist/channels/jobs.d.ts +85 -0
- package/dist/channels/jobs.js +157 -0
- package/dist/channels/outbound.d.ts +71 -80
- package/dist/channels/outbound.js +219 -202
- package/dist/channels/phrases.d.ts +33 -2
- package/dist/channels/phrases.js +29 -1
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +34 -8
- package/dist/channels/threads.js +79 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- package/dist/config/docs.js +5 -1
- package/dist/config/load.d.ts +3 -2
- package/dist/config/load.js +3 -2
- package/dist/config/nacos-source.js +11 -2
- package/dist/config/schema.d.ts +36 -2
- package/dist/config/schema.js +226 -25
- package/dist/conversations/access.d.ts +31 -0
- package/dist/conversations/access.js +110 -0
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/artifacts.d.ts +11 -11
- package/dist/conversations/artifacts.js +36 -10
- package/dist/conversations/attachments.controller.d.ts +1 -1
- package/dist/conversations/attachments.controller.js +8 -6
- package/dist/conversations/attachments.module.d.ts +7 -0
- package/dist/conversations/attachments.module.js +25 -0
- package/dist/conversations/attachments.service.d.ts +60 -22
- package/dist/conversations/attachments.service.js +249 -51
- package/dist/conversations/conversations.controller.d.ts +86 -50
- package/dist/conversations/conversations.controller.js +184 -103
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +72 -0
- package/dist/conversations/conversations.schemas.d.ts +52 -0
- package/dist/conversations/conversations.schemas.js +79 -0
- package/dist/conversations/conversations.service.d.ts +166 -49
- package/dist/conversations/conversations.service.js +383 -179
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +64 -27
- package/dist/conversations/event-log.js +167 -31
- package/dist/conversations/events.d.ts +252 -9
- package/dist/conversations/events.js +243 -32
- package/dist/conversations/files.d.ts +10 -10
- package/dist/conversations/files.js +37 -11
- package/dist/conversations/idem-keys.d.ts +5 -0
- package/dist/conversations/idem-keys.js +5 -0
- package/dist/conversations/job-ids.d.ts +6 -0
- package/dist/conversations/job-ids.js +6 -0
- package/dist/conversations/message-context.d.ts +79 -0
- package/dist/conversations/message-context.js +145 -0
- package/dist/conversations/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +53 -58
- package/dist/conversations/queue.js +37 -293
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +350 -0
- package/dist/conversations/titles.d.ts +83 -27
- package/dist/conversations/titles.js +195 -71
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +26 -1
- package/dist/ctx/create-ctx.js +45 -16
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +550 -25
- package/dist/db/pool.d.ts +10 -0
- package/dist/db/pool.js +4 -0
- package/dist/devices/device-auth.controller.d.ts +42 -0
- package/dist/devices/device-auth.controller.js +116 -0
- package/dist/devices/device-auth.d.ts +119 -0
- package/dist/devices/device-auth.js +403 -0
- package/dist/devices/device-auth.module.d.ts +7 -0
- package/dist/devices/device-auth.module.js +25 -0
- package/dist/devices/device-gateway.d.ts +128 -0
- package/dist/devices/device-gateway.js +530 -0
- package/dist/devices/device-provider.d.ts +89 -0
- package/dist/devices/device-provider.js +151 -0
- package/dist/devices/device-routes.d.ts +36 -0
- package/dist/devices/device-routes.js +90 -0
- package/dist/devices/devices.module.d.ts +16 -0
- package/dist/devices/devices.module.js +44 -0
- package/dist/devices/dto.d.ts +66 -0
- package/dist/devices/dto.js +44 -0
- package/dist/devices/keys.d.ts +25 -0
- package/dist/devices/keys.js +25 -0
- package/dist/devices/machines.d.ts +118 -0
- package/dist/devices/machines.js +366 -0
- package/dist/devices/relay.d.ts +100 -0
- package/dist/devices/relay.js +373 -0
- package/dist/devices/targets.d.ts +28 -0
- package/dist/devices/targets.js +73 -0
- package/dist/environments/access.d.ts +66 -0
- package/dist/environments/access.js +113 -0
- package/dist/environments/conversation-environments.d.ts +75 -0
- package/dist/environments/conversation-environments.js +231 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +36 -0
- package/dist/environments/environments.controller.js +124 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +31 -0
- package/dist/environments/environments.schemas.d.ts +3 -0
- package/dist/environments/environments.schemas.js +14 -0
- package/dist/environments/environments.service.d.ts +251 -0
- package/dist/environments/environments.service.js +791 -0
- package/dist/environments/label.d.ts +11 -0
- package/dist/environments/label.js +25 -0
- package/dist/environments/legacy-cleanup.job.d.ts +34 -0
- package/dist/environments/legacy-cleanup.job.js +141 -0
- package/dist/errors.d.ts +135 -2
- package/dist/errors.js +135 -2
- package/dist/evals/budget.d.ts +42 -21
- package/dist/evals/budget.js +114 -62
- package/dist/evals/evals.module.d.ts +31 -0
- package/dist/evals/evals.module.js +114 -0
- package/dist/evals/evals.schemas.d.ts +110 -0
- package/dist/evals/evals.schemas.js +107 -0
- package/dist/evals/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -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 +75 -10
- package/dist/evals/run-replay.js +218 -94
- package/dist/evals/runs.controller.d.ts +3 -58
- package/dist/evals/runs.controller.js +18 -50
- package/dist/evals/runs.service.d.ts +31 -52
- package/dist/evals/runs.service.js +281 -255
- package/dist/evals/sets.controller.d.ts +3 -29
- package/dist/evals/sets.controller.js +18 -39
- package/dist/evals/sets.service.d.ts +29 -13
- package/dist/evals/sets.service.js +262 -202
- package/dist/evals/snapshot.d.ts +5 -4
- package/dist/evals/snapshot.js +17 -4
- package/dist/evals/step-replay.d.ts +6 -8
- package/dist/evals/step-replay.js +17 -10
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.d.ts +2 -2
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +13 -7
- package/dist/evals/trajectory.service.js +56 -21
- package/dist/evals/worker.d.ts +48 -31
- package/dist/evals/worker.js +229 -124
- package/dist/extensions/admin-ops.d.ts +133 -41
- package/dist/extensions/admin-ops.js +378 -172
- package/dist/extensions/admin-view.d.ts +82 -32
- package/dist/extensions/admin-view.js +284 -71
- package/dist/extensions/approvals.d.ts +24 -10
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +112 -45
- package/dist/extensions/bootstrap.d.ts +99 -36
- package/dist/extensions/bootstrap.js +290 -134
- package/dist/extensions/cli.d.ts +32 -10
- package/dist/extensions/cli.js +52 -98
- package/dist/extensions/config-hash.d.ts +10 -0
- package/dist/extensions/config-hash.js +38 -0
- package/dist/extensions/config-issues.d.ts +19 -0
- package/dist/extensions/config-issues.js +48 -0
- 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 +55 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +146 -70
- package/dist/extensions/deployment-config.js +439 -246
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +96 -0
- package/dist/extensions/hooks.d.ts +40 -6
- package/dist/extensions/hooks.js +83 -17
- package/dist/extensions/host.d.ts +161 -80
- package/dist/extensions/host.js +505 -213
- package/dist/extensions/installs.d.ts +73 -19
- package/dist/extensions/installs.js +174 -37
- package/dist/extensions/job-ids.d.ts +6 -0
- package/dist/extensions/job-ids.js +6 -0
- package/dist/extensions/lifecycle-topics.d.ts +18 -0
- package/dist/extensions/lifecycle-topics.js +18 -0
- package/dist/extensions/lifecycle.d.ts +35 -47
- package/dist/extensions/lifecycle.js +103 -39
- package/dist/extensions/locks.d.ts +45 -0
- package/dist/extensions/locks.js +112 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.d.ts +141 -49
- package/dist/extensions/org-config.js +471 -243
- 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 +14 -1
- package/dist/extensions/package.js +51 -2
- package/dist/extensions/permission-view.d.ts +59 -6
- package/dist/extensions/permission-view.js +7 -5
- package/dist/extensions/plugin-guides.d.ts +129 -0
- package/dist/extensions/plugin-guides.js +283 -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 +50 -2
- package/dist/extensions/registry.js +91 -4
- 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 +19 -10
- package/dist/extensions/sources.js +34 -13
- package/dist/extensions/state.module.d.ts +9 -0
- package/dist/extensions/state.module.js +38 -0
- package/dist/extensions/unavailable.d.ts +50 -0
- package/dist/extensions/unavailable.js +115 -0
- package/dist/files/files.module.d.ts +3 -0
- package/dist/files/files.module.js +22 -0
- package/dist/files/previewers.controller.d.ts +7 -2
- package/dist/files/previewers.controller.js +19 -12
- package/dist/files/previewers.d.ts +21 -19
- package/dist/files/previewers.js +114 -38
- package/dist/files/previewers.schemas.d.ts +10 -0
- package/dist/files/previewers.schemas.js +9 -0
- package/dist/http/adapter.d.ts +3 -0
- package/dist/http/adapter.js +25 -0
- package/dist/http/api.module.d.ts +3 -110
- package/dist/http/api.module.js +86 -358
- package/dist/http/app.d.ts +22 -17
- package/dist/http/app.js +46 -65
- package/dist/http/error-filter.module.d.ts +5 -0
- package/dist/http/error-filter.module.js +18 -0
- package/dist/http/error.filter.js +2 -2
- package/dist/http/{gateway.module.d.ts → gateway-routes.d.ts} +7 -3
- package/dist/http/gateway-routes.js +16 -0
- 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 +130 -38
- package/dist/identity/accounts.js +373 -186
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +9 -5
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +40 -30
- package/dist/identity/auth.guard.d.ts +16 -8
- package/dist/identity/auth.guard.js +41 -13
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/cookies.d.ts +26 -5
- package/dist/identity/cookies.js +58 -6
- package/dist/identity/external-identity-lock.d.ts +17 -0
- package/dist/identity/external-identity-lock.js +39 -0
- package/dist/identity/external.d.ts +19 -15
- package/dist/identity/external.js +163 -125
- package/dist/identity/identity.module.d.ts +6 -0
- package/dist/identity/identity.module.js +59 -0
- 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 +32 -15
- package/dist/identity/me.controller.js +78 -33
- package/dist/identity/me.schemas.d.ts +14 -0
- package/dist/identity/me.schemas.js +17 -0
- package/dist/identity/principal.d.ts +11 -3
- package/dist/identity/principal.js +11 -3
- package/dist/identity/sessions.d.ts +24 -10
- package/dist/identity/sessions.js +119 -42
- package/dist/identity/settings.d.ts +42 -23
- package/dist/identity/settings.js +137 -72
- package/dist/identity/sso.controller.d.ts +7 -7
- package/dist/identity/sso.controller.js +13 -9
- package/dist/identity/sso.d.ts +9 -12
- package/dist/identity/sso.js +54 -24
- package/dist/identity/super-admin.d.ts +20 -0
- package/dist/identity/super-admin.js +81 -0
- package/dist/inbox/inbox.module.d.ts +6 -0
- package/dist/inbox/inbox.module.js +26 -0
- package/dist/inbox/inbox.schemas.d.ts +8 -0
- package/dist/inbox/inbox.schemas.js +11 -0
- package/dist/inbox/inbox.service.d.ts +68 -11
- package/dist/inbox/inbox.service.js +104 -13
- 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 +151 -0
- package/dist/inbox/platform-inbox.service.js +263 -0
- package/dist/inbox/platform-notices.d.ts +19 -0
- package/dist/inbox/platform-notices.js +9 -0
- package/dist/index.d.ts +22 -13
- package/dist/index.js +16 -7
- package/dist/infra/cache/cache.module.d.ts +3 -0
- package/dist/infra/cache/cache.module.js +16 -0
- package/dist/infra/cache/cache.service.d.ts +21 -0
- package/dist/infra/cache/cache.service.js +80 -0
- package/dist/infra/cache/cacheable.decorator.d.ts +32 -0
- package/dist/infra/cache/cacheable.decorator.js +83 -0
- package/dist/infra/cli/kernel-cli.module.d.ts +66 -0
- package/dist/infra/cli/kernel-cli.module.js +173 -0
- package/dist/infra/close-within.d.ts +15 -0
- package/dist/infra/close-within.js +36 -0
- package/dist/infra/config/config.module.d.ts +13 -0
- package/dist/infra/config/config.module.js +39 -0
- package/dist/infra/config/kernel-config.service.d.ts +25 -0
- package/dist/infra/config/kernel-config.service.js +157 -0
- package/dist/infra/database/after-commit.d.ts +6 -0
- package/dist/infra/database/after-commit.js +9 -0
- package/dist/infra/database/database.module.d.ts +25 -0
- package/dist/infra/database/database.module.js +91 -0
- package/dist/infra/database/kernel-db.d.ts +22 -0
- package/dist/infra/database/kernel-db.js +65 -0
- package/dist/infra/database/transaction-host.d.ts +50 -0
- package/dist/infra/database/transaction-host.js +125 -0
- package/dist/infra/database/transactional.decorator.d.ts +15 -0
- package/dist/infra/database/transactional.decorator.js +27 -0
- package/dist/infra/database/xact-lock.d.ts +17 -0
- package/dist/infra/database/xact-lock.js +43 -0
- package/dist/infra/events/kernel-events.d.ts +121 -0
- package/dist/infra/events/kernel-events.js +65 -0
- package/dist/infra/health/health.controller.d.ts +26 -0
- package/dist/infra/health/health.controller.js +104 -0
- package/dist/infra/health/health.module.d.ts +9 -0
- package/dist/infra/health/health.module.js +24 -0
- package/dist/infra/health/health.options.d.ts +10 -0
- package/dist/infra/health/health.options.js +15 -0
- package/dist/infra/health/shutdown-state.d.ts +6 -0
- package/dist/infra/health/shutdown-state.js +2 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.d.ts +6 -0
- package/dist/infra/lifecycle/graceful-shutdown.module.js +23 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.d.ts +70 -0
- package/dist/infra/lifecycle/graceful-shutdown.service.js +135 -0
- package/dist/infra/lifecycle/process-guards.d.ts +52 -0
- package/dist/infra/lifecycle/process-guards.js +90 -0
- package/dist/infra/lifecycle/shutdown-signals.d.ts +30 -0
- package/dist/infra/lifecycle/shutdown-signals.js +48 -0
- package/dist/infra/lock/key-template.d.ts +13 -0
- package/dist/infra/lock/key-template.js +46 -0
- package/dist/infra/lock/lock.module.d.ts +3 -0
- package/dist/infra/lock/lock.module.js +16 -0
- package/dist/infra/lock/lock.service.d.ts +120 -0
- package/dist/infra/lock/lock.service.js +343 -0
- package/dist/infra/lock/shared-lease.d.ts +44 -0
- package/dist/infra/lock/shared-lease.js +121 -0
- package/dist/infra/lock/with-lock.decorator.d.ts +28 -0
- package/dist/infra/lock/with-lock.decorator.js +49 -0
- package/dist/infra/logging/logging.module.d.ts +18 -0
- package/dist/infra/logging/logging.module.js +52 -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/configured-processor.d.ts +18 -0
- package/dist/infra/queue/configured-processor.js +23 -0
- package/dist/infra/queue/job-failure.d.ts +18 -0
- package/dist/infra/queue/job-failure.js +26 -0
- package/dist/infra/queue/queue-shutdown.d.ts +27 -0
- package/dist/infra/queue/queue-shutdown.js +81 -0
- package/dist/infra/queue/queue.module.d.ts +16 -0
- package/dist/infra/queue/queue.module.js +61 -0
- package/dist/infra/queue/redis-connection.d.ts +13 -0
- package/dist/infra/queue/redis-connection.js +25 -0
- package/dist/infra/queue/retired-schedulers.d.ts +7 -0
- package/dist/infra/queue/retired-schedulers.js +9 -0
- package/dist/infra/queue/run-job.d.ts +16 -0
- package/dist/infra/queue/run-job.js +19 -0
- package/dist/infra/redis/redis.module.d.ts +24 -0
- package/dist/infra/redis/redis.module.js +91 -0
- package/dist/infra/schedule/cron-tick.d.ts +12 -0
- package/dist/infra/schedule/cron-tick.js +25 -0
- package/dist/infra/schedule/locked-cron.decorator.d.ts +27 -0
- package/dist/infra/schedule/locked-cron.decorator.js +53 -0
- package/dist/infra/schedule/locked-interval.d.ts +69 -0
- package/dist/infra/schedule/locked-interval.js +190 -0
- package/dist/infra/schedule/locked-tick.d.ts +90 -0
- package/dist/infra/schedule/locked-tick.js +137 -0
- package/dist/infra/schedule/schedule.module.d.ts +8 -0
- package/dist/infra/schedule/schedule.module.js +27 -0
- package/dist/infra/schedule/scheduled-runs.d.ts +69 -0
- package/dist/infra/schedule/scheduled-runs.js +163 -0
- package/dist/infra/swagger/swagger.d.ts +16 -0
- package/dist/infra/swagger/swagger.js +31 -0
- package/dist/infra/throttler/credential-throttler.d.ts +35 -0
- package/dist/infra/throttler/credential-throttler.js +77 -0
- package/dist/infra/throttler/named-throttlers.d.ts +36 -0
- package/dist/infra/throttler/named-throttlers.js +157 -0
- package/dist/infra/throttler/redis-throttler-storage.d.ts +38 -0
- package/dist/infra/throttler/redis-throttler-storage.js +130 -0
- package/dist/infra/throttler/throttler.guard.d.ts +23 -0
- package/dist/infra/throttler/throttler.guard.js +68 -0
- package/dist/infra/throttler/throttler.module.d.ts +15 -0
- package/dist/infra/throttler/throttler.module.js +53 -0
- package/dist/infra/tokens.d.ts +20 -0
- package/dist/infra/tokens.js +20 -0
- package/dist/infra/validation/create-zod-dto.d.ts +23 -0
- package/dist/infra/validation/create-zod-dto.js +35 -0
- package/dist/infra/validation/parse-with-zod.d.ts +7 -0
- package/dist/infra/validation/parse-with-zod.js +12 -0
- package/dist/infra/validation/validation.module.d.ts +3 -0
- package/dist/infra/validation/validation.module.js +16 -0
- package/dist/infra/validation/zod-params.d.ts +7 -0
- package/dist/infra/validation/zod-params.js +42 -0
- package/dist/infra/validation/zod-validation.pipe.d.ts +11 -0
- package/dist/infra/validation/zod-validation.pipe.js +31 -0
- package/dist/kernel.d.ts +9 -244
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +145 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +465 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-context.d.ts +2 -0
- package/dist/log-context.js +4 -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 +7 -0
- package/dist/models/models.module.js +36 -0
- 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 +13 -5
- package/dist/models/prices.js +69 -39
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +16 -11
- package/dist/models/purposes.d.ts +103 -23
- package/dist/models/purposes.js +208 -77
- package/dist/orgs/directory-sync.controller.d.ts +1 -1
- package/dist/orgs/directory-sync.controller.js +2 -2
- package/dist/orgs/directory-sync.d.ts +74 -35
- package/dist/orgs/directory-sync.js +243 -132
- package/dist/orgs/invitations.controller.d.ts +8 -8
- package/dist/orgs/invitations.controller.js +27 -26
- package/dist/orgs/invitations.service.d.ts +12 -9
- package/dist/orgs/invitations.service.js +130 -92
- package/dist/orgs/job-ids.d.ts +8 -0
- package/dist/orgs/job-ids.js +8 -0
- package/dist/orgs/members.service.d.ts +19 -12
- package/dist/orgs/members.service.js +161 -117
- package/dist/orgs/offboarding.d.ts +61 -60
- package/dist/orgs/offboarding.js +206 -95
- package/dist/orgs/org-lock.d.ts +33 -19
- package/dist/orgs/org-lock.js +94 -35
- package/dist/orgs/org.guard.d.ts +11 -1
- package/dist/orgs/org.guard.js +45 -34
- package/dist/orgs/orgs.controller.d.ts +13 -16
- package/dist/orgs/orgs.controller.js +29 -20
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +71 -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 +47 -21
- package/dist/orgs/orgs.service.js +166 -91
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +2 -2
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +45 -14
- package/dist/orgs/settings.service.js +110 -51
- package/dist/overrides.d.ts +63 -0
- package/dist/overrides.js +34 -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 +667 -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 +90 -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.ops.d.ts +36 -0
- package/dist/platform/ops/admin.ops.js +389 -0
- package/dist/platform/ops/agent-skills.ops.d.ts +24 -0
- package/dist/platform/ops/agent-skills.ops.js +226 -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 +717 -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 +74 -0
- package/dist/platform/ops/catalog-admin.ops.js +599 -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 +853 -0
- package/dist/platform/ops/connectors.ops.d.ts +17 -0
- package/dist/platform/ops/connectors.ops.js +188 -0
- package/dist/platform/ops/conversations.ops.d.ts +30 -0
- package/dist/platform/ops/conversations.ops.js +470 -0
- package/dist/platform/ops/environments.ops.d.ts +26 -0
- package/dist/platform/ops/environments.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 +378 -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 +29 -0
- package/dist/platform/ops/org-plugins.ops.js +329 -0
- package/dist/platform/ops/org-settings.ops.d.ts +16 -0
- package/dist/platform/ops/org-settings.ops.js +102 -0
- package/dist/platform/ops/orgs.ops.d.ts +28 -0
- package/dist/platform/ops/orgs.ops.js +295 -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 +28 -0
- package/dist/platform/ops/platform.ops.js +204 -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/skills.ops.d.ts +17 -0
- package/dist/platform/ops/skills.ops.js +216 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -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 +39 -0
- package/dist/platform/platform-ops.module.js +122 -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 +63 -0
- package/dist/roles/gateway-role.d.ts +54 -0
- package/dist/roles/gateway-role.js +118 -0
- package/dist/roles/gateway.module.d.ts +9 -0
- package/dist/roles/gateway.module.js +31 -0
- package/dist/roles/worker-role.d.ts +65 -0
- package/dist/roles/worker-role.js +151 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +106 -0
- package/dist/runtime/abort.js +19 -2
- package/dist/runtime/checkpointer.d.ts +8 -3
- package/dist/runtime/checkpointer.js +87 -55
- 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/environment-paths.d.ts +40 -0
- package/dist/runtime/context/environment-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/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +11 -4
- package/dist/runtime/hook-calls.js +41 -13
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +37 -18
- package/dist/runtime/loop.d.ts +42 -6
- package/dist/runtime/loop.js +14 -0
- package/dist/runtime/maintenance-queue.d.ts +10 -0
- package/dist/runtime/maintenance-queue.js +10 -0
- package/dist/runtime/maintenance.d.ts +50 -74
- package/dist/runtime/maintenance.js +166 -137
- package/dist/runtime/model-call.d.ts +61 -15
- package/dist/runtime/model-call.js +128 -84
- package/dist/runtime/providers.d.ts +158 -27
- package/dist/runtime/providers.js +373 -63
- package/dist/runtime/quota.d.ts +17 -3
- package/dist/runtime/quota.js +27 -2
- package/dist/runtime/retired-schedulers.d.ts +7 -0
- package/dist/runtime/retired-schedulers.js +31 -0
- 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 +43 -0
- package/dist/runtime/run-control.js +89 -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 +27 -18
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +46 -0
- package/dist/runtime/run-jobs.js +91 -0
- package/dist/runtime/run-processors.d.ts +60 -0
- package/dist/runtime/run-processors.js +185 -0
- package/dist/runtime/run-queue.d.ts +90 -58
- package/dist/runtime/run-queue.js +566 -297
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +134 -77
- package/dist/runtime/run-worker.js +412 -237
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +122 -0
- package/dist/runtime/step-log.d.ts +51 -0
- package/dist/runtime/step-log.js +111 -0
- package/dist/runtime/stream.controller.d.ts +28 -9
- package/dist/runtime/stream.controller.js +72 -13
- package/dist/runtime/stream.d.ts +27 -6
- package/dist/runtime/stream.js +102 -7
- package/dist/runtime/subagents/child.d.ts +58 -51
- package/dist/runtime/subagents/child.js +105 -86
- package/dist/runtime/subagents/definition.d.ts +32 -28
- package/dist/runtime/subagents/definition.js +89 -143
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +197 -27
- package/dist/runtime/subagents/dispatch.js +336 -270
- package/dist/runtime/subagents/limits.d.ts +32 -8
- package/dist/runtime/subagents/limits.js +44 -8
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +3 -2
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +10 -8
- 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 +27 -10
- package/dist/runtime/subagents/roster.js +49 -13
- package/dist/runtime/subagents/skill-fork.d.ts +10 -10
- package/dist/runtime/subagents/skill-fork.js +23 -8
- 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 +43 -0
- package/dist/runtime/subagents/subagents.service.js +106 -0
- 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 +121 -83
- package/dist/runtime/usage-report.js +355 -181
- package/dist/runtime/waits.d.ts +258 -81
- package/dist/runtime/waits.js +800 -263
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +68 -0
- package/dist/sandbox/jobs.js +150 -0
- package/dist/sandbox/leases.d.ts +73 -82
- package/dist/sandbox/leases.js +162 -346
- package/dist/sandbox/providers.d.ts +46 -0
- package/dist/sandbox/providers.js +83 -0
- package/dist/sandbox/sandbox.module.d.ts +9 -0
- package/dist/sandbox/sandbox.module.js +36 -0
- package/dist/sandbox/sandbox.service.d.ts +359 -151
- package/dist/sandbox/sandbox.service.js +950 -435
- package/dist/sandbox/unreachable.d.ts +30 -0
- package/dist/sandbox/unreachable.js +108 -0
- package/dist/skills/catalog.d.ts +40 -26
- package/dist/skills/catalog.js +120 -99
- package/dist/skills/changes.controller.d.ts +11 -4
- package/dist/skills/changes.controller.js +34 -9
- package/dist/skills/changes.service.d.ts +31 -21
- package/dist/skills/changes.service.js +426 -368
- package/dist/skills/invocable.controller.d.ts +2 -2
- package/dist/skills/invocable.controller.js +10 -7
- package/dist/skills/invocation-keys.d.ts +1 -1
- package/dist/skills/invocation-keys.js +1 -1
- package/dist/skills/invoke.d.ts +19 -18
- package/dist/skills/invoke.js +68 -24
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +33 -7
- package/dist/skills/skills.controller.js +79 -12
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +39 -0
- package/dist/skills/skills.schemas.d.ts +48 -0
- package/dist/skills/skills.schemas.js +61 -0
- package/dist/skills/skills.service.d.ts +151 -44
- package/dist/skills/skills.service.js +636 -204
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/storage/job-ids.d.ts +6 -0
- package/dist/storage/job-ids.js +6 -0
- package/dist/storage/purge.d.ts +22 -7
- package/dist/storage/purge.js +55 -3
- package/dist/storage/storage.module.d.ts +6 -0
- package/dist/storage/storage.module.js +23 -0
- package/dist/storage/storage.service.d.ts +18 -4
- package/dist/storage/storage.service.js +44 -3
- package/dist/time-zone.d.ts +5 -0
- package/dist/time-zone.js +19 -0
- package/dist/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +14 -11
- package/dist/tools/approvals.schemas.d.ts +21 -0
- package/dist/tools/approvals.schemas.js +15 -0
- package/dist/tools/approvals.service.d.ts +53 -27
- package/dist/tools/approvals.service.js +365 -260
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtin-names.d.ts +109 -0
- package/dist/tools/builtin-names.js +173 -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 +3 -3
- package/dist/tools/builtins/ask-user.js +3 -3
- package/dist/tools/builtins/builtin-tools.d.ts +41 -0
- package/dist/tools/builtins/builtin-tools.js +151 -0
- 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 +3 -3
- package/dist/tools/builtins/read-tool-output.js +3 -3
- package/dist/tools/builtins/sandbox/bash.d.ts +5 -5
- package/dist/tools/builtins/sandbox/bash.js +293 -41
- package/dist/tools/builtins/sandbox/common.d.ts +137 -37
- 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 +21 -18
- package/dist/tools/builtins/sandbox/edit.d.ts +1 -1
- package/dist/tools/builtins/sandbox/edit.js +65 -51
- 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 +19 -14
- package/dist/tools/builtins/sandbox/grep.d.ts +7 -4
- package/dist/tools/builtins/sandbox/grep.js +155 -36
- 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 +30 -20
- 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 +52 -45
- 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 +32 -21
- package/dist/tools/builtins/skill-load.js +125 -74
- package/dist/tools/builtins/skill-write.d.ts +4 -4
- package/dist/tools/builtins/skill-write.js +12 -12
- 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/canonical-json.d.ts +6 -0
- package/dist/tools/canonical-json.js +16 -0
- package/dist/tools/connector-content.controller.d.ts +1 -1
- package/dist/tools/connector-content.controller.js +11 -6
- package/dist/tools/connector-content.d.ts +12 -15
- package/dist/tools/connector-content.js +53 -18
- package/dist/tools/connectors.controller.d.ts +16 -3
- package/dist/tools/connectors.controller.js +34 -14
- package/dist/tools/connectors.schemas.d.ts +12 -0
- package/dist/tools/connectors.schemas.js +19 -0
- package/dist/tools/connectors.service.d.ts +80 -18
- package/dist/tools/connectors.service.js +529 -358
- package/dist/tools/credentials.d.ts +20 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/display-names.d.ts +9 -0
- package/dist/tools/display-names.js +24 -0
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +116 -84
- 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 +73 -13
- package/dist/tools/info.js +151 -39
- package/dist/tools/job-ids.d.ts +13 -0
- package/dist/tools/job-ids.js +15 -0
- package/dist/tools/jobs.d.ts +24 -0
- package/dist/tools/jobs.js +69 -0
- 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 +115 -0
- package/dist/tools/naming.d.ts +1 -5
- package/dist/tools/naming.js +1 -7
- package/dist/tools/oauth/flow-paths.d.ts +16 -0
- package/dist/tools/oauth/flow-paths.js +38 -0
- package/dist/tools/oauth/flow.d.ts +30 -30
- package/dist/tools/oauth/flow.js +109 -81
- package/dist/tools/oauth/oauth.controller.d.ts +3 -3
- package/dist/tools/oauth/oauth.controller.js +12 -9
- package/dist/tools/oauth/tokens.d.ts +45 -10
- package/dist/tools/oauth/tokens.js +70 -24
- package/dist/tools/org-tool-switches.d.ts +88 -0
- package/dist/tools/org-tool-switches.js +201 -0
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +48 -4
- package/dist/tools/pipeline.d.ts +108 -80
- package/dist/tools/pipeline.js +396 -409
- package/dist/tools/policy.d.ts +4 -17
- package/dist/tools/policy.js +49 -35
- package/dist/tools/questions.controller.d.ts +2 -2
- package/dist/tools/questions.controller.js +9 -6
- package/dist/tools/questions.service.d.ts +26 -25
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +215 -84
- package/dist/tools/registry.js +382 -264
- package/dist/tools/resources.d.ts +1 -1
- package/dist/tools/resources.js +1 -1
- package/dist/tools/specs.d.ts +5 -4
- package/dist/tools/specs.js +3 -1
- package/dist/tools/tools.module.d.ts +10 -0
- package/dist/tools/tools.module.js +113 -0
- package/dist/tools/validate.js +1 -1
- package/dist/ui/call-extension.d.ts +16 -0
- package/dist/ui/call-extension.js +38 -0
- package/dist/ui/embed-token.d.ts +9 -5
- package/dist/ui/embed-token.js +34 -6
- package/dist/ui/ui-stream.d.ts +22 -17
- package/dist/ui/ui-stream.js +72 -12
- package/dist/ui/ui.module.d.ts +7 -0
- package/dist/ui/ui.module.js +28 -0
- package/dist/ui/views.controller.d.ts +14 -12
- package/dist/ui/views.controller.js +32 -25
- package/dist/ui/views.d.ts +10 -57
- package/dist/ui/views.js +58 -46
- package/package.json +13 -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/dist/catalog/upgrade-targets.d.ts +0 -59
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -21
- package/dist/conversations/sandbox-status.js +0 -24
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -59
- package/dist/http/gateway.module.js +0 -13
- package/dist/http/health.controller.d.ts +0 -26
- package/dist/http/health.controller.js +0 -79
- package/dist/http/tokens.d.ts +0 -131
- package/dist/http/tokens.js +0 -131
- package/dist/http/zod.pipe.d.ts +0 -8
- package/dist/http/zod.pipe.js +0 -14
- package/dist/identity/enterprise-admin.d.ts +0 -14
- package/dist/identity/enterprise-admin.js +0 -27
- package/dist/identity/rate-limit.d.ts +0 -55
- package/dist/identity/rate-limit.js +0 -121
- package/dist/sandbox/lifecycle.d.ts +0 -21
- package/dist/sandbox/lifecycle.js +0 -68
- package/dist/tools/builtins/sandbox/names.d.ts +0 -7
- package/dist/tools/builtins/sandbox/names.js +0 -20
|
@@ -0,0 +1,151 @@
|
|
|
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 { Inject, Injectable } from "@nestjs/common";
|
|
11
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
12
|
+
import { environmentNotFound, SandboxService } from "../sandbox/sandbox.service.js";
|
|
13
|
+
import { DeviceRelay, environmentOffline } from "./relay.js";
|
|
14
|
+
import { DeviceTargets, sameRoots } from "./targets.js";
|
|
15
|
+
/** Extra time the machine gets beyond a command's own timeout (spawn, output, the trip back). */
|
|
16
|
+
export const EXEC_DEADLINE_MARGIN_MS = 5000;
|
|
17
|
+
/** How long the machine may take for one non-exec operation. */
|
|
18
|
+
export const OP_DEADLINE_MS = 30_000;
|
|
19
|
+
/**
|
|
20
|
+
* Room left in a frame for everything around a `readFile` result's base64 data (the `res`
|
|
21
|
+
* envelope): a read is clamped so the machine's answer fits `environments.device.maxFrameBytes`
|
|
22
|
+
* (ruling R26).
|
|
23
|
+
*/
|
|
24
|
+
export const FRAME_ENVELOPE_BYTES = 64 * 1024;
|
|
25
|
+
/** The most raw bytes whose base64 plus {@link FRAME_ENVELOPE_BYTES} fit in `maxFrameBytes`. */
|
|
26
|
+
export const maxReadBytes = (maxFrameBytes) => Math.max(0, Math.floor((maxFrameBytes - FRAME_ENVELOPE_BYTES) / 4) * 3);
|
|
27
|
+
const NAME_PREFIX = "cap-env-";
|
|
28
|
+
/** The environment id of a `cap-env-<environmentId>` name; undefined for any other name. */
|
|
29
|
+
export const environmentIdOfName = (name) => name.startsWith(NAME_PREFIX) && name.length > NAME_PREFIX.length
|
|
30
|
+
? name.slice(NAME_PREFIX.length)
|
|
31
|
+
: undefined;
|
|
32
|
+
const rootsOf = (h) => h.roots;
|
|
33
|
+
const bytesOf = (b64) => new Uint8Array(Buffer.from(b64, "base64"));
|
|
34
|
+
/**
|
|
35
|
+
* The kernel-internal provider `@device` (environments spec §13.5): every operation runs on the
|
|
36
|
+
* environment's connected machine through the {@link DeviceRelay}. The file system is the
|
|
37
|
+
* machine's environment directory (the program creates it on first use), so `createFileSystem`
|
|
38
|
+
* touches nothing; `suspend` and `destroy` do nothing (the machine is not the platform's to stop);
|
|
39
|
+
* deleting the environment leaves the files on the machine where they are. Nothing here throws `environment.offline` on the cleanup paths (ruling R9).
|
|
40
|
+
*
|
|
41
|
+
* The files on a machine are its owner's: `destroyFileSystem` (a files reset, the deletion sweep)
|
|
42
|
+
* does nothing; the deletion's `stop` comes from `MachinesService.revokeActive` (ruling R24).
|
|
43
|
+
*/
|
|
44
|
+
let DeviceSandboxProvider = class DeviceSandboxProvider {
|
|
45
|
+
relay;
|
|
46
|
+
targets;
|
|
47
|
+
sandbox;
|
|
48
|
+
config;
|
|
49
|
+
concurrentExec = true;
|
|
50
|
+
sessionIsolation = false;
|
|
51
|
+
constructor(relay, targets, sandbox, config) {
|
|
52
|
+
this.relay = relay;
|
|
53
|
+
this.targets = targets;
|
|
54
|
+
this.sandbox = sandbox;
|
|
55
|
+
this.config = config;
|
|
56
|
+
}
|
|
57
|
+
async createFileSystem(args) {
|
|
58
|
+
args.signal.throwIfAborted();
|
|
59
|
+
const id = environmentIdOfName(args.name);
|
|
60
|
+
if (id === undefined)
|
|
61
|
+
throw new Error(`not an environment name: ${args.name}`);
|
|
62
|
+
return { id };
|
|
63
|
+
}
|
|
64
|
+
/** The files are the machine owner's: nothing to do (ruling R24; never a `stop`). */
|
|
65
|
+
async destroyFileSystem(_fs, signal) {
|
|
66
|
+
signal.throwIfAborted();
|
|
67
|
+
}
|
|
68
|
+
async destroyFileSystemByName(_name, signal) {
|
|
69
|
+
signal.throwIfAborted();
|
|
70
|
+
}
|
|
71
|
+
async create(args) {
|
|
72
|
+
const id = args.fileSystem.id;
|
|
73
|
+
const r = await this.relay.call(id, "create", { limits: args.limits }, { deadlineMs: OP_DEADLINE_MS, signal: args.signal });
|
|
74
|
+
return { id, roots: r.roots, limits: args.limits };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Needs the machine online. `gone` (the kernel recreates the instance) when the active machine
|
|
78
|
+
* last reported other roots than the instance was created with (a new login into another
|
|
79
|
+
* directory or mode, ruling R23).
|
|
80
|
+
*/
|
|
81
|
+
async resume(h, signal) {
|
|
82
|
+
signal.throwIfAborted();
|
|
83
|
+
if (!(await this.relay.holderLive(h.id)))
|
|
84
|
+
throw environmentOffline();
|
|
85
|
+
const had = rootsOf(h);
|
|
86
|
+
const now = await this.targets.machineRoots(h.id);
|
|
87
|
+
if (had === undefined || (now !== null && !sameRoots(had, now)))
|
|
88
|
+
return "gone";
|
|
89
|
+
return "resumed";
|
|
90
|
+
}
|
|
91
|
+
async suspend(_h, signal) {
|
|
92
|
+
signal.throwIfAborted();
|
|
93
|
+
}
|
|
94
|
+
async destroy(_h, signal) {
|
|
95
|
+
signal.throwIfAborted();
|
|
96
|
+
}
|
|
97
|
+
async destroyByName(_name, signal) {
|
|
98
|
+
signal.throwIfAborted();
|
|
99
|
+
}
|
|
100
|
+
async killAll(h, signal) {
|
|
101
|
+
await this.relay.call(h.id, "killAll", {}, { deadlineMs: OP_DEADLINE_MS, signal });
|
|
102
|
+
}
|
|
103
|
+
async killTagged(h, tags, signal) {
|
|
104
|
+
await this.relay.call(h.id, "killTagged", { tags }, { deadlineMs: OP_DEADLINE_MS, signal });
|
|
105
|
+
}
|
|
106
|
+
async exec(h, args) {
|
|
107
|
+
const { signal, ...rest } = args;
|
|
108
|
+
signal.throwIfAborted();
|
|
109
|
+
const limits = await this.currentLimits(h.id);
|
|
110
|
+
signal.throwIfAborted();
|
|
111
|
+
try {
|
|
112
|
+
return await this.relay.call(h.id, "exec", { ...rest, limits }, { deadlineMs: args.timeoutMs + EXEC_DEADLINE_MARGIN_MS, signal });
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
// the contract: an exec aborted after it was sent resolves with exitCode null (the relay
|
|
116
|
+
// queued a cancel, which kills the command on the machine); the output stays there
|
|
117
|
+
if (signal.aborted && e === signal.reason) {
|
|
118
|
+
return { exitCode: null, stdout: "", stderr: "", truncated: false, timedOut: false };
|
|
119
|
+
}
|
|
120
|
+
throw e;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async readFile(h, path, opts) {
|
|
124
|
+
// the answer must fit one frame: a larger file comes back truncated (Deliver: too large)
|
|
125
|
+
const maxBytes = Math.min(opts.maxBytes, maxReadBytes(this.config.get().environments.device.maxFrameBytes));
|
|
126
|
+
const r = await this.relay.call(h.id, "readFile", { path, maxBytes }, { deadlineMs: OP_DEADLINE_MS, signal: opts.signal });
|
|
127
|
+
return r === null ? null : { data: bytesOf(r.dataB64), truncated: r.truncated };
|
|
128
|
+
}
|
|
129
|
+
async writeFile(h, path, data, signal) {
|
|
130
|
+
const dataB64 = Buffer.from(data.buffer, data.byteOffset, data.byteLength).toString("base64");
|
|
131
|
+
await this.relay.call(h.id, "writeFile", { path, dataB64 }, { deadlineMs: OP_DEADLINE_MS, signal });
|
|
132
|
+
}
|
|
133
|
+
async stat(h, path, signal) {
|
|
134
|
+
return this.relay.call(h.id, "stat", { path }, { deadlineMs: OP_DEADLINE_MS, signal });
|
|
135
|
+
}
|
|
136
|
+
/** The org's effective limits now (ruling R27); a deleted environment is not found. */
|
|
137
|
+
async currentLimits(environmentId) {
|
|
138
|
+
const orgId = await this.targets.orgOf(environmentId);
|
|
139
|
+
if (orgId === null)
|
|
140
|
+
throw environmentNotFound();
|
|
141
|
+
return this.sandbox.orgLimits(orgId);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
DeviceSandboxProvider = __decorate([
|
|
145
|
+
Injectable(),
|
|
146
|
+
__param(0, Inject(DeviceRelay)),
|
|
147
|
+
__param(1, Inject(DeviceTargets)),
|
|
148
|
+
__param(2, Inject(SandboxService)),
|
|
149
|
+
__param(3, Inject(KernelConfigService))
|
|
150
|
+
], DeviceSandboxProvider);
|
|
151
|
+
export { DeviceSandboxProvider };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type WebSocket } from "@fastify/websocket";
|
|
2
|
+
import type { FastifyInstance, FastifyRequest } from "fastify";
|
|
3
|
+
import type { MachineIdentity } from "./machines.js";
|
|
4
|
+
/** The device connection route (environments spec §13.4). */
|
|
5
|
+
export declare const DEVICE_CONNECT_ROUTE = "/device/connect";
|
|
6
|
+
/** The header carrying the program's protocol version. */
|
|
7
|
+
export declare const DEVICE_PROTOCOL_HEADER = "x-capybara-device-protocol";
|
|
8
|
+
/** What the route needs from the gateway (`DeviceGateway`). */
|
|
9
|
+
export interface DeviceRoutesGateway {
|
|
10
|
+
authenticate(credential: string): Promise<MachineIdentity | null>;
|
|
11
|
+
accept(socket: WebSocket, identity: MachineIdentity, credential: string): void;
|
|
12
|
+
}
|
|
13
|
+
export interface DeviceRoutesOptions {
|
|
14
|
+
gateway: DeviceRoutesGateway;
|
|
15
|
+
/** `environments.device.maxFrameBytes`: a larger incoming frame closes the socket (1009). */
|
|
16
|
+
maxFrameBytes: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A WebSocket upgrade: `Upgrade` lists `websocket` and `Connection` lists `upgrade` (both
|
|
20
|
+
* case-insensitive). Other upgrades (`h2c`, …) are ordinary requests here.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isWebSocketUpgrade(req: FastifyRequest): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Registers `GET /device/connect` (the gateway role only) in its own encapsulated scope with
|
|
25
|
+
* `@fastify/websocket`: a raw Fastify route outside Nest, so neither the API's `AuthGuard` nor its
|
|
26
|
+
* CSRF check applies; the route checks the machine credential itself, before the upgrade (401
|
|
27
|
+
* `device.credential_invalid`), then the protocol header (426 `environment.program_outdated`).
|
|
28
|
+
* Must be called before Nest `app.init()`, on the root instance.
|
|
29
|
+
*
|
|
30
|
+
* `@fastify/websocket` sends every upgrade request of the server through the Fastify router; the
|
|
31
|
+
* root hooks below keep that from reaching any other route: a WebSocket upgrade to another path
|
|
32
|
+
* is answered 404 and its socket closed once answered (Node would have dropped it without a
|
|
33
|
+
* listener). Other upgrades (`h2c`) reach their route as ordinary requests; their socket, which
|
|
34
|
+
* no HTTP connection owns any more, is closed once answered as well (the upgrade is declined).
|
|
35
|
+
*/
|
|
36
|
+
export declare function registerDeviceConnectRoute(fastify: FastifyInstance, opts: DeviceRoutesOptions): Promise<void>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { DEVICE_PROTOCOL_VERSION } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import websocket, {} from "@fastify/websocket";
|
|
3
|
+
import { errorBody } from "../errors.js";
|
|
4
|
+
/** The device connection route (environments spec §13.4). */
|
|
5
|
+
export const DEVICE_CONNECT_ROUTE = "/device/connect";
|
|
6
|
+
/** The header carrying the program's protocol version. */
|
|
7
|
+
export const DEVICE_PROTOCOL_HEADER = "x-capybara-device-protocol";
|
|
8
|
+
/** The comma-separated tokens of a header, lowercased. */
|
|
9
|
+
function tokens(v) {
|
|
10
|
+
return [v ?? []]
|
|
11
|
+
.flat()
|
|
12
|
+
.flatMap((x) => x.split(","))
|
|
13
|
+
.map((t) => t.trim().toLowerCase());
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A WebSocket upgrade: `Upgrade` lists `websocket` and `Connection` lists `upgrade` (both
|
|
17
|
+
* case-insensitive). Other upgrades (`h2c`, …) are ordinary requests here.
|
|
18
|
+
*/
|
|
19
|
+
export function isWebSocketUpgrade(req) {
|
|
20
|
+
return viaUpgrade(req) && tokens(req.headers.upgrade).includes("websocket");
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A request Node handed to the server's `upgrade` listeners (`Connection: upgrade` and an
|
|
24
|
+
* `Upgrade` header, any protocol): its socket belongs to no HTTP connection any more.
|
|
25
|
+
*/
|
|
26
|
+
function viaUpgrade(req) {
|
|
27
|
+
return req.headers.upgrade !== undefined && tokens(req.headers.connection).includes("upgrade");
|
|
28
|
+
}
|
|
29
|
+
/** The `Bearer` credential of the request, or "". */
|
|
30
|
+
function bearer(req) {
|
|
31
|
+
const h = req.headers.authorization;
|
|
32
|
+
const m = typeof h === "string" ? /^Bearer\s+(\S+)\s*$/i.exec(h) : null;
|
|
33
|
+
return m?.[1] ?? "";
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Registers `GET /device/connect` (the gateway role only) in its own encapsulated scope with
|
|
37
|
+
* `@fastify/websocket`: a raw Fastify route outside Nest, so neither the API's `AuthGuard` nor its
|
|
38
|
+
* CSRF check applies; the route checks the machine credential itself, before the upgrade (401
|
|
39
|
+
* `device.credential_invalid`), then the protocol header (426 `environment.program_outdated`).
|
|
40
|
+
* Must be called before Nest `app.init()`, on the root instance.
|
|
41
|
+
*
|
|
42
|
+
* `@fastify/websocket` sends every upgrade request of the server through the Fastify router; the
|
|
43
|
+
* root hooks below keep that from reaching any other route: a WebSocket upgrade to another path
|
|
44
|
+
* is answered 404 and its socket closed once answered (Node would have dropped it without a
|
|
45
|
+
* listener). Other upgrades (`h2c`) reach their route as ordinary requests; their socket, which
|
|
46
|
+
* no HTTP connection owns any more, is closed once answered as well (the upgrade is declined).
|
|
47
|
+
*/
|
|
48
|
+
export async function registerDeviceConnectRoute(fastify, opts) {
|
|
49
|
+
fastify.addHook("onRequest", async (req, reply) => {
|
|
50
|
+
if (!isWebSocketUpgrade(req) || req.routeOptions.url === DEVICE_CONNECT_ROUTE)
|
|
51
|
+
return;
|
|
52
|
+
return reply
|
|
53
|
+
.code(404)
|
|
54
|
+
.send(errorBody("not_found", "This path does not accept a protocol upgrade"));
|
|
55
|
+
});
|
|
56
|
+
fastify.addHook("onResponse", async (req) => {
|
|
57
|
+
if (viaUpgrade(req))
|
|
58
|
+
req.raw.socket?.destroy();
|
|
59
|
+
});
|
|
60
|
+
await fastify.register(async (scope) => {
|
|
61
|
+
await scope.register(websocket, { options: { maxPayload: opts.maxFrameBytes } });
|
|
62
|
+
const identities = new WeakMap();
|
|
63
|
+
scope.get(DEVICE_CONNECT_ROUTE, {
|
|
64
|
+
websocket: true,
|
|
65
|
+
preValidation: async (req, reply) => {
|
|
66
|
+
const cred = bearer(req);
|
|
67
|
+
const identity = cred === "" ? null : await opts.gateway.authenticate(cred);
|
|
68
|
+
if (identity === null) {
|
|
69
|
+
return reply
|
|
70
|
+
.code(401)
|
|
71
|
+
.send(errorBody("device.credential_invalid", "The machine credential is unknown or revoked. Run capybara-device logout, then capybara-device login."));
|
|
72
|
+
}
|
|
73
|
+
if (req.headers[DEVICE_PROTOCOL_HEADER] !== String(DEVICE_PROTOCOL_VERSION)) {
|
|
74
|
+
return reply
|
|
75
|
+
.code(426)
|
|
76
|
+
.send(errorBody("environment.program_outdated", `This kernel speaks device protocol ${DEVICE_PROTOCOL_VERSION}. ` +
|
|
77
|
+
"Update capybara-device."));
|
|
78
|
+
}
|
|
79
|
+
identities.set(req, { identity, cred });
|
|
80
|
+
},
|
|
81
|
+
}, (socket, req) => {
|
|
82
|
+
const found = identities.get(req);
|
|
83
|
+
if (!found) {
|
|
84
|
+
socket.close(4400, "not authenticated");
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
opts.gateway.accept(socket, found.identity, found.cred);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type OnModuleInit } from "@nestjs/common";
|
|
2
|
+
import { SandboxProviders } from "../sandbox/providers.js";
|
|
3
|
+
import { DeviceSandboxProvider } from "./device-provider.js";
|
|
4
|
+
/**
|
|
5
|
+
* Connected machines (environments spec §6, §13): the caller side of the device relay and the
|
|
6
|
+
* kernel-internal `@device` sandbox provider, registered with {@link SandboxProviders} on init, and
|
|
7
|
+
* the machines and their credentials ({@link MachinesService}).
|
|
8
|
+
* Imported on every role: any replica may run a sandbox operation on a connected environment
|
|
9
|
+
* (the socket itself is held by the gateway role).
|
|
10
|
+
*/
|
|
11
|
+
export declare class DevicesModule implements OnModuleInit {
|
|
12
|
+
private readonly providers;
|
|
13
|
+
private readonly device;
|
|
14
|
+
constructor(providers: SandboxProviders, device: DeviceSandboxProvider);
|
|
15
|
+
onModuleInit(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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 { Inject, Module } from "@nestjs/common";
|
|
11
|
+
import { DEVICE_PROVIDER, SandboxProviders } from "../sandbox/providers.js";
|
|
12
|
+
import { SandboxModule } from "../sandbox/sandbox.module.js";
|
|
13
|
+
import { DeviceSandboxProvider } from "./device-provider.js";
|
|
14
|
+
import { MachinesService } from "./machines.js";
|
|
15
|
+
import { DeviceRelay } from "./relay.js";
|
|
16
|
+
import { DeviceTargets } from "./targets.js";
|
|
17
|
+
/**
|
|
18
|
+
* Connected machines (environments spec §6, §13): the caller side of the device relay and the
|
|
19
|
+
* kernel-internal `@device` sandbox provider, registered with {@link SandboxProviders} on init, and
|
|
20
|
+
* the machines and their credentials ({@link MachinesService}).
|
|
21
|
+
* Imported on every role: any replica may run a sandbox operation on a connected environment
|
|
22
|
+
* (the socket itself is held by the gateway role).
|
|
23
|
+
*/
|
|
24
|
+
let DevicesModule = class DevicesModule {
|
|
25
|
+
providers;
|
|
26
|
+
device;
|
|
27
|
+
constructor(providers, device) {
|
|
28
|
+
this.providers = providers;
|
|
29
|
+
this.device = device;
|
|
30
|
+
}
|
|
31
|
+
onModuleInit() {
|
|
32
|
+
this.providers.register({ plugin: DEVICE_PROVIDER, impl: this.device });
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
DevicesModule = __decorate([
|
|
36
|
+
Module({
|
|
37
|
+
imports: [SandboxModule],
|
|
38
|
+
providers: [DeviceTargets, DeviceRelay, DeviceSandboxProvider, MachinesService],
|
|
39
|
+
exports: [DeviceRelay, DeviceSandboxProvider, MachinesService],
|
|
40
|
+
}),
|
|
41
|
+
__param(0, Inject(SandboxProviders)),
|
|
42
|
+
__param(1, Inject(DeviceSandboxProvider))
|
|
43
|
+
], DevicesModule);
|
|
44
|
+
export { DevicesModule };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** `POST /api/v1/device/authorize`: the machine as the program describes it. */
|
|
3
|
+
export declare const DeviceAuthorizeBody: z.ZodObject<{
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
os: z.ZodEnum<{
|
|
6
|
+
darwin: "darwin";
|
|
7
|
+
linux: "linux";
|
|
8
|
+
}>;
|
|
9
|
+
arch: z.ZodString;
|
|
10
|
+
programVersion: z.ZodString;
|
|
11
|
+
}, z.core.$strict>;
|
|
12
|
+
/** `POST /api/v1/device/token`: the secret device code from `authorize`. */
|
|
13
|
+
export declare const DeviceTokenBody: z.ZodObject<{
|
|
14
|
+
deviceCode: z.ZodString;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
export declare const DeviceUserCodeParams: z.ZodObject<{
|
|
17
|
+
userCode: z.ZodString;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
export declare const DeviceUserCodeBody: z.ZodObject<{
|
|
20
|
+
userCode: z.ZodString;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
/**
|
|
23
|
+
* `POST /api/v1/device/confirm`: the org and exactly one of an existing device environment of the
|
|
24
|
+
* person's (`environmentId`) or the name of a new one (`name`).
|
|
25
|
+
*/
|
|
26
|
+
export declare const DeviceConfirmBody: z.ZodObject<{
|
|
27
|
+
userCode: z.ZodString;
|
|
28
|
+
orgId: z.ZodString;
|
|
29
|
+
environmentId: z.ZodOptional<z.ZodUUID>;
|
|
30
|
+
name: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
declare const DeviceAuthorizeBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
33
|
+
name: z.ZodString;
|
|
34
|
+
os: z.ZodEnum<{
|
|
35
|
+
darwin: "darwin";
|
|
36
|
+
linux: "linux";
|
|
37
|
+
}>;
|
|
38
|
+
arch: z.ZodString;
|
|
39
|
+
programVersion: z.ZodString;
|
|
40
|
+
}, z.core.$strict>>;
|
|
41
|
+
export declare class DeviceAuthorizeBodyDto extends DeviceAuthorizeBodyDto_base {
|
|
42
|
+
}
|
|
43
|
+
declare const DeviceTokenBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
44
|
+
deviceCode: z.ZodString;
|
|
45
|
+
}, z.core.$strict>>;
|
|
46
|
+
export declare class DeviceTokenBodyDto extends DeviceTokenBodyDto_base {
|
|
47
|
+
}
|
|
48
|
+
declare const DeviceUserCodeParamsDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
49
|
+
userCode: z.ZodString;
|
|
50
|
+
}, z.core.$strip>>;
|
|
51
|
+
export declare class DeviceUserCodeParamsDto extends DeviceUserCodeParamsDto_base {
|
|
52
|
+
}
|
|
53
|
+
declare const DeviceUserCodeBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
54
|
+
userCode: z.ZodString;
|
|
55
|
+
}, z.core.$strict>>;
|
|
56
|
+
export declare class DeviceUserCodeBodyDto extends DeviceUserCodeBodyDto_base {
|
|
57
|
+
}
|
|
58
|
+
declare const DeviceConfirmBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
59
|
+
userCode: z.ZodString;
|
|
60
|
+
orgId: z.ZodString;
|
|
61
|
+
environmentId: z.ZodOptional<z.ZodUUID>;
|
|
62
|
+
name: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, z.core.$strict>>;
|
|
64
|
+
export declare class DeviceConfirmBodyDto extends DeviceConfirmBodyDto_base {
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { EnvironmentName } from "../environments/dto.js";
|
|
3
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
4
|
+
/** `POST /api/v1/device/authorize`: the machine as the program describes it. */
|
|
5
|
+
export const DeviceAuthorizeBody = z
|
|
6
|
+
.object({
|
|
7
|
+
name: z.string().trim().min(1).max(64),
|
|
8
|
+
os: z.enum(["darwin", "linux"]),
|
|
9
|
+
arch: z.string().trim().min(1).max(32),
|
|
10
|
+
programVersion: z.string().trim().min(1).max(64),
|
|
11
|
+
})
|
|
12
|
+
.strict();
|
|
13
|
+
/** `POST /api/v1/device/token`: the secret device code from `authorize`. */
|
|
14
|
+
export const DeviceTokenBody = z.object({ deviceCode: z.string().min(1).max(200) }).strict();
|
|
15
|
+
/** A user code as typed (`XXXX-XXXX`; case, spaces and the dash are forgiven). */
|
|
16
|
+
const UserCode = z.string().min(1).max(32);
|
|
17
|
+
export const DeviceUserCodeParams = z.object({ userCode: UserCode });
|
|
18
|
+
export const DeviceUserCodeBody = z.object({ userCode: UserCode }).strict();
|
|
19
|
+
/**
|
|
20
|
+
* `POST /api/v1/device/confirm`: the org and exactly one of an existing device environment of the
|
|
21
|
+
* person's (`environmentId`) or the name of a new one (`name`).
|
|
22
|
+
*/
|
|
23
|
+
export const DeviceConfirmBody = z
|
|
24
|
+
.object({
|
|
25
|
+
userCode: UserCode,
|
|
26
|
+
orgId: z.string().min(1).max(100),
|
|
27
|
+
environmentId: z.uuid().optional(),
|
|
28
|
+
name: EnvironmentName.optional(),
|
|
29
|
+
})
|
|
30
|
+
.strict()
|
|
31
|
+
.refine((b) => (b.environmentId === undefined) !== (b.name === undefined), {
|
|
32
|
+
message: "Give exactly one of environmentId and name",
|
|
33
|
+
path: ["environmentId"],
|
|
34
|
+
});
|
|
35
|
+
export class DeviceAuthorizeBodyDto extends createZodDto(DeviceAuthorizeBody, "DeviceAuthorizeBody") {
|
|
36
|
+
}
|
|
37
|
+
export class DeviceTokenBodyDto extends createZodDto(DeviceTokenBody, "DeviceTokenBody") {
|
|
38
|
+
}
|
|
39
|
+
export class DeviceUserCodeParamsDto extends createZodDto(DeviceUserCodeParams, "DeviceUserCodeParams") {
|
|
40
|
+
}
|
|
41
|
+
export class DeviceUserCodeBodyDto extends createZodDto(DeviceUserCodeBody, "DeviceUserCodeBody") {
|
|
42
|
+
}
|
|
43
|
+
export class DeviceConfirmBodyDto extends createZodDto(DeviceConfirmBody, "DeviceConfirmBody") {
|
|
44
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis keys and bus topics of the connected-machine relay (environments spec §6, §13). Every key
|
|
3
|
+
* is per environment (or per request); writers set a TTL on each.
|
|
4
|
+
*/
|
|
5
|
+
/** The lease of the replica holding the machine's connection: `capk:device-lease:<environmentId>`. */
|
|
6
|
+
export declare const deviceLeaseKey: (environmentId: string) => string;
|
|
7
|
+
/** The list of requests waiting for the machine: `capk:device-req:<environmentId>`. */
|
|
8
|
+
export declare const deviceReqKey: (environmentId: string) => string;
|
|
9
|
+
/** The result of one request: `capk:device-res:<requestId>`. */
|
|
10
|
+
export declare const deviceResKey: (requestId: string) => string;
|
|
11
|
+
/** The prefix of {@link deviceTakenKey} (the holder's Lua script builds the key from it). */
|
|
12
|
+
export declare const DEVICE_TAKEN_PREFIX = "capk:device-taken:";
|
|
13
|
+
/**
|
|
14
|
+
* A request the holder forwarded to a machine: `capk:device-taken:<requestId>` → the environment
|
|
15
|
+
* id. Only a result for a taken request of the socket's own environment is accepted.
|
|
16
|
+
*/
|
|
17
|
+
export declare const deviceTakenKey: (requestId: string) => string;
|
|
18
|
+
/** A new request for the machine of the environment. */
|
|
19
|
+
export declare const deviceReqTopic: (environmentId: string) => string;
|
|
20
|
+
/** The result of one request is ready. */
|
|
21
|
+
export declare const deviceResTopic: (requestId: string) => string;
|
|
22
|
+
/** Another replica took the machine's connection over. */
|
|
23
|
+
export declare const deviceTakeoverTopic: (environmentId: string) => string;
|
|
24
|
+
/** The machine's credential was revoked: its connection is closed. */
|
|
25
|
+
export declare const deviceRevokedTopic: (environmentId: string) => string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis keys and bus topics of the connected-machine relay (environments spec §6, §13). Every key
|
|
3
|
+
* is per environment (or per request); writers set a TTL on each.
|
|
4
|
+
*/
|
|
5
|
+
/** The lease of the replica holding the machine's connection: `capk:device-lease:<environmentId>`. */
|
|
6
|
+
export const deviceLeaseKey = (environmentId) => `capk:device-lease:${environmentId}`;
|
|
7
|
+
/** The list of requests waiting for the machine: `capk:device-req:<environmentId>`. */
|
|
8
|
+
export const deviceReqKey = (environmentId) => `capk:device-req:${environmentId}`;
|
|
9
|
+
/** The result of one request: `capk:device-res:<requestId>`. */
|
|
10
|
+
export const deviceResKey = (requestId) => `capk:device-res:${requestId}`;
|
|
11
|
+
/** The prefix of {@link deviceTakenKey} (the holder's Lua script builds the key from it). */
|
|
12
|
+
export const DEVICE_TAKEN_PREFIX = "capk:device-taken:";
|
|
13
|
+
/**
|
|
14
|
+
* A request the holder forwarded to a machine: `capk:device-taken:<requestId>` → the environment
|
|
15
|
+
* id. Only a result for a taken request of the socket's own environment is accepted.
|
|
16
|
+
*/
|
|
17
|
+
export const deviceTakenKey = (requestId) => `${DEVICE_TAKEN_PREFIX}${requestId}`;
|
|
18
|
+
/** A new request for the machine of the environment. */
|
|
19
|
+
export const deviceReqTopic = (environmentId) => `device.req.${environmentId}`;
|
|
20
|
+
/** The result of one request is ready. */
|
|
21
|
+
export const deviceResTopic = (requestId) => `device.res.${requestId}`;
|
|
22
|
+
/** Another replica took the machine's connection over. */
|
|
23
|
+
export const deviceTakeoverTopic = (environmentId) => `device.takeover.${environmentId}`;
|
|
24
|
+
/** The machine's credential was revoked: its connection is closed. */
|
|
25
|
+
export const deviceRevokedTopic = (environmentId) => `device.revoked.${environmentId}`;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { DeviceHello, DeviceStopArgs, ExtensionContext } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
|
+
import type { KernelLogger } from "../log.js";
|
|
5
|
+
import { DeviceRelay } from "./relay.js";
|
|
6
|
+
/** The machine credential's prefix (`cap_dev_` plus 32 random bytes, base64url). */
|
|
7
|
+
export declare const MACHINE_CREDENTIAL_PREFIX = "cap_dev_";
|
|
8
|
+
/** What a machine credential stands for. */
|
|
9
|
+
export interface MachineIdentity {
|
|
10
|
+
machineId: string;
|
|
11
|
+
orgId: string;
|
|
12
|
+
environmentId: string;
|
|
13
|
+
accountId: string;
|
|
14
|
+
}
|
|
15
|
+
/** The machine connected to an environment (its unrevoked row). */
|
|
16
|
+
export interface ActiveMachine {
|
|
17
|
+
id: string;
|
|
18
|
+
orgId: string;
|
|
19
|
+
accountId: string;
|
|
20
|
+
name: string;
|
|
21
|
+
os: string;
|
|
22
|
+
arch: string;
|
|
23
|
+
programVersion: string | null;
|
|
24
|
+
lastSeenAt: Date | null;
|
|
25
|
+
createdAt: Date;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Connected machines and their credentials (environments spec §13.2). One active machine per
|
|
29
|
+
* device environment: issuing a credential revokes the environment's previous machine. A
|
|
30
|
+
* credential is `cap_dev_` plus 32 random bytes; only its sha256 is stored. It is accepted only
|
|
31
|
+
* by the device connection route ({@link authenticate}), never by `/api`: it is no `Principal`.
|
|
32
|
+
*
|
|
33
|
+
* A revoked machine is told so after the commit: `stop { reason }` relayed while a replica holds
|
|
34
|
+
* its connection (fire-and-forget, ruling R14) and `device.revoked.<environmentId>` published with
|
|
35
|
+
* `{ machineId }`, so the holder closes that machine's connection.
|
|
36
|
+
*/
|
|
37
|
+
export declare class MachinesService {
|
|
38
|
+
private readonly db;
|
|
39
|
+
readonly txHost: TransactionHost;
|
|
40
|
+
private readonly relay;
|
|
41
|
+
private readonly bus;
|
|
42
|
+
private readonly log;
|
|
43
|
+
constructor(db: KernelDb, txHost: TransactionHost, relay: Pick<DeviceRelay, "holderLive" | "send">, bus: ExtensionContext["bus"], log: Pick<KernelLogger, "warn">);
|
|
44
|
+
/**
|
|
45
|
+
* A new machine for the environment and its credential (returned once). Revokes the
|
|
46
|
+
* environment's active machine first. Joins the caller's transaction (the device confirmation),
|
|
47
|
+
* which has already checked the environment is the person's own live device environment.
|
|
48
|
+
*/
|
|
49
|
+
issue(input: {
|
|
50
|
+
orgId: string;
|
|
51
|
+
environmentId: string;
|
|
52
|
+
accountId: string;
|
|
53
|
+
name: string;
|
|
54
|
+
os: string;
|
|
55
|
+
arch: string;
|
|
56
|
+
programVersion: string;
|
|
57
|
+
}): Promise<{
|
|
58
|
+
machineId: string;
|
|
59
|
+
credential: string;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Ruling R23: the new machine may serve the environment from another directory or mode (other
|
|
63
|
+
* roots), and a login recreates a directory that was lost (ruling R24). So the instance row
|
|
64
|
+
* forgets its instance (status `none`, no handle) and its files count as there again; the next
|
|
65
|
+
* use creates a fresh instance on the machine (with its roots: a new `environment_paths` event
|
|
66
|
+
* follows). The fence moves on, so a lifecycle holder of the old instance fails its next write.
|
|
67
|
+
* The reset count (`fs_resets`) moves on when the files the next instance sees are not the old
|
|
68
|
+
* ones, so conversations that used the old files are told their files were reset, not that they
|
|
69
|
+
* were kept: lost files come back as an empty directory, and another machine (`moved`: name, OS
|
|
70
|
+
* or arch differ from the environment's previous machine) has other files. Another directory on
|
|
71
|
+
* the same machine is known only from the new machine's first hello ({@link recordHello}).
|
|
72
|
+
*/
|
|
73
|
+
private resetInstance;
|
|
74
|
+
/**
|
|
75
|
+
* Who a machine credential stands for, or null: the machine is not revoked, its environment is
|
|
76
|
+
* live, the org is not deleted (ruling R12), and the person is an active account still a member
|
|
77
|
+
* of the org. Read live on every call (a connection re-checks it as it sees fit).
|
|
78
|
+
*/
|
|
79
|
+
authenticate(credential: string): Promise<MachineIdentity | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Stores what the program reported in its hello frame and marks the machine seen. On the
|
|
82
|
+
* machine's first hello, when it is the same machine as the environment's previous one (else
|
|
83
|
+
* {@link issue} already counted the reset) but serves another directory or mode (other roots,
|
|
84
|
+
* ruling R23), the environment's files are other files: `fs_resets` moves on (maintainer
|
|
85
|
+
* decision 2026-11-08), so conversations get the files-reset notice. A previous machine that
|
|
86
|
+
* never said hello has no known roots: nothing to compare.
|
|
87
|
+
*/
|
|
88
|
+
recordHello(machineId: string, hello: DeviceHello): Promise<void>;
|
|
89
|
+
/** Marks the machine seen (a ping); writes at most once every 60 seconds. */
|
|
90
|
+
touch(machineId: string): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Disconnects the machine of one of the person's own live device environments (`DELETE
|
|
93
|
+
* /orgs/:orgId/environments/:id/machine`): revokes it and audits
|
|
94
|
+
* `environment.machine_revoked`. Anyone else's environment, a cloud one or a missing one →
|
|
95
|
+
* `environment.not_found`; no machine connected is a no-op.
|
|
96
|
+
*/
|
|
97
|
+
revoke(orgId: string, accountId: string, environmentId: string, actorTokenId?: string): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Revokes the environment's active machine, if any, in the caller's transaction, and after the
|
|
100
|
+
* commit tells it to stop for `reason` (none: only its connection is closed) and closes its
|
|
101
|
+
* connection. Returns the revoked machine's id. Used by {@link issue} (replaced: no stop),
|
|
102
|
+
* {@link revoke} and the environment's deletion (`deleted`).
|
|
103
|
+
*/
|
|
104
|
+
revokeActive(environmentId: string, reason: DeviceStopArgs["reason"] | null): Promise<string | null>;
|
|
105
|
+
/**
|
|
106
|
+
* Revokes one machine by id (a sign-in whose credential never reached the program), with the
|
|
107
|
+
* same post-commit disconnect as a replacement (no stop frame). True when it was active.
|
|
108
|
+
*/
|
|
109
|
+
revokeMachine(machineId: string): Promise<boolean>;
|
|
110
|
+
/** The environment's active machine, or null. */
|
|
111
|
+
activeFor(environmentId: string): Promise<ActiveMachine | null>;
|
|
112
|
+
/**
|
|
113
|
+
* After a revocation commits: `stop` is queued only while a replica holds the connection (an
|
|
114
|
+
* offline machine must not find it on the list later), then the revocation is published.
|
|
115
|
+
* Failures are logged; the revocation itself stands.
|
|
116
|
+
*/
|
|
117
|
+
private disconnect;
|
|
118
|
+
}
|