@zhushanwen/subagent-engine-sdk 0.10.0 → 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 (67) 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-CT3FEBDO.js → chunk-QOFFM5YW.js} +7 -1
  7. package/dist/{chunk-CNCFMPEH.js → chunk-TJMS3YOR.js} +1 -1
  8. package/dist/{chunk-SGAIDL63.js → chunk-YFSNX3N3.js} +2 -2
  9. package/dist/cli-entry.d.cts +1 -1
  10. package/dist/cli-entry.d.ts +1 -1
  11. package/dist/{contract-types-jSa1g28F.d.cts → contract-types-BUHUMF9R.d.cts} +17 -17
  12. package/dist/{contract-types-jSa1g28F.d.ts → contract-types-BUHUMF9R.d.ts} +17 -17
  13. package/dist/env.cjs +5 -10
  14. package/dist/env.d.cts +6 -17
  15. package/dist/env.d.ts +6 -17
  16. package/dist/env.js +1 -1
  17. package/dist/{error-codes-f-UO4a8D.d.cts → error-codes-D_aPibUt.d.cts} +42 -6
  18. package/dist/{error-codes-DnFru4L4.d.ts → error-codes-DrNf0gwT.d.ts} +42 -6
  19. package/dist/index.cjs +133 -97
  20. package/dist/index.d.cts +29 -41
  21. package/dist/index.d.ts +29 -41
  22. package/dist/index.js +42 -59
  23. package/dist/journal-io.d.cts +1 -1
  24. package/dist/journal-io.d.ts +1 -1
  25. package/dist/journal-replay.cjs +2 -2
  26. package/dist/journal-replay.d.cts +4 -4
  27. package/dist/journal-replay.d.ts +4 -4
  28. package/dist/journal-replay.js +1 -1
  29. package/dist/kill-chain.d.cts +5 -5
  30. package/dist/kill-chain.d.ts +5 -5
  31. package/dist/kill-chain.js +2 -2
  32. package/dist/logger.d.cts +1 -1
  33. package/dist/logger.d.ts +1 -1
  34. package/dist/logs/stderr-rotation.d.cts +4 -4
  35. package/dist/logs/stderr-rotation.d.ts +4 -4
  36. package/dist/{methods-C2zvZqhP.d.ts → methods-BdIH3FwS.d.ts} +5 -5
  37. package/dist/{methods-BLxg4ZFr.d.cts → methods-CHiDwvRK.d.cts} +5 -5
  38. package/dist/node-executor.cjs +1 -1
  39. package/dist/node-executor.d.cts +4 -4
  40. package/dist/node-executor.d.ts +4 -4
  41. package/dist/node-executor.js +2 -2
  42. package/dist/port-contract.d.cts +9 -9
  43. package/dist/port-contract.d.ts +9 -9
  44. package/dist/protocol/index.cjs +73 -4
  45. package/dist/protocol/index.d.cts +57 -14
  46. package/dist/protocol/index.d.ts +57 -14
  47. package/dist/protocol/index.js +20 -2
  48. package/dist/server/index.cjs +1 -1
  49. package/dist/server/index.d.cts +10 -10
  50. package/dist/server/index.d.ts +10 -10
  51. package/dist/server/index.js +1 -1
  52. package/dist/spawn.cjs +32 -3
  53. package/dist/spawn.d.cts +34 -8
  54. package/dist/spawn.d.ts +34 -8
  55. package/dist/spawn.js +5 -3
  56. package/dist/ui-types.d.cts +2 -2
  57. package/dist/ui-types.d.ts +2 -2
  58. package/dist/zcode-db-paths.cjs +9 -2
  59. package/dist/zcode-db-paths.d.cts +11 -1
  60. package/dist/zcode-db-paths.d.ts +11 -1
  61. package/dist/zcode-db-paths.js +5 -3
  62. package/package.json +2 -2
  63. package/dist/chunk-GSW3DMN6.js +0 -39
  64. package/dist/relay-env.cjs +0 -71
  65. package/dist/relay-env.d.cts +0 -37
  66. package/dist/relay-env.d.ts +0 -37
  67. 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";
@@ -24,8 +13,9 @@ import {
24
13
  } from "./chunk-VE3NVT7K.js";
