@vercel/factory 0.0.14 → 0.0.16
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/CHANGELOG.md +356 -0
- package/README.md +96 -2
- package/dist/agent-routes.d.mts +113 -0
- package/dist/agent-routes.mjs +91 -0
- package/dist/agent-routes.mjs.map +1 -0
- package/dist/api-contracts.d.mts +1768 -0
- package/dist/api-contracts.mjs +119 -0
- package/dist/api-contracts.mjs.map +1 -0
- package/dist/api-images.d.mts +30 -0
- package/dist/api-images.mjs +28 -0
- package/dist/api-images.mjs.map +1 -0
- package/dist/api-task-graph.mjs +57 -0
- package/dist/api-task-graph.mjs.map +1 -0
- package/dist/api.d.mts +111 -216
- package/dist/api.mjs +1063 -99
- package/dist/api.mjs.map +1 -1
- package/dist/approval-access.d.mts +39 -0
- package/dist/approval-access.mjs +62 -0
- package/dist/approval-access.mjs.map +1 -0
- package/dist/approval-contracts.d.mts +698 -0
- package/dist/approval-contracts.mjs +27 -0
- package/dist/approval-contracts.mjs.map +1 -0
- package/dist/approval.d.mts +49 -0
- package/dist/approval.mjs +39 -0
- package/dist/approval.mjs.map +1 -0
- package/dist/blob/artifacts.d.mts +37 -0
- package/dist/blob/artifacts.mjs +45 -0
- package/dist/blob/artifacts.mjs.map +1 -0
- package/dist/blob/index.d.mts +84 -12
- package/dist/blob/index.mjs +179 -45
- package/dist/blob/index.mjs.map +1 -1
- package/dist/budget.d.mts +115 -0
- package/dist/budget.mjs +147 -0
- package/dist/budget.mjs.map +1 -0
- package/dist/budgets.d.mts +4 -0
- package/dist/budgets.mjs +4 -0
- package/dist/build-factory.d.mts +7 -4
- package/dist/build-factory.mjs +2 -1
- package/dist/build-factory.mjs.map +1 -1
- package/dist/change-verification/brief.d.mts +9 -0
- package/dist/change-verification/brief.mjs +13 -0
- package/dist/change-verification/brief.mjs.map +1 -0
- package/dist/change-verification/dispatch.d.mts +37 -0
- package/dist/change-verification/dispatch.mjs +83 -0
- package/dist/change-verification/dispatch.mjs.map +1 -0
- package/dist/change-verification/eve-tool.d.mts +61 -0
- package/dist/change-verification/eve-tool.mjs +89 -0
- package/dist/change-verification/eve-tool.mjs.map +1 -0
- package/dist/change-verification/result.mjs +130 -0
- package/dist/change-verification/result.mjs.map +1 -0
- package/dist/changes/eve-record-change.d.mts +56 -0
- package/dist/changes/eve-record-change.mjs +131 -0
- package/dist/changes/eve-record-change.mjs.map +1 -0
- package/dist/changes/presentation.d.mts +14 -0
- package/dist/changes.d.mts +24 -0
- package/dist/changes.mjs +29 -0
- package/dist/changes.mjs.map +1 -0
- package/dist/client-events.d.mts +25 -0
- package/dist/client-events.mjs +45 -0
- package/dist/client-events.mjs.map +1 -0
- package/dist/client-stream.d.mts +28 -0
- package/dist/client-stream.mjs +210 -0
- package/dist/client-stream.mjs.map +1 -0
- package/dist/client-transcript.d.mts +41 -0
- package/dist/client-transcript.mjs +233 -0
- package/dist/client-transcript.mjs.map +1 -0
- package/dist/client.d.mts +343 -0
- package/dist/client.mjs +366 -0
- package/dist/client.mjs.map +1 -0
- package/dist/code-review/contracts.d.mts +27 -0
- package/dist/code-review/eve-post-review.d.mts +70 -0
- package/dist/code-review/eve-post-review.mjs +195 -0
- package/dist/code-review/eve-post-review.mjs.map +1 -0
- package/dist/code-review/eve-review-comments.d.mts +75 -0
- package/dist/code-review/eve-review-comments.mjs +193 -0
- package/dist/code-review/eve-review-comments.mjs.map +1 -0
- package/dist/code-review/github-contracts.d.mts +10 -0
- package/dist/code-review/github-reporter.d.mts +46 -0
- package/dist/code-review/github-reporter.mjs +262 -0
- package/dist/code-review/github-reporter.mjs.map +1 -0
- package/dist/code-review/preparation.d.mts +34 -0
- package/dist/code-review/preparation.mjs +23 -0
- package/dist/code-review/preparation.mjs.map +1 -0
- package/dist/code-review/stall.d.mts +17 -0
- package/dist/code-review/stall.mjs +30 -0
- package/dist/code-review/stall.mjs.map +1 -0
- package/dist/code-review.d.mts +7 -0
- package/dist/code-review.mjs +5 -0
- package/dist/communication.d.mts +9 -0
- package/dist/communication.mjs +9 -0
- package/dist/connectors/github.d.mts +26 -0
- package/dist/connectors/github.mjs +55 -0
- package/dist/connectors/github.mjs.map +1 -0
- package/dist/connectors/index.d.mts +35 -3
- package/dist/connectors/index.mjs +3 -52
- package/dist/connectors/index.mjs.map +1 -1
- package/dist/connectors/outbox.d.mts +34 -0
- package/dist/connectors/outbox.mjs +50 -0
- package/dist/connectors/outbox.mjs.map +1 -0
- package/dist/connectors/slack-approval-blocks.mjs +136 -0
- package/dist/connectors/slack-approval-blocks.mjs.map +1 -0
- package/dist/connectors/slack-approvals.d.mts +29 -0
- package/dist/connectors/slack-approvals.mjs +346 -0
- package/dist/connectors/slack-approvals.mjs.map +1 -0
- package/dist/connectors/slack.d.mts +35 -52
- package/dist/connectors/slack.mjs +13 -85
- package/dist/connectors/slack.mjs.map +1 -1
- package/dist/deepsec/eve-tool.d.mts +110 -0
- package/dist/deepsec/eve-tool.mjs +166 -0
- package/dist/deepsec/eve-tool.mjs.map +1 -0
- package/dist/deepsec/finding.d.mts +84 -0
- package/dist/deepsec/finding.mjs +56 -0
- package/dist/deepsec/finding.mjs.map +1 -0
- package/dist/deepsec.d.mts +3 -0
- package/dist/delivery-metrics/metrics.d.mts +93 -0
- package/dist/delivery-metrics/metrics.mjs +200 -0
- package/dist/delivery-metrics/metrics.mjs.map +1 -0
- package/dist/delivery-metrics.d.mts +2 -0
- package/dist/delivery-metrics.mjs +2 -0
- package/dist/dispatch.d.mts +152 -0
- package/dist/dispatch.mjs +199 -0
- package/dist/dispatch.mjs.map +1 -0
- package/dist/errors.d.mts +15 -0
- package/dist/errors.mjs +38 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/eve/index.d.mts +209 -1277
- package/dist/eve/index.mjs +312 -1073
- package/dist/eve/index.mjs.map +1 -1
- package/dist/eve/invoke.d.mts +144 -0
- package/dist/eve/invoke.mjs +254 -0
- package/dist/eve/invoke.mjs.map +1 -0
- package/dist/eve/session-client.d.mts +186 -0
- package/dist/eve/session-client.mjs +245 -0
- package/dist/eve/session-client.mjs.map +1 -0
- package/dist/eve/task-execution.d.mts +380 -0
- package/dist/eve/task-execution.mjs +73 -0
- package/dist/eve/task-execution.mjs.map +1 -0
- package/dist/eve/task-session.d.mts +129 -0
- package/dist/eve/task-session.mjs +245 -0
- package/dist/eve/task-session.mjs.map +1 -0
- package/dist/eve/transcript.d.mts +37 -0
- package/dist/eve/transcript.mjs +69 -0
- package/dist/eve/transcript.mjs.map +1 -0
- package/dist/execution-public.d.mts +8 -0
- package/dist/execution-public.mjs +7 -0
- package/dist/execution.d.mts +183 -0
- package/dist/execution.mjs +223 -0
- package/dist/execution.mjs.map +1 -0
- package/dist/finding-remediation/admission.d.mts +53 -0
- package/dist/finding-remediation/admission.mjs +90 -0
- package/dist/finding-remediation/admission.mjs.map +1 -0
- package/dist/finding-remediation/brief.d.mts +14 -0
- package/dist/finding-remediation/brief.mjs +25 -0
- package/dist/finding-remediation/brief.mjs.map +1 -0
- package/dist/finding-remediation/eve-tool.d.mts +29 -0
- package/dist/finding-remediation/eve-tool.mjs +34 -0
- package/dist/finding-remediation/eve-tool.mjs.map +1 -0
- package/dist/findings/fingerprint.d.mts +14 -0
- package/dist/findings/fingerprint.mjs +28 -0
- package/dist/findings/fingerprint.mjs.map +1 -0
- package/dist/findings.d.mts +7 -0
- package/dist/findings.mjs +6 -0
- package/dist/github-app.d.mts +54 -0
- package/dist/github-app.mjs +121 -0
- package/dist/github-app.mjs.map +1 -0
- package/dist/github-publication.d.mts +199 -0
- package/dist/github-publication.mjs +442 -0
- package/dist/github-publication.mjs.map +1 -0
- package/dist/github-transfer.d.mts +81 -0
- package/dist/github-transfer.mjs +273 -0
- package/dist/github-transfer.mjs.map +1 -0
- package/dist/github.d.mts +446 -2
- package/dist/github.mjs +357 -56
- package/dist/github.mjs.map +1 -1
- package/dist/image-input.d.mts +51 -0
- package/dist/image-input.mjs +63 -0
- package/dist/image-input.mjs.map +1 -0
- package/dist/inbox-activity.d.mts +53 -0
- package/dist/inbox-activity.mjs +41 -0
- package/dist/inbox-activity.mjs.map +1 -0
- package/dist/index.d.mts +16 -484
- package/dist/index.mjs +15 -522
- package/dist/intake-contracts.d.mts +55 -0
- package/dist/intake-contracts.mjs +33 -0
- package/dist/intake-contracts.mjs.map +1 -0
- package/dist/integrations/deepsec.d.mts +5 -0
- package/dist/integrations/deepsec.mjs +3 -0
- package/dist/integrations/github.d.mts +11 -0
- package/dist/integrations/github.mjs +9 -0
- package/dist/integrations/slack.d.mts +5 -0
- package/dist/integrations/slack.mjs +5 -0
- package/dist/integrations/vercel.d.mts +5 -0
- package/dist/integrations/vercel.mjs +4 -0
- package/dist/merge-resolution/contracts.d.mts +17 -0
- package/dist/merge-resolution/contracts.mjs +19 -0
- package/dist/merge-resolution/contracts.mjs.map +1 -0
- package/dist/merge-resolution/eve-tools.d.mts +47 -0
- package/dist/merge-resolution/eve-tools.mjs +122 -0
- package/dist/merge-resolution/eve-tools.mjs.map +1 -0
- package/dist/model-settings.d.mts +41 -0
- package/dist/model-settings.mjs +35 -0
- package/dist/model-settings.mjs.map +1 -0
- package/dist/multi-repository-changes/coordination.d.mts +49 -0
- package/dist/multi-repository-changes/coordination.mjs +115 -0
- package/dist/multi-repository-changes/coordination.mjs.map +1 -0
- package/dist/planning/cancellation.mjs +82 -0
- package/dist/planning/cancellation.mjs.map +1 -0
- package/dist/planning/configuration.d.mts +23 -0
- package/dist/planning/configuration.mjs +56 -0
- package/dist/planning/configuration.mjs.map +1 -0
- package/dist/planning/contracts.d.mts +136 -0
- package/dist/planning/contracts.mjs +42 -0
- package/dist/planning/contracts.mjs.map +1 -0
- package/dist/planning/dependencies.mjs +44 -0
- package/dist/planning/dependencies.mjs.map +1 -0
- package/dist/planning/effects.mjs +122 -0
- package/dist/planning/effects.mjs.map +1 -0
- package/dist/planning/reconcile.mjs +279 -0
- package/dist/planning/reconcile.mjs.map +1 -0
- package/dist/planning/runtime.d.mts +27 -0
- package/dist/planning/runtime.mjs +25 -0
- package/dist/planning/runtime.mjs.map +1 -0
- package/dist/planning/state.mjs +92 -0
- package/dist/planning/state.mjs.map +1 -0
- package/dist/planning/turns.mjs +262 -0
- package/dist/planning/turns.mjs.map +1 -0
- package/dist/planning/validation.mjs +106 -0
- package/dist/planning/validation.mjs.map +1 -0
- package/dist/postgres/index.d.mts +48 -1
- package/dist/postgres/index.mjs +45 -3
- package/dist/postgres/index.mjs.map +1 -1
- package/dist/presets/software-development/approval.d.mts +14 -0
- package/dist/presets/software-development/approval.mjs +21 -0
- package/dist/presets/software-development/approval.mjs.map +1 -0
- package/dist/presets/software-development/deepsec-brief.d.mts +8 -0
- package/dist/presets/software-development/deepsec-brief.mjs +14 -0
- package/dist/presets/software-development/deepsec-brief.mjs.map +1 -0
- package/dist/presets/software-development/dispatch.d.mts +56 -0
- package/dist/presets/software-development/dispatch.mjs +67 -0
- package/dist/presets/software-development/dispatch.mjs.map +1 -0
- package/dist/presets/software-development/eve-delegation-policy.d.mts +7 -0
- package/dist/presets/software-development/eve-delegation-policy.mjs +34 -0
- package/dist/presets/software-development/eve-delegation-policy.mjs.map +1 -0
- package/dist/presets/software-development/eve.d.mts +18 -0
- package/dist/presets/software-development/eve.mjs +19 -0
- package/dist/presets/software-development/eve.mjs.map +1 -0
- package/dist/presets/software-development/finish-task-policy.d.mts +7 -0
- package/dist/presets/software-development/finish-task-policy.mjs +9 -0
- package/dist/presets/software-development/finish-task-policy.mjs.map +1 -0
- package/dist/presets/software-development/recovery.d.mts +32 -0
- package/dist/presets/software-development/recovery.mjs +120 -0
- package/dist/presets/software-development/recovery.mjs.map +1 -0
- package/dist/presets/software-development/task-communication.d.mts +24 -0
- package/dist/presets/software-development/task-communication.mjs +157 -0
- package/dist/presets/software-development/task-communication.mjs.map +1 -0
- package/dist/presets/software-development.d.mts +10 -0
- package/dist/presets/software-development.mjs +9 -0
- package/dist/pull-requests/contracts.d.mts +72 -0
- package/dist/pull-requests/eve-fetch.d.mts +57 -0
- package/dist/pull-requests/eve-fetch.mjs +151 -0
- package/dist/pull-requests/eve-fetch.mjs.map +1 -0
- package/dist/pull-requests/github-label-manager.d.mts +27 -0
- package/dist/pull-requests/github-label-manager.mjs +40 -0
- package/dist/pull-requests/github-label-manager.mjs.map +1 -0
- package/dist/pull-requests/github-publisher.d.mts +67 -0
- package/dist/pull-requests/github-publisher.mjs +405 -0
- package/dist/pull-requests/github-publisher.mjs.map +1 -0
- package/dist/pull-requests.d.mts +6 -0
- package/dist/pull-requests.mjs +4 -0
- package/dist/receipts.d.mts +4 -0
- package/dist/receipts.mjs +3 -0
- package/dist/repositories.d.mts +18 -0
- package/dist/repositories.mjs +33 -0
- package/dist/repositories.mjs.map +1 -0
- package/dist/sandbox/command.d.mts +18 -0
- package/dist/sandbox/execution-abort.d.mts +16 -0
- package/dist/sandbox/execution-abort.mjs +49 -0
- package/dist/sandbox/execution-abort.mjs.map +1 -0
- package/dist/sandbox/execution-environment.d.mts +25 -0
- package/dist/sandbox/execution-run-ledger.d.mts +115 -0
- package/dist/sandbox/execution-run-ledger.mjs +209 -0
- package/dist/sandbox/execution-run-ledger.mjs.map +1 -0
- package/dist/sandbox/execution.d.mts +54 -0
- package/dist/sandbox/execution.mjs +228 -0
- package/dist/sandbox/execution.mjs.map +1 -0
- package/dist/sandbox/harness-runner.d.mts +79 -0
- package/dist/sandbox/harness-runner.mjs +162 -0
- package/dist/sandbox/harness-runner.mjs.map +1 -0
- package/dist/sandbox/index.d.mts +10 -0
- package/dist/sandbox/index.mjs +7 -0
- package/dist/sandbox/task-environment.d.mts +50 -0
- package/dist/sandbox/task-environment.mjs +140 -0
- package/dist/sandbox/task-environment.mjs.map +1 -0
- package/dist/sandbox/workspace.d.mts +29 -0
- package/dist/sandbox/workspace.mjs +28 -0
- package/dist/sandbox/workspace.mjs.map +1 -0
- package/dist/schema/agent-route.d.mts +40 -0
- package/dist/schema/agent-route.mjs +33 -0
- package/dist/schema/agent-route.mjs.map +1 -0
- package/dist/schema/answer.d.mts +23 -0
- package/dist/schema/answer.mjs +21 -0
- package/dist/schema/answer.mjs.map +1 -0
- package/dist/schema/budget.d.mts +38 -0
- package/dist/schema/budget.mjs +30 -0
- package/dist/schema/budget.mjs.map +1 -0
- package/dist/schema/catalog.mjs +72 -0
- package/dist/schema/catalog.mjs.map +1 -0
- package/dist/schema/change.d.mts +117 -0
- package/dist/schema/change.mjs +68 -0
- package/dist/schema/change.mjs.map +1 -0
- package/dist/schema/common.d.mts +33 -0
- package/dist/{id-BLIkCVue.mjs → schema/common.mjs} +7 -16
- package/dist/schema/common.mjs.map +1 -0
- package/dist/schema/communication.d.mts +52 -0
- package/dist/{communication-Kd9nU5RP.mjs → schema/communication.mjs} +8 -3
- package/dist/schema/communication.mjs.map +1 -0
- package/dist/schema/execution.d.mts +101 -0
- package/dist/schema/execution.mjs +86 -0
- package/dist/schema/execution.mjs.map +1 -0
- package/dist/schema/factory-config.d.mts +122 -0
- package/dist/schema/factory-config.mjs +90 -0
- package/dist/schema/factory-config.mjs.map +1 -0
- package/dist/schema/finding.d.mts +125 -0
- package/dist/schema/finding.mjs +67 -0
- package/dist/schema/finding.mjs.map +1 -0
- package/dist/schema/id.d.mts +43 -0
- package/dist/schema/id.mjs +32 -0
- package/dist/schema/id.mjs.map +1 -0
- package/dist/schema/outbox.d.mts +240 -0
- package/dist/schema/outbox.mjs +53 -0
- package/dist/schema/outbox.mjs.map +1 -0
- package/dist/schema/question-route.mjs +16 -0
- package/dist/schema/question-route.mjs.map +1 -0
- package/dist/schema/receipt.d.mts +81 -0
- package/dist/schema/receipt.mjs +94 -0
- package/dist/schema/receipt.mjs.map +1 -0
- package/dist/schema/repository.d.mts +30 -0
- package/dist/schema/repository.mjs +29 -0
- package/dist/schema/repository.mjs.map +1 -0
- package/dist/schema/session.d.mts +136 -0
- package/dist/schema/session.mjs +54 -0
- package/dist/schema/session.mjs.map +1 -0
- package/dist/schema/signal.d.mts +105 -0
- package/dist/schema/signal.mjs +81 -0
- package/dist/schema/signal.mjs.map +1 -0
- package/dist/schema/slack-pr-notifications.d.mts +12 -0
- package/dist/schema/slack-pr-notifications.mjs +11 -0
- package/dist/schema/slack-pr-notifications.mjs.map +1 -0
- package/dist/schema/stored-session.mjs +10 -0
- package/dist/schema/stored-session.mjs.map +1 -0
- package/dist/schema/stored-task.mjs +20 -0
- package/dist/schema/stored-task.mjs.map +1 -0
- package/dist/schema/task-effect.d.mts +39 -0
- package/dist/schema/task-effect.mjs +29 -0
- package/dist/schema/task-effect.mjs.map +1 -0
- package/dist/schema/task-graph.d.mts +3173 -0
- package/dist/schema/task-graph.mjs +97 -0
- package/dist/schema/task-graph.mjs.map +1 -0
- package/dist/schema/task-message.d.mts +254 -0
- package/dist/schema/task-message.mjs +189 -0
- package/dist/schema/task-message.mjs.map +1 -0
- package/dist/schema/task.d.mts +273 -0
- package/dist/schema/task.mjs +200 -0
- package/dist/schema/task.mjs.map +1 -0
- package/dist/schema/transcript.d.mts +176 -0
- package/dist/schema/transcript.mjs +87 -0
- package/dist/schema/transcript.mjs.map +1 -0
- package/dist/schema/transitions.d.mts +50 -0
- package/dist/schema/transitions.mjs +303 -0
- package/dist/schema/transitions.mjs.map +1 -0
- package/dist/schema/work.d.mts +150 -0
- package/dist/schema/work.mjs +102 -0
- package/dist/schema/work.mjs.map +1 -0
- package/dist/session-previews.d.mts +76 -0
- package/dist/session-previews.mjs +55 -0
- package/dist/session-previews.mjs.map +1 -0
- package/dist/session-review.d.mts +120 -0
- package/dist/session-review.mjs +79 -0
- package/dist/session-review.mjs.map +1 -0
- package/dist/signal-triage.d.mts +20 -0
- package/dist/signal-triage.mjs +85 -0
- package/dist/signal-triage.mjs.map +1 -0
- package/dist/signals.d.mts +20 -0
- package/dist/signals.mjs +19 -0
- package/dist/signals.mjs.map +1 -0
- package/dist/stall.d.mts +41 -0
- package/dist/stall.mjs +83 -0
- package/dist/stall.mjs.map +1 -0
- package/dist/storage.d.mts +4 -0
- package/dist/storage.mjs +4 -0
- package/dist/store/driver.d.mts +65 -0
- package/dist/store/driver.mjs +42 -0
- package/dist/store/driver.mjs.map +1 -0
- package/dist/store/engine.d.mts +683 -0
- package/dist/store/engine.mjs +2309 -0
- package/dist/store/engine.mjs.map +1 -0
- package/dist/store/memory.d.mts +24 -0
- package/dist/store/memory.mjs +69 -0
- package/dist/store/memory.mjs.map +1 -0
- package/dist/store/slack-pr-notifications.d.mts +44 -0
- package/dist/store/slack-pr-notifications.mjs +121 -0
- package/dist/store/slack-pr-notifications.mjs.map +1 -0
- package/dist/store/task-effects.d.mts +38 -0
- package/dist/store/task-effects.mjs +118 -0
- package/dist/store/task-effects.mjs.map +1 -0
- package/dist/store/task-graphs.d.mts +60 -0
- package/dist/store/task-graphs.mjs +212 -0
- package/dist/store/task-graphs.mjs.map +1 -0
- package/dist/store/task-messages.d.mts +136 -0
- package/dist/store/task-messages.mjs +475 -0
- package/dist/store/task-messages.mjs.map +1 -0
- package/dist/store/task-work.d.mts +180 -0
- package/dist/store/task-work.mjs +137 -0
- package/dist/store/task-work.mjs.map +1 -0
- package/dist/store/work-notifications.d.mts +19 -0
- package/dist/store/work-notifications.mjs +48 -0
- package/dist/store/work-notifications.mjs.map +1 -0
- package/dist/sweep.d.mts +79 -0
- package/dist/sweep.mjs +171 -0
- package/dist/sweep.mjs.map +1 -0
- package/dist/task-communication.d.mts +35 -0
- package/dist/task-communication.mjs +47 -0
- package/dist/task-communication.mjs.map +1 -0
- package/dist/task-graph-view.d.mts +267 -0
- package/dist/task-graph-view.mjs +17 -0
- package/dist/task-graph-view.mjs.map +1 -0
- package/dist/task-message-processing.d.mts +60 -0
- package/dist/task-message-processing.mjs +200 -0
- package/dist/task-message-processing.mjs.map +1 -0
- package/dist/task-protocols.d.mts +80 -0
- package/dist/task-protocols.mjs +47 -0
- package/dist/task-protocols.mjs.map +1 -0
- package/dist/tasks.d.mts +17 -0
- package/dist/tasks.mjs +17 -0
- package/dist/vercel-git.d.mts +53 -0
- package/dist/vercel-git.mjs +344 -0
- package/dist/vercel-git.mjs.map +1 -0
- package/dist/vercel-github-api.d.mts +103 -0
- package/dist/vercel-github-api.mjs +363 -0
- package/dist/vercel-github-api.mjs.map +1 -0
- package/dist/vercel.d.mts +34 -2
- package/dist/vercel.mjs +49 -3
- package/dist/vercel.mjs.map +1 -1
- package/dist/work-triage/eve-tool.d.mts +29 -0
- package/dist/work-triage/eve-tool.mjs +32 -0
- package/dist/work-triage/eve-tool.mjs.map +1 -0
- package/dist/work-triage/find-existing-work.d.mts +32 -0
- package/dist/work-triage/find-existing-work.mjs +31 -0
- package/dist/work-triage/find-existing-work.mjs.map +1 -0
- package/dist/work-triage/github.d.mts +15 -0
- package/dist/work-triage/github.mjs +14 -0
- package/dist/work-triage/github.mjs.map +1 -0
- package/dist/work-triage.d.mts +4 -0
- package/dist/work-triage.mjs +3 -0
- package/dist/workflows.d.mts +146 -0
- package/dist/workflows.mjs +139 -0
- package/dist/workflows.mjs.map +1 -0
- package/dist/workspace-diff-assembly.d.mts +33 -0
- package/dist/workspace-diff-assembly.mjs +95 -0
- package/dist/workspace-diff-assembly.mjs.map +1 -0
- package/dist/workspace-diff.d.mts +90 -0
- package/dist/workspace-diff.mjs +61 -0
- package/dist/workspace-diff.mjs.map +1 -0
- package/dist/workspace-files-git.d.mts +15 -0
- package/dist/workspace-files-git.mjs +61 -0
- package/dist/workspace-files-git.mjs.map +1 -0
- package/dist/workspace-files.d.mts +107 -0
- package/dist/workspace-files.mjs +74 -0
- package/dist/workspace-files.mjs.map +1 -0
- package/dist/workspace-snapshot.d.mts +26 -0
- package/dist/workspace-snapshot.mjs +80 -0
- package/dist/workspace-snapshot.mjs.map +1 -0
- package/docs/getting-started.md +104 -0
- package/docs/index.md +100 -0
- package/docs/recipes/cancellation.md +215 -0
- package/docs/recipes/custom-workflow.md +153 -0
- package/docs/recipes/dependent-tasks.md +207 -0
- package/docs/recipes/eve-agent.md +277 -0
- package/docs/recipes/human-input.md +204 -0
- package/docs/recipes/persistence-recovery.md +268 -0
- package/docs/recipes/retry-recovery.md +241 -0
- package/docs/recipes/task-messaging.md +215 -0
- package/docs/recipes/typed-eve-result.md +161 -0
- package/docs/runtime-integration.md +137 -0
- package/package.json +142 -46
- package/dist/approval-JX2Px9IC.mjs +0 -132
- package/dist/approval-JX2Px9IC.mjs.map +0 -1
- package/dist/budget-DzSiIA4t.mjs +0 -42
- package/dist/budget-DzSiIA4t.mjs.map +0 -1
- package/dist/change-D2U6v7Ek.mjs +0 -554
- package/dist/change-D2U6v7Ek.mjs.map +0 -1
- package/dist/communication-Kd9nU5RP.mjs.map +0 -1
- package/dist/coordination-Cq08hb1l.mjs +0 -76
- package/dist/coordination-Cq08hb1l.mjs.map +0 -1
- package/dist/dispatch-BaZS3PT8.d.mts +0 -76
- package/dist/driver-BC0Mt5KG.d.mts +0 -34
- package/dist/driver-Bbd25rNM.mjs +0 -23
- package/dist/driver-Bbd25rNM.mjs.map +0 -1
- package/dist/engine-DFHU2Pe-.d.mts +0 -781
- package/dist/engine-WaUM2cGA.mjs +0 -1068
- package/dist/engine-WaUM2cGA.mjs.map +0 -1
- package/dist/factory-config-BoRXOw43.mjs +0 -50
- package/dist/factory-config-BoRXOw43.mjs.map +0 -1
- package/dist/factory-config-D2yU3G0c.d.mts +0 -58
- package/dist/github-C5HNBN6p.d.mts +0 -279
- package/dist/id-BLIkCVue.mjs.map +0 -1
- package/dist/index-Bw6hggoH.d.mts +0 -40
- package/dist/index.mjs.map +0 -1
- package/dist/task-CcOyOJ3k.mjs +0 -154
- package/dist/task-CcOyOJ3k.mjs.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
# @vercel/factory
|
|
2
|
+
|
|
3
|
+
## 0.0.16
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3951f20: Document persistence, dispatch, client-session, and storage-driver behavior at the public API, and
|
|
8
|
+
validate NodeNext, browser bundler, and optional storage declarations from strict clean consumers.
|
|
9
|
+
Classify stale sweep snapshots as changed Tasks and reject invalid Blob retry bounds.
|
|
10
|
+
- 3951f20: Ship and verify runnable consumer recipes for authenticated Eve completion, typed workflow
|
|
11
|
+
results, human input and resumption, dependent agents, local execution, cancellation, hook-driven
|
|
12
|
+
retry recovery, and authenticated Task messaging. Add atomic state-and-execution fences for
|
|
13
|
+
provider-initiated workflow completion.
|
|
14
|
+
- 512d109: Document existing Slack PR settings as covering all Factory-produced PRs, including human-requested work.
|
|
15
|
+
- ad627a9: Allow factories to disable spending gates and budget alerts while retaining reservation, usage and settlement accounting. Disabled reconciliation reports spending with an explicit disabled status.
|
|
16
|
+
- 5831134: Stream Git bundles in bounded binary chunks with digest verification instead of buffering base64 payloads. Keep trusted transfers open through stream consumption and initialize PR checkouts during the ref fetch.
|
|
17
|
+
- 3951f20: Export TaskAttemptConflictError from @vercel/factory/tasks so consumers can identify stale-attempt
|
|
18
|
+
failures with instanceof and inspect the expected and actual attempts.
|
|
19
|
+
- ff268af: Add repository-scoped Vercel-managed GitHub issue reads and initial Git Data/pull-request publication without exposing provider tokens.
|
|
20
|
+
- 8cf7f91: Add optional provider-neutral workspace file browsing with a public client, immutable revisions,
|
|
21
|
+
complete text/image responses, and a configurable committed-Git reader.
|
|
22
|
+
- 3951f20: Document persistence, dispatch, execution, and Eve recovery contracts in the public declarations,
|
|
23
|
+
harden exact-session Eve forwarding and bounded history reads, document Postgres migration
|
|
24
|
+
coordination, and ship a verified Postgres restart-recovery recipe.
|
|
25
|
+
- 4bef24a: Add validated Slack PR notification defaults and durable workspace-scoped overrides with retry-safe settings commands. Preserve human provenance when investigations admit repair work.
|
|
26
|
+
- b630985: Generate concise review summaries from the verdict and inline findings. Require findings for comment and request-changes reviews, support multiline GitHub review comments and suggested edits, and allow callers to suppress the separate finding-summary comment when findings are published inline.
|
|
27
|
+
- 624ad28: Make Slack replies concise with temporary progress, direct chat links, PR cards, and useful completion summaries. Fix session completion parsing and distinguish normal planner continuations from failure retries.
|
|
28
|
+
- ad627a9: Recognize Vercel Blob conditional-operation conflicts as version conflicts so concurrent session catalog writes reread the winning snapshot instead of failing dashboard requests. Preserve ETag fencing and the winning writer's data.
|
|
29
|
+
- 8f3fde0: Let applications validate supported intake sources when operators retry stopped reviews.
|
|
30
|
+
- b1b3f96: Add `POST /api/v1/repositories/:id/security-scan` and a matching `FactoryClient.runSecurityScan`, so an operator can start a deepsec scan without the CLI. The endpoint creates the same `security_scan` task `factory scan` does and returns the already-active scan for a repository instead of queueing a duplicate.
|
|
31
|
+
- 3951f20: Document the operational contracts, defaults, failure semantics, and typed examples for the core
|
|
32
|
+
store, workflow, dispatch, Eve authentication, lifecycle hook, tool, and completion APIs. Compile
|
|
33
|
+
the examples against the built package and enforce their detailed API-reference coverage.
|
|
34
|
+
- 4bc0c79: Fix active conversation messages and provider input replies failing with HTTP 500 because the Eve forwarding helper rejected the API's empty session-endpoint suffix.
|
|
35
|
+
- b2ab6e5: Publish explicitly requested GitHub reviews and reliably report their completion to the original conversation, including Slack threads.
|
|
36
|
+
- cc8c8f0: fix loading saved transcripts that contain timestamps
|
|
37
|
+
- 21e375c: refresh stale active transcripts, stop snapshot reads at their durable boundary, and clear chat activity when turns end or their execution is unavailable.
|
|
38
|
+
- 17a33c8: Keep issue signals pending when delegated Task admission fails, and expose the existing current-execution authorization check for application publication tools.
|
|
39
|
+
- 710e542: Add explicit GitHub credential mode and replaceable Factory commit attribution to the configuration contract.
|
|
40
|
+
- 828c4a8: Add authenticated, paginated PR discussion discovery and threaded replies so review follow-ups can find author feedback without comment IDs. Report published approvals explicitly in the original conversation.
|
|
41
|
+
|
|
42
|
+
Preserve comments and review verdicts when GitHub returns unavailable author or historical commit metadata, while rejecting missing authors for operations that require repository write access. Expose inline-comment account types so applications can distinguish human requests from bot activity.
|
|
43
|
+
|
|
44
|
+
Expose review ownership metadata and opt-in inline reply candidates. Bind delegation to its authenticated Signal attempt, and let applications validate supported intake retries so PR replies retain recoverable admission and human-request provenance.
|
|
45
|
+
|
|
46
|
+
- 1a8935d: Bind change recording and completion replay to the authenticated Task execution and recorded pull request. Recheck publication associations and fence completion against replaced executions.
|
|
47
|
+
- 3e13b63: Identify unresolved-turn questions from the exact completed Eve execution so application recovery can distinguish them from genuine requests for human input. Scope usage deduplication to each session so replacement attempts with repeated turn IDs update cost and progress.
|
|
48
|
+
- e2180ee: Add optional provider-neutral session preview readers and a browser client for preview links, availability, expiry, and practical testing instructions.
|
|
49
|
+
- 1d569c9: Add trusted Vercel-managed Git reads and signed publication with exact leases, authorization fencing, and reconciled commit identity.
|
|
50
|
+
- ab01e5c: Add optional per-agent model catalogs, authorized repository defaults, and persisted model choices for sessions and Tasks.
|
|
51
|
+
- 4677e3e: Add an idempotent GitHub repository label helper and reuse an existing open Task PR when retrying publication after a metadata failure.
|
|
52
|
+
- 4bc0c79: Preserve exact question references and explicit same-factory TUI handoffs, and report missing associations without inventing session links.
|
|
53
|
+
- 91fb6f0: Add an optional provider-neutral external activity reader and public client for operator inboxes, with validated repository scope, source links, evidence, and partial results.
|
|
54
|
+
- 4bef24a: Make operator Slack DMs an explicit opt-in independent of authorization and PR announcements. Keep software task questions in their original conversation unless an additional notification destination is configured.
|
|
55
|
+
- 6e02c7b: Preserve failed verification evidence and recover interrupted completion and result presentation from an immutable attempt-bound report. Recover saved outcomes before Eve lifecycle escalation or retry and before stall replacement. Admit fresh verifiers for authorized producer retries and fence obsolete results.
|
|
56
|
+
- 1e855a9: Preserve producing Task associations when GitHub intake records a PR first, and support repository-scoped Slack PR notification preferences and configuration.
|
|
57
|
+
|
|
58
|
+
Continue explicitly linked PRs without replacing or inventing their original producing Task association.
|
|
59
|
+
|
|
60
|
+
- c38fd24: Reject review check reuse and completion for a different commit so a requested review cannot report results against an older PR head.
|
|
61
|
+
- 17a33c8: Accept opaque session pagination cursors in the shared client so session lists with multiple pages load correctly.
|
|
62
|
+
- 5237246: Add an optional provider-neutral session review reader and browser client for recorded checks,
|
|
63
|
+
screenshots, and unresolved issues, with session access and execution identity checks.
|
|
64
|
+
- 41e7db0: Ship version-matched consumer guides with the package, add a credential-free local Task
|
|
65
|
+
quickstart, and map common integration goals to their canonical imports and declarations.
|
|
66
|
+
- 7294320: preserve transcript event timestamps for compact activity timing in operator clients
|
|
67
|
+
- c107228: Update the supported Eve runtime to 0.57.0.
|
|
68
|
+
- 245c3f7: Correct the local Task README example and verify in CI that its exact code compiles against the
|
|
69
|
+
built public package and completes its parent and worker Tasks at runtime.
|
|
70
|
+
- d90e302: Clarify GitHub suggestion replacement ranges and full-file validation requirements in review tool
|
|
71
|
+
descriptions, with prose-only advice when validation is unavailable or fails.
|
|
72
|
+
|
|
73
|
+
## 0.0.15
|
|
74
|
+
|
|
75
|
+
### Patch Changes
|
|
76
|
+
|
|
77
|
+
- 8d85ea1: Require actionable needs_human reasons, preserve legacy reads and public schema introspection, and recover question delivery and confirmation stamps across interruptions and retries.
|
|
78
|
+
- 09e3fce: Make All work the default operator home page, open it in board view, and expose task graphs as a tab in task conversations.
|
|
79
|
+
- 5c863bd: Prevent oversized receipt summaries from stranding completed tasks between lifecycle transitions.
|
|
80
|
+
- 40aaba6: Expose authorized automatic Tasks as stable operator conversations. Support separately budgeted follow-up investigations after completion, linked specialist work, retained execution history and recovery context, and idempotent follow-up retries in the shared clients.
|
|
81
|
+
- 70c487e: Bound abandoned review-check reconciliation by paging terminal Task candidates before reading their
|
|
82
|
+
code-review effect records, while rotating pages so older unresolved checks remain reachable.
|
|
83
|
+
- e91d987: Configure repository-wide formatting with oxfmt.
|
|
84
|
+
- edcc29d: Replace Task, Change, and session-discovery scans with fixed-shard catalogs, using durable pre-write repair markers so interrupted projections remain visible and heal on read. Reuse one Task snapshot throughout each dispatcher pass, batch pinned-session summaries, and cap overlapping Blob downloads. Avoid scanning all Receipts during browser/TUI polling and current execution checks. Report unexpected API failures with request context, distinguish read recovery from mutation retries, and preserve redacted server exception details in generated factories.
|
|
85
|
+
- 9aabbc7: Classify missing execution output for workflow-owned retry policy and surface failed workflow work in conversation attention without replacing its agent execution.
|
|
86
|
+
- d1548d6: Add a `closePullRequest` GitHub helper that closes an open pull request without merging it.
|
|
87
|
+
- 54932f6: Record the check run a code review opens on its Task, and conclude that run when the review ends without a verdict. A cancelled, superseded, or failed review no longer leaves a check pending on the pull request, including the superseded case whose run sits on a head the pull request has already moved past.
|
|
88
|
+
- d0d9bdd: Remove the obsolete `selectSlackRepository`, `selectSlackRepositories`, and `selectSlackPullRequest` exports from the Slack communication entry point. Slack repository and pull-request selection now belongs to conversational triage, and none of the deterministic text parsers had a remaining production caller.
|
|
89
|
+
- e2ad1a2: Document every public Factory export with a source-level JSDoc summary and enforce complete export-summary coverage in the generated API reference.
|
|
90
|
+
- 4a30ea3: Add validated execution contracts and workflow operations for confirmed-live reattachment, attempt-fenced result inspection and usage, and retryable cancellation. Fence dispatch execution binding and launch-failure recovery against replaced attempts, and surface failed execution binding instead of reporting acceptance.
|
|
91
|
+
|
|
92
|
+
Require adapters to identify ambiguous launch acceptance explicitly, stop launches that lose their Task binding, and record unresolved cost or cancellation discovery without preventing lifecycle transitions or treating unknown cost as zero.
|
|
93
|
+
|
|
94
|
+
- a6c6707: Project retry, failure, cancellation, no-change success, and coordination receipts into the durable communication outbox through each task's original reply destination.
|
|
95
|
+
- de1381e: Expose post-commit work notifications and planner turn-finished wakeups for durable event-driven scheduling. Prevent blocked dependencies from consuming dispatch capacity and preserve factory-wide budget checks when dispatching a single graph.
|
|
96
|
+
- df54728: Expose read-only external conversations through stable session bindings, authorized discovery, original transcripts, and transcript-driven Inbox attention while preserving external reply destinations.
|
|
97
|
+
|
|
98
|
+
Store external projections in separate snapshot and discovery collections so older deployments sharing the store never decode the new session fields.
|
|
99
|
+
|
|
100
|
+
- 44a42ee: Expose reusable repository admission, credential-redacted diagnostics, Eve Task/session and
|
|
101
|
+
transcript integration, GitHub intake, communication, App-token, and bounded publication helpers,
|
|
102
|
+
Vercel Queue and scoped Sandbox credential adapters, and an explicit software-development preset
|
|
103
|
+
over capability-owned operations. Add semantic Eve session bindings and lifecycle operations,
|
|
104
|
+
credential-injected GitHub checkout mechanics, explicit repository metadata admission, and
|
|
105
|
+
software-development preset recovery assembly. Concrete factories retain credential-source,
|
|
106
|
+
repository, routing, prompt, and workflow policy.
|
|
107
|
+
- 70c487e: Expose retry-safe Vercel Sandbox execution and content-addressed Blob artifacts as optional
|
|
108
|
+
capabilities, with application-owned prompt, evidence, pricing, model, and seeding policy. Isolate
|
|
109
|
+
the supplied cross-capability Eve composition under
|
|
110
|
+
`@vercel/factory/presets/software-development`.
|
|
111
|
+
- 47dab70: Add credential-injected GitHub publication clients and pull-request capability helpers for Task-
|
|
112
|
+
and session-owned pull requests, checkpoint recovery, record-change gating, and task-aware labels,
|
|
113
|
+
plus the code-review GitHub reporter. Expose DeepSec normalization and its Eve scanner together at
|
|
114
|
+
the canonical `/integrations/deepsec` provider path.
|
|
115
|
+
- bf91d0e: Add filtered, cursor-paginated session summaries, materialize automatic interactions only for the requested page, and avoid redundant session and receipt reads during listing.
|
|
116
|
+
- beb3995: Add a `find_existing_work` triage tool factory and the GitHub listing helper behind it, so Foreman can detect an open pull request or in-flight change already covering a signal before delegating duplicate work.
|
|
117
|
+
- 54f9675: Keep pending human questions actionable when a conversation selects newer queued work. Resume the answered question's parent, prioritize its dispatch recovery, and keep cancellation scoped to the selected task's own question.
|
|
118
|
+
- 3134944: Distinguish directly startable conversation agents from delegated specialists in the operator API and reject disallowed direct creation before durable writes.
|
|
119
|
+
- 8d85ea1: Fix review follow-ups on the needs_human guarantees: normalize legacy needs_human tasks that predate `needsHumanAction` instead of failing to parse; persist the operator Slack DM intent atomically with the needs_human transition and deliver it from the outbox instead of enqueuing it afterward; retain the full `needsHumanAction` derived from question text and run a QuestionTask's own first transition inside its cleanup path so an oversized question can never orphan it; stop swallowing storage errors when stamping delivery so a failed stamp is retried; guard a parent's delivery stamp by question identity so a stale confirmation can't apply to a superseded question; and have the owner DM point to where an answer is actually accepted instead of accepting inline replies.
|
|
120
|
+
- f1c5ddd: Strengthen public TypeScript construction contracts with typed workflow and message bindings, distinct constrained identifiers, exact agent routes, named operation inputs, readonly caller data, discriminated lifecycle and integration results, and inspectable source-relative declaration files. Bind credentialed review and human-input tools to the authenticated Task, attempt, execution, Change, repository, and pull-request comment scope, and allow one open human question per execution. Migrate every first-party caller to the clearer pre-1.0 API.
|
|
121
|
+
- f5a0cba: Enforce the specialist turn contract and stop the stall watchdog from misreporting superseded work as a stall.
|
|
122
|
+
|
|
123
|
+
- `createFactoryHooks`'s `turn.completed` handler now escalates a bound task straight to `needs_human` when the turn finishes cleanly but nothing was recorded, instead of waiting out the stall window across every replacement attempt.
|
|
124
|
+
- `taskQuestionSchema` gains an optional `closingOptions` list: answering a question with one of these exact replies resolves the parent task instead of requeuing an identical retry.
|
|
125
|
+
- `record_post_review` resolves its own task as superseded when the pull request advanced past the reviewed head, instead of throwing and leaving the task running.
|
|
126
|
+
- `sweepCodeReviewStalls` reports a stalled `code_review` task as superseded when a newer, still-active review task already exists for the same change.
|
|
127
|
+
|
|
128
|
+
- 426155d: Recover explicit Eve execution failures immediately and give each retry a fresh session identity.
|
|
129
|
+
- 9aabbc7: Expose delegated workflow failures independently of pending questions and keep cancellation available after the conversation Task completes.
|
|
130
|
+
- ad27bb3: Persist pre-task Foreman triage attempts and safe failure categories. Expose operator-authorized intake reads and fenced retries, with repository checks and no provider payload disclosure.
|
|
131
|
+
- daa76e5: Keep GitHub credentials in fresh trusted transfer sandboxes, use read-only fetch tokens, and exchange bounded Git bundles with agent workspaces. Bind Task completion, verification, pull-request fetching, and merge-conflict resolution to the authenticated Task attempt and execution, and reject unrelated Change, Signal, or repository associations before provider access or mutation.
|
|
132
|
+
- 7f9a661: Expose the durable Task state values through the browser-safe client for status-driven operator views.
|
|
133
|
+
- eba7887: Drop the generic "Work completed" headline from successful Slack messages so they lead with the result, while keeping the "succeeded" → "Work completed" status-label mapping for other Slack views.
|
|
134
|
+
- aeb708d: Stream live events for the exact task selected in the operator DAG after hydrating its saved transcript. Expose the main conversation's current task so clients can distinguish a waiting planner from its active child without changing the selected node implicitly.
|
|
135
|
+
- ad27bb3: Allow the software-development preset to load through Next.js config require resolution.
|
|
136
|
+
- 6ead1fd: Show reasoning by default in the reference web operator and automatically expand each reasoning block.
|
|
137
|
+
- 18e0792: Add individually authorized approval APIs and migrate CLI queue and decisions off production storage credentials. Preserve immutable decision attribution across retries and concurrent requests, with a browser approval queue in the reference factory.
|
|
138
|
+
|
|
139
|
+
Support authorized approval search and priority/decision ordering before pagination, with matching counts for the browser review queue.
|
|
140
|
+
|
|
141
|
+
Retain the public `findingFingerprint` export while keeping browser schemas free of Node dependencies. Restore CLI queue guidance and use action-specific empty results. Document approval search scaling limits.
|
|
142
|
+
|
|
143
|
+
- b424591: Add authorized, read-only operator task graph and exact-task transcript endpoints with browser-safe client methods for inspecting nested work from the Kanban board.
|
|
144
|
+
- 0b8ff31: Replace ESLint with Oxlint for package linting.
|
|
145
|
+
- c6f7c0f: Identify the verified actor in approval access denials so clients can explain per-user configuration mismatches.
|
|
146
|
+
- c75a8f8: Compare the web Changes view's current branch HEAD with its pinned base SHA instead of the latest main workspace, and expose both comparison SHAs in workspace diff responses.
|
|
147
|
+
- be558e8: Add authorized session search, repository, agent, source, status, and attention filters before pagination, with optional total counts and derived Inbox attention.
|
|
148
|
+
- 2738d50: Add a browser-safe public HTTP client, session schemas, transcript projection, and reconnecting event stream shared by terminal and web clients. Include repository ID-to-slug details in operator discovery without changing the existing repository list.
|
|
149
|
+
- a275061: Support durable, authenticated image attachments in operator conversations, including multimodal
|
|
150
|
+
Eve input, structured transcript replay, and attachment-aware admission and follow-up recovery.
|
|
151
|
+
- 9aabbc7: Show and answer workflow-owned questions in their originating operator conversation without changing its agent execution. Conversation cancellation also cancels its delegated workflow work.
|
|
152
|
+
|
|
153
|
+
Normalize weak read ETags for conditional writes through the public Vercel Blob client, including execution ledgers and worker leases.
|
|
154
|
+
|
|
155
|
+
Preserve empty artifact uploads instead of letting the Blob SDK reject them as missing bodies.
|
|
156
|
+
|
|
157
|
+
Attribute conversational question answers to the current authenticated actor and require both current and original conversation bindings.
|
|
158
|
+
|
|
159
|
+
- 9d6347f: Hide creation and follow-up recovery prompts while their requests are still in flight.
|
|
160
|
+
- b1bbc63: Precompute and persist browser-safe transcript projections at durable Eve response boundaries. Serve completed conversations without replaying their event logs, rebuild legacy cache misses once, load earlier executions concurrently, publish snapshots atomically, and follow live events from the exact durable cursor. Include the response-boundary materializer in generated factories.
|
|
161
|
+
- 44800ac: Expose authenticated workspace diff inspection through the operator API and shared browser client. Add the web conversation Changes tab and keep scaffold synchronization scoped to the reference operator adapter.
|
|
162
|
+
- df233a8: Add a bounded recursive planner workflow with authenticated decisions, terminal-child handoffs, fresh execution attempts, replay recovery, and reconciled cancellation.
|
|
163
|
+
- 1eb065b: Require every pull request to include a committed patch changeset for its changed publishable packages.
|
|
164
|
+
- 3caecd2: Reset the concrete Factory deployment into a fresh Blob namespace.
|
|
165
|
+
- 9aabbc7: Retain the current failed Task's exact transition receipt independently of communication delivery, and clear its reference when the Task leaves the failed state. Issue workflow notices can retrieve the committed reason directly after retries and delivery acknowledgment.
|
|
166
|
+
- e56dbf5: Retry transient Vercel Blob failures (5xx, 429, network errors) with bounded backoff on both reads and writes, not only on version conflicts. `recordUsage` and `recordExecution` now retry the same transient failures too, bounded by attempts and elapsed time, so a Blob outage surfaces as a failure instead of silently starving a healthy running task.
|
|
167
|
+
|
|
168
|
+
Retrying a write is only safe if it can't be mistaken for a different writer's conflict: a transient failure can happen after the write actually lands (the response is what got lost), so the retry's own create-if-absent or ETag-precondition write then legitimately collides with its own prior success. `insert` and `update` now recognize that case — by reading the record back and comparing it to what this call tried to write — and treat it as success instead of surfacing a spurious `RecordExistsError` or `VersionConflictError` for a write that actually succeeded.
|
|
169
|
+
|
|
170
|
+
- fc45434: Add a server-side top-level Task filter and show only Task entrypoints on the default Kanban board.
|
|
171
|
+
- 1469b88: Index open questions by reply destination so connectors can persist answers from repository writers without scanning tasks.
|
|
172
|
+
- d29c5b9: Reject repository traversal and reserved Git directory names while preserving safe punctuation in names such as `.github`. Cover whitespace, path separators, and dependency slug validation.
|
|
173
|
+
- daa76e5: Replace the broad software namespace with capability-first entry points for changes, findings,
|
|
174
|
+
remediation, verification, code review, pull requests, merge resolution, multi-repository work,
|
|
175
|
+
triage, and delivery metrics. Keep supplied policy under the software-development preset, remove
|
|
176
|
+
the superseded paths and names, merge Eve tools into their owning capability paths and the package
|
|
177
|
+
root, require the Eve peer, make public barrels explicit, and enforce the package's naming and
|
|
178
|
+
single-owner export rules.
|
|
179
|
+
- 70c487e: Move GitHub review-check state out of the generic Task schema into a namespaced task-effect store,
|
|
180
|
+
preserving write-once provider references and race-safe reconciliation stamps for supplied software
|
|
181
|
+
workflows without teaching the core Task lifecycle about GitHub. Separate durable communication and
|
|
182
|
+
stall mechanics from the supplied software presentation and review-supersession policies. Add
|
|
183
|
+
explicit delegation, completion, and dispatcher communication policy hooks. Publish supplied
|
|
184
|
+
software policies and stall results only through their canonical names and capability paths, while
|
|
185
|
+
making omitted approval neutral and requiring concrete software factories to select their supplied
|
|
186
|
+
policy explicitly.
|
|
187
|
+
- 7d52404: Add native Slack proposal approvals, evidence views, and rejection-reason modals backed by shared operator checks and immutable receipts. Preserve originating scan threads, pass configured scanner approval policy, and reconcile decisions through the durable communication outbox.
|
|
188
|
+
|
|
189
|
+
Preserve rejection notices when decisions precede initial proposal delivery and stop notification retries for repositories outside the configured scope. Document hosted recovery assumptions, smoke tests, and reconciliation scaling limits.
|
|
190
|
+
|
|
191
|
+
- f26201d: Retry transient Blob download failures with bounded backoff so temporary storage errors do not immediately fail session discovery and other snapshot reads.
|
|
192
|
+
- a6895ca: Preserve structured tool inputs, outputs, errors, and execution state in the shared client transcript while retaining the text projection for terminal clients. Add shell-specific collapsed command and expanded output views in the reference web UI.
|
|
193
|
+
- 6e37276: Move budgets, signals, receipts, Task approvals, entity identifiers, and server session contracts
|
|
194
|
+
from the package root to their canonical capability paths. Consolidate finding remediation into
|
|
195
|
+
`/findings`, change verification and multi-repository coordination into `/changes`, and merge
|
|
196
|
+
conflict resolution into `/pull-requests`.
|
|
197
|
+
Move GitHub, Slack, DeepSec, and Vercel provider APIs under their `/integrations/<provider>` entry
|
|
198
|
+
points.
|
|
199
|
+
- 8356e75: Allow conversational agents to select a grounded single- or multi-repository subset authorized by a connector and ask for clarification when the complete set is not identified.
|
|
200
|
+
- 4d0bc54: Replace the prototype Task model with required versioned work contracts, canonical dependency graphs, exact execution routes, and validated results. Add durable typed Task messages, leased processing, replayable decisions, and explicit recovery operations.
|
|
201
|
+
|
|
202
|
+
Update factory clients, agent tools, and generated scaffolds to the unified contracts. This is a breaking pre-release change: existing Task snapshots require an explicit migration or reset before deployment; no live data is changed automatically.
|
|
203
|
+
|
|
204
|
+
- b5c4218: Wrap long lines in the web workspace diff viewer while keeping line numbers aligned with the first visual line.
|
|
205
|
+
|
|
206
|
+
## 0.0.14
|
|
207
|
+
|
|
208
|
+
### Patch Changes
|
|
209
|
+
|
|
210
|
+
- 0577b0b: Allow executable Tasks to reference the Change they concern without making the Task kind define the association.
|
|
211
|
+
- 2ca9c71: Bound Blob collection read concurrency and queued dispatch work so scheduled reconciliation completes predictably as the ledger grows.
|
|
212
|
+
- e61a491: Add the public operator-session HTTP API and durable session bindings. Agent selection,
|
|
213
|
+
idempotent Signal admission, task dispatch, streaming proxies, human answers, and cancellation
|
|
214
|
+
preserve Factory lifecycle, ownership, and budget boundaries. Persist API notifications through
|
|
215
|
+
the store engine and expose the contracts through `@vercel/factory/api`.
|
|
216
|
+
- 1ba6747: Let code-change tasks continue a canonical existing pull-request Change without opening a second pull request.
|
|
217
|
+
- fbcb50b: Make Blob the production durability layer with immutable answer events, directly routed blocked-task answers, ETag-CAS task projections, and a sharded durable communication outbox.
|
|
218
|
+
- d8fe5a3: Keep ledger inspection failures in the turn-completion hook from failing and replaying user-facing turns.
|
|
219
|
+
- 0904927: Fail queued executable tasks with invalid recovery routing instead of silently retaining them, and surface eligible tasks that remain queued past the dispatch window in repository health.
|
|
220
|
+
|
|
221
|
+
## 0.0.13
|
|
222
|
+
|
|
223
|
+
### Patch Changes
|
|
224
|
+
|
|
225
|
+
- 4cc5042: Budget reserve-before-execution and settlement. The store engine gains a `budgets` collection (one non-disableable budget per month, write-once warning and exhaustion notices) and `tasks.settle`. Dispatch reserves `budget.perTaskReservationUsd` in the same write that wins queued -> running and definitively fails tasks once the month's derived spend cannot fit another reservation. A per-minute sweep settles reserved terminal tasks at zero after ten minutes without measured usage, and budget notices deliver once per month to the Slack owner.
|
|
226
|
+
|
|
227
|
+
Enforcement is on by default: `factory.config.ts` gains a `budget` field defaulting to `{ totalUsd: 500, investigationUsd: 100, perTaskReservationUsd: 5, warningPercent: 80 }`. Once a month's spend crosses the cap, queued tasks fail permanently until an operator retries them in a later month; raise `budget.totalUsd` in `factory.config.ts` to lift the cap. `investigationUsd` and `perRepositoryUsd` are stored but not yet enforced.
|
|
228
|
+
|
|
229
|
+
- f769cf6: Add application-owned agent route registries, registry-validated Foreman delegation, and bounded question/result presentation hooks.
|
|
230
|
+
- d525870: Add stable finding identities and pull request conversation-comment helpers for deduplicated code review summaries.
|
|
231
|
+
- f5b593f: Support factories without an independent verifier and report pull-request creation before any optional verification result.
|
|
232
|
+
- d07755b: Allow Slack repository selection by unique short name or GitHub repository URL.
|
|
233
|
+
- 44b1684: Measure task cost from real model usage. The factory hook now records each model step's tokens and AI Gateway cost on the session's task (`task.usage`, via `stores.tasks.recordUsage`, idempotent per turn and step), and the recorded total settles when the task ends, at turn end or by the settlement sweep, instead of always settling at zero. `factoryHooks` accepts an optional `taskIdAttribute` (default `factoryTaskId`).
|
|
234
|
+
- 42e06f7: Render Slack communication events with readable spacing and safe clickable links.
|
|
235
|
+
- 8367bab: Allow code review tools to report results through completion callbacks without publishing GitHub reviews.
|
|
236
|
+
- 04a4f1f: Read task records written by deployments carrying execution progress metadata.
|
|
237
|
+
- 7c6082c: Detect and replace stalled tasks. Tasks gain a `stalled` state, `lastProgressAt` (stamped at dispatch and by every recorded model step), and `execution: { provider, sessionId }` recorded through the new `stores.tasks.recordExecution` when a launcher returns it. `sweepStalled` marks a running task stalled once it passes its window without progress, re-queues it for a replacement attempt while `attempt < maxAttempts`, and fails it after; tasks whose result is already recorded are never retried. Limits come from a new `execution` block in `factory.config.ts` (`maxAttempts` 3, `stallMinutes` 45, `stallMinutesByKind` for long single-step work). The never-written `devbox` task field is removed in favour of `execution`.
|
|
238
|
+
- 6772b0a: Compare pull requests from their merge base during verification to avoid false failures when the default branch advances.
|
|
239
|
+
- dda8f5a: Make every human-blocked task produce a surfaced QuestionTask. The new `request_human_input` tool
|
|
240
|
+
covers both requested information and requested human action, compensates failed presentation
|
|
241
|
+
instead of leaving a silent wait, and the abandoned-turn hook creates the same surfaced recovery
|
|
242
|
+
question. Remove the overlapping `ask_question` and `report_blocked` agent tools from the framework
|
|
243
|
+
and generated factories. Mentioned Slack follow-ups carry persisted waiting QuestionTask ids into
|
|
244
|
+
Foreman's turn context so a reply can be attributed without relying on notification history.
|
|
245
|
+
|
|
246
|
+
## 0.0.12
|
|
247
|
+
|
|
248
|
+
### Patch Changes
|
|
249
|
+
|
|
250
|
+
- 9be5e97: Create idempotent verification tasks for recorded code changes so workflow reconciliation, rather than the coding agent, owns mandatory verification dispatch.
|
|
251
|
+
|
|
252
|
+
## 0.0.11
|
|
253
|
+
|
|
254
|
+
### Patch Changes
|
|
255
|
+
|
|
256
|
+
- 5ee2960: Create and reconcile multi-repository coordination parents with repository-scoped child tasks, and accept coordinated Slack requests in generated factories.
|
|
257
|
+
- 67bb5ab: Pass dispatched tasks to agent handoff headers and scaffold task-scoped repository checkout.
|
|
258
|
+
|
|
259
|
+
## 0.0.10
|
|
260
|
+
|
|
261
|
+
### Patch Changes
|
|
262
|
+
|
|
263
|
+
- 1ebb237: Require executable tasks to target exactly one repository and coordination tasks to scope at least two distinct repositories without executing directly.
|
|
264
|
+
- 00aa4fe: Add composable GitHub check-run primitives with lifecycle state, rich output, annotations, correlation metadata, commit lookup, and a post-review composition hook.
|
|
265
|
+
- 6060928: Add computeLedgerMetrics and computeRepositoryHealth: the product metrics (landed with a 7-day provisional hold, stick rate, human time per review bucket, cost per landed, filtered) and the green/yellow/red repository health roll-up, computed from ledger rows alone. The engine now writes a ready receipt when a change becomes ready so human time is measurable.
|
|
266
|
+
- 1ebb237: Require changes to reference an existing repository and a matching code-change task.
|
|
267
|
+
- f3b495a: Add public primitives for composing webhook-driven post-PR code review bots.
|
|
268
|
+
|
|
269
|
+
## 0.0.9
|
|
270
|
+
|
|
271
|
+
### Patch Changes
|
|
272
|
+
|
|
273
|
+
- e4ca257: Move `buildFactory` out of the root entry into `@vercel/factory/next`. The root
|
|
274
|
+
entry could reach `eve/next` through `buildFactory`'s lazy import, so any Next.js
|
|
275
|
+
route importing the package root (the scaffold's cron dispatch route) pulled
|
|
276
|
+
eve's sandbox backends into the bundle and failed the deploy build with
|
|
277
|
+
unresolvable optional dependencies (`just-bash`, `microsandbox`). Local builds
|
|
278
|
+
never caught it because `link:` workspace dependencies are externalized. Import
|
|
279
|
+
`buildFactory` from `@vercel/factory/next` in `next.config.ts`; runtime imports
|
|
280
|
+
from the root are unchanged.
|
|
281
|
+
|
|
282
|
+
## 0.0.8
|
|
283
|
+
|
|
284
|
+
### Patch Changes
|
|
285
|
+
|
|
286
|
+
- 082f99c: Document the FDK product contract and V1 runtime architecture.
|
|
287
|
+
- 421ec26: Support communication events that concern multiple repositories.
|
|
288
|
+
|
|
289
|
+
## 0.0.7
|
|
290
|
+
|
|
291
|
+
### Patch Changes
|
|
292
|
+
|
|
293
|
+
- c0ad80f: Publish @vercel/factory with public access on npm. Generated factories install
|
|
294
|
+
the package at deploy time, and build containers can only reach the public
|
|
295
|
+
registry; restricted access made every deploy outside the internal network fail
|
|
296
|
+
with a 404 on `npm install`.
|
|
297
|
+
- a73a49f: Add Slack rendering and thread delivery for channel-neutral communication events.
|
|
298
|
+
|
|
299
|
+
## 0.0.6
|
|
300
|
+
|
|
301
|
+
### Patch Changes
|
|
302
|
+
|
|
303
|
+
- 16b1d4d: Observe production deployments: a new @vercel/factory/vercel entrypoint verifies the x-vercel-signature header and normalizes deployment.succeeded and deployment.promoted webhooks, Changes record the merge commit sha when their pull request merges, and a production deployment built from that commit moves the Change from merged to deployed.
|
|
304
|
+
- 3e58550: Remove the built-in factory web UI and its Next.js page exports.
|
|
305
|
+
|
|
306
|
+
## 0.0.5
|
|
307
|
+
|
|
308
|
+
### Patch Changes
|
|
309
|
+
|
|
310
|
+
- 4739764: Fix serialized review-comment tool context, adopt external pull requests, and let agents suggest medium-confidence fixes or apply high-confidence fixes to an existing pull request.
|
|
311
|
+
- 5cbdb3e: Add normalizeGitHubPullRequestClosed so a factory can observe merged and closed pull requests from the pull_request webhook and drive Change state with the merging or closing human recorded as decidedBy.
|
|
312
|
+
- 948b40d: Add Slack signal normalization and repository selection for Vercel Connect and Eve Slack intake.
|
|
313
|
+
|
|
314
|
+
## 0.0.4
|
|
315
|
+
|
|
316
|
+
### Patch Changes
|
|
317
|
+
|
|
318
|
+
- 9a83def: Add a provider-neutral webhook normalization contract and apply it to GitHub signals.
|
|
319
|
+
- 984d5ac: Make the Blob-backed ledger and task dispatch reliable under real conditions:
|
|
320
|
+
|
|
321
|
+
- Blob driver reads the ledger uncached and guards updates with the object's
|
|
322
|
+
ETag, stripping the weak-validator (`W/`) prefix the read API returns so
|
|
323
|
+
conditional writes are accepted; a lost race now surfaces as a
|
|
324
|
+
`VersionConflictError` instead of silently overwriting or failing forever.
|
|
325
|
+
- `admitFinding` is idempotent when two overlapping scanner sessions record
|
|
326
|
+
the same finding: it matches the lost-race error by name (the Blob driver is
|
|
327
|
+
a separate entry point, so `instanceof` never matched across the bundle),
|
|
328
|
+
and treats an already-decided signal as a duplicate rather than throwing.
|
|
329
|
+
- A refused agent launch re-queues the task and retries (up to 45 sweeps)
|
|
330
|
+
instead of failing the task on the first refusal, so a freshly deployed
|
|
331
|
+
factory's first scan survives the platform's identity warm-up.
|
|
332
|
+
|
|
333
|
+
- 115be76: Switch the package build from tsup to tsdown and publish its native ESM output extensions.
|
|
334
|
+
- 40c04d7: Allow pull request fetch and review comment tools to operate while a change is ready for human review.
|
|
335
|
+
|
|
336
|
+
## 0.0.3
|
|
337
|
+
|
|
338
|
+
### Patch Changes
|
|
339
|
+
|
|
340
|
+
- e85a696: Add ledger-bound Eve tools for reading and answering authorized GitHub review comments.
|
|
341
|
+
- 52957b2: Add GitHub connector operations for pull requests, review comments, and labels.
|
|
342
|
+
- 30e0df9: Add a channel-neutral communication event and adapter router for connector-owned delivery.
|
|
343
|
+
- 000e41a: Add GitHub merge-conflict discovery and ledger-bound tools for safely updating factory pull requests.
|
|
344
|
+
- 71ec154: Move the GitHub integration API from `@vercel/factory/connectors/github` to `@vercel/factory/github`.
|
|
345
|
+
|
|
346
|
+
## 0.0.2
|
|
347
|
+
|
|
348
|
+
### Patch Changes
|
|
349
|
+
|
|
350
|
+
- 1d939f3: Add a package README with a concise framework overview.
|
|
351
|
+
|
|
352
|
+
## 0.0.1
|
|
353
|
+
|
|
354
|
+
### Patch Changes
|
|
355
|
+
|
|
356
|
+
- fe5cc25: Build the package before packing it for publication.
|
package/README.md
CHANGED
|
@@ -8,5 +8,99 @@ state transitions, retries, and external effects while agents and coding harness
|
|
|
8
8
|
results. The V1 reference runtime uses Blob, AI SDK `HarnessAgent`, and Vercel Sandbox,
|
|
9
9
|
with independent verification and human-owned merges.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
## Requirements and installation
|
|
12
|
+
|
|
13
|
+
Factory requires Node.js 24 or newer and publishes ESM. Install the package with its required
|
|
14
|
+
`eve` and `zod` peers:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
pnpm add @vercel/factory eve zod
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Optional storage, sandbox, and harness integrations declare additional peer dependencies. Install
|
|
21
|
+
them only when using the corresponding capability path.
|
|
22
|
+
|
|
23
|
+
The published declarations are checked with TypeScript 5.9.3 and 7.0.2. Core workflows and the Blob
|
|
24
|
+
adapter use `nodeNext` resolution with library checking enabled; the browser-safe `/client` entry
|
|
25
|
+
point uses `bundler` resolution without loading Node, Eve, Blob, or Drizzle types. The Postgres
|
|
26
|
+
adapter is checked with its Drizzle peer and `skipLibCheck` because Drizzle's declaration graph
|
|
27
|
+
includes declarations for optional database drivers.
|
|
28
|
+
|
|
29
|
+
Start with the shipped [Eve agent integration recipe](docs/recipes/eve-agent.md), which shows how
|
|
30
|
+
Factory dispatches a route-bound Task into Eve and how the agent mounts Factory authentication,
|
|
31
|
+
tools, and hooks. The [local Task quickstart](docs/getting-started.md) isolates the durable state
|
|
32
|
+
model without running an agent. The [consumer documentation index](docs/index.md) maps common goals
|
|
33
|
+
to import paths and version-matched declaration files. For complete runtime assembly boundaries,
|
|
34
|
+
read [runtime composition](docs/runtime-integration.md).
|
|
35
|
+
|
|
36
|
+
Runnable, credential-free recipes cover [Eve agent integration](docs/recipes/eve-agent.md),
|
|
37
|
+
[typed Eve workflow results](docs/recipes/typed-eve-result.md),
|
|
38
|
+
[human input and resumption](docs/recipes/human-input.md),
|
|
39
|
+
[dependent Eve agents](docs/recipes/dependent-tasks.md),
|
|
40
|
+
[custom workflows and local execution](docs/recipes/custom-workflow.md),
|
|
41
|
+
[persistent restart recovery](docs/recipes/persistence-recovery.md),
|
|
42
|
+
[cancellation](docs/recipes/cancellation.md), [retry recovery](docs/recipes/retry-recovery.md), and
|
|
43
|
+
[typed Task messaging](docs/recipes/task-messaging.md). Each published example is compiled and
|
|
44
|
+
executed against the package before release.
|
|
45
|
+
|
|
46
|
+
The optional Vercel-managed Git transport uses fresh trusted Sandboxes for reads and signed
|
|
47
|
+
publication. These transfer Sandboxes run no repository code or models; agent and harness Sandboxes
|
|
48
|
+
remain credential-free. The managed transport returns the reconciled signed commit SHA. Initial Git Data API
|
|
49
|
+
publication remains an application-selected adapter.
|
|
50
|
+
|
|
51
|
+
## Public import paths
|
|
52
|
+
|
|
53
|
+
Use the narrowest capability entry point that owns an API. This keeps optional integrations and
|
|
54
|
+
browser/server boundaries visible and keeps dependencies aligned with the capability in use.
|
|
55
|
+
|
|
56
|
+
Factory targets Eve agents, and `eve` is a required peer dependency. Eve-specific APIs live with
|
|
57
|
+
their semantic owner instead of under a parallel `/eve` namespace.
|
|
58
|
+
|
|
59
|
+
| Import path | Use for |
|
|
60
|
+
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
61
|
+
| `@vercel/factory` | Configuration, shared primitives, and generic Eve sessions, hooks, and Task tools |
|
|
62
|
+
| `@vercel/factory/tasks` | Tasks, graphs, messages, effects, and their stores |
|
|
63
|
+
| `@vercel/factory/workflows` | Workflow definitions, work contracts, and agent routes |
|
|
64
|
+
| `@vercel/factory/execution` | Provider-neutral dispatch, execution lifecycle, and sweeps |
|
|
65
|
+
| `@vercel/factory/planning` | Provider-neutral planner contracts and runtime |
|
|
66
|
+
| `@vercel/factory/budgets` | Budget schemas, capacity policy, settlement, and maintenance sweeps |
|
|
67
|
+
| `@vercel/factory/signals` | Signal records, intake creation, decisions, and lifecycle |
|
|
68
|
+
| `@vercel/factory/receipts` | Immutable audit records, costs, identifiers, and append inputs |
|
|
69
|
+
| `@vercel/factory/storage`, `/storage/blob`, `/storage/postgres` | Store engine and optional persistence adapters |
|
|
70
|
+
| `@vercel/factory/communication` | Inbound normalization, routing, and outbox contracts |
|
|
71
|
+
| `@vercel/factory/client`, `/api`, `/next` | Browser client, server handlers, and Next.js integration |
|
|
72
|
+
| `@vercel/factory/changes` | Change lifecycle, verification, and multi-repository coordination |
|
|
73
|
+
| `@vercel/factory/findings` | Finding records, remediation, fingerprints, and agent reporting |
|
|
74
|
+
| `@vercel/factory/code-review` | Review policy, contracts, and agent tools |
|
|
75
|
+
| `@vercel/factory/pull-requests` | Publication and merge-conflict contracts and tools |
|
|
76
|
+
| `@vercel/factory/work-triage` | Existing-work lookup and its agent tool |
|
|
77
|
+
| `@vercel/factory/delivery-metrics` | Delivery ledger metrics and repository health |
|
|
78
|
+
| `@vercel/factory/presets/software-development` | Supplied software-development policy and Eve composition |
|
|
79
|
+
| `@vercel/factory/integrations/github` | GitHub API helpers and communication, review, publication, label, and triage adapters |
|
|
80
|
+
| `@vercel/factory/integrations/slack` | Slack communication delivery adapter |
|
|
81
|
+
| `@vercel/factory/integrations/deepsec` | DeepSec normalization and its Eve scanner tool |
|
|
82
|
+
| `@vercel/factory/integrations/vercel` | Vercel Queue and trusted Git transport adapters |
|
|
83
|
+
| `@vercel/factory/sandbox` | Optional isolated execution integration |
|
|
84
|
+
|
|
85
|
+
The package root owns common configuration, cross-cutting primitives, and generic Eve integration
|
|
86
|
+
that have no narrower capability owner. Each public declaration has one canonical owner. The
|
|
87
|
+
browser client and server API re-export shared HTTP wire contracts at both consumption boundaries
|
|
88
|
+
from the same source declarations.
|
|
89
|
+
|
|
90
|
+
Ordinary public values and functions use `camelCase`; type-like declarations, constructors, and UI
|
|
91
|
+
components use `PascalCase`; fixed constant-style values may use `UPPER_CASE`. Schemas use a
|
|
92
|
+
`thingSchema` / `Thing` pair; configuration objects, operation results, and error classes use
|
|
93
|
+
`*Options`, `*Result`, and `*Error`. Factories use `create*`, while declarative validators and
|
|
94
|
+
registries use `define*`. Provider and protocol payload keys retain their required wire spelling.
|
|
95
|
+
Oxlint is the repository's sole JavaScript and TypeScript linter and enforces the allowed
|
|
96
|
+
identifier shapes. Declaration-specific casing follows the conventions above in code and review.
|
|
97
|
+
|
|
98
|
+
## API stability and repository development
|
|
99
|
+
|
|
100
|
+
This package is pre-1.0: replaced paths and names can be removed during alpha API cleanup rather
|
|
101
|
+
than retained as deprecated aliases. Check the shipped [changelog](CHANGELOG.md) before upgrading
|
|
102
|
+
persisted factories.
|
|
103
|
+
|
|
104
|
+
Repository setup, architecture, and contribution instructions live in the
|
|
105
|
+
[Agent Factory repository](https://github.com/vercel-labs/agent-factory). They are maintainer
|
|
106
|
+
documentation rather than prerequisites for using the installed package.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { AgentRouteBinding, AgentRouteBindingInput, agentRouteBindingSchema, parseAgentRouteBinding } from "./schema/agent-route.mjs";
|
|
2
|
+
import { JsonValue, TaskWork } from "./schema/work.mjs";
|
|
3
|
+
import { TaskKind } from "./schema/task.mjs";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
//#region src/agent-routes.d.ts
|
|
6
|
+
/** Validates an exact-version route from workflow work to one configured agent. */
|
|
7
|
+
declare const agentRouteSchema: z.core.$ZodBranded<z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
version: z.ZodDefault<z.ZodNumber>;
|
|
10
|
+
agent: z.ZodString;
|
|
11
|
+
taskKind: z.ZodType<TaskKind, unknown, z.core.$ZodTypeInternals<TaskKind, unknown>>;
|
|
12
|
+
description: z.ZodString;
|
|
13
|
+
permissions: z.ZodDefault<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
|
|
14
|
+
}, z.core.$strict>, "AgentRouteBinding", "out">;
|
|
15
|
+
/** Canonical `id@version` lookup key for one exact agent route. */
|
|
16
|
+
type AgentRouteKey<Id extends string = string, Version extends number = number> = `${Id}@${Version}`;
|
|
17
|
+
/** Validated immutable route describing an agent, Task kind, purpose, and permissions. */
|
|
18
|
+
type AgentRoute = Readonly<Omit<z.infer<typeof agentRouteSchema>, "permissions"> & {
|
|
19
|
+
readonly permissions: readonly string[];
|
|
20
|
+
}>;
|
|
21
|
+
/** Caller input accepted when registering an agent route, before defaults are applied. */
|
|
22
|
+
interface AgentRouteInput {
|
|
23
|
+
/** Stable lowercase route identifier selected by workflows. */
|
|
24
|
+
readonly id: string;
|
|
25
|
+
/** Positive exact version. Defaults to `1` during registration. */
|
|
26
|
+
readonly version?: number;
|
|
27
|
+
/** Internally addressable Eve agent name used by the application launcher. */
|
|
28
|
+
readonly agent: string;
|
|
29
|
+
/** Descriptive Task kind created for work on this route; it does not control routing. */
|
|
30
|
+
readonly taskKind: TaskKind;
|
|
31
|
+
/** Model-facing explanation of when this route is appropriate. */
|
|
32
|
+
readonly description: string;
|
|
33
|
+
/** Inspectable capability labels; the application still enforces actual authorization. */
|
|
34
|
+
readonly permissions?: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
/** Task work with a required exact agent-route binding. */
|
|
37
|
+
type RoutedTaskWork<Input extends JsonValue = JsonValue, Route extends AgentRouteBinding = AgentRouteBinding> = Omit<TaskWork<Input>, "route"> & {
|
|
38
|
+
readonly route: Route;
|
|
39
|
+
};
|
|
40
|
+
/** Named fields for constructing generic work bound to an exact agent route. */
|
|
41
|
+
interface RouteTaskWorkOptions<Route extends AgentRouteBinding = AgentRouteBinding, Input extends JsonValue = JsonValue> {
|
|
42
|
+
readonly route: Route;
|
|
43
|
+
readonly title: string;
|
|
44
|
+
readonly input?: Input;
|
|
45
|
+
readonly workflow?: never;
|
|
46
|
+
readonly completionCriteria?: never;
|
|
47
|
+
}
|
|
48
|
+
/** Produces the canonical `id@version` lookup key for a route binding. */
|
|
49
|
+
declare function routeKey<const Binding extends AgentRouteBinding>(binding: Binding): AgentRouteKey<Binding["id"], Binding["version"]>;
|
|
50
|
+
/** Constructs generic Task work bound to the selected exact agent route. */
|
|
51
|
+
declare function routeTaskWork<const Route extends AgentRouteBinding, const Input extends JsonValue = JsonValue>(options: RouteTaskWorkOptions<Route, Input>): RoutedTaskWork<Input, AgentRouteBinding<Route["id"], Route["version"]>>;
|
|
52
|
+
type RegisteredAgentRoute<Input extends AgentRouteInput> = Input extends AgentRouteInput ? AgentRouteBinding<Input["id"], Input extends {
|
|
53
|
+
readonly version: infer Version extends number;
|
|
54
|
+
} ? Version : 1> & Readonly<Omit<Input, "version" | "permissions"> & {
|
|
55
|
+
readonly version: Input extends {
|
|
56
|
+
readonly version: infer Version extends number;
|
|
57
|
+
} ? Version : 1;
|
|
58
|
+
readonly permissions: readonly string[];
|
|
59
|
+
}> : never;
|
|
60
|
+
/** Immutable registry for exact agent-route lookup and unambiguous admission selection. */
|
|
61
|
+
interface AgentRouteRegistry<out Route extends AgentRoute = AgentRoute> {
|
|
62
|
+
/** Immutable validated routes in registration order. */
|
|
63
|
+
readonly routes: readonly Route[];
|
|
64
|
+
/**
|
|
65
|
+
* Returns only the exact route binding supplied; never defaults a version.
|
|
66
|
+
*
|
|
67
|
+
* @param binding - Exact route ID and version to resolve.
|
|
68
|
+
* @returns The registered route, or `undefined` when that exact version is absent.
|
|
69
|
+
*/
|
|
70
|
+
get<const Binding extends AgentRouteBinding>(binding: Binding): (Route & Readonly<Binding>) | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Lists every registered route for a descriptive Task kind in registration order.
|
|
73
|
+
*
|
|
74
|
+
* @param kind - Descriptive Task kind to filter by.
|
|
75
|
+
* @returns Matching routes; an empty array when none were registered.
|
|
76
|
+
*/
|
|
77
|
+
listForTaskKind<const Kind extends string>(kind: Kind): readonly (Route & {
|
|
78
|
+
readonly taskKind: Kind;
|
|
79
|
+
})[];
|
|
80
|
+
}
|
|
81
|
+
type RegisteredAgentRoutes<Input extends readonly AgentRouteInput[]> = [Input[number]] extends [never] ? AgentRoute : RegisteredAgentRoute<Input[number]>;
|
|
82
|
+
/**
|
|
83
|
+
* Builds an immutable registry whose exact bindings are the routing authority.
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
* Descriptions and permissions are inspectable guidance. They do not authorize execution and a
|
|
87
|
+
* Task kind never selects a route. Persist the exact route binding on work and recover that same
|
|
88
|
+
* binding after retries. Omitted versions and permissions become `1` and an empty array.
|
|
89
|
+
*
|
|
90
|
+
* @param inputs - Application-owned routes available to workflow and agent policy.
|
|
91
|
+
* @returns A registry supporting exact lookup and descriptive Task-kind listing.
|
|
92
|
+
* @throws A Zod validation error for an invalid route or an error for duplicate `id@version` keys.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* import { defineAgentRoutes } from "@vercel/factory/workflows";
|
|
97
|
+
*
|
|
98
|
+
* const routes = defineAgentRoutes([
|
|
99
|
+
* {
|
|
100
|
+
* id: "incident-worker",
|
|
101
|
+
* agent: "worker",
|
|
102
|
+
* taskKind: "incident",
|
|
103
|
+
* description: "Investigate one admitted incident.",
|
|
104
|
+
* permissions: ["read-repository"],
|
|
105
|
+
* },
|
|
106
|
+
* ]);
|
|
107
|
+
* const route = routes.routes[0];
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
declare function defineAgentRoutes<const Input extends readonly AgentRouteInput[]>(inputs: Input): AgentRouteRegistry<RegisteredAgentRoutes<Input>>;
|
|
111
|
+
//#endregion
|
|
112
|
+
export { AgentRoute, type AgentRouteBinding, type AgentRouteBindingInput, AgentRouteInput, AgentRouteKey, AgentRouteRegistry, RouteTaskWorkOptions, RoutedTaskWork, agentRouteBindingSchema, agentRouteSchema, defineAgentRoutes, parseAgentRouteBinding, routeKey, routeTaskWork };
|
|
113
|
+
//# sourceMappingURL=agent-routes.d.mts.map
|