@senpi/runtime 3.0.185 → 3.0.187

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 (98) hide show
  1. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +1 -1
  2. package/dist/actions/llm-decision/openclaw-llm-decision.js +1 -1
  3. package/dist/approvals/telemetry.d.ts +3 -2
  4. package/dist/approvals/telemetry.d.ts.map +1 -1
  5. package/dist/approvals/telemetry.js.map +1 -1
  6. package/dist/approvals/tool-approval-gate.d.ts +9 -3
  7. package/dist/approvals/tool-approval-gate.d.ts.map +1 -1
  8. package/dist/approvals/tool-approval-gate.js +18 -5
  9. package/dist/approvals/tool-approval-gate.js.map +1 -1
  10. package/dist/approvals/turn-context.d.ts +43 -18
  11. package/dist/approvals/turn-context.d.ts.map +1 -1
  12. package/dist/approvals/turn-context.js +67 -24
  13. package/dist/approvals/turn-context.js.map +1 -1
  14. package/dist/cli/guide-commands.d.ts.map +1 -1
  15. package/dist/cli/guide-commands.js +2 -1
  16. package/dist/cli/guide-commands.js.map +1 -1
  17. package/dist/cli/senpi-commands.d.ts.map +1 -1
  18. package/dist/cli/senpi-commands.js +8 -0
  19. package/dist/cli/senpi-commands.js.map +1 -1
  20. package/dist/deploy/register.d.ts +1 -0
  21. package/dist/deploy/register.d.ts.map +1 -1
  22. package/dist/deploy/register.js +2 -1
  23. package/dist/deploy/register.js.map +1 -1
  24. package/dist/dsl/monitor/dsl-failure-events.d.ts +38 -2
  25. package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -1
  26. package/dist/dsl/monitor/dsl-failure-events.js +67 -4
  27. package/dist/dsl/monitor/dsl-failure-events.js.map +1 -1
  28. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  29. package/dist/dsl/monitor/process-one-position.js +25 -1
  30. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  31. package/dist/index.d.ts +10 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +484 -146
  34. package/dist/index.js.map +1 -1
  35. package/dist/runtime/auto-update/coordinator.d.ts +19 -2
  36. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
  37. package/dist/runtime/auto-update/coordinator.js +104 -20
  38. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  39. package/dist/runtime/auto-update/gateway-restart.d.ts +2 -2
  40. package/dist/runtime/auto-update/gateway-restart.js +1 -1
  41. package/dist/runtime/auto-update/idle-gate.d.ts +45 -9
  42. package/dist/runtime/auto-update/idle-gate.d.ts.map +1 -1
  43. package/dist/runtime/auto-update/idle-gate.js +26 -14
  44. package/dist/runtime/auto-update/idle-gate.js.map +1 -1
  45. package/dist/runtime/auto-update/register-idle-gate.d.ts +1 -1
  46. package/dist/runtime/auto-update/register-idle-gate.d.ts.map +1 -1
  47. package/dist/runtime/auto-update/register-idle-gate.js +8 -4
  48. package/dist/runtime/auto-update/register-idle-gate.js.map +1 -1
  49. package/dist/runtime/auto-update/run-update-command.d.ts +1 -1
  50. package/dist/runtime/auto-update/run-update-command.js +1 -1
  51. package/dist/runtime/auto-update/types.d.ts +2 -1
  52. package/dist/runtime/auto-update/types.d.ts.map +1 -1
  53. package/dist/runtime/auto-update/types.js.map +1 -1
  54. package/dist/runtime/auto-update/update-schedule.d.ts +14 -4
  55. package/dist/runtime/auto-update/update-schedule.d.ts.map +1 -1
  56. package/dist/runtime/auto-update/update-schedule.js +21 -5
  57. package/dist/runtime/auto-update/update-schedule.js.map +1 -1
  58. package/dist/runtime/process-state.d.ts +168 -0
  59. package/dist/runtime/process-state.d.ts.map +1 -0
  60. package/dist/runtime/process-state.js +81 -0
  61. package/dist/runtime/process-state.js.map +1 -0
  62. package/dist/runtime/reconcile-state.d.ts.map +1 -1
  63. package/dist/runtime/reconcile-state.js +18 -4
  64. package/dist/runtime/reconcile-state.js.map +1 -1
  65. package/dist/runtime/strategy-registry.d.ts +16 -0
  66. package/dist/runtime/strategy-registry.d.ts.map +1 -1
  67. package/dist/runtime/strategy-registry.js +7 -3
  68. package/dist/runtime/strategy-registry.js.map +1 -1
  69. package/dist/runtime/update-apply-deps.d.ts +5 -3
  70. package/dist/runtime/update-apply-deps.d.ts.map +1 -1
  71. package/dist/runtime/update-apply-deps.js +15 -3
  72. package/dist/runtime/update-apply-deps.js.map +1 -1
  73. package/dist/senpi/client.d.ts +5 -1
  74. package/dist/senpi/client.d.ts.map +1 -1
  75. package/dist/senpi/client.js +20 -7
  76. package/dist/senpi/client.js.map +1 -1
  77. package/dist/telemetry/metrics.d.ts +1 -1
  78. package/dist/telemetry/metrics.d.ts.map +1 -1
  79. package/dist/telemetry/metrics.js +1 -1
  80. package/dist/telemetry/metrics.js.map +1 -1
  81. package/dist/telemetry/spans/span-hooks.d.ts +1 -1
  82. package/dist/telemetry/spans/span-hooks.js +1 -1
  83. package/dist/test-setup.js +7 -1
  84. package/dist/test-setup.js.map +1 -1
  85. package/dist/tool-surface/crib-hook.d.ts.map +1 -1
  86. package/dist/tool-surface/crib-hook.js +8 -0
  87. package/dist/tool-surface/crib-hook.js.map +1 -1
  88. package/dist/tool-surface/crib-sheet.d.ts +1 -1
  89. package/dist/tool-surface/crib-sheet.js +1 -1
  90. package/dist/tool-surface/mcp-tool-source.d.ts +1 -1
  91. package/dist/tool-surface/mcp-tool-source.js +2 -2
  92. package/dist/utils/event-catalog.d.ts +27 -1
  93. package/dist/utils/event-catalog.d.ts.map +1 -1
  94. package/dist/utils/event-catalog.js +6 -0
  95. package/dist/utils/event-catalog.js.map +1 -1
  96. package/dist/widgets/tool.d.ts +1 -1
  97. package/openclaw.plugin.json +1 -1
  98. package/package.json +1 -1
