@tagma/runtime-bun 0.1.62 → 0.1.64
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin-approval.d.ts","sourceRoot":"","sources":["../../src/adapters/stdin-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAmB,MAAM,aAAa,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"stdin-approval.d.ts","sourceRoot":"","sources":["../../src/adapters/stdin-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAmB,MAAM,aAAa,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAYD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,oBAAoB,CA6LzF"}
|
|
@@ -3,6 +3,10 @@ export function attachStdinApprovalAdapter(gateway) {
|
|
|
3
3
|
const queue = [];
|
|
4
4
|
let processing = false;
|
|
5
5
|
let rl = null;
|
|
6
|
+
let activeRequest = null;
|
|
7
|
+
let activeRead = null;
|
|
8
|
+
let inputClosed = false;
|
|
9
|
+
let detached = false;
|
|
6
10
|
function ensureReadline() {
|
|
7
11
|
if (!rl) {
|
|
8
12
|
rl = readline.createInterface({ input: process.stdin, terminal: false });
|
|
@@ -10,29 +14,101 @@ export function attachStdinApprovalAdapter(gateway) {
|
|
|
10
14
|
return rl;
|
|
11
15
|
}
|
|
12
16
|
function readOneLine() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
let settled = false;
|
|
18
|
+
let reader = null;
|
|
19
|
+
let resolveRead;
|
|
20
|
+
const promise = new Promise((resolvePromise) => {
|
|
21
|
+
resolveRead = resolvePromise;
|
|
22
|
+
});
|
|
23
|
+
const cleanup = () => {
|
|
24
|
+
if (!reader)
|
|
25
|
+
return;
|
|
26
|
+
reader.off('line', onLine);
|
|
27
|
+
reader.off('close', onClose);
|
|
28
|
+
reader.off('error', onError);
|
|
29
|
+
};
|
|
30
|
+
const finish = (result) => {
|
|
31
|
+
if (settled)
|
|
32
|
+
return;
|
|
33
|
+
settled = true;
|
|
34
|
+
cleanup();
|
|
35
|
+
resolveRead(result);
|
|
36
|
+
};
|
|
37
|
+
const onLine = (line) => {
|
|
38
|
+
finish({ kind: 'line', line });
|
|
39
|
+
};
|
|
40
|
+
const onClose = () => {
|
|
41
|
+
finish({ kind: 'eof', reason: 'stdin reached EOF' });
|
|
42
|
+
};
|
|
43
|
+
const onError = () => {
|
|
44
|
+
finish({ kind: 'eof', reason: 'stdin could not be read' });
|
|
45
|
+
};
|
|
46
|
+
reader = ensureReadline();
|
|
47
|
+
reader.on('line', onLine);
|
|
48
|
+
reader.on('close', onClose);
|
|
49
|
+
reader.on('error', onError);
|
|
50
|
+
return {
|
|
51
|
+
promise,
|
|
52
|
+
cancel: (reason) => finish({ kind: 'cancelled', reason }),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function isPending(req) {
|
|
56
|
+
return gateway.pending().some((pending) => pending.id === req.id);
|
|
57
|
+
}
|
|
58
|
+
function rejectRequest(req, reason) {
|
|
59
|
+
if (!isPending(req))
|
|
60
|
+
return;
|
|
61
|
+
gateway.resolve(req.id, {
|
|
62
|
+
outcome: 'rejected',
|
|
63
|
+
actor: 'cli',
|
|
64
|
+
reason,
|
|
20
65
|
});
|
|
21
66
|
}
|
|
67
|
+
function rejectQueuedRequests(reason) {
|
|
68
|
+
const queued = queue.splice(0);
|
|
69
|
+
for (const req of queued)
|
|
70
|
+
rejectRequest(req, reason);
|
|
71
|
+
}
|
|
22
72
|
async function processNext() {
|
|
23
|
-
if (processing)
|
|
73
|
+
if (processing || detached || inputClosed)
|
|
24
74
|
return;
|
|
25
75
|
processing = true;
|
|
26
76
|
try {
|
|
27
|
-
while (queue.length > 0) {
|
|
77
|
+
while (queue.length > 0 && !detached && !inputClosed) {
|
|
28
78
|
const req = queue.shift();
|
|
29
|
-
if (!
|
|
79
|
+
if (!isPending(req))
|
|
80
|
+
continue;
|
|
81
|
+
activeRequest = req;
|
|
82
|
+
process.stdout.write('\n[APPROVAL REQUIRED] ' +
|
|
83
|
+
req.message +
|
|
84
|
+
'\n' +
|
|
85
|
+
' id: ' +
|
|
86
|
+
req.id +
|
|
87
|
+
'\n' +
|
|
88
|
+
' task: ' +
|
|
89
|
+
req.taskId +
|
|
90
|
+
(req.trackId ? ' (track: ' + req.trackId + ')' : '') +
|
|
91
|
+
'\n' +
|
|
92
|
+
' approve / reject > ');
|
|
93
|
+
const read = readOneLine();
|
|
94
|
+
activeRead = read;
|
|
95
|
+
const readResult = await read.promise;
|
|
96
|
+
if (activeRead === read)
|
|
97
|
+
activeRead = null;
|
|
98
|
+
activeRequest = null;
|
|
99
|
+
if (!isPending(req))
|
|
30
100
|
continue;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
101
|
+
if (readResult.kind === 'eof') {
|
|
102
|
+
rejectRequest(req, readResult.reason);
|
|
103
|
+
inputClosed = true;
|
|
104
|
+
rejectQueuedRequests(readResult.reason);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
if (readResult.kind === 'cancelled') {
|
|
108
|
+
rejectRequest(req, readResult.reason);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const input = readResult.line.trim().toLowerCase();
|
|
36
112
|
const approveAliases = new Set(['approve', 'yes', 'y', 'ok', 'true', '1']);
|
|
37
113
|
const rejectAliases = new Set(['reject', 'no', 'n', 'deny', 'false', '0']);
|
|
38
114
|
if (approveAliases.has(input)) {
|
|
@@ -57,11 +133,17 @@ export function attachStdinApprovalAdapter(gateway) {
|
|
|
57
133
|
}
|
|
58
134
|
finally {
|
|
59
135
|
processing = false;
|
|
136
|
+
activeRequest = null;
|
|
137
|
+
activeRead = null;
|
|
60
138
|
}
|
|
61
139
|
}
|
|
62
140
|
const unsubscribe = gateway.subscribe((event) => {
|
|
63
141
|
switch (event.type) {
|
|
64
142
|
case 'requested':
|
|
143
|
+
if (detached || inputClosed) {
|
|
144
|
+
rejectRequest(event.request, detached ? 'stdin adapter detached' : 'stdin reached EOF');
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
65
147
|
queue.push(event.request);
|
|
66
148
|
void processNext();
|
|
67
149
|
return;
|
|
@@ -71,13 +153,24 @@ export function attachStdinApprovalAdapter(gateway) {
|
|
|
71
153
|
const idx = queue.findIndex((r) => r.id === event.request.id);
|
|
72
154
|
if (idx >= 0)
|
|
73
155
|
queue.splice(idx, 1);
|
|
156
|
+
if (activeRequest?.id === event.request.id) {
|
|
157
|
+
activeRead?.cancel('approval ' + event.type);
|
|
158
|
+
}
|
|
74
159
|
return;
|
|
75
160
|
}
|
|
76
161
|
}
|
|
77
162
|
});
|
|
78
163
|
return {
|
|
79
164
|
detach: () => {
|
|
165
|
+
if (detached)
|
|
166
|
+
return;
|
|
167
|
+
detached = true;
|
|
80
168
|
unsubscribe();
|
|
169
|
+
activeRead?.cancel('stdin adapter detached');
|
|
170
|
+
rejectQueuedRequests('stdin adapter detached');
|
|
171
|
+
for (const req of gateway.pending()) {
|
|
172
|
+
rejectRequest(req, 'stdin adapter detached');
|
|
173
|
+
}
|
|
81
174
|
if (rl) {
|
|
82
175
|
rl.close();
|
|
83
176
|
rl = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin-approval.js","sourceRoot":"","sources":["../../src/adapters/stdin-approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"stdin-approval.js","sourceRoot":"","sources":["../../src/adapters/stdin-approval.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tagma/runtime-bun",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.64",
|
|
4
4
|
"description": "Bun runtime implementation for Tagma pipeline execution",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"prepublishOnly": "bun run build"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@tagma/core": "0.1.
|
|
50
|
+
"@tagma/core": "0.1.74",
|
|
51
51
|
"chokidar": "^4.0.0"
|
|
52
52
|
}
|
|
53
53
|
}
|