@tagma/sdk 0.7.1 → 0.7.4

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 (108) hide show
  1. package/README.md +109 -48
  2. package/dist/adapters/stdin-approval.d.ts +1 -5
  3. package/dist/adapters/stdin-approval.d.ts.map +1 -1
  4. package/dist/adapters/stdin-approval.js +1 -89
  5. package/dist/adapters/stdin-approval.js.map +1 -1
  6. package/dist/adapters/websocket-approval.d.ts +1 -27
  7. package/dist/adapters/websocket-approval.d.ts.map +1 -1
  8. package/dist/adapters/websocket-approval.js +1 -146
  9. package/dist/adapters/websocket-approval.js.map +1 -1
  10. package/dist/approval.d.ts +2 -12
  11. package/dist/approval.d.ts.map +1 -1
  12. package/dist/approval.js +1 -90
  13. package/dist/approval.js.map +1 -1
  14. package/dist/bootstrap.d.ts +21 -1
  15. package/dist/bootstrap.d.ts.map +1 -1
  16. package/dist/bootstrap.js +21 -11
  17. package/dist/bootstrap.js.map +1 -1
  18. package/dist/core/run-context.d.ts +3 -0
  19. package/dist/core/run-context.d.ts.map +1 -1
  20. package/dist/core/run-context.js +2 -0
  21. package/dist/core/run-context.js.map +1 -1
  22. package/dist/core/task-executor.d.ts.map +1 -1
  23. package/dist/core/task-executor.js +24 -37
  24. package/dist/core/task-executor.js.map +1 -1
  25. package/dist/engine.d.ts +8 -53
  26. package/dist/engine.d.ts.map +1 -1
  27. package/dist/engine.js +7 -294
  28. package/dist/engine.js.map +1 -1
  29. package/dist/index.d.ts +5 -5
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/logger.d.ts +2 -60
  34. package/dist/logger.d.ts.map +1 -1
  35. package/dist/logger.js +1 -153
  36. package/dist/logger.js.map +1 -1
  37. package/dist/plugins.d.ts +3 -3
  38. package/dist/plugins.d.ts.map +1 -1
  39. package/dist/plugins.js +1 -1
  40. package/dist/plugins.js.map +1 -1
  41. package/dist/registry.d.ts +2 -60
  42. package/dist/registry.d.ts.map +1 -1
  43. package/dist/registry.js +1 -253
  44. package/dist/registry.js.map +1 -1
  45. package/dist/runner.d.ts +1 -35
  46. package/dist/runner.d.ts.map +1 -1
  47. package/dist/runner.js +1 -610
  48. package/dist/runner.js.map +1 -1
  49. package/dist/runtime/adapters/stdin-approval.d.ts +2 -0
  50. package/dist/runtime/adapters/stdin-approval.d.ts.map +1 -0
  51. package/dist/runtime/adapters/stdin-approval.js +2 -0
  52. package/dist/runtime/adapters/stdin-approval.js.map +1 -0
  53. package/dist/runtime/adapters/websocket-approval.d.ts +2 -0
  54. package/dist/runtime/adapters/websocket-approval.d.ts.map +1 -0
  55. package/dist/runtime/adapters/websocket-approval.js +2 -0
  56. package/dist/runtime/adapters/websocket-approval.js.map +1 -0
  57. package/dist/runtime/bun-process-runner.d.ts +2 -0
  58. package/dist/runtime/bun-process-runner.d.ts.map +1 -0
  59. package/dist/runtime/bun-process-runner.js +2 -0
  60. package/dist/runtime/bun-process-runner.js.map +1 -0
  61. package/dist/runtime.d.ts +3 -0
  62. package/dist/runtime.d.ts.map +1 -0
  63. package/dist/runtime.js +2 -0
  64. package/dist/runtime.js.map +1 -0
  65. package/dist/schema.d.ts.map +1 -1
  66. package/dist/schema.js +1 -7
  67. package/dist/schema.js.map +1 -1
  68. package/dist/tagma.d.ts +13 -4
  69. package/dist/tagma.d.ts.map +1 -1
  70. package/dist/tagma.js +7 -2
  71. package/dist/tagma.js.map +1 -1
  72. package/dist/triggers/file.d.ts.map +1 -1
  73. package/dist/triggers/file.js +74 -107
  74. package/dist/triggers/file.js.map +1 -1
  75. package/dist/validate-raw.d.ts.map +1 -1
  76. package/dist/validate-raw.js +1 -101
  77. package/dist/validate-raw.js.map +1 -1
  78. package/package.json +15 -4
  79. package/src/adapters/stdin-approval.ts +1 -106
  80. package/src/adapters/websocket-approval.ts +1 -224
  81. package/src/approval.ts +5 -127
  82. package/src/bootstrap.ts +24 -15
  83. package/src/core/run-context.test.ts +47 -0
  84. package/src/core/run-context.ts +4 -0
  85. package/src/core/task-executor.ts +28 -45
  86. package/src/engine-ports-mixed.test.ts +70 -44
  87. package/src/engine-ports.test.ts +77 -33
  88. package/src/engine.ts +21 -439
  89. package/src/index.ts +7 -4
  90. package/src/logger.ts +2 -182
  91. package/src/package-split.test.ts +15 -0
  92. package/src/pipeline-runner.test.ts +65 -12
  93. package/src/plugin-registry.test.ts +207 -4
  94. package/src/plugins.ts +6 -3
  95. package/src/registry.ts +7 -298
  96. package/src/runner.ts +1 -666
  97. package/src/runtime/adapters/stdin-approval.ts +1 -0
  98. package/src/runtime/adapters/websocket-approval.ts +1 -0
  99. package/src/runtime/bun-process-runner.ts +1 -0
  100. package/src/runtime-adapters.test.ts +10 -0
  101. package/src/runtime.ts +12 -0
  102. package/src/schema-ports.test.ts +23 -0
  103. package/src/schema.ts +1 -7
  104. package/src/tagma.test.ts +234 -1
  105. package/src/tagma.ts +24 -4
  106. package/src/triggers/file.test.ts +79 -0
  107. package/src/triggers/file.ts +85 -118
  108. package/src/validate-raw.ts +1 -117
