@zhushanwen/subagent-engine-sdk 0.6.1 → 0.7.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 (38) hide show
  1. package/dist/best-effort.d.cts +1 -1
  2. package/dist/best-effort.d.ts +1 -1
  3. package/dist/{chunk-W3BKI2BP.js → chunk-3WC36CHI.js} +1 -1
  4. package/dist/{chunk-CNQTJJF5.js → chunk-HERD6RIR.js} +12 -1
  5. package/dist/{chunk-QOEXD2FT.js → chunk-RCT7L777.js} +36 -1
  6. package/dist/{chunk-WMDMXP2F.js → chunk-SFNTX7Q3.js} +0 -4
  7. package/dist/{chunk-AIG5LSGK.js → chunk-SGAIDL63.js} +5 -0
  8. package/dist/{chunk-63ZNJHM5.js → chunk-W23PAAGX.js} +3 -1
  9. package/dist/{contract-types-DaULkdpG.d.cts → contract-types-DiWyGRXr.d.cts} +78 -13
  10. package/dist/{contract-types-DaULkdpG.d.ts → contract-types-DiWyGRXr.d.ts} +78 -13
  11. package/dist/index.cjs +89 -8
  12. package/dist/index.d.cts +39 -5
  13. package/dist/index.d.ts +39 -5
  14. package/dist/index.js +45 -10
  15. package/dist/journal-io.d.cts +1 -1
  16. package/dist/journal-io.d.ts +1 -1
  17. package/dist/journal-replay.cjs +5 -0
  18. package/dist/journal-replay.d.cts +1 -1
  19. package/dist/journal-replay.d.ts +1 -1
  20. package/dist/journal-replay.js +1 -1
  21. package/dist/kill-chain.cjs +38 -2
  22. package/dist/kill-chain.d.cts +38 -3
  23. package/dist/kill-chain.d.ts +38 -3
  24. package/dist/kill-chain.js +8 -5
  25. package/dist/node-executor.js +2 -2
  26. package/dist/port-contract.d.cts +9 -4
  27. package/dist/port-contract.d.ts +9 -4
  28. package/dist/protocol/index.cjs +3 -7
  29. package/dist/protocol/index.d.cts +132 -12
  30. package/dist/protocol/index.d.ts +132 -12
  31. package/dist/protocol/index.js +2 -6
  32. package/dist/spawn.cjs +81 -5
  33. package/dist/spawn.d.cts +13 -2
  34. package/dist/spawn.d.ts +13 -2
  35. package/dist/spawn.js +6 -1
  36. package/package.json +1 -1
  37. package/dist/error-codes-C9BOUI5H.d.ts +0 -118
  38. package/dist/error-codes-CFTOAxva.d.cts +0 -118
