@tagma/sdk 0.6.4 → 0.6.6

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 (57) hide show
  1. package/README.md +74 -6
  2. package/dist/engine.d.ts.map +1 -1
  3. package/dist/engine.js +194 -21
  4. package/dist/engine.js.map +1 -1
  5. package/dist/pipeline-runner.d.ts.map +1 -1
  6. package/dist/pipeline-runner.js +3 -0
  7. package/dist/pipeline-runner.js.map +1 -1
  8. package/dist/ports.d.ts +118 -0
  9. package/dist/ports.d.ts.map +1 -0
  10. package/dist/ports.js +365 -0
  11. package/dist/ports.js.map +1 -0
  12. package/dist/prompt-doc.d.ts +35 -1
  13. package/dist/prompt-doc.d.ts.map +1 -1
  14. package/dist/prompt-doc.js +110 -0
  15. package/dist/prompt-doc.js.map +1 -1
  16. package/dist/runner.d.ts +17 -0
  17. package/dist/runner.d.ts.map +1 -1
  18. package/dist/runner.js +171 -8
  19. package/dist/runner.js.map +1 -1
  20. package/dist/schema.d.ts.map +1 -1
  21. package/dist/schema.js +8 -0
  22. package/dist/schema.js.map +1 -1
  23. package/dist/sdk.d.ts +3 -1
  24. package/dist/sdk.d.ts.map +1 -1
  25. package/dist/sdk.js +5 -1
  26. package/dist/sdk.js.map +1 -1
  27. package/dist/validate-raw.d.ts.map +1 -1
  28. package/dist/validate-raw.js +141 -0
  29. package/dist/validate-raw.js.map +1 -1
  30. package/package.json +2 -7
  31. package/src/dag.test.ts +56 -0
  32. package/src/engine-ports.test.ts +404 -0
  33. package/src/engine.ts +231 -24
  34. package/src/pipeline-runner.ts +3 -0
  35. package/src/ports.test.ts +301 -0
  36. package/src/ports.ts +442 -0
  37. package/src/prompt-doc.test.ts +174 -0
  38. package/src/prompt-doc.ts +121 -1
  39. package/src/runner.test.ts +142 -0
  40. package/src/runner.ts +198 -8
  41. package/src/schema-ports.test.ts +236 -0
  42. package/src/schema.ts +8 -0
  43. package/src/sdk.ts +14 -0
  44. package/src/validate-raw-ports.test.ts +198 -0
  45. package/src/validate-raw.ts +155 -1
  46. package/dist/plugin-registry.test.d.ts +0 -2
  47. package/dist/plugin-registry.test.d.ts.map +0 -1
  48. package/dist/plugin-registry.test.js +0 -188
  49. package/dist/plugin-registry.test.js.map +0 -1
  50. package/dist/schema.test.d.ts +0 -2
  51. package/dist/schema.test.d.ts.map +0 -1
  52. package/dist/schema.test.js +0 -94
  53. package/dist/schema.test.js.map +0 -1
  54. package/dist/task-ref.test.d.ts +0 -2
  55. package/dist/task-ref.test.d.ts.map +0 -1
  56. package/dist/task-ref.test.js +0 -364
  57. package/dist/task-ref.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validate-raw.js","sourceRoot":"","sources":["../src/validate-raw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-raw.js","sourceRoot":"","sources":["../src/validate-raw.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tagma/sdk",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "Local AI task orchestration engine — core SDK for tagma pipelines",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,13 +42,8 @@
42
42
  "release:publish": "bun scripts/release.ts --publish"
43
43
  },
44
44
  "dependencies": {
45
- "@tagma/types": "0.4.2",
45
+ "@tagma/types": "0.4.4",
46
46
  "js-yaml": "^4.1.0",
47
47
  "chokidar": "^4.0.0"
48
- },
49
- "devDependencies": {
50
- "@types/js-yaml": "^4.0.9",
51
- "bun-types": "^1.3.11",
52
- "typescript": "^5.8.3"
53
48
  }
54
49
  }
