@seandong/seno 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/agent/conversation.d.ts +19 -3
  2. package/dist/agent/conversation.js +40 -9
  3. package/dist/agent/conversation.js.map +1 -1
  4. package/dist/agent/loop.d.ts +3 -0
  5. package/dist/agent/loop.js +27 -15
  6. package/dist/agent/loop.js.map +1 -1
  7. package/dist/agent/session.js +1 -7
  8. package/dist/agent/session.js.map +1 -1
  9. package/dist/cli/commands.js +15 -95
  10. package/dist/cli/commands.js.map +1 -1
  11. package/dist/cli/logger.d.ts +55 -7
  12. package/dist/cli/logger.js +152 -16
  13. package/dist/cli/logger.js.map +1 -1
  14. package/dist/cli/output.d.ts +1 -5
  15. package/dist/cli/output.js +29 -59
  16. package/dist/cli/output.js.map +1 -1
  17. package/dist/cli/prompt.js +7 -5
  18. package/dist/cli/prompt.js.map +1 -1
  19. package/dist/cli/readline-wrapper.d.ts +44 -0
  20. package/dist/cli/readline-wrapper.js +80 -0
  21. package/dist/cli/readline-wrapper.js.map +1 -0
  22. package/dist/cli/repl.js +23 -47
  23. package/dist/cli/repl.js.map +1 -1
  24. package/dist/commands/init.js +8 -2
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/model.js +8 -2
  27. package/dist/commands/model.js.map +1 -1
  28. package/dist/commands/plugin-init.js +17 -6
  29. package/dist/commands/plugin-init.js.map +1 -1
  30. package/dist/commands/server.d.ts +39 -0
  31. package/dist/commands/server.js +102 -0
  32. package/dist/commands/server.js.map +1 -0
  33. package/dist/config/manager.d.ts +14 -0
  34. package/dist/config/manager.js +151 -13
  35. package/dist/config/manager.js.map +1 -1
  36. package/dist/config/types.d.ts +15 -0
  37. package/dist/errors.d.ts +20 -3
  38. package/dist/errors.js +20 -5
  39. package/dist/errors.js.map +1 -1
  40. package/dist/i18n/strings.d.ts +44 -0
  41. package/dist/i18n/strings.js +46 -0
  42. package/dist/i18n/strings.js.map +1 -0
  43. package/dist/index.js +52 -18
  44. package/dist/index.js.map +1 -1
  45. package/dist/llm/anthropic.d.ts +0 -9
  46. package/dist/llm/anthropic.js +9 -62
  47. package/dist/llm/anthropic.js.map +1 -1
  48. package/dist/llm/error-handler.d.ts +28 -0
  49. package/dist/llm/error-handler.js +93 -0
  50. package/dist/llm/error-handler.js.map +1 -0
  51. package/dist/llm/openai-codex.js +15 -61
  52. package/dist/llm/openai-codex.js.map +1 -1
  53. package/dist/llm/openai.js +10 -57
  54. package/dist/llm/openai.js.map +1 -1
  55. package/dist/mcp/bridge.js.map +1 -1
  56. package/dist/mcp/manager.d.ts +4 -2
  57. package/dist/mcp/manager.js +19 -11
  58. package/dist/mcp/manager.js.map +1 -1
  59. package/dist/prompts/system.js.map +1 -1
  60. package/dist/skills/registry.js.map +1 -1
  61. package/dist/skills/sync.js +3 -1
  62. package/dist/skills/sync.js.map +1 -1
  63. package/dist/tools/plugin-init.js.map +1 -1
  64. package/dist/tools/registry.js +3 -2
  65. package/dist/tools/registry.js.map +1 -1
  66. package/dist/tools/server.js +4 -1
  67. package/dist/tools/server.js.map +1 -1
  68. package/dist/tools/shell.js +1 -3
  69. package/dist/tools/shell.js.map +1 -1
  70. package/dist/tools/skills-sync.js +14 -3
  71. package/dist/tools/skills-sync.js.map +1 -1
  72. package/dist/tools/ssh.js.map +1 -1
  73. package/dist/utils/retry.js.map +1 -1
  74. package/dist/utils/text.d.ts +45 -0
  75. package/dist/utils/text.js +95 -0
  76. package/dist/utils/text.js.map +1 -0
  77. package/package.json +23 -5