package/dist/index.cjs CHANGED
@@ -6581,12 +6581,11 @@ __export(src_exports, {
6581
6581
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS: () => DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
6582
6582
  DEFAULT_STDERR_KEEP_DAYS: () => DEFAULT_STDERR_KEEP_DAYS,
6583
6583
  DEFAULT_STDERR_MAX_BYTES: () => DEFAULT_STDERR_MAX_BYTES,
6584
+ ENGINE_ABORT_KILL_GRACE_MS: () => ENGINE_ABORT_KILL_GRACE_MS,
6584
6585
  ENGINE_ENV_DENY_LIST: () => ENGINE_ENV_DENY_LIST,
6585
6586
  ENGINE_ENV_L0_INFRA_KEYS: () => ENGINE_ENV_L0_INFRA_KEYS,
6586
6587
  ENGINE_ENV_PREFIXES: () => ENGINE_ENV_PREFIXES,
6587
6588
  ENGINE_ERROR_CODE_PREFIX: () => ENGINE_ERROR_CODE_PREFIX,
6588
- ENGINE_EVENT_COALESCE_DEFAULT: () => ENGINE_EVENT_COALESCE_DEFAULT,
6589
- ENGINE_EVENT_COALESCE_ENV: () => ENGINE_EVENT_COALESCE_ENV,
6590
6589
  ENGINE_HOST_REQUEST_TIMEOUT_ENV: () => ENGINE_HOST_REQUEST_TIMEOUT_ENV,
6591
6590
  ENGINE_NODE_ENV: () => ENGINE_NODE_ENV,
6592
6591
  ENGINE_PROTOCOL_ERROR_CODES: () => ENGINE_PROTOCOL_ERROR_CODES,
@@ -6607,7 +6606,10 @@ __export(src_exports, {
6607
6606
  RELAY_ENV_SESSION_ID: () => RELAY_ENV_SESSION_ID,
6608
6607
  RELAY_ENV_SOCKET: () => RELAY_ENV_SOCKET,
6609
6608
  RELAY_EXIT_CODES: () => RELAY_EXIT_CODES,
6609
+ RELAY_FRAME_DIRS: () => RELAY_FRAME_DIRS,
6610
+ RELAY_FRAME_KINDS: () => RELAY_FRAME_KINDS,
6610
6611
  RELAY_PROTOCOL_VERSION: () => RELAY_PROTOCOL_VERSION,
6612
+ RELAY_REJECT_REASONS: () => RELAY_REJECT_REASONS,
6611
6613
  REVERSE_CHANNELS: () => REVERSE_CHANNELS,
6612
6614
  REVERSE_CHANNEL_TIMEOUT_CLASS: () => REVERSE_CHANNEL_TIMEOUT_CLASS,
6613
6615
  REVERSE_REQUEST_TIMEOUT_MS: () => REVERSE_REQUEST_TIMEOUT_MS,
@@ -6653,10 +6655,12 @@ __export(src_exports, {
6653
6655
  isReverseRequestFrame: () => isReverseRequestFrame,
6654
6656
  isUiResponse: () => isUiResponse,
6655
6657
  killChain: () => killChain,
6658
+ killPidChain: () => killPidChain,
6656
6659
  notificationFrameSchema: () => notificationFrameSchema,
6657
6660
  parseChannel: () => parseChannel,
6658
6661
  parseCtxModel: () => parseCtxModel,
6659
6662
  probeNodeExecutor: () => probeNodeExecutor,
6663
+ probePidAlive: () => probePidAlive,
6660
6664
  protocolErrorSchema: () => protocolErrorSchema,
6661
6665
  pumpNdjsonLines: () => pumpNdjsonLines,
6662
6666
  readRelayForwardEnv: () => readRelayForwardEnv,
@@ -6675,6 +6679,7 @@ __export(src_exports, {
6675
6679
  rotateStderrLogIfNeeded: () => rotateStderrLogIfNeeded,
6676
6680
  runEngineCliEntry: () => runEngineCliEntry,
6677
6681
  runSessionParamsSchema: () => runSessionParamsSchema,
6682
+ safeKill: () => safeKill,
6678
6683
  sanitizeSeg: () => sanitizeSeg,
6679
6684
  schemaEmulationFailedDetail: () => schemaEmulationFailedDetail,
6680
6685
  sessionIdFromHandle: () => sessionIdFromHandle,
@@ -6709,8 +6714,6 @@ var CRASH_REBUILD_BACKOFF_MS = [
6709
6714
  CRASH_REBUILD_BACKOFF_STEP_3_MS
6710
6715
  ];
6711
6716
  var STDERR_TAIL_CHARS = 400;
6712
- var ENGINE_EVENT_COALESCE_ENV = "TAIJI_ENGINE_EVENT_COALESCE";
6713
- var ENGINE_EVENT_COALESCE_DEFAULT = "0";
6714
6717
 
6715
6718
  // src/protocol/frames.ts
6716
6719
  function isRecord(v) {
@@ -6856,8 +6859,10 @@ var AGENT_EVENT_TYPE_NAMES = [
6856
6859
  // noop-safe: 事件无载荷且现行 reducer 即直接 return——丢弃与处理零差异
6857
6860
  "activity",
6858
6861
  // noop-safe: 纯活性信号,双侧 reducer 恒 no-op(协议语义见 AgentEvent 头注),丢弃零差异
6859
- "error"
6862
+ "error",
6860
6863
  // noop-safe: 旧宿主 default 分支零写入——丢弃仅缺 lastError 诊断留痕,已写状态不回滚
6864
+ "armed"
6865
+ // noop-safe: 旧宿主无武装等待窗消费点(fail-fast 属宿主新增逻辑),丢弃仅缺武装留痕,schema 强制第一道防线(引擎自查断言)不受损
6861
6866
  ];
6862
6867
 
6863
6868
  // src/protocol/schema.ts
@@ -7243,6 +7248,38 @@ function safeKill(child, signal) {
7243
7248
  );
7244
7249
  }
7245
7250
  }
7251
+ function probePidAlive(pid) {
7252
+ try {
7253
+ process.kill(pid, 0);
7254
+ return true;
7255
+ } catch (err) {
7256
+ if (err.code === "ESRCH") return false;
7257
+ return void 0;
7258
+ }
7259
+ }
7260
+ function killPidChain(pid, opts = {}) {
7261
+ const graceMs = opts.graceMs ?? DEFAULT_KILL_GRACE_MS;
7262
+ signalPid(pid, "SIGTERM");
7263
+ const escalation = setTimeout(() => {
7264
+ if (probePidAlive(pid) === false) return;
7265
+ if (opts.note !== void 0) {
7266
+ logger.warn(
7267
+ `[kill-chain] ${opts.note} still alive ${graceMs / MS_PER_SECOND}s after SIGTERM, escalating to SIGKILL (pid ${pid})`
7268
+ );
7269
+ }
7270
+ signalPid(pid, "SIGKILL");
7271
+ }, graceMs);
7272
+ if (typeof escalation.unref === "function") escalation.unref();
7273
+ }
7274
+ function signalPid(pid, signal) {
7275
+ try {
7276
+ process.kill(pid, signal);
7277
+ } catch (err) {
7278
+ logger.debug(
7279
+ `[kill-chain] ${signal} to pid ${pid} failed (already dead = expected): ${toErrorMessage(err)}`
7280
+ );
7281
+ }
7282
+ }
7246
7283
  function synthesizeTimeoutOutcome(task, stdoutTail, engineId) {
7247
7284
  return {
7248
7285
  content: "",
@@ -7491,6 +7528,11 @@ function updateFromEvent(record, event) {
7491
7528
  // ── activity:纯活性信号,reducer no-op(协议语义见 contract-types)──
7492
7529
  case "activity":
7493
7530
  return;
7531
+ // ── armed:武装确认回执([D3 协议版 P6],协议语义见 contract-types)——监控
7532
+ // 信号不进 record 投影,消费方 = 宿主等待门 + run 事件 journal(C3 第④步
7533
+ // 双侧 reducer no-op 义务的 SDK 侧)
7534
+ case "armed":
7535
+ return;
7494
7536
  default: {
7495
7537
  const _exhaustive = event;
7496
7538
  return _exhaustive;
@@ -7824,6 +7866,7 @@ function buildOutboundChildEnv(opts) {
7824
7866
  // src/spawn.ts
7825
7867
  var import_node_child_process = require("child_process");
7826
7868
  var logger4 = getLogger("engine-sdk/spawn");
7869
+ var ENGINE_ABORT_KILL_GRACE_MS = 3e4;
7827
7870
  var FORBIDDEN_OPTION_KEYS = ["detached", "stdio", "stdin", "windowsHide"];
7828
7871
  function spawnEngineChild(opts) {
7829
7872
  for (const key of FORBIDDEN_OPTION_KEYS) {
@@ -7844,7 +7887,12 @@ function spawnEngineChild(opts) {
7844
7887
  opts.signal.addEventListener(
7845
7888
  "abort",
7846
7889
  () => {
7847
- child.kill("SIGTERM");
7890
+ safeKill(child, "SIGCONT");
7891
+ void killChain(child, {
7892
+ graceMs: ENGINE_ABORT_KILL_GRACE_MS,
7893
+ unrefTimers: true,
7894
+ escalationNote: `engine child (pid ${child.pid ?? "unknown"}) abort`
7895
+ });
7848
7896
  },
7849
7897
  { once: true }
7850
7898
  );
@@ -8192,6 +8240,34 @@ function readRelayForwardEnv(env) {
8192
8240
  return { socket, node, script };
8193
8241
  }
8194
8242
 
8243
+ // src/relay-frames.ts
8244
+ var RELAY_FRAME_KINDS = {
8245
+ handshake: "handshake",
8246
+ accept: "accept",
8247
+ reject: "reject",
8248
+ data: "data",
8249
+ exit: "exit",
8250
+ /**
8251
+ * goodbye(代理 → runtime,v1):代理被宿主终止(SIGTERM/SIGINT)前的预告帧——
8252
+ * 宿主侧的正常收割(agent_settled 后杀代理)与异常断连(宿主崩溃/主 pi 死)在
8253
+ * runtime 侧都表现为 socket close,无法区分;goodbye 让正常收割显式自报,runtime
8254
+ * 据此把后续 close 的日志从 warn(kill-on-disconnect)降级为 info(reaped,正常
8255
+ * teardown)。kill 行为本身不变(预告后 child 仍由 runtime 收割)。
8256
+ */
8257
+ goodbye: "goodbye"
8258
+ };
8259
+ var RELAY_FRAME_DIRS = {
8260
+ down: "down",
8261
+ up: "up",
8262
+ upStderr: "up-stderr"
8263
+ };
8264
+ var RELAY_REJECT_REASONS = {
8265
+ version: "version",
8266
+ identity: "identity",
8267
+ duplicate: "duplicate",
8268
+ malformed: "malformed"
8269
+ };
8270
+
8195
8271
  // src/best-effort.ts
8196
8272
  var logger5 = getLogger("subagents");
8197
8273
  function bestEffort(err, context, level = "debug") {
@@ -8298,12 +8374,11 @@ function runEngineCliEntry(opts) {
8298
8374
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
8299
8375
  DEFAULT_STDERR_KEEP_DAYS,
8300
8376
  DEFAULT_STDERR_MAX_BYTES,
8377
+ ENGINE_ABORT_KILL_GRACE_MS,
8301
8378
  ENGINE_ENV_DENY_LIST,
8302
8379
  ENGINE_ENV_L0_INFRA_KEYS,
8303
8380
  ENGINE_ENV_PREFIXES,
8304
8381
  ENGINE_ERROR_CODE_PREFIX,
8305
- ENGINE_EVENT_COALESCE_DEFAULT,
8306
- ENGINE_EVENT_COALESCE_ENV,
8307
8382
  ENGINE_HOST_REQUEST_TIMEOUT_ENV,
8308
8383
  ENGINE_NODE_ENV,
8309
8384
  ENGINE_PROTOCOL_ERROR_CODES,
@@ -8324,7 +8399,10 @@ function runEngineCliEntry(opts) {
8324
8399
  RELAY_ENV_SESSION_ID,
8325
8400
  RELAY_ENV_SOCKET,
8326
8401
  RELAY_EXIT_CODES,
8402
+ RELAY_FRAME_DIRS,
8403
+ RELAY_FRAME_KINDS,
8327
8404
  RELAY_PROTOCOL_VERSION,
8405
+ RELAY_REJECT_REASONS,
8328
8406
  REVERSE_CHANNELS,
8329
8407
  REVERSE_CHANNEL_TIMEOUT_CLASS,
8330
8408
  REVERSE_REQUEST_TIMEOUT_MS,
@@ -8370,10 +8448,12 @@ function runEngineCliEntry(opts) {
8370
8448
  isReverseRequestFrame,
8371
8449
  isUiResponse,
8372
8450
  killChain,
8451
+ killPidChain,
8373
8452
  notificationFrameSchema,
8374
8453
  parseChannel,
8375
8454
  parseCtxModel,
8376
8455
  probeNodeExecutor,
8456
+ probePidAlive,
8377
8457
  protocolErrorSchema,
8378
8458
  pumpNdjsonLines,
8379
8459
  readRelayForwardEnv,
@@ -8392,6 +8472,7 @@ function runEngineCliEntry(opts) {
8392
8472
  rotateStderrLogIfNeeded,
8393
8473
  runEngineCliEntry,
8394
8474
  runSessionParamsSchema,
8475
+ safeKill,
8395
8476
  sanitizeSeg,
8396
8477
  schemaEmulationFailedDetail,
8397
8478
  sessionIdFromHandle,
package/dist/index.d.cts CHANGED
@@ -1,17 +1,16 @@
1
- export { CANCEL_SETTLE_GRACE_MS, CRASH_REBUILD_BACKOFF_MS, CRASH_REBUILD_MAX_ATTEMPTS, CancelParams, CancelResult, DisposeParams, DisposeResult, ENGINE_EVENT_COALESCE_DEFAULT, ENGINE_EVENT_COALESCE_ENV, ENGINE_PROTOCOL_SCHEMAS, ENGINE_PROTOCOL_VERSION, FORBIDDEN_CREDENTIAL_KEY_FRAGMENTS, HANDSHAKE_TIMEOUT_MS, HostAskUserParams, HostAskUserResult, HostChildSpawnedParams, HostChildStateChangedParams, HostHandleReadyParams, HostLogParams, HostStreamDeltaParams, InitializeParams, InitializeResult, ListModelsParams, ListModelsResult, PROTOCOL_METHODS, PingParams, PingResult, ProbeParams, ProtocolMethod, ProtocolParamsMap, ProtocolResultMap, REVERSE_CHANNELS, REVERSE_CHANNEL_TIMEOUT_CLASS, REVERSE_REQUEST_TIMEOUT_MS, ReadParams, ReverseChannel, ReverseRequestTimeoutClass, RunContextParams, RunParams, RunResult, RunResumeParams, STDERR_TAIL_CHARS, SUPPORTED_PROTOCOL_RANGE, ValidateModelParams, ValidateModelResult, errorResponseFrameSchema, isProtocolVersionCompatible, notificationFrameSchema, protocolErrorSchema, requestFrameSchema, reverseRequestFrameSchema, runSessionParamsSchema, successResponseFrameSchema } from './protocol/index.cjs';
2
- export { E as ENGINE_ERROR_CODE_PREFIX, a as ENGINE_PROTOCOL_ERROR_CODES, b as ENGINE_TIMEOUT_RECOVERY, c as EngineProtocolErrorCode, d as EngineSdkError, e as ErrorResponseFrame, f as EventNotificationParams, N as NotificationFrame, P as ProtocolError, R as RequestFrame, g as ResponseFrame, h as ReverseRequestFrame, i as ReverseResponseResult, S as STDOUT_TAIL_ECHO_CHARS, j as SuccessResponseFrame, k as assertChatConversationSupported, l as engineConversationUnsupportedError, m as engineProtocolMismatchError, n as engineTimeoutDetail, o as isEngineErrorPassthroughCode, p as isEngineProtocolErrorCode, q as isNotificationFrame, r as isRequestFrame, s as isResponseFrame, t as isReverseRequestFrame, u as schemaEmulationFailedDetail } from './error-codes-CFTOAxva.cjs';
3
- export { A as AGENT_EVENT_TYPE_NAMES, a as AgentCallOpts, b as AgentEvent, c as AgentEventTypeName, d as AgentFailureKind, e as AgentOutcome, f as AgentOutcomeUsage, g as AgentUsage, h as AgentUsageTotal, i as AssertMutuallyAssignable, E as EngineCapabilities, j as EngineHandleData, I as InternalToolCall, M as ModelCatalogEntry, P as ProbeReport, R as ReplayedTurn, k as ResumeAnchor, S as SessionView, T as ToolCall, l as ToolCallEntry, m as ToolCallResult, n as Turn, W as WorktreeHandle } from './contract-types-DaULkdpG.cjs';
1
+ export { CANCEL_SETTLE_GRACE_MS, CRASH_REBUILD_BACKOFF_MS, CRASH_REBUILD_MAX_ATTEMPTS, CancelParams, CancelResult, DisposeParams, DisposeResult, ENGINE_ERROR_CODE_PREFIX, ENGINE_PROTOCOL_ERROR_CODES, ENGINE_PROTOCOL_SCHEMAS, ENGINE_PROTOCOL_VERSION, ENGINE_TIMEOUT_RECOVERY, EngineProtocolErrorCode, EngineSdkError, ErrorResponseFrame, EventNotificationParams, FORBIDDEN_CREDENTIAL_KEY_FRAGMENTS, HANDSHAKE_TIMEOUT_MS, HostAskUserParams, HostAskUserResult, HostChildSpawnedParams, HostChildStateChangedParams, HostHandleReadyParams, HostLogParams, HostStreamDeltaParams, InitializeParams, InitializeResult, ListModelsParams, ListModelsResult, NotificationFrame, PROTOCOL_METHODS, PingParams, PingResult, ProbeParams, ProtocolError, ProtocolMethod, ProtocolParamsMap, ProtocolResultMap, REVERSE_CHANNELS, REVERSE_CHANNEL_TIMEOUT_CLASS, REVERSE_REQUEST_TIMEOUT_MS, ReadParams, RequestFrame, ResponseFrame, ReverseChannel, ReverseRequestFrame, ReverseRequestTimeoutClass, ReverseResponseResult, RunContextParams, RunParams, RunResult, RunResumeParams, STDERR_TAIL_CHARS, STDOUT_TAIL_ECHO_CHARS, SUPPORTED_PROTOCOL_RANGE, SuccessResponseFrame, ValidateModelParams, ValidateModelResult, assertChatConversationSupported, engineConversationUnsupportedError, engineProtocolMismatchError, engineTimeoutDetail, errorResponseFrameSchema, isEngineErrorPassthroughCode, isEngineProtocolErrorCode, isNotificationFrame, isProtocolVersionCompatible, isRequestFrame, isResponseFrame, isReverseRequestFrame, notificationFrameSchema, protocolErrorSchema, requestFrameSchema, reverseRequestFrameSchema, runSessionParamsSchema, schemaEmulationFailedDetail, successResponseFrameSchema } from './protocol/index.cjs';
2
+ export { A as AGENT_EVENT_TYPE_NAMES, a as AgentCallOpts, b as AgentEvent, c as AgentEventTypeName, d as AgentFailureKind, e as AgentOutcome, f as AgentOutcomeUsage, g as AgentUsage, h as AgentUsageTotal, i as AssertMutuallyAssignable, E as EngineCapabilities, j as EngineHandleData, k as EngineProcessModel, I as InternalToolCall, M as ModelCatalogEntry, P as ProbeReport, R as ReplayedTurn, l as ResumeAnchor, S as SessionView, T as ToolCall, m as ToolCallEntry, n as ToolCallResult, o as Turn, W as WorktreeHandle } from './contract-types-DiWyGRXr.cjs';
4
3
  export { SCHEMA_EMULATION_TAIL_CHARS, StructuredOutputResult, buildSchemaEmulationSegment, extractAndValidateStructuredOutput } from './schema-emulation.cjs';
5
4
  export { ExecutionNestingContext, ExecutionNestingState, NESTED_SPAWN_ENV, NestedSpawnRejectedError, SpawnEnv, assertNotNestedSpawn, buildNestedSpawnEnv } from './nesting-guard.cjs';
6
5
  export { CoreLogger, LogLevel, LoggerSink, configureLoggerSink, getLogger, resetLoggerSinkForTests } from './logger.cjs';
7
- export { DEFAULT_KILL_GRACE_MS, DEFAULT_NATIVE_INTERRUPT_GRACE_MS, HOST_TIMEOUT_ABORT_REASON, KillChainOptions, KillableChild, abortWithFallback, killChain, synthesizeTimeoutOutcome } from './kill-chain.cjs';
6
+ export { DEFAULT_KILL_GRACE_MS, DEFAULT_NATIVE_INTERRUPT_GRACE_MS, HOST_TIMEOUT_ABORT_REASON, KillChainOptions, KillableChild, PidChainOptions, abortWithFallback, killChain, killPidChain, probePidAlive, safeKill, synthesizeTimeoutOutcome } from './kill-chain.cjs';
8
7
  export { ReplayRecordView, aggregateUsage, createReplayRecord, eventsToSessionView, sessionIdFromHandle, toReplayedTurn, updateFromEvent } from './journal-replay.cjs';
9
8
  export { TAIJI_DATA_DIR_ENV, resetDataDirWarnForTests, resolveEngineDataDir } from './data-dir.cjs';
10
9
  export { resolveEngineDir, resolveEnginesRoot, resolveJournalPath, resolvePoolDir, sanitizeSeg } from './paths.cjs';
11
10
  export { UiMethod, UiRequest, UiRequestHandler, UiResponse, isUiResponse } from './ui-types.cjs';
12
11
  export { ChannelHandler, ExtensionUiRequestLike, ParsedChannel, UiChannelRegistry, createUiChannelRegistry, parseChannel } from './ui-channels.cjs';
13
12
  export { BuildOutboundChildEnvOptions, ENGINE_ENV_DENY_LIST, ENGINE_ENV_L0_INFRA_KEYS, ENGINE_ENV_PREFIXES, EngineChildEnvOptions, EngineRelayEnv, buildEngineChildEnv, buildOutboundChildEnv } from './env.cjs';
14
- export { DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS, ENGINE_HOST_REQUEST_TIMEOUT_ENV, EngineChildEnv, EngineSelfDestructOptions, ReverseRequestClock, SpawnEngineChildOptions, armEngineSelfDestruct, pumpNdjsonLines, spawnEngineChild } from './spawn.cjs';
13
+ export { DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS, ENGINE_ABORT_KILL_GRACE_MS, ENGINE_HOST_REQUEST_TIMEOUT_ENV, EngineChildEnv, EngineSelfDestructOptions, ReverseRequestClock, SpawnEngineChildOptions, armEngineSelfDestruct, pumpNdjsonLines, spawnEngineChild } from './spawn.cjs';
15
14
  export { ENGINE_NODE_ENV, EngineNodeHostKind, EngineNodeLaunch, EngineNodeLaunchOptions, hostKindOf, probeNodeExecutor, resetEngineNodeProbeCache, resolveEngineNodeLaunch } from './node-executor.cjs';
16
15
  export { CleanupResult, DEFAULT_STDERR_KEEP_DAYS, DEFAULT_STDERR_MAX_BYTES, StderrRotationParams, cleanupSiblingStderrLogs, cleanupStaleStderrLogs, isPidAlive, rotateStderrLogIfNeeded, stderrLogPathFor, stderrLogPidOf, stderrRotationParams } from './logs/stderr-rotation.cjs';
17
16
  export { ZCODE_HOST_DB_SUFFIX, ZCODE_ISOLATED_DB_SEGMENTS } from './zcode-db-paths.cjs';
@@ -22,3 +21,38 @@ export { replayJournal } from './journal-io.cjs';
22
21
  export { EngineAgentCallOpts, EngineCtxModel, EngineHandle, EnginePort, EngineRunResult, EngineStream, RunContext, SHARED_POOL_KEY, parseCtxModel } from './port-contract.cjs';
23
22
  export { CliProtocolServerSink, RunEngineCliEntryOptions, runEngineCliEntry } from './cli-entry.cjs';
24
23
  import 'node:child_process';
24
+
25
+ /** 帧类型判别值(kind 字段词表)。as const 值即字面量类型——类型位置同样可用。 */
26
+ declare const RELAY_FRAME_KINDS: {
27
+ readonly handshake: "handshake";
28
+ readonly accept: "accept";
29
+ readonly reject: "reject";
30
+ readonly data: "data";
31
+ readonly exit: "exit";
32
+ /**
33
+ * goodbye(代理 → runtime,v1):代理被宿主终止(SIGTERM/SIGINT)前的预告帧——
34
+ * 宿主侧的正常收割(agent_settled 后杀代理)与异常断连(宿主崩溃/主 pi 死)在
35
+ * runtime 侧都表现为 socket close,无法区分;goodbye 让正常收割显式自报,runtime
36
+ * 据此把后续 close 的日志从 warn(kill-on-disconnect)降级为 info(reaped,正常
37
+ * teardown)。kill 行为本身不变(预告后 child 仍由 runtime 收割)。
38
+ */
39
+ readonly goodbye: "goodbye";
40
+ };
41
+ /** 数据泵方向(data 帧 dir 字段词表)。 */
42
+ declare const RELAY_FRAME_DIRS: {
43
+ readonly down: "down";
44
+ readonly up: "up";
45
+ readonly upStderr: "up-stderr";
46
+ };
47
+ /** reject 帧 reason 词表(runtime→代理的拒绝理由;代理对 version 以退出码 10 应答)。 */
48
+ declare const RELAY_REJECT_REASONS: {
49
+ readonly version: "version";
50
+ readonly identity: "identity";
51
+ readonly duplicate: "duplicate";
52
+ readonly malformed: "malformed";
53
+ };
54
+ type RelayFrameKind = (typeof RELAY_FRAME_KINDS)[keyof typeof RELAY_FRAME_KINDS];
55
+ type RelayFrameDir = (typeof RELAY_FRAME_DIRS)[keyof typeof RELAY_FRAME_DIRS];
56
+ type RelayRejectReason = (typeof RELAY_REJECT_REASONS)[keyof typeof RELAY_REJECT_REASONS];
57
+
58
+ export { RELAY_FRAME_DIRS, RELAY_FRAME_KINDS, RELAY_REJECT_REASONS, type RelayFrameDir, type RelayFrameKind, type RelayRejectReason };
package/dist/index.d.ts CHANGED
@@ -1,17 +1,16 @@
1
- export { CANCEL_SETTLE_GRACE_MS, CRASH_REBUILD_BACKOFF_MS, CRASH_REBUILD_MAX_ATTEMPTS, CancelParams, CancelResult, DisposeParams, DisposeResult, ENGINE_EVENT_COALESCE_DEFAULT, ENGINE_EVENT_COALESCE_ENV, ENGINE_PROTOCOL_SCHEMAS, ENGINE_PROTOCOL_VERSION, FORBIDDEN_CREDENTIAL_KEY_FRAGMENTS, HANDSHAKE_TIMEOUT_MS, HostAskUserParams, HostAskUserResult, HostChildSpawnedParams, HostChildStateChangedParams, HostHandleReadyParams, HostLogParams, HostStreamDeltaParams, InitializeParams, InitializeResult, ListModelsParams, ListModelsResult, PROTOCOL_METHODS, PingParams, PingResult, ProbeParams, ProtocolMethod, ProtocolParamsMap, ProtocolResultMap, REVERSE_CHANNELS, REVERSE_CHANNEL_TIMEOUT_CLASS, REVERSE_REQUEST_TIMEOUT_MS, ReadParams, ReverseChannel, ReverseRequestTimeoutClass, RunContextParams, RunParams, RunResult, RunResumeParams, STDERR_TAIL_CHARS, SUPPORTED_PROTOCOL_RANGE, ValidateModelParams, ValidateModelResult, errorResponseFrameSchema, isProtocolVersionCompatible, notificationFrameSchema, protocolErrorSchema, requestFrameSchema, reverseRequestFrameSchema, runSessionParamsSchema, successResponseFrameSchema } from './protocol/index.js';
2
- export { E as ENGINE_ERROR_CODE_PREFIX, a as ENGINE_PROTOCOL_ERROR_CODES, b as ENGINE_TIMEOUT_RECOVERY, c as EngineProtocolErrorCode, d as EngineSdkError, e as ErrorResponseFrame, f as EventNotificationParams, N as NotificationFrame, P as ProtocolError, R as RequestFrame, g as ResponseFrame, h as ReverseRequestFrame, i as ReverseResponseResult, S as STDOUT_TAIL_ECHO_CHARS, j as SuccessResponseFrame, k as assertChatConversationSupported, l as engineConversationUnsupportedError, m as engineProtocolMismatchError, n as engineTimeoutDetail, o as isEngineErrorPassthroughCode, p as isEngineProtocolErrorCode, q as isNotificationFrame, r as isRequestFrame, s as isResponseFrame, t as isReverseRequestFrame, u as schemaEmulationFailedDetail } from './error-codes-C9BOUI5H.js';
3
- export { A as AGENT_EVENT_TYPE_NAMES, a as AgentCallOpts, b as AgentEvent, c as AgentEventTypeName, d as AgentFailureKind, e as AgentOutcome, f as AgentOutcomeUsage, g as AgentUsage, h as AgentUsageTotal, i as AssertMutuallyAssignable, E as EngineCapabilities, j as EngineHandleData, I as InternalToolCall, M as ModelCatalogEntry, P as ProbeReport, R as ReplayedTurn, k as ResumeAnchor, S as SessionView, T as ToolCall, l as ToolCallEntry, m as ToolCallResult, n as Turn, W as WorktreeHandle } from './contract-types-DaULkdpG.js';
1
+ export { CANCEL_SETTLE_GRACE_MS, CRASH_REBUILD_BACKOFF_MS, CRASH_REBUILD_MAX_ATTEMPTS, CancelParams, CancelResult, DisposeParams, DisposeResult, ENGINE_ERROR_CODE_PREFIX, ENGINE_PROTOCOL_ERROR_CODES, ENGINE_PROTOCOL_SCHEMAS, ENGINE_PROTOCOL_VERSION, ENGINE_TIMEOUT_RECOVERY, EngineProtocolErrorCode, EngineSdkError, ErrorResponseFrame, EventNotificationParams, FORBIDDEN_CREDENTIAL_KEY_FRAGMENTS, HANDSHAKE_TIMEOUT_MS, HostAskUserParams, HostAskUserResult, HostChildSpawnedParams, HostChildStateChangedParams, HostHandleReadyParams, HostLogParams, HostStreamDeltaParams, InitializeParams, InitializeResult, ListModelsParams, ListModelsResult, NotificationFrame, PROTOCOL_METHODS, PingParams, PingResult, ProbeParams, ProtocolError, ProtocolMethod, ProtocolParamsMap, ProtocolResultMap, REVERSE_CHANNELS, REVERSE_CHANNEL_TIMEOUT_CLASS, REVERSE_REQUEST_TIMEOUT_MS, ReadParams, RequestFrame, ResponseFrame, ReverseChannel, ReverseRequestFrame, ReverseRequestTimeoutClass, ReverseResponseResult, RunContextParams, RunParams, RunResult, RunResumeParams, STDERR_TAIL_CHARS, STDOUT_TAIL_ECHO_CHARS, SUPPORTED_PROTOCOL_RANGE, SuccessResponseFrame, ValidateModelParams, ValidateModelResult, assertChatConversationSupported, engineConversationUnsupportedError, engineProtocolMismatchError, engineTimeoutDetail, errorResponseFrameSchema, isEngineErrorPassthroughCode, isEngineProtocolErrorCode, isNotificationFrame, isProtocolVersionCompatible, isRequestFrame, isResponseFrame, isReverseRequestFrame, notificationFrameSchema, protocolErrorSchema, requestFrameSchema, reverseRequestFrameSchema, runSessionParamsSchema, schemaEmulationFailedDetail, successResponseFrameSchema } from './protocol/index.js';
2
+ export { A as AGENT_EVENT_TYPE_NAMES, a as AgentCallOpts, b as AgentEvent, c as AgentEventTypeName, d as AgentFailureKind, e as AgentOutcome, f as AgentOutcomeUsage, g as AgentUsage, h as AgentUsageTotal, i as AssertMutuallyAssignable, E as EngineCapabilities, j as EngineHandleData, k as EngineProcessModel, I as InternalToolCall, M as ModelCatalogEntry, P as ProbeReport, R as ReplayedTurn, l as ResumeAnchor, S as SessionView, T as ToolCall, m as ToolCallEntry, n as ToolCallResult, o as Turn, W as WorktreeHandle } from './contract-types-DiWyGRXr.js';
4
3
  export { SCHEMA_EMULATION_TAIL_CHARS, StructuredOutputResult, buildSchemaEmulationSegment, extractAndValidateStructuredOutput } from './schema-emulation.js';
5
4
  export { ExecutionNestingContext, ExecutionNestingState, NESTED_SPAWN_ENV, NestedSpawnRejectedError, SpawnEnv, assertNotNestedSpawn, buildNestedSpawnEnv } from './nesting-guard.js';
6
5
  export { CoreLogger, LogLevel, LoggerSink, configureLoggerSink, getLogger, resetLoggerSinkForTests } from './logger.js';
7
- export { DEFAULT_KILL_GRACE_MS, DEFAULT_NATIVE_INTERRUPT_GRACE_MS, HOST_TIMEOUT_ABORT_REASON, KillChainOptions, KillableChild, abortWithFallback, killChain, synthesizeTimeoutOutcome } from './kill-chain.js';
6
+ export { DEFAULT_KILL_GRACE_MS, DEFAULT_NATIVE_INTERRUPT_GRACE_MS, HOST_TIMEOUT_ABORT_REASON, KillChainOptions, KillableChild, PidChainOptions, abortWithFallback, killChain, killPidChain, probePidAlive, safeKill, synthesizeTimeoutOutcome } from './kill-chain.js';
8
7
  export { ReplayRecordView, aggregateUsage, createReplayRecord, eventsToSessionView, sessionIdFromHandle, toReplayedTurn, updateFromEvent } from './journal-replay.js';
9
8
  export { TAIJI_DATA_DIR_ENV, resetDataDirWarnForTests, resolveEngineDataDir } from './data-dir.js';
10
9
  export { resolveEngineDir, resolveEnginesRoot, resolveJournalPath, resolvePoolDir, sanitizeSeg } from './paths.js';
11
10
  export { UiMethod, UiRequest, UiRequestHandler, UiResponse, isUiResponse } from './ui-types.js';
12
11
  export { ChannelHandler, ExtensionUiRequestLike, ParsedChannel, UiChannelRegistry, createUiChannelRegistry, parseChannel } from './ui-channels.js';
13
12
  export { BuildOutboundChildEnvOptions, ENGINE_ENV_DENY_LIST, ENGINE_ENV_L0_INFRA_KEYS, ENGINE_ENV_PREFIXES, EngineChildEnvOptions, EngineRelayEnv, buildEngineChildEnv, buildOutboundChildEnv } from './env.js';
14
- export { DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS, ENGINE_HOST_REQUEST_TIMEOUT_ENV, EngineChildEnv, EngineSelfDestructOptions, ReverseRequestClock, SpawnEngineChildOptions, armEngineSelfDestruct, pumpNdjsonLines, spawnEngineChild } from './spawn.js';
13
+ export { DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS, ENGINE_ABORT_KILL_GRACE_MS, ENGINE_HOST_REQUEST_TIMEOUT_ENV, EngineChildEnv, EngineSelfDestructOptions, ReverseRequestClock, SpawnEngineChildOptions, armEngineSelfDestruct, pumpNdjsonLines, spawnEngineChild } from './spawn.js';
15
14
  export { ENGINE_NODE_ENV, EngineNodeHostKind, EngineNodeLaunch, EngineNodeLaunchOptions, hostKindOf, probeNodeExecutor, resetEngineNodeProbeCache, resolveEngineNodeLaunch } from './node-executor.js';
16
15
  export { CleanupResult, DEFAULT_STDERR_KEEP_DAYS, DEFAULT_STDERR_MAX_BYTES, StderrRotationParams, cleanupSiblingStderrLogs, cleanupStaleStderrLogs, isPidAlive, rotateStderrLogIfNeeded, stderrLogPathFor, stderrLogPidOf, stderrRotationParams } from './logs/stderr-rotation.js';
17
16
  export { ZCODE_HOST_DB_SUFFIX, ZCODE_ISOLATED_DB_SEGMENTS } from './zcode-db-paths.js';
@@ -22,3 +21,38 @@ export { replayJournal } from './journal-io.js';
22
21
  export { EngineAgentCallOpts, EngineCtxModel, EngineHandle, EnginePort, EngineRunResult, EngineStream, RunContext, SHARED_POOL_KEY, parseCtxModel } from './port-contract.js';
23
22
  export { CliProtocolServerSink, RunEngineCliEntryOptions, runEngineCliEntry } from './cli-entry.js';
24
23
  import 'node:child_process';
24
+
25
+ /** 帧类型判别值(kind 字段词表)。as const 值即字面量类型——类型位置同样可用。 */
26
+ declare const RELAY_FRAME_KINDS: {
27
+ readonly handshake: "handshake";
28
+ readonly accept: "accept";
29
+ readonly reject: "reject";
30
+ readonly data: "data";
31
+ readonly exit: "exit";
32
+ /**
33
+ * goodbye(代理 → runtime,v1):代理被宿主终止(SIGTERM/SIGINT)前的预告帧——
34
+ * 宿主侧的正常收割(agent_settled 后杀代理)与异常断连(宿主崩溃/主 pi 死)在
35
+ * runtime 侧都表现为 socket close,无法区分;goodbye 让正常收割显式自报,runtime
36
+ * 据此把后续 close 的日志从 warn(kill-on-disconnect)降级为 info(reaped,正常
37
+ * teardown)。kill 行为本身不变(预告后 child 仍由 runtime 收割)。
38
+ */
39
+ readonly goodbye: "goodbye";
40
+ };
41
+ /** 数据泵方向(data 帧 dir 字段词表)。 */
42
+ declare const RELAY_FRAME_DIRS: {
43
+ readonly down: "down";
44
+ readonly up: "up";
45
+ readonly upStderr: "up-stderr";
46
+ };
47
+ /** reject 帧 reason 词表(runtime→代理的拒绝理由;代理对 version 以退出码 10 应答)。 */
48
+ declare const RELAY_REJECT_REASONS: {
49
+ readonly version: "version";
50
+ readonly identity: "identity";
51
+ readonly duplicate: "duplicate";
52
+ readonly malformed: "malformed";
53
+ };
54
+ type RelayFrameKind = (typeof RELAY_FRAME_KINDS)[keyof typeof RELAY_FRAME_KINDS];
55
+ type RelayFrameDir = (typeof RELAY_FRAME_DIRS)[keyof typeof RELAY_FRAME_DIRS];
56
+ type RelayRejectReason = (typeof RELAY_REJECT_REASONS)[keyof typeof RELAY_REJECT_REASONS];
57
+
58
+ export { RELAY_FRAME_DIRS, RELAY_FRAME_KINDS, RELAY_REJECT_REASONS, type RelayFrameDir, type RelayFrameKind, type RelayRejectReason };
package/dist/index.js CHANGED
@@ -38,18 +38,19 @@ import {
38
38
  } from "./chunk-YL5W5EMV.js";
39
39
  import {
40
40
  DEFAULT_ENGINE_HOST_REQUEST_TIMEOUT_MS,
41
+ ENGINE_ABORT_KILL_GRACE_MS,
41
42
  ENGINE_HOST_REQUEST_TIMEOUT_ENV,
42
43
  armEngineSelfDestruct,
43
44
  pumpNdjsonLines,
44
45
  spawnEngineChild
45
- } from "./chunk-CNQTJJF5.js";
46
+ } from "./chunk-HERD6RIR.js";
46
47
  import {
47
48
  ENGINE_NODE_ENV,
48
49
  hostKindOf,
49
50
  probeNodeExecutor,
50
51
  resetEngineNodeProbeCache,
51
52
  resolveEngineNodeLaunch
52
- } from "./chunk-W3BKI2BP.js";
53
+ } from "./chunk-3WC36CHI.js";
53
54
  import {
54
55
  DEFAULT_STDERR_KEEP_DAYS,
55
56
  DEFAULT_STDERR_MAX_BYTES,
@@ -90,7 +91,7 @@ import {
90
91
  reverseRequestFrameSchema,
91
92
  runSessionParamsSchema,
92
93
  successResponseFrameSchema
93
- } from "./chunk-63ZNJHM5.js";
94
+ } from "./chunk-W23PAAGX.js";
94
95
  import {
95
96
  SCHEMA_EMULATION_TAIL_CHARS,
96
97
  buildSchemaEmulationSegment,
@@ -109,8 +110,11 @@ import {
109
110
  HOST_TIMEOUT_ABORT_REASON,
110
111
  abortWithFallback,
111
112
  killChain,
113
+ killPidChain,
114
+ probePidAlive,
115
+ safeKill,
112
116
  synthesizeTimeoutOutcome
113
- } from "./chunk-QOEXD2FT.js";
117
+ } from "./chunk-RCT7L777.js";
114
118
  import {
115
119
  toErrorMessage
116
120
  } from "./chunk-PYO3YR7W.js";
@@ -119,8 +123,6 @@ import {
119
123
  CRASH_REBUILD_BACKOFF_MS,
120
124
  CRASH_REBUILD_MAX_ATTEMPTS,
121
125
  ENGINE_ERROR_CODE_PREFIX,
122
- ENGINE_EVENT_COALESCE_DEFAULT,
123
- ENGINE_EVENT_COALESCE_ENV,
124
126
  ENGINE_PROTOCOL_ERROR_CODES,
125
127
  ENGINE_PROTOCOL_VERSION,
126
128
  ENGINE_TIMEOUT_RECOVERY,
@@ -138,7 +140,7 @@ import {
138
140
  isEngineProtocolErrorCode,
139
141
  isProtocolVersionCompatible,
140
142
  schemaEmulationFailedDetail
141
- } from "./chunk-WMDMXP2F.js";
143
+ } from "./chunk-SFNTX7Q3.js";
142
144
  import {
143
145
  aggregateUsage,
144
146
  createReplayRecord,
@@ -146,7 +148,7 @@ import {
146
148
  sessionIdFromHandle,
147
149
  toReplayedTurn,
148
150
  updateFromEvent
149
- } from "./chunk-AIG5LSGK.js";
151
+ } from "./chunk-SGAIDL63.js";
150
152
  import {
151
153
  TAIJI_DATA_DIR_ENV,
152
154
  resetDataDirWarnForTests,
@@ -158,6 +160,34 @@ import {
158
160
  resetLoggerSinkForTests
159
161
  } from "./chunk-75QEMUGV.js";
160
162
  import "./chunk-JSBRDJBE.js";
163
+
164
+ // src/relay-frames.ts
165
+ var RELAY_FRAME_KINDS = {
166
+ handshake: "handshake",
167
+ accept: "accept",
168
+ reject: "reject",
169
+ data: "data",
170
+ exit: "exit",
171
+ /**
172
+ * goodbye(代理 → runtime,v1):代理被宿主终止(SIGTERM/SIGINT)前的预告帧——
173
+ * 宿主侧的正常收割(agent_settled 后杀代理)与异常断连(宿主崩溃/主 pi 死)在
174
+ * runtime 侧都表现为 socket close,无法区分;goodbye 让正常收割显式自报,runtime
175
+ * 据此把后续 close 的日志从 warn(kill-on-disconnect)降级为 info(reaped,正常
176
+ * teardown)。kill 行为本身不变(预告后 child 仍由 runtime 收割)。
177
+ */
178
+ goodbye: "goodbye"
179
+ };
180
+ var RELAY_FRAME_DIRS = {
181
+ down: "down",
182
+ up: "up",
183
+ upStderr: "up-stderr"
184
+ };
185
+ var RELAY_REJECT_REASONS = {
186
+ version: "version",
187
+ identity: "identity",
188
+ duplicate: "duplicate",
189
+ malformed: "malformed"
190
+ };
161
191
  export {
162
192
  AGENT_EVENT_TYPE_NAMES,
163
193
  CANCEL_SETTLE_GRACE_MS,
@@ -168,12 +198,11 @@ export {
168
198
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
169
199
  DEFAULT_STDERR_KEEP_DAYS,
170
200
  DEFAULT_STDERR_MAX_BYTES,
201
+ ENGINE_ABORT_KILL_GRACE_MS,
171
202
  ENGINE_ENV_DENY_LIST,
172
203
  ENGINE_ENV_L0_INFRA_KEYS,
173
204
  ENGINE_ENV_PREFIXES,
174
205
  ENGINE_ERROR_CODE_PREFIX,
175
- ENGINE_EVENT_COALESCE_DEFAULT,
176
- ENGINE_EVENT_COALESCE_ENV,
177
206
  ENGINE_HOST_REQUEST_TIMEOUT_ENV,
178
207
  ENGINE_NODE_ENV,
179
208
  ENGINE_PROTOCOL_ERROR_CODES,
@@ -194,7 +223,10 @@ export {
194
223
  RELAY_ENV_SESSION_ID,
195
224
  RELAY_ENV_SOCKET,
196
225
  RELAY_EXIT_CODES,
226
+ RELAY_FRAME_DIRS,
227
+ RELAY_FRAME_KINDS,
197
228
  RELAY_PROTOCOL_VERSION,
229
+ RELAY_REJECT_REASONS,
198
230
  REVERSE_CHANNELS,
199
231
  REVERSE_CHANNEL_TIMEOUT_CLASS,
200
232
  REVERSE_REQUEST_TIMEOUT_MS,
@@ -240,10 +272,12 @@ export {
240
272
  isReverseRequestFrame,
241
273
  isUiResponse,
242
274
  killChain,
275
+ killPidChain,
243
276
  notificationFrameSchema,
244
277
  parseChannel,
245
278
  parseCtxModel,
246
279
  probeNodeExecutor,
280
+ probePidAlive,
247
281
  protocolErrorSchema,
248
282
  pumpNdjsonLines,
249
283
  readRelayForwardEnv,
@@ -262,6 +296,7 @@ export {
262
296
  rotateStderrLogIfNeeded,
263
297
  runEngineCliEntry,
264
298
  runSessionParamsSchema,
299
+ safeKill,
265
300
  sanitizeSeg,
266
301
  schemaEmulationFailedDetail,
267
302
  sessionIdFromHandle,
@@ -1,4 +1,4 @@
1
- import { b as AgentEvent } from './contract-types-DaULkdpG.cjs';
1
+ import { b as AgentEvent } from './contract-types-DiWyGRXr.cjs';
2
2
 
3
3
  /**
4
4
  * 重放 journal:读取路径下全部事件,重放即得 AgentEvent 流(read 第②级)。
@@ -1,4 +1,4 @@
1
- import { b as AgentEvent } from './contract-types-DaULkdpG.js';
1
+ import { b as AgentEvent } from './contract-types-DiWyGRXr.js';
2
2
 
3
3
  /**
4
4
  * 重放 journal:读取路径下全部事件,重放即得 AgentEvent 流(read 第②级)。
@@ -196,6 +196,11 @@ function updateFromEvent(record, event) {
196
196
  // ── activity:纯活性信号,reducer no-op(协议语义见 contract-types)──
197
197
  case "activity":
198
198
  return;
199
+ // ── armed:武装确认回执([D3 协议版 P6],协议语义见 contract-types)——监控
200
+ // 信号不进 record 投影,消费方 = 宿主等待门 + run 事件 journal(C3 第④步
201
+ // 双侧 reducer no-op 义务的 SDK 侧)
202
+ case "armed":
203
+ return;
199
204
  default: {
200
205
  const _exhaustive = event;
201
206
  return _exhaustive;
@@ -1,4 +1,4 @@
1
- import { n as Turn, h as AgentUsageTotal, b as AgentEvent, S as SessionView, j as EngineHandleData, R as ReplayedTurn } from './contract-types-DaULkdpG.cjs';
1
+ import { o as Turn, h as AgentUsageTotal, b as AgentEvent, S as SessionView, j as EngineHandleData, R as ReplayedTurn } from './contract-types-DiWyGRXr.cjs';
2
2
 
3
3
  /**
4
4
  * reducer 的 record 视图(core ExecutionRecord 的结构子集:reducer 只触碰这四个字段)。
@@ -1,4 +1,4 @@
1
- import { n as Turn, h as AgentUsageTotal, b as AgentEvent, S as SessionView, j as EngineHandleData, R as ReplayedTurn } from './contract-types-DaULkdpG.js';
1
+ import { o as Turn, h as AgentUsageTotal, b as AgentEvent, S as SessionView, j as EngineHandleData, R as ReplayedTurn } from './contract-types-DiWyGRXr.js';
2
2
 
3
3
  /**
4
4
  * reducer 的 record 视图(core ExecutionRecord 的结构子集:reducer 只触碰这四个字段)。
@@ -5,7 +5,7 @@ import {
5
5
  sessionIdFromHandle,
6
6
  toReplayedTurn,
7
7
  updateFromEvent
8
- } from "./chunk-AIG5LSGK.js";
8
+ } from "./chunk-SGAIDL63.js";
9
9
  import "./chunk-JSBRDJBE.js";
10
10
  export {
11
11
  aggregateUsage,
@@ -23,9 +23,11 @@ __export(kill_chain_exports, {
23
23
  DEFAULT_KILL_GRACE_MS: () => DEFAULT_KILL_GRACE_MS,
24
24
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS: () => DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
25
25
  HOST_TIMEOUT_ABORT_REASON: () => HOST_TIMEOUT_ABORT_REASON,
26
- STDOUT_TAIL_ECHO_CHARS: () => STDOUT_TAIL_ECHO_CHARS,
27
26
  abortWithFallback: () => abortWithFallback,
28
27
  killChain: () => killChain,
28
+ killPidChain: () => killPidChain,
29
+ probePidAlive: () => probePidAlive,
30
+ safeKill: () => safeKill,
29
31
  synthesizeTimeoutOutcome: () => synthesizeTimeoutOutcome
30
32
  });
31
33
  module.exports = __toCommonJS(kill_chain_exports);
@@ -131,6 +133,38 @@ function safeKill(child, signal) {
131
133
  );
132
134
  }
133
135
  }
136
+ function probePidAlive(pid) {
137
+ try {
138
+ process.kill(pid, 0);
139
+ return true;
140
+ } catch (err) {
141
+ if (err.code === "ESRCH") return false;
142
+ return void 0;
143
+ }
144
+ }
145
+ function killPidChain(pid, opts = {}) {
146
+ const graceMs = opts.graceMs ?? DEFAULT_KILL_GRACE_MS;
147
+ signalPid(pid, "SIGTERM");
148
+ const escalation = setTimeout(() => {
149
+ if (probePidAlive(pid) === false) return;
150
+ if (opts.note !== void 0) {
151
+ logger.warn(
152
+ `[kill-chain] ${opts.note} still alive ${graceMs / MS_PER_SECOND}s after SIGTERM, escalating to SIGKILL (pid ${pid})`
153
+ );
154
+ }
155
+ signalPid(pid, "SIGKILL");
156
+ }, graceMs);
157
+ if (typeof escalation.unref === "function") escalation.unref();
158
+ }
159
+ function signalPid(pid, signal) {
160
+ try {
161
+ process.kill(pid, signal);
162
+ } catch (err) {
163
+ logger.debug(
164
+ `[kill-chain] ${signal} to pid ${pid} failed (already dead = expected): ${toErrorMessage(err)}`
165
+ );
166
+ }
167
+ }
134
168
  function synthesizeTimeoutOutcome(task, stdoutTail, engineId) {
135
169
  return {
136
170
  content: "",
@@ -214,8 +248,10 @@ function raceTimeout(p, ms, unref = false) {
214
248
  DEFAULT_KILL_GRACE_MS,
215
249
  DEFAULT_NATIVE_INTERRUPT_GRACE_MS,
216
250
  HOST_TIMEOUT_ABORT_REASON,
217
- STDOUT_TAIL_ECHO_CHARS,
218
251
  abortWithFallback,
219
252
  killChain,
253
+ killPidChain,
254
+ probePidAlive,
255
+ safeKill,
220
256
  synthesizeTimeoutOutcome
221
257
  });