@@ -1,147 +1,2 @@
1
- // Maximum allowed message payload (bytes) to prevent DoS via oversized messages.
2
- const MAX_PAYLOAD_BYTES = 4_096;
3
- // Per-client rate limit: at most this many messages per window.
4
- const RATE_LIMIT_MAX = 10;
5
- const RATE_LIMIT_WINDOW_MS = 1_000;
6
- export function attachWebSocketApprovalAdapter(gateway, options = {}) {
7
- const port = options.port ?? 3000;
8
- const hostname = options.hostname ?? 'localhost';
9
- const requiredToken = options.token ?? null;
10
- const enforceOriginCheck = options.allowAnyOrigin !== true;
11
- function isLoopbackOrigin(origin) {
12
- try {
13
- const host = new URL(origin).hostname.toLowerCase();
14
- return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '[::1]';
15
- }
16
- catch {
17
- return false;
18
- }
19
- }
20
- const clients = new Set();
21
- const clientRates = new Map();
22
- function broadcast(msg) {
23
- const text = JSON.stringify(msg);
24
- for (const ws of clients) {
25
- ws.send(text);
26
- }
27
- }
28
- const unsubscribe = gateway.subscribe((event) => {
29
- switch (event.type) {
30
- case 'requested':
31
- broadcast({ type: 'approval_requested', request: event.request });
32
- break;
33
- case 'resolved':
34
- broadcast({ type: 'approval_resolved', request: event.request, decision: event.decision });
35
- break;
36
- case 'expired':
37
- broadcast({ type: 'approval_expired', request: event.request });
38
- break;
39
- case 'aborted':
40
- broadcast({ type: 'approval_aborted', request: event.request, reason: event.reason });
41
- break;
42
- }
43
- });
44
- const server = Bun.serve({
45
- port,
46
- hostname,
47
- fetch(req, server) {
48
- if (enforceOriginCheck) {
49
- const origin = req.headers.get('origin');
50
- if (origin && !isLoopbackOrigin(origin)) {
51
- return new Response('forbidden origin', { status: 403 });
52
- }
53
- }
54
- // M11: enforce token before any upgrade so an unauthenticated client
55
- // can't even open a socket. Tokens may arrive via header or query.
56
- if (requiredToken !== null) {
57
- const headerToken = req.headers.get('x-tagma-token') ?? '';
58
- let queryToken = '';
59
- try {
60
- queryToken = new URL(req.url).searchParams.get('token') ?? '';
61
- }
62
- catch {
63
- /* malformed URL — leave queryToken empty */
64
- }
65
- const presented = headerToken || queryToken;
66
- if (presented !== requiredToken) {
67
- return new Response('unauthorized', { status: 401 });
68
- }
69
- }
70
- if (server.upgrade(req))
71
- return undefined;
72
- return new Response('tagma-sdk WebSocket approval endpoint', { status: 426 });
73
- },
74
- websocket: {
75
- open(ws) {
76
- clients.add(ws);
77
- // Sync current pending approvals to newly connected client.
78
- ws.send(JSON.stringify({ type: 'pending', requests: gateway.pending() }));
79
- },
80
- message(ws, raw) {
81
- const rawStr = typeof raw === 'string' ? raw : raw.toString();
82
- // Payload size guard — reject oversized messages before parsing.
83
- if (rawStr.length > MAX_PAYLOAD_BYTES) {
84
- ws.send(JSON.stringify({ type: 'error', message: 'message too large' }));
85
- return;
86
- }
87
- // Per-client rate limit.
88
- const now = Date.now();
89
- const rate = clientRates.get(ws) ?? { count: 0, resetAt: now + RATE_LIMIT_WINDOW_MS };
90
- if (now >= rate.resetAt) {
91
- rate.count = 0;
92
- rate.resetAt = now + RATE_LIMIT_WINDOW_MS;
93
- }
94
- rate.count++;
95
- clientRates.set(ws, rate);
96
- if (rate.count > RATE_LIMIT_MAX) {
97
- ws.send(JSON.stringify({ type: 'error', message: 'rate limit exceeded' }));
98
- return;
99
- }
100
- let msg;
101
- try {
102
- msg = JSON.parse(rawStr);
103
- }
104
- catch {
105
- ws.send(JSON.stringify({ type: 'error', message: 'invalid JSON' }));
106
- return;
107
- }
108
- if (!isResolveMessage(msg)) {
109
- ws.send(JSON.stringify({ type: 'error', message: 'unknown message type' }));
110
- return;
111
- }
112
- const ok = gateway.resolve(msg.approvalId, {
113
- outcome: msg.outcome,
114
- actor: msg.actor ?? 'websocket',
115
- reason: msg.reason,
116
- });
117
- if (!ok) {
118
- ws.send(JSON.stringify({
119
- type: 'error',
120
- message: `approval ${msg.approvalId} not found or already resolved`,
121
- }));
122
- }
123
- },
124
- close(ws) {
125
- clients.delete(ws);
126
- clientRates.delete(ws);
127
- },
128
- },
129
- });
130
- return {
131
- port: server.port,
132
- detach() {
133
- unsubscribe();
134
- clients.clear();
135
- server.stop(true);
136
- },
137
- };
138
- }
139
- function isResolveMessage(v) {
140
- if (typeof v !== 'object' || v === null)
141
- return false;
142
- const m = v;
143
- return (m['type'] === 'resolve' &&
144
- typeof m['approvalId'] === 'string' &&
145
- (m['outcome'] === 'approved' || m['outcome'] === 'rejected'));
146
- }
1
+ export * from '../runtime/adapters/websocket-approval';
147
2
  //# sourceMappingURL=websocket-approval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-approval.js","sourceRoot":"","sources":["../../src/adapters/websocket-approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket-approval.js","sourceRoot":"","sources":["../../src/adapters/websocket-approval.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC"}