@@ -1,6 +1,8 @@
1
1
  import { homedir } from 'node:os';
2
2
  import { join } from 'node:path';
3
3
  import { mkdir, readFile, writeFile, access, chmod } from 'node:fs/promises';
4
+ import { ConfigValidationError } from '../errors.js';
5
+ import { STRINGS } from '../i18n/strings.js';
4
6
  const CONFIG_DIR_NAME = '.seno';
5
7
  const CONFIG_FILE_NAME = 'config.json';
6
8
  const SERVERS_FILE_NAME = 'servers.json';
@@ -49,8 +51,15 @@ async function fileExists(path) {
49
51
  return false;
50
52
  }
51
53
  }
54
+ /** 合法的 LLM Provider 名称白名单 */
55
+ const VALID_PROVIDERS = new Set([
56
+ 'anthropic',
57
+ 'openai',
58
+ 'openai-codex',
59
+ ]);
52
60
  /**
53
61
  * 解析 "provider/model_name" 格式的模型 ID
62
+ * 对 provider 名称做白名单校验,不合法时抛出错误
54
63
  */
55
64
  export function parseModelId(modelId) {
56
65
  const slashIndex = modelId.indexOf('/');
@@ -58,9 +67,20 @@ export function parseModelId(modelId) {
58
67
  // 无前缀时为旧版 anthropic 配置
59
68
  return { provider: 'anthropic', model: modelId };
60
69
  }
61
- const provider = modelId.slice(0, slashIndex);
70
+ const providerStr = modelId.slice(0, slashIndex);
62
71
  const model = modelId.slice(slashIndex + 1);
63
- return { provider, model };
72
+ const supported = [...VALID_PROVIDERS].join(', ');
73
+ if (!VALID_PROVIDERS.has(providerStr)) {
74
+ throw new ConfigValidationError(STRINGS.config.unsupportedProvider(providerStr), [
75
+ STRINGS.config.invalidProviderInModel(modelId, providerStr, supported),
76
+ ]);
77
+ }
78
+ if (!model) {
79
+ throw new ConfigValidationError(STRINGS.config.modelIdFormatError(modelId), [
80
+ STRINGS.config.modelIdMissingName(modelId),
81
+ ]);
82
+ }
83
+ return { provider: providerStr, model };
64
84
  }
