@tagma/sdk 0.7.0 → 0.7.3

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.
Files changed (72) hide show
  1. package/README.md +84 -44
  2. package/dist/bootstrap.d.ts +20 -0
  3. package/dist/bootstrap.d.ts.map +1 -1
  4. package/dist/bootstrap.js +21 -11
  5. package/dist/bootstrap.js.map +1 -1
  6. package/dist/core/dataflow.d.ts.map +1 -1
  7. package/dist/core/dataflow.js +45 -9
  8. package/dist/core/dataflow.js.map +1 -1
  9. package/dist/core/run-context.d.ts +3 -0
  10. package/dist/core/run-context.d.ts.map +1 -1
  11. package/dist/core/run-context.js +2 -0
  12. package/dist/core/run-context.js.map +1 -1
  13. package/dist/core/task-executor.d.ts.map +1 -1
  14. package/dist/core/task-executor.js +46 -84
  15. package/dist/core/task-executor.js.map +1 -1
  16. package/dist/engine.d.ts +6 -0
  17. package/dist/engine.d.ts.map +1 -1
  18. package/dist/engine.js +3 -0
  19. package/dist/engine.js.map +1 -1
  20. package/dist/index.d.ts +3 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/plugins.d.ts +2 -2
  25. package/dist/plugins.d.ts.map +1 -1
  26. package/dist/ports.d.ts +4 -0
  27. package/dist/ports.d.ts.map +1 -1
  28. package/dist/ports.js +27 -4
  29. package/dist/ports.js.map +1 -1
  30. package/dist/registry.d.ts +10 -4
  31. package/dist/registry.d.ts.map +1 -1
  32. package/dist/registry.js +64 -25
  33. package/dist/registry.js.map +1 -1
  34. package/dist/runtime.d.ts +9 -0
  35. package/dist/runtime.d.ts.map +1 -0
  36. package/dist/runtime.js +8 -0
  37. package/dist/runtime.js.map +1 -0
  38. package/dist/schema.d.ts.map +1 -1
  39. package/dist/schema.js +1 -7
  40. package/dist/schema.js.map +1 -1
  41. package/dist/tagma.d.ts +11 -1
  42. package/dist/tagma.d.ts.map +1 -1
  43. package/dist/tagma.js +6 -0
  44. package/dist/tagma.js.map +1 -1
  45. package/dist/validate-raw.d.ts +4 -4
  46. package/dist/validate-raw.d.ts.map +1 -1
  47. package/dist/validate-raw.js +89 -230
  48. package/dist/validate-raw.js.map +1 -1
  49. package/package.json +2 -2
  50. package/src/bootstrap.ts +23 -14
  51. package/src/core/dataflow.test.ts +8 -9
  52. package/src/core/dataflow.ts +57 -14
  53. package/src/core/run-context.test.ts +12 -0
  54. package/src/core/run-context.ts +4 -0
  55. package/src/core/task-executor.ts +75 -135
  56. package/src/engine-ports-mixed.test.ts +68 -411
  57. package/src/engine-ports.test.ts +37 -341
  58. package/src/engine.ts +8 -0
  59. package/src/index.ts +5 -0
  60. package/src/pipeline-runner.test.ts +5 -9
  61. package/src/plugin-registry.test.ts +138 -1
  62. package/src/plugins.ts +5 -2
  63. package/src/ports.test.ts +80 -0
  64. package/src/ports.ts +36 -4
  65. package/src/registry.ts +81 -26
  66. package/src/runtime.ts +20 -0
  67. package/src/schema-ports.test.ts +47 -197
  68. package/src/schema.ts +1 -7
  69. package/src/tagma.test.ts +72 -1
  70. package/src/tagma.ts +16 -1
  71. package/src/validate-raw-ports.test.ts +80 -393
  72. package/src/validate-raw.ts +90 -250
package/README.md CHANGED
@@ -75,8 +75,7 @@ config editing, plugin registry helpers, and low-level dataflow utilities.
75
75
  - **Middleware** -- enrich prompts before execution (e.g. inject static context)
76
76
  - **Completion checks** -- validate task output with `exit_code`, `file_exists`, or `output_check` plugins
77
77
  - **Plugin schemas** -- triggers/completions/middlewares can declare a `PluginSchema` so visual editors render typed forms for their config
78
- - **Lightweight task bindings** -- pass dynamic values with task-level `inputs` / `outputs` without declaring a typed contract
79
- - **Typed task ports** -- declare named, typed `ports.inputs` / `ports.outputs` when a task needs a strict, validated I/O contract
78
+ - **Unified task bindings** -- pass dynamic values with task-level `inputs` / `outputs`; add optional `type` metadata when a binding needs validation
80
79
 
81
80
  ## Pipeline YAML Reference
82
81
 
@@ -205,9 +204,8 @@ Each hook value can be a single command string or an array of commands.
205
204
  | `middlewares` | `MiddlewareConfig[]` | No | Inherited from track | Middleware override. Set `[]` to disable inherited middlewares |
206
205
  | `trigger` | `TriggerConfig` | No | — | Gate that must resolve before the task runs (see Triggers) |
207
206
  | `completion` | `CompletionConfig` | No | — | Post-execution check to validate task output (see Completions) |