@@ -1,13 +1,3 @@
1
- import type { ApprovalRequest, ApprovalDecision, ApprovalListener, ApprovalGateway } from './types';
2
- export type { ApprovalRequest, ApprovalDecision, ApprovalOutcome, ApprovalEvent, ApprovalListener, ApprovalGateway, } from './types';
3
- export declare class InMemoryApprovalGateway implements ApprovalGateway {
4
- private readonly pendingMap;
5
- private readonly listeners;
6
- request(req: Omit<ApprovalRequest, 'id' | 'createdAt'>): Promise<ApprovalDecision>;
7
- resolve(approvalId: string, decision: Omit<ApprovalDecision, 'approvalId' | 'decidedAt'>): boolean;
8
- pending(): readonly ApprovalRequest[];
9
- subscribe(listener: ApprovalListener): () => void;
10
- abortAll(reason: string): void;
11
- private emit;
12
- }
1
+ export { InMemoryApprovalGateway } from '@tagma/core';
2
+ export type { ApprovalDecision, ApprovalEvent, ApprovalGateway, ApprovalListener, ApprovalOutcome, ApprovalRequest, } from '@tagma/core';
13
3
  //# sourceMappingURL=approval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAEhB,gBAAgB,EAChB,eAAe,EAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,SAAS,CAAC;AAUjB,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkClF,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,WAAW,CAAC,GAC3D,OAAO;IAkBV,OAAO,IAAI,SAAS,eAAe,EAAE;IAIrC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAOjD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAe9B,OAAO,CAAC,IAAI;CASb"}
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC"}
package/dist/approval.js CHANGED
@@ -1,91 +1,2 @@
1
- import { randomUUID } from 'crypto';
2
- import { nowISO } from './utils';
3
- export class InMemoryApprovalGateway {
4
- pendingMap = new Map();
5
- listeners = new Set();
6
- request(req) {
7
- const full = {
8
- id: randomUUID(),
9
- createdAt: nowISO(),
10
- taskId: req.taskId,
11
- trackId: req.trackId,
12
- message: req.message,
13
- timeoutMs: req.timeoutMs,
14
- metadata: req.metadata,
15
- };
16
- return new Promise((resolvePromise) => {
17
- let timer = null;
18
- if (full.timeoutMs > 0) {
19
- timer = setTimeout(() => {
20
- const entry = this.pendingMap.get(full.id);
21
- if (!entry)
22
- return;
23
- this.pendingMap.delete(full.id);
24
- const decision = {
25
- approvalId: full.id,
26
- outcome: 'timeout',
27
- reason: `Approval timed out after ${full.timeoutMs}ms`,
28
- decidedAt: nowISO(),
29
- };
30
- this.emit({ type: 'expired', request: full });
31
- resolvePromise(decision);
32
- }, full.timeoutMs);
33
- }
34
- this.pendingMap.set(full.id, { request: full, settle: resolvePromise, timer });
35
- this.emit({ type: 'requested', request: full });
36
- });
37
- }
38
- resolve(approvalId, decision) {
39
- const entry = this.pendingMap.get(approvalId);
40
- if (!entry)
41
- return false;
42
- this.pendingMap.delete(approvalId);
43
- if (entry.timer)
44
- clearTimeout(entry.timer);
45
- const full = {
46
- approvalId,
47
- outcome: decision.outcome,
48
- actor: decision.actor,
49
- reason: decision.reason,
50
- decidedAt: nowISO(),
51
- };
52
- this.emit({ type: 'resolved', request: entry.request, decision: full });
53
- entry.settle(full);
54
- return true;
55
- }
56
- pending() {
57
- return Array.from(this.pendingMap.values()).map((e) => e.request);
58
- }
59
- subscribe(listener) {
60
- this.listeners.add(listener);
61
- return () => {
62
- this.listeners.delete(listener);
63
- };
64
- }
65
- abortAll(reason) {
66
- const entries = Array.from(this.pendingMap.entries());
67
- this.pendingMap.clear();
68
- for (const [id, entry] of entries) {
69
- if (entry.timer)
70
- clearTimeout(entry.timer);
71
- this.emit({ type: 'aborted', request: entry.request, reason });
72
- entry.settle({
73
- approvalId: id,
74
- outcome: 'aborted',
75
- reason,
76
- decidedAt: nowISO(),
77
- });
78
- }
79
- }
80
- emit(event) {
81
- for (const listener of this.listeners) {
82
- try {
83
- listener(event);
84
- }
85
- catch (err) {
86
- console.error('[approval gateway] listener error:', err);
87
- }
88
- }
89
- }
90
- }
1
+ export { InMemoryApprovalGateway } from '@tagma/core';
91
2
  //# sourceMappingURL=approval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,4 +1,24 @@