65
85
  /**
66
86
  * 拼接 provider 和 model 为 "provider/model_name"
@@ -113,29 +133,139 @@ function migrateConfig(config) {
113
133
  };
114
134
  return { config: migrated, migrated: true };
115
135
  }
136
+ /**
137
+ * 验证配置对象的结构和必需字段
138
+ * 纯函数,不涉及文件 I/O
139
+ *
140
+ * @param raw 待验证的原始对象
141
+ * @returns 验证结果:valid 标识是否通过,errors 包含所有错误描述
142
+ */
143
+ export function validateConfig(raw) {
144
+ const errors = [];
145
+ if (raw === null || raw === undefined) {
146
+ return { valid: false, errors: [STRINGS.config.emptyConfig] };
147
+ }
148
+ if (typeof raw !== 'object' || Array.isArray(raw)) {
149
+ return { valid: false, errors: [STRINGS.config.invalidJsonObject] };
150
+ }
151
+ const obj = raw;
152
+ const supported = [...VALID_PROVIDERS].join(', ');
153
+ // ones_mcp_url 是新旧格式都必需的字段
154
+ if (!obj.ones_mcp_url || typeof obj.ones_mcp_url !== 'string') {
155
+ errors.push(STRINGS.config.missingMcpUrl);
156
+ }
157
+ // 新格式 model 字段校验
158
+ if (obj.model !== undefined) {
159
+ if (typeof obj.model !== 'string' || !obj.model) {
160
+ errors.push(STRINGS.config.invalidModelField);
161
+ }
162
+ else {
163
+ const slashIndex = obj.model.indexOf('/');
164
+ if (slashIndex !== -1) {
165
+ const providerStr = obj.model.slice(0, slashIndex);
166
+ if (!VALID_PROVIDERS.has(providerStr)) {
167
+ errors.push(STRINGS.config.invalidProviderInModel(obj.model, providerStr, supported));
168
+ }
169
+ }
170
+ }
171
+ }
172
+ // llm.providers 结构校验
173
+ if (obj.llm !== undefined) {
174
+ if (typeof obj.llm !== 'object' || obj.llm === null || Array.isArray(obj.llm)) {
175
+ errors.push(STRINGS.config.llmMustBeObject);
176
+ }
177
+ else {
178
+ const llm = obj.llm;
179
+ if (llm.providers !== undefined) {
180
+ if (typeof llm.providers !== 'object' ||
181
+ llm.providers === null ||
182
+ Array.isArray(llm.providers)) {
183
+ errors.push(STRINGS.config.providersMustBeObject);
184
+ }
185
+ else {
186
+ const providers = llm.providers;
187
+ for (const [name, value] of Object.entries(providers)) {
188
+ if (!VALID_PROVIDERS.has(name)) {
189
+ errors.push(STRINGS.config.invalidProviderInProviders(name, supported));
190
+ }
191
+ if (typeof value !== 'object' || value === null) {
192
+ errors.push(STRINGS.config.providerEntryMustBeObject(name));
193
+ }
194
+ else {
195
+ const pc = value;
196
+ if (!pc.mode || (pc.mode !== 'api_key' && pc.mode !== 'oauth')) {
197
+ errors.push(STRINGS.config.invalidProviderMode(name));
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ // agent 字段校验
206
+ if (obj.agent !== undefined) {
207
+ if (typeof obj.agent !== 'object' || obj.agent === null || Array.isArray(obj.agent)) {
208
+ errors.push(STRINGS.config.agentMustBeObject);
209
+ }
210
+ else {
211
+ const agent = obj.agent;
212
+ const numericFields = [
213
+ 'maxIterations',
214
+ 'maxToolResultDisplay',
215
+ 'maxToolResultStore',
216
+ 'truncateKeepRecentTurns',
217
+ ];
218
+ for (const field of numericFields) {
219
+ if (agent[field] !== undefined &&
220
+ (typeof agent[field] !== 'number' || agent[field] <= 0)) {
221
+ errors.push(STRINGS.config.invalidAgentField(field));
222
+ }
223
+ }
224
+ }
225
+ }
226
+ // 既无新格式也无旧格式的 LLM 配置
227
+ if (!obj.model && !obj.anthropic_api_key) {
228
+ errors.push(STRINGS.config.missingLlmConfig);
229
+ }
230
+ return { valid: errors.length === 0, errors };
231
+ }
116
232
  /**
117
233
  * 读取配置文件 ~/.seno/config.json
118
234
  * 自动检测并迁移旧格式配置
235
+ *
119
236
  * @returns 配置对象,文件不存在返回 null
237
+ * @throws ConfigValidationError 配置文件存在但内容无效时抛出
120
238
  */
121
239
  export async function loadConfig() {
122
240
  const configPath = getConfigPath();
123
241
  if (!(await fileExists(configPath))) {
124
242
  return null;
125
243
  }
244
+ let content;
126
245
  try {
127
- const content = await readFile(configPath, 'utf-8');
128
- const raw = JSON.parse(content);
129
- // 自动迁移旧配置
130
- const { config, migrated } = migrateConfig(raw);
131
- if (migrated) {
132
- await saveConfig(config);
133
- }
134
- return config;
246
+ content = await readFile(configPath, 'utf-8');
135
247
  }
136
- catch {
137
- return null;
248
+ catch (error) {
249
+ throw new ConfigValidationError(STRINGS.config.readFailed(error instanceof Error ? error.message : String(error)), [STRINGS.config.cannotRead(configPath)]);
250
+ }
251
+ let raw;
252
+ try {
253
+ raw = JSON.parse(content);
254
+ }
255
+ catch (error) {
256
+ throw new ConfigValidationError(STRINGS.config.parseFailed(error instanceof Error ? error.message : String(error)), [STRINGS.config.repairHint(configPath)]);
138
257
  }
258
+ // Schema 验证
259
+ const validation = validateConfig(raw);
260
+ if (!validation.valid) {
261
+ throw new ConfigValidationError(STRINGS.config.validationFailed(validation.errors.length), validation.errors);
262
+ }
263
+ // 自动迁移旧配置
264
+ const { config, migrated } = migrateConfig(raw);
265
+ if (migrated) {
266
+ await saveConfig(config);
267
+ }
268
+ return config;
139
269
  }
140
270
  /**
141
271
  * 保存配置文件 ~/.seno/config.json
@@ -153,7 +283,15 @@ export async function saveConfig(config) {
153
283
  * 兼容新格式(model + llm.providers)和旧格式(anthropic_api_key)
154
284
  */
155
285
  export async function isInitialized() {
156
- const config = await loadConfig();
286
+ let config;
287
+ try {
288
+ config = await loadConfig();
289
+ }
290
+ catch {
291
+ // 配置存在但验证失败 → 视为"已初始化但配置损坏"
292
+ // 让后续 loadConfig 在主流程中抛出详细错误
293
+ return true;
294
+ }
157
295
  if (!config)
158
296
  return false;
159
297
  if (!config.ones_mcp_url)
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
@@ -80,6 +80,8 @@ export interface SenoConfig {
80
80
  llm?: LLMProvidersConfig;
81
81
  /** Skills 配置 */
82
82
  ones_skills?: OnesSkillsConfig;
83
+ /** Agent Loop 运行时参数 */
84
+ agent?: AgentLoopConfig;
83
85
  }
84
86
  /**
85
87
  * Skills 配置
@@ -90,6 +92,19 @@ export interface OnesSkillsConfig {
90
92
  /** 上次同步时间 (ISO 8601) */
91
93
  last_updated_at?: string;
92
94
  }
95
+ /**
96
+ * Agent Loop 运行时参数配置
97
+ */
98
+ export interface AgentLoopConfig {
99
+ /** Agent 循环最大迭代次数(默认 20) */
100
+ maxIterations?: number;
101
+ /** 工具结果展示截断长度(默认 500) */
102
+ maxToolResultDisplay?: number;
103
+ /** 工具结果存储截断长度(默认 10000) */
104
+ maxToolResultStore?: number;
105
+ /** 对话截断保留轮次数(默认 3) */
106
+ truncateKeepRecentTurns?: number;
107
+ }
93
108
  /**
94
109
  * SSH 服务器列表配置(~/.seno/servers.json)
95
110
  */
package/dist/errors.d.ts CHANGED
@@ -7,15 +7,23 @@ export declare class SenoError extends Error {
7
7
  readonly code: string;
8
8
  constructor(message: string, code: string);
9
9
  }
10
+ /**
11
+ * LLM 结构化错误码
12
+ *
13
+ * 各 Provider 在捕获 API 错误时设置,供 Agent Loop 等上层逻辑
14
+ * 基于错误码(而非字符串匹配)做分支处理。
15
+ */
16
+ export type LLMErrorCode = 'CONTEXT_LENGTH_EXCEEDED' | 'RATE_LIMITED' | 'AUTH_FAILED' | 'SERVER_ERROR' | 'NETWORK_ERROR' | 'UNKNOWN';
10
17
  /**
11
18
  * LLM API 错误
12
19
  *
13
- * 携带 HTTP 状态码和可重试标记,便于重试逻辑判断。
20
+ * 携带结构化错误码、HTTP 状态码和可重试标记,便于重试逻辑判断。
14
21
  */
15
22
  export declare class LLMError extends SenoError {
16
- readonly statusCode?: number | undefined;
23
+ readonly llmErrorCode: LLMErrorCode;
24
+ readonly statusCode?: number;
17
25
  readonly retryable: boolean;
18
- constructor(message: string, statusCode?: number | undefined, retryable?: boolean);
26
+ constructor(message: string, llmErrorCode: LLMErrorCode, statusCode?: number, retryable?: boolean);
19
27
  }
20
28
  /**
21
29
  * MCP 服务器错误
@@ -35,3 +43,12 @@ export declare class MCPError extends SenoError {
35
43
  export declare class UserInterruptError extends SenoError {
36
44
  constructor();
37
45
  }
46
+ /**
47
+ * 配置验证错误
48
+ *
49
+ * 携带具体的验证错误列表,用于配置加载失败时给出明确的修复提示。
50
+ */
51
+ export declare class ConfigValidationError extends SenoError {
52
+ readonly errors: string[];
53
+ constructor(message: string, errors: string[]);
54
+ }
package/dist/errors.js CHANGED
@@ -7,23 +7,25 @@ export class SenoError extends Error {
7
7
  code;
8
8
  constructor(message, code) {
9
9
  super(message);
10
- this.code = code;
11
10
  this.name = 'SenoError';
11
+ this.code = code;
12
12
  }
13
13
  }
14
14
  /**
15
15
  * LLM API 错误
16
16
  *
17
- * 携带 HTTP 状态码和可重试标记,便于重试逻辑判断。
17
+ * 携带结构化错误码、HTTP 状态码和可重试标记,便于重试逻辑判断。
18
18
  */
19
19
  export class LLMError extends SenoError {
20
+ llmErrorCode;
20
21
  statusCode;
21
22
  retryable;
22
- constructor(message, statusCode, retryable = false) {
23
+ constructor(message, llmErrorCode, statusCode, retryable = false) {
23
24
  super(message, 'LLM_ERROR');
25
+ this.name = 'LLMError';
26
+ this.llmErrorCode = llmErrorCode;
24
27
  this.statusCode = statusCode;
25
28
  this.retryable = retryable;
26
- this.name = 'LLMError';
27
29
  }
28
30
  }
29
31
  /**
@@ -35,8 +37,8 @@ export class MCPError extends SenoError {
35
37
  serverName;
36
38
  constructor(message, serverName) {
37
39
  super(message, 'MCP_ERROR');
38
- this.serverName = serverName;
39
40
  this.name = 'MCPError';
41
+ this.serverName = serverName;
40
42
  }
41
43
  }
42
44
  /**
@@ -51,4 +53,17 @@ export class UserInterruptError extends SenoError {
51
53
  this.name = 'UserInterruptError';
52
54
  }
53
55
  }
56
+ /**
57
+ * 配置验证错误
58
+ *
59
+ * 携带具体的验证错误列表,用于配置加载失败时给出明确的修复提示。
60
+ */
61
+ export class ConfigValidationError extends SenoError {
62
+ errors;
63
+ constructor(message, errors) {
64
+ super(message, 'CONFIG_VALIDATION');
65
+ this.name = 'ConfigValidationError';
66
+ this.errors = errors;
67
+ }
68
+ }
54
69
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,SAAS;IAGnB;IACA;IAHlB,YACE,OAAe,EACC,UAAmB,EACnB,YAAqB,KAAK;QAE1C,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAHZ,eAAU,GAAV,UAAU,CAAS;QACnB,cAAS,GAAT,SAAS,CAAiB;QAG1C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,SAAS;IAGnB;IAFlB,YACE,OAAe,EACC,UAAkB;QAElC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAFZ,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C;QACE,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,IAAI,CAAS;IAEtB,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAgBD;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,SAAS;IAC5B,YAAY,CAAe;IAC3B,UAAU,CAAU;IACpB,SAAS,CAAU;IAE5B,YACE,OAAe,EACf,YAA0B,EAC1B,UAAmB,EACnB,YAAqB,KAAK;QAE1B,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,SAAS;IAC5B,UAAU,CAAS;IAE5B,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C;QACE,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IACzC,MAAM,CAAW;IAE1B,YAAY,OAAe,EAAE,MAAgB;QAC3C,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 用户可见字符串集中管理
3
+ *
4
+ * 所有面向用户的中文文案、错误提示、状态消息集中在此处,
5
+ * 便于一致性维护和未来可能的多语言支持。
6
+ *
7
+ * 命名规则:按模块组织,使用英文键名(便于 grep)。
8
+ */
9
+ export declare const STRINGS: {
10
+ readonly agent: {
11
+ readonly contextTruncated: "\n[对话历史过长,已自动截断,正在重试...]\n";
12
+ readonly maxIterationsReached: "\n[已达到最大工具调用轮次,停止处理]";
13
+ readonly toolArgsParseFailed: (inputJson: string) => string;
14
+ };
15
+ readonly tools: {
16
+ readonly unknownTool: (name: string) => string;
17
+ readonly executionFailed: (name: string, msg: string) => string;
18
+ };
19
+ readonly config: {
20
+ readonly unsupportedProvider: (provider: string) => string;
21
+ readonly invalidProviderInModel: (modelId: string, provider: string, supported: string) => string;
22
+ readonly modelIdFormatError: (modelId: string) => string;
23
+ readonly modelIdMissingName: (modelId: string) => string;
24
+ readonly emptyConfig: "配置内容为空";
25
+ readonly invalidJsonObject: "配置文件内容不是有效的 JSON 对象";
26
+ readonly missingMcpUrl: "缺少必需字段 \"ones_mcp_url\"(ONES MCP 服务器地址)";
27
+ readonly invalidModelField: "\"model\" 字段必须是非空字符串(格式: \"provider/model_name\")";
28
+ readonly invalidProviderInProviders: (name: string, supported: string) => string;
29
+ readonly invalidProviderMode: (name: string) => string;
30
+ readonly invalidAgentField: (field: string) => string;
31
+ readonly llmMustBeObject: "\"llm\" 字段必须是对象";
32
+ readonly providersMustBeObject: "\"llm.providers\" 字段必须是对象";
33
+ readonly providerEntryMustBeObject: (name: string) => string;
34
+ readonly agentMustBeObject: "\"agent\" 字段必须是对象";
35
+ readonly missingLlmConfig: "缺少 LLM 配置:需要 \"model\" 字段(新格式)或 \"anthropic_api_key\"(旧格式)";
36
+ readonly readFailed: (msg: string) => string;
37
+ readonly parseFailed: (msg: string) => string;
38
+ readonly validationFailed: (count: number) => string;
39
+ readonly repairHint: (path: string) => string;
40
+ readonly cannotRead: (path: string) => string;
41
+ readonly fileNotExist: "配置文件不存在,请先运行: seno init";
42
+ readonly loadFailedRunInit: "配置文件加载失败,请先运行 seno init 初始化";
43
+ };
44
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * 用户可见字符串集中管理
3
+ *
4
+ * 所有面向用户的中文文案、错误提示、状态消息集中在此处,
5
+ * 便于一致性维护和未来可能的多语言支持。
6
+ *
7
+ * 命名规则:按模块组织,使用英文键名(便于 grep)。
8
+ */
9
+ export const STRINGS = {
10
+ agent: {
11
+ contextTruncated: '\n[对话历史过长,已自动截断,正在重试...]\n',
12
+ maxIterationsReached: '\n[已达到最大工具调用轮次,停止处理]',
13
+ toolArgsParseFailed: (inputJson) => `工具参数解析失败: ${inputJson}`,
14
+ },
15
+ tools: {
16
+ unknownTool: (name) => `未知工具: ${name}`,
17
+ executionFailed: (name, msg) => `工具执行失败 [${name}]: ${msg}`,
18
+ },
19
+ config: {
20
+ unsupportedProvider: (provider) => `不支持的 LLM Provider: "${provider}"`,
21
+ invalidProviderInModel: (modelId, provider, supported) => `model 字段 "${modelId}" 中的 provider "${provider}" 不在支持列表中,支持: ${supported}`,
22
+ modelIdFormatError: (modelId) => `模型 ID 格式错误: "${modelId}"`,
23
+ modelIdMissingName: (modelId) => `model 字段 "${modelId}" 缺少模型名称(provider/ 后为空)`,
24
+ emptyConfig: '配置内容为空',
25
+ invalidJsonObject: '配置文件内容不是有效的 JSON 对象',
26
+ missingMcpUrl: '缺少必需字段 "ones_mcp_url"(ONES MCP 服务器地址)',
27
+ invalidModelField: '"model" 字段必须是非空字符串(格式: "provider/model_name")',
28
+ invalidProviderInProviders: (name, supported) => `llm.providers 中包含未知的 provider: "${name}",支持: ${supported}`,
29
+ invalidProviderMode: (name) => `llm.providers.${name}.mode 必须是 "api_key" 或 "oauth"`,
30
+ invalidAgentField: (field) => `agent.${field} 必须是正整数`,
31
+ llmMustBeObject: '"llm" 字段必须是对象',
32
+ providersMustBeObject: '"llm.providers" 字段必须是对象',
33
+ providerEntryMustBeObject: (name) => `llm.providers.${name} 必须是对象`,
34
+ agentMustBeObject: '"agent" 字段必须是对象',
35
+ missingLlmConfig: '缺少 LLM 配置:需要 "model" 字段(新格式)或 "anthropic_api_key"(旧格式)',
36
+ readFailed: (msg) => `配置文件读取失败: ${msg}`,
37
+ parseFailed: (msg) => `配置文件 JSON 解析失败: ${msg}`,
38
+ validationFailed: (count) => `配置文件验证失败 (${count} 个错误)`,
39
+ repairHint: (path) => `${path} 不是有效的 JSON 文件,请检查语法或重新运行: seno init`,
40
+ cannotRead: (path) => `无法读取 ${path}`,
41
+ // loadConfig caller messages
42
+ fileNotExist: '配置文件不存在,请先运行: seno init',
43
+ loadFailedRunInit: '配置文件加载失败,请先运行 seno init 初始化',
44
+ },
45
+ };
46
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/i18n/strings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE;QACL,gBAAgB,EAAE,4BAA4B;QAC9C,oBAAoB,EAAE,sBAAsB;QAC5C,mBAAmB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,aAAa,SAAS,EAAE;KACrE;IAED,KAAK,EAAE;QACL,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE;QAC9C,eAAe,EAAE,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CAAC,WAAW,IAAI,MAAM,GAAG,EAAE;KAC3E;IAED,MAAM,EAAE;QACN,mBAAmB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,uBAAuB,QAAQ,GAAG;QAC7E,sBAAsB,EAAE,CAAC,OAAe,EAAE,QAAgB,EAAE,SAAiB,EAAE,EAAE,CAC/E,aAAa,OAAO,kBAAkB,QAAQ,iBAAiB,SAAS,EAAE;QAC5E,kBAAkB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,gBAAgB,OAAO,GAAG;QACnE,kBAAkB,EAAE,CAAC,OAAe,EAAE,EAAE,CACtC,aAAa,OAAO,yBAAyB;QAC/C,WAAW,EAAE,QAAQ;QACrB,iBAAiB,EAAE,qBAAqB;QACxC,aAAa,EAAE,uCAAuC;QACtD,iBAAiB,EAAE,+CAA+C;QAClE,0BAA0B,EAAE,CAAC,IAAY,EAAE,SAAiB,EAAE,EAAE,CAC9D,mCAAmC,IAAI,SAAS,SAAS,EAAE;QAC7D,mBAAmB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iBAAiB,IAAI,+BAA+B;QAC3F,iBAAiB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS;QAC7D,eAAe,EAAE,eAAe;QAChC,qBAAqB,EAAE,yBAAyB;QAChD,yBAAyB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iBAAiB,IAAI,QAAQ;QAC1E,iBAAiB,EAAE,iBAAiB;QACpC,gBAAgB,EAAE,wDAAwD;QAC1E,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE;QAC/C,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,mBAAmB,GAAG,EAAE;QACtD,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,aAAa,KAAK,OAAO;QAC9D,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,IAAI,sCAAsC;QAC3E,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE;QAC5C,6BAA6B;QAC7B,YAAY,EAAE,yBAAyB;QACvC,iBAAiB,EAAE,6BAA6B;KACjD;CACO,CAAC"}
package/dist/index.js CHANGED
@@ -17,20 +17,15 @@ import { startRepl } from './cli/repl.js';
17
17
  import { buildSystemPrompt } from './prompts/system.js';
18
18
  import { SessionState } from './agent/session.js';
19
19
  import { logger } from './cli/logger.js';
20
+ import { ConfigValidationError } from './errors.js';
20
21
  const __filename = fileURLToPath(import.meta.url);
21
22
  const __dirname = dirname(__filename);
22
23
  const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
23
24
  const program = new Command();
24
- program
25
- .name('seno')
26
- .description('ONES 企业内部 AI Agent CLI')
27
- .version(pkg.version);
25
+ program.name('seno').description('ONES 企业内部 AI Agent CLI').version(pkg.version);
28
26
  program.option('--debug', '启用 Debug 模式,输出详细日志');
29
27
  // seno init — 首次初始化配置
30
- program
31
- .command('init')
32
- .description('初始化 SENO 配置(~/.seno/)')
33
- .action(initCommand);
28
+ program.command('init').description('初始化 SENO 配置(~/.seno/)').action(initCommand);
34
29
  // 默认行为:无子命令时进入 REPL 对话模式
35
30
  program.action(async (_options, command) => {
36
31
  if (command.args.length > 0)
@@ -43,9 +38,25 @@ program.action(async (_options, command) => {
43
38
  process.exit(1);
44
39
  }
45
40
  // 加载配置
46
- const config = await loadConfig();
41
+ let config;
42
+ try {
43
+ config = await loadConfig();
44
+ }
45
+ catch (error) {
46
+ if (error instanceof ConfigValidationError) {
47
+ console.log(chalk.red(`\n 配置文件验证失败:`));
48
+ for (const err of error.errors) {
49
+ console.log(chalk.yellow(` • ${err}`));
50
+ }
51
+ console.log(chalk.gray('\n 请修复配置或重新运行: seno init\n'));
52
+ }
53
+ else {
54
+ console.log(chalk.red(`\n 配置文件加载失败: ${error instanceof Error ? error.message : String(error)}\n`));
55
+ }
56
+ process.exit(1);
57
+ }
47
58
  if (!config) {
48
- console.log(chalk.red('\n 配置文件加载失败,请重新运行: seno init\n'));
59
+ console.log(chalk.red('\n 配置文件不存在,请先运行: seno init\n'));
49
60
  process.exit(1);
50
61
  }
51
62
  // 连接 MCP 服务器
@@ -141,20 +152,44 @@ program.action(async (_options, command) => {
141
152
  systemPrompt,
142
153
  chatOptions: { model: active.model },
143
154
  session,
155
+ agentConfig: config.agent,
144
156
  });
145
- // 10. 全局异常兜底
146
- process.on('uncaughtException', async (error) => {
147
- logger.error('system', `Uncaught exception: ${error.message}`, {
148
- stack: error.stack,
149
- });
150
- printError(error, debug);
157
+ // 10. 统一资源清理(防止重复执行)
158
+ let cleanupDone = false;
159
+ async function cleanup() {
160
+ if (cleanupDone)
161
+ return;
162
+ cleanupDone = true;
151
163
  try {
152
164
  await toolRegistry.cleanup();
165
+ }
166
+ catch {
167
+ // 清理失败不阻塞退出
168
+ }
169
+ try {
153
170
  await mcpManager.disconnectAll();
154
171
  }
155
172
  catch {
156
173
  // 清理失败不阻塞退出
157
174
  }
175
+ // flush 异步日志缓冲区,确保数据落盘
176
+ logger.flushSync();
177
+ }
178
+ // 信号处理:Ctrl+C / kill → 优雅退出
179
+ const onSignal = async (signal) => {
180
+ logger.debug('system', `Received ${signal}, cleaning up...`);
181
+ await cleanup();
182
+ process.exit(0);
183
+ };
184
+ process.on('SIGINT', () => void onSignal('SIGINT'));
185
+ process.on('SIGTERM', () => void onSignal('SIGTERM'));
186
+ // 全局异常兜底
187
+ process.on('uncaughtException', async (error) => {
188
+ logger.error('system', `Uncaught exception: ${error.message}`, {
189
+ stack: error.stack,
190
+ });
191
+ printError(error, debug);
192
+ await cleanup();
158
193
  process.exit(1);
159
194
  });
160
195
  process.on('unhandledRejection', (reason) => {
@@ -186,8 +221,7 @@ program.action(async (_options, command) => {
186
221
  });
187
222
  }
188
223
  finally {
189
- await toolRegistry.cleanup();
190
- await mcpManager.disconnectAll();
224
+ await cleanup();
191
225
  }
192
226
  });
193
227
  program.parse();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,4 @@ export declare class AnthropicProvider implements LLMProvider {
15
15
  * 使用 AsyncGenerator 模式,逐个 yield StreamEvent。
16
16
  */
17
17
  chat(messages: Message[], tools: ToolDefinition[], options?: ChatOptions): AsyncGenerator<StreamEvent>;
18
- /**
19
- * 判断 API 错误是否可重试
20
- * 429 Rate Limit、5xx Server Error、网络错误可重试
21
- */
22
- private isRetryableError;
23
- /**
24
- * 将原始错误转换为 LLMError,提供用户友好的错误信息
25
- */
26
- private classifyError;
27
18
  }