@downcity/agent 1.1.51 → 1.1.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +5 -4
  2. package/bin/agent/Agent.d.ts.map +1 -1
  3. package/bin/agent/Agent.js.map +1 -1
  4. package/bin/config/AgentInitializer.d.ts +1 -1
  5. package/bin/config/AgentInitializer.js +1 -1
  6. package/bin/config/DowncitySchema.js +1 -1
  7. package/bin/config/DowncitySchema.js.map +1 -1
  8. package/bin/config/ExecutionBinding.d.ts +1 -1
  9. package/bin/config/ExecutionBinding.js +1 -1
  10. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +1 -1
  11. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +0 -4
  12. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +1 -1
  13. package/bin/executor/composer/system/default/InitPrompts.d.ts +1 -1
  14. package/bin/executor/composer/system/default/InitPrompts.js +1 -1
  15. package/bin/executor/composer/system/default/SystemDomain.js +1 -1
  16. package/bin/executor/composer/system/default/assets/core.prompt.d.ts +1 -1
  17. package/bin/executor/composer/system/default/assets/core.prompt.js +1 -1
  18. package/bin/executor/composer/system/default/assets/plugin.prompt.d.ts +1 -1
  19. package/bin/executor/composer/system/default/assets/plugin.prompt.js +1 -1
  20. package/bin/executor/composer/system/default/assets/task.prompt.d.ts +1 -1
  21. package/bin/executor/composer/system/default/assets/task.prompt.js +1 -1
  22. package/bin/executor/messages/ChatMessageMarkupTypes.d.ts +1 -1
  23. package/bin/executor/messages/ChatMessageMarkupTypes.js +1 -1
  24. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +1 -2
  25. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
  26. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +17 -56
  27. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
  28. package/bin/executor/tools/shell/ShellToolBridge.js +1 -1
  29. package/bin/executor/tools/shell/ShellToolBridge.js.map +1 -1
  30. package/bin/executor/tools/shell/ShellToolDefinition.d.ts +2 -2
  31. package/bin/executor/tools/shell/ShellToolFormatting.d.ts +1 -1
  32. package/bin/executor/tools/shell/ShellToolFormatting.js +7 -7
  33. package/bin/executor/tools/shell/ShellToolFormatting.js.map +1 -1
  34. package/bin/executor/tools/shell/ShellToolSchemas.d.ts +7 -75
  35. package/bin/executor/tools/shell/ShellToolSchemas.d.ts.map +1 -1
  36. package/bin/executor/types/SessionHistoryMeta.d.ts +5 -24
  37. package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
  38. package/bin/executor/types/SessionHistoryMeta.js +1 -1
  39. package/bin/index.d.ts +3 -2
  40. package/bin/index.d.ts.map +1 -1
  41. package/bin/index.js +1 -0
  42. package/bin/index.js.map +1 -1
  43. package/bin/model/CityModelAdapter.d.ts +23 -0
  44. package/bin/model/CityModelAdapter.d.ts.map +1 -0
  45. package/bin/model/CityModelAdapter.js +454 -0
  46. package/bin/model/CityModelAdapter.js.map +1 -0
  47. package/bin/runtime/host/daemon/Paths.d.ts +1 -1
  48. package/bin/runtime/host/daemon/Paths.js +1 -1
  49. package/bin/runtime/host/daemon/ProjectSetup.js +2 -2
  50. package/bin/session/Session.d.ts +1 -0
  51. package/bin/session/Session.d.ts.map +1 -1
  52. package/bin/session/Session.js +32 -6
  53. package/bin/session/Session.js.map +1 -1
  54. package/bin/session/SessionTitle.d.ts +49 -0
  55. package/bin/session/SessionTitle.d.ts.map +1 -0
  56. package/bin/session/SessionTitle.js +130 -0
  57. package/bin/session/SessionTitle.js.map +1 -0
  58. package/bin/session/browse/Browse.d.ts +2 -1
  59. package/bin/session/browse/Browse.d.ts.map +1 -1
  60. package/bin/session/browse/Browse.js +18 -15
  61. package/bin/session/browse/Browse.js.map +1 -1
  62. package/bin/session/index.d.ts +2 -1
  63. package/bin/session/index.d.ts.map +1 -1
  64. package/bin/session/index.js +2 -1
  65. package/bin/session/index.js.map +1 -1
  66. package/bin/session/storage/Metadata.d.ts +4 -0
  67. package/bin/session/storage/Metadata.d.ts.map +1 -1
  68. package/bin/session/storage/Metadata.js +12 -25
  69. package/bin/session/storage/Metadata.js.map +1 -1
  70. package/bin/session/storage/Persistence.d.ts.map +1 -1
  71. package/bin/session/storage/Persistence.js +1 -4
  72. package/bin/session/storage/Persistence.js.map +1 -1
  73. package/bin/types/agent/AgentTypes.d.ts +9 -5
  74. package/bin/types/agent/AgentTypes.d.ts.map +1 -1
  75. package/bin/types/config/AgentProject.d.ts +1 -1
  76. package/bin/types/config/DowncityConfig.d.ts +3 -3
  77. package/bin/types/config/ExecutionBinding.d.ts +4 -4
  78. package/bin/types/config/ExecutionBinding.js +1 -1
  79. package/bin/types/runtime/auth/AuthPermission.js +2 -2
  80. package/bin/types/runtime/auth/AuthPermission.js.map +1 -1
  81. package/bin/types/runtime/host/Store.d.ts +3 -177
  82. package/bin/types/runtime/host/Store.d.ts.map +1 -1
  83. package/bin/types/runtime/host/Store.js +7 -0
  84. package/bin/types/runtime/host/Store.js.map +1 -1
  85. package/bin/types/runtime/http/InlineInstant.d.ts +1 -1
  86. package/bin/types/runtime/platform/Platform.d.ts +1 -1
  87. package/package.json +19 -18
  88. package/scripts/city-model-tool-loop.test.mjs +181 -0
  89. package/src/agent/Agent.ts +3 -2
  90. package/src/config/AgentInitializer.ts +1 -1
  91. package/src/config/DowncitySchema.ts +1 -1
  92. package/src/config/ExecutionBinding.ts +1 -1
  93. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +0 -4
  94. package/src/executor/composer/system/default/InitPrompts.ts +1 -1
  95. package/src/executor/composer/system/default/SystemDomain.ts +1 -1
  96. package/src/executor/composer/system/default/assets/core.prompt.ts +1 -1
  97. package/src/executor/composer/system/default/assets/core.prompt.ts.txt +1 -1
  98. package/src/executor/composer/system/default/assets/plugin.prompt.ts +1 -1
  99. package/src/executor/composer/system/default/assets/plugin.prompt.ts.txt +18 -18
  100. package/src/executor/composer/system/default/assets/task.prompt.ts +1 -1
  101. package/src/executor/composer/system/default/assets/task.prompt.ts.txt +1 -1
  102. package/src/executor/messages/ChatMessageMarkupTypes.ts +1 -1
  103. package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +17 -57
  104. package/src/executor/tools/shell/ShellToolBridge.ts +1 -1
  105. package/src/executor/tools/shell/ShellToolFormatting.ts +7 -7
  106. package/src/executor/types/SessionHistoryMeta.ts +5 -25
  107. package/src/index.ts +5 -5
  108. package/src/model/CityModelAdapter.ts +553 -0
  109. package/src/runtime/host/daemon/Paths.ts +1 -1
  110. package/src/runtime/host/daemon/ProjectSetup.ts +2 -2
  111. package/src/session/Session.ts +40 -6
  112. package/src/session/SessionTitle.ts +192 -0
  113. package/src/session/browse/Browse.ts +22 -13
  114. package/src/session/index.ts +5 -0
  115. package/src/session/storage/Metadata.ts +14 -29
  116. package/src/session/storage/Persistence.ts +1 -4
  117. package/src/types/agent/AgentTypes.ts +10 -5
  118. package/src/types/config/AgentProject.ts +1 -1
  119. package/src/types/config/DowncityConfig.ts +3 -3
  120. package/src/types/config/ExecutionBinding.ts +4 -4
  121. package/src/types/runtime/auth/AuthPermission.ts +2 -2
  122. package/src/types/runtime/host/Store.ts +3 -182
  123. package/src/types/runtime/http/InlineInstant.ts +1 -1
  124. package/src/types/runtime/platform/Platform.ts +1 -1
  125. package/tsconfig.json +1 -0
  126. package/tsconfig.tsbuildinfo +1 -1