25
14
  import {
26
15
  ZCODE_HOST_DB_SUFFIX,
27
- ZCODE_ISOLATED_DB_SEGMENTS
28
- } from "./chunk-CT3FEBDO.js";
16
+ ZCODE_ISOLATED_DB_SEGMENTS,
17
+ ZCODE_PI_SYNCED_PROVIDER_CONFIG_SEGMENTS
18
+ } from "./chunk-QOFFM5YW.js";
29
19
  import {
30
20
  TAIJI_DATA_DIR_ENV,
31
21
  resetDataDirWarnForTests,
@@ -51,22 +41,23 @@ import {
51
41
  ENGINE_ENV_PREFIXES,
52
42
  buildEngineChildEnv,
53
43
  buildOutboundChildEnv
54
- } from "./chunk-AF2ETADP.js";
44
+ } from "./chunk-2L3I2TWJ.js";
55
45
  import {
56
46
  DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS,
57
47
  ENGINE_ABORT_KILL_GRACE_MS,
58
48
  ENGINE_HOST_REQUEST_TIMEOUT_ENV,
59
49
  armEngineSelfDestruct,
50
+ killOwnProcessGroup,
60
51
  pumpNdjsonLines,
61
52
  spawnEngineChild
62
- } from "./chunk-HSNDUHFH.js";
53
+ } from "./chunk-3MCOZY3Z.js";
63
54
  import {
64
55
  ENGINE_NODE_ENV,
65
56
  hostKindOf,
66
57
  probeNodeExecutor,
67
58
  resetEngineNodeProbeCache,
68
59
  resolveEngineNodeLaunch
69
- } from "./chunk-NTOLHLCL.js";
60
+ } from "./chunk-QGXILDWB.js";
70
61
  import {
71
62
  DEFAULT_STDERR_KEEP_DAYS,
72
63
  DEFAULT_STDERR_MAX_BYTES,
@@ -85,14 +76,19 @@ import {
85
76
  PROTOCOL_METHODS,
86
77
  REVERSE_CHANNELS,
87
78
  REVERSE_CHANNEL_TIMEOUT_CLASS,
79
+ SUBAGENT_CONTROL_CLOSED_REASONS,
80
+ SUBAGENT_CONTROL_FRAME_KINDS,
81
+ SUBAGENT_CONTROL_PROTOCOL_VERSION,
88
82
  errorResponseFrameSchema,
83
+ isSubagentControlClosedReason,
84
+ isSubagentControlFrameKind,
89
85
  notificationFrameSchema,
90
86
  protocolErrorSchema,
91
87
  requestFrameSchema,
92
88
  reverseRequestFrameSchema,
93
89
  runSessionParamsSchema,
94
90
  successResponseFrameSchema
95
- } from "./chunk-LM7P7OTA.js";
91
+ } from "./chunk-QBXDEF4N.js";
96
92
  import {
97
93
  isNotificationFrame,
98
94
  isRequestFrame,
@@ -121,7 +117,7 @@ import {
121
117
  probePidAlive,
122
118
  safeKill,
123
119
  synthesizeTimeoutOutcome
124
- } from "./chunk-CNCFMPEH.js";
120
+ } from "./chunk-TJMS3YOR.js";
125
121
  import {
126
122
  toErrorMessage
127
123
  } from "./chunk-PYO3YR7W.js";
@@ -130,7 +126,11 @@ import {
130
126
  ENGINE_ERROR_CODE_PREFIX,
131
127
  ENGINE_PROTOCOL_ERROR_CODES,
132
128
  ENGINE_PROTOCOL_VERSION,
129
+ ENGINE_SPAWN_DELIVERY_ERROR_CODES,
130
+ ENGINE_SPAWN_DELIVERY_ERROR_RECOVERY,
133
131
  ENGINE_TIMEOUT_RECOVERY,
132
+ ENGINE_TRANSPORT_ERROR_CODES,
133
+ ENGINE_TRANSPORT_ERROR_RECOVERY,
134
134
  EngineSdkError,
135
135
  HANDSHAKE_TIMEOUT_MS,
136
136
  REVERSE_REQUEST_TIMEOUT_MS,
@@ -150,7 +150,7 @@ import {
150
150
  isEngineProtocolErrorCode,
151
151
  isProtocolVersionCompatible,
152
152
  schemaEmulationFailedDetail
153
- } from "./chunk-JZN76I3S.js";
153
+ } from "./chunk-NVF3PADP.js";
154
154
  import {
155
155
  configureLoggerSink,
156
156
  getLogger,
@@ -163,7 +163,7 @@ import {
163
163
  sessionIdFromHandle,
164
164
  toReplayedTurn,
165
165
  updateFromEvent
166
- } from "./chunk-SGAIDL63.js";
166
+ } from "./chunk-YFSNX3N3.js";
167
167
  import "./chunk-JSBRDJBE.js";
168
168
 
169
169
  // src/identity-env.ts
@@ -193,37 +193,19 @@ var SUBAGENT_IDENTITY_ENV = {
193
193
  /** worktree 隔离标志("true" = 是)。 */
194
194
  worktree: "PI_SUBAGENT_WORKTREE"
195
195
  };
196
+ var PI_SUBAGENT_TASK_MAX_CHARS = 2e3;
196
197
 
