@downcity/city 1.1.21 → 1.1.23

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.
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import type { AgentChatCliOptions, AgentChatExecutionOutcome, AgentChatTransportOptions } from "./AgentChatTypes.js";
10
10
  /**
11
- * 向目标 agent 的 Console 主会话发送一轮消息。
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;AAqBH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAEzB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAiX7B;;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,CAsDrC;AAqID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC7E"}
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 AGENT_CHAT_EXECUTE_TIMEOUT_MS = 120_000;
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 readStreamFailure(response) {
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
- async function streamAgentChatTurn(params) {
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/control/sessions/${encodeURIComponent(target.sessionId)}/stream`, endpoint.baseUrl).toString(), {
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
- body: JSON.stringify({
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 readStreamFailure(response),
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 event = JSON.parse(line);
270
- if (event.type === "error") {
271
- return {
272
- success: false,
273
- error: event.error,
274
- emittedVisibleText,
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 event = JSON.parse(tail);
285
- if (event.type === "error") {
286
- return {
287
- success: false,
288
- error: event.error,
289
- emittedVisibleText,
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
- emittedVisibleText,
300
- };
354
+ });
301
355
  }
302
- if (printedLeadingNewline) {
303
- process.stdout.write("\n\n");
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: true,
307
- emittedVisibleText,
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 的 Console 主会话发送一轮消息。
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 { target } = resolved;
328
- const remote = await callAgentTransport({
329
- projectRoot: target.projectRoot,
330
- path: `/api/control/sessions/${encodeURIComponent(sessionId)}/execute`,
331
- method: "POST",
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: target.agentName,
351
- projectRoot: target.projectRoot,
352
- sessionId: String(remote.data.sessionId || sessionId),
353
- success: isChatSuccess(remote.data),
354
- payload: remote.data,
355
- ...(isChatSuccess(remote.data)
356
- ? {}
357
- : {
358
- error: String(remote.data.result?.error || remote.data.error || "").trim() ||
359
- "Daemon error (check `city agent status` and `city agent doctor`)",
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 streamAgentChatTurn({
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 streamAgentChatTurn({
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
- * Control execute 结果片段。
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
- * Control execute 响应体。
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,gBAAgB;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,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
+ {"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@downcity/city",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
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.23"
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 AGENT_CHAT_EXECUTE_TIMEOUT_MS = 120_000;
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 readStreamFailure(response: Response): Promise<string> {
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
- async function streamAgentChatTurn(params: {
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/control/sessions/${encodeURIComponent(target.sessionId)}/stream`,
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
- body: JSON.stringify({
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 readStreamFailure(response),
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: AgentUiChunkEvent): void => {
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 event = JSON.parse(line) as AgentUiChunkEvent;
360
- if (event.type === "error") {
361
- return {
362
- success: false,
363
- error: event.error,
364
- emittedVisibleText,
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 event = JSON.parse(tail) as AgentUiChunkEvent;
376
- if (event.type === "error") {
377
- return {
378
- success: false,
379
- error: event.error,
380
- emittedVisibleText,
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
- emittedVisibleText,
390
- };
391
- }
392
-
393
- if (printedLeadingNewline) {
394
- process.stdout.write("\n\n");
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: true,
399
- emittedVisibleText,
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 的 Console 主会话发送一轮消息。
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 { target } = resolved;
427
- const remote = await callAgentTransport<AgentChatExecuteResponse>({
428
- projectRoot: target.projectRoot,
429
- path: `/api/control/sessions/${encodeURIComponent(sessionId)}/execute`,
430
- method: "POST",
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: target.agentName,
452
- projectRoot: target.projectRoot,
453
- sessionId: String(remote.data.sessionId || sessionId),
454
- success: isChatSuccess(remote.data),
455
- payload: remote.data,
456
- ...(isChatSuccess(remote.data)
457
- ? {}
458
- : {
459
- error:
460
- String(remote.data.result?.error || remote.data.error || "").trim() ||
461
- "Daemon error (check `city agent status` and `city agent doctor`)",
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 streamAgentChatTurn({
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 streamAgentChatTurn({
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
- * Control execute 结果片段。
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
- * Control execute 响应体。
45
+ * SDK prompt 响应体。
52
46
  */
53
47
  export interface AgentChatExecuteResponse {
54
48
  /** HTTP 路由层是否成功处理请求。 */