@danya-ai/cli 0.1.0
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/LICENSE +201 -0
- package/README.md +336 -0
- package/cli-acp.js +82 -0
- package/cli.js +105 -0
- package/dist/REPL-EYUOXCEC.js +42 -0
- package/dist/REPL-EYUOXCEC.js.map +7 -0
- package/dist/acp-S5WNCLMD.js +1372 -0
- package/dist/acp-S5WNCLMD.js.map +7 -0
- package/dist/agentsValidate-RQ2QDGNY.js +373 -0
- package/dist/agentsValidate-RQ2QDGNY.js.map +7 -0
- package/dist/ask-TX526UBD.js +129 -0
- package/dist/ask-TX526UBD.js.map +7 -0
- package/dist/autoUpdater-63RAZ24N.js +17 -0
- package/dist/autoUpdater-63RAZ24N.js.map +7 -0
- package/dist/chunk-2VQWLLDU.js +16 -0
- package/dist/chunk-2VQWLLDU.js.map +7 -0
- package/dist/chunk-4CLHMO4I.js +656 -0
- package/dist/chunk-4CLHMO4I.js.map +7 -0
- package/dist/chunk-4ZNNWJZU.js +5696 -0
- package/dist/chunk-4ZNNWJZU.js.map +7 -0
- package/dist/chunk-66EZC7Y7.js +149 -0
- package/dist/chunk-66EZC7Y7.js.map +7 -0
- package/dist/chunk-6EPQRP3S.js +96 -0
- package/dist/chunk-6EPQRP3S.js.map +7 -0
- package/dist/chunk-77IRSDFR.js +195 -0
- package/dist/chunk-77IRSDFR.js.map +7 -0
- package/dist/chunk-7RZNLBEK.js +136 -0
- package/dist/chunk-7RZNLBEK.js.map +7 -0
- package/dist/chunk-BNBV2FXC.js +19 -0
- package/dist/chunk-BNBV2FXC.js.map +7 -0
- package/dist/chunk-CQCREBDO.js +248 -0
- package/dist/chunk-CQCREBDO.js.map +7 -0
- package/dist/chunk-D77XS6TB.js +74 -0
- package/dist/chunk-D77XS6TB.js.map +7 -0
- package/dist/chunk-DHYBJN3V.js +474 -0
- package/dist/chunk-DHYBJN3V.js.map +7 -0
- package/dist/chunk-DLSLSLTR.js +842 -0
- package/dist/chunk-DLSLSLTR.js.map +7 -0
- package/dist/chunk-ELAE6Z4H.js +514 -0
- package/dist/chunk-ELAE6Z4H.js.map +7 -0
- package/dist/chunk-ELZQD7ZR.js +531 -0
- package/dist/chunk-ELZQD7ZR.js.map +7 -0
- package/dist/chunk-F6DEGMX6.js +31269 -0
- package/dist/chunk-F6DEGMX6.js.map +7 -0
- package/dist/chunk-GDF2AON2.js +124 -0
- package/dist/chunk-GDF2AON2.js.map +7 -0
- package/dist/chunk-H7BGBV4P.js +498 -0
- package/dist/chunk-H7BGBV4P.js.map +7 -0
- package/dist/chunk-HIIHGKXP.js +24 -0
- package/dist/chunk-HIIHGKXP.js.map +7 -0
- package/dist/chunk-HJCCXED7.js +17 -0
- package/dist/chunk-HJCCXED7.js.map +7 -0
- package/dist/chunk-IQ6VZB2Y.js +139 -0
- package/dist/chunk-IQ6VZB2Y.js.map +7 -0
- package/dist/chunk-J4D7AELD.js +518 -0
- package/dist/chunk-J4D7AELD.js.map +7 -0
- package/dist/chunk-JVGG2YQR.js +23 -0
- package/dist/chunk-JVGG2YQR.js.map +7 -0
- package/dist/chunk-LGEK2NV7.js +939 -0
- package/dist/chunk-LGEK2NV7.js.map +7 -0
- package/dist/chunk-LWXT5RGE.js +95 -0
- package/dist/chunk-LWXT5RGE.js.map +7 -0
- package/dist/chunk-M3TKNAUR.js +35 -0
- package/dist/chunk-M3TKNAUR.js.map +7 -0
- package/dist/chunk-MRFO7QO5.js +170 -0
- package/dist/chunk-MRFO7QO5.js.map +7 -0
- package/dist/chunk-MVN3DHQF.js +95 -0
- package/dist/chunk-MVN3DHQF.js.map +7 -0
- package/dist/chunk-O25PXGOC.js +772 -0
- package/dist/chunk-O25PXGOC.js.map +7 -0
- package/dist/chunk-OBGVKM3N.js +1618 -0
- package/dist/chunk-OBGVKM3N.js.map +7 -0
- package/dist/chunk-OV5HJXXQ.js +198 -0
- package/dist/chunk-OV5HJXXQ.js.map +7 -0
- package/dist/chunk-P5VWDMRD.js +249 -0
- package/dist/chunk-P5VWDMRD.js.map +7 -0
- package/dist/chunk-PDSAJX7G.js +49 -0
- package/dist/chunk-PDSAJX7G.js.map +7 -0
- package/dist/chunk-RHNEZOPO.js +739 -0
- package/dist/chunk-RHNEZOPO.js.map +7 -0
- package/dist/chunk-SQGAHZPM.js +3004 -0
- package/dist/chunk-SQGAHZPM.js.map +7 -0
- package/dist/chunk-U7Z4MXY4.js +21 -0
- package/dist/chunk-U7Z4MXY4.js.map +7 -0
- package/dist/chunk-UNCTVIS7.js +146 -0
- package/dist/chunk-UNCTVIS7.js.map +7 -0
- package/dist/chunk-VMEOI6MH.js +1103 -0
- package/dist/chunk-VMEOI6MH.js.map +7 -0
- package/dist/chunk-WAY3DKFO.js +47 -0
- package/dist/chunk-WAY3DKFO.js.map +7 -0
- package/dist/chunk-XEYEKVFT.js +24 -0
- package/dist/chunk-XEYEKVFT.js.map +7 -0
- package/dist/chunk-Y4BQ36T4.js +796 -0
- package/dist/chunk-Y4BQ36T4.js.map +7 -0
- package/dist/chunk-Y5LQPJWK.js +12 -0
- package/dist/chunk-Y5LQPJWK.js.map +7 -0
- package/dist/chunk-YIJWUNWF.js +1260 -0
- package/dist/chunk-YIJWUNWF.js.map +7 -0
- package/dist/chunk-YMIWYEZ7.js +34 -0
- package/dist/chunk-YMIWYEZ7.js.map +7 -0
- package/dist/cli-PQNZWJX4.js +3952 -0
- package/dist/cli-PQNZWJX4.js.map +7 -0
- package/dist/commands-HOBCZ3VQ.js +46 -0
- package/dist/commands-HOBCZ3VQ.js.map +7 -0
- package/dist/config-MLH7ZTFA.js +81 -0
- package/dist/config-MLH7ZTFA.js.map +7 -0
- package/dist/context-FZ6G4J63.js +30 -0
- package/dist/context-FZ6G4J63.js.map +7 -0
- package/dist/costTracker-5WKZXN5S.js +19 -0
- package/dist/costTracker-5WKZXN5S.js.map +7 -0
- package/dist/customCommands-EB4MMZSS.js +25 -0
- package/dist/customCommands-EB4MMZSS.js.map +7 -0
- package/dist/env-VMEIP4EW.js +28 -0
- package/dist/env-VMEIP4EW.js.map +7 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +7 -0
- package/dist/kodeAgentSessionId-WUT74FSH.js +16 -0
- package/dist/kodeAgentSessionId-WUT74FSH.js.map +7 -0
- package/dist/kodeAgentSessionLoad-KR4JSD6D.js +21 -0
- package/dist/kodeAgentSessionLoad-KR4JSD6D.js.map +7 -0
- package/dist/kodeAgentSessionResume-BCD6UV74.js +18 -0
- package/dist/kodeAgentSessionResume-BCD6UV74.js.map +7 -0
- package/dist/kodeAgentStreamJson-EDHHWNNX.js +15 -0
- package/dist/kodeAgentStreamJson-EDHHWNNX.js.map +7 -0
- package/dist/kodeAgentStreamJsonSession-G4RBNZRN.js +133 -0
- package/dist/kodeAgentStreamJsonSession-G4RBNZRN.js.map +7 -0
- package/dist/kodeAgentStructuredStdio-UA5P5UNU.js +11 -0
- package/dist/kodeAgentStructuredStdio-UA5P5UNU.js.map +7 -0
- package/dist/kodeHooks-EHM6GSIQ.js +37 -0
- package/dist/kodeHooks-EHM6GSIQ.js.map +7 -0
- package/dist/llm-SJXCV7DA.js +3138 -0
- package/dist/llm-SJXCV7DA.js.map +7 -0
- package/dist/llmLazy-2QYJVD6K.js +15 -0
- package/dist/llmLazy-2QYJVD6K.js.map +7 -0
- package/dist/loader-LJX77EFL.js +28 -0
- package/dist/loader-LJX77EFL.js.map +7 -0
- package/dist/mcp-DOROSLPN.js +49 -0
- package/dist/mcp-DOROSLPN.js.map +7 -0
- package/dist/mentionProcessor-5UZRHCGH.js +215 -0
- package/dist/mentionProcessor-5UZRHCGH.js.map +7 -0
- package/dist/messages-N5KBI53P.js +65 -0
- package/dist/messages-N5KBI53P.js.map +7 -0
- package/dist/model-HPLBR53R.js +30 -0
- package/dist/model-HPLBR53R.js.map +7 -0
- package/dist/openai-YP4OJYKF.js +29 -0
- package/dist/openai-YP4OJYKF.js.map +7 -0
- package/dist/outputStyles-NNALI5D7.js +28 -0
- package/dist/outputStyles-NNALI5D7.js.map +7 -0
- package/dist/package.json +4 -0
- package/dist/pluginRuntime-JYYI5BSQ.js +220 -0
- package/dist/pluginRuntime-JYYI5BSQ.js.map +7 -0
- package/dist/pluginValidation-JWUFPZUE.js +17 -0
- package/dist/pluginValidation-JWUFPZUE.js.map +7 -0
- package/dist/prompts-B2SS7CWI.js +50 -0
- package/dist/prompts-B2SS7CWI.js.map +7 -0
- package/dist/query-HIK457UU.js +50 -0
- package/dist/query-HIK457UU.js.map +7 -0
- package/dist/responsesStreaming-L2BSN37C.js +10 -0
- package/dist/responsesStreaming-L2BSN37C.js.map +7 -0
- package/dist/ripgrep-GCKI4UTL.js +17 -0
- package/dist/ripgrep-GCKI4UTL.js.map +7 -0
- package/dist/skillMarketplace-PCTUUX46.js +37 -0
- package/dist/skillMarketplace-PCTUUX46.js.map +7 -0
- package/dist/state-XJICGOUA.js +18 -0
- package/dist/state-XJICGOUA.js.map +7 -0
- package/dist/theme-DP7O4SGH.js +14 -0
- package/dist/theme-DP7O4SGH.js.map +7 -0
- package/dist/toolPermissionContext-DHAGUPEW.js +17 -0
- package/dist/toolPermissionContext-DHAGUPEW.js.map +7 -0
- package/dist/toolPermissionSettings-PT65MQIQ.js +18 -0
- package/dist/toolPermissionSettings-PT65MQIQ.js.map +7 -0
- package/dist/tools-BHW37PCF.js +47 -0
- package/dist/tools-BHW37PCF.js.map +7 -0
- package/dist/userInput-XDRYT5TI.js +316 -0
- package/dist/userInput-XDRYT5TI.js.map +7 -0
- package/dist/uuid-QUYJMIUV.js +9 -0
- package/dist/uuid-QUYJMIUV.js.map +7 -0
- package/dist/yoga.wasm +0 -0
- package/package.json +115 -0
- package/scripts/binary-utils.cjs +62 -0
- package/scripts/cli-acp-wrapper.cjs +82 -0
- package/scripts/cli-wrapper.cjs +105 -0
- package/scripts/postinstall.js +144 -0
- package/yoga.wasm +0 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { createRequire as __kodeCreateRequire } from "node:module";
|
|
2
|
+
const require = __kodeCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
AbortError
|
|
5
|
+
} from "./chunk-HIIHGKXP.js";
|
|
6
|
+
|
|
7
|
+
// src/utils/protocol/kodeAgentStructuredStdio.ts
|
|
8
|
+
import { createInterface } from "node:readline";
|
|
9
|
+
function isRecord(value) {
|
|
10
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
function tryParseLine(line) {
|
|
13
|
+
if (!line.trim()) return null;
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(line);
|
|
16
|
+
if (!isRecord(parsed)) return null;
|
|
17
|
+
if (typeof parsed.type !== "string") return null;
|
|
18
|
+
return parsed;
|
|
19
|
+
} catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function makeRequestId() {
|
|
24
|
+
return Math.random().toString(36).slice(2, 15);
|
|
25
|
+
}
|
|
26
|
+
var DanyaAgentStructuredStdio = class {
|
|
27
|
+
constructor(input, output, opts = {}) {
|
|
28
|
+
this.input = input;
|
|
29
|
+
this.output = output;
|
|
30
|
+
this.opts = opts;
|
|
31
|
+
}
|
|
32
|
+
started = false;
|
|
33
|
+
inputClosed = false;
|
|
34
|
+
pendingRequests = /* @__PURE__ */ new Map();
|
|
35
|
+
queuedUserMessages = [];
|
|
36
|
+
awaitingUserWaiters = [];
|
|
37
|
+
start() {
|
|
38
|
+
if (this.started) return;
|
|
39
|
+
this.started = true;
|
|
40
|
+
const rl = createInterface({ input: this.input });
|
|
41
|
+
(async () => {
|
|
42
|
+
for await (const line of rl) {
|
|
43
|
+
this.handleLine(String(line));
|
|
44
|
+
}
|
|
45
|
+
})().catch(() => {
|
|
46
|
+
}).finally(() => {
|
|
47
|
+
this.inputClosed = true;
|
|
48
|
+
rl.close();
|
|
49
|
+
this.rejectAllPending(new Error("Stream closed"));
|
|
50
|
+
this.rejectAllUserWaiters(new Error("Stream closed"));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
rejectAllPending(err) {
|
|
54
|
+
for (const pending of this.pendingRequests.values()) {
|
|
55
|
+
pending.cleanup();
|
|
56
|
+
pending.reject(err);
|
|
57
|
+
}
|
|
58
|
+
this.pendingRequests.clear();
|
|
59
|
+
}
|
|
60
|
+
rejectAllUserWaiters(err) {
|
|
61
|
+
for (const waiter of this.awaitingUserWaiters.splice(0)) {
|
|
62
|
+
waiter.reject(err);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
write(obj) {
|
|
66
|
+
this.output.write(JSON.stringify(obj) + "\n");
|
|
67
|
+
}
|
|
68
|
+
sendControlResponseSuccess(requestId, response) {
|
|
69
|
+
this.write({
|
|
70
|
+
type: "control_response",
|
|
71
|
+
response: {
|
|
72
|
+
subtype: "success",
|
|
73
|
+
request_id: requestId,
|
|
74
|
+
...response !== void 0 ? { response } : {}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
sendControlResponseError(requestId, error) {
|
|
79
|
+
this.write({
|
|
80
|
+
type: "control_response",
|
|
81
|
+
response: {
|
|
82
|
+
subtype: "error",
|
|
83
|
+
request_id: requestId,
|
|
84
|
+
error
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
sendControlCancelRequest(requestId) {
|
|
89
|
+
this.write({
|
|
90
|
+
type: "control_cancel_request",
|
|
91
|
+
request_id: requestId
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
handleLine(line) {
|
|
95
|
+
const msg = tryParseLine(line);
|
|
96
|
+
if (!msg) return;
|
|
97
|
+
if (msg.type === "keep_alive") {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (msg.type === "user") {
|
|
101
|
+
const userMsg = msg;
|
|
102
|
+
const waiter = this.awaitingUserWaiters.shift();
|
|
103
|
+
if (waiter) waiter.resolve(userMsg);
|
|
104
|
+
else this.queuedUserMessages.push(userMsg);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (msg.type === "control_response") {
|
|
108
|
+
const responseMsg = msg;
|
|
109
|
+
const requestId = responseMsg.response?.request_id;
|
|
110
|
+
if (typeof requestId !== "string" || !requestId) return;
|
|
111
|
+
const pending = this.pendingRequests.get(requestId);
|
|
112
|
+
if (!pending) return;
|
|
113
|
+
pending.cleanup();
|
|
114
|
+
this.pendingRequests.delete(requestId);
|
|
115
|
+
pending.resolve(responseMsg.response);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (msg.type === "control_request") {
|
|
119
|
+
const requestMsg = msg;
|
|
120
|
+
const requestId = requestMsg.request_id;
|
|
121
|
+
const subtype = requestMsg.request?.subtype;
|
|
122
|
+
if (typeof requestId !== "string" || !requestId) return;
|
|
123
|
+
if (typeof subtype !== "string" || !subtype) {
|
|
124
|
+
this.sendControlResponseError(
|
|
125
|
+
requestId,
|
|
126
|
+
"Invalid control request (missing subtype)"
|
|
127
|
+
);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (subtype === "interrupt") {
|
|
131
|
+
this.opts.onInterrupt?.();
|
|
132
|
+
this.sendControlResponseSuccess(requestId);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const handler = this.opts.onControlRequest;
|
|
136
|
+
if (handler) {
|
|
137
|
+
Promise.resolve().then(async () => await handler(requestMsg)).then(
|
|
138
|
+
(response) => this.sendControlResponseSuccess(requestId, response)
|
|
139
|
+
).catch(
|
|
140
|
+
(err) => this.sendControlResponseError(
|
|
141
|
+
requestId,
|
|
142
|
+
err instanceof Error ? err.message : String(err)
|
|
143
|
+
)
|
|
144
|
+
);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
this.sendControlResponseError(
|
|
148
|
+
requestId,
|
|
149
|
+
`Unsupported control request subtype: ${subtype}`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async nextUserMessage(args) {
|
|
154
|
+
if (this.queuedUserMessages.length > 0) {
|
|
155
|
+
return this.queuedUserMessages.shift();
|
|
156
|
+
}
|
|
157
|
+
if (this.inputClosed) {
|
|
158
|
+
throw new Error("Stream closed");
|
|
159
|
+
}
|
|
160
|
+
const timeoutMs = typeof args?.timeoutMs === "number" && Number.isFinite(args.timeoutMs) ? Math.max(0, args.timeoutMs) : null;
|
|
161
|
+
return await new Promise((resolve, reject) => {
|
|
162
|
+
let settled = false;
|
|
163
|
+
let waiter = null;
|
|
164
|
+
const onAbort = () => {
|
|
165
|
+
cleanup();
|
|
166
|
+
reject(new AbortError("User input aborted."));
|
|
167
|
+
};
|
|
168
|
+
const onTimeout = () => {
|
|
169
|
+
cleanup();
|
|
170
|
+
reject(new Error("Timed out waiting for user input."));
|
|
171
|
+
};
|
|
172
|
+
const cleanup = () => {
|
|
173
|
+
if (settled) return;
|
|
174
|
+
settled = true;
|
|
175
|
+
if (args?.signal) args.signal.removeEventListener("abort", onAbort);
|
|
176
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
177
|
+
if (waiter) {
|
|
178
|
+
const idx = this.awaitingUserWaiters.indexOf(waiter);
|
|
179
|
+
if (idx >= 0) this.awaitingUserWaiters.splice(idx, 1);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
let timeoutId = null;
|
|
183
|
+
if (timeoutMs !== null) timeoutId = setTimeout(onTimeout, timeoutMs);
|
|
184
|
+
if (args?.signal)
|
|
185
|
+
args.signal.addEventListener("abort", onAbort, { once: true });
|
|
186
|
+
waiter = {
|
|
187
|
+
resolve: (msg) => {
|
|
188
|
+
cleanup();
|
|
189
|
+
resolve(msg);
|
|
190
|
+
},
|
|
191
|
+
reject: (err) => {
|
|
192
|
+
cleanup();
|
|
193
|
+
reject(err);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
this.awaitingUserWaiters.push(waiter);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
async sendRequest(request, args) {
|
|
200
|
+
if (this.inputClosed) {
|
|
201
|
+
throw new Error("Stream closed");
|
|
202
|
+
}
|
|
203
|
+
if (args?.signal?.aborted) {
|
|
204
|
+
throw new AbortError("Request aborted.");
|
|
205
|
+
}
|
|
206
|
+
const requestId = makeRequestId();
|
|
207
|
+
this.write({ type: "control_request", request_id: requestId, request });
|
|
208
|
+
const timeoutMs = typeof args?.timeoutMs === "number" && Number.isFinite(args.timeoutMs) ? Math.max(0, args.timeoutMs) : null;
|
|
209
|
+
return await new Promise((resolve, reject) => {
|
|
210
|
+
const onAbort = () => {
|
|
211
|
+
this.sendControlCancelRequest(requestId);
|
|
212
|
+
this.pendingRequests.delete(requestId);
|
|
213
|
+
cleanup();
|
|
214
|
+
reject(new AbortError("Request aborted."));
|
|
215
|
+
};
|
|
216
|
+
const onTimeout = () => {
|
|
217
|
+
this.sendControlCancelRequest(requestId);
|
|
218
|
+
this.pendingRequests.delete(requestId);
|
|
219
|
+
cleanup();
|
|
220
|
+
reject(new Error("Timed out waiting for control response."));
|
|
221
|
+
};
|
|
222
|
+
const cleanup = () => {
|
|
223
|
+
if (args?.signal) args.signal.removeEventListener("abort", onAbort);
|
|
224
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
225
|
+
};
|
|
226
|
+
let timeoutId = null;
|
|
227
|
+
if (timeoutMs !== null) timeoutId = setTimeout(onTimeout, timeoutMs);
|
|
228
|
+
if (args?.signal)
|
|
229
|
+
args.signal.addEventListener("abort", onAbort, { once: true });
|
|
230
|
+
this.pendingRequests.set(requestId, {
|
|
231
|
+
cleanup,
|
|
232
|
+
resolve: (response) => {
|
|
233
|
+
if (response.subtype === "error") {
|
|
234
|
+
reject(
|
|
235
|
+
new Error(response.error || "Unknown control response error")
|
|
236
|
+
);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
resolve(response.response ?? null);
|
|
240
|
+
},
|
|
241
|
+
reject
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
export {
|
|
248
|
+
DanyaAgentStructuredStdio
|
|
249
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/protocol/kodeAgentStructuredStdio.ts"],
|
|
4
|
+
"sourcesContent": ["import { createInterface } from 'node:readline'\r\nimport { AbortError } from '@utils/text/errors'\r\n\r\ntype ControlRequestMessage = {\r\n type: 'control_request'\r\n request_id: string\r\n request: { subtype: string; [key: string]: unknown }\r\n}\r\n\r\ntype KeepAliveMessage = { type: 'keep_alive' }\r\n\r\ntype ControlResponseMessage = {\r\n type: 'control_response'\r\n response: {\r\n request_id: string\r\n subtype: 'success' | 'error'\r\n response?: unknown\r\n error?: string\r\n }\r\n}\r\n\r\ntype ControlCancelRequestMessage = {\r\n type: 'control_cancel_request'\r\n request_id: string\r\n}\r\n\r\ntype UserInputMessage = {\r\n type: 'user'\r\n uuid?: string\r\n parent_tool_use_id?: string | null\r\n message: { role: 'user'; content: unknown }\r\n}\r\n\r\ntype StructuredInputMessage =\r\n | ControlRequestMessage\r\n | ControlResponseMessage\r\n | ControlCancelRequestMessage\r\n | UserInputMessage\r\n | KeepAliveMessage\r\n | { type: string; [key: string]: unknown }\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value)\r\n}\r\n\r\nfunction tryParseLine(line: string): StructuredInputMessage | null {\r\n if (!line.trim()) return null\r\n try {\r\n const parsed = JSON.parse(line) as unknown\r\n if (!isRecord(parsed)) return null\r\n if (typeof parsed.type !== 'string') return null\r\n return parsed as StructuredInputMessage\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nfunction makeRequestId(): string {\r\n return Math.random().toString(36).slice(2, 15)\r\n}\r\n\r\nexport class DanyaAgentStructuredStdio {\r\n private started = false\r\n private inputClosed = false\r\n private pendingRequests = new Map<\r\n string,\r\n {\r\n resolve: (msg: ControlResponseMessage['response']) => void\r\n reject: (err: Error) => void\r\n cleanup: () => void\r\n }\r\n >()\r\n private queuedUserMessages: UserInputMessage[] = []\r\n private awaitingUserWaiters: Array<{\r\n resolve: (msg: UserInputMessage) => void\r\n reject: (err: Error) => void\r\n }> = []\r\n\r\n constructor(\r\n private input: NodeJS.ReadableStream,\r\n private output: NodeJS.WritableStream,\r\n private opts: {\r\n onInterrupt?: () => void\r\n onControlRequest?: (msg: ControlRequestMessage) => Promise<unknown | void>\r\n } = {},\r\n ) {}\r\n\r\n start(): void {\r\n if (this.started) return\r\n this.started = true\r\n\r\n const rl = createInterface({ input: this.input })\r\n ;(async () => {\r\n for await (const line of rl) {\r\n this.handleLine(String(line))\r\n }\r\n })()\r\n .catch(() => {})\r\n .finally(() => {\r\n this.inputClosed = true\r\n rl.close()\r\n this.rejectAllPending(new Error('Stream closed'))\r\n this.rejectAllUserWaiters(new Error('Stream closed'))\r\n })\r\n }\r\n\r\n private rejectAllPending(err: Error): void {\r\n for (const pending of this.pendingRequests.values()) {\r\n pending.cleanup()\r\n pending.reject(err)\r\n }\r\n this.pendingRequests.clear()\r\n }\r\n\r\n private rejectAllUserWaiters(err: Error): void {\r\n for (const waiter of this.awaitingUserWaiters.splice(0)) {\r\n waiter.reject(err)\r\n }\r\n }\r\n\r\n private write(obj: unknown): void {\r\n this.output.write(JSON.stringify(obj) + '\\n')\r\n }\r\n\r\n private sendControlResponseSuccess(\r\n requestId: string,\r\n response?: unknown,\r\n ): void {\r\n this.write({\r\n type: 'control_response',\r\n response: {\r\n subtype: 'success',\r\n request_id: requestId,\r\n ...(response !== undefined ? { response } : {}),\r\n },\r\n })\r\n }\r\n\r\n private sendControlResponseError(requestId: string, error: string): void {\r\n this.write({\r\n type: 'control_response',\r\n response: {\r\n subtype: 'error',\r\n request_id: requestId,\r\n error,\r\n },\r\n })\r\n }\r\n\r\n private sendControlCancelRequest(requestId: string): void {\r\n this.write({\r\n type: 'control_cancel_request',\r\n request_id: requestId,\r\n })\r\n }\r\n\r\n private handleLine(line: string): void {\r\n const msg = tryParseLine(line)\r\n if (!msg) return\r\n\r\n if (msg.type === 'keep_alive') {\r\n return\r\n }\r\n\r\n if (msg.type === 'user') {\r\n const userMsg = msg as UserInputMessage\r\n const waiter = this.awaitingUserWaiters.shift()\r\n if (waiter) waiter.resolve(userMsg)\r\n else this.queuedUserMessages.push(userMsg)\r\n return\r\n }\r\n\r\n if (msg.type === 'control_response') {\r\n const responseMsg = msg as ControlResponseMessage\r\n const requestId = responseMsg.response?.request_id\r\n if (typeof requestId !== 'string' || !requestId) return\r\n const pending = this.pendingRequests.get(requestId)\r\n if (!pending) return\r\n pending.cleanup()\r\n this.pendingRequests.delete(requestId)\r\n pending.resolve(responseMsg.response)\r\n return\r\n }\r\n\r\n if (msg.type === 'control_request') {\r\n const requestMsg = msg as ControlRequestMessage\r\n const requestId = requestMsg.request_id\r\n const subtype = requestMsg.request?.subtype\r\n if (typeof requestId !== 'string' || !requestId) return\r\n if (typeof subtype !== 'string' || !subtype) {\r\n this.sendControlResponseError(\r\n requestId,\r\n 'Invalid control request (missing subtype)',\r\n )\r\n return\r\n }\r\n\r\n if (subtype === 'interrupt') {\r\n this.opts.onInterrupt?.()\r\n this.sendControlResponseSuccess(requestId)\r\n return\r\n }\r\n\r\n const handler = this.opts.onControlRequest\r\n if (handler) {\r\n Promise.resolve()\r\n .then(async () => await handler(requestMsg))\r\n .then(response =>\r\n this.sendControlResponseSuccess(requestId, response),\r\n )\r\n .catch(err =>\r\n this.sendControlResponseError(\r\n requestId,\r\n err instanceof Error ? err.message : String(err),\r\n ),\r\n )\r\n return\r\n }\r\n\r\n this.sendControlResponseError(\r\n requestId,\r\n `Unsupported control request subtype: ${subtype}`,\r\n )\r\n }\r\n }\r\n\r\n async nextUserMessage(args?: {\r\n signal?: AbortSignal\r\n timeoutMs?: number\r\n }): Promise<UserInputMessage> {\r\n if (this.queuedUserMessages.length > 0) {\r\n return this.queuedUserMessages.shift()!\r\n }\r\n if (this.inputClosed) {\r\n throw new Error('Stream closed')\r\n }\r\n\r\n const timeoutMs =\r\n typeof args?.timeoutMs === 'number' && Number.isFinite(args.timeoutMs)\r\n ? Math.max(0, args.timeoutMs)\r\n : null\r\n\r\n return await new Promise<UserInputMessage>((resolve, reject) => {\r\n let settled = false\r\n let waiter: {\r\n resolve: (msg: UserInputMessage) => void\r\n reject: (err: Error) => void\r\n } | null = null\r\n const onAbort = () => {\r\n cleanup()\r\n reject(new AbortError('User input aborted.'))\r\n }\r\n\r\n const onTimeout = () => {\r\n cleanup()\r\n reject(new Error('Timed out waiting for user input.'))\r\n }\r\n\r\n const cleanup = () => {\r\n if (settled) return\r\n settled = true\r\n if (args?.signal) args.signal.removeEventListener('abort', onAbort)\r\n if (timeoutId) clearTimeout(timeoutId)\r\n if (waiter) {\r\n const idx = this.awaitingUserWaiters.indexOf(waiter)\r\n if (idx >= 0) this.awaitingUserWaiters.splice(idx, 1)\r\n }\r\n }\r\n\r\n let timeoutId: NodeJS.Timeout | null = null\r\n if (timeoutMs !== null) timeoutId = setTimeout(onTimeout, timeoutMs)\r\n if (args?.signal)\r\n args.signal.addEventListener('abort', onAbort, { once: true })\r\n\r\n waiter = {\r\n resolve: msg => {\r\n cleanup()\r\n resolve(msg)\r\n },\r\n reject: err => {\r\n cleanup()\r\n reject(err)\r\n },\r\n }\r\n\r\n this.awaitingUserWaiters.push(waiter)\r\n })\r\n }\r\n\r\n async sendRequest<TResponse = unknown>(\r\n request: Record<string, unknown>,\r\n args?: { signal?: AbortSignal; timeoutMs?: number },\r\n ): Promise<TResponse> {\r\n if (this.inputClosed) {\r\n throw new Error('Stream closed')\r\n }\r\n if (args?.signal?.aborted) {\r\n throw new AbortError('Request aborted.')\r\n }\r\n\r\n const requestId = makeRequestId()\r\n this.write({ type: 'control_request', request_id: requestId, request })\r\n\r\n const timeoutMs =\r\n typeof args?.timeoutMs === 'number' && Number.isFinite(args.timeoutMs)\r\n ? Math.max(0, args.timeoutMs)\r\n : null\r\n\r\n return await new Promise<TResponse>((resolve, reject) => {\r\n const onAbort = () => {\r\n this.sendControlCancelRequest(requestId)\r\n this.pendingRequests.delete(requestId)\r\n cleanup()\r\n reject(new AbortError('Request aborted.'))\r\n }\r\n\r\n const onTimeout = () => {\r\n this.sendControlCancelRequest(requestId)\r\n this.pendingRequests.delete(requestId)\r\n cleanup()\r\n reject(new Error('Timed out waiting for control response.'))\r\n }\r\n\r\n const cleanup = () => {\r\n if (args?.signal) args.signal.removeEventListener('abort', onAbort)\r\n if (timeoutId) clearTimeout(timeoutId)\r\n }\r\n\r\n let timeoutId: NodeJS.Timeout | null = null\r\n if (timeoutMs !== null) timeoutId = setTimeout(onTimeout, timeoutMs)\r\n if (args?.signal)\r\n args.signal.addEventListener('abort', onAbort, { once: true })\r\n\r\n this.pendingRequests.set(requestId, {\r\n cleanup,\r\n resolve: response => {\r\n if (response.subtype === 'error') {\r\n reject(\r\n new Error(response.error || 'Unknown control response error'),\r\n )\r\n return\r\n }\r\n resolve((response.response ?? null) as TResponse)\r\n },\r\n reject,\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport { DanyaAgentStructuredStdio as KodeAgentStructuredStdio }\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createRequire as __kodeCreateRequire } from "node:module";
|
|
2
|
+
const require = __kodeCreateRequire(import.meta.url);
|
|
3
|
+
|
|
4
|
+
// src/utils/config/sanitizeAnthropicEnv.ts
|
|
5
|
+
var deprecatedAnthropicEnvVars = [
|
|
6
|
+
"ANTHROPIC_BASE_URL",
|
|
7
|
+
"ANTHROPIC_API_KEY",
|
|
8
|
+
"ANTHROPIC_API_TOKEN",
|
|
9
|
+
"ANTHROPIC_API_Token"
|
|
10
|
+
];
|
|
11
|
+
for (const key of deprecatedAnthropicEnvVars) {
|
|
12
|
+
if (process.env[key]) {
|
|
13
|
+
delete process.env[key];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// src/entrypoints/cli/bootstrapEnv.ts
|
|
18
|
+
import { fileURLToPath } from "node:url";
|
|
19
|
+
import { basename, dirname, join } from "node:path";
|
|
20
|
+
import { existsSync } from "node:fs";
|
|
21
|
+
function ensurePackagedRuntimeEnv() {
|
|
22
|
+
if (process.env.DANYA_PACKAGED !== void 0 || process.env.KODE_PACKAGED !== void 0) return;
|
|
23
|
+
try {
|
|
24
|
+
const exec = basename(process.execPath || "").toLowerCase();
|
|
25
|
+
if (exec && exec !== "bun" && exec !== "bun.exe" && exec !== "node" && exec !== "node.exe") {
|
|
26
|
+
process.env.DANYA_PACKAGED = "1";
|
|
27
|
+
}
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function ensureYogaWasmPath(entrypointUrl) {
|
|
32
|
+
try {
|
|
33
|
+
if (process.env.YOGA_WASM_PATH) return;
|
|
34
|
+
const entryFile = fileURLToPath(entrypointUrl);
|
|
35
|
+
const entryDir = dirname(entryFile);
|
|
36
|
+
const devCandidate = join(entryDir, "../../yoga.wasm");
|
|
37
|
+
const distCandidate = join(entryDir, "./yoga.wasm");
|
|
38
|
+
const resolved = existsSync(distCandidate) ? distCandidate : existsSync(devCandidate) ? devCandidate : void 0;
|
|
39
|
+
if (resolved) {
|
|
40
|
+
process.env.YOGA_WASM_PATH = resolved;
|
|
41
|
+
}
|
|
42
|
+
} catch {
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
ensurePackagedRuntimeEnv,
|
|
48
|
+
ensureYogaWasmPath
|
|
49
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/config/sanitizeAnthropicEnv.ts", "../src/entrypoints/cli/bootstrapEnv.ts"],
|
|
4
|
+
"sourcesContent": ["const deprecatedAnthropicEnvVars = [\r\n 'ANTHROPIC_BASE_URL',\r\n 'ANTHROPIC_API_KEY',\r\n 'ANTHROPIC_API_TOKEN',\r\n 'ANTHROPIC_API_Token',\r\n]\r\n\r\nfor (const key of deprecatedAnthropicEnvVars) {\r\n if (process.env[key]) {\r\n delete process.env[key]\r\n }\r\n}\r\n", "import { fileURLToPath } from 'node:url'\r\nimport { basename, dirname, join } from 'node:path'\r\nimport { existsSync } from 'node:fs'\r\n\r\nexport function ensurePackagedRuntimeEnv(): void {\r\n if (process.env.DANYA_PACKAGED !== undefined || process.env.KODE_PACKAGED !== undefined) return\r\n\r\n try {\r\n const exec = basename(process.execPath || '').toLowerCase()\r\n if (\r\n exec &&\r\n exec !== 'bun' &&\r\n exec !== 'bun.exe' &&\r\n exec !== 'node' &&\r\n exec !== 'node.exe'\r\n ) {\r\n process.env.DANYA_PACKAGED = '1'\r\n }\r\n } catch {}\r\n}\r\n\r\nexport function ensureYogaWasmPath(entrypointUrl: string): void {\r\n try {\r\n if (process.env.YOGA_WASM_PATH) return\r\n\r\n const entryFile = fileURLToPath(entrypointUrl)\r\n const entryDir = dirname(entryFile)\r\n const devCandidate = join(entryDir, '../../yoga.wasm')\r\n const distCandidate = join(entryDir, './yoga.wasm')\r\n const resolved = existsSync(distCandidate)\r\n ? distCandidate\r\n : existsSync(devCandidate)\r\n ? devCandidate\r\n : undefined\r\n if (resolved) {\r\n process.env.YOGA_WASM_PATH = resolved\r\n }\r\n } catch {}\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;;;AAAA,IAAM,6BAA6B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,WAAW,OAAO,4BAA4B;AAC5C,MAAI,QAAQ,IAAI,GAAG,GAAG;AACpB,WAAO,QAAQ,IAAI,GAAG;AAAA,EACxB;AACF;;;ACXA,SAAS,qBAAqB;AAC9B,SAAS,UAAU,SAAS,YAAY;AACxC,SAAS,kBAAkB;AAEpB,SAAS,2BAAiC;AAC/C,MAAI,QAAQ,IAAI,mBAAmB,UAAa,QAAQ,IAAI,kBAAkB,OAAW;AAEzF,MAAI;AACF,UAAM,OAAO,SAAS,QAAQ,YAAY,EAAE,EAAE,YAAY;AAC1D,QACE,QACA,SAAS,SACT,SAAS,aACT,SAAS,UACT,SAAS,YACT;AACA,cAAQ,IAAI,iBAAiB;AAAA,IAC/B;AAAA,EACF,QAAQ;AAAA,EAAC;AACX;AAEO,SAAS,mBAAmB,eAA6B;AAC9D,MAAI;AACF,QAAI,QAAQ,IAAI,eAAgB;AAEhC,UAAM,YAAY,cAAc,aAAa;AAC7C,UAAM,WAAW,QAAQ,SAAS;AAClC,UAAM,eAAe,KAAK,UAAU,iBAAiB;AACrD,UAAM,gBAAgB,KAAK,UAAU,aAAa;AAClD,UAAM,WAAW,WAAW,aAAa,IACrC,gBACA,WAAW,YAAY,IACrB,eACA;AACN,QAAI,UAAU;AACZ,cAAQ,IAAI,iBAAiB;AAAA,IAC/B;AAAA,EACF,QAAQ;AAAA,EAAC;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|