@capybara-hq/kernel 0.1.0-rc.3 → 0.1.0-rc.5
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 +61 -5
- package/dist/admin/admin.controller.d.ts +47 -16
- package/dist/admin/admin.controller.js +44 -19
- package/dist/admin/extensions.controller.d.ts +24 -3
- package/dist/admin/extensions.controller.js +48 -8
- package/dist/admin/setup-lock.d.ts +1 -1
- package/dist/admin/setup-lock.js +1 -1
- package/dist/admin/setup.controller.d.ts +1 -1
- package/dist/admin/setup.controller.js +1 -1
- package/dist/admin/setup.service.d.ts +4 -4
- package/dist/admin/setup.service.js +8 -8
- package/dist/agents/agent-lookup.d.ts +19 -0
- package/dist/agents/agent-lookup.js +21 -0
- package/dist/agents/agent-profile.service.d.ts +29 -0
- package/dist/agents/agent-profile.service.js +117 -0
- package/dist/agents/agents.controller.d.ts +168 -3
- package/dist/agents/agents.controller.js +201 -12
- package/dist/agents/agents.module.d.ts +4 -1
- package/dist/agents/agents.module.js +36 -6
- package/dist/agents/agents.service.d.ts +64 -27
- package/dist/agents/agents.service.js +199 -74
- package/dist/agents/definition.d.ts +53 -0
- package/dist/agents/definition.js +55 -0
- package/dist/agents/from-template.d.ts +106 -0
- package/dist/agents/from-template.js +649 -0
- package/dist/agents/from-template.service.d.ts +60 -0
- package/dist/agents/from-template.service.js +161 -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 +9 -3
- package/dist/agents/models.controller.js +19 -4
- package/dist/agents/org-templates.d.ts +176 -0
- package/dist/agents/org-templates.js +827 -0
- package/dist/agents/pending-connector-requests.d.ts +77 -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 +96 -0
- package/dist/agents/profile.js +51 -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 +86 -5
- package/dist/agents/templates.controller.js +171 -7
- package/dist/agents/templates.d.ts +127 -23
- package/dist/agents/templates.js +476 -53
- package/dist/background/background.controller.d.ts +38 -0
- package/dist/background/background.controller.js +87 -0
- package/dist/background/background.module.d.ts +10 -0
- package/dist/background/background.module.js +39 -0
- package/dist/background/finish.d.ts +44 -0
- package/dist/background/finish.js +94 -0
- package/dist/background/launch-lock.d.ts +15 -0
- package/dist/background/launch-lock.js +40 -0
- package/dist/background/launch.d.ts +36 -0
- package/dist/background/launch.js +70 -0
- package/dist/background/poll.job.d.ts +56 -0
- package/dist/background/poll.job.js +190 -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 +79 -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 +243 -0
- package/dist/background/store.d.ts +162 -0
- package/dist/background/store.js +357 -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 +211 -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 +129 -30
- package/dist/catalog/admin-catalog.controller.js +213 -42
- package/dist/catalog/catalog-content.d.ts +58 -32
- package/dist/catalog/catalog-content.js +34 -8
- 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 +111 -7
- package/dist/catalog/catalog-items.js +279 -13
- package/dist/catalog/catalog-scope.service.d.ts +260 -0
- package/dist/catalog/catalog-scope.service.js +1116 -0
- package/dist/catalog/catalog.module.d.ts +7 -9
- package/dist/catalog/catalog.module.js +41 -31
- package/dist/catalog/catalog.service.d.ts +101 -29
- package/dist/catalog/catalog.service.js +104 -106
- package/dist/catalog/claude/agents.js +2 -0
- package/dist/catalog/cli.d.ts +11 -1
- package/dist/catalog/cli.js +26 -1
- package/dist/catalog/component-promotion.d.ts +96 -0
- package/dist/catalog/component-promotion.js +395 -0
- package/dist/catalog/component-scope.controller.d.ts +152 -0
- package/dist/catalog/component-scope.controller.js +287 -0
- package/dist/catalog/component-scope.service.d.ts +303 -0
- package/dist/catalog/component-scope.service.js +936 -0
- package/dist/catalog/component-state.d.ts +174 -0
- package/dist/catalog/component-state.js +437 -0
- package/dist/catalog/job-ids.d.ts +30 -0
- package/dist/catalog/job-ids.js +25 -0
- package/dist/catalog/marketplace-fetch.d.ts +1 -1
- package/dist/catalog/marketplaces.controller.d.ts +22 -5
- package/dist/catalog/marketplaces.controller.js +56 -7
- package/dist/catalog/marketplaces.service.d.ts +54 -14
- package/dist/catalog/marketplaces.service.js +71 -22
- package/dist/catalog/org-catalog.controller.d.ts +125 -34
- package/dist/catalog/org-catalog.controller.js +181 -65
- package/dist/catalog/org-catalog.service.d.ts +65 -33
- package/dist/catalog/org-catalog.service.js +324 -157
- 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 +119 -0
- package/dist/catalog/org-extension.controller.js +266 -0
- package/dist/catalog/org-plugin-uploads.controller.d.ts +98 -0
- package/dist/catalog/org-plugin-uploads.controller.js +213 -0
- package/dist/catalog/org-plugin-uploads.d.ts +63 -0
- package/dist/catalog/org-plugin-uploads.js +116 -0
- package/dist/catalog/owned-items.d.ts +184 -0
- package/dist/catalog/owned-items.js +789 -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 +221 -0
- package/dist/catalog/platform-components.js +761 -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 +178 -34
- package/dist/catalog/plugin-import.js +623 -83
- package/dist/catalog/plugin-install.d.ts +185 -41
- package/dist/catalog/plugin-install.js +758 -126
- package/dist/catalog/plugin-upgrade.d.ts +260 -225
- package/dist/catalog/plugin-upgrade.js +1148 -1137
- package/dist/catalog/request-rules.d.ts +65 -0
- package/dist/catalog/request-rules.js +217 -0
- package/dist/catalog/requests.service.d.ts +193 -118
- package/dist/catalog/requests.service.js +526 -343
- package/dist/catalog/reserved-names.d.ts +8 -0
- package/dist/catalog/reserved-names.js +42 -0
- package/dist/catalog/scope-orgs.d.ts +21 -0
- package/dist/catalog/scope-orgs.js +67 -0
- package/dist/catalog/scope-state.d.ts +35 -0
- package/dist/catalog/scope-state.js +87 -0
- package/dist/catalog/scope-sync-workers.d.ts +7 -0
- package/dist/catalog/scope-sync-workers.js +29 -0
- package/dist/catalog/scope-sync.d.ts +176 -0
- package/dist/catalog/scope-sync.js +576 -0
- package/dist/catalog/scope.d.ts +42 -0
- package/dist/catalog/scope.js +42 -0
- package/dist/catalog/unshare.d.ts +22 -0
- package/dist/catalog/unshare.js +118 -0
- package/dist/channels/actions.js +1 -0
- package/dist/channels/cards.js +21 -3
- package/dist/channels/channels.module.js +2 -0
- package/dist/channels/connections.service.d.ts +16 -1
- package/dist/channels/connections.service.js +38 -4
- package/dist/channels/inbound.d.ts +9 -1
- package/dist/channels/inbound.js +67 -5
- package/dist/channels/phrases.d.ts +35 -0
- package/dist/channels/phrases.js +29 -0
- package/dist/channels/threads.d.ts +5 -0
- package/dist/channels/threads.js +8 -0
- package/dist/config/docs.js +3 -1
- package/dist/config/schema.d.ts +24 -2
- package/dist/config/schema.js +145 -19
- package/dist/conversations/access.d.ts +6 -4
- package/dist/conversations/access.js +29 -5
- package/dist/conversations/agent-tree.d.ts +46 -0
- package/dist/conversations/agent-tree.js +92 -0
- package/dist/conversations/attachments.service.d.ts +30 -0
- package/dist/conversations/attachments.service.js +130 -5
- package/dist/conversations/conversations.controller.d.ts +79 -23
- package/dist/conversations/conversations.controller.js +141 -50
- package/dist/conversations/conversations.module.d.ts +1 -1
- package/dist/conversations/conversations.module.js +10 -7
- package/dist/conversations/conversations.service.d.ts +108 -9
- package/dist/conversations/conversations.service.js +237 -30
- package/dist/conversations/environment-status.d.ts +24 -0
- package/dist/conversations/environment-status.js +71 -0
- package/dist/conversations/event-log.d.ts +21 -6
- package/dist/conversations/event-log.js +70 -1
- package/dist/conversations/events.d.ts +140 -0
- package/dist/conversations/events.js +142 -13
- package/dist/conversations/queue.d.ts +3 -1
- package/dist/conversations/queue.js +13 -2
- package/dist/conversations/queue.service.d.ts +1 -1
- package/dist/conversations/queue.service.js +8 -1
- package/dist/conversations/titles.d.ts +12 -3
- package/dist/conversations/titles.js +36 -8
- package/dist/conversations/tree.d.ts +17 -0
- package/dist/conversations/tree.js +42 -0
- package/dist/ctx/create-ctx.d.ts +5 -0
- package/dist/ctx/create-ctx.js +15 -5
- package/dist/db/kernel-schema.d.ts +420 -20
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +3 -0
- package/dist/environments/access.d.ts +41 -0
- package/dist/environments/access.js +77 -0
- package/dist/environments/conversation-environments.d.ts +61 -0
- package/dist/environments/conversation-environments.js +170 -0
- package/dist/environments/dto.d.ts +25 -0
- package/dist/environments/dto.js +12 -0
- package/dist/environments/environments.controller.d.ts +33 -0
- package/dist/environments/environments.controller.js +110 -0
- package/dist/environments/environments.module.d.ts +8 -0
- package/dist/environments/environments.module.js +27 -0
- package/dist/environments/environments.service.d.ts +153 -0
- package/dist/environments/environments.service.js +541 -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 +90 -2
- package/dist/errors.js +90 -2
- package/dist/evals/reconstruct.d.ts +18 -9
- package/dist/evals/reconstruct.js +26 -7
- package/dist/evals/run-replay.d.ts +7 -2
- package/dist/evals/run-replay.js +42 -7
- package/dist/evals/step-replay.d.ts +2 -5
- package/dist/evals/step-replay.js +13 -7
- package/dist/evals/trajectory.js +1 -1
- package/dist/evals/trajectory.service.d.ts +8 -3
- package/dist/evals/trajectory.service.js +26 -14
- package/dist/evals/worker.d.ts +5 -5
- package/dist/evals/worker.js +9 -3
- package/dist/extensions/admin-ops.d.ts +36 -10
- package/dist/extensions/admin-ops.js +67 -42
- package/dist/extensions/admin-view.d.ts +39 -10
- package/dist/extensions/admin-view.js +111 -20
- package/dist/extensions/blobs.js +1 -0
- package/dist/extensions/bootstrap.d.ts +17 -4
- package/dist/extensions/bootstrap.js +70 -9
- package/dist/extensions/cli.d.ts +12 -0
- package/dist/extensions/cli.js +11 -2
- package/dist/extensions/config-issues.d.ts +13 -1
- package/dist/extensions/config-issues.js +22 -5
- package/dist/extensions/config-json-schema.d.ts +43 -7
- package/dist/extensions/config-json-schema.js +124 -58
- package/dist/extensions/deployment-config-store.d.ts +6 -0
- package/dist/extensions/deployment-config.d.ts +78 -8
- package/dist/extensions/deployment-config.js +172 -34
- package/dist/extensions/display-name.d.ts +22 -0
- package/dist/extensions/display-name.js +77 -0
- package/dist/extensions/effective-config.d.ts +127 -0
- package/dist/extensions/effective-config.js +368 -0
- package/dist/extensions/extensions.module.js +14 -2
- package/dist/extensions/hooks.d.ts +37 -4
- package/dist/extensions/hooks.js +82 -16
- package/dist/extensions/host.d.ts +45 -2
- package/dist/extensions/host.js +112 -16
- package/dist/extensions/installs.d.ts +20 -8
- package/dist/extensions/installs.js +37 -15
- package/dist/extensions/org-config.d.ts +81 -6
- package/dist/extensions/org-config.js +195 -44
- 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 +19 -4
- package/dist/extensions/permission-view.js +4 -4
- 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 +34 -0
- package/dist/extensions/point-defaults.controller.js +71 -0
- package/dist/extensions/point-defaults.d.ts +71 -0
- package/dist/extensions/point-defaults.js +234 -0
- package/dist/extensions/registry.d.ts +1 -1
- package/dist/extensions/registry.js +2 -0
- package/dist/extensions/resolve.d.ts +5 -1
- package/dist/extensions/resolve.js +15 -2
- package/dist/files/previewers.d.ts +8 -1
- package/dist/files/previewers.js +35 -6
- package/dist/http/api.module.js +31 -3
- package/dist/http/app.d.ts +11 -2
- package/dist/http/app.js +31 -5
- package/dist/http/nest-logger.d.ts +6 -5
- package/dist/http/nest-logger.js +24 -10
- package/dist/identity/accounts.d.ts +29 -29
- package/dist/identity/accounts.js +47 -47
- package/dist/identity/audit.d.ts +2 -1
- package/dist/identity/auth.controller.js +9 -5
- package/dist/identity/auth.guard.d.ts +13 -5
- package/dist/identity/auth.guard.js +26 -9
- package/dist/identity/cookies.d.ts +20 -5
- package/dist/identity/cookies.js +44 -6
- package/dist/identity/identity.module.d.ts +1 -1
- package/dist/identity/identity.module.js +4 -4
- package/dist/identity/me.controller.d.ts +5 -1
- package/dist/identity/me.controller.js +12 -3
- package/dist/identity/principal.d.ts +3 -3
- package/dist/identity/principal.js +3 -3
- package/dist/identity/sessions.d.ts +12 -0
- package/dist/identity/sessions.js +45 -0
- package/dist/identity/settings.d.ts +22 -11
- package/dist/identity/settings.js +53 -18
- package/dist/identity/{enterprise-admin.d.ts → super-admin.d.ts} +5 -5
- package/dist/identity/{enterprise-admin.js → super-admin.js} +24 -24
- package/dist/inbox/inbox.module.d.ts +4 -1
- package/dist/inbox/inbox.module.js +7 -3
- package/dist/inbox/inbox.service.d.ts +62 -3
- package/dist/inbox/inbox.service.js +74 -4
- package/dist/inbox/org-notices.d.ts +63 -0
- package/dist/inbox/org-notices.js +91 -0
- package/dist/inbox/platform-inbox.controller.d.ts +23 -0
- package/dist/inbox/platform-inbox.controller.js +58 -0
- package/dist/inbox/platform-inbox.service.d.ts +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 +2 -2
- package/dist/index.js +1 -1
- package/dist/infra/cli/kernel-cli.module.js +9 -1
- package/dist/infra/config/kernel-config.service.js +27 -1
- package/dist/infra/database/database.module.js +1 -0
- package/dist/infra/database/xact-lock.d.ts +1 -1
- package/dist/infra/database/xact-lock.js +1 -1
- package/dist/infra/events/kernel-events.d.ts +19 -2
- package/dist/infra/lifecycle/process-guards.js +4 -0
- package/dist/infra/logging/logging.module.d.ts +4 -2
- package/dist/infra/logging/logging.module.js +24 -6
- package/dist/infra/queue/add-job-once.d.ts +14 -0
- package/dist/infra/queue/add-job-once.js +16 -0
- package/dist/infra/queue/redis-connection.d.ts +6 -0
- package/dist/infra/queue/redis-connection.js +7 -0
- package/dist/infra/redis/redis.module.js +6 -2
- package/dist/infra/tokens.d.ts +6 -1
- package/dist/infra/tokens.js +6 -1
- package/dist/kernel.module.js +6 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +1 -1
- package/dist/lifecycle/kernel-lifecycle.js +4 -4
- package/dist/log.d.ts +13 -1
- package/dist/log.js +93 -17
- package/dist/models/prices.d.ts +5 -5
- package/dist/models/prices.js +4 -4
- package/dist/models/purposes.controller.d.ts +6 -4
- package/dist/models/purposes.controller.js +13 -7
- package/dist/models/purposes.d.ts +43 -9
- package/dist/models/purposes.js +48 -18
- package/dist/orgs/directory-sync.d.ts +14 -5
- package/dist/orgs/directory-sync.js +41 -17
- package/dist/orgs/offboarding.d.ts +12 -8
- package/dist/orgs/offboarding.js +54 -33
- package/dist/orgs/org-lock.d.ts +5 -0
- package/dist/orgs/org-lock.js +13 -0
- package/dist/orgs/org.guard.d.ts +10 -0
- package/dist/orgs/org.guard.js +43 -32
- package/dist/orgs/orgs.module.js +3 -0
- package/dist/orgs/orgs.service.d.ts +20 -7
- package/dist/orgs/orgs.service.js +32 -12
- package/dist/orgs/roles.d.ts +1 -1
- package/dist/orgs/roles.js +5 -1
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.service.d.ts +20 -3
- package/dist/orgs/settings.service.js +19 -4
- package/dist/overrides.d.ts +3 -0
- package/dist/overrides.js +2 -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 +11 -0
- package/dist/platform/errors.js +26 -0
- package/dist/platform/exclusions.d.ts +12 -0
- package/dist/platform/exclusions.js +1387 -0
- package/dist/platform/method.d.ts +6 -0
- package/dist/platform/method.js +15 -0
- package/dist/platform/operation.d.ts +92 -0
- package/dist/platform/operation.js +35 -0
- package/dist/platform/ops/agent-templates.ops.d.ts +14 -0
- package/dist/platform/ops/agent-templates.ops.js +92 -0
- package/dist/platform/ops/agents.ops.d.ts +19 -0
- package/dist/platform/ops/agents.ops.js +294 -0
- package/dist/platform/ops/connectors.ops.d.ts +15 -0
- package/dist/platform/ops/connectors.ops.js +126 -0
- package/dist/platform/ops/errors.d.ts +11 -0
- package/dist/platform/ops/errors.js +22 -0
- package/dist/platform/ops/extensions.ops.d.ts +19 -0
- package/dist/platform/ops/extensions.ops.js +116 -0
- package/dist/platform/ops/marketplaces.ops.d.ts +16 -0
- package/dist/platform/ops/marketplaces.ops.js +157 -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 +23 -0
- package/dist/platform/ops/platform.ops.js +158 -0
- package/dist/platform/ops/plugins.ops.d.ts +33 -0
- package/dist/platform/ops/plugins.ops.js +377 -0
- package/dist/platform/ops/requests.ops.d.ts +14 -0
- package/dist/platform/ops/requests.ops.js +153 -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 +13 -0
- package/dist/platform/ops/skills.ops.js +98 -0
- package/dist/platform/ops/summary.d.ts +10 -0
- package/dist/platform/ops/summary.js +18 -0
- package/dist/platform/platform-ops.module.d.ts +7 -0
- package/dist/platform/platform-ops.module.js +55 -0
- package/dist/platform/platform.module.d.ts +8 -0
- package/dist/platform/platform.module.js +25 -0
- package/dist/platform/redact-orgs.d.ts +7 -0
- package/dist/platform/redact-orgs.js +52 -0
- package/dist/platform/registry.d.ts +30 -0
- package/dist/platform/registry.js +111 -0
- package/dist/roles/worker-role.d.ts +6 -4
- package/dist/roles/worker-role.js +14 -7
- package/dist/roles/worker.module.d.ts +1 -1
- package/dist/roles/worker.module.js +15 -1
- package/dist/runtime/context/build.d.ts +11 -7
- package/dist/runtime/context/build.js +46 -19
- package/dist/runtime/context/claude-tools.d.ts +3 -1
- package/dist/runtime/context/claude-tools.js +8 -6
- package/dist/runtime/context/compaction.js +13 -0
- package/dist/runtime/context/reminders.d.ts +2 -0
- package/dist/runtime/context/reminders.js +2 -0
- package/dist/runtime/context/skills.js +9 -2
- package/dist/runtime/context/tool-changes.d.ts +27 -0
- package/dist/runtime/context/tool-changes.js +60 -0
- package/dist/runtime/hook-calls.js +2 -0
- package/dist/runtime/langgraph-loop.d.ts +3 -1
- package/dist/runtime/langgraph-loop.js +36 -17
- package/dist/runtime/loop.d.ts +34 -5
- package/dist/runtime/maintenance.d.ts +9 -4
- package/dist/runtime/maintenance.js +35 -8
- package/dist/runtime/model-call.d.ts +46 -8
- package/dist/runtime/model-call.js +72 -21
- package/dist/runtime/providers.d.ts +6 -0
- package/dist/runtime/providers.js +8 -0
- package/dist/runtime/run-control.d.ts +11 -1
- package/dist/runtime/run-control.js +12 -0
- package/dist/runtime/run-drafts.d.ts +85 -0
- package/dist/runtime/run-drafts.js +230 -0
- package/dist/runtime/run-jobs.d.ts +3 -5
- package/dist/runtime/run-jobs.js +3 -7
- package/dist/runtime/run-queue.d.ts +59 -2
- package/dist/runtime/run-queue.js +311 -38
- package/dist/runtime/run-worker.d.ts +11 -5
- package/dist/runtime/run-worker.js +69 -33
- package/dist/runtime/runtime.module.js +11 -3
- package/dist/runtime/step-log.d.ts +15 -4
- package/dist/runtime/step-log.js +24 -7
- package/dist/runtime/stream.controller.d.ts +23 -1
- package/dist/runtime/stream.controller.js +60 -3
- package/dist/runtime/stream.d.ts +4 -1
- package/dist/runtime/stream.js +27 -3
- package/dist/runtime/subagents/child.d.ts +55 -7
- package/dist/runtime/subagents/child.js +105 -7
- package/dist/runtime/subagents/definition.d.ts +12 -3
- package/dist/runtime/subagents/definition.js +44 -28
- package/dist/runtime/subagents/deliveries.d.ts +71 -0
- package/dist/runtime/subagents/deliveries.js +228 -0
- package/dist/runtime/subagents/dispatch.d.ts +115 -26
- package/dist/runtime/subagents/dispatch.js +212 -141
- package/dist/runtime/subagents/limits.d.ts +24 -5
- package/dist/runtime/subagents/limits.js +40 -6
- package/dist/runtime/subagents/messages.d.ts +95 -0
- package/dist/runtime/subagents/messages.js +328 -0
- package/dist/runtime/subagents/preamble.d.ts +4 -4
- package/dist/runtime/subagents/preamble.js +9 -7
- package/dist/runtime/subagents/progress.d.ts +8 -6
- package/dist/runtime/subagents/progress.js +11 -6
- package/dist/runtime/subagents/render.d.ts +30 -0
- package/dist/runtime/subagents/render.js +53 -0
- package/dist/runtime/subagents/roster.d.ts +24 -7
- package/dist/runtime/subagents/roster.js +47 -11
- package/dist/runtime/subagents/skill-fork.d.ts +3 -2
- package/dist/runtime/subagents/skill-fork.js +8 -4
- 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 +7 -4
- package/dist/runtime/subagents/subagents.service.js +11 -6
- package/dist/runtime/usage-report.d.ts +2 -1
- package/dist/runtime/usage-report.js +19 -13
- package/dist/runtime/waits.d.ts +145 -36
- package/dist/runtime/waits.js +423 -109
- package/dist/sandbox/jobs.d.ts +40 -13
- package/dist/sandbox/jobs.js +57 -20
- package/dist/sandbox/leases.d.ts +37 -54
- package/dist/sandbox/leases.js +71 -115
- package/dist/sandbox/providers.d.ts +2 -2
- package/dist/sandbox/providers.js +1 -1
- package/dist/sandbox/sandbox.module.d.ts +3 -2
- package/dist/sandbox/sandbox.module.js +10 -4
- package/dist/sandbox/sandbox.service.d.ts +282 -129
- package/dist/sandbox/sandbox.service.js +736 -381
- package/dist/skills/catalog.d.ts +3 -2
- package/dist/skills/catalog.js +21 -43
- package/dist/skills/changes.controller.d.ts +7 -0
- package/dist/skills/changes.controller.js +19 -1
- package/dist/skills/invoke.js +8 -3
- package/dist/skills/package.d.ts +20 -1
- package/dist/skills/package.js +28 -1
- package/dist/skills/skills.controller.d.ts +39 -4
- package/dist/skills/skills.controller.js +88 -10
- package/dist/skills/skills.module.js +10 -1
- package/dist/skills/skills.service.d.ts +106 -26
- package/dist/skills/skills.service.js +421 -75
- package/dist/skills/usable.d.ts +81 -0
- package/dist/skills/usable.js +379 -0
- package/dist/tools/approvals.service.d.ts +20 -2
- package/dist/tools/approvals.service.js +25 -4
- package/dist/tools/builtin-names.d.ts +41 -7
- package/dist/tools/builtin-names.js +59 -7
- package/dist/tools/builtins/agent.d.ts +23 -21
- package/dist/tools/builtins/agent.js +62 -55
- package/dist/tools/builtins/builtin-tools.d.ts +19 -1
- package/dist/tools/builtins/builtin-tools.js +59 -2
- package/dist/tools/builtins/handback.d.ts +28 -0
- package/dist/tools/builtins/handback.js +53 -0
- package/dist/tools/builtins/platform.d.ts +34 -0
- package/dist/tools/builtins/platform.js +362 -0
- package/dist/tools/builtins/sandbox/bash.d.ts +1 -1
- package/dist/tools/builtins/sandbox/bash.js +241 -4
- package/dist/tools/builtins/sandbox/common.d.ts +69 -27
- package/dist/tools/builtins/sandbox/common.js +87 -48
- package/dist/tools/builtins/sandbox/deliver.js +1 -1
- package/dist/tools/builtins/sandbox/edit.js +2 -2
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -4
- package/dist/tools/builtins/sandbox/index.d.ts +3 -1
- package/dist/tools/builtins/sandbox/index.js +7 -1
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/task-output.d.ts +74 -0
- package/dist/tools/builtins/sandbox/task-output.js +329 -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.js +2 -2
- 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 +22 -14
- package/dist/tools/builtins/skill-load.js +86 -57
- package/dist/tools/builtins/skill-write.js +1 -1
- 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/connectors.controller.d.ts +10 -0
- package/dist/tools/connectors.controller.js +12 -0
- package/dist/tools/connectors.service.d.ts +46 -5
- package/dist/tools/connectors.service.js +94 -15
- 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 +42 -1
- package/dist/tools/info.js +64 -1
- package/dist/tools/oauth/flow-paths.d.ts +1 -1
- package/dist/tools/oauth/flow-paths.js +1 -1
- package/dist/tools/org-tool-switches.d.ts +74 -0
- package/dist/tools/org-tool-switches.js +184 -0
- package/dist/tools/pipeline.d.ts +46 -40
- package/dist/tools/pipeline.js +202 -364
- package/dist/tools/policy.d.ts +1 -1
- package/dist/tools/policy.js +36 -16
- package/dist/tools/registry.d.ts +120 -8
- package/dist/tools/registry.js +112 -19
- package/dist/tools/tools.module.js +24 -2
- package/dist/tools/validate.js +1 -1
- package/dist/ui/views.d.ts +2 -1
- package/dist/ui/views.js +17 -3
- package/package.json +3 -3
- 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/dist/catalog/upgrade-targets.d.ts +0 -56
- package/dist/catalog/upgrade-targets.js +0 -90
- package/dist/conversations/sandbox-status.d.ts +0 -24
- package/dist/conversations/sandbox-status.js +0 -52
- package/dist/extensions/org-config.controller.d.ts +0 -24
- package/dist/extensions/org-config.controller.js +0 -62
package/dist/db/pool.js
CHANGED
|
@@ -22,6 +22,9 @@ export function createDb(url, poolMax, onError = (err) => console.error("[db] id
|
|
|
22
22
|
connectionString: url,
|
|
23
23
|
max: poolMax,
|
|
24
24
|
...pgConnectOptions(opts),
|
|
25
|
+
...(opts.idleTimeoutMs !== undefined && { idleTimeoutMillis: opts.idleTimeoutMs }),
|
|
26
|
+
// a client kept idle longer must notice a dead peer (a dropped VPN, a NAT timeout) by itself
|
|
27
|
+
keepAlive: true,
|
|
25
28
|
});
|
|
26
29
|
pool.on("error", onError);
|
|
27
30
|
pool.on("connect", (client) => client.on("error", opts.onClientError ?? onError));
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ApiError } from "../errors.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { SandboxProviders } from "../sandbox/providers.js";
|
|
4
|
+
/** What decides an environment's provider: its own record and its instance row's (if any). */
|
|
5
|
+
export interface ProviderFacts {
|
|
6
|
+
/** `environments.provider`: the provider current when it was created. */
|
|
7
|
+
provider: string | null;
|
|
8
|
+
/** `environment_instances.provider`; null without an instance row. */
|
|
9
|
+
instanceProvider: string | null;
|
|
10
|
+
/** The instance row's `fs_status`; null without an instance row. */
|
|
11
|
+
fsStatus: "none" | "ready" | "lost" | null;
|
|
12
|
+
/** The instance row records an instance handle. */
|
|
13
|
+
hasInstance: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The provider an environment works with: the one keeping its files or instance once it has any
|
|
17
|
+
* (they are never migrated, spec §4.2 item 13); before that, the current provider (its first use
|
|
18
|
+
* creates them there), else the one recorded at creation. The same rule as `SandboxService`'s use.
|
|
19
|
+
*/
|
|
20
|
+
export declare function environmentProvider(f: ProviderFacts, current: string | undefined): string | null;
|
|
21
|
+
/** The environment's provider is not the current one, or there is no provider (503). */
|
|
22
|
+
export declare const environmentUnavailable: (provider: string | null) => ApiError;
|
|
23
|
+
/**
|
|
24
|
+
* Who may use an environment (spec §4.2 item 12): in phase 1 only the owner of a personal
|
|
25
|
+
* environment. Anyone else gets `environment.not_found`, never `forbidden`, so ids cannot be
|
|
26
|
+
* probed. Read live on every call (PG, no cache); phase 3 adds project membership.
|
|
27
|
+
*/
|
|
28
|
+
export declare class EnvironmentAccess {
|
|
29
|
+
private readonly db;
|
|
30
|
+
private readonly providers;
|
|
31
|
+
constructor(db: KernelDb, providers: Pick<SandboxProviders, "current">);
|
|
32
|
+
/**
|
|
33
|
+
* The environment if `accountId` may use it in `orgId` now: `environment.not_found` when it is
|
|
34
|
+
* missing, deleted, in another org or someone else's; `environment.unavailable` when its
|
|
35
|
+
* provider is not the current one (or there is none).
|
|
36
|
+
*/
|
|
37
|
+
usable(orgId: string, accountId: string, environmentId: string): Promise<{
|
|
38
|
+
id: string;
|
|
39
|
+
provider: string | null;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
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 { ApiError } from "../errors.js";
|
|
12
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
13
|
+
import { SandboxProviders } from "../sandbox/providers.js";
|
|
14
|
+
import { environmentNotFound } from "../sandbox/sandbox.service.js";
|
|
15
|
+
/**
|
|
16
|
+
* The provider an environment works with: the one keeping its files or instance once it has any
|
|
17
|
+
* (they are never migrated, spec §4.2 item 13); before that, the current provider (its first use
|
|
18
|
+
* creates them there), else the one recorded at creation. The same rule as `SandboxService`'s use.
|
|
19
|
+
*/
|
|
20
|
+
export function environmentProvider(f, current) {
|
|
21
|
+
const holdsResources = f.fsStatus !== null && (f.fsStatus !== "none" || f.hasInstance);
|
|
22
|
+
if (holdsResources)
|
|
23
|
+
return f.instanceProvider;
|
|
24
|
+
return current ?? f.provider;
|
|
25
|
+
}
|
|
26
|
+
/** The environment's provider is not the current one, or there is no provider (503). */
|
|
27
|
+
export const environmentUnavailable = (provider) => new ApiError("environment.unavailable", provider === null
|
|
28
|
+
? "No cloud sandbox is available in this deployment; ask the super admin to enable a sandbox plugin"
|
|
29
|
+
: `This environment is kept by the sandbox provider ${provider}, which is not the current provider; it can be used again once ${provider} is the deployment's sandbox provider`);
|
|
30
|
+
/**
|
|
31
|
+
* Who may use an environment (spec §4.2 item 12): in phase 1 only the owner of a personal
|
|
32
|
+
* environment. Anyone else gets `environment.not_found`, never `forbidden`, so ids cannot be
|
|
33
|
+
* probed. Read live on every call (PG, no cache); phase 3 adds project membership.
|
|
34
|
+
*/
|
|
35
|
+
let EnvironmentAccess = class EnvironmentAccess {
|
|
36
|
+
db;
|
|
37
|
+
providers;
|
|
38
|
+
constructor(db, providers) {
|
|
39
|
+
this.db = db;
|
|
40
|
+
this.providers = providers;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The environment if `accountId` may use it in `orgId` now: `environment.not_found` when it is
|
|
44
|
+
* missing, deleted, in another org or someone else's; `environment.unavailable` when its
|
|
45
|
+
* provider is not the current one (or there is none).
|
|
46
|
+
*/
|
|
47
|
+
async usable(orgId, accountId, environmentId) {
|
|
48
|
+
const row = await this.db
|
|
49
|
+
.selectFrom("environments as e")
|
|
50
|
+
.leftJoin("environment_instances as i", "i.environment_id", "e.id")
|
|
51
|
+
.select(["e.id", "e.provider", "i.provider as instance_provider", "i.fs_status", "i.handle"])
|
|
52
|
+
.where("e.id", "=", environmentId)
|
|
53
|
+
.where("e.org_id", "=", orgId)
|
|
54
|
+
.where("e.owner_kind", "=", "personal")
|
|
55
|
+
.where("e.owner_account_id", "=", accountId)
|
|
56
|
+
.where("e.deleted_at", "is", null)
|
|
57
|
+
.executeTakeFirst();
|
|
58
|
+
if (!row)
|
|
59
|
+
throw environmentNotFound();
|
|
60
|
+
const current = this.providers.current()?.plugin;
|
|
61
|
+
const provider = environmentProvider({
|
|
62
|
+
provider: row.provider,
|
|
63
|
+
instanceProvider: row.instance_provider,
|
|
64
|
+
fsStatus: row.fs_status,
|
|
65
|
+
hasInstance: row.handle !== null,
|
|
66
|
+
}, current);
|
|
67
|
+
if (current === undefined || provider !== current)
|
|
68
|
+
throw environmentUnavailable(provider);
|
|
69
|
+
return { id: row.id, provider };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
EnvironmentAccess = __decorate([
|
|
73
|
+
Injectable(),
|
|
74
|
+
__param(0, Inject(KernelDb)),
|
|
75
|
+
__param(1, Inject(SandboxProviders))
|
|
76
|
+
], EnvironmentAccess);
|
|
77
|
+
export { EnvironmentAccess };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ApiError } from "../errors.js";
|
|
2
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
3
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
4
|
+
import { SandboxProviders } from "../sandbox/providers.js";
|
|
5
|
+
import { EnvironmentAccess } from "./access.js";
|
|
6
|
+
import { EnvironmentsService } from "./environments.service.js";
|
|
7
|
+
/** `details[0].reason` of the error an anonymous IM conversation's sandbox call gets. */
|
|
8
|
+
export declare const ANONYMOUS_NO_ENVIRONMENT = "anonymous";
|
|
9
|
+
/** Anonymous IM senders have no environment (spec §4.2 item 8): their sandbox tools are off. */
|
|
10
|
+
export declare const anonymousNoEnvironment: () => ApiError;
|
|
11
|
+
/** How a new conversation picks its environment. */
|
|
12
|
+
export interface NewConversationEnvironment {
|
|
13
|
+
/** The environment the person chose (the composer's picker); checked with `usable`. */
|
|
14
|
+
environmentId?: string;
|
|
15
|
+
/** An IM thread: the person's IM default (`environment_defaults`) when still usable. */
|
|
16
|
+
im?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Which environment a conversation works in (spec 2026-11-07-environments-design §4.1 items 1, 3;
|
|
20
|
+
* §4.2 items 8, 9, 12). A conversation is bound once, to an environment of its owner
|
|
21
|
+
* (`conversations.account_id`): the one chosen at its first send, else the owner's IM default
|
|
22
|
+
* (IM threads), else the owner's default environment. Its sub-agents use the root's. Access is
|
|
23
|
+
* checked when it is bound and again on every sandbox tool call ({@link forTool}); only the owner
|
|
24
|
+
* may use a personal environment, so a conversation never reaches another person's.
|
|
25
|
+
*/
|
|
26
|
+
export declare class ConversationEnvironments {
|
|
27
|
+
private readonly db;
|
|
28
|
+
readonly txHost: TransactionHost;
|
|
29
|
+
private readonly providers;
|
|
30
|
+
private readonly access;
|
|
31
|
+
private readonly environments;
|
|
32
|
+
constructor(db: KernelDb, txHost: TransactionHost, providers: Pick<SandboxProviders, "current">, access: Pick<EnvironmentAccess, "usable">, environments: Pick<EnvironmentsService, "ensureDefault">);
|
|
33
|
+
/**
|
|
34
|
+
* The environment a new conversation of `accountId` is bound to: the chosen one when it is
|
|
35
|
+
* usable by the person (else `environment.not_found` / `environment.unavailable`, and nothing
|
|
36
|
+
* is created); without a choice the IM default (IM only) or the person's default environment.
|
|
37
|
+
* Null (unbound) without a sandbox provider and for anonymous IM senders.
|
|
38
|
+
*/
|
|
39
|
+
forNew(orgId: string, accountId: string, pick?: NewConversationEnvironment): Promise<string | null>;
|
|
40
|
+
/**
|
|
41
|
+
* The environment a sandbox tool call of the conversation tree rooted at `rootConversationId`
|
|
42
|
+
* enters, checked for its owner now. A conversation still unbound (created before
|
|
43
|
+
* environments, or while no provider existed) is bound first, to the owner's IM default when it
|
|
44
|
+
* is an IM thread, else to the owner's default environment; a racing call binds it once.
|
|
45
|
+
* Throws `sandbox.unavailable` without a provider or for an anonymous IM conversation, and
|
|
46
|
+
* `environment.not_found` / `environment.unavailable` when the owner may not use it now.
|
|
47
|
+
*/
|
|
48
|
+
forTool(orgId: string, rootConversationId: string): Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* The person's IM default when `im` and it is still theirs, live, in this org and usable (the
|
|
51
|
+
* table has no such guard), else their default environment (created when missing). The owner
|
|
52
|
+
* having left the org reads as `environment.not_found`.
|
|
53
|
+
*/
|
|
54
|
+
private defaultFor;
|
|
55
|
+
/** Binds an unbound conversation to `environmentId`; returns what it is bound to now. */
|
|
56
|
+
private bind;
|
|
57
|
+
/** The account is the org's anonymous IM guest (no person behind it). */
|
|
58
|
+
private isAnonymous;
|
|
59
|
+
/** The conversation is (or was) an IM thread's. */
|
|
60
|
+
private isImThread;
|
|
61
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
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 { ApiError } from "../errors.js";
|
|
12
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
13
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
14
|
+
import { Transactional } from "../infra/database/transactional.decorator.js";
|
|
15
|
+
import { SandboxProviders } from "../sandbox/providers.js";
|
|
16
|
+
import { environmentNotFound, sandboxUnavailable } from "../sandbox/sandbox.service.js";
|
|
17
|
+
import { EnvironmentAccess } from "./access.js";
|
|
18
|
+
import { EnvironmentsService } from "./environments.service.js";
|
|
19
|
+
/** `details[0].reason` of the error an anonymous IM conversation's sandbox call gets. */
|
|
20
|
+
export const ANONYMOUS_NO_ENVIRONMENT = "anonymous";
|
|
21
|
+
/** Anonymous IM senders have no environment (spec §4.2 item 8): their sandbox tools are off. */
|
|
22
|
+
export const anonymousNoEnvironment = () => new ApiError("sandbox.unavailable", "Anonymous IM senders have no environment, so the sandbox is not available", [{ reason: ANONYMOUS_NO_ENVIRONMENT }]);
|
|
23
|
+
/**
|
|
24
|
+
* Which environment a conversation works in (spec 2026-11-07-environments-design §4.1 items 1, 3;
|
|
25
|
+
* §4.2 items 8, 9, 12). A conversation is bound once, to an environment of its owner
|
|
26
|
+
* (`conversations.account_id`): the one chosen at its first send, else the owner's IM default
|
|
27
|
+
* (IM threads), else the owner's default environment. Its sub-agents use the root's. Access is
|
|
28
|
+
* checked when it is bound and again on every sandbox tool call ({@link forTool}); only the owner
|
|
29
|
+
* may use a personal environment, so a conversation never reaches another person's.
|
|
30
|
+
*/
|
|
31
|
+
let ConversationEnvironments = class ConversationEnvironments {
|
|
32
|
+
db;
|
|
33
|
+
txHost;
|
|
34
|
+
providers;
|
|
35
|
+
access;
|
|
36
|
+
environments;
|
|
37
|
+
constructor(db, txHost, providers, access, environments) {
|
|
38
|
+
this.db = db;
|
|
39
|
+
this.txHost = txHost;
|
|
40
|
+
this.providers = providers;
|
|
41
|
+
this.access = access;
|
|
42
|
+
this.environments = environments;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The environment a new conversation of `accountId` is bound to: the chosen one when it is
|
|
46
|
+
* usable by the person (else `environment.not_found` / `environment.unavailable`, and nothing
|
|
47
|
+
* is created); without a choice the IM default (IM only) or the person's default environment.
|
|
48
|
+
* Null (unbound) without a sandbox provider and for anonymous IM senders.
|
|
49
|
+
*/
|
|
50
|
+
async forNew(orgId, accountId, pick = {}) {
|
|
51
|
+
if (pick.environmentId !== undefined) {
|
|
52
|
+
return (await this.access.usable(orgId, accountId, pick.environmentId)).id;
|
|
53
|
+
}
|
|
54
|
+
if (this.providers.current() === undefined)
|
|
55
|
+
return null;
|
|
56
|
+
if (await this.isAnonymous(orgId, accountId))
|
|
57
|
+
return null;
|
|
58
|
+
return this.defaultFor(orgId, accountId, pick.im === true);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The environment a sandbox tool call of the conversation tree rooted at `rootConversationId`
|
|
62
|
+
* enters, checked for its owner now. A conversation still unbound (created before
|
|
63
|
+
* environments, or while no provider existed) is bound first, to the owner's IM default when it
|
|
64
|
+
* is an IM thread, else to the owner's default environment; a racing call binds it once.
|
|
65
|
+
* Throws `sandbox.unavailable` without a provider or for an anonymous IM conversation, and
|
|
66
|
+
* `environment.not_found` / `environment.unavailable` when the owner may not use it now.
|
|
67
|
+
*/
|
|
68
|
+
async forTool(orgId, rootConversationId) {
|
|
69
|
+
if (this.providers.current() === undefined)
|
|
70
|
+
throw sandboxUnavailable();
|
|
71
|
+
const conv = await this.db
|
|
72
|
+
.selectFrom("conversations")
|
|
73
|
+
.select(["account_id", "environment_id"])
|
|
74
|
+
.where("id", "=", rootConversationId)
|
|
75
|
+
.where("org_id", "=", orgId)
|
|
76
|
+
.executeTakeFirst();
|
|
77
|
+
if (!conv)
|
|
78
|
+
throw environmentNotFound();
|
|
79
|
+
if (await this.isAnonymous(orgId, conv.account_id))
|
|
80
|
+
throw anonymousNoEnvironment();
|
|
81
|
+
let environmentId = conv.environment_id;
|
|
82
|
+
if (environmentId === null) {
|
|
83
|
+
const im = await this.isImThread(rootConversationId);
|
|
84
|
+
const chosen = await this.defaultFor(orgId, conv.account_id, im);
|
|
85
|
+
environmentId = await this.bind(rootConversationId, chosen);
|
|
86
|
+
}
|
|
87
|
+
return (await this.access.usable(orgId, conv.account_id, environmentId)).id;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The person's IM default when `im` and it is still theirs, live, in this org and usable (the
|
|
91
|
+
* table has no such guard), else their default environment (created when missing). The owner
|
|
92
|
+
* having left the org reads as `environment.not_found`.
|
|
93
|
+
*/
|
|
94
|
+
async defaultFor(orgId, accountId, im) {
|
|
95
|
+
if (im) {
|
|
96
|
+
const row = await this.db
|
|
97
|
+
.selectFrom("environment_defaults")
|
|
98
|
+
.select("environment_id")
|
|
99
|
+
.where("org_id", "=", orgId)
|
|
100
|
+
.where("account_id", "=", accountId)
|
|
101
|
+
.executeTakeFirst();
|
|
102
|
+
if (row) {
|
|
103
|
+
try {
|
|
104
|
+
return (await this.access.usable(orgId, accountId, row.environment_id)).id;
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
if (!isEnvironmentGone(e))
|
|
108
|
+
throw e;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
return await this.environments.ensureDefault(orgId, accountId);
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
if (e instanceof ApiError && e.code === "org.not_found")
|
|
117
|
+
throw environmentNotFound();
|
|
118
|
+
throw e;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** Binds an unbound conversation to `environmentId`; returns what it is bound to now. */
|
|
122
|
+
async bind(conversationId, environmentId) {
|
|
123
|
+
await this.db
|
|
124
|
+
.updateTable("conversations")
|
|
125
|
+
.set({ environment_id: environmentId })
|
|
126
|
+
.where("id", "=", conversationId)
|
|
127
|
+
.where("environment_id", "is", null)
|
|
128
|
+
.execute();
|
|
129
|
+
const row = await this.db
|
|
130
|
+
.selectFrom("conversations")
|
|
131
|
+
.select("environment_id")
|
|
132
|
+
.where("id", "=", conversationId)
|
|
133
|
+
.executeTakeFirstOrThrow();
|
|
134
|
+
return row.environment_id ?? environmentId;
|
|
135
|
+
}
|
|
136
|
+
/** The account is the org's anonymous IM guest (no person behind it). */
|
|
137
|
+
async isAnonymous(orgId, accountId) {
|
|
138
|
+
const row = await this.db
|
|
139
|
+
.selectFrom("org_anonymous_accounts")
|
|
140
|
+
.select("account_id")
|
|
141
|
+
.where("org_id", "=", orgId)
|
|
142
|
+
.where("account_id", "=", accountId)
|
|
143
|
+
.executeTakeFirst();
|
|
144
|
+
return row !== undefined;
|
|
145
|
+
}
|
|
146
|
+
/** The conversation is (or was) an IM thread's. */
|
|
147
|
+
async isImThread(conversationId) {
|
|
148
|
+
const row = await this.db
|
|
149
|
+
.selectFrom("channel_threads")
|
|
150
|
+
.select("id")
|
|
151
|
+
.where("conversation_id", "=", conversationId)
|
|
152
|
+
.limit(1)
|
|
153
|
+
.executeTakeFirst();
|
|
154
|
+
return row !== undefined;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
__decorate([
|
|
158
|
+
Transactional()
|
|
159
|
+
], ConversationEnvironments.prototype, "bind", null);
|
|
160
|
+
ConversationEnvironments = __decorate([
|
|
161
|
+
Injectable(),
|
|
162
|
+
__param(0, Inject(KernelDb)),
|
|
163
|
+
__param(1, Inject(TransactionHost)),
|
|
164
|
+
__param(2, Inject(SandboxProviders)),
|
|
165
|
+
__param(3, Inject(EnvironmentAccess)),
|
|
166
|
+
__param(4, Inject(EnvironmentsService))
|
|
167
|
+
], ConversationEnvironments);
|
|
168
|
+
export { ConversationEnvironments };
|
|
169
|
+
const isEnvironmentGone = (e) => e instanceof ApiError &&
|
|
170
|
+
(e.code === "environment.not_found" || e.code === "environment.unavailable");
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** An environment's name: trimmed, 1-64 characters (unique per person, case-insensitive). */
|
|
3
|
+
export declare const EnvironmentName: z.ZodString;
|
|
4
|
+
export declare const EnvironmentNameBody: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
}, z.core.$strict>;
|
|
7
|
+
export declare const EnvironmentParams: z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
declare const EnvironmentCreateBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
}, z.core.$strict>>;
|
|
13
|
+
export declare class EnvironmentCreateBodyDto extends EnvironmentCreateBodyDto_base {
|
|
14
|
+
}
|
|
15
|
+
declare const EnvironmentRenameBodyDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
}, z.core.$strict>>;
|
|
18
|
+
export declare class EnvironmentRenameBodyDto extends EnvironmentRenameBodyDto_base {
|
|
19
|
+
}
|
|
20
|
+
declare const EnvironmentParamsDto_base: import("../infra/validation/create-zod-dto.js").ZodDtoClass<z.ZodObject<{
|
|
21
|
+
id: z.ZodString;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
export declare class EnvironmentParamsDto extends EnvironmentParamsDto_base {
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
3
|
+
/** An environment's name: trimmed, 1-64 characters (unique per person, case-insensitive). */
|
|
4
|
+
export const EnvironmentName = z.string().trim().min(1).max(64);
|
|
5
|
+
export const EnvironmentNameBody = z.object({ name: EnvironmentName }).strict();
|
|
6
|
+
export const EnvironmentParams = z.object({ id: z.string().min(1).max(100) });
|
|
7
|
+
export class EnvironmentCreateBodyDto extends createZodDto(EnvironmentNameBody, "EnvironmentCreateBody") {
|
|
8
|
+
}
|
|
9
|
+
export class EnvironmentRenameBodyDto extends createZodDto(EnvironmentNameBody, "EnvironmentRenameBody") {
|
|
10
|
+
}
|
|
11
|
+
export class EnvironmentParamsDto extends createZodDto(EnvironmentParams, "EnvironmentParams") {
|
|
12
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import { type Principal } from "../identity/principal.js";
|
|
3
|
+
import { type OrgContext } from "../orgs/org.guard.js";
|
|
4
|
+
import { type EnvironmentNameBody, type EnvironmentParams } from "./dto.js";
|
|
5
|
+
import { type EnvironmentList, EnvironmentsService, type EnvironmentView } from "./environments.service.js";
|
|
6
|
+
/**
|
|
7
|
+
* A person's environments in an org (`/api/v1/orgs/:orgId/environments`, spec
|
|
8
|
+
* 2026-11-07-environments-design §9; `agents.use`, human users only: a service token gets 403).
|
|
9
|
+
* Phase 1 has personal cloud environments only, each visible to its owner alone: another member
|
|
10
|
+
* gets 404 `environment.not_found`.
|
|
11
|
+
* - `GET /` → `{ items, defaultId, lastUsedId, cloudAvailable }` (`cloudAvailable`: there is a
|
|
12
|
+
* current sandbox provider; ruling R4);
|
|
13
|
+
* - `POST / { name }` → 201 `{ environment }`; `GET /:id`, `PATCH /:id { name }` → `{ environment }`;
|
|
14
|
+
* - `DELETE /:id` → 202 (destroyed by a job after the response);
|
|
15
|
+
* - `POST /:id/files/reset` → 202 (the reset is enqueued: a worker empties the files, the next use
|
|
16
|
+
* starts empty).
|
|
17
|
+
*/
|
|
18
|
+
export declare class EnvironmentsController {
|
|
19
|
+
private readonly environments;
|
|
20
|
+
constructor(environments: EnvironmentsService);
|
|
21
|
+
list(principal: Principal, org: OrgContext): Promise<EnvironmentList>;
|
|
22
|
+
create(principal: Principal, org: OrgContext, body: z.infer<typeof EnvironmentNameBody>): Promise<{
|
|
23
|
+
environment: EnvironmentView;
|
|
24
|
+
}>;
|
|
25
|
+
get(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>): Promise<{
|
|
26
|
+
environment: EnvironmentView;
|
|
27
|
+
}>;
|
|
28
|
+
rename(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>, body: z.infer<typeof EnvironmentNameBody>): Promise<{
|
|
29
|
+
environment: EnvironmentView;
|
|
30
|
+
}>;
|
|
31
|
+
remove(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>): Promise<void>;
|
|
32
|
+
resetFiles(principal: Principal, org: OrgContext, params: z.infer<typeof EnvironmentParams>): Promise<void>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
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 { Controller, Delete, Get, HttpCode, Inject, Patch, Post } from "@nestjs/common";
|
|
11
|
+
import { CurrentPrincipal, patTokenId, requireUser, } from "../identity/principal.js";
|
|
12
|
+
import { ZBody, ZParam } from "../infra/validation/zod-params.js";
|
|
13
|
+
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
14
|
+
import { EnvironmentCreateBodyDto, EnvironmentParamsDto, EnvironmentRenameBodyDto, } from "./dto.js";
|
|
15
|
+
import { EnvironmentsService, } from "./environments.service.js";
|
|
16
|
+
/**
|
|
17
|
+
* A person's environments in an org (`/api/v1/orgs/:orgId/environments`, spec
|
|
18
|
+
* 2026-11-07-environments-design §9; `agents.use`, human users only: a service token gets 403).
|
|
19
|
+
* Phase 1 has personal cloud environments only, each visible to its owner alone: another member
|
|
20
|
+
* gets 404 `environment.not_found`.
|
|
21
|
+
* - `GET /` → `{ items, defaultId, lastUsedId, cloudAvailable }` (`cloudAvailable`: there is a
|
|
22
|
+
* current sandbox provider; ruling R4);
|
|
23
|
+
* - `POST / { name }` → 201 `{ environment }`; `GET /:id`, `PATCH /:id { name }` → `{ environment }`;
|
|
24
|
+
* - `DELETE /:id` → 202 (destroyed by a job after the response);
|
|
25
|
+
* - `POST /:id/files/reset` → 202 (the reset is enqueued: a worker empties the files, the next use
|
|
26
|
+
* starts empty).
|
|
27
|
+
*/
|
|
28
|
+
let EnvironmentsController = class EnvironmentsController {
|
|
29
|
+
environments;
|
|
30
|
+
constructor(environments) {
|
|
31
|
+
this.environments = environments;
|
|
32
|
+
}
|
|
33
|
+
async list(principal, org) {
|
|
34
|
+
const p = requireUser(principal);
|
|
35
|
+
return this.environments.list(org.orgId, p.account.id);
|
|
36
|
+
}
|
|
37
|
+
async create(principal, org, body) {
|
|
38
|
+
const p = requireUser(principal);
|
|
39
|
+
return {
|
|
40
|
+
environment: await this.environments.create(org.orgId, p.account.id, { name: body.name }, patTokenId(p)),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async get(principal, org, params) {
|
|
44
|
+
const p = requireUser(principal);
|
|
45
|
+
return { environment: await this.environments.get(org.orgId, p.account.id, params.id) };
|
|
46
|
+
}
|
|
47
|
+
async rename(principal, org, params, body) {
|
|
48
|
+
const p = requireUser(principal);
|
|
49
|
+
return {
|
|
50
|
+
environment: await this.environments.rename(org.orgId, p.account.id, params.id, body.name, patTokenId(p)),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async remove(principal, org, params) {
|
|
54
|
+
const p = requireUser(principal);
|
|
55
|
+
await this.environments.remove(org.orgId, p.account.id, params.id, patTokenId(p));
|
|
56
|
+
}
|
|
57
|
+
async resetFiles(principal, org, params) {
|
|
58
|
+
const p = requireUser(principal);
|
|
59
|
+
await this.environments.resetFiles(org.orgId, p.account.id, params.id, patTokenId(p));
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
__decorate([
|
|
63
|
+
Get(),
|
|
64
|
+
OrgAction("agents.use"),
|
|
65
|
+
__param(0, CurrentPrincipal()),
|
|
66
|
+
__param(1, CurrentOrg())
|
|
67
|
+
], EnvironmentsController.prototype, "list", null);
|
|
68
|
+
__decorate([
|
|
69
|
+
Post(),
|
|
70
|
+
OrgAction("agents.use"),
|
|
71
|
+
__param(0, CurrentPrincipal()),
|
|
72
|
+
__param(1, CurrentOrg()),
|
|
73
|
+
__param(2, ZBody(EnvironmentCreateBodyDto))
|
|
74
|
+
], EnvironmentsController.prototype, "create", null);
|
|
75
|
+
__decorate([
|
|
76
|
+
Get(":id"),
|
|
77
|
+
OrgAction("agents.use"),
|
|
78
|
+
__param(0, CurrentPrincipal()),
|
|
79
|
+
__param(1, CurrentOrg()),
|
|
80
|
+
__param(2, ZParam(EnvironmentParamsDto))
|
|
81
|
+
], EnvironmentsController.prototype, "get", null);
|
|
82
|
+
__decorate([
|
|
83
|
+
Patch(":id"),
|
|
84
|
+
OrgAction("agents.use"),
|
|
85
|
+
__param(0, CurrentPrincipal()),
|
|
86
|
+
__param(1, CurrentOrg()),
|
|
87
|
+
__param(2, ZParam(EnvironmentParamsDto)),
|
|
88
|
+
__param(3, ZBody(EnvironmentRenameBodyDto))
|
|
89
|
+
], EnvironmentsController.prototype, "rename", null);
|
|
90
|
+
__decorate([
|
|
91
|
+
Delete(":id"),
|
|
92
|
+
HttpCode(202),
|
|
93
|
+
OrgAction("agents.use"),
|
|
94
|
+
__param(0, CurrentPrincipal()),
|
|
95
|
+
__param(1, CurrentOrg()),
|
|
96
|
+
__param(2, ZParam(EnvironmentParamsDto))
|
|
97
|
+
], EnvironmentsController.prototype, "remove", null);
|
|
98
|
+
__decorate([
|
|
99
|
+
Post(":id/files/reset"),
|
|
100
|
+
HttpCode(202),
|
|
101
|
+
OrgAction("agents.use"),
|
|
102
|
+
__param(0, CurrentPrincipal()),
|
|
103
|
+
__param(1, CurrentOrg()),
|
|
104
|
+
__param(2, ZParam(EnvironmentParamsDto))
|
|
105
|
+
], EnvironmentsController.prototype, "resetFiles", null);
|
|
106
|
+
EnvironmentsController = __decorate([
|
|
107
|
+
Controller("api/v1/orgs/:orgId/environments"),
|
|
108
|
+
__param(0, Inject(EnvironmentsService))
|
|
109
|
+
], EnvironmentsController);
|
|
110
|
+
export { EnvironmentsController };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environments (spec 2026-11-07-environments-design): a person's environments
|
|
3
|
+
* ({@link EnvironmentsService}), who may use one ({@link EnvironmentAccess}) and the one a
|
|
4
|
+
* conversation works in ({@link ConversationEnvironments}). The instances and file systems are the
|
|
5
|
+
* {@link SandboxModule}'s.
|
|
6
|
+
*/
|
|
7
|
+
export declare class EnvironmentsModule {
|
|
8
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
import { Module } from "@nestjs/common";
|
|
8
|
+
import { SandboxModule } from "../sandbox/sandbox.module.js";
|
|
9
|
+
import { EnvironmentAccess } from "./access.js";
|
|
10
|
+
import { ConversationEnvironments } from "./conversation-environments.js";
|
|
11
|
+
import { EnvironmentsService } from "./environments.service.js";
|
|
12
|
+
/**
|
|
13
|
+
* Environments (spec 2026-11-07-environments-design): a person's environments
|
|
14
|
+
* ({@link EnvironmentsService}), who may use one ({@link EnvironmentAccess}) and the one a
|
|
15
|
+
* conversation works in ({@link ConversationEnvironments}). The instances and file systems are the
|
|
16
|
+
* {@link SandboxModule}'s.
|
|
17
|
+
*/
|
|
18
|
+
let EnvironmentsModule = class EnvironmentsModule {
|
|
19
|
+
};
|
|
20
|
+
EnvironmentsModule = __decorate([
|
|
21
|
+
Module({
|
|
22
|
+
imports: [SandboxModule],
|
|
23
|
+
providers: [EnvironmentAccess, EnvironmentsService, ConversationEnvironments],
|
|
24
|
+
exports: [EnvironmentAccess, EnvironmentsService, ConversationEnvironments],
|
|
25
|
+
})
|
|
26
|
+
], EnvironmentsModule);
|
|
27
|
+
export { EnvironmentsModule };
|