@mastra/factory 0.24.0-alpha.0 → 0.24.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -4
- package/dist/auth.d.ts +14 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +45 -9
- package/dist/auth.js.map +1 -1
- package/dist/boards/review.d.ts.map +1 -1
- package/dist/boards/review.js +21 -1
- package/dist/boards/review.js.map +1 -1
- package/dist/boards/work-transition-policy.d.ts.map +1 -1
- package/dist/boards/work-transition-policy.js +12 -1
- package/dist/boards/work-transition-policy.js.map +1 -1
- package/dist/boards/work.d.ts +14 -0
- package/dist/boards/work.d.ts.map +1 -1
- package/dist/boards/work.js +70 -7
- package/dist/boards/work.js.map +1 -1
- package/dist/capabilities/version-control.d.ts +26 -0
- package/dist/capabilities/version-control.d.ts.map +1 -1
- package/dist/factory.d.ts +8 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +354 -27
- package/dist/factory.js.map +1 -1
- package/dist/integrations/base.d.ts +1 -1
- package/dist/integrations/base.d.ts.map +1 -1
- package/dist/integrations/github/default-rules.d.ts.map +1 -1
- package/dist/integrations/github/default-rules.js +1 -16
- package/dist/integrations/github/default-rules.js.map +1 -1
- package/dist/integrations/github/integration.d.ts.map +1 -1
- package/dist/integrations/github/integration.js +37 -1
- package/dist/integrations/github/integration.js.map +1 -1
- package/dist/integrations/github/routes.d.ts +1 -1
- package/dist/integrations/github/routes.d.ts.map +1 -1
- package/dist/integrations/github/routes.js +19 -11
- package/dist/integrations/github/routes.js.map +1 -1
- package/dist/integrations/github/rules.d.ts.map +1 -1
- package/dist/integrations/github/rules.js +26 -22
- package/dist/integrations/github/rules.js.map +1 -1
- package/dist/integrations/github/sandbox-release.d.ts +15 -3
- package/dist/integrations/github/sandbox-release.d.ts.map +1 -1
- package/dist/integrations/github/sandbox-release.js +20 -3
- package/dist/integrations/github/sandbox-release.js.map +1 -1
- package/dist/integrations/github/sandbox.d.ts +2 -3
- package/dist/integrations/github/sandbox.d.ts.map +1 -1
- package/dist/integrations/github/sandbox.js +78 -7
- package/dist/integrations/github/sandbox.js.map +1 -1
- package/dist/integrations/github/session-subscriptions.d.ts.map +1 -1
- package/dist/integrations/github/session-subscriptions.js +1 -2
- package/dist/integrations/github/session-subscriptions.js.map +1 -1
- package/dist/integrations/github/subscriptions.d.ts +7 -4
- package/dist/integrations/github/subscriptions.d.ts.map +1 -1
- package/dist/integrations/github/subscriptions.js +5 -5
- package/dist/integrations/github/subscriptions.js.map +1 -1
- package/dist/integrations/github/webhook.d.ts +4 -2
- package/dist/integrations/github/webhook.d.ts.map +1 -1
- package/dist/integrations/github/webhook.js +59 -36
- package/dist/integrations/github/webhook.js.map +1 -1
- package/dist/integrations/gitlab/api.d.ts +16 -1
- package/dist/integrations/gitlab/api.d.ts.map +1 -1
- package/dist/integrations/gitlab/api.js +9 -0
- package/dist/integrations/gitlab/api.js.map +1 -1
- package/dist/integrations/gitlab/routes.d.ts.map +1 -1
- package/dist/integrations/gitlab/routes.js +10 -6
- package/dist/integrations/gitlab/routes.js.map +1 -1
- package/dist/integrations/gitlab/rules.d.ts.map +1 -1
- package/dist/integrations/gitlab/rules.js +28 -21
- package/dist/integrations/gitlab/rules.js.map +1 -1
- package/dist/integrations/gitlab/session-subscriptions.d.ts.map +1 -1
- package/dist/integrations/gitlab/session-subscriptions.js +1 -2
- package/dist/integrations/gitlab/session-subscriptions.js.map +1 -1
- package/dist/integrations/gitlab/subscriptions.d.ts +7 -4
- package/dist/integrations/gitlab/subscriptions.d.ts.map +1 -1
- package/dist/integrations/gitlab/subscriptions.js +5 -5
- package/dist/integrations/gitlab/subscriptions.js.map +1 -1
- package/dist/integrations/gitlab/version-control.d.ts.map +1 -1
- package/dist/integrations/gitlab/version-control.js +37 -3
- package/dist/integrations/gitlab/version-control.js.map +1 -1
- package/dist/integrations/incidentio/api.d.ts +9 -0
- package/dist/integrations/incidentio/api.d.ts.map +1 -1
- package/dist/integrations/incidentio/api.js +3 -0
- package/dist/integrations/incidentio/api.js.map +1 -1
- package/dist/integrations/incidentio/intake.d.ts +1 -1
- package/dist/integrations/incidentio/intake.d.ts.map +1 -1
- package/dist/integrations/incidentio/intake.js.map +1 -1
- package/dist/integrations/incidentio/integration.d.ts.map +1 -1
- package/dist/integrations/incidentio/integration.js +1 -0
- package/dist/integrations/incidentio/integration.js.map +1 -1
- package/dist/integrations/jira/api.d.ts +7 -0
- package/dist/integrations/jira/api.d.ts.map +1 -1
- package/dist/integrations/jira/api.js +4 -0
- package/dist/integrations/jira/api.js.map +1 -1
- package/dist/integrations/linear/agent-tools.d.ts.map +1 -1
- package/dist/integrations/linear/agent-tools.js.map +1 -1
- package/dist/integrations/platform/api-client.d.ts +6 -0
- package/dist/integrations/platform/api-client.d.ts.map +1 -1
- package/dist/integrations/platform/api-client.js +6 -1
- package/dist/integrations/platform/api-client.js.map +1 -1
- package/dist/integrations/platform/connect/routes.d.ts +1 -1
- package/dist/integrations/platform/connect/routes.d.ts.map +1 -1
- package/dist/integrations/platform/connect/routes.js.map +1 -1
- package/dist/integrations/platform/github/integration.d.ts.map +1 -1
- package/dist/integrations/platform/github/integration.js +27 -1
- package/dist/integrations/platform/github/integration.js.map +1 -1
- package/dist/integrations/platform/incidentio/integration.d.ts +1 -1
- package/dist/integrations/platform/incidentio/integration.d.ts.map +1 -1
- package/dist/integrations/platform/incidentio/integration.js +1 -0
- package/dist/integrations/platform/incidentio/integration.js.map +1 -1
- package/dist/integrations/platform/jira/integration.d.ts +1 -1
- package/dist/integrations/platform/jira/integration.d.ts.map +1 -1
- package/dist/integrations/platform/jira/integration.js +1 -0
- package/dist/integrations/platform/jira/integration.js.map +1 -1
- package/dist/integrations/platform/linear/event-worker.d.ts +1 -1
- package/dist/integrations/platform/linear/event-worker.d.ts.map +1 -1
- package/dist/integrations/platform/linear/event-worker.js.map +1 -1
- package/dist/integrations/slack/integration.d.ts.map +1 -1
- package/dist/integrations/slack/integration.js +33 -6
- package/dist/integrations/slack/integration.js.map +1 -1
- package/dist/integrations/slack/slack.d.ts +16 -5
- package/dist/integrations/slack/slack.d.ts.map +1 -1
- package/dist/integrations/slack/slack.js +137 -64
- package/dist/integrations/slack/slack.js.map +1 -1
- package/dist/integrations/subscription-session.d.ts +14 -0
- package/dist/integrations/subscription-session.d.ts.map +1 -1
- package/dist/integrations/subscription-session.js +30 -16
- package/dist/integrations/subscription-session.js.map +1 -1
- package/dist/mcp/disconnect.d.ts +10 -0
- package/dist/mcp/disconnect.d.ts.map +1 -0
- package/dist/mcp/disconnect.js +44 -0
- package/dist/mcp/disconnect.js.map +1 -0
- package/dist/mcp/routes.d.ts +46 -0
- package/dist/mcp/routes.d.ts.map +1 -0
- package/dist/mcp/routes.js +243 -0
- package/dist/mcp/routes.js.map +1 -0
- package/dist/provider-display-name.d.ts +2 -0
- package/dist/provider-display-name.d.ts.map +1 -0
- package/dist/provider-display-name.js +16 -0
- package/dist/provider-display-name.js.map +1 -0
- package/dist/review-verdict.d.ts +11 -0
- package/dist/review-verdict.d.ts.map +1 -1
- package/dist/review-verdict.js +16 -1
- package/dist/review-verdict.js.map +1 -1
- package/dist/routes/attention-activity.d.ts.map +1 -1
- package/dist/routes/attention-activity.js +5 -2
- package/dist/routes/attention-activity.js.map +1 -1
- package/dist/routes/attention-providers.d.ts +0 -1
- package/dist/routes/attention-providers.d.ts.map +1 -1
- package/dist/routes/attention-providers.js +5 -6
- package/dist/routes/attention-providers.js.map +1 -1
- package/dist/routes/config.d.ts +44 -5
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +181 -58
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/contracts.d.ts +4 -0
- package/dist/routes/contracts.d.ts.map +1 -1
- package/dist/routes/contracts.js +3 -1
- package/dist/routes/contracts.js.map +1 -1
- package/dist/routes/custom-provider-source.d.ts +8 -0
- package/dist/routes/custom-provider-source.d.ts.map +1 -1
- package/dist/routes/custom-provider-source.js +22 -1
- package/dist/routes/custom-provider-source.js.map +1 -1
- package/dist/routes/oauth.js +1 -1
- package/dist/routes/oauth.js.map +1 -1
- package/dist/routes/projects.d.ts +1 -1
- package/dist/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +1 -1
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/provider-credentials.d.ts +7 -2
- package/dist/routes/provider-credentials.d.ts.map +1 -1
- package/dist/routes/provider-credentials.js +30 -8
- package/dist/routes/provider-credentials.js.map +1 -1
- package/dist/routes/skills.d.ts +2 -4
- package/dist/routes/skills.d.ts.map +1 -1
- package/dist/routes/skills.js +19 -65
- package/dist/routes/skills.js.map +1 -1
- package/dist/routes/source-control-sessions.d.ts +9 -1
- package/dist/routes/source-control-sessions.d.ts.map +1 -1
- package/dist/routes/source-control-sessions.js +131 -7
- package/dist/routes/source-control-sessions.js.map +1 -1
- package/dist/routes/surface.d.ts +3 -2
- package/dist/routes/surface.d.ts.map +1 -1
- package/dist/routes/surface.js +7 -3
- package/dist/routes/surface.js.map +1 -1
- package/dist/routes/work-items.d.ts.map +1 -1
- package/dist/routes/work-items.js +60 -120
- package/dist/routes/work-items.js.map +1 -1
- package/dist/rules/binding-context.js +7 -7
- package/dist/rules/binding-context.js.map +1 -1
- package/dist/rules/dispatch-errors.d.ts.map +1 -1
- package/dist/rules/dispatch-errors.js +12 -0
- package/dist/rules/dispatch-errors.js.map +1 -1
- package/dist/rules/dispatcher.d.ts +8 -1
- package/dist/rules/dispatcher.d.ts.map +1 -1
- package/dist/rules/dispatcher.js +117 -12
- package/dist/rules/dispatcher.js.map +1 -1
- package/dist/rules/processor.d.ts.map +1 -1
- package/dist/rules/processor.js +2 -1
- package/dist/rules/processor.js.map +1 -1
- package/dist/rules/start-coordinator.d.ts +4 -0
- package/dist/rules/start-coordinator.d.ts.map +1 -1
- package/dist/rules/start-coordinator.js +36 -4
- package/dist/rules/start-coordinator.js.map +1 -1
- package/dist/rules/tools.d.ts.map +1 -1
- package/dist/rules/tools.js +82 -3
- package/dist/rules/tools.js.map +1 -1
- package/dist/rules/transition-service.d.ts +17 -0
- package/dist/rules/transition-service.d.ts.map +1 -1
- package/dist/rules/transition-service.js +25 -0
- package/dist/rules/transition-service.js.map +1 -1
- package/dist/rules/types.d.ts +2 -4
- package/dist/rules/types.d.ts.map +1 -1
- package/dist/rules/types.js +1 -4
- package/dist/rules/types.js.map +1 -1
- package/dist/sandbox/local-factory-sandbox.d.ts.map +1 -1
- package/dist/sandbox/local-factory-sandbox.js +1 -0
- package/dist/sandbox/local-factory-sandbox.js.map +1 -1
- package/dist/sandbox/session-retirement.d.ts +27 -3
- package/dist/sandbox/session-retirement.d.ts.map +1 -1
- package/dist/sandbox/session-retirement.js +158 -20
- package/dist/sandbox/session-retirement.js.map +1 -1
- package/dist/secret-encryption.d.ts.map +1 -1
- package/dist/secret-encryption.js +65 -25
- package/dist/secret-encryption.js.map +1 -1
- package/dist/session/channel-reply-processor.d.ts +36 -0
- package/dist/session/channel-reply-processor.d.ts.map +1 -0
- package/dist/session/channel-reply-processor.js +46 -0
- package/dist/session/channel-reply-processor.js.map +1 -0
- package/dist/session/channel-session-link-processor.d.ts +39 -0
- package/dist/session/channel-session-link-processor.d.ts.map +1 -0
- package/dist/session/channel-session-link-processor.js +100 -0
- package/dist/session/channel-session-link-processor.js.map +1 -0
- package/dist/session/credential-policy.d.ts +1 -1
- package/dist/session/credential-policy.d.ts.map +1 -1
- package/dist/session/credential-policy.js +7 -6
- package/dist/session/credential-policy.js.map +1 -1
- package/dist/session/default-model-hydration.d.ts +1 -0
- package/dist/session/default-model-hydration.d.ts.map +1 -1
- package/dist/session/default-model-hydration.js +3 -2
- package/dist/session/default-model-hydration.js.map +1 -1
- package/dist/session/environment-state-processor.js +1 -1
- package/dist/session/environment-state-processor.js.map +1 -1
- package/dist/session/factory-session.d.ts +19 -1
- package/dist/session/factory-session.d.ts.map +1 -1
- package/dist/session/factory-session.js +5 -2
- package/dist/session/factory-session.js.map +1 -1
- package/dist/session/filesystem-capture.d.ts +3 -3
- package/dist/session/filesystem-capture.d.ts.map +1 -1
- package/dist/session/filesystem-capture.js +16 -17
- package/dist/session/filesystem-capture.js.map +1 -1
- package/dist/session/first-exec-capture.d.ts +1 -1
- package/dist/session/first-exec-capture.d.ts.map +1 -1
- package/dist/session/first-exec-capture.js +1 -1
- package/dist/session/first-exec-capture.js.map +1 -1
- package/dist/session/first-message-capture.d.ts +1 -1
- package/dist/session/first-message-capture.d.ts.map +1 -1
- package/dist/session/first-message-capture.js +1 -1
- package/dist/session/first-message-capture.js.map +1 -1
- package/dist/session/live-sessions.d.ts +1 -1
- package/dist/session/live-sessions.js +1 -1
- package/dist/session/live-sessions.js.map +1 -1
- package/dist/session/memory-settings-hydration.d.ts +1 -1
- package/dist/session/memory-settings-hydration.d.ts.map +1 -1
- package/dist/session/memory-settings-hydration.js +1 -1
- package/dist/session/memory-settings-hydration.js.map +1 -1
- package/dist/session/reply-credential-processor.d.ts +15 -0
- package/dist/session/reply-credential-processor.d.ts.map +1 -0
- package/dist/session/reply-credential-processor.js +38 -0
- package/dist/session/reply-credential-processor.js.map +1 -0
- package/dist/session/resource-migration.d.ts +87 -0
- package/dist/session/resource-migration.d.ts.map +1 -0
- package/dist/session/resource-migration.js +163 -0
- package/dist/session/resource-migration.js.map +1 -0
- package/dist/session/run-audit.d.ts +24 -0
- package/dist/session/run-audit.d.ts.map +1 -1
- package/dist/session/run-audit.js +93 -7
- package/dist/session/run-audit.js.map +1 -1
- package/dist/session/session-threads.d.ts +49 -0
- package/dist/session/session-threads.d.ts.map +1 -0
- package/dist/session/session-threads.js +70 -0
- package/dist/session/session-threads.js.map +1 -0
- package/dist/session/source-control-tools.d.ts +19 -1
- package/dist/session/source-control-tools.d.ts.map +1 -1
- package/dist/session/source-control-tools.js +78 -11
- package/dist/session/source-control-tools.js.map +1 -1
- package/dist/session/thinking-default.d.ts.map +1 -1
- package/dist/session/thinking-default.js +3 -4
- package/dist/session/thinking-default.js.map +1 -1
- package/dist/session/thread-session-stamp.d.ts +21 -0
- package/dist/session/thread-session-stamp.d.ts.map +1 -0
- package/dist/session/thread-session-stamp.js +20 -0
- package/dist/session/thread-session-stamp.js.map +1 -0
- package/dist/session/thread-title-mirror.d.ts +1 -1
- package/dist/session/thread-title-mirror.d.ts.map +1 -1
- package/dist/session/thread-title-mirror.js +1 -1
- package/dist/session/thread-title-mirror.js.map +1 -1
- package/dist/session/work-item-repository.d.ts +1 -1
- package/dist/session/work-item-repository.d.ts.map +1 -1
- package/dist/session/work-item-repository.js.map +1 -1
- package/dist/skills/service.d.ts +6 -8
- package/dist/skills/service.d.ts.map +1 -1
- package/dist/skills/service.js +3 -3
- package/dist/skills/service.js.map +1 -1
- package/dist/storage/domains/audit/agent-audit.d.ts.map +1 -1
- package/dist/storage/domains/audit/agent-audit.js +2 -2
- package/dist/storage/domains/audit/agent-audit.js.map +1 -1
- package/dist/storage/domains/audit/domain.js +1 -1
- package/dist/storage/domains/filesystem/base.d.ts +4 -0
- package/dist/storage/domains/filesystem/base.d.ts.map +1 -1
- package/dist/storage/domains/filesystem/base.js +5 -0
- package/dist/storage/domains/filesystem/base.js.map +1 -1
- package/dist/storage/domains/integrations/base.d.ts +8 -0
- package/dist/storage/domains/integrations/base.d.ts.map +1 -1
- package/dist/storage/domains/integrations/base.js +7 -0
- package/dist/storage/domains/integrations/base.js.map +1 -1
- package/dist/storage/domains/projects/base.d.ts +6 -0
- package/dist/storage/domains/projects/base.d.ts.map +1 -1
- package/dist/storage/domains/projects/base.js +12 -0
- package/dist/storage/domains/projects/base.js.map +1 -1
- package/dist/storage/domains/source-control/base.d.ts +28 -0
- package/dist/storage/domains/source-control/base.d.ts.map +1 -1
- package/dist/storage/domains/source-control/base.js +48 -0
- package/dist/storage/domains/source-control/base.js.map +1 -1
- package/dist/storage/domains/source-control/inmemory.d.ts +8 -0
- package/dist/storage/domains/source-control/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/source-control/inmemory.js +13 -1
- package/dist/storage/domains/source-control/inmemory.js.map +1 -1
- package/dist/storage/domains/work-items/base.d.ts +79 -7
- package/dist/storage/domains/work-items/base.d.ts.map +1 -1
- package/dist/storage/domains/work-items/base.js +172 -30
- package/dist/storage/domains/work-items/base.js.map +1 -1
- package/dist/timing.d.ts +23 -0
- package/dist/timing.d.ts.map +1 -1
- package/dist/timing.js +85 -6
- package/dist/timing.js.map +1 -1
- package/dist/tools/annotations.d.ts +7 -0
- package/dist/tools/annotations.d.ts.map +1 -0
- package/dist/tools/annotations.js +102 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/approval-tools.d.ts +15 -0
- package/dist/tools/approval-tools.d.ts.map +1 -0
- package/dist/tools/approval-tools.js +79 -0
- package/dist/tools/approval-tools.js.map +1 -0
- package/dist/tools/deliver.d.ts +71 -0
- package/dist/tools/deliver.d.ts.map +1 -0
- package/dist/tools/deliver.js +129 -0
- package/dist/tools/deliver.js.map +1 -0
- package/dist/tools/index.d.ts +30 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +36 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/messaging-tools.d.ts +28 -0
- package/dist/tools/messaging-tools.d.ts.map +1 -0
- package/dist/tools/messaging-tools.js +396 -0
- package/dist/tools/messaging-tools.js.map +1 -0
- package/dist/tools/permissions.d.ts +31 -0
- package/dist/tools/permissions.d.ts.map +1 -0
- package/dist/tools/permissions.js +48 -0
- package/dist/tools/permissions.js.map +1 -0
- package/dist/tools/read-tools.d.ts +30 -0
- package/dist/tools/read-tools.d.ts.map +1 -0
- package/dist/tools/read-tools.js +293 -0
- package/dist/tools/read-tools.js.map +1 -0
- package/dist/tools/reports.d.ts +174 -0
- package/dist/tools/reports.d.ts.map +1 -0
- package/dist/tools/reports.js +380 -0
- package/dist/tools/reports.js.map +1 -0
- package/dist/tools/run-watch.d.ts +46 -0
- package/dist/tools/run-watch.d.ts.map +1 -0
- package/dist/tools/run-watch.js +102 -0
- package/dist/tools/run-watch.js.map +1 -0
- package/dist/tools/scope.d.ts +54 -0
- package/dist/tools/scope.d.ts.map +1 -0
- package/dist/tools/scope.js +87 -0
- package/dist/tools/scope.js.map +1 -0
- package/dist/tools/session-tools.d.ts +43 -0
- package/dist/tools/session-tools.d.ts.map +1 -0
- package/dist/tools/session-tools.js +410 -0
- package/dist/tools/session-tools.js.map +1 -0
- package/dist/tools/sessions-state-processor.d.ts +41 -0
- package/dist/tools/sessions-state-processor.d.ts.map +1 -0
- package/dist/tools/sessions-state-processor.js +190 -0
- package/dist/tools/sessions-state-processor.js.map +1 -0
- package/dist/tools/side-sessions.d.ts +53 -0
- package/dist/tools/side-sessions.d.ts.map +1 -0
- package/dist/tools/side-sessions.js +83 -0
- package/dist/tools/side-sessions.js.map +1 -0
- package/dist/tools/work-item-tools.d.ts +28 -0
- package/dist/tools/work-item-tools.d.ts.map +1 -0
- package/dist/tools/work-item-tools.js +342 -0
- package/dist/tools/work-item-tools.js.map +1 -0
- package/dist/work-items/create-work-item.d.ts +55 -0
- package/dist/work-items/create-work-item.d.ts.map +1 -0
- package/dist/work-items/create-work-item.js +101 -0
- package/dist/work-items/create-work-item.js.map +1 -0
- package/dist/work-items/decision-actions.d.ts +42 -0
- package/dist/work-items/decision-actions.d.ts.map +1 -0
- package/dist/work-items/decision-actions.js +70 -0
- package/dist/work-items/decision-actions.js.map +1 -0
- package/dist/workspace.d.ts +1 -1
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +15 -7
- package/dist/workspace.js.map +1 -1
- package/factory-skills/factory-gitlab-rereview/SKILL.md +1 -1
- package/factory-skills/factory-gitlab-review/SKILL.md +1 -1
- package/factory-skills/factory-plan/SKILL.md +4 -4
- package/factory-skills/factory-rereview/SKILL.md +3 -1
- package/factory-skills/factory-review/SKILL.md +3 -1
- package/factory-skills/factory-self-review/SKILL.md +46 -0
- package/package.json +15 -15
package/dist/rules/dispatcher.js
CHANGED
|
@@ -6,10 +6,10 @@ import "../boards/index.js";
|
|
|
6
6
|
import { FactoryDispatchError, factoryDispatchFailureCode, factoryDispatchFailureMetadata } from "./dispatch-errors.js";
|
|
7
7
|
import { FACTORY_RULE_MATERIALIZATION_KEY, WorkItemClaimConflictError } from "../storage/domains/work-items/base.js";
|
|
8
8
|
import { moveCardToBoard } from "../boards/relocate.js";
|
|
9
|
-
import { isHumanActorId } from "../storage/domains/audit/actors.js";
|
|
10
|
-
import { resolvePromptInvocation, resolveSkillInvocation, resolveSkillResumeInvocation } from "../skills/service.js";
|
|
11
9
|
import { decisionOvertaken } from "./decision-applicability.js";
|
|
12
10
|
import { FACTORY_OPEN_RUN_STALE_MS, heartbeatSessionOpenRun, isOpenRunLiveElsewhere, listSessionOpenRuns, recordSessionRunStart, waitForSessionRunAudit } from "../session/run-audit.js";
|
|
11
|
+
import { isHumanActorId } from "../storage/domains/audit/actors.js";
|
|
12
|
+
import { resolvePromptInvocation, resolveSkillInvocation, resolveSkillResumeInvocation } from "../skills/service.js";
|
|
13
13
|
import { withWorkItemFeed } from "../storage/domains/comments/feed-context.js";
|
|
14
14
|
import { RequestContext } from "@mastra/core/request-context";
|
|
15
15
|
//#region src/rules/dispatcher.ts
|
|
@@ -36,6 +36,29 @@ const STALE_BINDING_TTL_MS = 1440 * 6e4;
|
|
|
36
36
|
const RECONCILE_INTERVAL_MS = 3e4;
|
|
37
37
|
/** The card moved on before this run could act; it settles as superseded, not succeeded. */
|
|
38
38
|
var FactoryDecisionSuperseded = class extends Error {};
|
|
39
|
+
/** A run that ran and ended in error; the session's own listener reports it to followers. */
|
|
40
|
+
var RunEndedInError = class extends FactoryDispatchError {};
|
|
41
|
+
const CREDENTIAL_RESOLUTION_FAILURE = "tenant model credential policy could not be resolved";
|
|
42
|
+
const NO_AUTHENTICATED_USER = "the request has no authenticated user";
|
|
43
|
+
function httpStatus(error) {
|
|
44
|
+
if (!error || typeof error !== "object") return void 0;
|
|
45
|
+
if ("statusCode" in error && typeof error.statusCode === "number") return error.statusCode;
|
|
46
|
+
return "status" in error && typeof error.status === "number" ? error.status : void 0;
|
|
47
|
+
}
|
|
48
|
+
function causeOf(error) {
|
|
49
|
+
return error && typeof error === "object" && "cause" in error ? error.cause : void 0;
|
|
50
|
+
}
|
|
51
|
+
function runErrorCode(error, message) {
|
|
52
|
+
const lower = message.toLowerCase();
|
|
53
|
+
if (lower.includes(CREDENTIAL_RESOLUTION_FAILURE)) return lower.includes(NO_AUTHENTICATED_USER) ? "run_user_unauthenticated" : "run_credentials_unavailable";
|
|
54
|
+
const status = httpStatus(error) ?? httpStatus(causeOf(error));
|
|
55
|
+
return status === 401 || status === 403 ? "run_credentials_unavailable" : "run_failed";
|
|
56
|
+
}
|
|
57
|
+
function runErrorFailure(label, error) {
|
|
58
|
+
const cause = (error instanceof Error ? error.message : String(error ?? "")).trim();
|
|
59
|
+
if (!cause) return new RunEndedInError("run_failed", `${label} ended in error.`);
|
|
60
|
+
return new RunEndedInError(runErrorCode(error, cause), `${label} ended in error: ${cause}`);
|
|
61
|
+
}
|
|
39
62
|
function isTerminalFailure(attempts, failureCode) {
|
|
40
63
|
return attempts >= MAX_ATTEMPTS || !factoryDispatchFailureMetadata(failureCode).canRetry;
|
|
41
64
|
}
|
|
@@ -57,10 +80,12 @@ function watchRun(session, { timeoutMs, approvePlans, onAgentEnd, label, runStil
|
|
|
57
80
|
let supersededAtEnd;
|
|
58
81
|
let parked;
|
|
59
82
|
let omFailure;
|
|
83
|
+
let runError;
|
|
60
84
|
const arm = () => {
|
|
61
85
|
endReason = void 0;
|
|
62
86
|
supersededAtEnd = void 0;
|
|
63
87
|
omFailure = void 0;
|
|
88
|
+
runError = void 0;
|
|
64
89
|
agentEnd = new Promise((resolve) => {
|
|
65
90
|
resolveAgentEnd = resolve;
|
|
66
91
|
});
|
|
@@ -73,6 +98,10 @@ function watchRun(session, { timeoutMs, approvePlans, onAgentEnd, label, runStil
|
|
|
73
98
|
resolveAgentEnd();
|
|
74
99
|
return;
|
|
75
100
|
}
|
|
101
|
+
if (event.type === "error") {
|
|
102
|
+
runError = event.error;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
76
105
|
if (event.type === "om_observation_failed" || event.type === "om_buffering_failed") {
|
|
77
106
|
if (event.error) omFailure = event.error;
|
|
78
107
|
return;
|
|
@@ -100,6 +129,8 @@ function watchRun(session, { timeoutMs, approvePlans, onAgentEnd, label, runStil
|
|
|
100
129
|
wait,
|
|
101
130
|
supersededAtEnd: () => supersededAtEnd,
|
|
102
131
|
endReason: () => endReason,
|
|
132
|
+
/** The tool the run is parked on, when it ended suspended. */
|
|
133
|
+
parked: () => parked,
|
|
103
134
|
close: unsubscribe,
|
|
104
135
|
/** The run's own verdict, thrown as what the dispatcher should record. */
|
|
105
136
|
async settle() {
|
|
@@ -115,7 +146,7 @@ function watchRun(session, { timeoutMs, approvePlans, onAgentEnd, label, runStil
|
|
|
115
146
|
observed = await wait();
|
|
116
147
|
}
|
|
117
148
|
if (!observed) throw new FactoryDispatchError("run_terminal_event_missing", `${label} terminal event was not observed before timeout.`);
|
|
118
|
-
if (endReason === "error") throw
|
|
149
|
+
if (endReason === "error") throw runErrorFailure(label, runError);
|
|
119
150
|
if (endReason === "aborted") {
|
|
120
151
|
if (omFailure) {
|
|
121
152
|
if (isPermanentProviderRejection(omFailure)) throw new FactoryDispatchError("run_configuration_invalid", `${label} was aborted by an observational-memory failure that will not succeed on retry: ${omFailure}`);
|
|
@@ -160,8 +191,20 @@ function factoryRequestContext(input) {
|
|
|
160
191
|
function positiveMs(value, fallback) {
|
|
161
192
|
return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;
|
|
162
193
|
}
|
|
194
|
+
const KEY_SHAPED_TOKEN = /\b(?:sk-[A-Za-z0-9_-]{3,}|gh[pousr]_[A-Za-z0-9]{10,}|github_pat_[A-Za-z0-9_]{10,}|xox[abprs]-[A-Za-z0-9-]{10,})/g;
|
|
195
|
+
function looksLikeSecret(token) {
|
|
196
|
+
return /[A-Z]/.test(token) && /[a-z]/.test(token) && /\d/.test(token) && /[A-Za-z0-9]{16,}/.test(token);
|
|
197
|
+
}
|
|
198
|
+
function redactSecretRun(token) {
|
|
199
|
+
if (looksLikeSecret(token) && !token.split("/").some((piece) => /^[A-Za-z][a-z]+$/.test(piece))) return "[redacted]";
|
|
200
|
+
return token.replace(/[A-Za-z0-9_+=-]{24,}/g, (piece) => looksLikeSecret(piece) || isGroupedKey(piece) ? "[redacted]" : piece);
|
|
201
|
+
}
|
|
202
|
+
function isGroupedKey(token) {
|
|
203
|
+
const groups = token.split(/[-_]/);
|
|
204
|
+
return groups.length >= 4 && groups.every((group) => /[A-Z]/.test(group) && /[a-z]/.test(group) && /\d/.test(group));
|
|
205
|
+
}
|
|
163
206
|
function sanitizeDispatchError(error) {
|
|
164
|
-
return (error instanceof Error ? error.message : String(error)).replace(/\b(?:bearer|token|api[-_ ]?key|authorization)\s*[:=]?\s*[^\s,;]+/gi, "[redacted]").slice(0, MAX_ERROR_LENGTH);
|
|
207
|
+
return (error instanceof Error ? error.message : String(error)).replace(KEY_SHAPED_TOKEN, "[redacted]").replace(/\b[A-Za-z0-9_+=/-]{24,}/g, redactSecretRun).replace(/\b(?:bearer|token|api[-_ ]?key|authorization)\s*[:=]?\s*(?:bearer\s+)?[^\s,;]+/gi, "[redacted]").slice(0, MAX_ERROR_LENGTH);
|
|
165
208
|
}
|
|
166
209
|
function retryAt(now, attempts) {
|
|
167
210
|
return new Date(now.getTime() + Math.min(1e3 * 2 ** Math.max(0, attempts - 1), MAX_BACKOFF_MS));
|
|
@@ -243,6 +286,7 @@ var FactoryDecisionDispatcher = class {
|
|
|
243
286
|
#reconcileToolResults;
|
|
244
287
|
#prepareBinding;
|
|
245
288
|
#primeCredentials;
|
|
289
|
+
#reportRunEnd;
|
|
246
290
|
#feedReader;
|
|
247
291
|
#dismissStaleReviews;
|
|
248
292
|
#resolveLinkedWorkItemParentId;
|
|
@@ -275,6 +319,7 @@ var FactoryDecisionDispatcher = class {
|
|
|
275
319
|
this.#reconcileToolResults = options.reconcileToolResults;
|
|
276
320
|
this.#prepareBinding = options.prepareBinding;
|
|
277
321
|
this.#primeCredentials = options.primeCredentials;
|
|
322
|
+
this.#reportRunEnd = options.reportRunEnd;
|
|
278
323
|
this.#feedReader = options.feedReader;
|
|
279
324
|
this.#dismissStaleReviews = options.dismissStaleReviews;
|
|
280
325
|
this.#resolveLinkedWorkItemParentId = options.resolveLinkedWorkItemParentId;
|
|
@@ -376,7 +421,16 @@ var FactoryDecisionDispatcher = class {
|
|
|
376
421
|
try {
|
|
377
422
|
const revoked = await this.#storage.revokeStaleRunBindings({
|
|
378
423
|
olderThan: new Date(now.getTime() - this.#staleBindingTtlMs),
|
|
379
|
-
now
|
|
424
|
+
now,
|
|
425
|
+
keep: async (binding) => {
|
|
426
|
+
try {
|
|
427
|
+
const session = await this.#controller.getSession(binding.sessionId);
|
|
428
|
+
if (session?.thread.getId() !== binding.threadId) return false;
|
|
429
|
+
return session.suspensions.hasPending() || session.run.isRunning();
|
|
430
|
+
} catch {
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
380
434
|
});
|
|
381
435
|
if (revoked > 0) console.info(`Factory stale-binding sweep revoked ${revoked} binding(s)`);
|
|
382
436
|
} catch (error) {
|
|
@@ -591,14 +645,14 @@ var FactoryDecisionDispatcher = class {
|
|
|
591
645
|
orgId: record.orgId
|
|
592
646
|
});
|
|
593
647
|
const resolved = decision.skillName === void 0 ? await resolvePromptInvocation(this.#controller, {
|
|
594
|
-
|
|
648
|
+
sessionId: binding.sessionId,
|
|
595
649
|
prompt: decision.prompt
|
|
596
650
|
}) : decision.resume === true ? await resolveSkillResumeInvocation(this.#controller, {
|
|
597
|
-
|
|
651
|
+
sessionId: binding.sessionId,
|
|
598
652
|
name: decision.skillName,
|
|
599
653
|
arguments: decision.arguments
|
|
600
654
|
}) : await resolveSkillInvocation(this.#controller, {
|
|
601
|
-
|
|
655
|
+
sessionId: binding.sessionId,
|
|
602
656
|
name: decision.skillName,
|
|
603
657
|
arguments: decision.arguments
|
|
604
658
|
});
|
|
@@ -654,6 +708,7 @@ var FactoryDecisionDispatcher = class {
|
|
|
654
708
|
}));
|
|
655
709
|
if (await kickoffStale()) throw new FactoryDecisionSuperseded();
|
|
656
710
|
}
|
|
711
|
+
const since = /* @__PURE__ */ new Date();
|
|
657
712
|
const run = watchRun(session, {
|
|
658
713
|
timeoutMs: this.#skillCompletionObservationTimeoutMs,
|
|
659
714
|
approvePlans: await this.#plansAreAutoApproved(record),
|
|
@@ -686,7 +741,13 @@ var FactoryDecisionDispatcher = class {
|
|
|
686
741
|
}
|
|
687
742
|
await this.#recordRunStart(session, binding, deliveryId, record.approvedBy ?? void 0, run.endReason, item?.title);
|
|
688
743
|
try {
|
|
689
|
-
await this.#
|
|
744
|
+
await this.#reportingRunEnd({
|
|
745
|
+
binding,
|
|
746
|
+
startedBy,
|
|
747
|
+
since,
|
|
748
|
+
attempts: record.attempts,
|
|
749
|
+
superseded: async () => await run.supersededAtEnd() ?? await this.#roleSuperseded(record, decision.role)
|
|
750
|
+
}, () => this.#withOpenRunHeartbeat(session, deliveryId, () => run.settle()));
|
|
690
751
|
} catch (error) {
|
|
691
752
|
if (!(await run.supersededAtEnd() ?? await this.#roleSuperseded(record, decision.role))) throw error;
|
|
692
753
|
}
|
|
@@ -970,7 +1031,7 @@ var FactoryDecisionDispatcher = class {
|
|
|
970
1031
|
async #requireOrPrepareBinding(record, role) {
|
|
971
1032
|
const binding = await this.#findBinding(record, role);
|
|
972
1033
|
if (binding) {
|
|
973
|
-
if (await this.#controller.
|
|
1034
|
+
if (await this.#controller.getSession(binding.sessionId)) return binding;
|
|
974
1035
|
}
|
|
975
1036
|
if (!this.#prepareBinding) throw new FactoryDispatchError("session_unavailable", binding ? "Bound Factory session not found." : `No active Factory binding for role ${role}.`);
|
|
976
1037
|
const item = await this.#requireItem(record);
|
|
@@ -982,7 +1043,7 @@ var FactoryDecisionDispatcher = class {
|
|
|
982
1043
|
return this.#requireBinding(record, role);
|
|
983
1044
|
}
|
|
984
1045
|
async #findSession(binding) {
|
|
985
|
-
const session = await this.#controller.
|
|
1046
|
+
const session = await this.#controller.getSession(binding.sessionId);
|
|
986
1047
|
if (!session) return void 0;
|
|
987
1048
|
await this.#switchThread(session, binding);
|
|
988
1049
|
return session;
|
|
@@ -1045,6 +1106,44 @@ var FactoryDecisionDispatcher = class {
|
|
|
1045
1106
|
clearInterval(timer);
|
|
1046
1107
|
}
|
|
1047
1108
|
}
|
|
1109
|
+
/**
|
|
1110
|
+
* Settle a watched run; when it fails terminally, tell the item's followers.
|
|
1111
|
+
* A retryable failure says nothing, since the retry reports. How a run that
|
|
1112
|
+
* ran ends (done, blocked, an error) is reported by the session's own
|
|
1113
|
+
* listener; this covers failures no run end shows. The reporter skips
|
|
1114
|
+
* recipients that already have a final report from this run, and never
|
|
1115
|
+
* throws, so reporting can't change the decision's outcome.
|
|
1116
|
+
*/
|
|
1117
|
+
async #reportingRunEnd({ binding, startedBy, since, attempts, superseded }, settle) {
|
|
1118
|
+
try {
|
|
1119
|
+
await settle();
|
|
1120
|
+
} catch (error) {
|
|
1121
|
+
const reportRunEnd = this.#reportRunEnd;
|
|
1122
|
+
if (reportRunEnd && !(error instanceof RunEndedInError) && !(error instanceof FactoryDecisionSuperseded) && !await superseded?.()) {
|
|
1123
|
+
const failureCode = factoryDispatchFailureCode(error);
|
|
1124
|
+
if (isTerminalFailure(attempts, failureCode)) reportRunEnd({
|
|
1125
|
+
orgId: binding.orgId,
|
|
1126
|
+
factoryProjectId: binding.factoryProjectId,
|
|
1127
|
+
workItemId: binding.workItemId,
|
|
1128
|
+
role: binding.role,
|
|
1129
|
+
sender: {
|
|
1130
|
+
sessionId: binding.sessionId,
|
|
1131
|
+
threadId: binding.threadId,
|
|
1132
|
+
userId: startedBy
|
|
1133
|
+
},
|
|
1134
|
+
since,
|
|
1135
|
+
outcome: {
|
|
1136
|
+
status: "failed",
|
|
1137
|
+
failureCode,
|
|
1138
|
+
reason: sanitizeDispatchError(error)
|
|
1139
|
+
}
|
|
1140
|
+
}).catch((reportError) => {
|
|
1141
|
+
console.warn(`[factory] run-end report failed for binding ${binding.id}:`, reportError);
|
|
1142
|
+
});
|
|
1143
|
+
}
|
|
1144
|
+
throw error;
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1048
1147
|
async #recordRunStart(session, binding, kickoffId, approvedBy, observedEnd, workItemName) {
|
|
1049
1148
|
if (!this.#audit) return;
|
|
1050
1149
|
const humanApproved = isHumanActorId(approvedBy);
|
|
@@ -1092,6 +1191,7 @@ var FactoryDecisionDispatcher = class {
|
|
|
1092
1191
|
userId: startedBy,
|
|
1093
1192
|
orgId: record.orgId
|
|
1094
1193
|
});
|
|
1194
|
+
const since = /* @__PURE__ */ new Date();
|
|
1095
1195
|
const run = watchRun(session, {
|
|
1096
1196
|
timeoutMs: this.#skillCompletionObservationTimeoutMs,
|
|
1097
1197
|
approvePlans: await this.#plansAreAutoApproved(record),
|
|
@@ -1121,7 +1221,12 @@ var FactoryDecisionDispatcher = class {
|
|
|
1121
1221
|
settled = await sendKickoff(`factory-kickoff:${record.kickoffKey}:retry:${record.attempts}:${deliveryGeneration}`);
|
|
1122
1222
|
}
|
|
1123
1223
|
await this.#recordRunStart(session, binding, `factory-kickoff:${record.kickoffKey}:${record.attempts}`, startedBy, run.endReason, item?.title);
|
|
1124
|
-
await
|
|
1224
|
+
await this.#reportingRunEnd({
|
|
1225
|
+
binding,
|
|
1226
|
+
startedBy,
|
|
1227
|
+
since,
|
|
1228
|
+
attempts: record.attempts
|
|
1229
|
+
}, () => run.settle());
|
|
1125
1230
|
} finally {
|
|
1126
1231
|
run.close();
|
|
1127
1232
|
}
|