@zhushanwen/subagent-engine-sdk 0.10.1 → 0.11.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 (62) hide show
  1. package/dist/{chunk-AF2ETADP.js → chunk-2L3I2TWJ.js} +5 -10
  2. package/dist/{chunk-HSNDUHFH.js → chunk-3MCOZY3Z.js} +32 -4
  3. package/dist/{chunk-JZN76I3S.js → chunk-NVF3PADP.js} +29 -1
  4. package/dist/{chunk-LM7P7OTA.js → chunk-QBXDEF4N.js} +35 -3
  5. package/dist/{chunk-NTOLHLCL.js → chunk-QGXILDWB.js} +1 -1
  6. package/dist/{chunk-CNCFMPEH.js → chunk-TJMS3YOR.js} +1 -1
  7. package/dist/{chunk-SGAIDL63.js → chunk-YFSNX3N3.js} +2 -2
  8. package/dist/cli-entry.d.cts +1 -1
  9. package/dist/cli-entry.d.ts +1 -1
  10. package/dist/{contract-types-jSa1g28F.d.cts → contract-types-BUHUMF9R.d.cts} +17 -17
  11. package/dist/{contract-types-jSa1g28F.d.ts → contract-types-BUHUMF9R.d.ts} +17 -17
  12. package/dist/env.cjs +5 -10
  13. package/dist/env.d.cts +6 -17
  14. package/dist/env.d.ts +6 -17
  15. package/dist/env.js +1 -1
  16. package/dist/{error-codes-f-UO4a8D.d.cts → error-codes-D_aPibUt.d.cts} +42 -6
  17. package/dist/{error-codes-DnFru4L4.d.ts → error-codes-DrNf0gwT.d.ts} +42 -6
  18. package/dist/index.cjs +126 -97
  19. package/dist/index.d.cts +28 -40
  20. package/dist/index.d.ts +28 -40
  21. package/dist/index.js +38 -57
  22. package/dist/journal-io.d.cts +1 -1
  23. package/dist/journal-io.d.ts +1 -1
  24. package/dist/journal-replay.cjs +2 -2
  25. package/dist/journal-replay.d.cts +4 -4
  26. package/dist/journal-replay.d.ts +4 -4
  27. package/dist/journal-replay.js +1 -1
  28. package/dist/kill-chain.d.cts +5 -5
  29. package/dist/kill-chain.d.ts +5 -5
  30. package/dist/kill-chain.js +2 -2
  31. package/dist/logger.d.cts +1 -1
  32. package/dist/logger.d.ts +1 -1
  33. package/dist/logs/stderr-rotation.d.cts +4 -4
  34. package/dist/logs/stderr-rotation.d.ts +4 -4
  35. package/dist/{methods-C2zvZqhP.d.ts → methods-BdIH3FwS.d.ts} +5 -5
  36. package/dist/{methods-BLxg4ZFr.d.cts → methods-CHiDwvRK.d.cts} +5 -5
  37. package/dist/node-executor.cjs +1 -1
  38. package/dist/node-executor.d.cts +4 -4
  39. package/dist/node-executor.d.ts +4 -4
  40. package/dist/node-executor.js +2 -2
  41. package/dist/port-contract.d.cts +9 -9
  42. package/dist/port-contract.d.ts +9 -9
  43. package/dist/protocol/index.cjs +73 -4
  44. package/dist/protocol/index.d.cts +57 -14
  45. package/dist/protocol/index.d.ts +57 -14
  46. package/dist/protocol/index.js +20 -2
  47. package/dist/server/index.cjs +1 -1
  48. package/dist/server/index.d.cts +10 -10
  49. package/dist/server/index.d.ts +10 -10
  50. package/dist/server/index.js +1 -1
  51. package/dist/spawn.cjs +32 -3
  52. package/dist/spawn.d.cts +34 -8
  53. package/dist/spawn.d.ts +34 -8
  54. package/dist/spawn.js +5 -3
  55. package/dist/ui-types.d.cts +2 -2
  56. package/dist/ui-types.d.ts +2 -2
  57. package/package.json +2 -2
  58. package/dist/chunk-GSW3DMN6.js +0 -39
  59. package/dist/relay-env.cjs +0 -71
  60. package/dist/relay-env.d.cts +0 -37
  61. package/dist/relay-env.d.ts +0 -37
  62. package/dist/relay-env.js +0 -23
package/dist/index.js CHANGED
@@ -1,14 +1,3 @@
1
- import {
2
- RELAY_ENV_NODE,
3
- RELAY_ENV_RECORD_ID,
4
- RELAY_ENV_SCRIPT,
5
- RELAY_ENV_SESSION_ID,
6
- RELAY_ENV_SOCKET,
7
- RELAY_EXIT_CODES,
8
- RELAY_PROTOCOL_VERSION,
9
- isRelayActive,
10
- readRelayForwardEnv
11
- } from "./chunk-GSW3DMN6.js";
12
1
  import {
13
2
  bestEffort
14
3
  } from "./chunk-QMEHSKNR.js";
