@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.
- package/dist/{chunk-AF2ETADP.js → chunk-2L3I2TWJ.js} +5 -10
- package/dist/{chunk-HSNDUHFH.js → chunk-3MCOZY3Z.js} +32 -4
- package/dist/{chunk-JZN76I3S.js → chunk-NVF3PADP.js} +29 -1
- package/dist/{chunk-LM7P7OTA.js → chunk-QBXDEF4N.js} +35 -3
- package/dist/{chunk-NTOLHLCL.js → chunk-QGXILDWB.js} +1 -1
- package/dist/{chunk-CNCFMPEH.js → chunk-TJMS3YOR.js} +1 -1
- package/dist/{chunk-SGAIDL63.js → chunk-YFSNX3N3.js} +2 -2
- package/dist/cli-entry.d.cts +1 -1
- package/dist/cli-entry.d.ts +1 -1
- package/dist/{contract-types-jSa1g28F.d.cts → contract-types-BUHUMF9R.d.cts} +17 -17
- package/dist/{contract-types-jSa1g28F.d.ts → contract-types-BUHUMF9R.d.ts} +17 -17
- package/dist/env.cjs +5 -10
- package/dist/env.d.cts +6 -17
- package/dist/env.d.ts +6 -17
- package/dist/env.js +1 -1
- package/dist/{error-codes-f-UO4a8D.d.cts → error-codes-D_aPibUt.d.cts} +42 -6
- package/dist/{error-codes-DnFru4L4.d.ts → error-codes-DrNf0gwT.d.ts} +42 -6
- package/dist/index.cjs +126 -97
- package/dist/index.d.cts +28 -40
- package/dist/index.d.ts +28 -40
- package/dist/index.js +38 -57
- package/dist/journal-io.d.cts +1 -1
- package/dist/journal-io.d.ts +1 -1
- package/dist/journal-replay.cjs +2 -2
- package/dist/journal-replay.d.cts +4 -4
- package/dist/journal-replay.d.ts +4 -4
- package/dist/journal-replay.js +1 -1
- package/dist/kill-chain.d.cts +5 -5
- package/dist/kill-chain.d.ts +5 -5
- package/dist/kill-chain.js +2 -2
- package/dist/logger.d.cts +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logs/stderr-rotation.d.cts +4 -4
- package/dist/logs/stderr-rotation.d.ts +4 -4
- package/dist/{methods-C2zvZqhP.d.ts → methods-BdIH3FwS.d.ts} +5 -5
- package/dist/{methods-BLxg4ZFr.d.cts → methods-CHiDwvRK.d.cts} +5 -5
- package/dist/node-executor.cjs +1 -1
- package/dist/node-executor.d.cts +4 -4
- package/dist/node-executor.d.ts +4 -4
- package/dist/node-executor.js +2 -2
- package/dist/port-contract.d.cts +9 -9
- package/dist/port-contract.d.ts +9 -9
- package/dist/protocol/index.cjs +73 -4
- package/dist/protocol/index.d.cts +57 -14
- package/dist/protocol/index.d.ts +57 -14
- package/dist/protocol/index.js +20 -2
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.cts +10 -10
- package/dist/server/index.d.ts +10 -10
- package/dist/server/index.js +1 -1
- package/dist/spawn.cjs +32 -3
- package/dist/spawn.d.cts +34 -8
- package/dist/spawn.d.ts +34 -8
- package/dist/spawn.js +5 -3
- package/dist/ui-types.d.cts +2 -2
- package/dist/ui-types.d.ts +2 -2
- package/package.json +2 -2
- package/dist/chunk-GSW3DMN6.js +0 -39
- package/dist/relay-env.cjs +0 -71
- package/dist/relay-env.d.cts +0 -37
- package/dist/relay-env.d.ts +0 -37
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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/
|
|
199
|
-
var
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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,
|
package/dist/journal-io.d.cts
CHANGED
package/dist/journal-io.d.ts
CHANGED
package/dist/journal-replay.cjs
CHANGED
|
@@ -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
|
|
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
|
|
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-
|
|
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
|
|
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
|
|
21
|
-
*
|
|
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 条目用)
|
package/dist/journal-replay.d.ts
CHANGED
|
@@ -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-
|
|
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
|
|
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
|
|
21
|
-
*
|
|
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 条目用)
|
package/dist/journal-replay.js
CHANGED
package/dist/kill-chain.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as AgentCallOpts, c as AgentOutcome } from './contract-types-
|
|
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
|
|
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
|
|
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 的
|
package/dist/kill-chain.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as AgentCallOpts, c as AgentOutcome } from './contract-types-
|
|
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
|
|
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
|
|
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 的
|
package/dist/kill-chain.js
CHANGED
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
probePidAlive,
|
|
9
9
|
safeKill,
|
|
10
10
|
synthesizeTimeoutOutcome
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TJMS3YOR.js";
|
|
12
12
|
import "./chunk-PYO3YR7W.js";
|
|
13
|
-
import "./chunk-
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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-
|
|
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 引擎
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
/** 数组 =
|
|
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-
|
|
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 引擎
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
/** 数组 =
|
|
150
|
+
/** 数组 = 有枚举;null = 无枚举情形(buildCoreAlignedHint 语义,与 manifest 省略对齐)。 */
|
|
151
151
|
models: ModelCatalogEntry[] | null;
|
|
152
152
|
}
|
|
153
153
|
interface ValidateModelParams {
|
package/dist/node-executor.cjs
CHANGED
|
@@ -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
|
}
|
package/dist/node-executor.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/** L0 注入的引擎执行器路径 env
|
|
1
|
+
/** L0 注入的引擎执行器路径 env。 */
|
|
2
2
|
declare const ENGINE_NODE_ENV = "TAIJI_AGENT_ENGINE_NODE";
|
|
3
3
|
/**
|
|
4
|
-
* 探针:验证执行器能以纯 node 语义执行 JS
|
|
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
|
-
/**
|
|
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,探针先行);
|
package/dist/node-executor.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/** L0 注入的引擎执行器路径 env
|
|
1
|
+
/** L0 注入的引擎执行器路径 env。 */
|
|
2
2
|
declare const ENGINE_NODE_ENV = "TAIJI_AGENT_ENGINE_NODE";
|
|
3
3
|
/**
|
|
4
|
-
* 探针:验证执行器能以纯 node 语义执行 JS
|
|
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
|
-
/**
|
|
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,探针先行);
|
package/dist/node-executor.js
CHANGED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
probeNodeExecutor,
|
|
5
5
|
resetEngineNodeProbeCache,
|
|
6
6
|
resolveEngineNodeLaunch
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-QGXILDWB.js";
|
|
8
|
+
import "./chunk-NVF3PADP.js";
|
|
9
9
|
import "./chunk-JSBRDJBE.js";
|
|
10
10
|
export {
|
|
11
11
|
ENGINE_NODE_ENV,
|