@capybara-hq/kernel 0.1.0-rc.0 → 0.1.0-rc.2
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 +10 -6
- package/dist/admin/admin.controller.d.ts +17 -17
- package/dist/admin/admin.controller.js +43 -26
- package/dist/admin/admin.module.d.ts +3 -0
- package/dist/admin/admin.module.js +22 -0
- package/dist/admin/extensions.controller.d.ts +14 -14
- package/dist/admin/extensions.controller.js +30 -17
- package/dist/admin/setup-lock.d.ts +16 -0
- package/dist/admin/setup-lock.js +47 -0
- package/dist/admin/setup.controller.d.ts +8 -8
- package/dist/admin/setup.controller.js +27 -25
- package/dist/admin/setup.service.d.ts +19 -27
- package/dist/admin/setup.service.js +61 -61
- package/dist/agents/agent-lookup.d.ts +53 -0
- package/dist/agents/agent-lookup.js +179 -0
- package/dist/agents/agents.controller.d.ts +1 -1
- package/dist/agents/agents.controller.js +14 -8
- package/dist/agents/agents.module.d.ts +7 -0
- package/dist/agents/agents.module.js +41 -0
- package/dist/agents/agents.service.d.ts +39 -58
- package/dist/agents/agents.service.js +261 -329
- package/dist/agents/definition.d.ts +8 -0
- package/dist/agents/definition.js +8 -0
- package/dist/agents/models.controller.d.ts +1 -1
- package/dist/agents/models.controller.js +2 -2
- package/dist/agents/templates.controller.d.ts +1 -1
- package/dist/agents/templates.controller.js +2 -2
- package/dist/agents/templates.d.ts +6 -8
- package/dist/agents/templates.js +20 -4
- package/dist/app.d.ts +93 -0
- package/dist/app.js +150 -0
- package/dist/catalog/admin-catalog.controller.d.ts +3 -3
- package/dist/catalog/admin-catalog.controller.js +27 -13
- package/dist/catalog/catalog-content.d.ts +185 -0
- package/dist/catalog/catalog-content.js +323 -0
- package/dist/catalog/catalog-items.d.ts +186 -0
- package/dist/catalog/catalog-items.js +410 -0
- package/dist/catalog/catalog.module.d.ts +14 -0
- package/dist/catalog/catalog.module.js +71 -0
- package/dist/catalog/catalog.service.d.ts +34 -188
- package/dist/catalog/catalog.service.js +155 -489
- package/dist/catalog/cli.d.ts +3 -2
- package/dist/catalog/cli.js +13 -31
- package/dist/catalog/job-ids.d.ts +15 -0
- package/dist/catalog/job-ids.js +15 -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/marketplaces.controller.d.ts +4 -4
- package/dist/catalog/marketplaces.controller.js +22 -11
- package/dist/catalog/marketplaces.service.d.ts +30 -13
- package/dist/catalog/marketplaces.service.js +330 -256
- package/dist/catalog/org-catalog.controller.d.ts +4 -3
- package/dist/catalog/org-catalog.controller.js +29 -14
- package/dist/catalog/org-catalog.service.d.ts +32 -198
- package/dist/catalog/org-catalog.service.js +159 -400
- package/dist/catalog/plugin-import.d.ts +73 -34
- package/dist/catalog/plugin-import.js +356 -217
- package/dist/catalog/plugin-install.d.ts +83 -41
- package/dist/catalog/plugin-install.js +421 -269
- package/dist/catalog/plugin-upgrade.d.ts +59 -4
- package/dist/catalog/plugin-upgrade.js +407 -282
- package/dist/catalog/requests.service.d.ts +27 -15
- package/dist/catalog/requests.service.js +201 -145
- package/dist/catalog/upgrade-targets.d.ts +4 -7
- package/dist/channels/actions.d.ts +6 -4
- package/dist/channels/actions.js +1 -1
- package/dist/channels/cards.d.ts +2 -2
- package/dist/channels/channels.module.d.ts +40 -0
- package/dist/channels/channels.module.js +128 -0
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +11 -6
- package/dist/channels/connections.service.d.ts +43 -21
- package/dist/channels/connections.service.js +236 -131
- package/dist/channels/inbound.d.ts +34 -38
- package/dist/channels/inbound.js +107 -41
- 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 +60 -82
- package/dist/channels/outbound.js +165 -193
- package/dist/channels/supervisor.d.ts +88 -46
- package/dist/channels/supervisor.js +230 -132
- package/dist/channels/threads.d.ts +29 -8
- package/dist/channels/threads.js +71 -13
- package/dist/channels/webhook.d.ts +20 -14
- package/dist/channels/webhook.js +51 -20
- 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 +16 -1
- package/dist/config/schema.js +54 -7
- package/dist/conversations/access.d.ts +29 -0
- package/dist/conversations/access.js +86 -0
- package/dist/conversations/artifacts.d.ts +10 -10
- package/dist/conversations/artifacts.js +35 -9
- 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 +30 -22
- package/dist/conversations/attachments.service.js +119 -46
- package/dist/conversations/conversations.controller.d.ts +8 -7
- package/dist/conversations/conversations.controller.js +59 -29
- package/dist/conversations/conversations.module.d.ts +8 -0
- package/dist/conversations/conversations.module.js +69 -0
- package/dist/conversations/conversations.service.d.ts +40 -38
- package/dist/conversations/conversations.service.js +130 -140
- package/dist/conversations/event-log.d.ts +28 -18
- package/dist/conversations/event-log.js +74 -27
- 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/outputs-read.d.ts +11 -11
- package/dist/conversations/outputs-read.js +31 -7
- package/dist/conversations/queue.d.ts +48 -56
- package/dist/conversations/queue.js +13 -289
- package/dist/conversations/queue.service.d.ts +60 -0
- package/dist/conversations/queue.service.js +343 -0
- package/dist/conversations/sandbox-status.d.ts +13 -10
- package/dist/conversations/sandbox-status.js +36 -8
- package/dist/conversations/titles.d.ts +71 -24
- package/dist/conversations/titles.js +159 -62
- package/dist/ctx/bus.js +9 -3
- package/dist/ctx/create-ctx.d.ts +6 -0
- package/dist/ctx/create-ctx.js +7 -9
- package/dist/ctx/lock.d.ts +7 -3
- package/dist/ctx/lock.js +9 -20
- package/dist/ctx/queue.js +3 -2
- package/dist/ctx/secrets.d.ts +10 -2
- package/dist/ctx/secrets.js +7 -3
- package/dist/db/kernel-schema.d.ts +2 -2
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.js +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +2 -0
- 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/jobs.d.ts +20 -0
- package/dist/evals/jobs.js +45 -0
- package/dist/evals/run-replay.d.ts +56 -8
- package/dist/evals/run-replay.js +140 -80
- package/dist/evals/runs.controller.d.ts +1 -1
- package/dist/evals/runs.controller.js +17 -8
- package/dist/evals/runs.service.d.ts +23 -45
- package/dist/evals/runs.service.js +245 -234
- package/dist/evals/sets.controller.d.ts +1 -1
- package/dist/evals/sets.controller.js +17 -8
- package/dist/evals/sets.service.d.ts +22 -6
- package/dist/evals/sets.service.js +248 -194
- package/dist/evals/snapshot.d.ts +2 -2
- package/dist/evals/step-replay.d.ts +2 -2
- package/dist/evals/step-replay.js +1 -1
- package/dist/evals/trajectory.controller.d.ts +1 -1
- package/dist/evals/trajectory.controller.js +11 -7
- package/dist/evals/trajectory.service.d.ts +5 -4
- package/dist/evals/trajectory.service.js +30 -7
- package/dist/evals/worker.d.ts +44 -27
- package/dist/evals/worker.js +220 -120
- package/dist/extensions/admin-ops.d.ts +61 -33
- package/dist/extensions/admin-ops.js +248 -154
- package/dist/extensions/admin-view.d.ts +38 -27
- package/dist/extensions/admin-view.js +126 -55
- package/dist/extensions/approvals.d.ts +12 -8
- package/dist/extensions/approvals.js +73 -46
- package/dist/extensions/blobs.d.ts +27 -10
- package/dist/extensions/blobs.js +111 -45
- package/dist/extensions/bootstrap.d.ts +96 -42
- package/dist/extensions/bootstrap.js +303 -155
- package/dist/extensions/cli.d.ts +20 -10
- package/dist/extensions/cli.js +41 -96
- package/dist/extensions/config-issues.d.ts +7 -0
- package/dist/extensions/config-issues.js +31 -0
- package/dist/extensions/deployment-config-store.d.ts +49 -0
- package/dist/extensions/deployment-config-store.js +133 -0
- package/dist/extensions/deployment-config.d.ts +58 -67
- package/dist/extensions/deployment-config.js +202 -230
- package/dist/extensions/enabled.d.ts +5 -5
- package/dist/extensions/extensions.module.d.ts +8 -0
- package/dist/extensions/extensions.module.js +77 -0
- package/dist/extensions/hooks.d.ts +3 -2
- package/dist/extensions/hooks.js +1 -1
- package/dist/extensions/host.d.ts +72 -68
- package/dist/extensions/host.js +191 -152
- package/dist/extensions/installs.d.ts +49 -16
- package/dist/extensions/installs.js +128 -32
- 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 +33 -0
- package/dist/extensions/locks.js +86 -0
- package/dist/extensions/migrate-lock.d.ts +3 -4
- package/dist/extensions/org-config.controller.d.ts +1 -1
- package/dist/extensions/org-config.controller.js +8 -5
- package/dist/extensions/org-config.d.ts +48 -46
- package/dist/extensions/org-config.js +284 -226
- package/dist/extensions/registry.d.ts +50 -2
- package/dist/extensions/registry.js +89 -4
- package/dist/extensions/sources.d.ts +12 -8
- package/dist/extensions/sources.js +34 -13
- 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 +17 -9
- package/dist/files/previewers.d.ts +13 -18
- package/dist/files/previewers.js +83 -36
- 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 +47 -355
- package/dist/http/app.d.ts +11 -15
- package/dist/http/app.js +52 -47
- 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/identity/accounts.d.ts +82 -29
- package/dist/identity/accounts.js +294 -175
- package/dist/identity/api-tokens.d.ts +11 -7
- package/dist/identity/api-tokens.js +71 -44
- package/dist/identity/audit.d.ts +7 -4
- package/dist/identity/audit.js +5 -1
- package/dist/identity/auth.controller.d.ts +11 -10
- package/dist/identity/auth.controller.js +31 -25
- package/dist/identity/auth.guard.d.ts +3 -3
- package/dist/identity/auth.guard.js +6 -4
- package/dist/identity/binding.d.ts +9 -11
- package/dist/identity/binding.js +41 -13
- package/dist/identity/enterprise-admin.d.ts +18 -12
- package/dist/identity/enterprise-admin.js +67 -13
- 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 +56 -0
- package/dist/identity/me.controller.d.ts +16 -15
- package/dist/identity/me.controller.js +37 -31
- package/dist/identity/sessions.d.ts +12 -10
- package/dist/identity/sessions.js +74 -42
- package/dist/identity/settings.d.ts +20 -14
- package/dist/identity/settings.js +85 -57
- 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/inbox/inbox.module.d.ts +3 -0
- package/dist/inbox/inbox.module.js +22 -0
- package/dist/inbox/inbox.service.d.ts +7 -9
- package/dist/inbox/inbox.service.js +32 -11
- package/dist/index.d.ts +19 -12
- package/dist/index.js +13 -8
- 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 +165 -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 +126 -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 +90 -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 +96 -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 +86 -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 +16 -0
- package/dist/infra/logging/logging.module.js +34 -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 +7 -0
- package/dist/infra/queue/redis-connection.js +18 -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 +87 -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 +31 -0
- package/dist/infra/throttler/named-throttlers.js +119 -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 +15 -0
- package/dist/infra/tokens.js +15 -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 -241
- package/dist/kernel.js +8 -1305
- package/dist/kernel.module.d.ts +17 -0
- package/dist/kernel.module.js +136 -0
- package/dist/lifecycle/kernel-lifecycle.d.ts +140 -0
- package/dist/lifecycle/kernel-lifecycle.js +451 -0
- package/dist/lifecycle/tokens.d.ts +3 -0
- package/dist/lifecycle/tokens.js +3 -0
- package/dist/log-config.d.ts +9 -0
- package/dist/log-config.js +27 -0
- package/dist/log-context.d.ts +34 -0
- package/dist/log-context.js +44 -0
- package/dist/log-loki.d.ts +34 -0
- package/dist/log-loki.js +145 -0
- package/dist/log.d.ts +41 -10
- package/dist/log.js +91 -17
- package/dist/models/models.module.d.ts +3 -0
- package/dist/models/models.module.js +24 -0
- package/dist/models/prices.d.ts +8 -2
- package/dist/models/prices.js +65 -37
- package/dist/models/purposes.controller.d.ts +1 -1
- package/dist/models/purposes.controller.js +5 -6
- package/dist/models/purposes.d.ts +35 -13
- package/dist/models/purposes.js +101 -51
- package/dist/net/public-address.js +3 -2
- 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 +61 -31
- package/dist/orgs/directory-sync.js +212 -125
- 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 +54 -57
- package/dist/orgs/offboarding.js +161 -71
- package/dist/orgs/org-lock.d.ts +28 -19
- package/dist/orgs/org-lock.js +81 -35
- package/dist/orgs/org.guard.d.ts +1 -1
- package/dist/orgs/org.guard.js +2 -2
- package/dist/orgs/orgs.controller.d.ts +13 -13
- package/dist/orgs/orgs.controller.js +29 -17
- package/dist/orgs/orgs.module.d.ts +6 -0
- package/dist/orgs/orgs.module.js +68 -0
- package/dist/orgs/orgs.service.d.ts +30 -19
- package/dist/orgs/orgs.service.js +139 -86
- package/dist/orgs/settings.controller.d.ts +1 -1
- package/dist/orgs/settings.controller.js +8 -6
- package/dist/orgs/settings.service.d.ts +14 -8
- package/dist/orgs/settings.service.js +75 -46
- package/dist/overrides.d.ts +56 -0
- package/dist/overrides.js +30 -0
- package/dist/roles/gateway-role.d.ts +43 -0
- package/dist/roles/gateway-role.js +98 -0
- package/dist/roles/gateway.module.d.ts +8 -0
- package/dist/roles/gateway.module.js +28 -0
- package/dist/roles/worker-role.d.ts +63 -0
- package/dist/roles/worker-role.js +144 -0
- package/dist/roles/worker.module.d.ts +14 -0
- package/dist/roles/worker.module.js +90 -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/conversation-lock.d.ts +20 -11
- package/dist/runtime/conversation-lock.js +62 -72
- package/dist/runtime/hook-calls.d.ts +3 -3
- package/dist/runtime/hook-calls.js +1 -6
- package/dist/runtime/job-ids.d.ts +10 -0
- package/dist/runtime/job-ids.js +10 -0
- package/dist/runtime/langgraph-loop.js +1 -1
- package/dist/runtime/loop.d.ts +7 -0
- 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 +45 -74
- package/dist/runtime/maintenance.js +139 -136
- package/dist/runtime/model-call.d.ts +7 -4
- package/dist/runtime/model-call.js +24 -57
- package/dist/runtime/providers.d.ts +17 -6
- package/dist/runtime/providers.js +66 -25
- 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-control.d.ts +33 -0
- package/dist/runtime/run-control.js +77 -0
- package/dist/runtime/run-finish.d.ts +26 -17
- package/dist/runtime/run-finish.js +98 -51
- package/dist/runtime/run-jobs.d.ts +48 -0
- package/dist/runtime/run-jobs.js +95 -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 +32 -57
- package/dist/runtime/run-queue.js +291 -295
- package/dist/runtime/run-steps.d.ts +39 -0
- package/dist/runtime/run-steps.js +96 -0
- package/dist/runtime/run-worker.d.ts +121 -75
- package/dist/runtime/run-worker.js +340 -225
- package/dist/runtime/runtime.module.d.ts +10 -0
- package/dist/runtime/runtime.module.js +112 -0
- package/dist/runtime/step-log.d.ts +40 -0
- package/dist/runtime/step-log.js +94 -0
- package/dist/runtime/stream.controller.d.ts +5 -8
- package/dist/runtime/stream.controller.js +14 -12
- package/dist/runtime/stream.d.ts +24 -6
- package/dist/runtime/stream.js +78 -7
- package/dist/runtime/subagents/child.d.ts +3 -44
- package/dist/runtime/subagents/child.js +0 -79
- package/dist/runtime/subagents/definition.d.ts +4 -4
- package/dist/runtime/subagents/definition.js +2 -2
- package/dist/runtime/subagents/dispatch.d.ts +87 -6
- package/dist/runtime/subagents/dispatch.js +135 -140
- package/dist/runtime/subagents/limits.d.ts +9 -4
- package/dist/runtime/subagents/limits.js +4 -2
- package/dist/runtime/subagents/org-agents.d.ts +4 -4
- package/dist/runtime/subagents/org-agents.js +1 -1
- package/dist/runtime/subagents/progress.d.ts +2 -2
- package/dist/runtime/subagents/roster.d.ts +3 -3
- package/dist/runtime/subagents/roster.js +1 -1
- package/dist/runtime/subagents/skill-fork.d.ts +6 -7
- package/dist/runtime/subagents/skill-fork.js +16 -5
- package/dist/runtime/subagents/subagents.service.d.ts +40 -0
- package/dist/runtime/subagents/subagents.service.js +101 -0
- package/dist/runtime/usage-report.d.ts +94 -52
- package/dist/runtime/usage-report.js +200 -99
- package/dist/runtime/waits.d.ts +125 -57
- package/dist/runtime/waits.js +431 -208
- package/dist/sandbox/job-ids.d.ts +10 -0
- package/dist/sandbox/job-ids.js +10 -0
- package/dist/sandbox/jobs.d.ts +41 -0
- package/dist/sandbox/jobs.js +113 -0
- package/dist/sandbox/leases.d.ts +39 -31
- package/dist/sandbox/leases.js +117 -257
- package/dist/sandbox/providers.d.ts +19 -0
- package/dist/sandbox/providers.js +38 -0
- package/dist/sandbox/sandbox.module.d.ts +8 -0
- package/dist/sandbox/sandbox.module.js +30 -0
- package/dist/sandbox/sandbox.service.d.ts +24 -29
- package/dist/sandbox/sandbox.service.js +106 -75
- package/dist/skills/catalog.d.ts +33 -20
- package/dist/skills/catalog.js +96 -53
- package/dist/skills/changes.controller.d.ts +4 -4
- package/dist/skills/changes.controller.js +15 -9
- package/dist/skills/changes.service.d.ts +28 -18
- package/dist/skills/changes.service.js +421 -364
- package/dist/skills/invocable.controller.d.ts +1 -1
- package/dist/skills/invocable.controller.js +8 -5
- package/dist/skills/invoke.d.ts +16 -15
- package/dist/skills/invoke.js +48 -17
- package/dist/skills/skills.controller.d.ts +1 -1
- package/dist/skills/skills.controller.js +11 -6
- package/dist/skills/skills.module.d.ts +6 -0
- package/dist/skills/skills.module.js +30 -0
- package/dist/skills/skills.service.d.ts +47 -30
- package/dist/skills/skills.service.js +221 -158
- 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/tools/approvals.controller.d.ts +1 -1
- package/dist/tools/approvals.controller.js +12 -8
- package/dist/tools/approvals.service.d.ts +27 -25
- package/dist/tools/approvals.service.js +324 -258
- package/dist/tools/breaker.d.ts +2 -2
- package/dist/tools/breaker.js +21 -3
- package/dist/tools/builtins/ask-user.d.ts +2 -2
- package/dist/tools/builtins/ask-user.js +1 -1
- package/dist/tools/builtins/builtin-tools.d.ts +21 -0
- package/dist/tools/builtins/builtin-tools.js +80 -0
- package/dist/tools/builtins/read-tool-output.d.ts +2 -2
- package/dist/tools/builtins/read-tool-output.js +1 -1
- package/dist/tools/builtins/sandbox/bash.js +2 -2
- package/dist/tools/builtins/sandbox/common.d.ts +7 -4
- package/dist/tools/builtins/sandbox/common.js +5 -3
- package/dist/tools/builtins/sandbox/deliver.js +2 -2
- package/dist/tools/builtins/sandbox/edit.js +1 -1
- package/dist/tools/builtins/sandbox/glob.js +2 -2
- package/dist/tools/builtins/sandbox/grep.js +2 -2
- package/dist/tools/builtins/sandbox/read.js +1 -1
- package/dist/tools/builtins/sandbox/write.js +1 -1
- package/dist/tools/builtins/skill-load.d.ts +3 -3
- package/dist/tools/builtins/skill-load.js +1 -1
- 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 +1 -1
- package/dist/tools/connectors.controller.js +21 -10
- package/dist/tools/connectors.service.d.ts +31 -13
- package/dist/tools/connectors.service.js +434 -344
- package/dist/tools/credentials.d.ts +17 -20
- package/dist/tools/credentials.js +55 -34
- package/dist/tools/drift.d.ts +29 -41
- package/dist/tools/drift.js +111 -79
- package/dist/tools/info.d.ts +12 -9
- package/dist/tools/info.js +33 -7
- 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/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 +11 -3
- package/dist/tools/oauth/tokens.js +15 -14
- package/dist/tools/outputs.d.ts +13 -4
- package/dist/tools/outputs.js +47 -3
- package/dist/tools/pipeline.d.ts +62 -46
- package/dist/tools/pipeline.js +145 -64
- package/dist/tools/policy.d.ts +2 -2
- package/dist/tools/questions.controller.d.ts +1 -1
- package/dist/tools/questions.controller.js +8 -5
- package/dist/tools/questions.service.d.ts +25 -24
- package/dist/tools/questions.service.js +201 -142
- package/dist/tools/registry.d.ts +30 -20
- package/dist/tools/registry.js +73 -37
- 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 +91 -0
- 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 +9 -57
- package/dist/ui/views.js +43 -45
- package/package.json +11 -2
- 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/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/http/{gateway.module.d.ts → gateway-routes.d.ts} +0 -0
- /package/dist/http/{gateway.module.js → gateway-routes.js} +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
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, Module } from "@nestjs/common";
|
|
11
|
+
import { sql } from "kysely";
|
|
12
|
+
import { visibleTo } from "../agents/agent-lookup.js";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
/**
|
|
15
|
+
* A sub-agent's conversation is reached through its parent (sub-agents spec §6.1, review m6, the
|
|
16
|
+
* same rule as its trajectory): the parent is a chat conversation of the same owner whose agent is
|
|
17
|
+
* not deleted and still visible to the viewer. Any other kind passes. The child's own `agent_id`
|
|
18
|
+
* (the dispatched agent for an org agent, §5.5) is checked on top by the callers.
|
|
19
|
+
*/
|
|
20
|
+
export const parentReachable = (viewerAccountId) => (eb) => eb.or([
|
|
21
|
+
eb("conversations.kind", "<>", "subagent"),
|
|
22
|
+
eb.exists(eb
|
|
23
|
+
.selectFrom("conversations as p")
|
|
24
|
+
.innerJoin("agents", "agents.id", "p.agent_id")
|
|
25
|
+
.select(sql `1`.as("one"))
|
|
26
|
+
.whereRef("p.id", "=", "conversations.parent_conversation_id")
|
|
27
|
+
.whereRef("p.org_id", "=", "conversations.org_id")
|
|
28
|
+
.where("p.account_id", "=", viewerAccountId)
|
|
29
|
+
.where("p.kind", "=", "chat")
|
|
30
|
+
.where("agents.deleted_at", "is", null)
|
|
31
|
+
.where(visibleTo(viewerAccountId))),
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* Whether a person may still see a conversation (one query, no agent view): what the event stream,
|
|
35
|
+
* attachment downloads, file and output reads and the extension UI check. `ConversationsService`
|
|
36
|
+
* delegates to it; it depends on the database only, so the attachments (which the skills and tools
|
|
37
|
+
* use) can check access without the conversations module.
|
|
38
|
+
*/
|
|
39
|
+
let ConversationAccess = class ConversationAccess {
|
|
40
|
+
db;
|
|
41
|
+
constructor(db) {
|
|
42
|
+
this.db = db;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 轻量的可见性判定(一条查询,不加载 agent 视图),供长连接(SSE)建立时与定期复核用:
|
|
46
|
+
* 会话属于该组织且归 viewer 所有、viewer 账号仍为 active、agent 未删除且对 viewer 仍可见
|
|
47
|
+
* (`visibleTo` 已含「组织未删除、viewer 仍是成员」)。
|
|
48
|
+
*/
|
|
49
|
+
async isAccessible(orgId, conversationId, viewerAccountId) {
|
|
50
|
+
const row = await this.db
|
|
51
|
+
.selectFrom("conversations")
|
|
52
|
+
.select("conversations.id")
|
|
53
|
+
.where("conversations.id", "=", conversationId)
|
|
54
|
+
.where("conversations.org_id", "=", orgId)
|
|
55
|
+
.where("conversations.account_id", "=", viewerAccountId)
|
|
56
|
+
.where("conversations.kind", "in", ["chat", "subagent"])
|
|
57
|
+
.where(parentReachable(viewerAccountId))
|
|
58
|
+
.where((eb) => eb.and([
|
|
59
|
+
eb.exists(eb
|
|
60
|
+
.selectFrom("accounts")
|
|
61
|
+
.select(sql `1`.as("one"))
|
|
62
|
+
.where("accounts.id", "=", viewerAccountId)
|
|
63
|
+
.where("accounts.status", "=", "active")),
|
|
64
|
+
eb.exists(eb
|
|
65
|
+
.selectFrom("agents")
|
|
66
|
+
.select(sql `1`.as("one"))
|
|
67
|
+
.whereRef("agents.id", "=", "conversations.agent_id")
|
|
68
|
+
.where("agents.deleted_at", "is", null)
|
|
69
|
+
.where(visibleTo(viewerAccountId))),
|
|
70
|
+
]))
|
|
71
|
+
.executeTakeFirst();
|
|
72
|
+
return row !== undefined;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
ConversationAccess = __decorate([
|
|
76
|
+
Injectable(),
|
|
77
|
+
__param(0, Inject(KernelDb))
|
|
78
|
+
], ConversationAccess);
|
|
79
|
+
export { ConversationAccess };
|
|
80
|
+
/** The one {@link ConversationAccess} (database only). */
|
|
81
|
+
let ConversationAccessModule = class ConversationAccessModule {
|
|
82
|
+
};
|
|
83
|
+
ConversationAccessModule = __decorate([
|
|
84
|
+
Module({ providers: [ConversationAccess], exports: [ConversationAccess] })
|
|
85
|
+
], ConversationAccessModule);
|
|
86
|
+
export { ConversationAccessModule };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
2
|
+
import { StorageService } from "../storage/storage.service.js";
|
|
3
|
+
import { ConversationAccess } from "./access.js";
|
|
3
4
|
/** 产物下载跳转的预签名有效期(秒)。 */
|
|
4
5
|
export declare const ARTIFACT_DOWNLOAD_TTL_SECONDS = 300;
|
|
5
6
|
/** 下载 302 的 `Cache-Control: private, max-age=…`(秒),不长于预签名有效期。 */
|
|
@@ -18,12 +19,6 @@ export interface ArtifactPreview {
|
|
|
18
19
|
/** 只截取了开头(文件更长)。 */
|
|
19
20
|
truncated: boolean;
|
|
20
21
|
}
|
|
21
|
-
export interface ConversationArtifactsDeps {
|
|
22
|
-
db: KernelDb;
|
|
23
|
-
storage: Pick<StorageService, "kernel">;
|
|
24
|
-
/** 会话可见性(与会话 SSE 流同一判定:`ConversationsService.isAccessible`)。 */
|
|
25
|
-
isAccessible(orgId: string, conversationId: string, viewerAccountId: string): Promise<boolean>;
|
|
26
|
-
}
|
|
27
22
|
/**
|
|
28
23
|
* 产物(M5 T8 / T11):agent 经 `sandbox_deliver` 交付的文件。先按会话流的规则判定会话可见
|
|
29
24
|
* (不可见 → `conversation.not_found`),再只在这个会话的日志里找 `artifact_created`
|
|
@@ -39,8 +34,13 @@ export interface ConversationArtifactsDeps {
|
|
|
39
34
|
* `payload->>'artifactId'` 过滤、`LIMIT 1`(只扫这一个会话的事件,不在 JS 里扫日志;不加迁移)。
|
|
40
35
|
*/
|
|
41
36
|
export declare class ConversationArtifacts {
|
|
42
|
-
private readonly
|
|
43
|
-
|
|
37
|
+
private readonly db;
|
|
38
|
+
private readonly storage;
|
|
39
|
+
/** 会话可见性(与会话 SSE 流同一判定)。 */
|
|
40
|
+
private readonly access;
|
|
41
|
+
constructor(db: KernelDb, storage: Pick<StorageService, "kernel">,
|
|
42
|
+
/** 会话可见性(与会话 SSE 流同一判定)。 */
|
|
43
|
+
access: Pick<ConversationAccess, "isAccessible">);
|
|
44
44
|
private find;
|
|
45
45
|
downloadUrl(orgId: string, conversationId: string, viewerAccountId: string, artifactId: string, opts?: {
|
|
46
46
|
inline?: boolean;
|
|
@@ -1,6 +1,19 @@
|
|
|
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";
|
|
1
11
|
import { sql } from "kysely";
|
|
2
12
|
import { ApiError } from "../errors.js";
|
|
13
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
14
|
+
import { StorageService } from "../storage/storage.service.js";
|
|
3
15
|
import { UUID_RE } from "../ui/registry.js";
|
|
16
|
+
import { ConversationAccess } from "./access.js";
|
|
4
17
|
/** 产物下载跳转的预签名有效期(秒)。 */
|
|
5
18
|
export const ARTIFACT_DOWNLOAD_TTL_SECONDS = 300;
|
|
6
19
|
/** 下载 302 的 `Cache-Control: private, max-age=…`(秒),不长于预签名有效期。 */
|
|
@@ -62,20 +75,26 @@ async function readPrefix(body, max) {
|
|
|
62
75
|
* 查找走 `conversation_events` 的主键 `(conversation_id, seq)` 前缀,在 SQL 里按 `type` 与
|
|
63
76
|
* `payload->>'artifactId'` 过滤、`LIMIT 1`(只扫这一个会话的事件,不在 JS 里扫日志;不加迁移)。
|
|
64
77
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
78
|
+
let ConversationArtifacts = class ConversationArtifacts {
|
|
79
|
+
db;
|
|
80
|
+
storage;
|
|
81
|
+
access;
|
|
82
|
+
constructor(db, storage,
|
|
83
|
+
/** 会话可见性(与会话 SSE 流同一判定)。 */
|
|
84
|
+
access) {
|
|
85
|
+
this.db = db;
|
|
86
|
+
this.storage = storage;
|
|
87
|
+
this.access = access;
|
|
69
88
|
}
|
|
70
89
|
async find(orgId, conversationId, viewerAccountId, artifactId) {
|
|
71
90
|
if (!UUID_RE.test(conversationId))
|
|
72
91
|
throw conversationNotFound();
|
|
73
|
-
if (!(await this.
|
|
92
|
+
if (!(await this.access.isAccessible(orgId, conversationId, viewerAccountId))) {
|
|
74
93
|
throw conversationNotFound();
|
|
75
94
|
}
|
|
76
95
|
if (!UUID_RE.test(artifactId))
|
|
77
96
|
throw artifactNotFound();
|
|
78
|
-
const row = await this.
|
|
97
|
+
const row = await this.db
|
|
79
98
|
.selectFrom("conversation_events")
|
|
80
99
|
.select("payload")
|
|
81
100
|
.where("conversation_id", "=", conversationId)
|
|
@@ -89,7 +108,7 @@ export class ConversationArtifacts {
|
|
|
89
108
|
}
|
|
90
109
|
async downloadUrl(orgId, conversationId, viewerAccountId, artifactId, opts = {}) {
|
|
91
110
|
const a = await this.find(orgId, conversationId, viewerAccountId, artifactId);
|
|
92
|
-
const store = this.
|
|
111
|
+
const store = this.storage.kernel(orgId);
|
|
93
112
|
if (!(await store.head(a.objectKey)))
|
|
94
113
|
throw artifactNotFound();
|
|
95
114
|
const inline = opts.inline === true && isInlineArtifactType(a.contentType);
|
|
@@ -106,7 +125,7 @@ export class ConversationArtifacts {
|
|
|
106
125
|
if (!isTextArtifactType(a.contentType)) {
|
|
107
126
|
throw new ApiError("conversation.artifact_not_previewable", "Only text artifacts have a preview");
|
|
108
127
|
}
|
|
109
|
-
const got = await this.
|
|
128
|
+
const got = await this.storage
|
|
110
129
|
.kernel(orgId)
|
|
111
130
|
.get(a.objectKey, { range: { start: 0, end: ARTIFACT_PREVIEW_MAX_BYTES - 1 } });
|
|
112
131
|
if (!got)
|
|
@@ -134,4 +153,11 @@ export class ConversationArtifacts {
|
|
|
134
153
|
}
|
|
135
154
|
return { text, truncated };
|
|
136
155
|
}
|
|
137
|
-
}
|
|
156
|
+
};
|
|
157
|
+
ConversationArtifacts = __decorate([
|
|
158
|
+
Injectable(),
|
|
159
|
+
__param(0, Inject(KernelDb)),
|
|
160
|
+
__param(1, Inject(StorageService)),
|
|
161
|
+
__param(2, Inject(ConversationAccess))
|
|
162
|
+
], ConversationArtifacts);
|
|
163
|
+
export { ConversationArtifacts };
|
|
@@ -2,7 +2,7 @@ import type { FastifyReply } from "fastify";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { type Principal } from "../identity/principal.js";
|
|
4
4
|
import { type OrgContext } from "../orgs/org.guard.js";
|
|
5
|
-
import { type AttachmentLimits,
|
|
5
|
+
import { type AttachmentLimits, AttachmentsService, type AttachmentView, type CreatedAttachment } from "./attachments.service.js";
|
|
6
6
|
declare const CreateBody: z.ZodObject<{
|
|
7
7
|
name: z.ZodString;
|
|
8
8
|
contentType: z.ZodString;
|
|
@@ -8,13 +8,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { hasControlChars, MEDIA_NAME_MAX_CHARS } from "@capybara-hq/plugin-sdk";
|
|
11
|
-
import {
|
|
11
|
+
import { Controller, Get, HttpCode, Inject, Param, Post, Res } from "@nestjs/common";
|
|
12
12
|
import { z } from "zod";
|
|
13
|
-
import { ATTACHMENTS } from "../http/tokens.js";
|
|
14
|
-
import { ZodPipe } from "../http/zod.pipe.js";
|
|
15
13
|
import { CurrentPrincipal, requireUser } from "../identity/principal.js";
|
|
14
|
+
import { createZodDto } from "../infra/validation/create-zod-dto.js";
|
|
15
|
+
import { ZBody } from "../infra/validation/zod-params.js";
|
|
16
16
|
import { CurrentOrg, OrgAction } from "../orgs/org.guard.js";
|
|
17
|
-
import { ATTACHMENT_DOWNLOAD_CACHE_SECONDS, } from "./attachments.service.js";
|
|
17
|
+
import { ATTACHMENT_DOWNLOAD_CACHE_SECONDS, AttachmentsService, } from "./attachments.service.js";
|
|
18
18
|
const CreateBody = z
|
|
19
19
|
.object({
|
|
20
20
|
name: z
|
|
@@ -26,6 +26,8 @@ const CreateBody = z
|
|
|
26
26
|
size: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),
|
|
27
27
|
})
|
|
28
28
|
.strict();
|
|
29
|
+
class AttachmentCreateBodyDto extends createZodDto(CreateBody, "AttachmentCreateBody") {
|
|
30
|
+
}
|
|
29
31
|
/**
|
|
30
32
|
* 对话附件(`/api/v1/orgs/:orgId/attachments`,`agents.use`,只接受人类用户):
|
|
31
33
|
* 1. `POST /` 登记并取预签名上传(`upload.method` 为 `POST` 时按 multipart 表单:先放 `fields`,最后放 `file`);
|
|
@@ -71,7 +73,7 @@ __decorate([
|
|
|
71
73
|
OrgAction("agents.use"),
|
|
72
74
|
__param(0, CurrentPrincipal()),
|
|
73
75
|
__param(1, CurrentOrg()),
|
|
74
|
-
__param(2,
|
|
76
|
+
__param(2, ZBody(AttachmentCreateBodyDto))
|
|
75
77
|
], AttachmentsController.prototype, "create", null);
|
|
76
78
|
__decorate([
|
|
77
79
|
Post(":id/finalize"),
|
|
@@ -91,6 +93,6 @@ __decorate([
|
|
|
91
93
|
], AttachmentsController.prototype, "download", null);
|
|
92
94
|
AttachmentsController = __decorate([
|
|
93
95
|
Controller("api/v1/orgs/:orgId/attachments"),
|
|
94
|
-
__param(0, Inject(
|
|
96
|
+
__param(0, Inject(AttachmentsService))
|
|
95
97
|
], AttachmentsController);
|
|
96
98
|
export { AttachmentsController };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation attachments and skill package uploads (the hourly cleanup of expired unbound ones,
|
|
3
|
+
* `AttachmentCleanupJob`, is the worker role's: `WorkerModule`). Its own module (no conversations dependency) so the
|
|
4
|
+
* skills and the builtin tools can use it.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AttachmentsModule {
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 { StorageModule } from "../storage/storage.module.js";
|
|
9
|
+
import { ConversationAccessModule } from "./access.js";
|
|
10
|
+
import { AttachmentsService } from "./attachments.service.js";
|
|
11
|
+
/**
|
|
12
|
+
* Conversation attachments and skill package uploads (the hourly cleanup of expired unbound ones,
|
|
13
|
+
* `AttachmentCleanupJob`, is the worker role's: `WorkerModule`). Its own module (no conversations dependency) so the
|
|
14
|
+
* skills and the builtin tools can use it.
|
|
15
|
+
*/
|
|
16
|
+
let AttachmentsModule = class AttachmentsModule {
|
|
17
|
+
};
|
|
18
|
+
AttachmentsModule = __decorate([
|
|
19
|
+
Module({
|
|
20
|
+
imports: [StorageModule, ConversationAccessModule],
|
|
21
|
+
providers: [AttachmentsService],
|
|
22
|
+
exports: [AttachmentsService],
|
|
23
|
+
})
|
|
24
|
+
], AttachmentsModule);
|
|
25
|
+
export { AttachmentsModule };
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import { type PresignedUpload } from "@capybara-hq/plugin-sdk";
|
|
2
|
+
import type { AttachmentPurpose } from "../db/kernel-schema.js";
|
|
3
|
+
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
4
|
+
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
5
|
+
import { TransactionHost } from "../infra/database/transaction-host.js";
|
|
6
|
+
import { LockService } from "../infra/lock/lock.service.js";
|
|
7
|
+
import type { KernelLogger } from "../log.js";
|
|
5
8
|
import type { MediaBytes, MediaInfo } from "../runtime/context/build.js";
|
|
6
|
-
import
|
|
9
|
+
import { StorageService } from "../storage/storage.service.js";
|
|
10
|
+
import { ConversationAccess } from "./access.js";
|
|
7
11
|
import type { LogContentBlock } from "./events.js";
|
|
8
|
-
type Trx = Transaction<KernelDatabase>;
|
|
9
12
|
/** 预签名上传的有效期(秒)。尽量短:表单在有效期内可被再次使用(内容替换由 etag 核对兜底)。 */
|
|
10
13
|
export declare const ATTACHMENT_UPLOAD_TTL_SECONDS = 300;
|
|
11
14
|
/** 下载跳转的预签名有效期(秒);不短于 {@link ATTACHMENT_DOWNLOAD_CACHE_SECONDS}(浏览器缓存的跳转仍可用)。 */
|
|
@@ -30,10 +33,8 @@ export declare const SKILL_PACKAGE_TTL_HOURS = 1;
|
|
|
30
33
|
* 并发处理同一上传也不会互相覆盖出不同内容。版本行记下这个前缀(`skill_versions.object_prefix`)。
|
|
31
34
|
*/
|
|
32
35
|
export declare const skillFilesPrefix: (uploadId: string) => string;
|
|
33
|
-
/**
|
|
36
|
+
/** 周期任务:每小时清理过期未绑定的附件(`@LockedCron`)。 */
|
|
34
37
|
export declare const ATTACHMENT_CLEANUP_JOB = "attachment-cleanup";
|
|
35
|
-
export declare const ATTACHMENT_CLEANUP_SCHEDULER_ID = "attachment-cleanup-hourly";
|
|
36
|
-
export declare const ATTACHMENT_CLEANUP_EVERY_MS = 3600000;
|
|
37
38
|
/** 附件元数据(finalize 的返回)。 */
|
|
38
39
|
export interface AttachmentView {
|
|
39
40
|
id: string;
|
|
@@ -70,14 +71,6 @@ export interface CreatedAttachment {
|
|
|
70
71
|
/** 预签名上传的过期时间(ISO 8601)。 */
|
|
71
72
|
expiresAt: string;
|
|
72
73
|
}
|
|
73
|
-
export interface AttachmentsDeps {
|
|
74
|
-
db: KernelDb;
|
|
75
|
-
storage: StorageService;
|
|
76
|
-
config: () => KernelConfig;
|
|
77
|
-
/** viewer 能否访问该会话(与会话流相同的规则)。 */
|
|
78
|
-
canAccessConversation: (orgId: string, conversationId: string, viewerAccountId: string) => Promise<boolean>;
|
|
79
|
-
log: Pick<Logger, "info" | "warn">;
|
|
80
|
-
}
|
|
81
74
|
/** 去掉参数、转小写:`Text/Plain; charset=utf-8` → `text/plain`。 */
|
|
82
75
|
export declare const normalizeContentType: (ct: string) => string;
|
|
83
76
|
/** 文件开头是否与声明的类型相符(图片与 PDF 看签名,文本不能含 NUL)。 */
|
|
@@ -92,8 +85,16 @@ export declare function countPdfPages(bytes: Uint8Array): number;
|
|
|
92
85
|
* 无进程内状态,可多副本共用。
|
|
93
86
|
*/
|
|
94
87
|
export declare class AttachmentsService {
|
|
95
|
-
private readonly
|
|
96
|
-
|
|
88
|
+
private readonly db;
|
|
89
|
+
private readonly storage;
|
|
90
|
+
private readonly config;
|
|
91
|
+
/** viewer 能否访问该会话(与会话流相同的规则)。 */
|
|
92
|
+
private readonly access;
|
|
93
|
+
private readonly log;
|
|
94
|
+
readonly txHost: TransactionHost;
|
|
95
|
+
constructor(db: KernelDb, storage: Pick<StorageService, "available" | "assertAvailable" | "kernel">, config: Pick<KernelConfigService, "get">,
|
|
96
|
+
/** viewer 能否访问该会话(与会话流相同的规则)。 */
|
|
97
|
+
access: Pick<ConversationAccess, "isAccessible">, log: Pick<KernelLogger, "info" | "warn">, txHost: TransactionHost);
|
|
97
98
|
/** 单个附件的大小上限:配置的 `maxBytes`,图片再受 `MEDIA_LIMITS.imageBytes` 限制。 */
|
|
98
99
|
private limitFor;
|
|
99
100
|
/** 当前配置下的上限(不需要对象存储)。 */
|
|
@@ -142,7 +143,7 @@ export declare class AttachmentsService {
|
|
|
142
143
|
* 后两种的 details 为 `[{ path: "files", message, attachmentId }]`,网页据此标出对应条目。
|
|
143
144
|
* 已绑定到本会话的(重试)照常返回块。
|
|
144
145
|
*/
|
|
145
|
-
bindForMessage(
|
|
146
|
+
bindForMessage(orgId: string, conversationId: string, accountId: string, ids: readonly string[]): Promise<LogContentBlock[]>;
|
|
146
147
|
/** 下载 / 取字节时核对 etag:finalize 记下的与当前对象的不一致 → 内容被替换(记 warn)。没有记录时不核对。 */
|
|
147
148
|
private sameContent;
|
|
148
149
|
/**
|
|
@@ -167,7 +168,7 @@ export declare class AttachmentsService {
|
|
|
167
168
|
* 在调用方事务里把技能包上传标记为已用掉(行锁;之后由清理任务删 zip,解出的文件因被版本引用而保留)。
|
|
168
169
|
* 不是该账号的 ready 技能包(如已被并发的请求用掉)→ `attachment.not_found`。
|
|
169
170
|
*/
|
|
170
|
-
consumeSkillPackage(
|
|
171
|
+
consumeSkillPackage(orgId: string, accountId: string, id: string): Promise<void>;
|
|
171
172
|
/**
|
|
172
173
|
* 删除过期(`expires_at < now()`)且从未绑定到会话的附件:先把行认领为 `deleting`(`FOR UPDATE SKIP LOCKED`,
|
|
173
174
|
* 多副本并发时互不重复),再删对象、删行。删对象失败的行保持 `deleting`,下次运行重试。
|
|
@@ -177,4 +178,11 @@ export declare class AttachmentsService {
|
|
|
177
178
|
*/
|
|
178
179
|
deleteExpired(): Promise<number>;
|
|
179
180
|
}
|
|
180
|
-
|
|
181
|
+
/** The hourly cleanup of expired unbound attachments, once per tick across replicas. */
|
|
182
|
+
export declare class AttachmentCleanupJob {
|
|
183
|
+
private readonly attachments;
|
|
184
|
+
readonly lockService: LockService;
|
|
185
|
+
readonly log: KernelLogger;
|
|
186
|
+
constructor(attachments: Pick<AttachmentsService, "deleteExpired">, lockService: LockService, log: KernelLogger);
|
|
187
|
+
run(): Promise<void>;
|
|
188
|
+
}
|