@@ -52,22 +41,23 @@ import {
52
41
  ENGINE_ENV_PREFIXES,
53
42
  buildEngineChildEnv,
54
43
  buildOutboundChildEnv
55
- } from "./chunk-AF2ETADP.js";
44
+ } from "./chunk-2L3I2TWJ.js";
56
45
  import {
57
46
  DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS,
58
47
  ENGINE_ABORT_KILL_GRACE_MS,
59
48
  ENGINE_HOST_REQUEST_TIMEOUT_ENV,
60
49
  armEngineSelfDestruct,
50
+ killOwnProcessGroup,
61
51
  pumpNdjsonLines,
62
52
  spawnEngineChild
63
- } from "./chunk-HSNDUHFH.js";
53
+ } from "./chunk-3MCOZY3Z.js";
64
54
  import {
65
55
  ENGINE_NODE_ENV,
66
56
  hostKindOf,
67
57
  probeNodeExecutor,
68
58
  resetEngineNodeProbeCache,
69
59
  resolveEngineNodeLaunch
70
- } from "./chunk-NTOLHLCL.js";
60
+ } from "./chunk-QGXILDWB.js";
71
61
  import {
72
62
  DEFAULT_STDERR_KEEP_DAYS,
73
63
  DEFAULT_STDERR_MAX_BYTES,
@@ -86,14 +76,19 @@ import {
86
76
  PROTOCOL_METHODS,
87
77
  REVERSE_CHANNELS,
88
78
  REVERSE_CHANNEL_TIMEOUT_CLASS,
79
+ SUBAGENT_CONTROL_CLOSED_REASONS,
80
+ SUBAGENT_CONTROL_FRAME_KINDS,
81
+ SUBAGENT_CONTROL_PROTOCOL_VERSION,
89
82
  errorResponseFrameSchema,
83
+ isSubagentControlClosedReason,
84
+ isSubagentControlFrameKind,
90
85
  notificationFrameSchema,
91
86
  protocolErrorSchema,
92
87
  requestFrameSchema,
93
88
  reverseRequestFrameSchema,
94
89
  runSessionParamsSchema,
95
90
  successResponseFrameSchema
96
- } from "./chunk-LM7P7OTA.js";
91
+ } from "./chunk-QBXDEF4N.js";
97
92
  import {
98
93
  isNotificationFrame,
99
94
  isRequestFrame,
@@ -122,7 +117,7 @@ import {
122
117
  probePidAlive,
123
118
  safeKill,
124
119
  synthesizeTimeoutOutcome
125
- } from "./chunk-CNCFMPEH.js";
120
+ } from "./chunk-TJMS3YOR.js";
126
121
  import {
127
122
  toErrorMessage
128
123
  } from "./chunk-PYO3YR7W.js";
@@ -131,7 +126,11 @@ import {
131
126
  ENGINE_ERROR_CODE_PREFIX,
132
127
  ENGINE_PROTOCOL_ERROR_CODES,
133
128
  ENGINE_PROTOCOL_VERSION,
129
+ ENGINE_SPAWN_DELIVERY_ERROR_CODES,
130
+ ENGINE_SPAWN_DELIVERY_ERROR_RECOVERY,
134
131
  ENGINE_TIMEOUT_RECOVERY,
132
+ ENGINE_TRANSPORT_ERROR_CODES,
133
+ ENGINE_TRANSPORT_ERROR_RECOVERY,
135
134
  EngineSdkError,
136
135
  HANDSHAKE_TIMEOUT_MS,
137
136
  REVERSE_REQUEST_TIMEOUT_MS,
@@ -151,7 +150,7 @@ import {
151
150
  isEngineProtocolErrorCode,
152
151
  isProtocolVersionCompatible,
153
152
  schemaEmulationFailedDetail
154
- } from "./chunk-JZN76I3S.js";
153
+ } from "./chunk-NVF3PADP.js";
155
154
  import {
156
155
  configureLoggerSink,
157
156
  getLogger,
@@ -164,7 +163,7 @@ import {
164
163
  sessionIdFromHandle,
165
164
  toReplayedTurn,
166
165
  updateFromEvent
167
- } from "./chunk-SGAIDL63.js";
166
+ } from "./chunk-YFSNX3N3.js";
168
167
  import "./chunk-JSBRDJBE.js";
169
168
 
170
169
  // src/identity-env.ts
@@ -194,37 +193,19 @@ var SUBAGENT_IDENTITY_ENV = {
194
193
  /** worktree 隔离标志("true" = 是)。 */
195
194
  worktree: "PI_SUBAGENT_WORKTREE"
196
195
  };
196
+ var PI_SUBAGENT_TASK_MAX_CHARS = 2e3;
197
197
 
