n8n 2.16.0 → 2.17.0
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/README.md +1 -1
- package/dist/active-workflow-manager.d.ts +3 -1
- package/dist/active-workflow-manager.js +37 -4
- package/dist/active-workflow-manager.js.map +1 -1
- package/dist/auth/auth.service.d.ts +5 -2
- package/dist/auth/auth.service.js +10 -6
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/commands/base-command.js +8 -2
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.js +7 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +5 -1
- package/dist/constants.js.map +1 -1
- package/dist/controllers/ai.controller.d.ts +11 -2
- package/dist/controllers/ai.controller.js +54 -2
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/auth.controller.js +1 -1
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/e2e.controller.js +3 -0
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/me.controller.d.ts +1 -0
- package/dist/controllers/me.controller.js +12 -0
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/project.controller.d.ts +3 -1
- package/dist/controllers/project.controller.js +9 -2
- package/dist/controllers/project.controller.js.map +1 -1
- package/dist/controllers/role.controller.d.ts +6 -4
- package/dist/controllers/role.controller.js +28 -8
- package/dist/controllers/role.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +4 -1
- package/dist/controllers/users.controller.js +8 -2
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/credentials/credentials.controller.js +3 -0
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +3 -2
- package/dist/credentials/credentials.service.js +21 -10
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials/validation.js +2 -2
- package/dist/credentials/validation.js.map +1 -1
- package/dist/credentials-helper.d.ts +3 -1
- package/dist/credentials-helper.js +14 -2
- package/dist/credentials-helper.js.map +1 -1
- package/dist/eventbus/event-message-classes/index.d.ts +2 -2
- package/dist/eventbus/event-message-classes/index.js +7 -0
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +92 -0
- package/dist/events/relays/log-streaming.event-relay.d.ts +7 -0
- package/dist/events/relays/log-streaming.event-relay.js +87 -2
- package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.d.ts +5 -0
- package/dist/events/relays/telemetry.event-relay.js +58 -5
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.d.ts +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +22 -9
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/instance-settings-loader/instance-settings-loader.service.d.ts +9 -0
- package/dist/instance-settings-loader/instance-settings-loader.service.js +36 -0
- package/dist/instance-settings-loader/instance-settings-loader.service.js.map +1 -0
- package/dist/instance-settings-loader/loaders/owner.instance-settings-loader.d.ts +10 -0
- package/dist/instance-settings-loader/loaders/owner.instance-settings-loader.js +72 -0
- package/dist/instance-settings-loader/loaders/owner.instance-settings-loader.js.map +1 -0
- package/dist/modules/chat-hub/stream-capturer.js +3 -0
- package/dist/modules/chat-hub/stream-capturer.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-introspection-identifier.d.ts +2 -2
- package/dist/modules/external-secrets.ee/external-secrets-settings.controller.ee.d.ts +5 -2
- package/dist/modules/external-secrets.ee/external-secrets-settings.controller.ee.js +10 -3
- package/dist/modules/external-secrets.ee/external-secrets-settings.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js +5 -5
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.d.ts +6 -6
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js +14 -9
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js +3 -3
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js.map +1 -1
- package/dist/modules/instance-ai/eval/api-docs.d.ts +1 -0
- package/dist/modules/instance-ai/eval/api-docs.js +78 -0
- package/dist/modules/instance-ai/eval/api-docs.js.map +1 -0
- package/dist/modules/instance-ai/eval/execution.service.d.ts +25 -0
- package/dist/modules/instance-ai/eval/execution.service.js +291 -0
- package/dist/modules/instance-ai/eval/execution.service.js.map +1 -0
- package/dist/modules/instance-ai/eval/mock-handler.d.ts +9 -0
- package/dist/modules/instance-ai/eval/mock-handler.js +264 -0
- package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -0
- package/dist/modules/instance-ai/eval/node-config.d.ts +2 -0
- package/dist/modules/instance-ai/eval/node-config.js +15 -0
- package/dist/modules/instance-ai/eval/node-config.js.map +1 -0
- package/dist/modules/instance-ai/eval/pin-data-generator.d.ts +12 -0
- package/dist/modules/instance-ai/eval/pin-data-generator.js +301 -0
- package/dist/modules/instance-ai/eval/pin-data-generator.js.map +1 -0
- package/dist/modules/instance-ai/eval/request-sanitizer.d.ts +3 -0
- package/dist/modules/instance-ai/eval/request-sanitizer.js +50 -0
- package/dist/modules/instance-ai/eval/request-sanitizer.js.map +1 -0
- package/dist/modules/instance-ai/eval/workflow-analysis.d.ts +16 -0
- package/dist/modules/instance-ai/eval/workflow-analysis.js +217 -0
- package/dist/modules/instance-ai/eval/workflow-analysis.js.map +1 -0
- package/dist/modules/instance-ai/filesystem/index.d.ts +0 -1
- package/dist/modules/instance-ai/filesystem/index.js +1 -3
- package/dist/modules/instance-ai/filesystem/index.js.map +1 -1
- package/dist/modules/instance-ai/filesystem/local-gateway.js +1 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +11 -7
- package/dist/modules/instance-ai/instance-ai-memory.service.js +21 -41
- package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.d.ts +4 -0
- package/dist/modules/instance-ai/instance-ai-settings.service.js +26 -6
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +8 -3
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +189 -35
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.d.ts +10 -11
- package/dist/modules/instance-ai/instance-ai.controller.js +101 -44
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.module.d.ts +1 -2
- package/dist/modules/instance-ai/instance-ai.module.js +4 -5
- package/dist/modules/instance-ai/instance-ai.module.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +9 -8
- package/dist/modules/instance-ai/instance-ai.service.js +189 -61
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/internal-messages.js +1 -1
- package/dist/modules/instance-ai/internal-messages.js.map +1 -1
- package/dist/modules/instance-ai/proxy-token-manager.d.ts +15 -0
- package/dist/modules/instance-ai/proxy-token-manager.js +64 -0
- package/dist/modules/instance-ai/proxy-token-manager.js.map +1 -0
- package/dist/modules/instance-ai/snapshot-pruning.service.d.ts +4 -1
- package/dist/modules/instance-ai/snapshot-pruning.service.js +18 -6
- package/dist/modules/instance-ai/snapshot-pruning.service.js.map +1 -1
- package/dist/modules/instance-ai/storage/db-snapshot-storage.d.ts +4 -0
- package/dist/modules/instance-ai/storage/db-snapshot-storage.js +25 -0
- package/dist/modules/instance-ai/storage/db-snapshot-storage.js.map +1 -1
- package/dist/modules/instance-ai/storage/typeorm-memory-storage.js +1 -1
- package/dist/modules/instance-ai/storage/typeorm-memory-storage.js.map +1 -1
- package/dist/modules/instance-ai/web-research/brave-search.d.ts +1 -1
- package/dist/modules/instance-ai/web-research/brave-search.js +2 -1
- package/dist/modules/instance-ai/web-research/brave-search.js.map +1 -1
- package/dist/modules/instance-version-history/database/entities/instance-version-history.entity.d.ts +7 -0
- package/dist/modules/instance-version-history/database/entities/instance-version-history.entity.js +37 -0
- package/dist/modules/instance-version-history/database/entities/instance-version-history.entity.js.map +1 -0
- package/dist/modules/instance-version-history/database/repositories/instance-version-history.repository.d.ts +5 -0
- package/dist/modules/instance-version-history/database/repositories/instance-version-history.repository.js +26 -0
- package/dist/modules/instance-version-history/database/repositories/instance-version-history.repository.js.map +1 -0
- package/dist/modules/instance-version-history/instance-version-history.controller.d.ts +26 -0
- package/dist/modules/instance-version-history/instance-version-history.controller.js +85 -0
- package/dist/modules/instance-version-history/instance-version-history.controller.js.map +1 -0
- package/dist/modules/instance-version-history/instance-version-history.module.d.ts +5 -0
- package/dist/modules/instance-version-history/instance-version-history.module.js +60 -0
- package/dist/modules/instance-version-history/instance-version-history.module.js.map +1 -0
- package/dist/modules/instance-version-history/instance-version-history.service.d.ts +18 -0
- package/dist/modules/instance-version-history/instance-version-history.service.js +120 -0
- package/dist/modules/instance-version-history/instance-version-history.service.js.map +1 -0
- package/dist/modules/instance-version-history/instance-version-history.types.d.ts +12 -0
- package/dist/modules/instance-version-history/instance-version-history.types.js +27 -0
- package/dist/modules/instance-version-history/instance-version-history.types.js.map +1 -0
- package/dist/modules/provisioning.ee/provisioning.service.ee.d.ts +5 -2
- package/dist/modules/provisioning.ee/provisioning.service.ee.js +55 -11
- package/dist/modules/provisioning.ee/provisioning.service.ee.js.map +1 -1
- package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.d.ts +7 -5
- package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js +40 -10
- package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js.map +1 -1
- package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.d.ts +3 -1
- package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js +1 -0
- package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js.map +1 -1
- package/dist/modules/provisioning.ee/role-resolver-types.d.ts +14 -2
- package/dist/modules/provisioning.ee/role-resolver.service.ee.js +16 -6
- package/dist/modules/provisioning.ee/role-resolver.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-context.factory.d.ts +12 -0
- package/dist/modules/source-control.ee/source-control-context.factory.js +112 -0
- package/dist/modules/source-control.ee/source-control-context.factory.js.map +1 -0
- package/dist/modules/source-control.ee/source-control-export.service.ee.d.ts +2 -2
- package/dist/modules/source-control.ee/source-control-export.service.ee.js +9 -11
- package/dist/modules/source-control.ee/source-control-export.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-git.service.ee.js +3 -3
- package/dist/modules/source-control.ee/source-control-git.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +6 -4
- package/dist/modules/source-control.ee/source-control-import.service.ee.js +29 -85
- package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-scoped.service.d.ts +4 -4
- package/dist/modules/source-control.ee/source-control-scoped.service.js +9 -40
- package/dist/modules/source-control.ee/source-control-scoped.service.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +3 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.js +99 -59
- package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control.service.ee.d.ts +3 -1
- package/dist/modules/source-control.ee/source-control.service.ee.js +6 -4
- package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/types/source-control-context.d.ts +12 -4
- package/dist/modules/source-control.ee/types/source-control-context.js +32 -6
- package/dist/modules/source-control.ee/types/source-control-context.js.map +1 -1
- package/dist/modules/sso-saml/saml.controller.ee.d.ts +2 -3
- package/dist/modules/sso-saml/saml.controller.ee.js +3 -15
- package/dist/modules/sso-saml/saml.controller.ee.js.map +1 -1
- package/dist/modules/token-exchange/controllers/embed-auth.controller.d.ts +5 -1
- package/dist/modules/token-exchange/controllers/embed-auth.controller.js +50 -11
- package/dist/modules/token-exchange/controllers/embed-auth.controller.js.map +1 -1
- package/dist/modules/token-exchange/{token-exchange.controller.d.ts → controllers/token-exchange.controller.d.ts} +1 -1
- package/dist/modules/token-exchange/{token-exchange.controller.js → controllers/token-exchange.controller.js} +50 -5
- package/dist/modules/token-exchange/controllers/token-exchange.controller.js.map +1 -0
- package/dist/modules/token-exchange/database/entities/trusted-key-source.entity.d.ts +10 -0
- package/dist/modules/token-exchange/database/entities/trusted-key-source.entity.js +45 -0
- package/dist/modules/token-exchange/database/entities/trusted-key-source.entity.js.map +1 -0
- package/dist/modules/token-exchange/database/entities/trusted-key.entity.d.ts +9 -0
- package/dist/modules/token-exchange/database/entities/trusted-key.entity.js +43 -0
- package/dist/modules/token-exchange/database/entities/trusted-key.entity.js.map +1 -0
- package/dist/modules/token-exchange/database/repositories/trusted-key-source.repository.d.ts +5 -0
- package/dist/modules/token-exchange/database/repositories/trusted-key-source.repository.js +26 -0
- package/dist/modules/token-exchange/database/repositories/trusted-key-source.repository.js.map +1 -0
- package/dist/modules/token-exchange/database/repositories/trusted-key.repository.d.ts +7 -0
- package/dist/modules/token-exchange/database/repositories/trusted-key.repository.js +32 -0
- package/dist/modules/token-exchange/database/repositories/trusted-key.repository.js.map +1 -0
- package/dist/modules/token-exchange/services/identity-resolution.service.d.ts +20 -2
- package/dist/modules/token-exchange/services/identity-resolution.service.js +178 -4
- package/dist/modules/token-exchange/services/identity-resolution.service.js.map +1 -1
- package/dist/modules/token-exchange/services/jti-cleanup.service.js +1 -1
- package/dist/modules/token-exchange/services/jti-cleanup.service.js.map +1 -1
- package/dist/modules/token-exchange/services/jwks-resolver.d.ts +30 -0
- package/dist/modules/token-exchange/services/jwks-resolver.js +190 -0
- package/dist/modules/token-exchange/services/jwks-resolver.js.map +1 -0
- package/dist/modules/token-exchange/services/scoped-jwt.strategy.d.ts +12 -0
- package/dist/modules/token-exchange/services/scoped-jwt.strategy.js +92 -0
- package/dist/modules/token-exchange/services/scoped-jwt.strategy.js.map +1 -0
- package/dist/modules/token-exchange/services/token-exchange.service.d.ts +18 -4
- package/dist/modules/token-exchange/services/token-exchange.service.js +65 -6
- package/dist/modules/token-exchange/services/token-exchange.service.js.map +1 -1
- package/dist/modules/token-exchange/services/trusted-key.service.d.ts +40 -6
- package/dist/modules/token-exchange/services/trusted-key.service.js +374 -32
- package/dist/modules/token-exchange/services/trusted-key.service.js.map +1 -1
- package/dist/modules/token-exchange/token-exchange.config.d.ts +4 -0
- package/dist/modules/token-exchange/token-exchange.config.js +20 -0
- package/dist/modules/token-exchange/token-exchange.config.js.map +1 -1
- package/dist/modules/token-exchange/token-exchange.module.js +7 -2
- package/dist/modules/token-exchange/token-exchange.module.js.map +1 -1
- package/dist/modules/token-exchange/token-exchange.schemas.d.ts +35 -5
- package/dist/modules/token-exchange/token-exchange.schemas.js +16 -7
- package/dist/modules/token-exchange/token-exchange.schemas.js.map +1 -1
- package/dist/modules/token-exchange/token-exchange.types.d.ts +5 -2
- package/dist/modules/token-exchange/token-exchange.types.js +2 -0
- package/dist/modules/token-exchange/token-exchange.types.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +1 -0
- package/dist/oauth/oauth.service.js +39 -2
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/public-api/index.js +32 -4
- package/dist/public-api/index.js.map +1 -1
- package/dist/public-api/types.d.ts +11 -1
- package/dist/public-api/v1/handlers/community-packages/community-packages.handler.d.ts +1 -0
- package/dist/public-api/v1/handlers/community-packages/community-packages.handler.js +5 -5
- package/dist/public-api/v1/handlers/community-packages/community-packages.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +7 -12
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +3 -4
- package/dist/public-api/v1/handlers/credentials/credentials.service.js +21 -33
- package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
- package/dist/public-api/v1/handlers/data-tables/data-tables.handler.js +5 -5
- package/dist/public-api/v1/handlers/data-tables/data-tables.rows.handler.js +5 -5
- package/dist/public-api/v1/handlers/executions/executions.handler.js +8 -8
- package/dist/public-api/v1/handlers/insights/insights.handler.d.ts +6 -0
- package/dist/public-api/v1/handlers/insights/insights.handler.js +57 -0
- package/dist/public-api/v1/handlers/insights/insights.handler.js.map +1 -0
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js +14 -35
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/workflows/workflows.service.d.ts +6 -4
- package/dist/public-api/v1/handlers/workflows/workflows.service.js +7 -15
- package/dist/public-api/v1/handlers/workflows/workflows.service.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +322 -7
- package/dist/public-api/v1/shared/middlewares/global.middleware.d.ts +1 -1
- package/dist/public-api/v1/shared/middlewares/global.middleware.js +19 -8
- package/dist/public-api/v1/shared/middlewares/global.middleware.js.map +1 -1
- package/dist/security-audit/risk-reporters/credentials-risk-reporter.d.ts +2 -3
- package/dist/security-audit/risk-reporters/credentials-risk-reporter.js +2 -5
- package/dist/security-audit/risk-reporters/credentials-risk-reporter.js.map +1 -1
- package/dist/services/ai-gateway.service.d.ts +44 -0
- package/dist/services/ai-gateway.service.js +228 -0
- package/dist/services/ai-gateway.service.js.map +1 -0
- package/dist/services/api-key-auth.strategy.d.ts +10 -0
- package/dist/services/api-key-auth.strategy.js +71 -0
- package/dist/services/api-key-auth.strategy.js.map +1 -0
- package/dist/services/frontend.service.js +7 -0
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/import.service.d.ts +1 -0
- package/dist/services/import.service.js +25 -2
- package/dist/services/import.service.js.map +1 -1
- package/dist/services/ownership.service.d.ts +4 -1
- package/dist/services/ownership.service.js +11 -5
- package/dist/services/ownership.service.js.map +1 -1
- package/dist/services/project.service.ee.js +1 -1
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/pruning/workflow-history-compaction.service.js +4 -4
- package/dist/services/pruning/workflow-history-compaction.service.js.map +1 -1
- package/dist/services/public-api-key.service.d.ts +6 -13
- package/dist/services/public-api-key.service.js +12 -80
- package/dist/services/public-api-key.service.js.map +1 -1
- package/dist/services/user.service.js +6 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/utils/validate-redirect-url.d.ts +1 -0
- package/dist/utils/validate-redirect-url.js +17 -0
- package/dist/utils/validate-redirect-url.js.map +1 -0
- package/dist/webhooks/webhook-form-data.js +6 -2
- package/dist/webhooks/webhook-form-data.js.map +1 -1
- package/dist/webhooks/webhook.service.js +19 -4
- package/dist/webhooks/webhook.service.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +2 -0
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-helpers.d.ts +1 -0
- package/dist/workflow-helpers.js +21 -0
- package/dist/workflow-helpers.js.map +1 -1
- package/dist/workflow-runner.js +25 -1
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/workflow-creation.service.d.ts +8 -5
- package/dist/workflows/workflow-creation.service.js +36 -17
- package/dist/workflows/workflow-creation.service.js.map +1 -1
- package/dist/workflows/workflow.service.ee.js +4 -1
- package/dist/workflows/workflow.service.ee.js.map +1 -1
- package/dist/workflows/workflow.service.js +4 -1
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +2 -2
- package/package.json +25 -26
- package/dist/modules/instance-ai/filesystem/local-fs-provider.d.ts +0 -26
- package/dist/modules/instance-ai/filesystem/local-fs-provider.js +0 -321
- package/dist/modules/instance-ai/filesystem/local-fs-provider.js.map +0 -1
- package/dist/modules/token-exchange/token-exchange.controller.js.map +0 -1
- package/dist/modules/token-exchange/token-exchange.service.d.ts +0 -9
- package/dist/modules/token-exchange/token-exchange.service.js +0 -66
- package/dist/modules/token-exchange/token-exchange.service.js.map +0 -1
|
@@ -52,8 +52,10 @@ const url_service_1 = require("../../services/url.service");
|
|
|
52
52
|
const instance_ai_1 = require("@n8n/instance-ai");
|
|
53
53
|
const workflow_sdk_1 = require("@n8n/workflow-sdk");
|
|
54
54
|
const nanoid_1 = require("nanoid");
|
|
55
|
+
const source_control_preferences_service_ee_1 = require("../../modules/source-control.ee/source-control-preferences.service.ee");
|
|
55
56
|
const ai_service_1 = require("../../services/ai.service");
|
|
56
57
|
const push_1 = require("../../push");
|
|
58
|
+
const telemetry_1 = require("../../telemetry");
|
|
57
59
|
const in_process_event_bus_1 = require("./event-bus/in-process-event-bus");
|
|
58
60
|
const filesystem_1 = require("./filesystem");
|
|
59
61
|
const instance_ai_settings_service_1 = require("./instance-ai-settings.service");
|
|
@@ -63,6 +65,7 @@ const typeorm_composite_store_1 = require("./storage/typeorm-composite-store");
|
|
|
63
65
|
const db_snapshot_storage_1 = require("./storage/db-snapshot-storage");
|
|
64
66
|
const db_iteration_log_storage_1 = require("./storage/db-iteration-log-storage");
|
|
65
67
|
const compaction_service_1 = require("./compaction.service");
|
|
68
|
+
const proxy_token_manager_1 = require("./proxy-token-manager");
|
|
66
69
|
const instance_ai_thread_repository_1 = require("./repositories/instance-ai-thread.repository");
|
|
67
70
|
function getErrorMessage(error) {
|
|
68
71
|
return error instanceof Error ? error.message : String(error);
|
|
@@ -73,7 +76,7 @@ function createInertAbortSignal() {
|
|
|
73
76
|
const ORCHESTRATOR_AGENT_ID = 'agent-001';
|
|
74
77
|
const MAX_CONCURRENT_BACKGROUND_TASKS_PER_THREAD = 5;
|
|
75
78
|
let InstanceAiService = class InstanceAiService {
|
|
76
|
-
constructor(logger, globalConfig, adapterService, eventBus, settingsService, compositeStore, compactionService, aiService, push, threadRepo, urlService, dbSnapshotStorage, dbIterationLogStorage) {
|
|
79
|
+
constructor(logger, globalConfig, adapterService, eventBus, settingsService, compositeStore, compactionService, aiService, push, threadRepo, urlService, dbSnapshotStorage, dbIterationLogStorage, sourceControlPreferencesService, telemetry) {
|
|
77
80
|
this.adapterService = adapterService;
|
|
78
81
|
this.eventBus = eventBus;
|
|
79
82
|
this.settingsService = settingsService;
|
|
@@ -85,6 +88,8 @@ let InstanceAiService = class InstanceAiService {
|
|
|
85
88
|
this.urlService = urlService;
|
|
86
89
|
this.dbSnapshotStorage = dbSnapshotStorage;
|
|
87
90
|
this.dbIterationLogStorage = dbIterationLogStorage;
|
|
91
|
+
this.sourceControlPreferencesService = sourceControlPreferencesService;
|
|
92
|
+
this.telemetry = telemetry;
|
|
88
93
|
this.mcpClientManager = new instance_ai_1.McpClientManager();
|
|
89
94
|
this.runState = new instance_ai_1.RunStateRegistry();
|
|
90
95
|
this.backgroundTasks = new instance_ai_1.BackgroundTaskManager(MAX_CONCURRENT_BACKGROUND_TASKS_PER_THREAD);
|
|
@@ -93,6 +98,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
93
98
|
this.gatewayRegistry = new filesystem_1.LocalGatewayRegistry();
|
|
94
99
|
this.domainAccessTrackersByThread = new Map();
|
|
95
100
|
this.threadPushRef = new Map();
|
|
101
|
+
this.schedulerLocks = new Map();
|
|
96
102
|
this.creditedThreads = new Set();
|
|
97
103
|
this.logger = logger.scoped('instance-ai');
|
|
98
104
|
this.instanceAiConfig = globalConfig.instanceAi;
|
|
@@ -203,13 +209,6 @@ let InstanceAiService = class InstanceAiService {
|
|
|
203
209
|
}
|
|
204
210
|
return new instance_ai_1.BuilderSandboxFactory(config);
|
|
205
211
|
}
|
|
206
|
-
getLocalFsProvider() {
|
|
207
|
-
if (!this.localFsProvider) {
|
|
208
|
-
const basePath = this.instanceAiConfig.filesystemPath || undefined;
|
|
209
|
-
this.localFsProvider = new filesystem_1.LocalFilesystemProvider(basePath);
|
|
210
|
-
}
|
|
211
|
-
return this.localFsProvider;
|
|
212
|
-
}
|
|
213
212
|
async getOrCreateWorkspace(threadId, user) {
|
|
214
213
|
const existing = this.sandboxes.get(threadId);
|
|
215
214
|
if (existing)
|
|
@@ -250,31 +249,22 @@ let InstanceAiService = class InstanceAiService {
|
|
|
250
249
|
headers: { Authorization: `${token.tokenType} ${token.accessToken}` },
|
|
251
250
|
};
|
|
252
251
|
}
|
|
253
|
-
async
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
return undefined;
|
|
270
|
-
const { client, headers } = await this.getProxyAuth(user);
|
|
271
|
-
return { apiUrl: client.getApiProxyBaseUrl() + '/brave-search', headers };
|
|
272
|
-
}
|
|
273
|
-
async resolveTracingProxyConfig(user) {
|
|
274
|
-
if (!this.aiService.isProxyEnabled())
|
|
275
|
-
return undefined;
|
|
276
|
-
const { client, headers } = await this.getProxyAuth(user);
|
|
277
|
-
return { apiUrl: client.getApiProxyBaseUrl() + '/langsmith', headers };
|
|
252
|
+
async resolveProxyModel(user, proxyBaseUrl, tokenManager) {
|
|
253
|
+
const modelName = await this.settingsService.resolveModelName(user);
|
|
254
|
+
const { createAnthropic } = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
|
|
255
|
+
const provider = createAnthropic({
|
|
256
|
+
baseURL: proxyBaseUrl + '/anthropic/v1',
|
|
257
|
+
apiKey: 'proxy-managed',
|
|
258
|
+
fetch: async (input, init) => {
|
|
259
|
+
const headers = new Headers(init?.headers);
|
|
260
|
+
const auth = await tokenManager.getAuthHeaders();
|
|
261
|
+
for (const [k, v] of Object.entries(auth)) {
|
|
262
|
+
headers.set(k, v);
|
|
263
|
+
}
|
|
264
|
+
return await globalThis.fetch(input, { ...init, headers });
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
return provider(modelName);
|
|
278
268
|
}
|
|
279
269
|
async countCreditsIfFirst(user, threadId, runId) {
|
|
280
270
|
if (!this.aiService.isProxyEnabled())
|
|
@@ -321,14 +311,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
321
311
|
return await client.getBuilderInstanceCredits({ id: user.id });
|
|
322
312
|
}
|
|
323
313
|
isEnabled() {
|
|
324
|
-
return !!this.instanceAiConfig.model;
|
|
325
|
-
}
|
|
326
|
-
isLocalFilesystemAvailable() {
|
|
327
|
-
return !!this.instanceAiConfig.filesystemPath?.trim();
|
|
328
|
-
}
|
|
329
|
-
getLocalFilesystemDirectory() {
|
|
330
|
-
const basePath = this.instanceAiConfig.filesystemPath?.trim();
|
|
331
|
-
return basePath || null;
|
|
314
|
+
return this.settingsService.isAgentEnabled() && !!this.instanceAiConfig.model;
|
|
332
315
|
}
|
|
333
316
|
hasActiveRun(threadId) {
|
|
334
317
|
return this.runState.hasLiveRun(threadId);
|
|
@@ -374,6 +357,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
374
357
|
error: getErrorMessage(error),
|
|
375
358
|
});
|
|
376
359
|
}
|
|
360
|
+
finally {
|
|
361
|
+
(0, instance_ai_1.releaseTraceClient)(tracing.rootRun.traceId);
|
|
362
|
+
}
|
|
377
363
|
}
|
|
378
364
|
async maybeFinalizeRunTraceRoot(runId, options) {
|
|
379
365
|
const tracing = this.getTraceContext(runId);
|
|
@@ -395,6 +381,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
395
381
|
deleteTraceContextsForThread(threadId) {
|
|
396
382
|
for (const [runId, entry] of this.traceContextsByRunId) {
|
|
397
383
|
if (entry.threadId === threadId) {
|
|
384
|
+
(0, instance_ai_1.releaseTraceClient)(entry.tracing.rootRun.traceId);
|
|
398
385
|
this.traceContextsByRunId.delete(runId);
|
|
399
386
|
}
|
|
400
387
|
}
|
|
@@ -422,6 +409,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
422
409
|
error: getErrorMessage(error),
|
|
423
410
|
});
|
|
424
411
|
}
|
|
412
|
+
finally {
|
|
413
|
+
(0, instance_ai_1.releaseTraceClient)(traceContext.rootRun.traceId);
|
|
414
|
+
}
|
|
425
415
|
}
|
|
426
416
|
async finalizeRunTracing(runId, tracing, options) {
|
|
427
417
|
if (!tracing)
|
|
@@ -502,6 +492,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
502
492
|
agentId: task.agentId,
|
|
503
493
|
payload: { role: task.role, result: '', error: 'Cancelled by user' },
|
|
504
494
|
});
|
|
495
|
+
void this.saveAgentTreeSnapshot(threadId, task.runId, this.dbSnapshotStorage, true, task.messageGroupId);
|
|
505
496
|
if (user) {
|
|
506
497
|
void this.handlePlannedTaskSettlement(user, task, 'cancelled');
|
|
507
498
|
}
|
|
@@ -523,6 +514,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
523
514
|
agentId: ORCHESTRATOR_AGENT_ID,
|
|
524
515
|
payload: { status: 'cancelled', reason: 'user_cancelled' },
|
|
525
516
|
});
|
|
517
|
+
void this.saveAgentTreeSnapshot(threadId, suspended.runId, this.dbSnapshotStorage, true);
|
|
526
518
|
if (suspended.mastraRunId) {
|
|
527
519
|
void this.cleanupMastraSnapshots(suspended.mastraRunId);
|
|
528
520
|
}
|
|
@@ -547,6 +539,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
547
539
|
agentId: task.agentId,
|
|
548
540
|
payload: { role: task.role, result: '', error: 'Cancelled by user' },
|
|
549
541
|
});
|
|
542
|
+
void this.saveAgentTreeSnapshot(threadId, task.runId, this.dbSnapshotStorage, true, task.messageGroupId);
|
|
550
543
|
const user = this.runState.getThreadUser(threadId);
|
|
551
544
|
if (user) {
|
|
552
545
|
void this.handlePlannedTaskSettlement(user, task, 'cancelled');
|
|
@@ -620,6 +613,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
620
613
|
metadata: { completion_source: 'service_cleanup' },
|
|
621
614
|
});
|
|
622
615
|
this.creditedThreads.delete(threadId);
|
|
616
|
+
this.schedulerLocks.delete(threadId);
|
|
623
617
|
this.domainAccessTrackersByThread.delete(threadId);
|
|
624
618
|
this.threadPushRef.delete(threadId);
|
|
625
619
|
this.deleteTraceContextsForThread(threadId);
|
|
@@ -749,20 +743,39 @@ let InstanceAiService = class InstanceAiService {
|
|
|
749
743
|
async createExecutionEnvironment(user, threadId, runId, abortSignal, researchMode, messageGroupId, pushRef) {
|
|
750
744
|
const localGatewayDisabled = this.settingsService.isLocalGatewayDisabled();
|
|
751
745
|
const userGateway = this.gatewayRegistry.findGateway(user.id);
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
746
|
+
let searchProxyConfig;
|
|
747
|
+
let tracingProxyConfig;
|
|
748
|
+
let tokenManager;
|
|
749
|
+
let proxyBaseUrl;
|
|
750
|
+
if (this.aiService.isProxyEnabled()) {
|
|
751
|
+
const client = await this.aiService.getClient();
|
|
752
|
+
proxyBaseUrl = client.getApiProxyBaseUrl();
|
|
753
|
+
const manager = new proxy_token_manager_1.ProxyTokenManager(async () => {
|
|
754
|
+
return await client.getBuilderApiProxyToken({ id: user.id }, { userMessageId: (0, nanoid_1.nanoid)() });
|
|
755
|
+
});
|
|
756
|
+
tokenManager = manager;
|
|
757
|
+
searchProxyConfig = {
|
|
758
|
+
apiUrl: proxyBaseUrl + '/brave-search',
|
|
759
|
+
getAuthHeaders: async () => await manager.getAuthHeaders(),
|
|
760
|
+
};
|
|
761
|
+
tracingProxyConfig = {
|
|
762
|
+
apiUrl: proxyBaseUrl + '/langsmith',
|
|
763
|
+
getAuthHeaders: async () => await manager.getAuthHeaders(),
|
|
764
|
+
};
|
|
765
|
+
}
|
|
757
766
|
const context = this.adapterService.createContext(user, {
|
|
758
|
-
filesystemService: localFilesystemService,
|
|
759
767
|
searchProxyConfig,
|
|
760
768
|
pushRef,
|
|
769
|
+
threadId,
|
|
761
770
|
});
|
|
762
771
|
if (!localGatewayDisabled && userGateway?.isConnected) {
|
|
763
772
|
context.localMcpServer = userGateway;
|
|
764
773
|
}
|
|
765
774
|
context.permissions = this.settingsService.getPermissions();
|
|
775
|
+
if (this.sourceControlPreferencesService.getPreferences().branchReadOnly) {
|
|
776
|
+
context.permissions = (0, api_types_1.applyBranchReadOnlyOverrides)(context.permissions);
|
|
777
|
+
context.branchReadOnly = true;
|
|
778
|
+
}
|
|
766
779
|
let domainTracker = this.domainAccessTrackersByThread.get(threadId);
|
|
767
780
|
if (!domainTracker) {
|
|
768
781
|
domainTracker = (0, instance_ai_1.createDomainAccessTracker)();
|
|
@@ -782,7 +795,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
782
795
|
capabilities: ['filesystem', 'browser'],
|
|
783
796
|
};
|
|
784
797
|
}
|
|
785
|
-
const modelId =
|
|
798
|
+
const modelId = proxyBaseUrl && tokenManager
|
|
799
|
+
? await this.resolveProxyModel(user, proxyBaseUrl, tokenManager)
|
|
800
|
+
: await this.settingsService.resolveModelConfig(user);
|
|
786
801
|
const memory = (0, instance_ai_1.createMemory)(this.createMemoryConfig());
|
|
787
802
|
await this.ensureThreadExists(memory, threadId, user.id);
|
|
788
803
|
const taskStorage = new instance_ai_1.MastraTaskStorage(memory);
|
|
@@ -827,6 +842,9 @@ let InstanceAiService = class InstanceAiService {
|
|
|
827
842
|
userId: user.id,
|
|
828
843
|
createdAt: Date.now(),
|
|
829
844
|
});
|
|
845
|
+
queueMicrotask(() => {
|
|
846
|
+
void this.saveAgentTreeSnapshot(threadId, runId, snapshotStorage);
|
|
847
|
+
});
|
|
830
848
|
});
|
|
831
849
|
},
|
|
832
850
|
cancelBackgroundTask: async (taskId) => this.cancelBackgroundTask(threadId, taskId),
|
|
@@ -841,6 +859,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
841
859
|
nodeDefinitionDirs: nodeDefDirs.length > 0 ? nodeDefDirs : undefined,
|
|
842
860
|
domainContext: context,
|
|
843
861
|
tracingProxyConfig,
|
|
862
|
+
memory,
|
|
844
863
|
};
|
|
845
864
|
return {
|
|
846
865
|
context,
|
|
@@ -942,6 +961,10 @@ let InstanceAiService = class InstanceAiService {
|
|
|
942
961
|
await this.schedulePlannedTasks(user, task.threadId);
|
|
943
962
|
}
|
|
944
963
|
async startInternalFollowUpRun(user, threadId, message, researchMode, messageGroupId) {
|
|
964
|
+
if (this.runState.hasLiveRun(threadId)) {
|
|
965
|
+
this.logger.warn('Skipping internal follow-up: active run exists', { threadId });
|
|
966
|
+
return '';
|
|
967
|
+
}
|
|
945
968
|
const { runId, abortController } = this.runState.startRun({
|
|
946
969
|
threadId,
|
|
947
970
|
user,
|
|
@@ -952,6 +975,12 @@ let InstanceAiService = class InstanceAiService {
|
|
|
952
975
|
return runId;
|
|
953
976
|
}
|
|
954
977
|
async schedulePlannedTasks(user, threadId) {
|
|
978
|
+
const prev = this.schedulerLocks.get(threadId) ?? Promise.resolve();
|
|
979
|
+
const current = prev.then(() => this.doSchedulePlannedTasks(user, threadId)).catch(() => { });
|
|
980
|
+
this.schedulerLocks.set(threadId, current);
|
|
981
|
+
await current;
|
|
982
|
+
}
|
|
983
|
+
async doSchedulePlannedTasks(user, threadId) {
|
|
955
984
|
const { plannedTaskService } = await this.createPlannedTaskState();
|
|
956
985
|
const graph = await plannedTaskService.getGraph(threadId);
|
|
957
986
|
if (!graph)
|
|
@@ -977,7 +1006,7 @@ let InstanceAiService = class InstanceAiService {
|
|
|
977
1006
|
for (const task of action.tasks) {
|
|
978
1007
|
await this.dispatchPlannedTask(task, environment.orchestrationContext);
|
|
979
1008
|
}
|
|
980
|
-
await this.
|
|
1009
|
+
await this.doSchedulePlannedTasks(user, threadId);
|
|
981
1010
|
}
|
|
982
1011
|
async executeRun(user, threadId, runId, message, abortController, researchMode, attachments, messageGroupId, timeZone) {
|
|
983
1012
|
const signal = abortController.signal;
|
|
@@ -1005,6 +1034,10 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1005
1034
|
const mcpServers = this.parseMcpServers(this.instanceAiConfig.mcpServers);
|
|
1006
1035
|
const executionPushRef = this.threadPushRef.get(threadId);
|
|
1007
1036
|
const { context, memory, taskStorage, snapshotStorage, modelId, orchestrationContext } = await this.createExecutionEnvironment(user, threadId, runId, signal, researchMode, messageGroupId, executionPushRef);
|
|
1037
|
+
orchestrationContext.currentUserMessage = message;
|
|
1038
|
+
if (attachments && attachments.length > 0) {
|
|
1039
|
+
context.currentUserAttachments = attachments;
|
|
1040
|
+
}
|
|
1008
1041
|
const memoryConfig = this.createMemoryConfig();
|
|
1009
1042
|
const traceInput = {
|
|
1010
1043
|
message,
|
|
@@ -1120,31 +1153,54 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1120
1153
|
let streamInput;
|
|
1121
1154
|
try {
|
|
1122
1155
|
const enrichedMessage = await this.buildMessageWithRunningTasks(threadId, message);
|
|
1123
|
-
|
|
1156
|
+
let fullMessage = conversationSummary
|
|
1124
1157
|
? `${conversationSummary}\n\n${enrichedMessage}`
|
|
1125
1158
|
: enrichedMessage;
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1159
|
+
if (attachments && attachments.length > 0) {
|
|
1160
|
+
const classified = (0, instance_ai_1.classifyAttachments)(attachments);
|
|
1161
|
+
const nonStructured = attachments.filter((a) => !(0, instance_ai_1.isStructuredAttachment)(a));
|
|
1162
|
+
const hasParseable = classified.some((c) => c.parseable);
|
|
1163
|
+
const manifest = (0, instance_ai_1.buildAttachmentManifest)(classified);
|
|
1164
|
+
if (!message && hasParseable) {
|
|
1165
|
+
fullMessage = conversationSummary
|
|
1166
|
+
? `${conversationSummary}\n\nThe user attached file(s) without a message. Inspect the first parseable attachment with parse-file and provide a concise summary.\n\n${manifest}`
|
|
1167
|
+
: `The user attached file(s) without a message. Inspect the first parseable attachment with parse-file and provide a concise summary.\n\n${manifest}`;
|
|
1168
|
+
}
|
|
1169
|
+
else {
|
|
1170
|
+
fullMessage = `${fullMessage}\n\n${manifest}`;
|
|
1171
|
+
}
|
|
1172
|
+
if (nonStructured.length > 0) {
|
|
1173
|
+
streamInput = [
|
|
1129
1174
|
{
|
|
1130
1175
|
role: 'user',
|
|
1131
1176
|
content: [
|
|
1132
1177
|
{ type: 'text', text: fullMessage },
|
|
1133
|
-
...
|
|
1178
|
+
...nonStructured.map((a) => ({
|
|
1134
1179
|
type: 'file',
|
|
1135
1180
|
data: a.data,
|
|
1136
1181
|
mimeType: a.mimeType,
|
|
1137
1182
|
})),
|
|
1138
1183
|
],
|
|
1139
1184
|
},
|
|
1140
|
-
]
|
|
1141
|
-
|
|
1185
|
+
];
|
|
1186
|
+
}
|
|
1187
|
+
else {
|
|
1188
|
+
streamInput = fullMessage;
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
else {
|
|
1192
|
+
streamInput = fullMessage;
|
|
1193
|
+
}
|
|
1142
1194
|
if (promptBuildRun && tracing) {
|
|
1143
|
-
|
|
1144
|
-
|
|
1195
|
+
const traceOutput = typeof streamInput === 'string'
|
|
1196
|
+
? { fullMessage: streamInput }
|
|
1197
|
+
: {
|
|
1145
1198
|
fullMessage,
|
|
1146
|
-
|
|
1147
|
-
|
|
1199
|
+
attachmentCount: attachments?.length ?? 0,
|
|
1200
|
+
nonStructuredAttachmentCount: attachments?.filter((a) => !(0, instance_ai_1.isStructuredAttachment)(a)).length ?? 0,
|
|
1201
|
+
};
|
|
1202
|
+
await tracing.finishRun(promptBuildRun, {
|
|
1203
|
+
outputs: traceOutput,
|
|
1148
1204
|
metadata: { final_status: 'completed' },
|
|
1149
1205
|
});
|
|
1150
1206
|
}
|
|
@@ -1211,7 +1267,16 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1211
1267
|
tracing,
|
|
1212
1268
|
});
|
|
1213
1269
|
}
|
|
1270
|
+
const intermediateText = await (result.text ?? Promise.resolve(''));
|
|
1271
|
+
if (intermediateText) {
|
|
1272
|
+
this.telemetry.track('Builder sent message', {
|
|
1273
|
+
thread_id: threadId,
|
|
1274
|
+
message: intermediateText,
|
|
1275
|
+
is_intermediate: true,
|
|
1276
|
+
});
|
|
1277
|
+
}
|
|
1214
1278
|
if (result.confirmationEvent) {
|
|
1279
|
+
this.trackConfirmationRequest(threadId, result.confirmationEvent);
|
|
1215
1280
|
this.eventBus.publish(threadId, result.confirmationEvent);
|
|
1216
1281
|
}
|
|
1217
1282
|
await this.saveAgentTreeSnapshot(threadId, runId, snapshotStorage);
|
|
@@ -1236,6 +1301,13 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1236
1301
|
});
|
|
1237
1302
|
if (result.status === 'completed') {
|
|
1238
1303
|
await this.countCreditsIfFirst(user, threadId, runId);
|
|
1304
|
+
this.telemetry.track('Builder sent message', {
|
|
1305
|
+
thread_id: threadId,
|
|
1306
|
+
message: outputText,
|
|
1307
|
+
});
|
|
1308
|
+
this.telemetry.track('Builder satisfied user intent', {
|
|
1309
|
+
thread_id: threadId,
|
|
1310
|
+
});
|
|
1239
1311
|
}
|
|
1240
1312
|
}
|
|
1241
1313
|
catch (error) {
|
|
@@ -1391,9 +1463,19 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1391
1463
|
tracing: opts.tracing,
|
|
1392
1464
|
});
|
|
1393
1465
|
}
|
|
1466
|
+
const intermediateText = await (result.text ?? Promise.resolve(''));
|
|
1467
|
+
if (intermediateText) {
|
|
1468
|
+
this.telemetry.track('Builder sent message', {
|
|
1469
|
+
thread_id: opts.threadId,
|
|
1470
|
+
message: intermediateText,
|
|
1471
|
+
is_intermediate: true,
|
|
1472
|
+
});
|
|
1473
|
+
}
|
|
1394
1474
|
if (result.confirmationEvent) {
|
|
1475
|
+
this.trackConfirmationRequest(opts.threadId, result.confirmationEvent);
|
|
1395
1476
|
this.eventBus.publish(opts.threadId, result.confirmationEvent);
|
|
1396
1477
|
}
|
|
1478
|
+
await this.saveAgentTreeSnapshot(opts.threadId, opts.runId, opts.snapshotStorage);
|
|
1397
1479
|
return;
|
|
1398
1480
|
}
|
|
1399
1481
|
const outputText = await (result.text ?? Promise.resolve(''));
|
|
@@ -1408,6 +1490,15 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1408
1490
|
metadata: { completion_source: 'orchestrator' },
|
|
1409
1491
|
};
|
|
1410
1492
|
await this.finalizeRun(opts.threadId, opts.runId, result.status, opts.snapshotStorage);
|
|
1493
|
+
if (result.status === 'completed') {
|
|
1494
|
+
this.telemetry.track('Builder sent message', {
|
|
1495
|
+
thread_id: opts.threadId,
|
|
1496
|
+
message: outputText,
|
|
1497
|
+
});
|
|
1498
|
+
this.telemetry.track('Builder satisfied user intent', {
|
|
1499
|
+
thread_id: opts.threadId,
|
|
1500
|
+
});
|
|
1501
|
+
}
|
|
1411
1502
|
}
|
|
1412
1503
|
catch (error) {
|
|
1413
1504
|
if (opts.signal.aborted) {
|
|
@@ -1546,6 +1637,41 @@ let InstanceAiService = class InstanceAiService {
|
|
|
1546
1637
|
formatTask: async (task) => `[Running task — ${task.role}]: taskId=${task.taskId}`,
|
|
1547
1638
|
});
|
|
1548
1639
|
}
|
|
1640
|
+
trackConfirmationRequest(threadId, confirmationEvent) {
|
|
1641
|
+
const payload = confirmationEvent.payload;
|
|
1642
|
+
const inputThreadId = (0, nanoid_1.nanoid)();
|
|
1643
|
+
payload.inputThreadId = inputThreadId;
|
|
1644
|
+
const inputType = payload.inputType;
|
|
1645
|
+
let type;
|
|
1646
|
+
if (inputType) {
|
|
1647
|
+
type = inputType;
|
|
1648
|
+
}
|
|
1649
|
+
else if (Array.isArray(payload.setupRequests) && payload.setupRequests.length > 0) {
|
|
1650
|
+
type = 'setup';
|
|
1651
|
+
}
|
|
1652
|
+
else if (Array.isArray(payload.credentialRequests) && payload.credentialRequests.length > 0) {
|
|
1653
|
+
type = 'credential-setup';
|
|
1654
|
+
}
|
|
1655
|
+
else {
|
|
1656
|
+
type = 'approval';
|
|
1657
|
+
}
|
|
1658
|
+
let numSteps = 1;
|
|
1659
|
+
if (Array.isArray(payload.questions)) {
|
|
1660
|
+
numSteps = payload.questions.length;
|
|
1661
|
+
}
|
|
1662
|
+
else if (Array.isArray(payload.setupRequests)) {
|
|
1663
|
+
numSteps = payload.setupRequests.length;
|
|
1664
|
+
}
|
|
1665
|
+
else if (Array.isArray(payload.credentialRequests)) {
|
|
1666
|
+
numSteps = payload.credentialRequests.length;
|
|
1667
|
+
}
|
|
1668
|
+
this.telemetry.track('Builder asked for input', {
|
|
1669
|
+
thread_id: threadId,
|
|
1670
|
+
input_thread_id: inputThreadId,
|
|
1671
|
+
type,
|
|
1672
|
+
num_steps: numSteps,
|
|
1673
|
+
});
|
|
1674
|
+
}
|
|
1549
1675
|
publishRunFinish(threadId, runId, status, reason) {
|
|
1550
1676
|
const effectiveStatus = status === 'errored' ? 'error' : status;
|
|
1551
1677
|
this.eventBus.publish(threadId, {
|
|
@@ -1669,6 +1795,8 @@ exports.InstanceAiService = InstanceAiService = __decorate([
|
|
|
1669
1795
|
instance_ai_thread_repository_1.InstanceAiThreadRepository,
|
|
1670
1796
|
url_service_1.UrlService,
|
|
1671
1797
|
db_snapshot_storage_1.DbSnapshotStorage,
|
|
1672
|
-
db_iteration_log_storage_1.DbIterationLogStorage
|
|
1798
|
+
db_iteration_log_storage_1.DbIterationLogStorage,
|
|
1799
|
+
source_control_preferences_service_ee_1.SourceControlPreferencesService,
|
|
1800
|
+
telemetry_1.Telemetry])
|
|
1673
1801
|
], InstanceAiService);
|
|
1674
1802
|
//# sourceMappingURL=instance-ai.service.js.map
|