@@ -0,0 +1,56 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { buildDag } from './dag';
3
+ import type { PipelineConfig, TaskConfig, TrackConfig, Permissions } from './types';
4
+
5
+ const PERMS: Permissions = { read: true, write: false, execute: false };
6
+
7
+ function task(id: string, depends_on?: string[]): TaskConfig {
8
+ return { id, name: id, prompt: 'x', permissions: PERMS, depends_on };
9
+ }
10
+
11
+ function track(id: string, tasks: TaskConfig[]): TrackConfig {
12
+ return { id, name: id, driver: 'opencode', permissions: PERMS, tasks };
13
+ }
14
+
15
+ function pipeline(tasks: TaskConfig[]): PipelineConfig {
16
+ return { name: 'test', tracks: [track('t', tasks)] };
17
+ }
18
+
19
+ function qid(id: string): string {
20
+ return `t.${id}`;
21
+ }
22
+
23
+ describe('buildDag', () => {
24
+ test('empty pipeline yields empty sorted array', () => {
25
+ const dag = buildDag({ name: 'empty', tracks: [track('t', [])] });
26
+ expect(dag.sorted).toEqual([]);
27
+ expect(dag.nodes.size).toBe(0);
28
+ });
29
+
30
+ test('single node returns that node', () => {
31
+ const dag = buildDag(pipeline([task('only')]));
32
+ expect(dag.sorted).toEqual([qid('only')]);
33
+ expect(dag.nodes.size).toBe(1);
34
+ });
35
+
36
+ test('linear chain A -> B -> C produces correct order', () => {
37
+ const dag = buildDag(pipeline([task('a'), task('b', ['a']), task('c', ['b'])]));
38
+ expect(dag.sorted).toEqual([qid('a'), qid('b'), qid('c')]);
39
+ });
40
+
41
+ test('diamond A -> B,C; B,C -> D: A first, D last, B/C in between', () => {
42
+ const dag = buildDag(
43
+ pipeline([task('a'), task('b', ['a']), task('c', ['a']), task('d', ['b', 'c'])]),
44
+ );
45
+ expect(dag.sorted[0]).toBe(qid('a'));
46
+ expect(dag.sorted[dag.sorted.length - 1]).toBe(qid('d'));
47
+ const mid = dag.sorted.slice(1, -1).sort();
48
+ expect(mid).toEqual([qid('b'), qid('c')]);
49
+ });
50
+
51
+ test('cycle detection throws', () => {
52
+ expect(() => buildDag(pipeline([task('a', ['b']), task('b', ['a'])]))).toThrow(
53
+ /[Cc]ircular|cycle/,
54
+ );
55
+ });
56
+ });
@@ -0,0 +1,404 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { PluginRegistry } from './registry';
6
+ import { bootstrapBuiltins } from './bootstrap';
7
+ import { runPipeline, type RunEventPayload } from './engine';
8
+ import type { PipelineConfig, RunTaskState, TaskConfig, TaskPorts, TaskStatus } from './types';
9
+
10
+ // ─── Helpers ─────────────────────────────────────────────────────────
11
+
12
+ const PERMS = { read: true, write: false, execute: false };
13
+
14
+ function freshRegistry(): PluginRegistry {
15
+ const reg = new PluginRegistry();
16
+ bootstrapBuiltins(reg);
17
+ return reg;
18
+ }
19
+
20
+ function makeDir(): string {
21
+ return mkdtempSync(join(tmpdir(), 'tagma-ports-'));
22
+ }
23
+
24
+ /**
25
+ * Write a small Node script to the workspace dir that emits the given
26
+ * payload on stdout as a single-line JSON object.
27
+ *
28
+ * Tests that rely on shell-quoted inline JSON (`echo '{"x":1}'`) are
29
+ * fragile across Windows cmd / PowerShell / Git Bash — quote handling
30
+ * differs widely. Putting the payload into a Node script instead keeps
31
+ * the command line a plain `node /path/to/file.js`, which survives any
32
+ * shell, and still exercises the engine's "last-line JSON" extraction
33
+ * on real child-process output.
34
+ */
35
+ function writeEmitScript(dir: string, name: string, payload: Record<string, unknown>): string {
36
+ const path = join(dir, `${name}.js`);
37
+ const src = `process.stdout.write(${JSON.stringify(JSON.stringify(payload))});\nprocess.stdout.write('\\n');\n`;
38
+ writeFileSync(path, src);
39
+ return path;
40
+ }
41
+
42
+ /**
43
+ * Same as writeEmitScript but echoes args joined with `|`, so downstream
44
+ * tests can assert that upstream input values ended up on the command
45
+ * line post-substitution.
46
+ */
47
+ function writeEchoArgsScript(dir: string, name: string): string {
48
+ const path = join(dir, `${name}.js`);
49
+ const src = `process.stdout.write(process.argv.slice(2).join('|'));\nprocess.stdout.write('\\n');\n`;
50
+ writeFileSync(path, src);
51
+ return path;
52
+ }
53
+
54
+ function task(overrides: Partial<TaskConfig> & { id: string }): TaskConfig {
55
+ return {
56
+ name: overrides.id,
57
+ permissions: PERMS,
58
+ driver: 'opencode',
59
+ ...overrides,
60
+ };
61
+ }
62
+
63
+ function pipeline(tasks: TaskConfig[]): PipelineConfig {
64
+ return {
65
+ name: 'ports-test',
66
+ tracks: [
67
+ {
68
+ id: 't',
69
+ name: 'T',
70
+ driver: 'opencode',
71
+ permissions: PERMS,
72
+ on_failure: 'skip_downstream',
73
+ tasks,
74
+ },
75
+ ],
76
+ };
77
+ }
78
+
79
+ interface RunResult {
80
+ events: RunEventPayload[];
81
+ states: ReadonlyMap<string, unknown>;
82
+ success: boolean;
83
+ }
84
+
85
+ async function run(
86
+ config: PipelineConfig,
87
+ workDir: string,
88
+ registry = freshRegistry(),
89
+ ): Promise<RunResult> {
90
+ const events: RunEventPayload[] = [];
91
+ const result = await runPipeline(config, workDir, {
92
+ registry,
93
+ skipPluginLoading: true,
94
+ onEvent: (e) => events.push(e),
95
+ });
96
+ return { events, states: result.states, success: result.success };
97
+ }
98
+
99
+ function finalUpdateFor(events: RunEventPayload[], qid: string): RunEventPayload | undefined {
100
+ let last: RunEventPayload | undefined;
101
+ for (const ev of events) {
102
+ if (ev.type === 'task_update' && ev.taskId === qid) last = ev;
103
+ }
104
+ return last;
105
+ }
106
+
107
+ function finalStatusFrom(events: RunEventPayload[], qid: string): TaskStatus | undefined {
108
+ const last = finalUpdateFor(events, qid);
109
+ return last && last.type === 'task_update' ? last.status : undefined;
110
+ }
111
+
112
+ // ─── Tests ────────────────────────────────────────────────────────────
113
+
114
+ describe('engine — ports: output extraction + input resolution', () => {
115
+ test('upstream outputs feed downstream inputs via name match', async () => {
116
+ const dir = makeDir();
117
+ try {
118
+ const emit = writeEmitScript(dir, 'emit', { city: 'Shanghai', id: 42 });
119
+ const echo = writeEchoArgsScript(dir, 'echo');
120
+ const config = pipeline([
121
+ task({
122
+ id: 'up',
123
+ command: `node "${emit}"`,
124
+ ports: {
125
+ outputs: [
126
+ { name: 'city', type: 'string' },
127
+ { name: 'id', type: 'number' },
128
+ ],
129
+ } as TaskPorts,
130
+ }),
131
+ task({
132
+ id: 'down',
133
+ depends_on: ['up'],
134
+ command: `node "${echo}" "{{inputs.city}}" "{{inputs.id}}"`,
135
+ ports: {
136
+ inputs: [
137
+ { name: 'city', type: 'string', required: true },
138
+ { name: 'id', type: 'number', required: true },
139
+ ],
140
+ } as TaskPorts,
141
+ }),
142
+ ]);
143
+
144
+ const { events, success } = await run(config, dir);
145
+ expect(success).toBe(true);
146
+
147
+ // Upstream's extracted outputs land on the final task_update event
148
+ // so the editor can render them on the card live.
149
+ const upFinal = finalUpdateFor(events, 't.up')!;
150
+ expect(upFinal.type).toBe('task_update');
151
+ if (upFinal.type !== 'task_update') return;
152
+ expect(upFinal.outputs).toEqual({ city: 'Shanghai', id: 42 });
153
+
154
+ // Downstream saw the values: echoed stdout is "Shanghai|42\n".
155
+ const downFinal = finalUpdateFor(events, 't.down')!;
156
+ if (downFinal.type !== 'task_update') return;
157
+ expect(downFinal.status).toBe('success');
158
+ expect((downFinal.stdout ?? '').trim()).toBe('Shanghai|42');
159
+ expect(downFinal.inputs).toEqual({ city: 'Shanghai', id: 42 });
160
+ } finally {
161
+ rmSync(dir, { recursive: true, force: true });
162
+ }
163
+ });
164
+
165
+ test('required input missing → downstream blocked, no spawn, upstream still succeeded', async () => {
166
+ const dir = makeDir();
167
+ try {
168
+ // Upstream declares `city` output but its script emits no JSON, so
169
+ // the engine can't extract `city` — diagnostic on stderr, no
170
+ // outputs. Downstream required input unresolved → blocked.
171
+ const noJson = join(dir, 'no-json.js');
172
+ writeFileSync(noJson, "process.stdout.write('hello\\n');\n");
173
+ const echo = writeEchoArgsScript(dir, 'echo');
174
+ const config = pipeline([
175
+ task({
176
+ id: 'up',
177
+ command: `node "${noJson}"`,
178
+ ports: { outputs: [{ name: 'city', type: 'string' }] } as TaskPorts,
179
+ }),
180
+ task({
181
+ id: 'down',
182
+ depends_on: ['up'],
183
+ command: `node "${echo}" "{{inputs.city}}"`,
184
+ ports: {
185
+ inputs: [{ name: 'city', type: 'string', required: true }],
186
+ } as TaskPorts,
187
+ }),
188
+ ]);
189
+
190
+ const { events, success } = await run(config, dir);
191
+ expect(success).toBe(false);
192
+ expect(finalStatusFrom(events, 't.up')).toBe('success');
193
+ const downStatus = finalStatusFrom(events, 't.down');
194
+ expect(downStatus).toBe('blocked');
195
+ // The blocked update carries the engine's diagnostic in stderr so
196
+ // the editor can display it verbatim.
197
+ const downFinal = finalUpdateFor(events, 't.down');
198
+ if (downFinal?.type === 'task_update') {
199
+ expect(downFinal.stderr ?? '').toMatch(/missing required input.*city/i);
200
+ }
201
+ } finally {
202
+ rmSync(dir, { recursive: true, force: true });
203
+ }
204
+ });
205
+
206
+ test('optional input with default is applied when upstream does not supply it', async () => {
207
+ const dir = makeDir();
208
+ try {
209
+ const noop = join(dir, 'noop.js');
210
+ writeFileSync(noop, 'process.stdout.write("ok\\n");\n');
211
+ const echo = writeEchoArgsScript(dir, 'echo');
212
+ const config = pipeline([
213
+ task({ id: 'up', command: `node "${noop}"` }),
214
+ task({
215
+ id: 'down',
216
+ depends_on: ['up'],
217
+ command: `node "${echo}" "{{inputs.lang}}"`,
218
+ ports: {
219
+ inputs: [{ name: 'lang', type: 'string', default: 'en' }],
220
+ } as TaskPorts,
221
+ }),
222
+ ]);
223
+ const { events, success } = await run(config, dir);
224
+ expect(success).toBe(true);
225
+ const downFinal = finalUpdateFor(events, 't.down');
226
+ if (downFinal?.type === 'task_update') {
227
+ expect((downFinal.stdout ?? '').trim()).toBe('en');
228
+ expect(downFinal.inputs).toEqual({ lang: 'en' });
229
+ }
230
+ } finally {
231
+ rmSync(dir, { recursive: true, force: true });
232
+ }
233
+ });
234
+
235
+ test('optional input without default or upstream → empty placeholder', async () => {
236
+ const dir = makeDir();
237
+ try {
238
+ const noop = join(dir, 'noop.js');
239
+ writeFileSync(noop, 'process.stdout.write("ok\\n");\n');
240
+ // Use a Node script that prints `|<arg>|` so the empty substitution
241
+ // shows as `||` — cross-platform argv handling.
242
+ const sentinel = join(dir, 'sentinel.js');
243
+ writeFileSync(sentinel, 'process.stdout.write("<" + (process.argv[2] || "") + ">\\n");\n');
244
+ const config = pipeline([
245
+ task({ id: 'up', command: `node "${noop}"` }),
246
+ task({
247
+ id: 'down',
248
+ depends_on: ['up'],
249
+ command: `node "${sentinel}" "{{inputs.note}}"`,
250
+ ports: {
251
+ inputs: [{ name: 'note', type: 'string' }],
252
+ } as TaskPorts,
253
+ }),
254
+ ]);
255
+ const { events, success } = await run(config, dir);
256
+ expect(success).toBe(true);
257
+ const downFinal = finalUpdateFor(events, 't.down');
258
+ if (downFinal?.type === 'task_update') {
259
+ expect((downFinal.stdout ?? '').trim()).toBe('<>');
260
+ }
261
+ } finally {
262
+ rmSync(dir, { recursive: true, force: true });
263
+ }
264
+ });
265
+
266
+ test('tasks with no ports declared are unaffected', async () => {
267
+ const dir = makeDir();
268
+ try {
269
+ const config = pipeline([task({ id: 'plain', command: 'echo hello' })]);
270
+ const { events, success } = await run(config, dir);
271
+ expect(success).toBe(true);
272
+ const final = finalUpdateFor(events, 't.plain');
273
+ if (final?.type === 'task_update') {
274
+ expect(final.outputs).toBeFalsy();
275
+ expect(final.inputs).toEqual({});
276
+ }
277
+ } finally {
278
+ rmSync(dir, { recursive: true, force: true });
279
+ }
280
+ });
281
+
282
+ test('ambiguous name-match blocks downstream unless disambiguated', async () => {
283
+ const dir = makeDir();
284
+ try {
285
+ const emitA = writeEmitScript(dir, 'emitA', { val: 'from-a' });
286
+ const emitB = writeEmitScript(dir, 'emitB', { val: 'from-b' });
287
+ const echo = writeEchoArgsScript(dir, 'echo');
288
+ // Two upstreams both export `val`; downstream auto-matches → ambiguous.
289
+ const ambigConfig = pipeline([
290
+ task({
291
+ id: 'a',
292
+ command: `node "${emitA}"`,
293
+ ports: { outputs: [{ name: 'val', type: 'string' }] } as TaskPorts,
294
+ }),
295
+ task({
296
+ id: 'b',
297
+ command: `node "${emitB}"`,
298
+ ports: { outputs: [{ name: 'val', type: 'string' }] } as TaskPorts,
299
+ }),
300
+ task({
301
+ id: 'down',
302
+ depends_on: ['a', 'b'],
303
+ command: `node "${echo}" "{{inputs.val}}"`,
304
+ ports: {
305
+ inputs: [{ name: 'val', type: 'string', required: true }],
306
+ } as TaskPorts,
307
+ }),
308
+ ]);
309
+ const { events: evAmbig } = await run(ambigConfig, dir);
310
+ expect(finalStatusFrom(evAmbig, 't.down')).toBe('blocked');
311
+ const ambigFinal = finalUpdateFor(evAmbig, 't.down');
312
+ if (ambigFinal?.type === 'task_update') {
313
+ expect(ambigFinal.stderr ?? '').toMatch(/ambiguous|multiple upstreams/i);
314
+ }
315
+
316
+ // Now add an explicit `from: "t.b.val"` → downstream should succeed.
317
+ const dir2 = makeDir();
318
+ try {
319
+ const emitA2 = writeEmitScript(dir2, 'emitA', { val: 'from-a' });
320
+ const emitB2 = writeEmitScript(dir2, 'emitB', { val: 'from-b' });
321
+ const echo2 = writeEchoArgsScript(dir2, 'echo');
322
+ const explicitConfig = pipeline([
323
+ task({
324
+ id: 'a',
325
+ command: `node "${emitA2}"`,
326
+ ports: { outputs: [{ name: 'val', type: 'string' }] } as TaskPorts,
327
+ }),
328
+ task({
329
+ id: 'b',
330
+ command: `node "${emitB2}"`,
331
+ ports: { outputs: [{ name: 'val', type: 'string' }] } as TaskPorts,
332
+ }),
333
+ task({
334
+ id: 'down',
335
+ depends_on: ['a', 'b'],
336
+ command: `node "${echo2}" "{{inputs.val}}"`,
337
+ ports: {
338
+ inputs: [
339
+ { name: 'val', type: 'string', required: true, from: 't.b.val' },
340
+ ],
341
+ } as TaskPorts,
342
+ }),
343
+ ]);
344
+ const { events: evExplicit, success } = await run(explicitConfig, dir2);
345
+ expect(success).toBe(true);
346
+ const downFinal = finalUpdateFor(evExplicit, 't.down');
347
+ if (downFinal?.type === 'task_update') {
348
+ expect((downFinal.stdout ?? '').trim()).toBe('from-b');
349
+ }
350
+ } finally {
351
+ rmSync(dir2, { recursive: true, force: true });
352
+ }
353
+ } finally {
354
+ rmSync(dir, { recursive: true, force: true });
355
+ }
356
+ });
357
+
358
+ test('string → number coercion happens during input resolution', async () => {
359
+ const dir = makeDir();
360
+ try {
361
+ // Emit `id` as a string; downstream declares it as `number`.
362
+ const emit = writeEmitScript(dir, 'emit', { id: '42' });
363
+ const script = join(dir, 'assert-number.js');
364
+ writeFileSync(
365
+ script,
366
+ `const v = process.argv[2];
367
+ const n = Number(v);
368
+ if (!Number.isFinite(n)) { process.exit(2); }
369
+ process.stdout.write("n=" + n + "\\n");
370
+ `,
371
+ );
372
+ const config = pipeline([
373
+ task({
374
+ id: 'up',
375
+ command: `node "${emit}"`,
376
+ ports: {
377
+ // upstream declares string — matches the emitted literal.
378
+ outputs: [{ name: 'id', type: 'string' }],
379
+ } as TaskPorts,
380
+ }),
381
+ task({
382
+ id: 'down',
383
+ depends_on: ['up'],
384
+ command: `node "${script}" "{{inputs.id}}"`,
385
+ ports: {
386
+ // downstream demands number — resolve should coerce "42" → 42.
387
+ inputs: [{ name: 'id', type: 'number', required: true }],
388
+ } as TaskPorts,
389
+ }),
390
+ ]);
391
+ const { events, success } = await run(config, dir);
392
+ expect(success).toBe(true);
393
+ const downFinal = finalUpdateFor(events, 't.down');
394
+ if (downFinal?.type === 'task_update') {
395
+ expect((downFinal.stdout ?? '').trim()).toBe('n=42');
396
+ // Value on the wire should be the coerced number, not the raw
397
+ // string, so the editor renders it faithfully too.
398
+ expect(downFinal.inputs).toEqual({ id: 42 });
399
+ }
400
+ } finally {
401
+ rmSync(dir, { recursive: true, force: true });
402
+ }
403
+ });
404
+ });