197
- // src/relay-frames.ts
198
- var RELAY_FRAME_KINDS = {
199
- handshake: "handshake",
200
- accept: "accept",
201
- reject: "reject",
202
- data: "data",
203
- exit: "exit",
204
- /**
205
- * goodbye(代理 → runtime,v1):代理被宿主终止(SIGTERM/SIGINT)前的预告帧——
206
- * 宿主侧的正常收割(agent_settled 后杀代理)与异常断连(宿主崩溃/主 pi 死)在
207
- * runtime 侧都表现为 socket close,无法区分;goodbye 让正常收割显式自报,runtime
208
- * 据此把后续 close 的日志从 warn(kill-on-disconnect)降级为 info(reaped,正常
209
- * teardown)。kill 行为本身不变(预告后 child 仍由 runtime 收割)。
210
- */
211
- goodbye: "goodbye"
212
- };
213
- var RELAY_FRAME_DIRS = {
214
- down: "down",
215
- up: "up",
216
- upStderr: "up-stderr"
217
- };
218
- var RELAY_REJECT_REASONS = {
219
- version: "version",
220
- identity: "identity",
221
- duplicate: "duplicate",
222
- malformed: "malformed"
223
- };
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
+ }
224
204
  export {
225
205
  AGENT_EVENT_TYPE_NAMES,
226
206
  CANCEL_SETTLE_GRACE_MS,
207
+ CONTROL_ENV_ROOT_SESSION_ID,
208
+ CONTROL_ENV_SOCKET,
227
209
  DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS,
228
210
  DEFAULT_KILL_GRACE_MS,
229
211
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
@@ -239,7 +221,11 @@ export {
239
221
  ENGINE_PROTOCOL_ERROR_CODES,
240
222
  ENGINE_PROTOCOL_SCHEMAS,
241
223
  ENGINE_PROTOCOL_VERSION,
224
+ ENGINE_SPAWN_DELIVERY_ERROR_CODES,
225
+ ENGINE_SPAWN_DELIVERY_ERROR_RECOVERY,
242
226
  ENGINE_TIMEOUT_RECOVERY,
227
+ ENGINE_TRANSPORT_ERROR_CODES,
228
+ ENGINE_TRANSPORT_ERROR_RECOVERY,
243
229
  EngineSdkError,
244
230
  ExecutionNestingContext,
245
231
  FORBIDDEN_CREDENTIAL_KEY_FRAGMENTS,
@@ -247,17 +233,8 @@ export {
247
233
  HOST_TIMEOUT_ABORT_REASON,
248
234
  NESTED_SPAWN_ENV,
249
235
  NestedSpawnRejectedError,
236
+ PI_SUBAGENT_TASK_MAX_CHARS,
250
237
  PROTOCOL_METHODS,
251
- RELAY_ENV_NODE,
252
- RELAY_ENV_RECORD_ID,
253
- RELAY_ENV_SCRIPT,
254
- RELAY_ENV_SESSION_ID,
255
- RELAY_ENV_SOCKET,
256
- RELAY_EXIT_CODES,
257
- RELAY_FRAME_DIRS,
258
- RELAY_FRAME_KINDS,
259
- RELAY_PROTOCOL_VERSION,
260
- RELAY_REJECT_REASONS,
261
238
  REVERSE_CHANNELS,
262
239
  REVERSE_CHANNEL_TIMEOUT_CLASS,
263
240
  REVERSE_REQUEST_TIMEOUT_MS,
@@ -269,11 +246,15 @@ export {
269
246
  SHARED_POOL_KEY,
270
247
  STDERR_TAIL_CHARS,
271
248
  STDOUT_TAIL_ECHO_CHARS,
249
+ SUBAGENT_CONTROL_CLOSED_REASONS,
250
+ SUBAGENT_CONTROL_FRAME_KINDS,
251
+ SUBAGENT_CONTROL_PROTOCOL_VERSION,
272
252
  SUBAGENT_IDENTITY_ENV,
273
253
  SUPPORTED_PROTOCOL_RANGE,
274
254
  TAIJI_DATA_DIR_ENV,
275
255
  ZCODE_HOST_DB_SUFFIX,
276
256
  ZCODE_ISOLATED_DB_SEGMENTS,
257
+ ZCODE_PI_SYNCED_PROVIDER_CONFIG_SEGMENTS,
277
258
  abortWithFallback,
278
259
  aggregateUsage,
279
260
  armEngineSelfDestruct,
@@ -298,17 +279,20 @@ export {
298
279
  extractAndValidateStructuredOutput,
299
280
  getLogger,
300
281
  hostKindOf,
282
+ isControlEnvActive,
301
283
  isEngineErrorPassthroughCode,
302
284
  isEngineProtocolErrorCode,
303
285
  isNotificationFrame,
304
286
  isPidAlive,
305
287
  isProtocolVersionCompatible,
306
- isRelayActive,
307
288
  isRequestFrame,
308
289
  isResponseFrame,
309
290
  isReverseRequestFrame,
291
+ isSubagentControlClosedReason,
292
+ isSubagentControlFrameKind,
310
293
  isUiResponse,
311
294
  killChain,
295
+ killOwnProcessGroup,
312
296
  killPidChain,
313
297
  notificationFrameSchema,
314
298
  parseChannel,
@@ -317,7 +301,6 @@ export {
317
301
  probePidAlive,
318
302
  protocolErrorSchema,
319
303
  pumpNdjsonLines,
320
- readRelayForwardEnv,
321
304
  replayJournal,
322
305
  requestFrameSchema,
323
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,