1
- import type { PluginRegistry } from './registry';
1
+ import type { PluginRegistry } from '@tagma/core';
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,aAAa,CAAC;AAsBlD,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"}
@@ -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;AAYlD,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,CAysB5E"}
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/core/task-executor.ts"],"names":[],"mappings":"AAYA,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,CA0rB5E"}
@@ -1,5 +1,3 @@
1
- import { resolve } from 'path';
2
- import { runCommand, runSpawn } from '../runner';
3
1
  import { parseDuration, nowISO } from '../utils';
4
2
  import { promptDocumentFromString, serializePromptDocument, prependContext, renderInputsBlock, renderOutputSchemaBlock, } from '../prompt-doc';
5
3
  import { resolveTaskBindingInputs, resolveTaskInputs, substituteInputs } from '../ports';
@@ -89,6 +87,7 @@ export async function executeTask(options) {
89
87
  workDir: task.cwd ?? workDir,
90
88
  signal: ctx.abortController.signal,
91
89
  approvalGateway,
90
+ runtime: ctx.runtime,
92
91
  })
93
92
  .then((v) => {
94
93
  if (settled)
@@ -299,9 +298,18 @@ export async function executeTask(options) {
299
298
  // and keep only a bounded tail in the returned TaskResult. Filenames
300
299
  // mirror the existing `.stderr` naming — dots in task ids are replaced
301
300
  // so hierarchical ids (e.g. `track1.task2`) map cleanly to a flat dir.
302
- const fsSafeTaskId = taskId.replace(/\./g, '_');
303
- const stdoutPath = resolve(log.dir, `${fsSafeTaskId}.stdout`);
304
- const stderrPath = resolve(log.dir, `${fsSafeTaskId}.stderr`);
301
+ const stdoutPath = ctx.runtime.logStore.taskOutputPath({
302
+ workDir,
303
+ runId: ctx.runId,
304
+ taskId,
305
+ stream: 'stdout',
306
+ });
307
+ const stderrPath = ctx.runtime.logStore.taskOutputPath({
308
+ workDir,
309
+ runId: ctx.runId,
310
+ taskId,
311
+ stream: 'stderr',
312
+ });
305
313
  const runOpts = {
306
314
  timeoutMs,
307
315
  signal: ctx.abortController.signal,
@@ -321,7 +329,7 @@ export async function executeTask(options) {
321
329
  log.debug(`[task:${taskId}]`, `command placeholders rendered empty: ${unresolved.join(', ')}`);
322
330
  }
323
331
  log.debug(`[task:${taskId}]`, `command: ${expandedCommand}`);
324
- result = await runCommand(expandedCommand, task.cwd ?? workDir, runOpts);
332
+ result = await ctx.runtime.runCommand(expandedCommand, task.cwd ?? workDir, runOpts);
325
333
  }
326
334
  else {
327
335
  // AI task: apply middleware chain against a structured PromptDocument.
@@ -361,38 +369,17 @@ export async function executeTask(options) {
361
369
  const mwPlugin = registry.getHandler('middlewares', mwConfig.type);
362
370
  const beforeBlocks = doc.contexts.length;
363
371
  const beforeLen = serializePromptDocument(doc).length;
364
- // Prefer the structured API. Fall back to the legacy
365
- // `enhance(string) → string` path so v0.x plugins keep
366
- // working — that fallback loses context structure (the
367
- // middleware's output becomes the new task body) but never
368
- // silently drops content.
369
- if (typeof mwPlugin.enhanceDoc === 'function') {
370
- const next = await mwPlugin.enhanceDoc(doc, mwConfig, mwCtx);
371
- if (!next ||
372
- typeof next !== 'object' ||
373
- !Array.isArray(next.contexts) ||
374
- typeof next.task !== 'string') {
375
- throw new Error(`middleware "${mwConfig.type}".enhanceDoc() returned a malformed PromptDocument`);
376
- }
377
- doc = next;
378
- }
379
- else if (typeof mwPlugin.enhance === 'function') {
380
- const asString = serializePromptDocument(doc);
381
- const next = await mwPlugin.enhance(asString, mwConfig, mwCtx);
382
- // R3: a middleware that returns undefined / null / a non-string
383
- // would silently corrupt the prompt. Fail loud.
384
- if (typeof next !== 'string') {
385
- throw new Error(`middleware "${mwConfig.type}".enhance() returned ${next === null ? 'null' : typeof next}, expected string`);
386
- }
387
- // Legacy fallback: collapse the returned string into a
388
- // fresh doc. Earlier structure is folded into the string
389
- // (serializePromptDocument just ran), so bytes the driver
390
- // sees match the old string pipeline.
391
- doc = { contexts: [], task: next };
372
+ if (typeof mwPlugin.enhanceDoc !== 'function') {
373
+ throw new Error(`middleware "${mwConfig.type}" must provide enhanceDoc`);
392
374
  }
393
- else {
394
- throw new Error(`middleware "${mwConfig.type}" provides neither enhanceDoc nor enhance`);
375
+ const next = await mwPlugin.enhanceDoc(doc, mwConfig, mwCtx);
376
+ if (!next ||
377
+ typeof next !== 'object' ||
378
+ !Array.isArray(next.contexts) ||
379
+ typeof next.task !== 'string') {
380
+ throw new Error(`middleware "${mwConfig.type}".enhanceDoc() returned a malformed PromptDocument`);
395
381
  }
382
+ doc = next;
396
383
  const afterLen = serializePromptDocument(doc).length;
397
384
  const addedBlocks = doc.contexts.length - beforeBlocks;
398
385
  log.debug(`[task:${taskId}]`, ` ${mwConfig.type}: ${beforeLen} → ${afterLen} chars` +
@@ -445,7 +432,7 @@ export async function executeTask(options) {
445
432
  log.debug(`[task:${taskId}]`, `spawn env overrides: ${Object.keys(spec.env).join(', ')}`);
446
433
  if (spec.stdin)
447
434
  log.debug(`[task:${taskId}]`, `spawn stdin: ${spec.stdin.length} chars`);
448
- result = await runSpawn(spec, driver, runOpts);
435
+ result = await ctx.runtime.runSpawn(spec, driver, runOpts);
449
436
  }
450
437
  // 6. Determine terminal status (without emitting yet — result must be complete first)
451
438
  // H2: branch on failureKind so spawn errors no longer masquerade as