208
- | `inputs` | `TaskInputBindings` | No | — | Lightweight parameter bindings for `{{inputs.<name>}}` |
209
- | `outputs` | `TaskOutputBindings` | No | — | Lightweight named outputs published after success |
210
- | `ports` | `TaskPorts` | No | — | Typed input/output ports — see Typed Ports below |
207
+ | `inputs` | `TaskInputBindings` | No | — | Task input bindings for `{{inputs.<name>}}`; optional `type` enables coercion/validation |
208
+ | `outputs` | `TaskOutputBindings` | No | — | Named outputs published after success; optional `type` enables coercion/validation |
211
209
 
212
210
  ### Permissions
213
211
 
@@ -227,15 +225,17 @@ Track-level `middlewares` apply to all tasks in the track. Setting task-level `m
227
225
 
228
226
  ---
229
227
 
230
- ### Lightweight Bindings
228
+ ### Unified Task Bindings
231
229
 
232
- Use task-level `inputs` / `outputs` for ordinary parameter passing. They are task-level only, do not inherit, and do not add prompt schema blocks or type coercion.
230
+ Use task-level `inputs` / `outputs` for parameter passing. They are task-level only, do not inherit, and can stay lightweight by omitting `type`. Add `type`, `required`, `enum`, and `description` when a binding should be strict and editor-visible.
233
231
 
234
232
  ```yaml
235
233
  - id: build
236
234
  command: bun run build
237
235
  outputs:
238
- bundlePath: { from: json.bundlePath }
236
+ bundlePath:
237
+ from: json.bundlePath
238
+ type: string
239
239
 
240
240
  - id: test
241
241
  depends_on: [build]
@@ -244,17 +244,18 @@ Use task-level `inputs` / `outputs` for ordinary parameter passing. They are tas
244
244
  bundlePath:
245
245
  from: t.build.outputs.bundlePath
246
246
  required: true
247
+ type: string
247
248
  ```
248
249
 
249
- Input bindings support `value`, `from`, `default`, and `required`. `from` accepts `taskId.outputs.name`, `taskId.stdout`, `taskId.stderr`, `taskId.normalizedOutput`, `taskId.exitCode`, or `outputs.name` to name-match direct upstream outputs.
250
+ Input bindings support `value`, `from`, `default`, `required`, optional `type`, `enum`, and `description`. `from` accepts `taskId.outputs.name`, `taskId.stdout`, `taskId.stderr`, `taskId.normalizedOutput`, `taskId.exitCode`, or `outputs.name` to name-match direct upstream outputs.
250
251
 
251
- Output bindings support `value`, `from`, and `default`. `from` defaults to `json.<outputName>` and also accepts `stdout`, `stderr`, or `normalizedOutput`.
252
+ Output bindings support `value`, `from`, `default`, optional `type`, `enum`, and `description`. `from` defaults to `json.<outputName>` and also accepts `stdout`, `stderr`, or `normalizedOutput`.
252
253
 
253
- Use `ports` instead when downstream tasks need required typed values, the editor should present a stable I/O contract, or prompt tasks should receive `[Inputs]` / `[Output Format]` blocks.
254
+ Prompt tasks infer their structured input/output contract from neighboring command tasks that use typed `outputs` / `inputs`. The engine renders `[Inputs]` and `[Output Format]` blocks from that inferred contract.
254
255
 
255
256
  ---
256
257
 
257
- ### Typed Ports
258
+ ### Typed Binding Example
258
259
 
259
260
  Tasks can declare named, typed `inputs` / `outputs`. Inputs flow in from upstream task outputs; outputs are extracted from a task's stdout (or the AI driver's `normalizedOutput`) on success.
260
261
 
@@ -262,40 +263,50 @@ Tasks can declare named, typed `inputs` / `outputs`. Inputs flow in from upstrea
262
263
  - id: lookup-weather
263
264
  name: Lookup weather
264
265
  command: weather.sh --city "{{inputs.city}}"
265
- ports:
266
- inputs:
267
- - { name: city, type: string, required: true, description: Target city }
268
- outputs:
269
- - { name: temperature, type: number, description: Current temperature in Celsius }
270
- - { name: conditions, type: enum, enum: [sunny, cloudy, rain, snow] }
266
+ inputs:
267
+ city:
268
+ type: string
269
+ required: true
270
+ description: Target city
271
+ outputs:
272
+ temperature:
273
+ type: number
274
+ description: Current temperature in Celsius
275
+ conditions:
276
+ type: enum
277
+ enum: [sunny, cloudy, rain, snow]
271
278
 
272
279
  - id: write-report
273
280
  depends_on: [lookup-weather]
274
281
  prompt: 'Write a brief weather report for {{inputs.city}}.'
275
- ports:
276
- inputs:
277
- - { name: city, type: string, required: true }
278
- - { name: temperature, type: number, required: true }
279
- - { name: conditions, type: enum, enum: [sunny, cloudy, rain, snow] }
282
+ inputs:
283
+ city: { from: t.lookup-weather.outputs.city, type: string, required: true }
284
+ temperature: { from: t.lookup-weather.outputs.temperature, type: number, required: true }
285
+ conditions:
286
+ from: t.lookup-weather.outputs.conditions
287
+ type: enum
288
+ enum: [sunny, cloudy, rain, snow]
280
289
  ```
281
290
 