198
- // src/relay-frames.ts
199
- var RELAY_FRAME_KINDS = {
200
- handshake: "handshake",
201
- accept: "accept",
202
- reject: "reject",
203
- data: "data",
204
- exit: "exit",
205
- /**
206
- * goodbye(代理 → runtime,v1):代理被宿主终止(SIGTERM/SIGINT)前的预告帧——
207
- * 宿主侧的正常收割(agent_settled 后杀代理)与异常断连(宿主崩溃/主 pi 死)在
208
- * runtime 侧都表现为 socket close,无法区分;goodbye 让正常收割显式自报,runtime
209
- * 据此把后续 close 的日志从 warn(kill-on-disconnect)降级为 info(reaped,正常
210
- * teardown)。kill 行为本身不变(预告后 child 仍由 runtime 收割)。
211
- */
212
- goodbye: "goodbye"
213
- };
214
- var RELAY_FRAME_DIRS = {
215
- down: "down",
216
- up: "up",
217
- upStderr: "up-stderr"
218
- };
219
- var RELAY_REJECT_REASONS = {
220
- version: "version",
221
- identity: "identity",
222
- duplicate: "duplicate",
223
- malformed: "malformed"
224
- };
198
+ // src/control-env.ts
199
+ var CONTROL_ENV_SOCKET = "TAIJI_SUBAGENT_CONTROL_SOCKET";
200
+ var CONTROL_ENV_ROOT_SESSION_ID = "TAIJI_SUBAGENT_CONTROL_ROOT_SESSION_ID";
201
+ function isControlEnvActive(env) {
202
+ return Boolean(env[CONTROL_ENV_SOCKET]);
203
+ }
225
204
  export {
226
205
  AGENT_EVENT_TYPE_NAMES,
227
206
  CANCEL_SETTLE_GRACE_MS,
207
+ CONTROL_ENV_ROOT_SESSION_ID,
208
+ CONTROL_ENV_SOCKET,
228
209
  DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS,
229
210
  DEFAULT_KILL_GRACE_MS,
230
211
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
@@ -240,7 +221,11 @@ export {
240
221
  ENGINE_PROTOCOL_ERROR_CODES,
241
222
  ENGINE_PROTOCOL_SCHEMAS,
242
223
  ENGINE_PROTOCOL_VERSION,
224
+ ENGINE_SPAWN_DELIVERY_ERROR_CODES,
225
+ ENGINE_SPAWN_DELIVERY_ERROR_RECOVERY,
243
226
  ENGINE_TIMEOUT_RECOVERY,
227
+ ENGINE_TRANSPORT_ERROR_CODES,
228
+ ENGINE_TRANSPORT_ERROR_RECOVERY,
244
229
  EngineSdkError,
245
230
  ExecutionNestingContext,
246
231
  FORBIDDEN_CREDENTIAL_KEY_FRAGMENTS,
@@ -248,17 +233,8 @@ export {
248
233
  HOST_TIMEOUT_ABORT_REASON,
249
234
  NESTED_SPAWN_ENV,
250
235
  NestedSpawnRejectedError,
236
+ PI_SUBAGENT_TASK_MAX_CHARS,
251
237
  PROTOCOL_METHODS,
252
- RELAY_ENV_NODE,
253
- RELAY_ENV_RECORD_ID,
254
- RELAY_ENV_SCRIPT,
255
- RELAY_ENV_SESSION_ID,
256
- RELAY_ENV_SOCKET,
257
- RELAY_EXIT_CODES,
258
- RELAY_FRAME_DIRS,
259
- RELAY_FRAME_KINDS,
260
- RELAY_PROTOCOL_VERSION,
261
- RELAY_REJECT_REASONS,
262
238
  REVERSE_CHANNELS,
263
239
  REVERSE_CHANNEL_TIMEOUT_CLASS,
264
240
  REVERSE_REQUEST_TIMEOUT_MS,
@@ -270,6 +246,9 @@ export {
270
246
  SHARED_POOL_KEY,
271
247
  STDERR_TAIL_CHARS,
272
248
  STDOUT_TAIL_ECHO_CHARS,
249
+ SUBAGENT_CONTROL_CLOSED_REASONS,
250
+ SUBAGENT_CONTROL_FRAME_KINDS,
251
+ SUBAGENT_CONTROL_PROTOCOL_VERSION,
273
252
  SUBAGENT_IDENTITY_ENV,
274
253
  SUPPORTED_PROTOCOL_RANGE,
275
254
  TAIJI_DATA_DIR_ENV,
@@ -300,17 +279,20 @@ export {
300
279
  extractAndValidateStructuredOutput,
301
280
  getLogger,
302
281
  hostKindOf,
282
+ isControlEnvActive,
303
283
  isEngineErrorPassthroughCode,
304
284
  isEngineProtocolErrorCode,
305
285
  isNotificationFrame,
306
286
  isPidAlive,
307
287
  isProtocolVersionCompatible,
308
- isRelayActive,
309
288
  isRequestFrame,
310
289
  isResponseFrame,
311
290
  isReverseRequestFrame,
291
+ isSubagentControlClosedReason,
292
+ isSubagentControlFrameKind,
312
293
  isUiResponse,
313
294
  killChain,
295
+ killOwnProcessGroup,
314
296
  killPidChain,
315
297
  notificationFrameSchema,
316
298
  parseChannel,
@@ -319,7 +301,6 @@ export {
319
301
  probePidAlive,
320
302
  protocolErrorSchema,
321
303
  pumpNdjsonLines,
322
- readRelayForwardEnv,
323
304
  replayJournal,
324
305
  requestFrameSchema,
325
306
  resetDataDirWarnForTests,
@@ -1,4 +1,4 @@
1
- import { A as AgentEvent } from './contract-types-jSa1g28F.cjs';
1
+ import { A as AgentEvent } from './contract-types-BUHUMF9R.cjs';
2
2
 
3
3
  /**
4
4
  * 重放 journal:读取路径下全部事件,重放即得 AgentEvent 流(read 第②级)。
@@ -1,4 +1,4 @@
1
- import { A as AgentEvent } from './contract-types-jSa1g28F.js';
1
+ import { A as AgentEvent } from './contract-types-BUHUMF9R.js';
2
2
 
3
3
  /**
4
4
  * 重放 journal:读取路径下全部事件,重放即得 AgentEvent 流(read 第②级)。
@@ -181,7 +181,7 @@ function updateFromEvent(record, event) {
181
181
  return applyToolStart(record, event);
182
182
  case "tool_end":
183
183
  return applyToolEnd(record, event);
184
- // ── turn_end:闭合当前 turn ──
184
+ // ── turn_end:结束当前 turn ──
185
185
  case "turn_end":
186
186
  return applyTurnEnd(record);
187
187
  // ── message_end:usage 增量累加 + totalTokens 累加 ──
@@ -197,7 +197,7 @@ function updateFromEvent(record, event) {
197
197
  case "activity":
198
198
  return;
199
199
  // ── armed:武装确认回执([D3 协议版 P6],协议语义见 contract-types)——监控
200
- // 信号不进 record 投影,消费方 = 宿主等待门 + run 事件 journal(C3 第④步
200
+ // 信号不进 record 派生视图,消费方 = 宿主等待门 + run 事件 journal(C3 第④步
201
201
  // 双侧 reducer no-op 义务的 SDK 侧)
202
202
  case "armed":
203
203
  return;
@@ -1,4 +1,4 @@
1
- import { T as Turn, a as AgentUsageTotal, A as AgentEvent, S as SessionView, E as EngineHandleData, R as ReplayedTurn } from './contract-types-jSa1g28F.cjs';
1
+ import { T as Turn, a as AgentUsageTotal, A as AgentEvent, S as SessionView, E as EngineHandleData, R as ReplayedTurn } from './contract-types-BUHUMF9R.cjs';
2
2
 
3
3
  /**
4
4
  * reducer 的 record 视图(core ExecutionRecord 的结构子集:reducer 只触碰这四个字段)。
@@ -13,12 +13,12 @@ interface ReplayRecordView {
13
13
  /** 重放场景的 record 构造(对齐 core eventsToSessionView 内 createRecord 后的 reducer 视图)。 */
14
14
  declare function createReplayRecord(): ReplayRecordView;
15
15
  /**
16
- * 从 AgentEvent 更新 record。所有数据收口进 record.turns[]。
16
+ * 从 AgentEvent 更新 record。所有数据收敛进 record.turns[]。
17
17
  * - text/thinking:流式累积进 currentTurn()(完整内容,非切片)
18
18
  * - tool_start/end:push 进 currentTurn().toolCalls(含完整 result)
19
19
  * tool_end 跨 turn 扫描找 running 同名 toolCall(兜底滞后事件)
20
- * - turn_end:闭合当前 turn,记 closedTs(真实墙钟,供 getEventLog);
21
- * 正常闭合清 lastError(瞬态 error 恢复后不应误判 success=false)
20
+ * - turn_end:结束当前 turn,记 closedTs(真实墙钟,供 getEventLog);
21
+ * 正常结束清 lastError(瞬态 error 恢复后不应误判 success=false)
22
22
  * - message_end:usage 增量存进末 turn.usageDelta(直接写末 turn,不开新 turn);
23
23
  * totalTokens 累加
24
24
  * - error:存 record.lastError(getEventLog 派生 error 条目用)
@@ -1,4 +1,4 @@
1
- import { T as Turn, a as AgentUsageTotal, A as AgentEvent, S as SessionView, E as EngineHandleData, R as ReplayedTurn } from './contract-types-jSa1g28F.js';
1
+ import { T as Turn, a as AgentUsageTotal, A as AgentEvent, S as SessionView, E as EngineHandleData, R as ReplayedTurn } from './contract-types-BUHUMF9R.js';
2
2
 
3
3
  /**
4
4
  * reducer 的 record 视图(core ExecutionRecord 的结构子集:reducer 只触碰这四个字段)。
@@ -13,12 +13,12 @@ interface ReplayRecordView {
13
13
  /** 重放场景的 record 构造(对齐 core eventsToSessionView 内 createRecord 后的 reducer 视图)。 */
14
14
  declare function createReplayRecord(): ReplayRecordView;
15
15
  /**
16
- * 从 AgentEvent 更新 record。所有数据收口进 record.turns[]。
16
+ * 从 AgentEvent 更新 record。所有数据收敛进 record.turns[]。
17
17
  * - text/thinking:流式累积进 currentTurn()(完整内容,非切片)
18
18
  * - tool_start/end:push 进 currentTurn().toolCalls(含完整 result)
19
19
  * tool_end 跨 turn 扫描找 running 同名 toolCall(兜底滞后事件)
20
- * - turn_end:闭合当前 turn,记 closedTs(真实墙钟,供 getEventLog);
21
- * 正常闭合清 lastError(瞬态 error 恢复后不应误判 success=false)
20
+ * - turn_end:结束当前 turn,记 closedTs(真实墙钟,供 getEventLog);
21
+ * 正常结束清 lastError(瞬态 error 恢复后不应误判 success=false)
22
22
  * - message_end:usage 增量存进末 turn.usageDelta(直接写末 turn,不开新 turn);
23
23
  * totalTokens 累加
24
24
  * - error:存 record.lastError(getEventLog 派生 error 条目用)
@@ -5,7 +5,7 @@ import {
5
5
  sessionIdFromHandle,
6
6
  toReplayedTurn,
7
7
  updateFromEvent
8
- } from "./chunk-SGAIDL63.js";
8
+ } from "./chunk-YFSNX3N3.js";
9
9
  import "./chunk-JSBRDJBE.js";
10
10
  export {
11
11
  aggregateUsage,
@@ -1,4 +1,4 @@
1
- import { b as AgentCallOpts, c as AgentOutcome } from './contract-types-jSa1g28F.cjs';
1
+ import { b as AgentCallOpts, c as AgentOutcome } from './contract-types-BUHUMF9R.cjs';
2
2
 
3
3
  /**
4
4
  * 可杀子进程的结构形状(Node ChildProcess 的结构子集)。
@@ -49,7 +49,7 @@ declare function killChain(child: KillableChild, opts: KillChainOptions): Promis
49
49
  /**
50
50
  * 发信号兜底包裹:进程恰在退出态检查与 kill 之间自退时,ChildProcess.kill 可能抛
51
51
  * (zsub 实测经验)——幂等吞掉并 debug 留痕,不阻断杀链语义(对已退进程信号本就是
52
- * no-op)。收口自 zcode launcher 的内联实现(对齐点②:单一权威)。
52
+ * no-op)。收敛自 zcode launcher 的内联实现(对齐点②:单一权威)。
53
53
  */
54
54
  declare function safeKill(child: KillableChild, signal: NodeJS.Signals): void;
55
55
  /**
@@ -64,7 +64,7 @@ declare function probePidAlive(pid: number): boolean | undefined;
64
64
  interface PidChainOptions {
65
65
  /**
66
66
  * SIGTERM 优雅窗口(ms)。缺省 DEFAULT_KILL_GRACE_MS。回收场景的调用方通常
67
- * 已先行优雅停止(cancel 帧 SIGTERM),本窗只是宿主侧升级兜底,量级沿用组杀
67
+ * 已先行优雅停止(cancel 帧 SIGTERM),本窗只是宿主侧升级兜底,量级沿用按进程组终止
68
68
  * 收割惯例(5s)。
69
69
  */
70
70
  graceMs?: number;
@@ -73,8 +73,8 @@ interface PidChainOptions {
73
73
  }
74
74
  /**
75
75
  * [D9-2 半径收窄原语] run 级 pid 杀链:SIGTERM → graceMs → 仍存活则 SIGKILL,
76
- * **只打单 pid,绝不组杀**(宿主对引擎孙进程只持镜像 pid、不持 ChildProcess——
77
- * 引擎以 detached:true 自成进程组,孙进程在其组内而非自任组长,负 pid 组杀不可达;
76
+ * **只打单 pid,绝不按进程组终止**(宿主对引擎孙进程只持镜像 pid、不持 ChildProcess——
77
+ * 引擎以 detached:true 自成进程组,孙进程在其组内而非自任组长,负 pid 按进程组终止不可达;
78
78
  * 本原语逐 pid 退化单杀,语义 = 「该 run 的进程拓扑」而非引擎组)。
79
79
  *
80
80
  * fire-and-forget:宿主非进程持有方,无 exit 事件可等(对齐 core reaper 的
@@ -1,4 +1,4 @@
1
- import { b as AgentCallOpts, c as AgentOutcome } from './contract-types-jSa1g28F.js';
1
+ import { b as AgentCallOpts, c as AgentOutcome } from './contract-types-BUHUMF9R.js';
2
2
 
3
3
  /**
4
4
  * 可杀子进程的结构形状(Node ChildProcess 的结构子集)。
@@ -49,7 +49,7 @@ declare function killChain(child: KillableChild, opts: KillChainOptions): Promis
49
49
  /**
50
50
  * 发信号兜底包裹:进程恰在退出态检查与 kill 之间自退时,ChildProcess.kill 可能抛
51
51
  * (zsub 实测经验)——幂等吞掉并 debug 留痕,不阻断杀链语义(对已退进程信号本就是
52
- * no-op)。收口自 zcode launcher 的内联实现(对齐点②:单一权威)。
52
+ * no-op)。收敛自 zcode launcher 的内联实现(对齐点②:单一权威)。
53
53
  */
54
54
  declare function safeKill(child: KillableChild, signal: NodeJS.Signals): void;
55
55
  /**
@@ -64,7 +64,7 @@ declare function probePidAlive(pid: number): boolean | undefined;
64
64
  interface PidChainOptions {
65
65
  /**
66
66
  * SIGTERM 优雅窗口(ms)。缺省 DEFAULT_KILL_GRACE_MS。回收场景的调用方通常
67
- * 已先行优雅停止(cancel 帧 SIGTERM),本窗只是宿主侧升级兜底,量级沿用组杀
67
+ * 已先行优雅停止(cancel 帧 SIGTERM),本窗只是宿主侧升级兜底,量级沿用按进程组终止
68
68
  * 收割惯例(5s)。
69
69
  */
70
70
  graceMs?: number;
@@ -73,8 +73,8 @@ interface PidChainOptions {
73
73
  }
74
74
  /**
75
75
  * [D9-2 半径收窄原语] run 级 pid 杀链:SIGTERM → graceMs → 仍存活则 SIGKILL,
76
- * **只打单 pid,绝不组杀**(宿主对引擎孙进程只持镜像 pid、不持 ChildProcess——
77
- * 引擎以 detached:true 自成进程组,孙进程在其组内而非自任组长,负 pid 组杀不可达;
76
+ * **只打单 pid,绝不按进程组终止**(宿主对引擎孙进程只持镜像 pid、不持 ChildProcess——
77
+ * 引擎以 detached:true 自成进程组,孙进程在其组内而非自任组长,负 pid 按进程组终止不可达;
78
78
  * 本原语逐 pid 退化单杀,语义 = 「该 run 的进程拓扑」而非引擎组)。
79
79
  *
80
80
  * fire-and-forget:宿主非进程持有方,无 exit 事件可等(对齐 core reaper 的
@@ -8,9 +8,9 @@ import {
8
8
  probePidAlive,
9
9
  safeKill,
10
10
  synthesizeTimeoutOutcome
11
- } from "./chunk-CNCFMPEH.js";
11
+ } from "./chunk-TJMS3YOR.js";
12
12
  import "./chunk-PYO3YR7W.js";
13
- import "./chunk-JZN76I3S.js";
13
+ import "./chunk-NVF3PADP.js";
14
14
  import "./chunk-NXNNXGTY.js";
15
15
  import "./chunk-JSBRDJBE.js";
16
16
  export {
package/dist/logger.d.cts CHANGED
@@ -6,7 +6,7 @@ interface LoggerSink {
6
6
  }
7
7
  /** 日志级别。对齐 core logger 的 LogLevel(三值,无 info)。 */
8
8
  type LogLevel = "debug" | "warn" | "error";
9
- /** logger 接口。与 core CoreLogger 结构兼容——迁移调用面(方法名/参数序)逐文件等价。 */
9
+ /** logger 接口。与 core CoreLogger 结构兼容——迁移调用范围(方法名/参数序)逐文件等价。 */
10
10
  interface CoreLogger {
11
11
  debug(msg: string, data?: unknown): void;
12
12
  warn(msg: string, data?: unknown): void;
package/dist/logger.d.ts CHANGED
@@ -6,7 +6,7 @@ interface LoggerSink {
6
6
  }
7
7
  /** 日志级别。对齐 core logger 的 LogLevel(三值,无 info)。 */
8
8
  type LogLevel = "debug" | "warn" | "error";
9
- /** logger 接口。与 core CoreLogger 结构兼容——迁移调用面(方法名/参数序)逐文件等价。 */
9
+ /** logger 接口。与 core CoreLogger 结构兼容——迁移调用范围(方法名/参数序)逐文件等价。 */
10
10
  interface CoreLogger {
11
11
  debug(msg: string, data?: unknown): void;
12
12
  warn(msg: string, data?: unknown): void;
@@ -1,12 +1,12 @@
1
1
  declare const DEFAULT_STDERR_MAX_BYTES: number;
2
2
  /** 缺省保留天数(与宿主 logger 同源缺省:7 天)。 */
3
3
  declare const DEFAULT_STDERR_KEEP_DAYS = 7;
4
- /** 轮转参数(env 覆盖面 = 宿主 logger 同款 TAIJI_LOG_* 两键)。 */
4
+ /** 轮转参数(env 覆盖范围 = 宿主 logger 同款 TAIJI_LOG_* 两键)。 */
5
5
  interface StderrRotationParams {
6
6
  maxBytes: number;
7
7
  keepDays: number;
8
8
  }
9
- /** 读 env 解析轮转参数(非法值回缺省——取证面配置不拖垮主通道)。 */
9
+ /** 读 env 解析轮转参数(非法值回缺省——取证侧配置不拖垮主通道)。 */
10
10
  declare function stderrRotationParams(env: NodeJS.ProcessEnv): StderrRotationParams;
11
11
  /** 实例维度 stderr tee 路径:<engineDataDir>/logs/<prefix><pid>.log。 */
12
12
  declare function stderrLogPathFor(engineDataDir: string, pid: number, prefix: string): string;
@@ -17,7 +17,7 @@ declare function isPidAlive(pid: number): boolean;
17
17
  /**
18
18
  * 尺寸轮转:当前文件超过 maxBytes 时 rename 为 `<path>.<时间戳>` 副本并返回
19
19
  * true(调用方懒重开新文件继续 append)。rename 失败返回 false(继续 append 原
20
- * 文件——轮转是取证面优化,不是主通道)。
20
+ * 文件——轮转是取证侧优化,不是主通道)。
21
21
  */
22
22
  declare function rotateStderrLogIfNeeded(path: string, params: StderrRotationParams): boolean;
23
23
  interface CleanupResult {
@@ -28,7 +28,7 @@ interface CleanupResult {
28
28
  }
29
29
  /**
30
30
  * 过期清理:扫描 logsDir 下同前缀文件,三判据同时成立才删。目录缺失/读失败返回
31
- * 零删除(取证面 best-effort)。
31
+ * 零删除(取证侧 best-effort)。
32
32
  */
33
33
  declare function cleanupStaleStderrLogs(logsDir: string, env: NodeJS.ProcessEnv, prefix: string, now?: number): CleanupResult;
34
34
  /** 便捷入口:对 tee 路径所在 logs 目录做过期清理(流打开时机调用,每代一次)。 */
@@ -1,12 +1,12 @@
1
1
  declare const DEFAULT_STDERR_MAX_BYTES: number;
2
2
  /** 缺省保留天数(与宿主 logger 同源缺省:7 天)。 */
3
3
  declare const DEFAULT_STDERR_KEEP_DAYS = 7;
4
- /** 轮转参数(env 覆盖面 = 宿主 logger 同款 TAIJI_LOG_* 两键)。 */
4
+ /** 轮转参数(env 覆盖范围 = 宿主 logger 同款 TAIJI_LOG_* 两键)。 */
5
5
  interface StderrRotationParams {
6
6
  maxBytes: number;
7
7
  keepDays: number;
8
8
  }
9
- /** 读 env 解析轮转参数(非法值回缺省——取证面配置不拖垮主通道)。 */
9
+ /** 读 env 解析轮转参数(非法值回缺省——取证侧配置不拖垮主通道)。 */
10
10
  declare function stderrRotationParams(env: NodeJS.ProcessEnv): StderrRotationParams;
11
11
  /** 实例维度 stderr tee 路径:<engineDataDir>/logs/<prefix><pid>.log。 */
12
12
  declare function stderrLogPathFor(engineDataDir: string, pid: number, prefix: string): string;
@@ -17,7 +17,7 @@ declare function isPidAlive(pid: number): boolean;
17
17
  /**
18
18
  * 尺寸轮转:当前文件超过 maxBytes 时 rename 为 `<path>.<时间戳>` 副本并返回
19
19
  * true(调用方懒重开新文件继续 append)。rename 失败返回 false(继续 append 原
20
- * 文件——轮转是取证面优化,不是主通道)。
20
+ * 文件——轮转是取证侧优化,不是主通道)。
21
21
  */
22
22
  declare function rotateStderrLogIfNeeded(path: string, params: StderrRotationParams): boolean;
23
23
  interface CleanupResult {
@@ -28,7 +28,7 @@ interface CleanupResult {
28
28
  }
29
29
  /**
30
30
  * 过期清理:扫描 logsDir 下同前缀文件,三判据同时成立才删。目录缺失/读失败返回
31
- * 零删除(取证面 best-effort)。
31
+ * 零删除(取证侧 best-effort)。
32
32
  */
33
33
  declare function cleanupStaleStderrLogs(logsDir: string, env: NodeJS.ProcessEnv, prefix: string, now?: number): CleanupResult;
34
34
  /** 便捷入口:对 tee 路径所在 logs 目录做过期清理(流打开时机调用,每代一次)。 */
@@ -1,4 +1,4 @@
1
- import { M as ModelRef, d as EngineCapabilities, f as ModelCatalogEntry, b as AgentCallOpts, e as ResumeAnchor, E as EngineHandleData, P as ProbeReport, c as AgentOutcome, S as SessionView } from './contract-types-jSa1g28F.js';
1
+ import { M as ModelRef, d as EngineCapabilities, f as ModelCatalogEntry, b as AgentCallOpts, e as ResumeAnchor, E as EngineHandleData, P as ProbeReport, c as AgentOutcome, S as SessionView } from './contract-types-BUHUMF9R.js';
2
2
 
3
3
  /**
4
4
  * 正向方法名联合(恰好 10 个;PROTOCOL_METHODS 常量数组与之同源互证)。
@@ -24,7 +24,7 @@ interface RunContextParams {
24
24
  /** 事件粒度请求(引擎按 capabilities.eventGranularity 实际能力执行)。 */
25
25
  streamMode?: "stream" | "coarse";
26
26
  /**
27
- * [F6] 根 session id——pi 引擎 relay 归属键 SESSION_ID 的权威来源(生产三来源
27
+ * [F6] 根 session id——pi 引擎 engine_open 归属键的权威来源(生产三来源
28
28
  * ①本字段 ②宿主 env ③根进程 env 中,宿主派发恒走①)。additive 可选:旧引擎忽略
29
29
  * 未知字段,undefined 不上 wire。
30
30
  */
@@ -94,14 +94,14 @@ interface InitializeParams {
94
94
  };
95
95
  engineConfig: Record<string, string>;
96
96
  }
97
- /** initialize 应答(仅诊断面:capabilities/models 与 manifest 不一致 → warn,不参与判据)。 */
97
+ /** initialize 应答(仅诊断范围:capabilities/models 与 manifest 不一致 → warn,不参与判据)。 */
98
98
  interface InitializeResult {
99
99
  protocolVersion: number;
100
100
  engineId: string;
101
101
  engineVersion: string;
102
102
  adapterVersion: string;
103
103
  capabilities: EngineCapabilities;
104
- /** 模型目录(诊断面;省略/null = 无枚举面语义)。 */
104
+ /** 模型目录(诊断范围;省略/null = 无枚举情形语义)。 */
105
105
  models?: ModelCatalogEntry[] | null;
106
106
  }
107
107
  interface ProbeParams {
@@ -147,7 +147,7 @@ interface ListModelsParams {
147
147
  _placeholder?: never;
148
148
  }
149
149
  interface ListModelsResult {
150
- /** 数组 = 有枚举面;null = 无枚举面(buildCoreAlignedHint 语义,与 manifest 省略对齐)。 */
150
+ /** 数组 = 有枚举;null = 无枚举情形(buildCoreAlignedHint 语义,与 manifest 省略对齐)。 */
151
151
  models: ModelCatalogEntry[] | null;
152
152
  }
153
153
  interface ValidateModelParams {
@@ -1,4 +1,4 @@
1
- import { M as ModelRef, d as EngineCapabilities, f as ModelCatalogEntry, b as AgentCallOpts, e as ResumeAnchor, E as EngineHandleData, P as ProbeReport, c as AgentOutcome, S as SessionView } from './contract-types-jSa1g28F.cjs';
1
+ import { M as ModelRef, d as EngineCapabilities, f as ModelCatalogEntry, b as AgentCallOpts, e as ResumeAnchor, E as EngineHandleData, P as ProbeReport, c as AgentOutcome, S as SessionView } from './contract-types-BUHUMF9R.cjs';
2
2
 
3
3
  /**
4
4
  * 正向方法名联合(恰好 10 个;PROTOCOL_METHODS 常量数组与之同源互证)。
@@ -24,7 +24,7 @@ interface RunContextParams {
24
24
  /** 事件粒度请求(引擎按 capabilities.eventGranularity 实际能力执行)。 */
25
25
  streamMode?: "stream" | "coarse";
26
26
  /**
27
- * [F6] 根 session id——pi 引擎 relay 归属键 SESSION_ID 的权威来源(生产三来源
27
+ * [F6] 根 session id——pi 引擎 engine_open 归属键的权威来源(生产三来源
28
28
  * ①本字段 ②宿主 env ③根进程 env 中,宿主派发恒走①)。additive 可选:旧引擎忽略
29
29
  * 未知字段,undefined 不上 wire。
30
30
  */
@@ -94,14 +94,14 @@ interface InitializeParams {
94
94
  };
95
95
  engineConfig: Record<string, string>;
96
96
  }
97
- /** initialize 应答(仅诊断面:capabilities/models 与 manifest 不一致 → warn,不参与判据)。 */
97
+ /** initialize 应答(仅诊断范围:capabilities/models 与 manifest 不一致 → warn,不参与判据)。 */
98
98
  interface InitializeResult {
99
99
  protocolVersion: number;
100
100
  engineId: string;
101
101
  engineVersion: string;
102
102
  adapterVersion: string;
103
103
  capabilities: EngineCapabilities;
104
- /** 模型目录(诊断面;省略/null = 无枚举面语义)。 */
104
+ /** 模型目录(诊断范围;省略/null = 无枚举情形语义)。 */
105
105
  models?: ModelCatalogEntry[] | null;
106
106
  }
107
107
  interface ProbeParams {
@@ -147,7 +147,7 @@ interface ListModelsParams {
147
147
  _placeholder?: never;
148
148
  }
149
149
  interface ListModelsResult {
150
- /** 数组 = 有枚举面;null = 无枚举面(buildCoreAlignedHint 语义,与 manifest 省略对齐)。 */
150
+ /** 数组 = 有枚举;null = 无枚举情形(buildCoreAlignedHint 语义,与 manifest 省略对齐)。 */
151
151
  models: ModelCatalogEntry[] | null;
152
152
  }
153
153
  interface ValidateModelParams {
@@ -67,7 +67,7 @@ var EngineSdkError = class extends Error {
67
67
  this.recovery = recovery;
68
68
  this.data = data;
69
69
  }
70
- /** 协议 error 帧载荷投影。 */
70
+ /** 协议 error 帧载荷派生视图。 */
71
71
  toStructured() {
72
72
  return { code: this.code, message: this.message, recovery: this.recovery, data: this.data };
73
73
  }
@@ -1,14 +1,14 @@
1
- /** L0 注入的引擎执行器路径 env(与 relay 的 TAIJI_SUBAGENT_RELAY_NODE 不复用)。 */
1
+ /** L0 注入的引擎执行器路径 env。 */
2
2
  declare const ENGINE_NODE_ENV = "TAIJI_AGENT_ENGINE_NODE";
3
3
  /**
4
- * 探针:验证执行器能以纯 node 语义执行 JS(先例 = runtime relay-env.ts:47-90)。
4
+ * 探针:验证执行器能以纯 node 语义执行 JS。
5
5
  *
6
6
  * 为什么需要:打包态 pi 宿主的候选执行器可能是 Electron 二进制——直接当 node 用会
7
7
  * 拉起 GUI,必须同 env 注入 ELECTRON_RUN_AS_NODE=1 才是纯 node 模式;探针被证伪则
8
8
  * 按矩阵① 报 engine_not_found(带可操作指引),不静默回落 PATH 探测。
9
9
  */
10
10
  declare function probeNodeExecutor(execPath: string, isElectron: boolean): Promise<boolean>;
11
- /** 测试钩子:清探针缓存(生产无调用方;与 relay-env resetRelayNodeProbeCache 同款)。 */
11
+ /** 测试钩子:清探针缓存(生产无调用方)。 */
12
12
  declare function resetEngineNodeProbeCache(): void;
13
13
  /** 宿主形态(矩阵行;EngineClient 的 hostKind 自由字符串经 hostKindOf 归一)。 */
14
14
  type EngineNodeHostKind = "pi-extension" | "runtime-sidecar" | "standalone";
@@ -41,7 +41,7 @@ interface EngineNodeLaunch {
41
41
  * (EngineClient / runtime)持有各自的平台参数(detached / 进程组收割语义)。
42
42
  *
43
43
  * 判定序(与规格逐行对应):
44
- * Windows + entry .cmd → cmd.exe /c 显式形态(禁 shell:true 的注入面);
44
+ * Windows + entry .cmd → cmd.exe /c 显式形态(禁 shell:true 的注入通道);
45
45
  * pi-extension → 注入执行器(env TAIJI_AGENT_ENGINE_NODE),缺失/探针失败 =
46
46
  * engine_not_found + 指引;
47
47
  * runtime-sidecar → process.execPath(Electron 时 electronRunAsNode,探针先行);
@@ -1,14 +1,14 @@
1
- /** L0 注入的引擎执行器路径 env(与 relay 的 TAIJI_SUBAGENT_RELAY_NODE 不复用)。 */
1
+ /** L0 注入的引擎执行器路径 env。 */
2
2
  declare const ENGINE_NODE_ENV = "TAIJI_AGENT_ENGINE_NODE";
3
3
  /**
4
- * 探针:验证执行器能以纯 node 语义执行 JS(先例 = runtime relay-env.ts:47-90)。
4
+ * 探针:验证执行器能以纯 node 语义执行 JS。
5
5
  *
6
6
  * 为什么需要:打包态 pi 宿主的候选执行器可能是 Electron 二进制——直接当 node 用会
7
7
  * 拉起 GUI,必须同 env 注入 ELECTRON_RUN_AS_NODE=1 才是纯 node 模式;探针被证伪则
8
8
  * 按矩阵① 报 engine_not_found(带可操作指引),不静默回落 PATH 探测。
9
9
  */
10
10
  declare function probeNodeExecutor(execPath: string, isElectron: boolean): Promise<boolean>;
11
- /** 测试钩子:清探针缓存(生产无调用方;与 relay-env resetRelayNodeProbeCache 同款)。 */
11
+ /** 测试钩子:清探针缓存(生产无调用方)。 */
12
12
  declare function resetEngineNodeProbeCache(): void;
13
13
  /** 宿主形态(矩阵行;EngineClient 的 hostKind 自由字符串经 hostKindOf 归一)。 */
14
14
  type EngineNodeHostKind = "pi-extension" | "runtime-sidecar" | "standalone";
@@ -41,7 +41,7 @@ interface EngineNodeLaunch {
41
41
  * (EngineClient / runtime)持有各自的平台参数(detached / 进程组收割语义)。
42
42
  *
43
43
  * 判定序(与规格逐行对应):
44
- * Windows + entry .cmd → cmd.exe /c 显式形态(禁 shell:true 的注入面);
44
+ * Windows + entry .cmd → cmd.exe /c 显式形态(禁 shell:true 的注入通道);
45
45
  * pi-extension → 注入执行器(env TAIJI_AGENT_ENGINE_NODE),缺失/探针失败 =
46
46
  * engine_not_found + 指引;
47
47
  * runtime-sidecar → process.execPath(Electron 时 electronRunAsNode,探针先行);
@@ -4,8 +4,8 @@ import {
4
4
  probeNodeExecutor,
5
5
  resetEngineNodeProbeCache,
6
6
  resolveEngineNodeLaunch
7
- } from "./chunk-NTOLHLCL.js";
8
- import "./chunk-JZN76I3S.js";
7
+ } from "./chunk-QGXILDWB.js";
8
+ import "./chunk-NVF3PADP.js";
9
9
  import "./chunk-JSBRDJBE.js";
10
10
  export {
11
11
  ENGINE_NODE_ENV,