29 lines
2.2 KiB
Markdown
29 lines
2.2 KiB
Markdown
|
|
<!-- Generated by scripts/gen-website-api.ts — do not edit by hand. Run `pnpm run gen-website-api` to regenerate. -->
|
||
|
|
|
||
|
|
# ctx.workflows
|
||
|
|
|
||
|
|
`WorkflowService` (abstract seam) — provided by `@deepseek-ai/dsh-workflow`.
|
||
|
|
|
||
|
|
Abstract workflow execution service. Subclass, implement start, and load the subclass as a plugin — it registers as `ctx.workflows` (one implementation per context; loading a second throws, cordis' standard duplicate-service behavior).
|
||
|
|
Semantics every implementation must honor:
|
||
|
|
- start throws synchronously for a request that cannot begin (an unparseable script, an invalid meta block). Once it returns a WorkflowRun, `result` NEVER rejects — every failure resolves with `stopReason: 'error'` (or `'cancelled'`) — and once the run is cancelled, `result` SETTLES within the implementation's bounded grace even if the script itself never settles (a consumer awaiting `result` must never be wedged past a cancellation).
|
||
|
|
- The `workflow/*` events fire through emitWorkflowEvent (data snapshots, per-listener containment); `workflow/end` fires exactly once per started run, after `result` is settled or as it settles.
|
||
|
|
- `dispose()` reaches quiescence within a bounded grace: it cancels, waits for the script to settle AND its started children to finish disposing, and abandons whatever is left rather than hanging its caller (the engine documents what abandonment leaves behind).
|
||
|
|
- Runs are HOLDER-OWNED: the engine hands control (`cancel`/`dispose`) to the `start()` caller and does not track its live runs — disposing the engine's own fiber mid-run deliberately leaves those runs to their holders' teardown, so an engine reload cannot yank a run out from under the consumer awaiting it.
|
||
|
|
|
||
|
|
[Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts#L210)
|
||
|
|
|
||
|
|
### ctx.workflows.start(request)
|
||
|
|
|
||
|
|
```ts website-api
|
||
|
|
abstract start(request: WorkflowStartRequest): WorkflowRun
|
||
|
|
```
|
||
|
|
|
||
|
|
Parse and execute a workflow script.
|
||
|
|
|
||
|
|
- `request` — the script, its `args`, the parent agent, and an optional cancel signal.
|
||
|
|
|
||
|
|
**Returns** the live run; its `result` resolves when the script settles.
|
||
|
|
|
||
|
|
[Source](https://github.com/deepseek-harness/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts#L221)
|