282
- #### `PortDef` fields
291
+ #### Binding fields
283
292
 
284
293
  | Field | Type | Required | Description |
285
294
  | ------------- | ----------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
286
- | `name` | `string` | Yes | Port name; also the substitution key (`{{inputs.<name>}}`) |
287
- | `type` | `'string' \| 'number' \| 'boolean' \| 'enum' \| 'json'` | Yes | Coercion type. Mismatched values block the task with a typed-error diagnostic |
295
+ | `value` | `unknown` | No | Literal value. For inputs, this wins over `from` |
296
+ | `from` | `string` | No | Inputs: upstream source such as `taskId.outputs.name`, `taskId.stdout`, or `outputs.name`. Outputs: `json.<key>`, `stdout`, `stderr`, or `normalizedOutput` |
297
+ | `default` | `unknown` | No | Fallback value when the source is missing |
298
+ | `required` | `boolean` | Inputs only | When `true`, missing upstream value and no `default` blocks the task |
299
+ | `type` | `'string' \| 'number' \| 'boolean' \| 'enum' \| 'json'` | No | Optional coercion type. Omit it for pass-through values |
288
300
  | `description` | `string` | No | Free-text description; rendered into the `[Inputs]` / `[Output Format]` blocks |
289
- | `required` | `boolean` | No | Inputs only. When `true`, missing upstream value (and no `default`) blocks the task |
290
- | `default` | `unknown` | No | Inputs only. Fallback value when no upstream produces the port |
291
301
  | `enum` | `string[]` | When `type: enum` | Allowed values |
292
- | `from` | `string` | No | Inputs only. Explicit upstream binding — bare `portName` (match by name) or `taskId.portName` (fully qualified). Unset = match by name across all direct upstreams; ambiguous matches block |
293
302
 
294
303
  #### Substitution and AI prompt blocks
295
304
 
296
305
  - `{{inputs.<name>}}` is expanded verbatim in `command` and `prompt` strings before execution. Quote your placeholders in command lines (`--city "{{inputs.city}}"`) — the engine does not shell-escape.
297
- - AI tasks additionally get two prepended `PromptContextBlock`s: `[Output Format]` (instructs the model to emit a final-line JSON object matching the declared outputs) and `[Inputs]` (renders the resolved inputs as `name: value # description`). Tasks without ports get no extra blocks.
298
- - Output extraction strategy: prefer `normalizedOutput` (AI tasks), fall back to stdout (command tasks). Find the last non-empty line that parses as a JSON object, then read each declared output key. Failures append a diagnostic to stderr; the port is absent from `outputs` and downstream tasks see it as missing.
306
+ - AI tasks get `[Output Format]` and `[Inputs]` blocks when typed bindings can be inferred from neighboring command tasks.
307
+ - Output extraction strategy: prefer `normalizedOutput` (AI tasks), fall back to stdout (command tasks). Find the last non-empty line that parses as a JSON object, then read each declared output key. Failures append a diagnostic to stderr; the binding is absent from `outputs` and downstream tasks see it as missing.
308
+
309
+ YAML `ports` has been replaced by typed `inputs` / `outputs`. `validateRaw` reports any `ports` field as a migration error.
299
310
 
300
311
  ---
301
312
 
@@ -363,9 +374,10 @@ Tasks can declare named, typed `inputs` / `outputs`. Inputs flow in from upstrea
363
374
  ### Root: `@tagma/sdk`
364
375
 
365
376
  - `createTagma(options?)`
377
+ - `bunRuntime()`
366
378
  - `definePipeline(pipeline)`
367
379
  - `PluginRegistry`
368
- - stable pipeline/result/event types
380
+ - stable pipeline/result/event/plugin/runtime types, including `TagmaPlugin` and `TagmaRuntime`
369
381
  - trigger error classes
370
382
 
371
383
  ### YAML: `@tagma/sdk/yaml`
@@ -391,10 +403,10 @@ Tasks can declare named, typed `inputs` / `outputs`. Inputs flow in from upstrea
391
403
  - raw validation helpers
392
404
  - task reference helpers
393
405
 
394
- ### Ports: `@tagma/sdk/ports`
406
+ ### Dataflow helpers: `@tagma/sdk/ports`
395
407
 
396
- - current dataflow helpers for placeholder substitution, binding resolution,
397
- output extraction, and prompt-port inference
408
+ - placeholder substitution, binding resolution, output extraction, and internal prompt-contract inference
409
+ - the subpath name is historical; YAML `ports` is rejected by validation
398
410
 
399
411
  ### `bootstrapBuiltins(registry)`
400
412
 