@@ -8,11 +8,13 @@
8
8
  */
9
9
  import type { LanguageModel, Tool } from "ai";
10
10
  import type { BasePlugin } from "../../plugin/core/BasePlugin.js";
11
+ import type { AgentModel } from "../../model/CityModelAdapter.js";
11
12
  import type { RpcServerInstance } from "../../rpc/Server.js";
12
13
  import type { SessionMessageV1 } from "../../executor/types/SessionMessages.js";
13
14
  import type { AgentSessionSubscriber, AgentSessionUnsubscribe } from "../../types/sdk/AgentSessionEvent.js";
14
15
  import type { AgentSessionPromptInput } from "../../types/sdk/AgentSessionPrompt.js";
15
16
  import type { AgentSessionTurnHandle } from "../../types/sdk/AgentSessionTurn.js";
17
+ export type { AgentModel } from "../../model/CityModelAdapter.js";
16
18
  /**
17
19
  * 本地 Agent 构造参数。
18
20
  */
@@ -50,10 +52,11 @@ export interface AgentOptions {
50
52
  * 当前 agent 为新建 session 提供的默认模型实例。
51
53
  *
52
54
  * 关键点(中文)
53
- * - SDK 仍不负责“选择哪个模型”,这里只接收宿主已经创建好的 `LanguageModel`。
55
+ * - SDK 仍不负责“选择哪个模型”,这里只接收宿主已经创建好的模型实例。
56
+ * - 支持 AI SDK `LanguageModel`,也支持 City City 返回的 `CityModel`。
54
57
  * - 该模型会作为 session 首次执行前的默认注入值。
55
58
  */
56
- model?: LanguageModel;
59
+ model?: AgentModel;
57
60
  /**
58
61
  * 当前 agent 显式持有的插件实例集合。
59
62
  *
@@ -222,7 +225,7 @@ export interface AgentSessionSetInput {
222
225
  * - 这里接受运行中的模型实例,而不是模型 ID。
223
226
  * - 由于模型实例通常不可序列化,落盘只保留轻量可读标签用于展示。
224
227
  */
225
- model?: LanguageModel;
228
+ model?: AgentModel;
226
229
  }
