@tagma/sdk 0.7.4 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -53
- package/dist/completions/file-exists.js +1 -1
- package/dist/completions/file-exists.js.map +1 -1
- package/dist/completions/output-check.d.ts.map +1 -1
- package/dist/completions/output-check.js +17 -4
- package/dist/completions/output-check.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/dataflow.d.ts +3 -0
- package/dist/dataflow.d.ts.map +1 -0
- package/dist/dataflow.js +2 -0
- package/dist/dataflow.js.map +1 -0
- package/dist/drivers/opencode.d.ts.map +1 -1
- package/dist/drivers/opencode.js +23 -71
- package/dist/drivers/opencode.js.map +1 -1
- package/dist/middlewares/static-context.d.ts.map +1 -1
- package/dist/middlewares/static-context.js +1 -2
- package/dist/middlewares/static-context.js.map +1 -1
- package/dist/pipeline-runner.d.ts.map +1 -1
- package/dist/pipeline-runner.js +2 -2
- package/dist/pipeline-runner.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +3 -4
- package/dist/schema.js.map +1 -1
- package/dist/triggers/file.d.ts.map +1 -1
- package/dist/triggers/file.js +1 -2
- package/dist/triggers/file.js.map +1 -1
- package/dist/triggers/manual.d.ts.map +1 -1
- package/dist/triggers/manual.js +1 -2
- package/dist/triggers/manual.js.map +1 -1
- package/dist/types.d.ts +1 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -12
- package/dist/types.js.map +1 -1
- package/dist/utils-api.d.ts +1 -1
- package/dist/utils-api.d.ts.map +1 -1
- package/dist/utils-api.js +1 -1
- package/dist/utils-api.js.map +1 -1
- package/dist/validate-raw.d.ts.map +1 -1
- package/dist/validate-raw.js +5 -12
- package/dist/validate-raw.js.map +1 -1
- package/package.json +11 -24
- package/dist/adapters/stdin-approval.d.ts +0 -2
- package/dist/adapters/stdin-approval.d.ts.map +0 -1
- package/dist/adapters/stdin-approval.js +0 -2
- package/dist/adapters/stdin-approval.js.map +0 -1
- package/dist/adapters/websocket-approval.d.ts +0 -2
- package/dist/adapters/websocket-approval.d.ts.map +0 -1
- package/dist/adapters/websocket-approval.js +0 -2
- package/dist/adapters/websocket-approval.js.map +0 -1
- package/dist/core/dataflow.d.ts +0 -23
- package/dist/core/dataflow.d.ts.map +0 -1
- package/dist/core/dataflow.js +0 -99
- package/dist/core/dataflow.js.map +0 -1
- package/dist/core/log-prune.d.ts +0 -16
- package/dist/core/log-prune.d.ts.map +0 -1
- package/dist/core/log-prune.js +0 -34
- package/dist/core/log-prune.js.map +0 -1
- package/dist/core/preflight.d.ts +0 -13
- package/dist/core/preflight.d.ts.map +0 -1
- package/dist/core/preflight.js +0 -61
- package/dist/core/preflight.js.map +0 -1
- package/dist/core/run-context.d.ts +0 -55
- package/dist/core/run-context.d.ts.map +0 -1
- package/dist/core/run-context.js +0 -158
- package/dist/core/run-context.js.map +0 -1
- package/dist/core/run-state.d.ts +0 -25
- package/dist/core/run-state.d.ts.map +0 -1
- package/dist/core/run-state.js +0 -93
- package/dist/core/run-state.js.map +0 -1
- package/dist/core/scheduler.d.ts +0 -13
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js +0 -35
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/task-executor.d.ts +0 -13
- package/dist/core/task-executor.d.ts.map +0 -1
- package/dist/core/task-executor.js +0 -610
- package/dist/core/task-executor.js.map +0 -1
- package/dist/core/trigger-errors.d.ts +0 -9
- package/dist/core/trigger-errors.d.ts.map +0 -1
- package/dist/core/trigger-errors.js +0 -15
- package/dist/core/trigger-errors.js.map +0 -1
- package/dist/dag.d.ts +0 -45
- package/dist/dag.d.ts.map +0 -1
- package/dist/dag.js +0 -177
- package/dist/dag.js.map +0 -1
- package/dist/hooks.d.ts +0 -73
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -106
- package/dist/hooks.js.map +0 -1
- package/dist/pipeline-definition.d.ts +0 -3
- package/dist/pipeline-definition.d.ts.map +0 -1
- package/dist/pipeline-definition.js +0 -4
- package/dist/pipeline-definition.js.map +0 -1
- package/dist/ports.d.ts +0 -196
- package/dist/ports.d.ts.map +0 -1
- package/dist/ports.js +0 -688
- package/dist/ports.js.map +0 -1
- package/dist/prompt-doc.d.ts +0 -70
- package/dist/prompt-doc.d.ts.map +0 -1
- package/dist/prompt-doc.js +0 -154
- package/dist/prompt-doc.js.map +0 -1
- package/dist/registry.d.ts +0 -3
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -2
- package/dist/registry.js.map +0 -1
- package/dist/task-ref.d.ts +0 -55
- package/dist/task-ref.d.ts.map +0 -1
- package/dist/task-ref.js +0 -103
- package/dist/task-ref.js.map +0 -1
- package/dist/utils.d.ts +0 -13
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -177
- package/dist/utils.js.map +0 -1
- package/src/adapters/stdin-approval.ts +0 -1
- package/src/adapters/websocket-approval.ts +0 -1
- package/src/approval.ts +0 -9
- package/src/bootstrap.ts +0 -55
- package/src/completions/exit-code.ts +0 -34
- package/src/completions/file-exists.ts +0 -66
- package/src/completions/output-check.test.ts +0 -50
- package/src/completions/output-check.ts +0 -92
- package/src/config-ops.test.ts +0 -70
- package/src/config-ops.ts +0 -328
- package/src/config.ts +0 -26
- package/src/core/dataflow.test.ts +0 -166
- package/src/core/dataflow.ts +0 -161
- package/src/core/log-prune.test.ts +0 -58
- package/src/core/log-prune.ts +0 -43
- package/src/core/preflight.test.ts +0 -49
- package/src/core/preflight.ts +0 -89
- package/src/core/run-context.test.ts +0 -291
- package/src/core/run-context.ts +0 -211
- package/src/core/run-state.test.ts +0 -98
- package/src/core/run-state.ts +0 -122
- package/src/core/scheduler.test.ts +0 -83
- package/src/core/scheduler.ts +0 -42
- package/src/core/task-executor.ts +0 -752
- package/src/core/trigger-errors.ts +0 -15
- package/src/dag.test.ts +0 -56
- package/src/dag.ts +0 -245
- package/src/drivers/opencode.ts +0 -410
- package/src/engine-ports-mixed.test.ts +0 -182
- package/src/engine-ports.test.ts +0 -210
- package/src/engine-task-type.test.ts +0 -56
- package/src/engine.ts +0 -32
- package/src/hooks.ts +0 -193
- package/src/index.ts +0 -31
- package/src/logger.ts +0 -2
- package/src/middlewares/static-context.ts +0 -49
- package/src/package-split.test.ts +0 -15
- package/src/pipeline-definition.ts +0 -5
- package/src/pipeline-runner.test.ts +0 -144
- package/src/pipeline-runner.ts +0 -194
- package/src/plugin-registry.test.ts +0 -448
- package/src/plugins.ts +0 -21
- package/src/ports.test.ts +0 -678
- package/src/ports.ts +0 -925
- package/src/prompt-doc.test.ts +0 -174
- package/src/prompt-doc.ts +0 -169
- package/src/registry.ts +0 -7
- package/src/runner.test.ts +0 -142
- package/src/runner.ts +0 -1
- package/src/runtime/adapters/stdin-approval.ts +0 -1
- package/src/runtime/adapters/websocket-approval.ts +0 -1
- package/src/runtime/bun-process-runner.ts +0 -1
- package/src/runtime-adapters.test.ts +0 -10
- package/src/runtime.ts +0 -12
- package/src/schema-ports.test.ts +0 -172
- package/src/schema.test.ts +0 -213
- package/src/schema.ts +0 -379
- package/src/tagma.test.ts +0 -317
- package/src/tagma.ts +0 -67
- package/src/task-ref.test.ts +0 -401
- package/src/task-ref.ts +0 -121
- package/src/triggers/file.test.ts +0 -79
- package/src/triggers/file.ts +0 -131
- package/src/triggers/manual.ts +0 -86
- package/src/types.ts +0 -18
- package/src/utils-api.ts +0 -8
- package/src/utils.test.ts +0 -28
- package/src/utils.ts +0 -203
- package/src/validate-raw-plugin-types.test.ts +0 -60
- package/src/validate-raw-ports.test.ts +0 -136
- package/src/validate-raw.ts +0 -852
- package/src/yaml-compiler.test.ts +0 -108
- package/src/yaml-compiler.ts +0 -110
- package/src/yaml.ts +0 -11
package/README.md
CHANGED
|
@@ -147,16 +147,16 @@ pipeline:
|
|
|
147
147
|
|
|
148
148
|
### Pipeline Fields
|
|
149
149
|
|
|
150
|
-
| Field
|
|
151
|
-
|
|
|
152
|
-
| `name`
|
|
153
|
-
| `driver`
|
|
154
|
-
| `model`
|
|
155
|
-
| `permissions` | `Permissions`
|
|
156
|
-
| `timeout`
|
|
157
|
-
| `plugins`
|
|
158
|
-
| `hooks`
|
|
159
|
-
| `tracks`
|
|
150
|
+
| Field | Type | Required | Description |
|
|
151
|
+
| ------------- | --------------- | -------- | ------------------------------------------------------------------------------------------ |
|
|
152
|
+
| `name` | `string` | Yes | Pipeline name, used in logs and run IDs |
|
|
153
|
+
| `driver` | `string` | No | Default driver for all tracks/tasks (inherited). Built-in: `opencode` |
|
|
154
|
+
| `model` | `string` | No | Default model for all tracks/tasks (inherited). Exact model name, e.g. `claude-sonnet-4-6` |
|
|
155
|
+
| `permissions` | `Permissions` | No | Default permissions inherited by all tracks/tasks (see Permissions) |
|
|
156
|
+
| `timeout` | `string` | No | Pipeline-level timeout. Format: `"30s"`, `"5m"`, `"2h"` |
|
|
157
|
+
| `plugins` | `string[]` | No | External plugin packages to load, e.g. `["@tagma/driver-codex"]` |
|
|
158
|
+
| `hooks` | `HooksConfig` | No | Shell commands to run at lifecycle events (see Hooks below) |
|
|
159
|
+
| `tracks` | `TrackConfig[]` | Yes | List of parallel execution tracks |
|
|
160
160
|
|
|
161
161
|
### Hooks Fields
|
|
162
162
|
|
|
@@ -206,8 +206,8 @@ Each hook value can be a single command string or an array of commands.
|
|
|
206
206
|
| `middlewares` | `MiddlewareConfig[]` | No | Inherited from track | Middleware override. Set `[]` to disable inherited middlewares |
|
|
207
207
|
| `trigger` | `TriggerConfig` | No | — | Gate that must resolve before the task runs (see Triggers) |
|
|
208
208
|
| `completion` | `CompletionConfig` | No | — | Post-execution check to validate task output (see Completions) |
|
|
209
|
-
| `inputs` | `TaskInputBindings` | No | — | Task input bindings for `{{inputs.<name>}}`; optional `type` enables coercion/validation
|
|
210
|
-
| `outputs` | `TaskOutputBindings` | No | — | Named outputs published after success; optional `type` enables coercion/validation
|
|
209
|
+
| `inputs` | `TaskInputBindings` | No | — | Task input bindings for `{{inputs.<name>}}`; optional `type` enables coercion/validation |
|
|
210
|
+
| `outputs` | `TaskOutputBindings` | No | — | Named outputs published after success; optional `type` enables coercion/validation |
|
|
211
211
|
|
|
212
212
|
### Permissions
|
|
213
213
|
|
|
@@ -292,15 +292,15 @@ Tasks can declare named, typed `inputs` / `outputs`. Inputs flow in from upstrea
|
|
|
292
292
|
|
|
293
293
|
#### Binding fields
|
|
294
294
|
|
|
295
|
-
| Field | Type
|
|
296
|
-
| ------------- |
|
|
297
|
-
| `value` | `unknown`
|
|
298
|
-
| `from` | `string`
|
|
299
|
-
| `default` | `unknown`
|
|
300
|
-
| `required` | `boolean`
|
|
301
|
-
| `type` | `'string' \| 'number' \| 'boolean' \| 'enum' \| 'json'` | No
|
|
302
|
-
| `description` | `string`
|
|
303
|
-
| `enum` | `string[]`
|
|
295
|
+
| Field | Type | Required | Description |
|
|
296
|
+
| ------------- | ------------------------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
297
|
+
| `value` | `unknown` | No | Literal value. For inputs, this wins over `from` |
|
|
298
|
+
| `from` | `string` | No | Inputs: upstream source such as `taskId.outputs.name`, `taskId.stdout`, or `outputs.name`. Outputs: `json.<key>`, `stdout`, `stderr`, or `normalizedOutput` |
|
|
299
|
+
| `default` | `unknown` | No | Fallback value when the source is missing |
|
|
300
|
+
| `required` | `boolean` | Inputs only | When `true`, missing upstream value and no `default` blocks the task |
|
|
301
|
+
| `type` | `'string' \| 'number' \| 'boolean' \| 'enum' \| 'json'` | No | Optional coercion type. Omit it for pass-through values |
|
|
302
|
+
| `description` | `string` | No | Free-text description; rendered into the `[Inputs]` / `[Output Format]` blocks |
|
|
303
|
+
| `enum` | `string[]` | When `type: enum` | Allowed values |
|
|
304
304
|
|
|
305
305
|
#### Substitution and AI prompt blocks
|
|
306
306
|
|
|
@@ -308,8 +308,6 @@ Tasks can declare named, typed `inputs` / `outputs`. Inputs flow in from upstrea
|
|
|
308
308
|
- AI tasks get `[Output Format]` and `[Inputs]` blocks when typed bindings can be inferred from neighboring command tasks.
|
|
309
309
|
- 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.
|
|
310
310
|
|
|
311
|
-
YAML `ports` has been replaced by typed `inputs` / `outputs`. `validateRaw` reports any `ports` field as a migration error.
|
|
312
|
-
|
|
313
311
|
---
|
|
314
312
|
|
|
315
313
|
### Built-in Triggers
|
|
@@ -405,16 +403,15 @@ YAML `ports` has been replaced by typed `inputs` / `outputs`. `validateRaw` repo
|
|
|
405
403
|
- raw validation helpers
|
|
406
404
|
- task reference helpers
|
|
407
405
|
|
|
408
|
-
### Dataflow helpers: `@tagma/sdk/
|
|
406
|
+
### Dataflow helpers: `@tagma/sdk/dataflow`
|
|
409
407
|
|
|
410
408
|
- placeholder substitution, binding resolution, output extraction, and internal prompt-contract inference
|
|
411
|
-
-
|
|
409
|
+
- stable public subpath for pure dataflow helpers; no runtime/process imports
|
|
412
410
|
|
|
413
411
|
### Runtime approval adapters
|
|
414
412
|
|
|
415
413
|
- `@tagma/sdk/runtime/adapters/stdin-approval`
|
|
416
414
|
- `@tagma/sdk/runtime/adapters/websocket-approval`
|
|
417
|
-
- the older `@tagma/sdk/adapters/*` subpaths remain thin compatibility re-exports
|
|
418
415
|
|
|
419
416
|
### Split packages
|
|
420
417
|
|
|
@@ -600,9 +597,7 @@ import {
|
|
|
600
597
|
moveTask,
|
|
601
598
|
transferTask,
|
|
602
599
|
} from '@tagma/sdk/config';
|
|
603
|
-
import {
|
|
604
|
-
serializePipeline,
|
|
605
|
-
} from '@tagma/sdk/yaml';
|
|
600
|
+
import { serializePipeline } from '@tagma/sdk/yaml';
|
|
606
601
|
|
|
607
602
|
// Build a config programmatically
|
|
608
603
|
let config = createEmptyPipeline('my-pipeline');
|
|
@@ -613,18 +608,18 @@ config = upsertTask(config, 'backend', { id: 'implement', prompt: 'Add /health e
|
|
|
613
608
|
const yaml = serializePipeline(config);
|
|
614
609
|
```
|
|
615
610
|
|
|
616
|
-
| Function | Description
|
|
617
|
-
| -------------------------------------------------------------------- |
|
|
618
|
-
| `createEmptyPipeline(name)` | Create a minimal pipeline config
|
|
619
|
-
| `setPipelineField(config, fields)` | Update top-level pipeline fields
|
|
620
|
-
| `upsertTrack(config, track)` | Insert or replace a track by id
|
|
621
|
-
| `removeTrack(config, trackId)` | Remove a track
|
|
622
|
-
| `moveTrack(config, trackId, toIndex)` | Reorder a track
|
|
623
|
-
| `updateTrack(config, trackId, fields)` | Patch track fields (not tasks)
|
|
624
|
-
| `upsertTask(config, trackId, task)` | Insert or replace a task
|
|
625
|
-
| `removeTask(config, trackId, taskId, cleanRefs?)` | Remove a task; pass `cleanRefs: true` to also strip dangling `depends_on` / `continue_from` references. Only refs that resolve to the deleted task are removed — same-named tasks in other tracks are unaffected
|
|
626
|
-
| `moveTask(config, trackId, taskId, toIndex)` | Reorder a task within its track
|
|
627
|
-
| `transferTask(config, fromTrackId, taskId, toTrackId, qualifyRefs?)` | Move a task across tracks (see invariants below)
|
|
611
|
+
| Function | Description |
|
|
612
|
+
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
613
|
+
| `createEmptyPipeline(name)` | Create a minimal pipeline config |
|
|
614
|
+
| `setPipelineField(config, fields)` | Update top-level pipeline fields |
|
|
615
|
+
| `upsertTrack(config, track)` | Insert or replace a track by id |
|
|
616
|
+
| `removeTrack(config, trackId)` | Remove a track |
|
|
617
|
+
| `moveTrack(config, trackId, toIndex)` | Reorder a track |
|
|
618
|
+
| `updateTrack(config, trackId, fields)` | Patch track fields (not tasks) |
|
|
619
|
+
| `upsertTask(config, trackId, task)` | Insert or replace a task |
|
|
620
|
+
| `removeTask(config, trackId, taskId, cleanRefs?)` | Remove a task; pass `cleanRefs: true` to also strip dangling `depends_on` / `continue_from` references. Only refs that resolve to the deleted task are removed — same-named tasks in other tracks are unaffected |
|
|
621
|
+
| `moveTask(config, trackId, taskId, toIndex)` | Reorder a task within its track |
|
|
622
|
+
| `transferTask(config, fromTrackId, taskId, toTrackId, qualifyRefs?)` | Move a task across tracks (see invariants below) |
|
|
628
623
|
|
|
629
624
|
`transferTask` invariants — the call is a **no-op** (returns the input config unchanged) when:
|
|
630
625
|
|
|
@@ -672,17 +667,17 @@ Use `validateRaw` for editing raw configs in a UI; use `validateConfig` after `r
|
|
|
672
667
|
|
|
673
668
|
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.
|
|
674
669
|
|
|
675
|
-
| Function
|
|
676
|
-
|
|
|
677
|
-
| `substituteInputs(text, inputs)`
|
|
678
|
-
| `extractInputReferences(text)`
|
|
679
|
-
| `resolveTaskBindingInputs(task, upstreamData, dependsOn)`
|
|
680
|
-
| `resolveTaskInputs(task, upstreamOutputs, dependsOn)`
|
|
681
|
-
| `extractTaskBindingOutputs(outputs, stdout, stderr, normalizedOutput)` | Publish lightweight task-level `outputs` from final-line JSON, stdout/stderr, normalized output, literal values, or defaults
|
|
682
|
-
| `extractTaskOutputs(ports, stdout, normalizedOutput)`
|
|
683
|
-
| `prependContext(doc, block)`
|
|
684
|
-
| `renderInputsBlock(inputsDecl, values)`
|
|
685
|
-
| `renderOutputSchemaBlock(outputsDecl)`
|
|
670
|
+
| Function | Description |
|
|
671
|
+
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
672
|
+
| `substituteInputs(text, inputs)` | Expand `{{inputs.<name>}}` placeholders in `text`. Returns `{ text, unresolved }`. Strings pass through, numbers/booleans coerce via `String(...)`, objects/arrays via `JSON.stringify`. Caller is responsible for shell quoting |
|
|
673
|
+
| `extractInputReferences(text)` | Return the set of input port names referenced by `{{inputs.<name>}}` placeholders in `text`. Use at edit time to flag undeclared references |
|
|
674
|
+
| `resolveTaskBindingInputs(task, upstreamData, dependsOn)` | Resolve lightweight task-level `inputs` from literal values, upstream outputs, stdout/stderr, normalized output, defaults, and required flags |
|
|
675
|
+
| `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 }` |
|
|
676
|
+
| `extractTaskBindingOutputs(outputs, stdout, stderr, normalizedOutput)` | Publish lightweight task-level `outputs` from final-line JSON, stdout/stderr, normalized output, literal values, or defaults |
|
|
677
|
+
| `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 }` |
|
|
678
|
+
| `prependContext(doc, block)` | Same shape as `appendContext` but prepends; the engine uses this to place `[Output Format]` and `[Inputs]` blocks before middleware-added context |
|
|
679
|
+
| `renderInputsBlock(inputsDecl, values)` | Build the `[Inputs]` `PromptContextBlock` rendered into AI prompts (`name: value # description` lines). Returns `null` when no inputs to render |
|
|
680
|
+
| `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 |
|
|
686
681
|
|
|
687
682
|
Custom drivers that wrap the prompt in their own envelope can read `DriverContext.inputs` (resolved + coerced map keyed by port name) and call `substituteInputs` themselves — the engine has already substituted into `task.prompt` upstream, so most drivers can ignore this.
|
|
688
683
|
|
|
@@ -690,7 +685,7 @@ Custom drivers that wrap the prompt in their own envelope can read `DriverContex
|
|
|
690
685
|
|
|
691
686
|
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).
|
|
692
687
|
|
|
693
|
-
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), `
|
|
688
|
+
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), `{{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.
|
|
694
689
|
|
|
695
690
|
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.
|
|
696
691
|
|
|
@@ -805,6 +800,18 @@ Truncates `text` to at most `maxBytes` UTF-8 bytes (default 16 KB), appending a
|
|
|
805
800
|
| `nowISO()` | Returns `new Date().toISOString()` |
|
|
806
801
|
| `truncateForName(text, maxLen?)` | Truncates first line to `maxLen` (default 40) for display |
|
|
807
802
|
|
|
803
|
+
## Release And Version Behavior
|
|
804
|
+
|
|
805
|
+
`@tagma/sdk` depends on `@tagma/core`, `@tagma/runtime-bun`, and `@tagma/types`, so those packages must exist on npm before publishing the SDK version that references them. Package versions may remain independent; only bump the packages whose public contract changed.
|
|
806
|
+
|
|
807
|
+
Release flow:
|
|
808
|
+
|
|
809
|
+
1. Run `bun run version <package> <patch|minor|major|x.y.z>` for each package whose public contract changed, or `bun run version all patch` when a coordinated release is useful.
|
|
810
|
+
2. Run `bun run build` and `bun run publish:dry` locally before pushing a release commit.
|
|
811
|
+
3. Publish in dependency order: `@tagma/types`, `@tagma/core`, `@tagma/runtime-bun`, plugin packages, then `@tagma/sdk`.
|
|
812
|
+
|
|
813
|
+
Published packages include `dist/` only. Each package build cleans `dist/` before TypeScript compilation so removed entry points cannot leak into the tarball.
|
|
814
|
+
|
|
808
815
|
## Related Packages
|
|
809
816
|
|
|
810
817
|
| Package | Description |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-exists.js","sourceRoot":"","sources":["../../src/completions/file-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"file-exists.js","sourceRoot":"","sources":["../../src/completions/file-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE;QACN,WAAW,EAAE,kEAAkE;QAC/E,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,kDAAkD;aAChE;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,kDAAkD;aAChE;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,CAAC;gBACN,WAAW,EAAE,8CAA8C;aAC5D;SACF;KACF;IAED,KAAK,CAAC,KAAK,CACT,MAA+B,EAC/B,OAAmB,EACnB,GAAsB;QAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAc,CAAC;QACvC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAE7E,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAErD,MAAM,IAAI,GAAI,MAAM,CAAC,IAAyB,IAAI,KAAK,CAAC;QACxD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,uEAAuE,IAAI,GAAG,CAC/E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;gBAAE,OAAO,KAAK,CAAC;YAClD,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;gBAAE,OAAO,KAAK,CAAC;YACtD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,OAAO;gBAAE,OAAO,KAAK,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;YACjD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAC1D,qEAAqE;YACrE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-check.d.ts","sourceRoot":"","sources":["../../src/completions/output-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"output-check.d.ts","sourceRoot":"","sources":["../../src/completions/output-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;AAgBhF,eAAO,MAAM,qBAAqB,EAAE,gBA0FnC,CAAC"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseDuration, shellArgs } from '@tagma/core';
|
|
2
2
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
3
|
+
async function drain(stream) {
|
|
4
|
+
if (!stream)
|
|
5
|
+
return;
|
|
6
|
+
await stream.pipeTo(new WritableStream({
|
|
7
|
+
write() {
|
|
8
|
+
// Discard check stdout; only exit status matters.
|
|
9
|
+
},
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
3
12
|
export const OutputCheckCompletion = {
|
|
4
13
|
name: 'output_check',
|
|
5
14
|
schema: {
|
|
@@ -62,9 +71,13 @@ export const OutputCheckCompletion = {
|
|
|
62
71
|
throw err;
|
|
63
72
|
}
|
|
64
73
|
}
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
const [exitCode, stderr] = await Promise.all([
|
|
74
|
+
// Drain stdout and stderr concurrently so verbose check commands cannot
|
|
75
|
+
// block on pipe buffers while the parent waits for process exit.
|
|
76
|
+
const [exitCode, , stderr] = await Promise.all([
|
|
77
|
+
proc.exited,
|
|
78
|
+
drain(proc.stdout),
|
|
79
|
+
new Response(proc.stderr).text(),
|
|
80
|
+
]);
|
|
68
81
|
if (exitCode !== 0 && stderr.trim()) {
|
|
69
82
|
console.warn(`[output_check] "${checkCmd}" exit=${exitCode}: ${stderr.trim()}`);
|
|
70
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-check.js","sourceRoot":"","sources":["../../src/completions/output-check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"output-check.js","sourceRoot":"","sources":["../../src/completions/output-check.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { createEmptyPipeline, setPipelineField, upsertTrack, removeTrack, moveTrack, updateTrack, upsertTask, removeTask, moveTask, transferTask, } from './config-ops';
|
|
2
2
|
export { validateRaw } from './validate-raw';
|
|
3
3
|
export type { ValidationError, KnownPluginTypes } from './validate-raw';
|
|
4
|
-
export { buildRawDag } from '
|
|
5
|
-
export type { RawDag, RawDagNode } from '
|
|
6
|
-
export { TASK_ID_RE, isValidTaskId, qualifyTaskId, isQualifiedRef, buildTaskIndex, resolveTaskRef, AMBIGUOUS, } from '
|
|
7
|
-
export type { TaskIndex, RefResolution } from '
|
|
4
|
+
export { buildRawDag } from '@tagma/core';
|
|
5
|
+
export type { RawDag, RawDagNode } from '@tagma/core';
|
|
6
|
+
export { TASK_ID_RE, isValidTaskId, qualifyTaskId, isQualifiedRef, buildTaskIndex, resolveTaskRef, AMBIGUOUS, } from '@tagma/core';
|
|
7
|
+
export type { TaskIndex, RefResolution } from '@tagma/core';
|
|
8
8
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createEmptyPipeline, setPipelineField, upsertTrack, removeTrack, moveTrack, updateTrack, upsertTask, removeTask, moveTask, transferTask, } from './config-ops';
|
|
2
2
|
export { validateRaw } from './validate-raw';
|
|
3
|
-
export { buildRawDag } from '
|
|
4
|
-
export { TASK_ID_RE, isValidTaskId, qualifyTaskId, isQualifiedRef, buildTaskIndex, resolveTaskRef, AMBIGUOUS, } from '
|
|
3
|
+
export { buildRawDag } from '@tagma/core';
|
|
4
|
+
export { TASK_ID_RE, isValidTaskId, qualifyTaskId, isQualifiedRef, buildTaskIndex, resolveTaskRef, AMBIGUOUS, } from '@tagma/core';
|
|
5
5
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,SAAS,GACV,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { extractInputReferences, extractTaskBindingOutputs, extractTaskOutputs, inferPromptPorts, resolveTaskBindingInputs, resolveTaskInputs, substituteInputs, } from '@tagma/core';
|
|
2
|
+
export type { BindingInputResolution, ExtractResult, InputResolution, PromptDownstreamNeighbor, PromptPortConflict, PromptPortInference, PromptUpstreamNeighbor, SubstituteResult, UpstreamBindingData, } from '@tagma/core';
|
|
3
|
+
//# sourceMappingURL=dataflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../src/dataflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
package/dist/dataflow.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../src/dataflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/drivers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAOb,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/drivers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAOb,MAAM,UAAU,CAAC;AA4JlB,eAAO,MAAM,cAAc,EAAE,YAiL5B,CAAC"}
|
package/dist/drivers/opencode.js
CHANGED
|
@@ -8,9 +8,9 @@ const DEFAULT_MODEL = 'opencode/big-pickle';
|
|
|
8
8
|
// tagma uses a provider-neutral reasoning_effort vocabulary (low|medium|high)
|
|
9
9
|
// but opencode's `--variant` is provider-specific (e.g. high|max|minimal).
|
|
10
10
|
// Map the tagma values to the closest opencode variant:
|
|
11
|
-
// low
|
|
12
|
-
// medium
|
|
13
|
-
// high
|
|
11
|
+
// low 闂?minimal (least thinking)
|
|
12
|
+
// medium 闂?<no flag, provider default>
|
|
13
|
+
// high 闂?high (most thinking)
|
|
14
14
|
// Unknown values pass through unchanged so users who target a specific
|
|
15
15
|
// opencode variant (e.g. "max") still work.
|
|
16
16
|
const EFFORT_TO_VARIANT = {
|
|
@@ -18,10 +18,8 @@ const EFFORT_TO_VARIANT = {
|
|
|
18
18
|
medium: null,
|
|
19
19
|
high: 'high',
|
|
20
20
|
};
|
|
21
|
-
// Memoize
|
|
22
|
-
//
|
|
23
|
-
// the bun-install probe for each task of a failed run would just be slow and
|
|
24
|
-
// produce confusing interleaved stderr.
|
|
21
|
+
// Memoize both success and failure so every task in a failed run reports
|
|
22
|
+
// the same setup error without re-probing.
|
|
25
23
|
let opencodeReady;
|
|
26
24
|
let opencodeReadyError;
|
|
27
25
|
let cachedDefaultModel;
|
|
@@ -39,11 +37,9 @@ async function runCapture(args) {
|
|
|
39
37
|
return { code: -1, stdout: '', stderr: '' };
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
|
-
// Shared tail for every failure message
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
// see the manual bun/npm hint.
|
|
46
|
-
const SETUP_HINT = 'If you are using the Tagma desktop app, open Editor Settings → OpenCode CLI to install or update the bundled binary. ' +
|
|
40
|
+
// Shared tail for every failure message. Desktop users get the in-app setup
|
|
41
|
+
// path first; direct SDK users still see the manual bun/npm install hint.
|
|
42
|
+
const SETUP_HINT = 'If you are using the Tagma desktop app, open Editor Settings -> OpenCode CLI to install or update the bundled binary. ' +
|
|
47
43
|
'Otherwise install it manually: `bun install -g opencode-ai` or `npm install -g opencode-ai`.';
|
|
48
44
|
async function ensureOpencodeInstalled() {
|
|
49
45
|
if (opencodeReady === true)
|
|
@@ -51,59 +47,16 @@ async function ensureOpencodeInstalled() {
|
|
|
51
47
|
if (opencodeReady === false && opencodeReadyError) {
|
|
52
48
|
throw new Error(opencodeReadyError);
|
|
53
49
|
}
|
|
54
|
-
// Probe existing install first
|
|
50
|
+
// Probe existing install first 闂?this is the hot path for desktop users
|
|
55
51
|
// (bundled binary in PATH) and for anyone who already has opencode.
|
|
56
52
|
const probe = await runCapture(['opencode', '--version']);
|
|
57
53
|
if (probe.code === 0) {
|
|
58
54
|
opencodeReady = true;
|
|
59
55
|
return;
|
|
60
56
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// would just ENOENT inside runCapture's catch and look identical to a
|
|
65
|
-
// failed install.
|
|
66
|
-
const bunProbe = await runCapture(['bun', '--version']);
|
|
67
|
-
if (bunProbe.code !== 0) {
|
|
68
|
-
opencodeReady = false;
|
|
69
|
-
opencodeReadyError = `OpenCode CLI is not available and \`bun\` is not installed. ${SETUP_HINT}`;
|
|
70
|
-
throw new Error(opencodeReadyError);
|
|
71
|
-
}
|
|
72
|
-
console.error('[driver:opencode] opencode CLI not found — installing via `bun install -g opencode-ai`... (this may take up to a minute)');
|
|
73
|
-
// Use inherit here so the user sees bun's own progress during the one-time
|
|
74
|
-
// install; runCapture would swallow it.
|
|
75
|
-
const install = Bun.spawn(['bun', 'install', '-g', 'opencode-ai'], {
|
|
76
|
-
stdout: 'inherit',
|
|
77
|
-
stderr: 'inherit',
|
|
78
|
-
});
|
|
79
|
-
const installCode = await install.exited;
|
|
80
|
-
if (installCode !== 0) {
|
|
81
|
-
opencodeReady = false;
|
|
82
|
-
opencodeReadyError = `\`bun install -g opencode-ai\` failed (exit code ${installCode}). ${SETUP_HINT}`;
|
|
83
|
-
throw new Error(opencodeReadyError);
|
|
84
|
-
}
|
|
85
|
-
// Bun installs globals under `~/.bun/bin` (or `%USERPROFILE%\.bun\bin`),
|
|
86
|
-
// which isn't on this process's cached PATH unless the user already has
|
|
87
|
-
// bun set up. Ask bun for the directory and prepend it so bare `opencode`
|
|
88
|
-
// resolves in this process without requiring a shell reload.
|
|
89
|
-
const bin = await runCapture(['bun', 'pm', 'bin', '-g']);
|
|
90
|
-
if (bin.code === 0) {
|
|
91
|
-
const dir = bin.stdout.trim();
|
|
92
|
-
const sep = process.platform === 'win32' ? ';' : ':';
|
|
93
|
-
const current = process.env.PATH ?? '';
|
|
94
|
-
if (dir && !current.split(sep).includes(dir)) {
|
|
95
|
-
process.env.PATH = `${dir}${sep}${current}`;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const verify = await runCapture(['opencode', '--version']);
|
|
99
|
-
if (verify.code !== 0) {
|
|
100
|
-
opencodeReady = false;
|
|
101
|
-
opencodeReadyError =
|
|
102
|
-
'`opencode` is not resolvable after `bun install -g opencode-ai` completed. ' +
|
|
103
|
-
"Bun's global bin directory is probably not on PATH — add it manually or restart the app.";
|
|
104
|
-
throw new Error(opencodeReadyError);
|
|
105
|
-
}
|
|
106
|
-
opencodeReady = true;
|
|
57
|
+
opencodeReady = false;
|
|
58
|
+
opencodeReadyError = `OpenCode CLI is not available on PATH. ${SETUP_HINT}`;
|
|
59
|
+
throw new Error(opencodeReadyError);
|
|
107
60
|
}
|
|
108
61
|
// `opencode models --verbose` emits "<provider>/<id>\n{...json...}\n" pairs.
|
|
109
62
|
// Walk balanced braces rather than split on newlines so we survive any
|
|
@@ -149,7 +102,7 @@ function pickFreeModel(models) {
|
|
|
149
102
|
return false;
|
|
150
103
|
return true;
|
|
151
104
|
});
|
|
152
|
-
// Prefer models explicitly labelled "-free" by the provider
|
|
105
|
+
// Prefer models explicitly labelled "-free" by the provider 闂?those are
|
|
153
106
|
// a stronger stability signal than "cost happens to be 0 right now".
|
|
154
107
|
const preferred = eligible.filter((m) => m.id?.endsWith('-free'));
|
|
155
108
|
const pool = preferred.length > 0 ? preferred : eligible;
|
|
@@ -191,17 +144,16 @@ export const OpenCodeDriver = {
|
|
|
191
144
|
},
|
|
192
145
|
async buildCommand(task, track, ctx) {
|
|
193
146
|
const explicitModel = task.model ?? track.model;
|
|
194
|
-
// Always make sure the opencode CLI is usable before we spawn it
|
|
147
|
+
// Always make sure the opencode CLI is usable before we spawn it, even
|
|
195
148
|
// when the user pinned a model. ensureOpencodeInstalled throws with an
|
|
196
|
-
// actionable message when the binary is
|
|
197
|
-
// bundles it there via runtime-paths.ts) nor installable via bun.
|
|
149
|
+
// actionable message when the binary is not present on PATH.
|
|
198
150
|
if (explicitModel)
|
|
199
151
|
await ensureOpencodeInstalled();
|
|
200
152
|
// Otherwise resolveDefaultModel both ensures the CLI and picks a free
|
|
201
153
|
// model from `opencode models --verbose` (cached per-process).
|
|
202
154
|
const model = explicitModel ?? (await resolveDefaultModel());
|
|
203
|
-
// Resolve reasoning_effort
|
|
204
|
-
// resolved task
|
|
155
|
+
// Resolve reasoning_effort 闂?opencode --variant. SDK schema layer already
|
|
156
|
+
// resolved task 闂?track 闂?pipeline inheritance, so we only need to read
|
|
205
157
|
// task.reasoning_effort here.
|
|
206
158
|
const rawEffort = task.reasoning_effort ?? track.reasoning_effort;
|
|
207
159
|
const variant = rawEffort
|
|
@@ -220,7 +172,7 @@ export const OpenCodeDriver = {
|
|
|
220
172
|
if (task.continue_from) {
|
|
221
173
|
sessionId = ctx.sessionMap.get(task.continue_from) ?? null;
|
|
222
174
|
if (!sessionId) {
|
|
223
|
-
// no session
|
|
175
|
+
// no session 闂?degrade to text context passthrough
|
|
224
176
|
let prev = null;
|
|
225
177
|
if (ctx.normalizedMap.has(task.continue_from)) {
|
|
226
178
|
prev = ctx.normalizedMap.get(task.continue_from);
|
|
@@ -236,7 +188,7 @@ export const OpenCodeDriver = {
|
|
|
236
188
|
// misread by opencode's argument parser (flag-injection mitigation).
|
|
237
189
|
// Shell-level injection is already prevented by Bun.spawn's direct argv array.
|
|
238
190
|
// Windows cmd.exe argv truncation on the `.cmd` wrapper is handled by the
|
|
239
|
-
// SDK runner's shim unwrapping
|
|
191
|
+
// SDK runner's shim unwrapping 闂?see note at the top of this file.
|
|
240
192
|
const args = [
|
|
241
193
|
'opencode',
|
|
242
194
|
'run',
|
|
@@ -259,8 +211,8 @@ export const OpenCodeDriver = {
|
|
|
259
211
|
return { args, cwd: task.cwd ?? ctx.workDir };
|
|
260
212
|
},
|
|
261
213
|
parseResult(stdout) {
|
|
262
|
-
// opencode --format json emits NDJSON
|
|
263
|
-
// (step_start / text / step_finish /
|
|
214
|
+
// opencode --format json emits NDJSON 闂?one JSON object per line
|
|
215
|
+
// (step_start / text / step_finish / 闂?. The previous single
|
|
264
216
|
// `JSON.parse(stdout)` always threw on this shape and fell through to
|
|
265
217
|
// the catch, returning sessionId:null and losing session resume.
|
|
266
218
|
// Walk line-by-line, pick up the first sessionID we see, concatenate
|
|
@@ -299,11 +251,11 @@ export const OpenCodeDriver = {
|
|
|
299
251
|
// D21: stop at the first error. Continuing meant subsequent text
|
|
300
252
|
// lines got accumulated into `textParts` only to be discarded by
|
|
301
253
|
// the error-return below, and a later `{type:"error"}` would
|
|
302
|
-
// silently overwrite the original cause
|
|
254
|
+
// silently overwrite the original cause 闂?operators then debugged
|
|
303
255
|
// a downstream symptom while the root-cause line scrolled past.
|
|
304
256
|
break;
|
|
305
257
|
}
|
|
306
|
-
// Session id
|
|
258
|
+
// Session id 闂?opencode uses `sessionID` (camelCase with capital D).
|
|
307
259
|
// Keep `session_id` / `sessionId` as fallbacks for forward/backward
|
|
308
260
|
// compatibility with other shapes.
|
|
309
261
|
if (!sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/drivers/opencode.ts"],"names":[],"mappings":"AAUA,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,yDAAyD;AAEzD,8EAA8E;AAC9E,2EAA2E;AAC3E,wDAAwD;AACxD,uCAAuC;AACvC,yCAAyC;AACzC,sCAAsC;AACtC,uEAAuE;AACvE,4CAA4C;AAC5C,MAAM,iBAAiB,GAAkC;IACvD,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,MAAM;CACb,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/drivers/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-context.d.ts","sourceRoot":"","sources":["../../src/middlewares/static-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAqC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"static-context.d.ts","sourceRoot":"","sources":["../../src/middlewares/static-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAqC,MAAM,UAAU,CAAC;AAGpF,eAAO,MAAM,uBAAuB,EAAE,gBA2CrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-context.js","sourceRoot":"","sources":["../../src/middlewares/static-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"static-context.js","sourceRoot":"","sources":["../../src/middlewares/static-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,CAAC,MAAM,uBAAuB,GAAqB;IACvD,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE;QACN,WAAW,EAAE,2DAA2D;QACxE,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,cAAc;aAC5B;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;gBACpF,WAAW,EAAE,oBAAoB;aAClC;SACF;KACF;IAED,KAAK,CAAC,UAAU,CACd,GAAmB,EACnB,MAA+B,EAC/B,GAAsB;QAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAc,CAAC;QACvC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,wBAAwB,QAAQ,sBAAsB,CAAC,CAAC;YACrE,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAI,MAAM,CAAC,KAAgB,IAAI,cAAc,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAE7E,uEAAuE;QACvE,qEAAqE;QACrE,wEAAwE;QACxE,OAAO,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;CACF,CAAC"}
|