@downcity/city 1.1.21 → 1.1.24
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/bin/cli/agent/AgentChat.d.ts +1 -1
- package/bin/cli/agent/AgentChat.d.ts.map +1 -1
- package/bin/cli/agent/AgentChat.js +148 -99
- package/bin/cli/agent/AgentChat.js.map +1 -1
- package/bin/cli/agent/AgentChatTypes.d.ts +2 -8
- package/bin/cli/agent/AgentChatTypes.d.ts.map +1 -1
- package/bin/cli/shared/Update.d.ts +4 -3
- package/bin/cli/shared/Update.d.ts.map +1 -1
- package/bin/cli/shared/Update.js +41 -12
- package/bin/cli/shared/Update.js.map +1 -1
- package/package.json +2 -2
- package/src/cli/agent/AgentChat.ts +201 -110
- package/src/cli/agent/AgentChatTypes.ts +2 -8
- package/src/cli/shared/Update.ts +46 -12
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { AgentChatCliOptions, AgentChatExecutionOutcome, AgentChatTransportOptions } from "./AgentChatTypes.js";
|
|
10
10
|
/**
|
|
11
|
-
* 向目标 agent 的
|
|
11
|
+
* 向目标 agent 的 SDK actor session 发送一轮消息。
|
|
12
12
|
*/
|
|
13
13
|
export declare function executeAgentChatTurn(params: {
|
|
14
14
|
agentName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentChat.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/AgentChat.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"AgentChat.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/AgentChat.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAEzB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AA6d7B;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAwCrC;AAqID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC7E"}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
import { createInterface } from "node:readline/promises";
|
|
10
10
|
import chalk from "chalk";
|
|
11
11
|
import prompts from "prompts";
|
|
12
|
-
import { callAgentTransport, } from "@downcity/agent";
|
|
13
12
|
import { emitCliBlock } from "../shared/CliReporter.js";
|
|
14
13
|
import { printResult } from "../../utils/cli/CliOutput.js";
|
|
15
14
|
import { resolveProjectRootByAgentName, validateAgentProjectRoot, } from "../service/ServiceCommandSupport.js";
|
|
@@ -17,7 +16,7 @@ import { listRegisteredAgentsForCli } from "./AgentSelection.js";
|
|
|
17
16
|
import { formatCliBearerHeaderValue, resolveCliAuthToken, } from "../../http/auth/CliAuthStateStore.js";
|
|
18
17
|
import { resolveDaemonEndpoint } from "../../process/daemon/Client.js";
|
|
19
18
|
import { AGENT_CHAT_DEFAULT_SESSION_ID } from "./AgentChatTypes.js";
|
|
20
|
-
const
|
|
19
|
+
const SDK_EVENTS_READY_TYPE = "sdk-events-ready";
|
|
21
20
|
function normalizeChatMessage(input) {
|
|
22
21
|
return String(input || "").trim();
|
|
23
22
|
}
|
|
@@ -35,13 +34,6 @@ function buildAgentChatFailureText(error) {
|
|
|
35
34
|
return (String(error || "").trim() ||
|
|
36
35
|
"Agent daemon returned empty error (check config with `city agent status`)");
|
|
37
36
|
}
|
|
38
|
-
function isChatSuccess(payload) {
|
|
39
|
-
if (!payload || payload.success !== true)
|
|
40
|
-
return false;
|
|
41
|
-
if (payload.result?.success === false)
|
|
42
|
-
return false;
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
37
|
async function resolveChatTargetAgentName(inputName) {
|
|
46
38
|
const explicit = String(inputName || "").trim();
|
|
47
39
|
if (explicit)
|
|
@@ -144,26 +136,6 @@ function printAssistantReply(replyText) {
|
|
|
144
136
|
}
|
|
145
137
|
console.log(`\n${text}\n`);
|
|
146
138
|
}
|
|
147
|
-
function printQueuedResult(params) {
|
|
148
|
-
emitCliBlock({
|
|
149
|
-
tone: "info",
|
|
150
|
-
title: "Turn queued",
|
|
151
|
-
facts: [
|
|
152
|
-
{
|
|
153
|
-
label: "agent",
|
|
154
|
-
value: params.agentName,
|
|
155
|
-
},
|
|
156
|
-
...(params.payload.result?.queueItemId
|
|
157
|
-
? [
|
|
158
|
-
{
|
|
159
|
-
label: "queue item",
|
|
160
|
-
value: params.payload.result.queueItemId,
|
|
161
|
-
},
|
|
162
|
-
]
|
|
163
|
-
: []),
|
|
164
|
-
],
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
139
|
function printAgentChatFailure(params) {
|
|
168
140
|
emitCliBlock({
|
|
169
141
|
tone: "error",
|
|
@@ -180,7 +152,7 @@ function printAgentChatFailure(params) {
|
|
|
180
152
|
],
|
|
181
153
|
});
|
|
182
154
|
}
|
|
183
|
-
async function
|
|
155
|
+
async function readHttpFailure(response) {
|
|
184
156
|
const contentType = String(response.headers.get("content-type") || "").toLowerCase();
|
|
185
157
|
const text = await response.text().catch(() => "");
|
|
186
158
|
if (contentType.includes("application/json")) {
|
|
@@ -195,13 +167,47 @@ async function readStreamFailure(response) {
|
|
|
195
167
|
}
|
|
196
168
|
return String(text || "").trim() || `HTTP ${response.status}`;
|
|
197
169
|
}
|
|
198
|
-
|
|
170
|
+
function isSdkEventsReadyFrame(value) {
|
|
171
|
+
return (typeof value === "object" &&
|
|
172
|
+
value !== null &&
|
|
173
|
+
"type" in value &&
|
|
174
|
+
String(value.type || "") === SDK_EVENTS_READY_TYPE);
|
|
175
|
+
}
|
|
176
|
+
async function postSdkPrompt(params) {
|
|
177
|
+
const response = await fetch(new URL(`/api/sdk/sessions/${encodeURIComponent(params.sessionId)}/prompt`, params.endpointBaseUrl).toString(), {
|
|
178
|
+
method: "POST",
|
|
179
|
+
headers: {
|
|
180
|
+
"Content-Type": "application/json",
|
|
181
|
+
...(params.authHeaderValue ? { Authorization: params.authHeaderValue } : {}),
|
|
182
|
+
},
|
|
183
|
+
body: JSON.stringify({
|
|
184
|
+
query: params.message,
|
|
185
|
+
}),
|
|
186
|
+
}).catch((error) => {
|
|
187
|
+
throw new Error(`Failed to call ${params.endpointBaseUrl}: ${String(error)}`);
|
|
188
|
+
});
|
|
189
|
+
const payload = (await response.json().catch(() => ({})));
|
|
190
|
+
const turnId = String(payload.turn?.id || "").trim();
|
|
191
|
+
if (!response.ok || payload.success !== true || !turnId) {
|
|
192
|
+
return {
|
|
193
|
+
success: false,
|
|
194
|
+
error: String(payload.error || "").trim() ||
|
|
195
|
+
`SDK prompt failed with HTTP ${response.status}`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
success: true,
|
|
200
|
+
turnId,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
async function runSdkPromptTurn(params) {
|
|
199
204
|
const message = normalizeChatMessage(params.message);
|
|
200
205
|
if (!message) {
|
|
201
206
|
return {
|
|
202
207
|
success: false,
|
|
203
208
|
error: "Chat message is required.",
|
|
204
209
|
emittedVisibleText: false,
|
|
210
|
+
text: "",
|
|
205
211
|
};
|
|
206
212
|
}
|
|
207
213
|
const resolved = await resolveAgentChatTarget(params.agentName);
|
|
@@ -210,9 +216,11 @@ async function streamAgentChatTurn(params) {
|
|
|
210
216
|
success: false,
|
|
211
217
|
error: resolved.outcome.error,
|
|
212
218
|
emittedVisibleText: false,
|
|
219
|
+
text: "",
|
|
213
220
|
};
|
|
214
221
|
}
|
|
215
222
|
const { target } = resolved;
|
|
223
|
+
const abortController = new AbortController();
|
|
216
224
|
const endpoint = resolveDaemonEndpoint({
|
|
217
225
|
projectRoot: target.projectRoot,
|
|
218
226
|
host: params.transport?.host,
|
|
@@ -221,23 +229,20 @@ async function streamAgentChatTurn(params) {
|
|
|
221
229
|
const authHeaderValue = formatCliBearerHeaderValue(resolveCliAuthToken({
|
|
222
230
|
explicitToken: params.transport?.token,
|
|
223
231
|
}));
|
|
224
|
-
const response = await fetch(new URL(`/api/
|
|
225
|
-
method: "POST",
|
|
232
|
+
const response = await fetch(new URL(`/api/sdk/sessions/${encodeURIComponent(target.sessionId)}/events`, endpoint.baseUrl).toString(), {
|
|
226
233
|
headers: {
|
|
227
|
-
"Content-Type": "application/json",
|
|
228
234
|
...(authHeaderValue ? { Authorization: authHeaderValue } : {}),
|
|
229
235
|
},
|
|
230
|
-
|
|
231
|
-
instructions: message,
|
|
232
|
-
}),
|
|
236
|
+
signal: abortController.signal,
|
|
233
237
|
}).catch((error) => {
|
|
234
238
|
throw new Error(`Failed to call ${endpoint.baseUrl}: ${String(error)}`);
|
|
235
239
|
});
|
|
236
240
|
if (!response.ok || !response.body) {
|
|
237
241
|
return {
|
|
238
242
|
success: false,
|
|
239
|
-
error: await
|
|
243
|
+
error: await readHttpFailure(response),
|
|
240
244
|
emittedVisibleText: false,
|
|
245
|
+
text: "",
|
|
241
246
|
};
|
|
242
247
|
}
|
|
243
248
|
const decoder = new TextDecoder();
|
|
@@ -245,8 +250,13 @@ async function streamAgentChatTurn(params) {
|
|
|
245
250
|
let buffered = "";
|
|
246
251
|
let printedLeadingNewline = false;
|
|
247
252
|
let emittedVisibleText = false;
|
|
253
|
+
let promptTurnId = "";
|
|
254
|
+
let promptPosted = false;
|
|
255
|
+
let finalText = "";
|
|
248
256
|
const renderEvent = (event) => {
|
|
249
|
-
if (event.type !== "text-delta" || !event.text)
|
|
257
|
+
if (event.type !== "text-delta" || event.turnId !== promptTurnId || !event.text)
|
|
258
|
+
return;
|
|
259
|
+
if (params.renderText === false)
|
|
250
260
|
return;
|
|
251
261
|
if (!printedLeadingNewline) {
|
|
252
262
|
process.stdout.write("\n");
|
|
@@ -255,6 +265,55 @@ async function streamAgentChatTurn(params) {
|
|
|
255
265
|
process.stdout.write(event.text);
|
|
256
266
|
emittedVisibleText = true;
|
|
257
267
|
};
|
|
268
|
+
const handleLine = async (line) => {
|
|
269
|
+
const value = JSON.parse(line);
|
|
270
|
+
if (isSdkEventsReadyFrame(value)) {
|
|
271
|
+
if (!promptPosted) {
|
|
272
|
+
promptPosted = true;
|
|
273
|
+
const promptResult = await postSdkPrompt({
|
|
274
|
+
endpointBaseUrl: endpoint.baseUrl,
|
|
275
|
+
sessionId: target.sessionId,
|
|
276
|
+
message,
|
|
277
|
+
authHeaderValue,
|
|
278
|
+
});
|
|
279
|
+
if (!promptResult.success) {
|
|
280
|
+
return {
|
|
281
|
+
done: true,
|
|
282
|
+
error: promptResult.error,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
promptTurnId = promptResult.turnId;
|
|
286
|
+
}
|
|
287
|
+
return { done: false };
|
|
288
|
+
}
|
|
289
|
+
const event = value;
|
|
290
|
+
if (event.type === "error") {
|
|
291
|
+
return {
|
|
292
|
+
done: true,
|
|
293
|
+
error: event.message,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
renderEvent(event);
|
|
297
|
+
if (event.type === "turn-finish" && event.turnId === promptTurnId) {
|
|
298
|
+
finalText = event.text;
|
|
299
|
+
return {
|
|
300
|
+
done: true,
|
|
301
|
+
...(event.success ? {} : { error: event.error || "Agent turn failed" }),
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
return { done: false };
|
|
305
|
+
};
|
|
306
|
+
const finishTurn = (result) => {
|
|
307
|
+
if (printedLeadingNewline) {
|
|
308
|
+
process.stdout.write("\n\n");
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
success: result.success,
|
|
312
|
+
...(result.error ? { error: result.error } : {}),
|
|
313
|
+
emittedVisibleText,
|
|
314
|
+
text: finalText,
|
|
315
|
+
};
|
|
316
|
+
};
|
|
258
317
|
try {
|
|
259
318
|
while (true) {
|
|
260
319
|
const { done, value } = await reader.read();
|
|
@@ -266,49 +325,51 @@ async function streamAgentChatTurn(params) {
|
|
|
266
325
|
const line = buffered.slice(0, newlineIndex).trim();
|
|
267
326
|
buffered = buffered.slice(newlineIndex + 1);
|
|
268
327
|
if (line) {
|
|
269
|
-
const
|
|
270
|
-
if (
|
|
271
|
-
return {
|
|
272
|
-
success:
|
|
273
|
-
error:
|
|
274
|
-
|
|
275
|
-
};
|
|
328
|
+
const result = await handleLine(line);
|
|
329
|
+
if (result.done) {
|
|
330
|
+
return finishTurn({
|
|
331
|
+
success: !result.error,
|
|
332
|
+
...(result.error ? { error: result.error } : {}),
|
|
333
|
+
});
|
|
276
334
|
}
|
|
277
|
-
renderEvent(event);
|
|
278
335
|
}
|
|
279
336
|
newlineIndex = buffered.indexOf("\n");
|
|
280
337
|
}
|
|
281
338
|
}
|
|
282
339
|
const tail = buffered.trim();
|
|
283
340
|
if (tail) {
|
|
284
|
-
const
|
|
285
|
-
if (
|
|
286
|
-
return {
|
|
287
|
-
success:
|
|
288
|
-
error:
|
|
289
|
-
|
|
290
|
-
};
|
|
341
|
+
const result = await handleLine(tail);
|
|
342
|
+
if (result.done) {
|
|
343
|
+
return finishTurn({
|
|
344
|
+
success: !result.error,
|
|
345
|
+
...(result.error ? { error: result.error } : {}),
|
|
346
|
+
});
|
|
291
347
|
}
|
|
292
|
-
renderEvent(event);
|
|
293
348
|
}
|
|
294
349
|
}
|
|
295
350
|
catch (error) {
|
|
296
|
-
return {
|
|
351
|
+
return finishTurn({
|
|
297
352
|
success: false,
|
|
298
353
|
error: error instanceof Error ? error.message : String(error),
|
|
299
|
-
|
|
300
|
-
};
|
|
354
|
+
});
|
|
301
355
|
}
|
|
302
|
-
|
|
303
|
-
|
|
356
|
+
finally {
|
|
357
|
+
abortController.abort();
|
|
358
|
+
await reader.cancel().catch(() => undefined);
|
|
359
|
+
try {
|
|
360
|
+
reader.releaseLock();
|
|
361
|
+
}
|
|
362
|
+
catch {
|
|
363
|
+
// ignore
|
|
364
|
+
}
|
|
304
365
|
}
|
|
305
|
-
return {
|
|
306
|
-
success:
|
|
307
|
-
|
|
308
|
-
};
|
|
366
|
+
return finishTurn({
|
|
367
|
+
success: promptPosted && Boolean(promptTurnId),
|
|
368
|
+
...(promptPosted && promptTurnId ? {} : { error: "SDK events connection closed before prompt was accepted." }),
|
|
369
|
+
});
|
|
309
370
|
}
|
|
310
371
|
/**
|
|
311
|
-
* 向目标 agent 的
|
|
372
|
+
* 向目标 agent 的 SDK actor session 发送一轮消息。
|
|
312
373
|
*/
|
|
313
374
|
export async function executeAgentChatTurn(params) {
|
|
314
375
|
const message = normalizeChatMessage(params.message);
|
|
@@ -324,40 +385,28 @@ export async function executeAgentChatTurn(params) {
|
|
|
324
385
|
const resolved = await resolveAgentChatTarget(params.agentName);
|
|
325
386
|
if (!resolved.success)
|
|
326
387
|
return resolved.outcome;
|
|
327
|
-
const
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
timeoutMs: AGENT_CHAT_EXECUTE_TIMEOUT_MS,
|
|
333
|
-
host: params.transport?.host,
|
|
334
|
-
port: params.transport?.port,
|
|
335
|
-
authToken: params.transport?.token,
|
|
336
|
-
body: {
|
|
337
|
-
instructions: message,
|
|
338
|
-
},
|
|
388
|
+
const outcome = await runSdkPromptTurn({
|
|
389
|
+
agentName: params.agentName,
|
|
390
|
+
message,
|
|
391
|
+
transport: params.transport,
|
|
392
|
+
renderText: false,
|
|
339
393
|
});
|
|
340
|
-
if (!remote.success || !remote.data) {
|
|
341
|
-
return {
|
|
342
|
-
agentName: target.agentName,
|
|
343
|
-
projectRoot: target.projectRoot,
|
|
344
|
-
sessionId,
|
|
345
|
-
success: false,
|
|
346
|
-
error: remote.error || "Agent daemon unreachable or returned empty error (try `city agent restart`)",
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
394
|
return {
|
|
350
|
-
agentName:
|
|
351
|
-
projectRoot: target.projectRoot,
|
|
352
|
-
sessionId
|
|
353
|
-
success:
|
|
354
|
-
payload:
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
: {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
395
|
+
agentName: params.agentName,
|
|
396
|
+
...(resolved.target.projectRoot ? { projectRoot: resolved.target.projectRoot } : {}),
|
|
397
|
+
sessionId,
|
|
398
|
+
success: outcome.success,
|
|
399
|
+
payload: {
|
|
400
|
+
success: outcome.success,
|
|
401
|
+
sessionId,
|
|
402
|
+
result: {
|
|
403
|
+
success: outcome.success,
|
|
404
|
+
userVisible: outcome.text || "",
|
|
405
|
+
...(outcome.error ? { error: outcome.error } : {}),
|
|
406
|
+
},
|
|
407
|
+
...(outcome.error ? { error: outcome.error } : {}),
|
|
408
|
+
},
|
|
409
|
+
...(outcome.error ? { error: outcome.error } : {}),
|
|
361
410
|
};
|
|
362
411
|
}
|
|
363
412
|
async function runOneShotChat(params) {
|
|
@@ -385,7 +434,7 @@ async function runOneShotChat(params) {
|
|
|
385
434
|
});
|
|
386
435
|
return;
|
|
387
436
|
}
|
|
388
|
-
const outcome = await
|
|
437
|
+
const outcome = await runSdkPromptTurn({
|
|
389
438
|
agentName: params.agentName,
|
|
390
439
|
message: params.message,
|
|
391
440
|
transport: {
|
|
@@ -454,7 +503,7 @@ async function runInteractiveChat(params) {
|
|
|
454
503
|
console.log(helpText.join("\n"));
|
|
455
504
|
continue;
|
|
456
505
|
}
|
|
457
|
-
const outcome = await
|
|
506
|
+
const outcome = await runSdkPromptTurn({
|
|
458
507
|
agentName: params.agentName,
|
|
459
508
|
message: text,
|
|
460
509
|
transport: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentChat.js","sourceRoot":"","sources":["../../../src/cli/agent/AgentChat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentChat.js","sourceRoot":"","sources":["../../../src/cli/agent/AgentChat.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,24 +27,18 @@ export interface AgentChatCliOptions {
|
|
|
27
27
|
token?: string;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* SDK prompt 结果片段。
|
|
31
31
|
*/
|
|
32
32
|
export interface AgentChatExecuteResult {
|
|
33
33
|
/** 本轮执行是否成功。 */
|
|
34
34
|
success?: boolean;
|
|
35
|
-
/** 是否已经进入队列。 */
|
|
36
|
-
queued?: boolean;
|
|
37
|
-
/** 队列项 ID。 */
|
|
38
|
-
queueItemId?: string;
|
|
39
|
-
/** 当前队列位置。 */
|
|
40
|
-
queuePosition?: number;
|
|
41
35
|
/** 面向用户可直接阅读的回复文本。 */
|
|
42
36
|
userVisible?: string;
|
|
43
37
|
/** 错误信息。 */
|
|
44
38
|
error?: string;
|
|
45
39
|
}
|
|
46
40
|
/**
|
|
47
|
-
*
|
|
41
|
+
* SDK prompt 响应体。
|
|
48
42
|
*/
|
|
49
43
|
export interface AgentChatExecuteResponse {
|
|
50
44
|
/** HTTP 路由层是否成功处理请求。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentChatTypes.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/AgentChatTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gBAAgB;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"AgentChatTypes.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/AgentChatTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gBAAgB;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,cAAc;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `city update
|
|
2
|
+
* `city update`:更新当前全局安装来源对应的 Downcity CLI。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 优先根据当前 CLI 所在的全局模块目录,自动判断是 npm 还是 pnpm 安装。
|
|
@@ -17,9 +17,10 @@ export interface UpdateCommandOptions {
|
|
|
17
17
|
manager?: UpdateManager | "auto";
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* 检测当前 CLI 实际安装来源的包名。
|
|
21
21
|
*/
|
|
22
|
-
export declare function
|
|
22
|
+
export declare function detectInstalledPackageName(): string;
|
|
23
|
+
export declare function buildGlobalUpdateInvocation(manager: UpdateManager, packageName: string): {
|
|
23
24
|
command: string;
|
|
24
25
|
args: string[];
|
|
25
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../../src/cli/shared/Update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../../src/cli/shared/Update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CAClC;AAgCD;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,GAClB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAYA;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,EAAE;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,aAAa,GAAG,IAAI,CAQvB;AA8BD;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,aAAa,CAQ5D;AAmBD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
package/bin/cli/shared/Update.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `city update
|
|
2
|
+
* `city update`:更新当前全局安装来源对应的 Downcity CLI。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 优先根据当前 CLI 所在的全局模块目录,自动判断是 npm 还是 pnpm 安装。
|
|
@@ -13,20 +13,50 @@ import { fileURLToPath } from "url";
|
|
|
13
13
|
import { emitCliBlock } from "./CliReporter.js";
|
|
14
14
|
import { CliError } from "./CliError.js";
|
|
15
15
|
import { runWithSpinner } from "../../utils/cli/Spinner.js";
|
|
16
|
-
const
|
|
16
|
+
const FALLBACK_GLOBAL_PACKAGE_NAME = "downcity";
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* 解析当前 CLI 安装包根目录。
|
|
19
|
+
*
|
|
20
|
+
* 关键点(中文)
|
|
21
|
+
* - 开发态路径是 `src/cli/shared`,构建后路径是 `bin/cli/shared`。
|
|
22
|
+
* - 两种目录结构都可以通过回退三级拿到 package 根目录。
|
|
19
23
|
*/
|
|
20
|
-
|
|
24
|
+
function resolveInstalledPackageRoot() {
|
|
25
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
26
|
+
const __dirname = path.dirname(__filename);
|
|
27
|
+
return path.resolve(__dirname, "../../..");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 读取当前 CLI 实际对应的 npm 包名。
|
|
31
|
+
*/
|
|
32
|
+
function readInstalledPackageName(packageRoot) {
|
|
33
|
+
try {
|
|
34
|
+
const packageJsonPath = path.join(packageRoot, "package.json");
|
|
35
|
+
const raw = fs.readFileSync(packageJsonPath, "utf8");
|
|
36
|
+
const parsed = JSON.parse(raw);
|
|
37
|
+
const packageName = typeof parsed.name === "string" ? parsed.name.trim() : "";
|
|
38
|
+
return packageName || FALLBACK_GLOBAL_PACKAGE_NAME;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return FALLBACK_GLOBAL_PACKAGE_NAME;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 检测当前 CLI 实际安装来源的包名。
|
|
46
|
+
*/
|
|
47
|
+
export function detectInstalledPackageName() {
|
|
48
|
+
return readInstalledPackageName(resolveInstalledPackageRoot());
|
|
49
|
+
}
|
|
50
|
+
export function buildGlobalUpdateInvocation(manager, packageName) {
|
|
21
51
|
if (manager === "pnpm") {
|
|
22
52
|
return {
|
|
23
53
|
command: "pnpm",
|
|
24
|
-
args: ["add", "-g", `${
|
|
54
|
+
args: ["add", "-g", `${packageName}@latest`],
|
|
25
55
|
};
|
|
26
56
|
}
|
|
27
57
|
return {
|
|
28
58
|
command: "npm",
|
|
29
|
-
args: ["install", "-g", `${
|
|
59
|
+
args: ["install", "-g", `${packageName}@latest`],
|
|
30
60
|
};
|
|
31
61
|
}
|
|
32
62
|
/**
|
|
@@ -74,9 +104,7 @@ function readGlobalRoot(manager) {
|
|
|
74
104
|
* 自动判断当前全局安装使用的包管理器。
|
|
75
105
|
*/
|
|
76
106
|
export function detectInstalledUpdateManager() {
|
|
77
|
-
const
|
|
78
|
-
const __dirname = path.dirname(__filename);
|
|
79
|
-
const packageRoot = path.resolve(__dirname, "../..");
|
|
107
|
+
const packageRoot = resolveInstalledPackageRoot();
|
|
80
108
|
const detected = resolveUpdateManagerFromGlobalRoots({
|
|
81
109
|
packageRoot,
|
|
82
110
|
npmRoot: readGlobalRoot("npm") || undefined,
|
|
@@ -104,10 +132,11 @@ async function runCommand(command, args) {
|
|
|
104
132
|
* update 命令入口。
|
|
105
133
|
*/
|
|
106
134
|
export async function updateCommand(options = {}) {
|
|
135
|
+
const packageName = detectInstalledPackageName();
|
|
107
136
|
const manager = options.manager && options.manager !== "auto"
|
|
108
137
|
? options.manager
|
|
109
138
|
: detectInstalledUpdateManager();
|
|
110
|
-
const invocation = buildGlobalUpdateInvocation(manager);
|
|
139
|
+
const invocation = buildGlobalUpdateInvocation(manager, packageName);
|
|
111
140
|
emitCliBlock({
|
|
112
141
|
tone: "accent",
|
|
113
142
|
title: "Updating downcity",
|
|
@@ -123,7 +152,7 @@ export async function updateCommand(options = {}) {
|
|
|
123
152
|
],
|
|
124
153
|
});
|
|
125
154
|
try {
|
|
126
|
-
await runWithSpinner(() => runCommand(invocation.command, invocation.args), { text: `Installing ${
|
|
155
|
+
await runWithSpinner(() => runCommand(invocation.command, invocation.args), { text: `Installing ${packageName}@latest via ${manager}...` });
|
|
127
156
|
}
|
|
128
157
|
catch (error) {
|
|
129
158
|
throw new CliError({
|
|
@@ -137,7 +166,7 @@ export async function updateCommand(options = {}) {
|
|
|
137
166
|
facts: [
|
|
138
167
|
{
|
|
139
168
|
label: "Package",
|
|
140
|
-
value: `${
|
|
169
|
+
value: `${packageName}@latest`,
|
|
141
170
|
},
|
|
142
171
|
{
|
|
143
172
|
label: "Manager",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Update.js","sourceRoot":"","sources":["../../../src/cli/shared/Update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAcxD,MAAM,
|
|
1
|
+
{"version":3,"file":"Update.js","sourceRoot":"","sources":["../../../src/cli/shared/Update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@downcity/city",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.24",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Downcity City 平台 — CLI、daemon 管理、Console 网关、能力平台",
|
|
6
6
|
"bin": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"prompts": "^2.4.0",
|
|
37
37
|
"ws": "^8.19.0",
|
|
38
38
|
"zod": "^3.24.0",
|
|
39
|
-
"@downcity/agent": "^1.1.
|
|
39
|
+
"@downcity/agent": "^1.1.25"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/better-sqlite3": "^7.6.13",
|
|
@@ -10,10 +10,7 @@
|
|
|
10
10
|
import { createInterface } from "node:readline/promises";
|
|
11
11
|
import chalk from "chalk";
|
|
12
12
|
import prompts from "prompts";
|
|
13
|
-
import {
|
|
14
|
-
callAgentTransport,
|
|
15
|
-
type AgentUiChunkEvent,
|
|
16
|
-
} from "@downcity/agent";
|
|
13
|
+
import type { AgentSessionEvent } from "@downcity/agent";
|
|
17
14
|
import { emitCliBlock } from "../shared/CliReporter.js";
|
|
18
15
|
import { printResult } from "@/utils/cli/CliOutput.js";
|
|
19
16
|
import {
|
|
@@ -34,7 +31,7 @@ import type {
|
|
|
34
31
|
} from "./AgentChatTypes.js";
|
|
35
32
|
import { AGENT_CHAT_DEFAULT_SESSION_ID } from "./AgentChatTypes.js";
|
|
36
33
|
|
|
37
|
-
const
|
|
34
|
+
const SDK_EVENTS_READY_TYPE = "sdk-events-ready";
|
|
38
35
|
|
|
39
36
|
type ResolvedAgentChatTarget = {
|
|
40
37
|
/**
|
|
@@ -72,12 +69,6 @@ function buildAgentChatFailureText(error?: string): string {
|
|
|
72
69
|
);
|
|
73
70
|
}
|
|
74
71
|
|
|
75
|
-
function isChatSuccess(payload: AgentChatExecuteResponse | undefined): boolean {
|
|
76
|
-
if (!payload || payload.success !== true) return false;
|
|
77
|
-
if (payload.result?.success === false) return false;
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
72
|
async function resolveChatTargetAgentName(inputName?: string): Promise<string | null> {
|
|
82
73
|
const explicit = String(inputName || "").trim();
|
|
83
74
|
if (explicit) return explicit;
|
|
@@ -201,30 +192,6 @@ function printAssistantReply(replyText: string): void {
|
|
|
201
192
|
console.log(`\n${text}\n`);
|
|
202
193
|
}
|
|
203
194
|
|
|
204
|
-
function printQueuedResult(params: {
|
|
205
|
-
agentName: string;
|
|
206
|
-
payload: AgentChatExecuteResponse;
|
|
207
|
-
}): void {
|
|
208
|
-
emitCliBlock({
|
|
209
|
-
tone: "info",
|
|
210
|
-
title: "Turn queued",
|
|
211
|
-
facts: [
|
|
212
|
-
{
|
|
213
|
-
label: "agent",
|
|
214
|
-
value: params.agentName,
|
|
215
|
-
},
|
|
216
|
-
...(params.payload.result?.queueItemId
|
|
217
|
-
? [
|
|
218
|
-
{
|
|
219
|
-
label: "queue item",
|
|
220
|
-
value: params.payload.result.queueItemId,
|
|
221
|
-
},
|
|
222
|
-
]
|
|
223
|
-
: []),
|
|
224
|
-
],
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
|
|
228
195
|
function printAgentChatFailure(params: {
|
|
229
196
|
agentName: string;
|
|
230
197
|
error?: string;
|
|
@@ -245,7 +212,7 @@ function printAgentChatFailure(params: {
|
|
|
245
212
|
});
|
|
246
213
|
}
|
|
247
214
|
|
|
248
|
-
async function
|
|
215
|
+
async function readHttpFailure(response: Response): Promise<string> {
|
|
249
216
|
const contentType = String(response.headers.get("content-type") || "").toLowerCase();
|
|
250
217
|
const text = await response.text().catch(() => "");
|
|
251
218
|
if (contentType.includes("application/json")) {
|
|
@@ -265,14 +232,81 @@ async function readStreamFailure(response: Response): Promise<string> {
|
|
|
265
232
|
return String(text || "").trim() || `HTTP ${response.status}`;
|
|
266
233
|
}
|
|
267
234
|
|
|
268
|
-
|
|
235
|
+
function isSdkEventsReadyFrame(value: unknown): boolean {
|
|
236
|
+
return (
|
|
237
|
+
typeof value === "object" &&
|
|
238
|
+
value !== null &&
|
|
239
|
+
"type" in value &&
|
|
240
|
+
String((value as { type?: unknown }).type || "") === SDK_EVENTS_READY_TYPE
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
async function postSdkPrompt(params: {
|
|
245
|
+
endpointBaseUrl: string;
|
|
246
|
+
sessionId: string;
|
|
247
|
+
message: string;
|
|
248
|
+
authHeaderValue?: string;
|
|
249
|
+
}): Promise<
|
|
250
|
+
| {
|
|
251
|
+
success: true;
|
|
252
|
+
turnId: string;
|
|
253
|
+
}
|
|
254
|
+
| {
|
|
255
|
+
success: false;
|
|
256
|
+
error: string;
|
|
257
|
+
}
|
|
258
|
+
> {
|
|
259
|
+
const response = await fetch(
|
|
260
|
+
new URL(
|
|
261
|
+
`/api/sdk/sessions/${encodeURIComponent(params.sessionId)}/prompt`,
|
|
262
|
+
params.endpointBaseUrl,
|
|
263
|
+
).toString(),
|
|
264
|
+
{
|
|
265
|
+
method: "POST",
|
|
266
|
+
headers: {
|
|
267
|
+
"Content-Type": "application/json",
|
|
268
|
+
...(params.authHeaderValue ? { Authorization: params.authHeaderValue } : {}),
|
|
269
|
+
},
|
|
270
|
+
body: JSON.stringify({
|
|
271
|
+
query: params.message,
|
|
272
|
+
}),
|
|
273
|
+
},
|
|
274
|
+
).catch((error) => {
|
|
275
|
+
throw new Error(`Failed to call ${params.endpointBaseUrl}: ${String(error)}`);
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
const payload = (await response.json().catch(() => ({}))) as {
|
|
279
|
+
success?: boolean;
|
|
280
|
+
error?: string;
|
|
281
|
+
turn?: {
|
|
282
|
+
id?: string;
|
|
283
|
+
};
|
|
284
|
+
};
|
|
285
|
+
const turnId = String(payload.turn?.id || "").trim();
|
|
286
|
+
if (!response.ok || payload.success !== true || !turnId) {
|
|
287
|
+
return {
|
|
288
|
+
success: false,
|
|
289
|
+
error:
|
|
290
|
+
String(payload.error || "").trim() ||
|
|
291
|
+
`SDK prompt failed with HTTP ${response.status}`,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
success: true,
|
|
296
|
+
turnId,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
async function runSdkPromptTurn(params: {
|
|
269
301
|
agentName: string;
|
|
270
302
|
message: string;
|
|
271
303
|
transport?: AgentChatTransportOptions;
|
|
304
|
+
renderText?: boolean;
|
|
272
305
|
}): Promise<{
|
|
273
306
|
success: boolean;
|
|
274
307
|
error?: string;
|
|
275
308
|
emittedVisibleText: boolean;
|
|
309
|
+
text?: string;
|
|
276
310
|
}> {
|
|
277
311
|
const message = normalizeChatMessage(params.message);
|
|
278
312
|
if (!message) {
|
|
@@ -280,6 +314,7 @@ async function streamAgentChatTurn(params: {
|
|
|
280
314
|
success: false,
|
|
281
315
|
error: "Chat message is required.",
|
|
282
316
|
emittedVisibleText: false,
|
|
317
|
+
text: "",
|
|
283
318
|
};
|
|
284
319
|
}
|
|
285
320
|
|
|
@@ -289,10 +324,12 @@ async function streamAgentChatTurn(params: {
|
|
|
289
324
|
success: false,
|
|
290
325
|
error: resolved.outcome.error,
|
|
291
326
|
emittedVisibleText: false,
|
|
327
|
+
text: "",
|
|
292
328
|
};
|
|
293
329
|
}
|
|
294
330
|
|
|
295
331
|
const { target } = resolved;
|
|
332
|
+
const abortController = new AbortController();
|
|
296
333
|
const endpoint = resolveDaemonEndpoint({
|
|
297
334
|
projectRoot: target.projectRoot,
|
|
298
335
|
host: params.transport?.host,
|
|
@@ -305,18 +342,14 @@ async function streamAgentChatTurn(params: {
|
|
|
305
342
|
);
|
|
306
343
|
const response = await fetch(
|
|
307
344
|
new URL(
|
|
308
|
-
`/api/
|
|
345
|
+
`/api/sdk/sessions/${encodeURIComponent(target.sessionId)}/events`,
|
|
309
346
|
endpoint.baseUrl,
|
|
310
347
|
).toString(),
|
|
311
348
|
{
|
|
312
|
-
method: "POST",
|
|
313
349
|
headers: {
|
|
314
|
-
"Content-Type": "application/json",
|
|
315
350
|
...(authHeaderValue ? { Authorization: authHeaderValue } : {}),
|
|
316
351
|
},
|
|
317
|
-
|
|
318
|
-
instructions: message,
|
|
319
|
-
}),
|
|
352
|
+
signal: abortController.signal,
|
|
320
353
|
},
|
|
321
354
|
).catch((error) => {
|
|
322
355
|
throw new Error(`Failed to call ${endpoint.baseUrl}: ${String(error)}`);
|
|
@@ -325,8 +358,9 @@ async function streamAgentChatTurn(params: {
|
|
|
325
358
|
if (!response.ok || !response.body) {
|
|
326
359
|
return {
|
|
327
360
|
success: false,
|
|
328
|
-
error: await
|
|
361
|
+
error: await readHttpFailure(response),
|
|
329
362
|
emittedVisibleText: false,
|
|
363
|
+
text: "",
|
|
330
364
|
};
|
|
331
365
|
}
|
|
332
366
|
|
|
@@ -335,9 +369,13 @@ async function streamAgentChatTurn(params: {
|
|
|
335
369
|
let buffered = "";
|
|
336
370
|
let printedLeadingNewline = false;
|
|
337
371
|
let emittedVisibleText = false;
|
|
372
|
+
let promptTurnId = "";
|
|
373
|
+
let promptPosted = false;
|
|
374
|
+
let finalText = "";
|
|
338
375
|
|
|
339
|
-
const renderEvent = (event:
|
|
340
|
-
if (event.type !== "text-delta" || !event.text) return;
|
|
376
|
+
const renderEvent = (event: AgentSessionEvent): void => {
|
|
377
|
+
if (event.type !== "text-delta" || event.turnId !== promptTurnId || !event.text) return;
|
|
378
|
+
if (params.renderText === false) return;
|
|
341
379
|
if (!printedLeadingNewline) {
|
|
342
380
|
process.stdout.write("\n");
|
|
343
381
|
printedLeadingNewline = true;
|
|
@@ -346,6 +384,74 @@ async function streamAgentChatTurn(params: {
|
|
|
346
384
|
emittedVisibleText = true;
|
|
347
385
|
};
|
|
348
386
|
|
|
387
|
+
const handleLine = async (line: string): Promise<
|
|
388
|
+
| {
|
|
389
|
+
done: true;
|
|
390
|
+
error?: string;
|
|
391
|
+
}
|
|
392
|
+
| {
|
|
393
|
+
done: false;
|
|
394
|
+
}
|
|
395
|
+
> => {
|
|
396
|
+
const value = JSON.parse(line) as unknown;
|
|
397
|
+
if (isSdkEventsReadyFrame(value)) {
|
|
398
|
+
if (!promptPosted) {
|
|
399
|
+
promptPosted = true;
|
|
400
|
+
const promptResult = await postSdkPrompt({
|
|
401
|
+
endpointBaseUrl: endpoint.baseUrl,
|
|
402
|
+
sessionId: target.sessionId,
|
|
403
|
+
message,
|
|
404
|
+
authHeaderValue,
|
|
405
|
+
});
|
|
406
|
+
if (!promptResult.success) {
|
|
407
|
+
return {
|
|
408
|
+
done: true,
|
|
409
|
+
error: promptResult.error,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
promptTurnId = promptResult.turnId;
|
|
413
|
+
}
|
|
414
|
+
return { done: false };
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
const event = value as AgentSessionEvent;
|
|
418
|
+
if (event.type === "error") {
|
|
419
|
+
return {
|
|
420
|
+
done: true,
|
|
421
|
+
error: event.message,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
renderEvent(event);
|
|
425
|
+
if (event.type === "turn-finish" && event.turnId === promptTurnId) {
|
|
426
|
+
finalText = event.text;
|
|
427
|
+
return {
|
|
428
|
+
done: true,
|
|
429
|
+
...(event.success ? {} : { error: event.error || "Agent turn failed" }),
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
return { done: false };
|
|
433
|
+
};
|
|
434
|
+
|
|
435
|
+
const finishTurn = (result: {
|
|
436
|
+
success: boolean;
|
|
437
|
+
error?: string;
|
|
438
|
+
}): {
|
|
439
|
+
success: boolean;
|
|
440
|
+
error?: string;
|
|
441
|
+
emittedVisibleText: boolean;
|
|
442
|
+
text: string;
|
|
443
|
+
} => {
|
|
444
|
+
if (printedLeadingNewline) {
|
|
445
|
+
process.stdout.write("\n\n");
|
|
446
|
+
}
|
|
447
|
+
return {
|
|
448
|
+
success: result.success,
|
|
449
|
+
...(result.error ? { error: result.error } : {}),
|
|
450
|
+
emittedVisibleText,
|
|
451
|
+
text: finalText,
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
|
|
349
455
|
try {
|
|
350
456
|
while (true) {
|
|
351
457
|
const { done, value } = await reader.read();
|
|
@@ -356,15 +462,13 @@ async function streamAgentChatTurn(params: {
|
|
|
356
462
|
const line = buffered.slice(0, newlineIndex).trim();
|
|
357
463
|
buffered = buffered.slice(newlineIndex + 1);
|
|
358
464
|
if (line) {
|
|
359
|
-
const
|
|
360
|
-
if (
|
|
361
|
-
return {
|
|
362
|
-
success:
|
|
363
|
-
error:
|
|
364
|
-
|
|
365
|
-
};
|
|
465
|
+
const result = await handleLine(line);
|
|
466
|
+
if (result.done) {
|
|
467
|
+
return finishTurn({
|
|
468
|
+
success: !result.error,
|
|
469
|
+
...(result.error ? { error: result.error } : {}),
|
|
470
|
+
});
|
|
366
471
|
}
|
|
367
|
-
renderEvent(event);
|
|
368
472
|
}
|
|
369
473
|
newlineIndex = buffered.indexOf("\n");
|
|
370
474
|
}
|
|
@@ -372,36 +476,37 @@ async function streamAgentChatTurn(params: {
|
|
|
372
476
|
|
|
373
477
|
const tail = buffered.trim();
|
|
374
478
|
if (tail) {
|
|
375
|
-
const
|
|
376
|
-
if (
|
|
377
|
-
return {
|
|
378
|
-
success:
|
|
379
|
-
error:
|
|
380
|
-
|
|
381
|
-
};
|
|
479
|
+
const result = await handleLine(tail);
|
|
480
|
+
if (result.done) {
|
|
481
|
+
return finishTurn({
|
|
482
|
+
success: !result.error,
|
|
483
|
+
...(result.error ? { error: result.error } : {}),
|
|
484
|
+
});
|
|
382
485
|
}
|
|
383
|
-
renderEvent(event);
|
|
384
486
|
}
|
|
385
487
|
} catch (error) {
|
|
386
|
-
return {
|
|
488
|
+
return finishTurn({
|
|
387
489
|
success: false,
|
|
388
490
|
error: error instanceof Error ? error.message : String(error),
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
491
|
+
});
|
|
492
|
+
} finally {
|
|
493
|
+
abortController.abort();
|
|
494
|
+
await reader.cancel().catch(() => undefined);
|
|
495
|
+
try {
|
|
496
|
+
reader.releaseLock();
|
|
497
|
+
} catch {
|
|
498
|
+
// ignore
|
|
499
|
+
}
|
|
395
500
|
}
|
|
396
501
|
|
|
397
|
-
return {
|
|
398
|
-
success:
|
|
399
|
-
|
|
400
|
-
};
|
|
502
|
+
return finishTurn({
|
|
503
|
+
success: promptPosted && Boolean(promptTurnId),
|
|
504
|
+
...(promptPosted && promptTurnId ? {} : { error: "SDK events connection closed before prompt was accepted." }),
|
|
505
|
+
});
|
|
401
506
|
}
|
|
402
507
|
|
|
403
508
|
/**
|
|
404
|
-
* 向目标 agent 的
|
|
509
|
+
* 向目标 agent 的 SDK actor session 发送一轮消息。
|
|
405
510
|
*/
|
|
406
511
|
export async function executeAgentChatTurn(params: {
|
|
407
512
|
agentName: string;
|
|
@@ -423,43 +528,29 @@ export async function executeAgentChatTurn(params: {
|
|
|
423
528
|
const resolved = await resolveAgentChatTarget(params.agentName);
|
|
424
529
|
if (!resolved.success) return resolved.outcome;
|
|
425
530
|
|
|
426
|
-
const
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
timeoutMs: AGENT_CHAT_EXECUTE_TIMEOUT_MS,
|
|
432
|
-
host: params.transport?.host,
|
|
433
|
-
port: params.transport?.port,
|
|
434
|
-
authToken: params.transport?.token,
|
|
435
|
-
body: {
|
|
436
|
-
instructions: message,
|
|
437
|
-
},
|
|
531
|
+
const outcome = await runSdkPromptTurn({
|
|
532
|
+
agentName: params.agentName,
|
|
533
|
+
message,
|
|
534
|
+
transport: params.transport,
|
|
535
|
+
renderText: false,
|
|
438
536
|
});
|
|
439
537
|
|
|
440
|
-
if (!remote.success || !remote.data) {
|
|
441
|
-
return {
|
|
442
|
-
agentName: target.agentName,
|
|
443
|
-
projectRoot: target.projectRoot,
|
|
444
|
-
sessionId,
|
|
445
|
-
success: false,
|
|
446
|
-
error: remote.error || "Agent daemon unreachable or returned empty error (try `city agent restart`)",
|
|
447
|
-
};
|
|
448
|
-
}
|
|
449
|
-
|
|
450
538
|
return {
|
|
451
|
-
agentName:
|
|
452
|
-
projectRoot: target.projectRoot,
|
|
453
|
-
sessionId
|
|
454
|
-
success:
|
|
455
|
-
payload:
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
: {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
539
|
+
agentName: params.agentName,
|
|
540
|
+
...(resolved.target.projectRoot ? { projectRoot: resolved.target.projectRoot } : {}),
|
|
541
|
+
sessionId,
|
|
542
|
+
success: outcome.success,
|
|
543
|
+
payload: {
|
|
544
|
+
success: outcome.success,
|
|
545
|
+
sessionId,
|
|
546
|
+
result: {
|
|
547
|
+
success: outcome.success,
|
|
548
|
+
userVisible: outcome.text || "",
|
|
549
|
+
...(outcome.error ? { error: outcome.error } : {}),
|
|
550
|
+
},
|
|
551
|
+
...(outcome.error ? { error: outcome.error } : {}),
|
|
552
|
+
},
|
|
553
|
+
...(outcome.error ? { error: outcome.error } : {}),
|
|
463
554
|
};
|
|
464
555
|
}
|
|
465
556
|
|
|
@@ -493,7 +584,7 @@ async function runOneShotChat(params: {
|
|
|
493
584
|
return;
|
|
494
585
|
}
|
|
495
586
|
|
|
496
|
-
const outcome = await
|
|
587
|
+
const outcome = await runSdkPromptTurn({
|
|
497
588
|
agentName: params.agentName,
|
|
498
589
|
message: params.message,
|
|
499
590
|
transport: {
|
|
@@ -568,7 +659,7 @@ async function runInteractiveChat(params: {
|
|
|
568
659
|
continue;
|
|
569
660
|
}
|
|
570
661
|
|
|
571
|
-
const outcome = await
|
|
662
|
+
const outcome = await runSdkPromptTurn({
|
|
572
663
|
agentName: params.agentName,
|
|
573
664
|
message: text,
|
|
574
665
|
transport: {
|
|
@@ -30,17 +30,11 @@ export interface AgentChatCliOptions {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* SDK prompt 结果片段。
|
|
34
34
|
*/
|
|
35
35
|
export interface AgentChatExecuteResult {
|
|
36
36
|
/** 本轮执行是否成功。 */
|
|
37
37
|
success?: boolean;
|
|
38
|
-
/** 是否已经进入队列。 */
|
|
39
|
-
queued?: boolean;
|
|
40
|
-
/** 队列项 ID。 */
|
|
41
|
-
queueItemId?: string;
|
|
42
|
-
/** 当前队列位置。 */
|
|
43
|
-
queuePosition?: number;
|
|
44
38
|
/** 面向用户可直接阅读的回复文本。 */
|
|
45
39
|
userVisible?: string;
|
|
46
40
|
/** 错误信息。 */
|
|
@@ -48,7 +42,7 @@ export interface AgentChatExecuteResult {
|
|
|
48
42
|
}
|
|
49
43
|
|
|
50
44
|
/**
|
|
51
|
-
*
|
|
45
|
+
* SDK prompt 响应体。
|
|
52
46
|
*/
|
|
53
47
|
export interface AgentChatExecuteResponse {
|
|
54
48
|
/** HTTP 路由层是否成功处理请求。 */
|
package/src/cli/shared/Update.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `city update
|
|
2
|
+
* `city update`:更新当前全局安装来源对应的 Downcity CLI。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 优先根据当前 CLI 所在的全局模块目录,自动判断是 npm 还是 pnpm 安装。
|
|
@@ -27,25 +27,60 @@ export interface UpdateCommandOptions {
|
|
|
27
27
|
manager?: UpdateManager | "auto";
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const
|
|
30
|
+
const FALLBACK_GLOBAL_PACKAGE_NAME = "downcity";
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* 解析当前 CLI 安装包根目录。
|
|
34
|
+
*
|
|
35
|
+
* 关键点(中文)
|
|
36
|
+
* - 开发态路径是 `src/cli/shared`,构建后路径是 `bin/cli/shared`。
|
|
37
|
+
* - 两种目录结构都可以通过回退三级拿到 package 根目录。
|
|
38
|
+
*/
|
|
39
|
+
function resolveInstalledPackageRoot(): string {
|
|
40
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
41
|
+
const __dirname = path.dirname(__filename);
|
|
42
|
+
return path.resolve(__dirname, "../../..");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 读取当前 CLI 实际对应的 npm 包名。
|
|
34
47
|
*/
|
|
35
|
-
|
|
48
|
+
function readInstalledPackageName(packageRoot: string): string {
|
|
49
|
+
try {
|
|
50
|
+
const packageJsonPath = path.join(packageRoot, "package.json");
|
|
51
|
+
const raw = fs.readFileSync(packageJsonPath, "utf8");
|
|
52
|
+
const parsed = JSON.parse(raw) as { name?: unknown };
|
|
53
|
+
const packageName = typeof parsed.name === "string" ? parsed.name.trim() : "";
|
|
54
|
+
return packageName || FALLBACK_GLOBAL_PACKAGE_NAME;
|
|
55
|
+
} catch {
|
|
56
|
+
return FALLBACK_GLOBAL_PACKAGE_NAME;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 检测当前 CLI 实际安装来源的包名。
|
|
62
|
+
*/
|
|
63
|
+
export function detectInstalledPackageName(): string {
|
|
64
|
+
return readInstalledPackageName(resolveInstalledPackageRoot());
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function buildGlobalUpdateInvocation(
|
|
68
|
+
manager: UpdateManager,
|
|
69
|
+
packageName: string,
|
|
70
|
+
): {
|
|
36
71
|
command: string;
|
|
37
72
|
args: string[];
|
|
38
73
|
} {
|
|
39
74
|
if (manager === "pnpm") {
|
|
40
75
|
return {
|
|
41
76
|
command: "pnpm",
|
|
42
|
-
args: ["add", "-g", `${
|
|
77
|
+
args: ["add", "-g", `${packageName}@latest`],
|
|
43
78
|
};
|
|
44
79
|
}
|
|
45
80
|
|
|
46
81
|
return {
|
|
47
82
|
command: "npm",
|
|
48
|
-
args: ["install", "-g", `${
|
|
83
|
+
args: ["install", "-g", `${packageName}@latest`],
|
|
49
84
|
};
|
|
50
85
|
}
|
|
51
86
|
|
|
@@ -98,9 +133,7 @@ function readGlobalRoot(manager: UpdateManager): string | null {
|
|
|
98
133
|
* 自动判断当前全局安装使用的包管理器。
|
|
99
134
|
*/
|
|
100
135
|
export function detectInstalledUpdateManager(): UpdateManager {
|
|
101
|
-
const
|
|
102
|
-
const __dirname = path.dirname(__filename);
|
|
103
|
-
const packageRoot = path.resolve(__dirname, "../..");
|
|
136
|
+
const packageRoot = resolveInstalledPackageRoot();
|
|
104
137
|
const detected = resolveUpdateManagerFromGlobalRoots({
|
|
105
138
|
packageRoot,
|
|
106
139
|
npmRoot: readGlobalRoot("npm") || undefined,
|
|
@@ -132,11 +165,12 @@ async function runCommand(command: string, args: string[]): Promise<void> {
|
|
|
132
165
|
export async function updateCommand(
|
|
133
166
|
options: UpdateCommandOptions = {},
|
|
134
167
|
): Promise<void> {
|
|
168
|
+
const packageName = detectInstalledPackageName();
|
|
135
169
|
const manager =
|
|
136
170
|
options.manager && options.manager !== "auto"
|
|
137
171
|
? options.manager
|
|
138
172
|
: detectInstalledUpdateManager();
|
|
139
|
-
const invocation = buildGlobalUpdateInvocation(manager);
|
|
173
|
+
const invocation = buildGlobalUpdateInvocation(manager, packageName);
|
|
140
174
|
|
|
141
175
|
emitCliBlock({
|
|
142
176
|
tone: "accent",
|
|
@@ -156,7 +190,7 @@ export async function updateCommand(
|
|
|
156
190
|
try {
|
|
157
191
|
await runWithSpinner(
|
|
158
192
|
() => runCommand(invocation.command, invocation.args),
|
|
159
|
-
{ text: `Installing ${
|
|
193
|
+
{ text: `Installing ${packageName}@latest via ${manager}...` },
|
|
160
194
|
);
|
|
161
195
|
} catch (error) {
|
|
162
196
|
throw new CliError({
|
|
@@ -171,7 +205,7 @@ export async function updateCommand(
|
|
|
171
205
|
facts: [
|
|
172
206
|
{
|
|
173
207
|
label: "Package",
|
|
174
|
-
value: `${
|
|
208
|
+
value: `${packageName}@latest`,
|
|
175
209
|
},
|
|
176
210
|
{
|
|
177
211
|
label: "Manager",
|