227
230
  /**
228
231
  * Session 当前配置快照。
@@ -382,8 +385,9 @@ export interface AgentSessionSummary {
382
385
  * 当前 session 可读标题。
383
386
  *
384
387
  * 说明(中文)
385
- * - 当前 SDK 不要求标题一定存在。
386
- * - 若调用方需要展示列表标题,可优先使用这里;为空时再回退到 `sessionId`。
388
+ * - 标题持久化在 session `meta.json` 顶层。
389
+ * - 首条用户消息出现后,SDK 会优先生成标题,失败时回退到首条用户消息截断。
390
+ * - 空 session 可能暂时没有标题,调用方可回退到 `sessionId`。
387
391
  */
388
392
  title?: string;
389
393
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTypes.d.ts","sourceRoot":"","sources":["../../../src/types/agent/AgentTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentTypes.d.ts","sourceRoot":"","sources":["../../../src/types/agent/AgentTypes.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export interface AgentProjectInitializationInput {
31
31
  * 项目执行绑定配置。
32
32
  *
33
33
  * 说明(中文)
34
- * - 绑定平台全局模型池中的模型 ID。
34
+ * - 绑定 City AIService 暴露的模型 ID。
35
35
  */
36
36
  execution: ExecutionBindingConfig;
37
37
  /**
@@ -147,7 +147,7 @@ export interface DowncityConfig {
147
147
  id: string;
148
148
  version: string;
149
149
  /**
150
- * Runtime startup configuration used by `downcity agent start`.
150
+ * Runtime startup configuration used by `town agent start`.
151
151
  * CLI flags (if provided) take precedence over this config.
152
152
  */
153
153
  start?: {
@@ -169,7 +169,7 @@ export interface DowncityConfig {
169
169
  *
170
170
  * 关键点(中文)
171
171
  * - 项目只有一种执行模式:`api`。
172
- * - 绑定平台全局模型池中的模型 ID。
172
+ * - 绑定 City AIService 暴露的模型 ID。
173
173
  */
174
174
  execution?: ExecutionBindingConfig;
175
175
  /**
@@ -185,7 +185,7 @@ export interface DowncityConfig {
185
185
  *
186
186
  * 关键点(中文)
187
187
  * - `@downcity/agent` 本地 SDK 不直接消费该字段。
188
- * - 宿主侧(例如 `@downcity/city`)可读取该字段控制模型工厂行为,例如 `llm.logMessages`。
188
+ * - 宿主侧(例如 `downcity`)可读取该字段控制模型工厂行为,例如 `llm.logMessages`。
189
189
  * - 对于项目内 `downcity.json`,通常不需要显式写 provider/model 明细。
190
190
  */
191
191
  llm?: LlmConfig;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - 项目运行入口只有一种执行模式:`api`。
6
- * - 绑定平台全局模型池中的模型 ID。
6
+ * - 绑定 City AIService 暴露的模型 ID。
7
7
  * - 该类型是项目 `downcity.json` 中唯一的执行配置。
8
8
  */
9
9
  /**
@@ -15,11 +15,11 @@ export interface ExecutionBindingConfig {
15
15
  */
16
16
  type: "api";
17
17
  /**
18
- * 平台全局模型池中的模型 ID。
18
+ * City AIService 中的模型 ID。
19
19
  *
20
20
  * 说明(中文)
21
- * - 必须能在 `~/.downcity/downcity.db` 的模型池中解析到。
22
- * - 例如:`default`、`fast`、`quality`。
21
+ * - 必须能通过 City 的 `/v1/ai/models` 目录查询到。
22
+ * - 例如:`deepseek-v4-flash`、`fast`、`quality`。
23
23
  */
24
24
  modelId: string;
25
25
  }
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - 项目运行入口只有一种执行模式:`api`。
6
- * - 绑定平台全局模型池中的模型 ID。
6
+ * - 绑定 City AIService 暴露的模型 ID。
7
7
  * - 该类型是项目 `downcity.json` 中唯一的执行配置。
8
8
  */
9
9
  export {};
@@ -37,8 +37,8 @@ export const AUTH_PERMISSION_DESCRIPTIONS = {
37
37
  "agent.execute": "触发 agent 执行与会话运行。",
38
38
  "task.read": "查看 task 定义与运行结果。",
39
39
  "task.run": "创建或手动执行 task。",
40
- "model.read": "查看模型池与模型绑定。",
41
- "model.write": "修改模型池与模型绑定。",
40
+ "model.read": "查看 City AIService 模型与模型绑定。",
41
+ "model.write": "修改模型绑定。",
42
42
  "env.read": "查看环境变量配置。",
43
43
  "env.write": "修改环境变量配置。",
44
44
  "channel.read": "查看渠道账号与渠道状态。",
@@ -1 +1 @@
1
- {"version":3,"file":"AuthPermission.js","sourceRoot":"","sources":["../../../../src/types/runtime/auth/AuthPermission.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,YAAY;IACZ,aAAa;IACb,eAAe;IACf,WAAW;IACX,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,WAAW;IACX,cAAc;IACd,eAAe;IACf,WAAW;IACX,YAAY;IACZ,eAAe;IACf,cAAc;IACd,eAAe;IACf,aAAa;IACb,cAAc;CACN,CAAC;AAOX;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAsC;IAC7E,YAAY,EAAE,qBAAqB;IACnC,aAAa,EAAE,kBAAkB;IACjC,eAAe,EAAE,mBAAmB;IACpC,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,aAAa;IAC3B,aAAa,EAAE,aAAa;IAC5B,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,WAAW;IACxB,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,cAAc;IAC/B,WAAW,EAAE,yBAAyB;IACtC,YAAY,EAAE,yBAAyB;IACvC,eAAe,EAAE,cAAc;IAC/B,cAAc,EAAE,iBAAiB;IACjC,eAAe,EAAE,mBAAmB;IACpC,aAAa,EAAE,kBAAkB;IACjC,cAAc,EAAE,sBAAsB;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAyBhF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,CAAC,GAAG,oBAAoB,CAAC;KACvC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACtD,UAAU,KAAK,YAAY,IAAI,UAAU,KAAK,WAAW,CAC1D;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE;YACX,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,UAAU;YACV,cAAc;YACd,WAAW;YACX,cAAc;YACd,aAAa;SACd;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"AuthPermission.js","sourceRoot":"","sources":["../../../../src/types/runtime/auth/AuthPermission.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,YAAY;IACZ,aAAa;IACb,eAAe;IACf,WAAW;IACX,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,WAAW;IACX,cAAc;IACd,eAAe;IACf,WAAW;IACX,YAAY;IACZ,eAAe;IACf,cAAc;IACd,eAAe;IACf,aAAa;IACb,cAAc;CACN,CAAC;AAOX;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAsC;IAC7E,YAAY,EAAE,qBAAqB;IACnC,aAAa,EAAE,kBAAkB;IACjC,eAAe,EAAE,mBAAmB;IACpC,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,4BAA4B;IAC1C,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,WAAW;IACxB,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,cAAc;IAC/B,WAAW,EAAE,yBAAyB;IACtC,YAAY,EAAE,yBAAyB;IACvC,eAAe,EAAE,cAAc;IAC/B,cAAc,EAAE,iBAAiB;IACjC,eAAe,EAAE,mBAAmB;IACpC,aAAa,EAAE,kBAAkB;IACjC,cAAc,EAAE,sBAAsB;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAyBhF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,CAAC,GAAG,oBAAoB,CAAC;KACvC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACtD,UAAU,KAAK,YAAY,IAAI,UAAU,KAAK,WAAW,CAC1D;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE;YACX,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,UAAU;YACV,cAAc;YACd,WAAW;YACX,cAAc;YACd,aAAa;SACd;KACF;CACF,CAAC"}
@@ -1,188 +1,14 @@
1
1
  /**
2
- * 模型存储(SQLite)类型定义。
2
+ * 平台宿主存储类型定义。
3
3
  *
4
4
  * 关键点(中文)
5
- * - 该类型用于平台控制面全局模型池(provider/model)的统一读写。
6
- * - agent 项目只通过 `execution.modelId` 绑定模型 ID,不直接持有 provider 细节。
5
+ * - Town 只保存平台级 env、channel account 与安全配置。
6
+ * - 模型能力由 City AIService 暴露,Town 不再声明 provider/model 存储类型。
7
7
  */
8
- import type { LlmProviderType } from "../../../types/config/LlmConfig.js";
9
8
  /**
10
9
  * Channel Account 支持的渠道类型。
11
10
  */
12
11
  export type StoredChannelAccountChannel = "telegram" | "feishu" | "qq";
13
- /**
14
- * 模型 provider 记录。
15
- */
16
- export interface StoredModelProvider {
17
- /**
18
- * provider 主键 ID(例如:`openai_main`、`default`)。
19
- */
20
- id: string;
21
- /**
22
- * provider 类型(决定 SDK 分支与默认网关行为)。
23
- */
24
- type: LlmProviderType;
25
- /**
26
- * provider 基础地址(可选)。
27
- */
28
- baseUrl?: string;
29
- /**
30
- * provider API Key(解密后的明文;仅在运行时内存中使用)。
31
- */
32
- apiKey?: string;
33
- /**
34
- * 创建时间(ISO 字符串)。
35
- */
36
- createdAt: string;
37
- /**
38
- * 更新时间(ISO 字符串)。
39
- */
40
- updatedAt: string;
41
- }
42
- /**
43
- * provider 元信息。
44
- *
45
- * 关键点(中文)
46
- * - 仅保留同步读取所需的轻量字段。
47
- * - 不包含解密后的 API Key,避免在只读展示链路中泄露敏感信息。
48
- */
49
- export interface StoredProviderMeta {
50
- /**
51
- * provider 主键 ID。
52
- */
53
- id: string;
54
- /**
55
- * provider 类型。
56
- */
57
- type: LlmProviderType;
58
- /**
59
- * provider 基础地址(可选)。
60
- */
61
- baseUrl?: string;
62
- }
63
- /**
64
- * 模型记录。
65
- */
66
- export interface StoredModel {
67
- /**
68
- * 模型主键 ID(例如:`default`、`fast`、`quality`)。
69
- */
70
- id: string;
71
- /**
72
- * 关联 provider ID。
73
- */
74
- providerId: string;
75
- /**
76
- * 上游模型名称(例如 `gpt-4o-mini`)。
77
- */
78
- name: string;
79
- /**
80
- * 采样温度(可选)。
81
- */
82
- temperature?: number;
83
- /**
84
- * 最大输出 token(可选)。
85
- */
86
- maxTokens?: number;
87
- /**
88
- * topP(可选)。
89
- */
90
- topP?: number;
91
- /**
92
- * frequencyPenalty(可选)。
93
- */
94
- frequencyPenalty?: number;
95
- /**
96
- * presencePenalty(可选)。
97
- */
98
- presencePenalty?: number;
99
- /**
100
- * Anthropic 版本字段(可选)。
101
- */
102
- anthropicVersion?: string;
103
- /**
104
- * 是否暂停该模型。
105
- *
106
- * 关键点(中文)
107
- * - 暂停后禁止作为 `execution.modelId` 被运行时加载。
108
- * - 用于模型维护窗口、成本管控或临时故障隔离。
109
- */
110
- isPaused: boolean;
111
- /**
112
- * 创建时间(ISO 字符串)。
113
- */
114
- createdAt: string;
115
- /**
116
- * 更新时间(ISO 字符串)。
117
- */
118
- updatedAt: string;
119
- }
120
- /**
121
- * provider 写入参数。
122
- */
123
- export interface UpsertModelProviderInput {
124
- /**
125
- * provider ID。
126
- */
127
- id: string;
128
- /**
129
- * provider 类型。
130
- */
131
- type: LlmProviderType;
132
- /**
133
- * provider baseUrl(可选)。
134
- */
135
- baseUrl?: string;
136
- /**
137
- * provider apiKey(可选)。
138
- */
139
- apiKey?: string;
140
- }
141
- /**
142
- * model 写入参数。
143
- */
144
- export interface UpsertModelInput {
145
- /**
146
- * 模型 ID。
147
- */
148
- id: string;
149
- /**
150
- * provider ID。
151
- */
152
- providerId: string;
153
- /**
154
- * 上游模型名称。
155
- */
156
- name: string;
157
- /**
158
- * 采样温度(可选)。
159
- */
160
- temperature?: number;
161
- /**
162
- * 最大输出 token(可选)。
163
- */
164
- maxTokens?: number;
165
- /**
166
- * topP(可选)。
167
- */
168
- topP?: number;
169
- /**
170
- * frequencyPenalty(可选)。
171
- */
172
- frequencyPenalty?: number;
173
- /**
174
- * presencePenalty(可选)。
175
- */
176
- presencePenalty?: number;
177
- /**
178
- * Anthropic 版本字段(可选)。
179
- */
180
- anthropicVersion?: string;
181
- /**
182
- * 是否暂停该模型(可选)。
183
- */
184
- isPaused?: boolean;
185
- }
186
12
  /**
187
13
  * 平台环境变量记录。
188
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../../../src/types/runtime/host/Store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../../../src/types/runtime/host/Store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,2BAA2B,CAAC;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,2BAA2B,CAAC;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1,2 +1,9 @@
1
+ /**
2
+ * 平台宿主存储类型定义。
3
+ *
4
+ * 关键点(中文)
5
+ * - Town 只保存平台级 env、channel account 与安全配置。
6
+ * - 模型能力由 City AIService 暴露,Town 不再声明 provider/model 存储类型。
7
+ */
1
8
  export {};
2
9
  //# sourceMappingURL=Store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Store.js","sourceRoot":"","sources":["../../../../src/types/runtime/host/Store.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Store.js","sourceRoot":"","sources":["../../../../src/types/runtime/host/Store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -34,7 +34,7 @@ export interface PlatformInlineInstantRunInput {
34
34
  */
35
35
  pageContext?: string;
36
36
  /**
37
- * `model` executor 对应的模型池 modelId。
37
+ * `model` executor 对应的 City AIService modelId。
38
38
  */
39
39
  modelId?: string;
40
40
  /**
@@ -335,7 +335,7 @@ export interface ManagedAgentRegistryV1 {
335
335
  agents: ManagedAgentRegistryEntry[];
336
336
  }
337
337
  /**
338
- * `city agent list --running` 输出可复用的受管 agent 运行态视图。
338
+ * `town agent list --running` 输出可复用的受管 agent 运行态视图。
339
339
  */
340
340
  export interface ManagedAgentProcessView {
341
341
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@downcity/agent",
3
- "version": "1.1.51",
3
+ "version": "1.1.63",
4
4
  "type": "module",
5
5
  "description": "Downcity Agent 运行时 — 单 Agent 执行壳与 HTTP 服务能力",
6
6
  "main": "./bin/index.js",
@@ -16,27 +16,28 @@
16
16
  }
17
17
  },
18
18
  "dependencies": {
19
- "@larksuiteoapi/node-sdk": "^1.40.0",
20
- "ai": "^6.0.57",
21
- "commander": "^12.0.0",
22
- "dotenv": "^16.4.0",
23
- "execa": "^9.5.0",
24
- "fs-extra": "^11.2.0",
25
- "hono": "^4.0.0",
26
- "js-yaml": "^4.1.0",
27
- "nanoid": "^5.1.6",
28
- "node-cron": "^3.0.0",
29
- "ws": "^8.18.3",
30
- "zod": "^3.24.0"
19
+ "@larksuiteoapi/node-sdk": "^1.66.0",
20
+ "ai": "^6.0.193",
21
+ "commander": "^15.0.0",
22
+ "dotenv": "^17.4.2",
23
+ "execa": "^9.6.1",
24
+ "fs-extra": "^11.3.5",
25
+ "hono": "^4.12.23",
26
+ "js-yaml": "^4.1.1",
27
+ "nanoid": "^5.1.11",
28
+ "node-cron": "^4.2.1",
29
+ "ws": "^8.21.0",
30
+ "zod": "^4.4.3",
31
+ "@downcity/type": "0.1.7"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@types/fs-extra": "^11.0.4",
34
- "@types/js-yaml": "^4.0.0",
35
- "@types/node": "^22.0.0",
36
- "@types/node-cron": "^3.0.0",
35
+ "@types/js-yaml": "^4.0.9",
36
+ "@types/node": "^25.9.1",
37
+ "@types/node-cron": "^3.0.11",
37
38
  "@types/ws": "^8.18.1",
38
- "tsc-alias": "^1.8.16",
39
- "typescript": "^5.7.0"
39
+ "tsc-alias": "^1.8.17",
40
+ "typescript": "^6.0.3"
40
41
  },
41
42
  "scripts": {
42
43
  "build": "node scripts/agent-compiler.mjs build",
@@ -0,0 +1,181 @@
1
+ /**
2
+ * @file 验证 CityModel 适配层会把本地 tool result 带回下一轮请求。
3
+ *
4
+ * 关键点(中文)
5
+ * - 这里直接走编译后的 Agent / City 产物,避免测试只覆盖源码级辅助函数。
6
+ * - 重点锁住 CityModelAdapter 的 tool-call -> 本地执行 -> tool-result 回传链路。
7
+ */
8
+
9
+ import test from "node:test";
10
+ import assert from "node:assert/strict";
11
+ import http from "node:http";
12
+ import os from "node:os";
13
+ import path from "node:path";
14
+ import fs from "node:fs/promises";
15
+ import { Agent } from "../bin/index.js";
16
+ import { City } from "../../city/bin/index.js";
17
+ import { tool } from "ai";
18
+ import { z } from "zod";
19
+
20
+ function write_sse(res, chunks) {
21
+ res.writeHead(200, {
22
+ "content-type": "text/event-stream; charset=utf-8",
23
+ "cache-control": "no-cache",
24
+ connection: "keep-alive",
25
+ "x-vercel-ai-ui-message-stream": "v1",
26
+ });
27
+ for (const chunk of chunks) {
28
+ res.write(`data: ${JSON.stringify(chunk)}\n\n`);
29
+ }
30
+ res.end();
31
+ }
32
+
33
+ async function read_json_body(req) {
34
+ const raw = await new Promise((resolve, reject) => {
35
+ let data = "";
36
+ req.on("data", (chunk) => {
37
+ data += chunk;
38
+ });
39
+ req.on("end", () => resolve(data));
40
+ req.on("error", reject);
41
+ });
42
+ return JSON.parse(String(raw || "{}"));
43
+ }
44
+
45
+ test("CityModel sends tool result back on the next round", async () => {
46
+ const requests = [];
47
+ let tool_executed = false;
48
+
49
+ const server = http.createServer(async (req, res) => {
50
+ const url = new URL(String(req.url || "/"), "http://127.0.0.1");
51
+
52
+ if (req.method === "GET" && url.pathname === "/v1/ai/models") {
53
+ res.writeHead(200, { "content-type": "application/json" });
54
+ res.end(JSON.stringify({
55
+ items: [
56
+ {
57
+ id: "mock-model",
58
+ name: "Mock Model",
59
+ description: "mock",
60
+ modalities: ["text", "stream"],
61
+ tags: [],
62
+ meta: {},
63
+ env: {},
64
+ },
65
+ ],
66
+ }));
67
+ return;
68
+ }
69
+
70
+ if (req.method === "POST" && url.pathname === "/v1/ai/stream") {
71
+ const body = await read_json_body(req);
72
+ requests.push(body);
73
+
74
+ if (requests.length === 1) {
75
+ write_sse(res, [
76
+ { type: "start", messageId: "msg_1" },
77
+ { type: "tool-input-start", toolCallId: "call_1", toolName: "ping" },
78
+ {
79
+ type: "tool-input-available",
80
+ toolCallId: "call_1",
81
+ toolName: "ping",
82
+ input: { value: "hello" },
83
+ },
84
+ { type: "finish", finishReason: "tool-calls" },
85
+ ]);
86
+ return;
87
+ }
88
+
89
+ write_sse(res, [
90
+ { type: "start", messageId: "msg_2" },
91
+ { type: "text-start", id: "text_2" },
92
+ { type: "text-delta", id: "text_2", delta: "done" },
93
+ { type: "text-end", id: "text_2" },
94
+ { type: "finish", finishReason: "stop" },
95
+ ]);
96
+ return;
97
+ }
98
+
99
+ res.writeHead(404);
100
+ res.end("not found");
101
+ });
102
+
103
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
104
+
105
+ try {
106
+ const address = server.address();
107
+ assert.ok(address && typeof address === "object");
108
+ const city = new City({
109
+ role: "user",
110
+ city_url: `http://127.0.0.1:${String(address.port)}`,
111
+ town_id: "town_demo",
112
+ user_token: "ub_test",
113
+ });
114
+ const catalog = await city.ai.listModels();
115
+ const model = catalog.get("mock-model");
116
+ assert.ok(model);
117
+
118
+ const agent_path = await fs.mkdtemp(
119
+ path.join(os.tmpdir(), "downcity-agent-city-model-tool-loop-"),
120
+ );
121
+ const agent = new Agent({
122
+ id: "tool_loop_agent",
123
+ path: agent_path,
124
+ tools: {
125
+ ping: tool({
126
+ description: "ping tool",
127
+ inputSchema: z.object({
128
+ value: z.string(),
129
+ }),
130
+ execute: async ({ value }) => {
131
+ tool_executed = true;
132
+ return { echoed: value };
133
+ },
134
+ }),
135
+ },
136
+ });
137
+
138
+ const session = await agent.createSession();
139
+ await session.set({ model });
140
+ const turn = await session.prompt({ query: "please use the ping tool" });
141
+ const result = await turn.finished;
142
+
143
+ assert.equal(result.success, true);
144
+ assert.equal(tool_executed, true);
145
+ assert.equal(requests.length, 2);
146
+
147
+ const second_request_messages = Array.isArray(requests[1]?.messages)
148
+ ? requests[1].messages
149
+ : [];
150
+ const second_assistant_message = second_request_messages.find(
151
+ (message) => message && message.role === "assistant",
152
+ );
153
+ assert.ok(second_assistant_message);
154
+ const second_assistant_parts = Array.isArray(second_assistant_message.parts)
155
+ ? second_assistant_message.parts
156
+ : [];
157
+
158
+ const tool_call_part = second_assistant_parts.find(
159
+ (part) => part && part.type === "dynamic-tool" && part.state === "output-available",
160
+ );
161
+ assert.deepEqual(tool_call_part, {
162
+ type: "dynamic-tool",
163
+ toolName: "ping",
164
+ toolCallId: "call_1",
165
+ state: "output-available",
166
+ input: { value: "hello" },
167
+ output: { echoed: "hello" },
168
+ providerExecuted: false,
169
+ });
170
+ } finally {
171
+ await new Promise((resolve, reject) => {
172
+ server.close((error) => {
173
+ if (error) {
174
+ reject(error);
175
+ return;
176
+ }
177
+ resolve();
178
+ });
179
+ });
180
+ }
181
+ });