@@ -38,7 +38,7 @@ export declare function splitProviderModel(raw: string | undefined): {
38
38
  * Whether the host's llm-task plugin accepts a `provider`/`model` in the call:
39
39
  * `plugins.entries["llm-task"].llm.allowModelOverride === true` in a whole
40
40
  * OpenClaw config. OpenClaw 10.x refuses any override without it
41
- * (`openclaw-worktrees/v2026.10.10-beta.3/src/plugins/runtime/runtime-llm.runtime.ts:414-463`,
41
+ * (`openclaw-worktrees/v2026.10.10/src/plugins/runtime/runtime-llm.runtime.ts:414-463`,
42
42
  * policy owner = the calling plugin, `llm-task`). senpi-agent sets it (A7).
43
43
  */
44
44
  export declare function llmTaskModelOverrideAllowed(config: unknown): boolean;
@@ -52,7 +52,7 @@ export function splitProviderModel(raw) {
52
52
  * Whether the host's llm-task plugin accepts a `provider`/`model` in the call:
53
53
  * `plugins.entries["llm-task"].llm.allowModelOverride === true` in a whole
54
54
  * OpenClaw config. OpenClaw 10.x refuses any override without it
55
- * (`openclaw-worktrees/v2026.10.10-beta.3/src/plugins/runtime/runtime-llm.runtime.ts:414-463`,
55
+ * (`openclaw-worktrees/v2026.10.10/src/plugins/runtime/runtime-llm.runtime.ts:414-463`,
56
56
  * policy owner = the calling plugin, `llm-task`). senpi-agent sets it (A7).
57
57
  */
58
58
  export function llmTaskModelOverrideAllowed(config) {
@@ -5,7 +5,8 @@ import type { TurnKind } from "./turn-context.js";
5
5
  * while the prompt was open, the host had no route or surface to ask (on
6
6
  * 10.x, before any tool runs), or the gate itself stopped a gated call in a
7
7
  * scheduled turn (`cancelReason: "scheduled_turn"`) or in another run that is
8
- * not a direct chat turn (`"not_chat_turn"`, D15). The wait time tells a user
8
+ * classified as not a direct chat turn (`"not_chat_turn"`, D15) or never
9
+ * classified at all (`"run_unclassified"`, which may be a refused chat turn). The wait time tells a user
9
10
  * abort (long) from a no-route cancellation (milliseconds). `granted` is not a
10
11
  * prompt outcome: the call ran under a stored "Always allow" grant with no
11
12
  * prompt (D16), recorded with its run kind.
@@ -18,7 +19,7 @@ export interface ApprovalResolutionContext {
18
19
  /** `chat` | `cron` | `heartbeat` | `other` | `unknown`; stamped as `senpi.turn.kind`. */
19
20
  turnKind?: TurnKind;
20
21
  /** Why the gate cancelled the call itself; stamped as `senpi.tool_approval.cancel_reason`. */
21
- cancelReason?: "scheduled_turn" | "not_chat_turn";
22
+ cancelReason?: "scheduled_turn" | "not_chat_turn" | "run_unclassified";
22
23
  }
23
24
  /**
24
25
  * Telemetry seam for the MCP tool approval gate.
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/approvals/telemetry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE5G,2FAA2F;AAC3F,MAAM,WAAW,yBAAyB;IACxC,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC;CACnD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAAC;IACR;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAC3E;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7D;AAID,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,EAAE,aAgClC,CAAC"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/approvals/telemetry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE5G,2FAA2F;AAC3F,MAAM,WAAW,yBAAyB;IACxC,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,gBAAgB,GAAG,eAAe,GAAG,kBAAkB,CAAC;CACxE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAAC;IACR;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAC3E;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7D;AAID,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,EAAE,aAgClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/approvals/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyElD,MAAM,WAAW,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAE3D,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;QACnD,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,WAAW,CAAC;QACzF,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;YAC3E,IAAI,EAAE,iBAAiB,QAAQ,QAAQ,QAAQ,EAAE;YACjD,UAAU,EAAE,UAAU,CAAmD;gBACvE,kBAAkB,EAAE,QAAQ;gBAC5B,8BAA8B,EAAE,QAAQ;gBACxC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC;gBACtC,6BAA6B,EAC3B,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACrG,wBAAwB,EAAE,OAAO,EAAE,UAAU;gBAC7C,iBAAiB,EAAE,OAAO,EAAE,QAAQ;gBACpC,mCAAmC,EAAE,OAAO,EAAE,YAAY;aAC3D,CAAC;SACH,CAAC,CAAC;QACH,sBAAsB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,MAAM;QACrB,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,QAAQ;QACrB,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,OAAO,EAAE;YAC3D,IAAI,EAAE,iCAAiC,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3E,UAAU,EAAE,UAAU,CAAoD;gBACxE,kBAAkB,EAAE,QAAQ;gBAC5B,YAAY,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aAC1D,CAAC;YACF,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/approvals/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA0ElD,MAAM,WAAW,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAE3D,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;QACnD,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,WAAW,CAAC;QACzF,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;YAC3E,IAAI,EAAE,iBAAiB,QAAQ,QAAQ,QAAQ,EAAE;YACjD,UAAU,EAAE,UAAU,CAAmD;gBACvE,kBAAkB,EAAE,QAAQ;gBAC5B,8BAA8B,EAAE,QAAQ;gBACxC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC;gBACtC,6BAA6B,EAC3B,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACrG,wBAAwB,EAAE,OAAO,EAAE,UAAU;gBAC7C,iBAAiB,EAAE,OAAO,EAAE,QAAQ;gBACpC,mCAAmC,EAAE,OAAO,EAAE,YAAY;aAC3D,CAAC;SACH,CAAC,CAAC;QACH,sBAAsB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,MAAM;QACrB,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,QAAQ;QACrB,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,OAAO,EAAE;YAC3D,IAAI,EAAE,iCAAiC,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3E,UAAU,EAAE,UAAU,CAAoD;gBACxE,kBAAkB,EAAE,QAAQ;gBAC5B,YAAY,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aAC1D,CAAC;YACF,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -135,20 +135,26 @@ export interface RegisterToolApprovalGateOptions {
135
135
  * the setting never blocks a chat trade.
136
136
  */
137
137
  turnClassification?: boolean;
138
+ /**
139
+ * Called when a gated call is blocked because its run reads `unknown` (no run id, a run the
140
+ * tracker never recorded, or one with no trigger). Fed into the approvals status, so a box
141
+ * refusing chat trades this way shows up there.
142
+ */
143
+ onUnclassifiedBlock?: (at: number) => void;
138
144
  /** Clock for the approval wait time. Default `Date.now`. */
139
145
  now?: () => number;
140
146
  }
141
147
  /**
142
148
  * The text the model reads when the gate stops a gated call in a scheduled
143
- * turn (D13). On 10.10-beta.3 the host's own outcome for such an approval is
149
+ * turn (D13). On 10.10 the host's own outcome for such an approval is
144
150
  * a sentence the plugin cannot change and the model cannot act on: for a tool
145
151
  * whose hook context carries the run trigger it cancels with "Plugin approval
146
152
  * unavailable: cron runs have no approval-capable initiating surface."
147
- * (`openclaw-worktrees/v2026.10.10-beta.3/src/agents/agent-tools.before-tool-call.approval.ts:161-189,310-320`);
153
+ * (`openclaw-worktrees/v2026.10.10/src/agents/agent-tools.before-tool-call.approval.ts:171-199,320-330`);
148
154
  * the `senpi__` MCP tools are wrapped without the trigger
149
155
  * (`src/agents/embedded-agent-runner/run/attempt-tool-prepare.ts:468-485`), so
150
156
  * the host asks the gateway instead, which fails with "Plugin approval
151
- * unavailable (no approval route)" (`:371`) when no approval client is
157
+ * unavailable (no approval route)" (`agent-tools.before-tool-call.approval.ts:381`) when no approval client is
152
158
  * connected. The gate blocks first, in every scheduled turn. This text says
153
159
  * what happened and the one step that works: the user asks in chat, where the
154
160
  * approval prompt can be shown. It names no other route.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approval-gate.d.ts","sourceRoot":"","sources":["../../src/approvals/tool-approval-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-approval-gate.d.ts","sourceRoot":"","sources":["../../src/approvals/tool-approval-gate.ts"],"names":[],"mappings":"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"}
@@ -208,15 +208,15 @@ export class PendingApprovalTracker {
208
208
  }
209
209
  /**
210
210
  * The text the model reads when the gate stops a gated call in a scheduled
211
- * turn (D13). On 10.10-beta.3 the host's own outcome for such an approval is
211
+ * turn (D13). On 10.10 the host's own outcome for such an approval is
212
212
  * a sentence the plugin cannot change and the model cannot act on: for a tool
213
213
  * whose hook context carries the run trigger it cancels with "Plugin approval
214
214
  * unavailable: cron runs have no approval-capable initiating surface."
215
- * (`openclaw-worktrees/v2026.10.10-beta.3/src/agents/agent-tools.before-tool-call.approval.ts:161-189,310-320`);
215
+ * (`openclaw-worktrees/v2026.10.10/src/agents/agent-tools.before-tool-call.approval.ts:171-199,320-330`);
216
216
  * the `senpi__` MCP tools are wrapped without the trigger
217
217
  * (`src/agents/embedded-agent-runner/run/attempt-tool-prepare.ts:468-485`), so
218
218
  * the host asks the gateway instead, which fails with "Plugin approval
219
- * unavailable (no approval route)" (`:371`) when no approval client is
219
+ * unavailable (no approval route)" (`agent-tools.before-tool-call.approval.ts:381`) when no approval client is
220
220
  * connected. The gate blocks first, in every scheduled turn. This text says
221
221
  * what happened and the one step that works: the user asks in chat, where the
222
222
  * approval prompt can be shown. It names no other route.
@@ -324,13 +324,26 @@ export function registerToolApprovalGate(options) {
324
324
  block: true,
325
325
  blockReason: scheduledTurnBlockReason({ wireName: name, kind: runKind, isTrade, summary }),
326
326
  };
327
+ if (runKind === "unknown") {
328
+ // Failing closed is right, but this may be a user in chat being refused. Counted ahead
329
+ // of the telemetry, so an exporter failure can't hide it from `senpi status`.
330
+ try {
331
+ options.onUnclassifiedBlock?.(now());
332
+ logger?.warn(`[senpi-tool-approvals] gated call blocked: its run was not classified, so it may be a chat turn being refused | tool=${tool} runId=${typeof runId === "string" && runId ? runId : "none"}`);
333
+ }
334
+ catch {
335
+ // Reporting must never decide whether a trade runs.
336
+ }
337
+ }
327
338
  try {
328
339
  telemetry.resolved(name, "cancelled", isTrade, 0, {
329
340
  ...resolutionContext(turn),
330
341
  turnKind: runKind,
331
- cancelReason: scheduled ? "scheduled_turn" : "not_chat_turn",
342
+ cancelReason: scheduled ? "scheduled_turn" : runKind === "unknown" ? "run_unclassified" : "not_chat_turn",
332
343
  });
333
- logger?.info(`[senpi-tool-approvals] gated call outside a chat turn blocked | tool=${tool} turn=${runKind}`);
344
+ if (runKind !== "unknown") {
345
+ logger?.info(`[senpi-tool-approvals] gated call outside a chat turn blocked | tool=${tool} turn=${runKind}`);
346
+ }
334
347
  }
335
348
  catch {
336
349
  // Telemetry must never decide whether a trade runs.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approval-gate.js","sourceRoot":"","sources":["../../src/approvals/tool-approval-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-approval-gate.js","sourceRoot":"","sources":["../../src/approvals/tool-approval-gate.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,12 @@
3
3
  * heartbeat, or another run (R6, D13, D15).
4
4
  *
5
5
  * The tool hooks' context carries no run trigger on any host
6
- * (`PluginHookToolContext`, `openclaw-worktrees/v2026.10.10-beta.3/src/plugins/hook-types.ts:526-548`),
6
+ * (`PluginHookToolContext`, `openclaw-worktrees/v2026.10.10/src/plugins/hook-types.ts:526-548`),
7
7
  * but `before_prompt_build`'s agent context does (`trigger`, same field on
8
8
  * 5.7, 5.12 and 10.x), and both carry the run id. The tracker records
9
- * `runId → {sessionKey, trigger}` at prompt build and forgets the run at
10
- * `agent_end`, so the approval gate can read the turn kind of the call it is
11
- * gating.
9
+ * `runId → {sessionKey, kind}` at prompt build and keeps it for the life of the
10
+ * run, so the approval gate can read the turn kind of the call it is gating.
11
+ * `agent_end` does not end that: 10.x fires it per attempt, not per run.
12
12
  *
13
13
  * On 10.x `before_prompt_build` is a conversation hook: without
14
14
  * `plugins.entries.runtime.hooks.allowConversationAccess` nothing is recorded
@@ -40,8 +40,8 @@ export interface TurnContextReader {
40
40
  export declare function turnKindOf(trigger: unknown): TurnKind;
41
41
  /**
42
42
  * A session the host creates for a spawned child: `agent:<id>:subagent:<uuid>`
43
- * (10.10 `src/agents/subagents/spawn-plan.ts:64-65`, `:subagent:incognito-…`
44
- * at `subagent-spawn-child-plan.ts:95`; 5.12/5.7 `subagent-spawn.ts:829/821`)
43
+ * (10.10 `src/agents/spawn-plan.ts:64-65`, `:subagent:incognito-…`
44
+ * at `subagent-spawn-child-plan.ts:96`; 5.12/5.7 `subagent-spawn.ts:829/821`)
45
45
  * or an ACP child `agent:<id>:acp:<uuid>`.
46
46
  */
47
47
  export declare function isChildSession(sessionKey: string | undefined): boolean;
@@ -65,7 +65,7 @@ export declare const SESSIONS_SEND_MATCH_WINDOW_MS: number;
65
65
  *
66
66
  * 1. `trigger` `cron` / `heartbeat` → that kind.
67
67
  * 2. A `sessions_send` target (`inputProvenance` `inter_session` with
68
- * `sourceTool: "sessions_send"`, 10.10 `sessions-send-tool.ts:477-483`) →
68
+ * `sourceTool: "sessions_send"`, 10.10 `sessions-send-tool.ts:470-476`) →
69
69
  * the kind of the run that SENT it. The provenance names only the source
70
70
  * session, not the sending run, so the sending run is identified from the
71
71
  * `sessions_send` call itself: {@link onToolCall} records the calling run's
@@ -102,15 +102,15 @@ export declare const SESSIONS_SEND_MATCH_WINDOW_MS: number;
102
102
  * `subagent_spawned` consumes the oldest pending spawn from the requester
103
103
  * session, with the same window and ambiguity rules. Unmatched → `other`.
104
104
  * 10.10 hard-codes `trigger: "user"` for these runs
105
- * (`attempt-execution.ts:349`), and fires `subagent_spawned` after the
105
+ * (`attempt-execution.ts:362`), and fires `subagent_spawned` after the
106
106
  * gateway accepted the child (`subagent-spawn.ts:667`), so a child
107
107
  * classified first reads `other` until its origin arrives.
108
108
  * 4. `trigger` `event` or `inputProvenance.kind === "internal_system"` (a
109
- * continuation after background work, `session-event-handoff.ts:509`;
109
+ * continuation after background work, `session-event-context.ts:86`;
110
110
  * neither carries the originating run) → `other`.
111
111
  * 5. A `jobId`, or a `cron:` session, with a non-cron trigger → `other`.
112
112
  * 6. `trigger` `user` with no provenance or `external_user` provenance (a
113
- * webchat `chat.send` turn: `reply-turn-kind.ts:18-22`,
113
+ * webchat `chat.send` turn: `reply-turn-kind.ts:18-24`,
114
114
  * `chat-send-user-turn.ts:206`) → `chat`.
115
115
  * 7. Any other trigger → `other`; none → `unknown`.
116
116
  *
@@ -131,8 +131,11 @@ export declare class TurnContextTracker implements TurnContextReader {
131
131
  private origins;
132
132
  /** Sends whose target run started, waiting for their reply-back run, oldest first. */
133
133
  private exchanges;
134
+ /** Runs recorded since this tracker started; see {@link runsRecorded}. */
135
+ private recorded;
134
136
  /**
135
- * @param maxRuns - Runs kept at once; the oldest is dropped past it (a missed `agent_end`).
137
+ * @param maxRuns - Runs kept at once, ended ones included (see {@link onRunEnd}); the oldest
138
+ * is dropped past it. A later call of a dropped run reads `unknown`; a retry classifies anew.
136
139
  * @param now - Clock for the `sessions_send` match window.
137
140
  */
138
141
  constructor(maxRuns?: number, now?: () => number);
@@ -157,9 +160,14 @@ export declare class TurnContextTracker implements TurnContextReader {
157
160
  * Records a run from a `before_prompt_build` agent context. Malformed input
158
161
  * is ignored. A run is classified once: 10.x fires the hook again for each
159
162
  * retry attempt of the same run (after compaction, a model or auth
160
- * failover), and by then the origin call or exchange that classified it is
161
- * consumed, so re-classifying would turn a chat-originated run into `other`.
162
- * The first answer stands, whatever it was; a scheduled run stays scheduled.
163
+ * failover), after an `agent_end` for the attempt before it, and by then the
164
+ * origin call or exchange that classified it is consumed, so re-classifying
165
+ * would turn a chat-originated run into `other`. The first answer stands,
166
+ * whatever it was; a scheduled run stays scheduled. Host run ids are fresh per
167
+ * run, so a retained id only ever comes back as a retry (10.10 cron
168
+ * `isolated-agent/run.ts:142`, follow-ups `followup-turn-admission.ts:305`,
169
+ * replies `agent-runner-execution.ts:703`). A caller-supplied id (a `chat.send`
170
+ * or announce idempotency key) names one message; reused, it keeps its first answer.
163
171
  */
164
172
  onPromptBuild(ctx: unknown): void;
165
173
  /**
@@ -168,7 +176,16 @@ export declare class TurnContextTracker implements TurnContextReader {
168
176
  * session (consumed), or `other` when none matches. Malformed input is ignored.
169
177
  */
170
178
  onSubagentSpawned(ctx: unknown, event?: unknown): void;
171
- /** Forgets a run (its `agent_end`). */
179
+ /** How many runs `before_prompt_build` has recorded since this tracker started. */
180
+ get runsRecorded(): number;
181
+ /**
182
+ * An attempt ended (`agent_end`). The run's entry stays: 10.10 fires this per
183
+ * attempt with no retry guard (`run/attempt-finalize.ts:305-308`), a retry keeps
184
+ * the run id, and the hook is fire-and-forget, so it can even land after the
185
+ * retry's prompt build. `maxRuns` bounds the entries. Only the run's claim on
186
+ * its session goes, so a call with no run id never reads a run that ended
187
+ * (`unknown`, which the gate refuses).
188
+ */
172
189
  onRunEnd(runId: unknown): void;
173
190
  /**
174
191
  * The turn of a tool call: by run id, else by the session's latest recorded
@@ -198,7 +215,10 @@ export declare class TurnContextTracker implements TurnContextReader {
198
215
  private sendOriginKind;
199
216
  /** A session's last classified run kind, or `other` when it is unknown (not resolvable is not chat). */
200
217
  private kindOfSession;
218
+ /** Drops a run for good: the eviction past `maxRuns`. */
201
219
  private forget;
220
+ /** Stops `runId` being its session's latest run; a newer run in that session is left alone. */
221
+ private releaseSession;
202
222
  }
203
223
  /**
204
224
  * Whether this host lets the runtime classify the run a gated call belongs to:
@@ -242,10 +262,15 @@ export declare function turnClassificationAvailable(params: {
242
262
  * `approvals`, `openclaw senpi status`). `unavailable` means every run is asked as before
243
263
  * this release, scheduled runs included: a box config to fix, or (on 5.x) a host limit.
244
264
  * `hostLimit` marks the 5.x case: nothing on the box can change it, so `senpi status`
245
- * does not print it as a warning.
265
+ * does not print it as a warning. On `available`, `unclassifiedBlocks` counts gated calls blocked
266
+ * since the gateway started because their run was not classified, against `runsRecorded`: a box
267
+ * whose hooks stopped seeing its runs refuses every chat trade while still reading `available`.
246
268
  */
247
269
  export type ApprovalsHostStatus = {
248
270
  turnClassification: "available";
271
+ runsRecorded?: number;
272
+ unclassifiedBlocks?: number;
273
+ lastUnclassifiedBlockAt?: string;
249
274
  } | {
250
275
  turnClassification: "unavailable";
251
276
  reason?: string;
@@ -257,8 +282,8 @@ export type ApprovalsHostStatus = {
257
282
  * conversation hook on any host), `before_tool_call` / `after_tool_call`
258
283
  * (observe `sessions_send` and `sessions_spawn` calls and their results only,
259
284
  * to identify the run that started a target or a child; return nothing, so
260
- * they decide nothing) and `agent_end` (forgets; refused without conversation access, then
261
- * the tracker's bound applies). Handlers never throw.
285
+ * they decide nothing) and `agent_end` (the run stops being its session's latest; refused
286
+ * without conversation access, where nothing is recorded anyway). Handlers never throw.
262
287
  */
263
288
  export declare function registerTurnContextHooks(params: {
264
289
  api: {
@@ -1 +1 @@
1
- {"version":3,"file":"turn-context.d.ts","sourceRoot":"","sources":["../../src/approvals/turn-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-context.d.ts","sourceRoot":"","sources":["../../src/approvals/turn-context.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,12 @@
3
3
  * heartbeat, or another run (R6, D13, D15).
4
4
  *
5
5
  * The tool hooks' context carries no run trigger on any host
6
- * (`PluginHookToolContext`, `openclaw-worktrees/v2026.10.10-beta.3/src/plugins/hook-types.ts:526-548`),
6
+ * (`PluginHookToolContext`, `openclaw-worktrees/v2026.10.10/src/plugins/hook-types.ts:526-548`),
7
7
  * but `before_prompt_build`'s agent context does (`trigger`, same field on
8
8
  * 5.7, 5.12 and 10.x), and both carry the run id. The tracker records
9
- * `runId → {sessionKey, trigger}` at prompt build and forgets the run at
10
- * `agent_end`, so the approval gate can read the turn kind of the call it is
11
- * gating.
9
+ * `runId → {sessionKey, kind}` at prompt build and keeps it for the life of the
10
+ * run, so the approval gate can read the turn kind of the call it is gating.
11
+ * `agent_end` does not end that: 10.x fires it per attempt, not per run.
12
12
  *
13
13
  * On 10.x `before_prompt_build` is a conversation hook: without
14
14
  * `plugins.entries.runtime.hooks.allowConversationAccess` nothing is recorded
@@ -47,8 +47,8 @@ function sessionRest(sessionKey) {
47
47
  }
48
48
  /**
49
49
  * A session the host creates for a spawned child: `agent:<id>:subagent:<uuid>`
50
- * (10.10 `src/agents/subagents/spawn-plan.ts:64-65`, `:subagent:incognito-…`
51
- * at `subagent-spawn-child-plan.ts:95`; 5.12/5.7 `subagent-spawn.ts:829/821`)
50
+ * (10.10 `src/agents/spawn-plan.ts:64-65`, `:subagent:incognito-…`
51
+ * at `subagent-spawn-child-plan.ts:96`; 5.12/5.7 `subagent-spawn.ts:829/821`)
52
52
  * or an ACP child `agent:<id>:acp:<uuid>`.
53
53
  */
54
54
  export function isChildSession(sessionKey) {
@@ -77,6 +77,13 @@ function boundedSet(map, key, value, max) {
77
77
  export const SESSIONS_SEND_MATCH_WINDOW_MS = 10 * 60_000;
78
78
  /** Pending origin calls (and open send exchanges) kept at once; the oldest are dropped first. */
79
79
  const MAX_ORIGIN_CALLS = 256;
80
+ /**
81
+ * The `inputProvenance.sourceTool` OpenClaw stamps on the run that resumes an orphaned subagent
82
+ * after a gateway restart (`resumeOrphanedSession` in 6.9 `subagent-orphan-recovery`, the same
83
+ * literal in 10.10 `input-provenance`). Its `sourceSessionKey` is the requester, not the run that
84
+ * spawned the child, so the requester session's latest kind says nothing about this run.
85
+ */
86
+ const SUBAGENT_RESUME_SOURCE_TOOL = "subagent_interrupted_resume";
80
87
  /**
81
88
  * Whether a `sessions_send` target as named (`agent:main:ops`, or a short
82
89
  * `ops`) is the session `sessionKey`. A short name matches the key's tail.
@@ -132,7 +139,7 @@ function sendStartedNoRunToMatch(d) {
132
139
  *
133
140
  * 1. `trigger` `cron` / `heartbeat` → that kind.
134
141
  * 2. A `sessions_send` target (`inputProvenance` `inter_session` with
135
- * `sourceTool: "sessions_send"`, 10.10 `sessions-send-tool.ts:477-483`) →
142
+ * `sourceTool: "sessions_send"`, 10.10 `sessions-send-tool.ts:470-476`) →
136
143
  * the kind of the run that SENT it. The provenance names only the source
137
144
  * session, not the sending run, so the sending run is identified from the
138
145
  * `sessions_send` call itself: {@link onToolCall} records the calling run's
@@ -169,15 +176,15 @@ function sendStartedNoRunToMatch(d) {
169
176
  * `subagent_spawned` consumes the oldest pending spawn from the requester
170
177
  * session, with the same window and ambiguity rules. Unmatched → `other`.
171
178
  * 10.10 hard-codes `trigger: "user"` for these runs
172
- * (`attempt-execution.ts:349`), and fires `subagent_spawned` after the
179
+ * (`attempt-execution.ts:362`), and fires `subagent_spawned` after the
173
180
  * gateway accepted the child (`subagent-spawn.ts:667`), so a child
174
181
  * classified first reads `other` until its origin arrives.
175
182
  * 4. `trigger` `event` or `inputProvenance.kind === "internal_system"` (a
176
- * continuation after background work, `session-event-handoff.ts:509`;
183
+ * continuation after background work, `session-event-context.ts:86`;
177
184
  * neither carries the originating run) → `other`.
178
185
  * 5. A `jobId`, or a `cron:` session, with a non-cron trigger → `other`.
179
186
  * 6. `trigger` `user` with no provenance or `external_user` provenance (a
180
- * webchat `chat.send` turn: `reply-turn-kind.ts:18-22`,
187
+ * webchat `chat.send` turn: `reply-turn-kind.ts:18-24`,
181
188
  * `chat-send-user-turn.ts:206`) → `chat`.
182
189
  * 7. Any other trigger → `other`; none → `unknown`.
183
190
  *
@@ -198,8 +205,11 @@ export class TurnContextTracker {
198
205
  origins = [];
199
206
  /** Sends whose target run started, waiting for their reply-back run, oldest first. */
200
207
  exchanges = [];
208
+ /** Runs recorded since this tracker started; see {@link runsRecorded}. */
209
+ recorded = 0;
201
210
  /**
202
- * @param maxRuns - Runs kept at once; the oldest is dropped past it (a missed `agent_end`).
211
+ * @param maxRuns - Runs kept at once, ended ones included (see {@link onRunEnd}); the oldest
212
+ * is dropped past it. A later call of a dropped run reads `unknown`; a retry classifies anew.
203
213
  * @param now - Clock for the `sessions_send` match window.
204
214
  */
205
215
  constructor(maxRuns = 256, now = Date.now) {
@@ -282,9 +292,14 @@ export class TurnContextTracker {
282
292
  * Records a run from a `before_prompt_build` agent context. Malformed input
283
293
  * is ignored. A run is classified once: 10.x fires the hook again for each
284
294
  * retry attempt of the same run (after compaction, a model or auth
285
- * failover), and by then the origin call or exchange that classified it is
286
- * consumed, so re-classifying would turn a chat-originated run into `other`.
287
- * The first answer stands, whatever it was; a scheduled run stays scheduled.
295
+ * failover), after an `agent_end` for the attempt before it, and by then the
296
+ * origin call or exchange that classified it is consumed, so re-classifying
297
+ * would turn a chat-originated run into `other`. The first answer stands,
298
+ * whatever it was; a scheduled run stays scheduled. Host run ids are fresh per
299
+ * run, so a retained id only ever comes back as a retry (10.10 cron
300
+ * `isolated-agent/run.ts:142`, follow-ups `followup-turn-admission.ts:305`,
301
+ * replies `agent-runner-execution.ts:703`). A caller-supplied id (a `chat.send`
302
+ * or announce idempotency key) names one message; reused, it keeps its first answer.
288
303
  */
289
304
  onPromptBuild(ctx) {
290
305
  const c = rec(ctx);
@@ -292,12 +307,17 @@ export class TurnContextTracker {
292
307
  if (!runId)
293
308
  return;
294
309
  const sessionKey = nonEmpty(c?.sessionKey);
295
- const entry = this.runs.get(runId) ?? this.classify(c ?? {}, sessionKey);
310
+ const known = this.runs.get(runId);
311
+ if (!known)
312
+ this.recorded += 1;
313
+ const entry = known ?? this.classify(c ?? {}, sessionKey);
296
314
  this.runs.delete(runId);
297
315
  this.runs.set(runId, entry);
298
316
  if (sessionKey) {
299
317
  this.latestBySession.set(sessionKey, runId);
300
- boundedSet(this.lastKindBySession, sessionKey, entry.kind, this.maxRuns * 2);
318
+ // The resolved kind, not the entry's: a retried child's entry still holds its `other`
319
+ // placeholder, and writing that back would undo the kind `subagent_spawned` gave the session.
320
+ boundedSet(this.lastKindBySession, sessionKey, this.lookup({ runId }).kind, this.maxRuns * 2);
301
321
  }
302
322
  while (this.runs.size > this.maxRuns) {
303
323
  const oldest = this.runs.keys().next().value;
@@ -320,11 +340,22 @@ export class TurnContextTracker {
320
340
  boundedSet(this.childOrigins, child, kind, this.maxRuns * 2);
321
341
  boundedSet(this.lastKindBySession, child, kind, this.maxRuns * 2);
322
342
  }
323
- /** Forgets a run (its `agent_end`). */
343
+ /** How many runs `before_prompt_build` has recorded since this tracker started. */
344
+ get runsRecorded() {
345
+ return this.recorded;
346
+ }
347
+ /**
348
+ * An attempt ended (`agent_end`). The run's entry stays: 10.10 fires this per
349
+ * attempt with no retry guard (`run/attempt-finalize.ts:305-308`), a retry keeps
350
+ * the run id, and the hook is fire-and-forget, so it can even land after the
351
+ * retry's prompt build. `maxRuns` bounds the entries. Only the run's claim on
352
+ * its session goes, so a call with no run id never reads a run that ended
353
+ * (`unknown`, which the gate refuses).
354
+ */
324
355
  onRunEnd(runId) {
325
356
  const id = nonEmpty(runId);
326
357
  if (id)
327
- this.forget(id);
358
+ this.releaseSession(id);
328
359
  }
329
360
  /**
330
361
  * The turn of a tool call: by run id, else by the session's latest recorded
@@ -348,9 +379,16 @@ export class TurnContextTracker {
348
379
  const provenanceKind = nonEmpty(provenance?.kind);
349
380
  if (provenanceKind === "inter_session") {
350
381
  const source = nonEmpty(provenance?.sourceSessionKey);
351
- if (nonEmpty(provenance?.sourceTool) === "sessions_send") {
382
+ const sourceTool = nonEmpty(provenance?.sourceTool);
383
+ if (sourceTool === "sessions_send") {
352
384
  return { sessionKey, kind: this.sendOriginKind(source, sessionKey) };
353
385
  }
386
+ if (sourceTool === SUBAGENT_RESUME_SOURCE_TOOL) {
387
+ // An orphaned subagent resumed after a restart runs in its own session; its source is the
388
+ // requester, whose latest run may be a newer chat. It keeps its spawner's kind when this
389
+ // process saw the spawn, else `other` (T-RESTART option D).
390
+ return { sessionKey, kind: (sessionKey ? this.childOrigins.get(sessionKey) : undefined) ?? "other" };
391
+ }
354
392
  return { sessionKey, kind: this.kindOfSession(source) };
355
393
  }
356
394
  if (isChildSession(sessionKey)) {
@@ -431,11 +469,16 @@ export class TurnContextTracker {
431
469
  const kind = sessionKey ? this.lastKindBySession.get(sessionKey) : undefined;
432
470
  return kind && kind !== "unknown" ? kind : "other";
433
471
  }
472
+ /** Drops a run for good: the eviction past `maxRuns`. */
434
473
  forget(runId) {
435
- const entry = this.runs.get(runId);
474
+ this.releaseSession(runId);
436
475
  this.runs.delete(runId);
437
- if (entry?.sessionKey && this.latestBySession.get(entry.sessionKey) === runId) {
438
- this.latestBySession.delete(entry.sessionKey);
476
+ }
477
+ /** Stops `runId` being its session's latest run; a newer run in that session is left alone. */
478
+ releaseSession(runId) {
479
+ const sessionKey = this.runs.get(runId)?.sessionKey;
480
+ if (sessionKey && this.latestBySession.get(sessionKey) === runId) {
481
+ this.latestBySession.delete(sessionKey);
439
482
  }
440
483
  }
441
484
  }
@@ -498,8 +541,8 @@ export function turnClassificationAvailable(params) {
498
541
  * conversation hook on any host), `before_tool_call` / `after_tool_call`
499
542
  * (observe `sessions_send` and `sessions_spawn` calls and their results only,
500
543
  * to identify the run that started a target or a child; return nothing, so
501
- * they decide nothing) and `agent_end` (forgets; refused without conversation access, then
502
- * the tracker's bound applies). Handlers never throw.
544
+ * they decide nothing) and `agent_end` (the run stops being its session's latest; refused
545
+ * without conversation access, where nothing is recorded anyway). Handlers never throw.
503
546
  */
504
547
  export function registerTurnContextHooks(params) {
505
548
  const { api, tracker } = params;