@@ -404,6 +416,17 @@ Registers all built-in plugins (opencode driver, file/manual triggers, completio
404
416
 
405
417
  Parses YAML, resolves inheritance, and validates the configuration.
406
418
 
419
+ ### `createTagma(options?)`
420
+
421
+ Creates an isolated SDK instance with its own plugin registry.
422
+
423
+ Options:
424
+
425
+ - `registry` -- use an existing `PluginRegistry` instance
426
+ - `builtins` -- register built-in plugins into the instance registry; defaults to `true`
427
+ - `plugins` -- register package-level `TagmaPlugin` capability objects into the instance registry
428
+ - `runtime` -- override command/driver process execution; defaults to `bunRuntime()`
429
+
407
430
  ### `createTagma().run(config, options): Promise<EngineResult>`
408
431
 
409
432
  Executes the pipeline. Returns `{ success, runId, logPath, summary, states }`.
@@ -414,7 +437,7 @@ Options:
414
437
  - `signal` -- `AbortSignal` to cancel the run externally
415
438
  - `onEvent` -- callback for real-time `RunEventPayload` updates. Every payload carries `runId`. The editor server stamps a per-run `seq` on top of this payload before broadcasting over SSE (producing a `WireRunEvent`); the SDK itself does not stamp `seq`. Event variants:
416
439
  - `run_start` — pipeline approved and all tasks transitioned to `waiting`; includes `tasks: RunTaskState[]` (wire-shape snapshot of every task). Fires only when the `pipeline_start` hook allows the run — blocked pipelines emit no wire events at all.
417
- - `task_update` — a task's status or result changed; flat fields (`status`, `startedAt?`, `finishedAt?`, `durationMs?`, `exitCode?`, `stdout?`, `stderr?`, `stdoutPath?`, `stderrPath?`, `stdoutBytes?`, `stderrBytes?`, `sessionId?`, `normalizedOutput?`, `outputs?`, `inputs?`, `resolvedDriver?`, `resolvedModel?`, `resolvedPermissions?`) so clients can fold partial updates with `??` semantics. `inputs` carries the resolved port input map (set once just before the task transitions to `running`); `outputs` carries the extracted port output map after a successful terminal transition. `startedAt` is populated before the `running` transition; `finishedAt` and result fields are populated before any terminal-status transition. Terminal-state locking in the engine guarantees at most one terminal event per task.
440
+ - `task_update` — a task's status or result changed; flat fields (`status`, `startedAt?`, `finishedAt?`, `durationMs?`, `exitCode?`, `stdout?`, `stderr?`, `stdoutPath?`, `stderrPath?`, `stdoutBytes?`, `stderrBytes?`, `sessionId?`, `normalizedOutput?`, `outputs?`, `inputs?`, `resolvedDriver?`, `resolvedModel?`, `resolvedPermissions?`) so clients can fold partial updates with `??` semantics. `inputs` carries the resolved task input map (set once just before the task transitions to `running`); `outputs` carries the extracted binding output map after a successful terminal transition. `startedAt` is populated before the `running` transition; `finishedAt` and result fields are populated before any terminal-status transition. Terminal-state locking in the engine guarantees at most one terminal event per task.
418
441
  - `task_log` — a structured log line was written to `pipeline.log`. Mirrors every `Logger` call (info/warn/error/debug/section/quiet) and carries `{ taskId: string | null, level, timestamp, text }`. `taskId` is non-null for lines tagged with a `[task:<id>]` prefix (or passed explicitly to `section`/`quiet`) and `null` for pipeline-wide messages such as the configuration dump and DAG topology. Use this to stream the full run process into UIs without tailing the log file.
419
442
  - `run_end` — pipeline finished; includes `success: boolean` and `abortReason: 'timeout' | 'stop_all' | 'external' | null`. `null` means the run completed on its own steam (success may still be `false` if tasks failed).
420
443
  - `run_error` — reserved for fatal engine errors surfaced over the wire.
@@ -460,7 +483,7 @@ Properties:
460
483
 
461
484
  Typed error classes for trigger plugin error classification. The engine uses `instanceof` checks on these to set the correct task status (`blocked` or `timeout`) instead of matching on error message substrings.
462
485
 
463
- Built-in triggers (`manual`, `file`) throw these automatically. Third-party trigger plugins should throw `TriggerBlockedError` for user/policy rejections and `TriggerTimeoutError` for genuine wait timeouts. Plugins that throw plain `Error` still work — the engine falls back to string matching for backward compatibility, but typed errors are preferred to avoid misclassification from coincidental substrings.
486
+ Built-in triggers (`manual`, `file`) throw these automatically. Trigger plugins should throw `TriggerBlockedError` for user/policy rejections and `TriggerTimeoutError` for genuine wait timeouts.
464
487
 
465
488
  ```ts
466
489
  import { TriggerBlockedError, TriggerTimeoutError } from '@tagma/sdk';
@@ -470,13 +493,30 @@ throw new TriggerBlockedError('Access denied by policy');
470
493
  throw new TriggerTimeoutError('File did not appear within 30s');
471
494
  ```
472
495
 
473
- ### `PluginRegistry.loadPlugins(names): Promise<void>`
496
+ ### `PluginRegistry.loadPlugins(names, resolveFrom?): Promise<void>`
497
+
498
+ Dynamically loads and registers external plugin packages. Each package must default-export a `TagmaPlugin` with capability maps.
499
+
500
+ ```ts
501
+ export default {
502
+ name: '@tagma/trigger-http',
503
+ capabilities: {
504
+ triggers: {
505
+ http: HttpTrigger,
506
+ },
507
+ },
508
+ } satisfies TagmaPlugin;
509
+ ```
510
+
511
+ Pass `resolveFrom` when plugins are installed in a workspace-local `node_modules`.
512
+
513
+ ### `PluginRegistry.registerTagmaPlugin(plugin): RegisteredCapability[]`
474
514
 
475
- Dynamically loads and registers external plugin packages.
515
+ Registers every supported capability from a `TagmaPlugin` default export.
476
516
 
477
517
  ### `PluginRegistry.registerPlugin(category, type, handler): void`
478
518
 
479
- Registers a plugin handler manually. Idempotent duplicate registrations are silently ignored.
519
+ Registers one capability handler manually. Prefer `registerTagmaPlugin()` for package-level plugins.
480
520
 
481
521
  Plugin handlers (`TriggerPlugin`, `CompletionPlugin`, `MiddlewarePlugin`) may optionally expose a declarative `schema: PluginSchema` field so visual editors can render a typed form for the plugin's config instead of a raw key/value editor:
482
522
 
@@ -612,9 +652,9 @@ Validates a resolved pipeline config without executing it. Checks DAG structure
612
652
 
613
653
  Use `validateRaw` for editing raw configs in a UI; use `validateConfig` after `resolveConfig` for a final pre-run check.
614
654
 
615
- ### Bindings And Ports API
655
+ ### Bindings API
616
656
 
617
- Pure helpers backing lightweight bindings and `task.ports`. Safe to use in editors, simulators, and custom drivers — no I/O, no side effects.
657
+ Pure helpers backing typed task bindings and internal prompt-contract inference. Safe to use in editors, simulators, and custom drivers — no I/O, no side effects.
618
658
 
619
659
  | Function | Description |
620
660
  | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -623,7 +663,7 @@ Pure helpers backing lightweight bindings and `task.ports`. Safe to use in edito
623
663
  | `resolveTaskBindingInputs(task, upstreamData, dependsOn)` | Resolve lightweight task-level `inputs` from literal values, upstream outputs, stdout/stderr, normalized output, defaults, and required flags |
624
664
  | `resolveTaskInputs(task, upstreamOutputs, dependsOn)` | Gather the input values a task will consume from its direct upstreams. Applies `from` bindings, defaults, and type coercion. Returns `{ kind: 'ready', inputs, missingOptional }` or `{ kind: 'blocked', missingRequired, ambiguous, typeErrors, reason }` |
625
665
  | `extractTaskBindingOutputs(outputs, stdout, stderr, normalizedOutput)` | Publish lightweight task-level `outputs` from final-line JSON, stdout/stderr, normalized output, literal values, or defaults |
626
- | `extractTaskOutputs(ports, stdout, normalizedOutput)` | Pull declared output values from a terminated task's output. Strategy: prefer `normalizedOutput`; find the last non-empty line that parses as a JSON object; coerce each declared key. Returns `{ outputs, diagnostic }` |
666
+ | `extractTaskOutputs(ports, stdout, normalizedOutput)` | Internal helper for inferred prompt contracts. Strategy: prefer `normalizedOutput`; find the last non-empty line that parses as a JSON object; coerce each declared key. Returns `{ outputs, diagnostic }` |
627
667
  | `prependContext(doc, block)` | Same shape as `appendContext` but prepends; the engine uses this to place `[Output Format]` and `[Inputs]` blocks before middleware-added context |
628
668
  | `renderInputsBlock(inputsDecl, values)` | Build the `[Inputs]` `PromptContextBlock` rendered into AI prompts (`name: value # description` lines). Returns `null` when no inputs to render |
629
669
  | `renderOutputSchemaBlock(outputsDecl)` | Build the `[Output Format]` `PromptContextBlock` instructing the model to emit a final-line JSON object matching the declared outputs. Returns `null` when no outputs declared |
@@ -634,7 +674,7 @@ Custom drivers that wrap the prompt in their own envelope can read `DriverContex
634
674
 
635
675
  Validates a raw pipeline config without resolving inheritance or executing anything. Returns a flat list of `{ path, message, severity? }` objects — empty array means valid. `severity` is `'error'` (default, fatal) or `'warning'` (soft hint; non-blocking).
636
676
 
637
- Checks: required fields, `prompt`/`command` exclusivity, duplicate task IDs within a track, `depends_on`/`continue_from` reference integrity (including ambiguous bare refs that exist in multiple tracks — use `trackId.taskId` to disambiguate), circular dependency detection, port shape (name format, valid `type`, duplicate names, `enum` requires non-empty `enum` array, `required`/`from` ignored on outputs), `{{inputs.<name>}}` references resolving to a declared input port, and `permissions` shape (must be an object with boolean `read`/`write`/`execute`). Tolerant of half-built configs — non-array `tracks` or `tasks` produce a structured error instead of throwing.
677
+ Checks: required fields, `prompt`/`command` exclusivity, duplicate task IDs within a track, `depends_on`/`continue_from` reference integrity (including ambiguous bare refs that exist in multiple tracks — use `trackId.taskId` to disambiguate), circular dependency detection, binding shape (name format, valid `type`, duplicate names, `enum` requires non-empty `enum` array), `ports` migration errors, `{{inputs.<name>}}` references resolving to a declared or inferred input binding, and `permissions` shape (must be an object with boolean `read`/`write`/`execute`). Tolerant of half-built configs — non-array `tracks` or `tasks` produce a structured error instead of throwing.
638
678
 
639
679
  Plugin-type checks are opt-in via `knownTypes`: when provided, references to trigger/completion/middleware/driver types that are neither built-in nor in the supplied set produce a **warning** (`severity: 'warning'`) so editors can light up uninstalled plugins without blocking save / run. Omit `knownTypes` for offline / pre-load validation — no plugin warnings are emitted in that case.
640
680
 
@@ -1,4 +1,24 @@
1
1
  import type { PluginRegistry } from './registry';
2
+ export declare const BuiltinTagmaPlugin: {
3
+ name: string;
4
+ capabilities: {
5
+ drivers: {
6
+ opencode: import("@tagma/types").DriverPlugin;
7
+ };
8
+ triggers: {
9
+ file: import("@tagma/types").TriggerPlugin;
10
+ manual: import("@tagma/types").TriggerPlugin;
11
+ };
12
+ completions: {
13
+ exit_code: import("@tagma/types").CompletionPlugin;
14
+ file_exists: import("@tagma/types").CompletionPlugin;
15
+ output_check: import("@tagma/types").CompletionPlugin;
16
+ };
17
+ middlewares: {
18
+ static_context: import("@tagma/types").MiddlewarePlugin;
19
+ };
20
+ };
21
+ };
2
22
  /**
3
23
  * Register every built-in plugin into `target`. Hosts instantiate one
4
24
  * PluginRegistry per workspace or SDK instance and call this once per
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqBjD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAe9D"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsBjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AAExB;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAE9D"}
package/dist/bootstrap.js CHANGED
@@ -13,6 +13,26 @@ import { FileExistsCompletion } from './completions/file-exists';
13
13
  import { OutputCheckCompletion } from './completions/output-check';
14
14
  // Built-in Middleware
15
15
  import { StaticContextMiddleware } from './middlewares/static-context';
16
+ export const BuiltinTagmaPlugin = {
17
+ name: '@tagma/sdk/builtins',
18
+ capabilities: {
19
+ drivers: {
20
+ opencode: OpenCodeDriver,
21
+ },
22
+ triggers: {
23
+ file: FileTrigger,
24
+ manual: ManualTrigger,
25
+ },
26
+ completions: {
27
+ exit_code: ExitCodeCompletion,
28
+ file_exists: FileExistsCompletion,
29
+ output_check: OutputCheckCompletion,
30
+ },
31
+ middlewares: {
32
+ static_context: StaticContextMiddleware,
33
+ },
34
+ },
35
+ };
16
36
  /**
17
37
  * Register every built-in plugin into `target`. Hosts instantiate one
18
38
  * PluginRegistry per workspace or SDK instance and call this once per
@@ -23,16 +43,6 @@ import { StaticContextMiddleware } from './middlewares/static-context';
23
43
  * handler object into N registries is cheap and safe; no cloning is needed.
24
44
  */
25
45
  export function bootstrapBuiltins(target) {
26
- // Drivers
27
- target.registerPlugin('drivers', 'opencode', OpenCodeDriver);
28
- // Triggers
29
- target.registerPlugin('triggers', 'file', FileTrigger);
30
- target.registerPlugin('triggers', 'manual', ManualTrigger);
31
- // Completions
32
- target.registerPlugin('completions', 'exit_code', ExitCodeCompletion);
33
- target.registerPlugin('completions', 'file_exists', FileExistsCompletion);
34
- target.registerPlugin('completions', 'output_check', OutputCheckCompletion);
35
- // Middlewares
36
- target.registerPlugin('middlewares', 'static_context', StaticContextMiddleware);
46
+ target.registerTagmaPlugin(BuiltinTagmaPlugin);
37
47
  }
38
48
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAEA,mBAAmB;AACnB,wEAAwE;AACxE,0EAA0E;AAC1E,iCAAiC;AACjC,kEAAkE;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,UAAU;IACV,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAE7D,WAAW;IACX,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAE3D,cAAc;IACd,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACtE,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IAC1E,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAE5E,cAAc;IACd,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAGA,mBAAmB;AACnB,wEAAwE;AACxE,0EAA0E;AAC1E,iCAAiC;AACjC,kEAAkE;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,qBAAqB;IAC3B,YAAY,EAAE;QACZ,OAAO,EAAE;YACP,QAAQ,EAAE,cAAc;SACzB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,aAAa;SACtB;QACD,WAAW,EAAE;YACX,SAAS,EAAE,kBAAkB;YAC7B,WAAW,EAAE,oBAAoB;YACjC,YAAY,EAAE,qBAAqB;SACpC;QACD,WAAW,EAAE;YACX,cAAc,EAAE,uBAAuB;SACxC;KACF;CACoB,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../src/core/dataflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAchD,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,GACb,oBAAoB,CAoCtB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,8BAA8B,CA+BhC"}
1
+ {"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../src/core/dataflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EAGV,SAAS,EACT,UAAU,EACX,MAAM,UAAU,CAAC;AAMlB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAgDhD,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,GACb,oBAAoB,CAoCtB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,8BAA8B,CAiChC"}
@@ -5,12 +5,46 @@ function isPromptTaskConfig(task) {
5
5
  function isCommandTaskConfig(task) {
6
6
  return task.command !== undefined && task.prompt === undefined;
7
7
  }
8
+ function inputBindingsToPorts(bindings) {
9
+ if (!bindings || Object.keys(bindings).length === 0)
10
+ return undefined;
11
+ return Object.entries(bindings).map(([name, binding]) => ({
12
+ name,
13
+ type: binding.type ?? 'json',
14
+ ...(binding.description ? { description: binding.description } : {}),
15
+ ...(binding.required !== undefined ? { required: binding.required } : {}),
16
+ ...(binding.default !== undefined ? { default: binding.default } : {}),
17
+ ...(binding.enum ? { enum: [...binding.enum] } : {}),
18
+ ...(binding.from ? { from: binding.from } : {}),
19
+ }));
20
+ }
21
+ function outputBindingsToPorts(bindings) {
22
+ if (!bindings || Object.keys(bindings).length === 0)
23
+ return undefined;
24
+ return Object.entries(bindings).map(([name, binding]) => ({
25
+ name,
26
+ type: binding.type ?? 'json',
27
+ ...(binding.description ? { description: binding.description } : {}),
28
+ ...(binding.default !== undefined ? { default: binding.default } : {}),
29
+ ...(binding.enum ? { enum: [...binding.enum] } : {}),
30
+ }));
31
+ }
32
+ function taskBindingsAsPorts(task) {
33
+ const inputs = inputBindingsToPorts(task.inputs);
34
+ const outputs = outputBindingsToPorts(task.outputs);
35
+ if (!inputs && !outputs)
36
+ return undefined;
37
+ return {
38
+ ...(inputs ? { inputs } : {}),
39
+ ...(outputs ? { outputs } : {}),
40
+ };
41
+ }
8
42
  export function inferEffectivePorts(ctx, taskId) {
9
43
  const node = ctx.dag.nodes.get(taskId);
10
44
  const task = node.task;
11
45
  const isPromptTask = isPromptTaskConfig(task);
12
46
  if (!isPromptTask) {
13
- return { kind: 'ready', isPromptTask: false, effectivePorts: task.ports };
47
+ return { kind: 'ready', isPromptTask: false, effectivePorts: taskBindingsAsPorts(task) };
14
48
  }
15
49
  const inference = inferPromptPorts({
16
50
  upstreams: node.dependsOn.map((upstreamId) => {
@@ -18,7 +52,7 @@ export function inferEffectivePorts(ctx, taskId) {
18
52
  const isUpstreamCommand = upstream ? isCommandTaskConfig(upstream.task) : false;
19
53
  return {
20
54
  taskId: upstreamId,
21
- outputs: isUpstreamCommand ? upstream?.task.ports?.outputs : undefined,
55
+ outputs: isUpstreamCommand ? outputBindingsToPorts(upstream?.task.outputs) : undefined,
22
56
  };
23
57
  }),
24
58
  downstreams: (ctx.directDownstreams.get(taskId) ?? []).map((downstreamId) => {
@@ -26,7 +60,7 @@ export function inferEffectivePorts(ctx, taskId) {
26
60
  const isDownstreamCommand = downstream ? isCommandTaskConfig(downstream.task) : false;
27
61
  return {
28
62
  taskId: downstreamId,
29
- inputs: isDownstreamCommand ? downstream?.task.ports?.inputs : undefined,
63
+ inputs: isDownstreamCommand ? inputBindingsToPorts(downstream?.task.inputs) : undefined,
30
64
  };
31
65
  }),
32
66
  });
@@ -47,17 +81,19 @@ export function extractSuccessfulOutputs(options) {
47
81
  if (task.outputs && Object.keys(task.outputs).length > 0) {
48
82
  extractedOutputs = bindingExtraction.outputs;
49
83
  }
50
- const portExtraction = extractTaskOutputs(effectivePorts, result.stdout, result.normalizedOutput);
51
- if (effectivePorts?.outputs && effectivePorts.outputs.length > 0) {
52
- extractedOutputs = {
53
- ...(extractedOutputs ?? {}),
54
- ...portExtraction.outputs,
84
+ if ((!task.outputs || Object.keys(task.outputs).length === 0) && effectivePorts?.outputs?.length) {
85
+ const portExtraction = extractTaskOutputs(effectivePorts, result.stdout, result.normalizedOutput);
86
+ extractedOutputs = portExtraction.outputs;
87
+ return {
88
+ outputs: extractedOutputs,
89
+ bindingDiagnostic: bindingExtraction.diagnostic,
90
+ portDiagnostic: portExtraction.diagnostic,
55
91
  };
56
92
  }
57
93
  return {
58
94
  outputs: extractedOutputs,
59
95
  bindingDiagnostic: bindingExtraction.diagnostic,
60
- portDiagnostic: portExtraction.diagnostic,
96
+ portDiagnostic: null,
61
97
  };
62
98
  }
63
99
  //# sourceMappingURL=dataflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../src/core/dataflow.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAGlB,SAAS,kBAAkB,CACzB,IAAgB;IAEhB,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAgB;IAEhB,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;AACjE,CAAC;AAaD,MAAM,UAAU,mBAAmB,CACjC,GAAe,EACf,MAAc;IAEd,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAChF,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;aACvE,CAAC;QACJ,CAAC,CAAC;QACF,WAAW,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YAC1E,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,mBAAmB,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACtF,OAAO;gBACL,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS;aACzE,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,cAAc;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7E,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAChF,CAAC;AAcD,MAAM,UAAU,wBAAwB,CACtC,OAAwC;IAExC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACjD,IAAI,gBAAgB,GAA6C,IAAI,CAAC;IAEtE,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,gBAAgB,CACxB,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,gBAAgB,GAAG,iBAAiB,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED,MAAM,cAAc,GAAG,kBAAkB,CACvC,cAAc,EACd,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,gBAAgB,CACxB,CAAC;IACF,IAAI,cAAc,EAAE,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,gBAAgB,GAAG;YACjB,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAC3B,GAAG,cAAc,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,iBAAiB,EAAE,iBAAiB,CAAC,UAAU;QAC/C,cAAc,EAAE,cAAc,CAAC,UAAU;KAC1C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../src/core/dataflow.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { AbortReason, OnFailure, PipelineConfig, RunEventPayload, TaskState
2
2
  import type { Dag } from '../dag';
3
3
  import type { UpstreamBindingData } from '../ports';
4
4
  import { type PipelineInfo, type TaskInfo, type TrackInfo } from '../hooks';
5
+ import type { TagmaRuntime } from '../runtime';
5
6
  export interface RunContextOptions {
6
7
  readonly runId: string;
7
8
  readonly dag: Dag;
@@ -9,6 +10,7 @@ export interface RunContextOptions {
9
10
  readonly workDir: string;
10
11
  readonly pipelineInfo: PipelineInfo;
11
12
  readonly onEvent?: (event: RunEventPayload) => void;
13
+ readonly runtime: TagmaRuntime;
12
14
  }
13
15
  /**
14
16
  * Per-run state container. Owns the maps and abort tracking that
@@ -24,6 +26,7 @@ export declare class RunContext {
24
26
  readonly workDir: string;
25
27
  readonly pipelineInfo: PipelineInfo;
26
28
  readonly onEvent?: (event: RunEventPayload) => void;
29
+ readonly runtime: TagmaRuntime;
27
30
  readonly states: Map<string, TaskState>;
28
31
  readonly sessionMap: Map<string, string>;
29
32
  readonly normalizedMap: Map<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"run-context.d.ts","sourceRoot":"","sources":["../../src/core/run-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,cAAc,EACd,eAAe,EAEf,SAAS,EACT,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAUlB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAEpD,QAAQ,CAAC,MAAM,yBAAgC;IAC/C,QAAQ,CAAC,UAAU,sBAA6B;IAChD,QAAQ,CAAC,aAAa,sBAA6B;IACnD,QAAQ,CAAC,eAAe,iDAAwD;IAChF,QAAQ,CAAC,cAAc,mCAA0C;IACjE,QAAQ,CAAC,iBAAiB,iDAAwD;IAClF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,QAAQ,CAAC,eAAe,kBAAyB;IACjD,WAAW,EAAE,WAAW,GAAG,IAAI,CAAQ;gBAE3B,OAAO,EAAE,iBAAiB;IA6BtC,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAIlC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI;IAmC1D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAIvC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM;IAiB1E;;;;;OAKG;IACH,YAAY,IAAI,IAAI;IAWpB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAgB1C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKhC,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GAAG,cAAc,GACrC,OAAO,CAAC,IAAI,CAAC;CAcjB"}
1
+ {"version":3,"file":"run-context.d.ts","sourceRoot":"","sources":["../../src/core/run-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,cAAc,EACd,eAAe,EAEf,SAAS,EACT,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;CAChC;AAED;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAE/B,QAAQ,CAAC,MAAM,yBAAgC;IAC/C,QAAQ,CAAC,UAAU,sBAA6B;IAChD,QAAQ,CAAC,aAAa,sBAA6B;IACnD,QAAQ,CAAC,eAAe,iDAAwD;IAChF,QAAQ,CAAC,cAAc,mCAA0C;IACjE,QAAQ,CAAC,iBAAiB,iDAAwD;IAClF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,QAAQ,CAAC,eAAe,kBAAyB;IACjD,WAAW,EAAE,WAAW,GAAG,IAAI,CAAQ;gBAE3B,OAAO,EAAE,iBAAiB;IA8BtC,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAIlC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI;IAmC1D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAIvC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM;IAiB1E;;;;;OAKG;IACH,YAAY,IAAI,IAAI;IAWpB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAgB1C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKhC,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GAAG,cAAc,GACrC,OAAO,CAAC,IAAI,CAAC;CAcjB"}
@@ -18,6 +18,7 @@ export class RunContext {
18
18
  workDir;
19
19
  pipelineInfo;
20
20
  onEvent;
21
+ runtime;
21
22
  states = new Map();
22
23
  sessionMap = new Map();
23
24
  normalizedMap = new Map();
@@ -34,6 +35,7 @@ export class RunContext {
34
35
  this.workDir = options.workDir;
35
36
  this.pipelineInfo = options.pipelineInfo;
36
37
  this.onEvent = options.onEvent;
38
+ this.runtime = options.runtime;
37
39
  for (const [id, node] of this.dag.nodes) {
38
40
  this.states.set(id, {
39
41
  config: node.task,
@@ -1 +1 @@
1
- {"version":3,"file":"run-context.js","sourceRoot":"","sources":["../../src/core/run-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-context.js","sourceRoot":"","sources":["../../src/core/run-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/core/task-executor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgBlD,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkBhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyuB5E"}
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/core/task-executor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAWlD,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAoBhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgrB5E"}