@senpi/runtime 3.0.180 → 3.0.181

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 (135) hide show
  1. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +8 -0
  2. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -1
  3. package/dist/actions/llm-decision/openclaw-llm-decision.js +56 -1
  4. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
  5. package/dist/approvals/approval-store.d.ts +37 -7
  6. package/dist/approvals/approval-store.d.ts.map +1 -1
  7. package/dist/approvals/approval-store.js +127 -23
  8. package/dist/approvals/approval-store.js.map +1 -1
  9. package/dist/approvals/telemetry.d.ts +27 -3
  10. package/dist/approvals/telemetry.d.ts.map +1 -1
  11. package/dist/approvals/telemetry.js +8 -4
  12. package/dist/approvals/telemetry.js.map +1 -1
  13. package/dist/approvals/tool-approval-gate.d.ts +79 -0
  14. package/dist/approvals/tool-approval-gate.d.ts.map +1 -1
  15. package/dist/approvals/tool-approval-gate.js +184 -15
  16. package/dist/approvals/tool-approval-gate.js.map +1 -1
  17. package/dist/approvals/turn-context.d.ts +271 -0
  18. package/dist/approvals/turn-context.d.ts.map +1 -0
  19. package/dist/approvals/turn-context.js +551 -0
  20. package/dist/approvals/turn-context.js.map +1 -0
  21. package/dist/cli/guide-commands.d.ts.map +1 -1
  22. package/dist/cli/guide-commands.js +17 -3
  23. package/dist/cli/guide-commands.js.map +1 -1
  24. package/dist/cli/senpi-commands.d.ts.map +1 -1
  25. package/dist/cli/senpi-commands.js +71 -4
  26. package/dist/cli/senpi-commands.js.map +1 -1
  27. package/dist/deploy/job.d.ts +32 -0
  28. package/dist/deploy/job.d.ts.map +1 -1
  29. package/dist/deploy/job.js +72 -7
  30. package/dist/deploy/job.js.map +1 -1
  31. package/dist/deploy/register.d.ts +11 -0
  32. package/dist/deploy/register.d.ts.map +1 -1
  33. package/dist/deploy/register.js +84 -2
  34. package/dist/deploy/register.js.map +1 -1
  35. package/dist/host/openclaw-host.d.ts +138 -0
  36. package/dist/host/openclaw-host.d.ts.map +1 -0
  37. package/dist/host/openclaw-host.js +177 -0
  38. package/dist/host/openclaw-host.js.map +1 -0
  39. package/dist/index.d.ts +46 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +220 -12
  42. package/dist/index.js.map +1 -1
  43. package/dist/runtime/auto-update/coordinator.d.ts +203 -0
  44. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
  45. package/dist/runtime/auto-update/coordinator.js +621 -12
  46. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  47. package/dist/runtime/auto-update/gateway-restart.d.ts +60 -1
  48. package/dist/runtime/auto-update/gateway-restart.d.ts.map +1 -1
  49. package/dist/runtime/auto-update/gateway-restart.js +95 -21
  50. package/dist/runtime/auto-update/gateway-restart.js.map +1 -1
  51. package/dist/runtime/auto-update/idle-gate.d.ts +139 -0
  52. package/dist/runtime/auto-update/idle-gate.d.ts.map +1 -0
  53. package/dist/runtime/auto-update/idle-gate.js +217 -0
  54. package/dist/runtime/auto-update/idle-gate.js.map +1 -0
  55. package/dist/runtime/auto-update/install-results.d.ts +130 -0
  56. package/dist/runtime/auto-update/install-results.d.ts.map +1 -0
  57. package/dist/runtime/auto-update/install-results.js +264 -0
  58. package/dist/runtime/auto-update/install-results.js.map +1 -0
  59. package/dist/runtime/auto-update/money-call-tracker.d.ts +36 -0
  60. package/dist/runtime/auto-update/money-call-tracker.d.ts.map +1 -0
  61. package/dist/runtime/auto-update/money-call-tracker.js +129 -0
  62. package/dist/runtime/auto-update/money-call-tracker.js.map +1 -0
  63. package/dist/runtime/auto-update/register-idle-gate.d.ts +70 -0
  64. package/dist/runtime/auto-update/register-idle-gate.d.ts.map +1 -0
  65. package/dist/runtime/auto-update/register-idle-gate.js +123 -0
  66. package/dist/runtime/auto-update/register-idle-gate.js.map +1 -0
  67. package/dist/runtime/auto-update/run-update-command.d.ts +13 -0
  68. package/dist/runtime/auto-update/run-update-command.d.ts.map +1 -1
  69. package/dist/runtime/auto-update/run-update-command.js +18 -0
  70. package/dist/runtime/auto-update/run-update-command.js.map +1 -1
  71. package/dist/runtime/auto-update/state-store.d.ts +14 -1
  72. package/dist/runtime/auto-update/state-store.d.ts.map +1 -1
  73. package/dist/runtime/auto-update/state-store.js +37 -3
  74. package/dist/runtime/auto-update/state-store.js.map +1 -1
  75. package/dist/runtime/auto-update/types.d.ts +51 -0
  76. package/dist/runtime/auto-update/types.d.ts.map +1 -1
  77. package/dist/runtime/auto-update/types.js.map +1 -1
  78. package/dist/runtime/auto-update/update-marker.d.ts +95 -0
  79. package/dist/runtime/auto-update/update-marker.d.ts.map +1 -0
  80. package/dist/runtime/auto-update/update-marker.js +185 -0
  81. package/dist/runtime/auto-update/update-marker.js.map +1 -0
  82. package/dist/runtime/auto-update/update-schedule.d.ts +57 -0
  83. package/dist/runtime/auto-update/update-schedule.d.ts.map +1 -0
  84. package/dist/runtime/auto-update/update-schedule.js +75 -0
  85. package/dist/runtime/auto-update/update-schedule.js.map +1 -0
  86. package/dist/runtime/decision-errors.d.ts +7 -0
  87. package/dist/runtime/decision-errors.d.ts.map +1 -1
  88. package/dist/runtime/decision-errors.js +15 -0
  89. package/dist/runtime/decision-errors.js.map +1 -1
  90. package/dist/senpi/client.d.ts +25 -0
  91. package/dist/senpi/client.d.ts.map +1 -1
  92. package/dist/senpi/client.js +56 -0
  93. package/dist/senpi/client.js.map +1 -1
  94. package/dist/telemetry/metrics.d.ts +14 -0
  95. package/dist/telemetry/metrics.d.ts.map +1 -1
  96. package/dist/telemetry/metrics.js +24 -0
  97. package/dist/telemetry/metrics.js.map +1 -1
  98. package/dist/telemetry/otel-sdk.d.ts +12 -0
  99. package/dist/telemetry/otel-sdk.d.ts.map +1 -1
  100. package/dist/telemetry/otel-sdk.js +47 -1
  101. package/dist/telemetry/otel-sdk.js.map +1 -1
  102. package/dist/telemetry/spans/span-hooks.d.ts +18 -1
  103. package/dist/telemetry/spans/span-hooks.d.ts.map +1 -1
  104. package/dist/telemetry/spans/span-hooks.js +306 -96
  105. package/dist/telemetry/spans/span-hooks.js.map +1 -1
  106. package/dist/telemetry/tool-plane.d.ts +2 -0
  107. package/dist/telemetry/tool-plane.d.ts.map +1 -1
  108. package/dist/telemetry/tool-plane.js +1 -0
  109. package/dist/telemetry/tool-plane.js.map +1 -1
  110. package/dist/tool-surface/crib-cache.d.ts +21 -0
  111. package/dist/tool-surface/crib-cache.d.ts.map +1 -0
  112. package/dist/tool-surface/crib-cache.js +54 -0
  113. package/dist/tool-surface/crib-cache.js.map +1 -0
  114. package/dist/tool-surface/crib-hook.d.ts +78 -0
  115. package/dist/tool-surface/crib-hook.d.ts.map +1 -0
  116. package/dist/tool-surface/crib-hook.js +217 -0
  117. package/dist/tool-surface/crib-hook.js.map +1 -0
  118. package/dist/tool-surface/crib-sheet.d.ts +56 -0
  119. package/dist/tool-surface/crib-sheet.d.ts.map +1 -0
  120. package/dist/tool-surface/crib-sheet.js +129 -0
  121. package/dist/tool-surface/crib-sheet.js.map +1 -0
  122. package/dist/tool-surface/mcp-tool-source.d.ts +64 -0
  123. package/dist/tool-surface/mcp-tool-source.d.ts.map +1 -0
  124. package/dist/tool-surface/mcp-tool-source.js +189 -0
  125. package/dist/tool-surface/mcp-tool-source.js.map +1 -0
  126. package/dist/utils/event-catalog.d.ts +117 -5
  127. package/dist/utils/event-catalog.d.ts.map +1 -1
  128. package/dist/utils/event-catalog.js +19 -0
  129. package/dist/utils/event-catalog.js.map +1 -1
  130. package/dist/widgets/tool.d.ts +9 -0
  131. package/dist/widgets/tool.d.ts.map +1 -1
  132. package/dist/widgets/tool.js +1 -0
  133. package/dist/widgets/tool.js.map +1 -1
  134. package/openclaw.plugin.json +11 -1
  135. package/package.json +5 -2
@@ -0,0 +1,551 @@
1
+ /**
2
+ * Which kind of turn a tool call belongs to: a direct user chat, a cron run, a
3
+ * heartbeat, or another run (R6, D13, D15).
4
+ *
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`),
7
+ * but `before_prompt_build`'s agent context does (`trigger`, same field on
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.
12
+ *
13
+ * On 10.x `before_prompt_build` is a conversation hook: without
14
+ * `plugins.entries.runtime.hooks.allowConversationAccess` nothing is recorded
15
+ * and every lookup reads `unknown` ({@link turnClassificationAvailable} says so
16
+ * at boot).
17
+ */
18
+ /**
19
+ * Maps a bare host run trigger to a {@link TurnKind}: `user` is a chat;
20
+ * `cron` and `heartbeat` are scheduled runs; any other trigger (`event`,
21
+ * `memory`, `manual`, `overflow`) is `other`; a missing one is `unknown`. The
22
+ * tracker uses it only after the run's provenance has been checked: a
23
+ * `user` trigger alone does not make a run a chat (see {@link TurnContextTracker}).
24
+ */
25
+ export function turnKindOf(trigger) {
26
+ if (typeof trigger !== "string" || trigger.trim() === "")
27
+ return "unknown";
28
+ const t = trigger.trim();
29
+ if (t === "user")
30
+ return "chat";
31
+ if (t === "cron" || t === "heartbeat")
32
+ return t;
33
+ return "other";
34
+ }
35
+ function nonEmpty(value) {
36
+ return typeof value === "string" && value.length > 0 ? value : undefined;
37
+ }
38
+ function rec(value) {
39
+ return value && typeof value === "object" ? value : undefined;
40
+ }
41
+ /** The part of `agent:<agentId>:<rest>` after the agent id, lowercased; the whole key when it has another shape. */
42
+ function sessionRest(sessionKey) {
43
+ if (!sessionKey)
44
+ return "";
45
+ const parts = sessionKey.split(":");
46
+ return (parts[0] === "agent" && parts.length > 2 ? parts.slice(2).join(":") : sessionKey).toLowerCase();
47
+ }
48
+ /**
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`)
52
+ * or an ACP child `agent:<id>:acp:<uuid>`.
53
+ */
54
+ export function isChildSession(sessionKey) {
55
+ const rest = sessionRest(sessionKey);
56
+ return rest.startsWith("subagent:") || rest.startsWith("acp:");
57
+ }
58
+ /** The agent id of an `agent:<agentId>:<rest>` key, lowercased; `undefined` for another shape. */
59
+ function sessionAgent(sessionKey) {
60
+ const parts = sessionKey?.trim().toLowerCase().split(":");
61
+ return parts && parts[0] === "agent" && parts.length > 2 ? parts[1] : undefined;
62
+ }
63
+ /** Bounded insertion-ordered map: setting a key moves it to the end; the oldest key goes past `max`. */
64
+ function boundedSet(map, key, value, max) {
65
+ map.delete(key);
66
+ map.set(key, value);
67
+ while (map.size > max)
68
+ map.delete(map.keys().next().value);
69
+ }
70
+ /**
71
+ * How long a `sessions_send` / `sessions_spawn` call stays matchable to the
72
+ * run it starts (the send's target run, the spawned child). That run normally
73
+ * starts within seconds; a target busy with another run queues the message,
74
+ * so the window is generous. Past it, the origin run is unidentified and the
75
+ * started run is not chat.
76
+ */
77
+ export const SESSIONS_SEND_MATCH_WINDOW_MS = 10 * 60_000;
78
+ /** Pending origin calls (and open send exchanges) kept at once; the oldest are dropped first. */
79
+ const MAX_ORIGIN_CALLS = 256;
80
+ /**
81
+ * Whether a `sessions_send` target as named (`agent:main:ops`, or a short
82
+ * `ops`) is the session `sessionKey`. A short name matches the key's tail.
83
+ */
84
+ function targetMatches(named, sessionKey) {
85
+ if (!named || !sessionKey)
86
+ return false;
87
+ const n = named.trim().toLowerCase();
88
+ const k = sessionKey.trim().toLowerCase();
89
+ return n === k || (!n.startsWith("agent:") && k.endsWith(`:${n}`));
90
+ }
91
+ /** The JSON details of a 10.10 tool result (`jsonResult`: `{ content: [{ text }], details }`, `tool-results.ts:10-12`). */
92
+ function resultDetails(result) {
93
+ const r = rec(result);
94
+ const details = rec(r?.details);
95
+ if (details)
96
+ return details;
97
+ const text = rec(Array.isArray(r?.content) ? r.content[0] : undefined)?.text;
98
+ if (typeof text === "string") {
99
+ try {
100
+ return rec(JSON.parse(text));
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
106
+ return typeof r?.status === "string" ? r : undefined;
107
+ }
108
+ /**
109
+ * Whether a `sessions_send` result says no target run was (or will be)
110
+ * started for it, or that its run already finished, so the pending call can
111
+ * never be matched correctly (10.10 `sessions-send-tool.schema.ts:30-104`).
112
+ */
113
+ function sendStartedNoRunToMatch(d) {
114
+ const status = d.status;
115
+ if ((status === "error" || status === "forbidden") && d.sentBeforeError !== true)
116
+ return true;
117
+ if (status === "queued" && d.runStarted === false)
118
+ return true;
119
+ if (status === "accepted" && d.targetDisposition === "steered")
120
+ return true;
121
+ return status === "ok" || status === "no_reply";
122
+ }
123
+ /**
124
+ * Recent runs by id, bounded, plus what each session's last run was and which
125
+ * kind each spawned child session inherited.
126
+ *
127
+ * Classification (D15: only a run positively identified as a direct chat turn
128
+ * is `chat`; anything not resolvable is not chat), from the
129
+ * `before_prompt_build` context (10.10 `attempt-prompt-build.ts:150-159`:
130
+ * `runId`, `jobId`, `sessionKey`, `trigger`, `inputProvenance`; 5.7/5.12 carry
131
+ * `runId`, `sessionKey`, `trigger` only, `attempt.ts:2563-2574` / `:2948-2959`):
132
+ *
133
+ * 1. `trigger` `cron` / `heartbeat` → that kind.
134
+ * 2. A `sessions_send` target (`inputProvenance` `inter_session` with
135
+ * `sourceTool: "sessions_send"`, 10.10 `sessions-send-tool.ts:477-483`) →
136
+ * the kind of the run that SENT it. The provenance names only the source
137
+ * session, not the sending run, so the sending run is identified from the
138
+ * `sessions_send` call itself: {@link onToolCall} records the calling run's
139
+ * kind with its source session and its named target at `before_tool_call`.
140
+ * A target run consumes the oldest pending send from `sourceSessionKey`
141
+ * whose target is the run's own session, inside
142
+ * {@link SESSIONS_SEND_MATCH_WINDOW_MS}. {@link onToolResult} drops a send
143
+ * whose result says no run was started for it (an error, a `steered` or
144
+ * unstarted `queued` delivery) or that it already finished, and gives a
145
+ * send addressed by `label` / `agentId` its resolved target. Until that
146
+ * result arrives (in wait mode the target run starts while the call is
147
+ * still open), such a send matches a run in any session of the named
148
+ * agent (any agent for a bare label), and only when no send with an exact
149
+ * target matches; candidates of different kinds still read `other`.
150
+ * The reply-back run is recognised too (10.10 `sessions-send-tool.a2a.ts:100,201-208`).
151
+ * It runs in the REQUESTER session, with the target as `sourceSessionKey`
152
+ * and `sourceTool: "sessions_send"`. It takes the kind of the send whose
153
+ * target run started (an open exchange, requester → target). It never
154
+ * takes the requester session's own pending sends.
155
+ * No match, an unclassified sender, or several candidates of different
156
+ * kinds (two runs sending at once; a forward send and a reply-back that
157
+ * could both explain the run) leave the origin unidentified → `other`. A
158
+ * later run on the source session (a chat starting after a heartbeat sent)
159
+ * never changes the answer.
160
+ * Other `inter_session` sources (subagent announce, exec-approval
161
+ * follow-up, `bash-tools.exec-approval-followup.ts:338-342`) → the kind of
162
+ * the `sourceSessionKey` session's last run; `other` when that is unknown.
163
+ * 3. A child session (`subagent:` / `acp:`) → the kind of the run that
164
+ * spawned it. `subagent_spawned` names only the requester session (10.10
165
+ * `subagent-spawn-lifecycle.ts:67-71`: ctx `requesterSessionKey`,
166
+ * `childSessionKey`), so the spawning run is identified the same way as a
167
+ * `sessions_send` sender: {@link onToolCall} records the run's kind at its
168
+ * `sessions_spawn` call (`sessions-spawn-tool.ts:355`), and
169
+ * `subagent_spawned` consumes the oldest pending spawn from the requester
170
+ * session, with the same window and ambiguity rules. Unmatched → `other`.
171
+ * 10.10 hard-codes `trigger: "user"` for these runs
172
+ * (`attempt-execution.ts:349`), and fires `subagent_spawned` after the
173
+ * gateway accepted the child (`subagent-spawn.ts:667`), so a child
174
+ * classified first reads `other` until its origin arrives.
175
+ * 4. `trigger` `event` or `inputProvenance.kind === "internal_system"` (a
176
+ * continuation after background work, `session-event-handoff.ts:509`;
177
+ * neither carries the originating run) → `other`.
178
+ * 5. A `jobId`, or a `cron:` session, with a non-cron trigger → `other`.
179
+ * 6. `trigger` `user` with no provenance or `external_user` provenance (a
180
+ * webchat `chat.send` turn: `reply-turn-kind.ts:18-22`,
181
+ * `chat-send-user-turn.ts:206`) → `chat`.
182
+ * 7. Any other trigger → `other`; none → `unknown`.
183
+ *
184
+ * Known limit: a gateway `agent` call with no provenance on a main session
185
+ * key (an operator `openclaw agent` run) reads as chat; nothing in the
186
+ * context tells it apart from a webchat turn.
187
+ */
188
+ export class TurnContextTracker {
189
+ maxRuns;
190
+ now;
191
+ runs = new Map();
192
+ latestBySession = new Map();
193
+ /** The kind of each session's last classified run; kept past `agent_end`, for inheritance. */
194
+ lastKindBySession = new Map();
195
+ /** Child session key → the kind it inherited from its requester. */
196
+ childOrigins = new Map();
197
+ /** `sessions_send` / `sessions_spawn` calls waiting for the run they start, oldest first. */
198
+ origins = [];
199
+ /** Sends whose target run started, waiting for their reply-back run, oldest first. */
200
+ exchanges = [];
201
+ /**
202
+ * @param maxRuns - Runs kept at once; the oldest is dropped past it (a missed `agent_end`).
203
+ * @param now - Clock for the `sessions_send` match window.
204
+ */
205
+ constructor(maxRuns = 256, now = Date.now) {
206
+ this.maxRuns = maxRuns;
207
+ this.now = now;
208
+ }
209
+ /**
210
+ * Records a `sessions_send` or `sessions_spawn` call from a `before_tool_call`
211
+ * event/context: the calling run's kind (`unknown` when that run was never
212
+ * classified), its session keys (the call's and the run's own), and for a
213
+ * send the target it names (`params.sessionKey`; a `label` or `agentId`
214
+ * marks it unresolved until the result names it). Any other tool, or
215
+ * malformed input, is ignored.
216
+ */
217
+ onToolCall(event, ctx) {
218
+ const e = rec(event);
219
+ const c = rec(ctx);
220
+ const tool = nonEmpty(e?.toolName);
221
+ if (tool !== "sessions_send" && tool !== "sessions_spawn")
222
+ return;
223
+ const runId = nonEmpty(e?.runId) ?? nonEmpty(c?.runId);
224
+ const run = runId ? this.runs.get(runId) : undefined;
225
+ const kind = run ? this.lookup({ runId }).kind : "unknown";
226
+ const sources = [...new Set([nonEmpty(c?.sessionKey), run?.sessionKey])].filter((k) => Boolean(k));
227
+ if (sources.length === 0)
228
+ return;
229
+ this.prune();
230
+ const params = rec(e?.params);
231
+ const target = tool === "sessions_send" ? nonEmpty(params?.sessionKey) : undefined;
232
+ const targetAgent = nonEmpty(params?.agentId)?.trim().toLowerCase();
233
+ const unresolved = tool === "sessions_send" && !target && (nonEmpty(params?.label) || targetAgent)
234
+ ? { ...(targetAgent ? { targetAgent } : {}) }
235
+ : undefined;
236
+ const toolCallId = nonEmpty(e?.toolCallId) ?? nonEmpty(c?.toolCallId);
237
+ this.origins.push({
238
+ tool,
239
+ kind,
240
+ at: this.now(),
241
+ sources,
242
+ ...(target ? { target } : {}),
243
+ ...(unresolved ? { unresolved } : {}),
244
+ ...(toolCallId ? { toolCallId } : {}),
245
+ });
246
+ while (this.origins.length > MAX_ORIGIN_CALLS)
247
+ this.origins.shift();
248
+ }
249
+ /**
250
+ * Reads a `sessions_send` / `sessions_spawn` result from an `after_tool_call`
251
+ * event: drops the pending call when the result says it started no run to
252
+ * match (a failed spawn; for a send, {@link sendStartedNoRunToMatch}), and
253
+ * gives a send its resolved target session. Unknown calls, other tools and
254
+ * unreadable results are ignored.
255
+ */
256
+ onToolResult(event, ctx) {
257
+ const e = rec(event);
258
+ const tool = nonEmpty(e?.toolName);
259
+ if (tool !== "sessions_send" && tool !== "sessions_spawn")
260
+ return;
261
+ const toolCallId = nonEmpty(e?.toolCallId) ?? nonEmpty(rec(ctx)?.toolCallId);
262
+ if (!toolCallId)
263
+ return;
264
+ const index = this.origins.findIndex((o) => o.tool === tool && o.toolCallId === toolCallId);
265
+ if (index < 0)
266
+ return;
267
+ const details = resultDetails(e?.result);
268
+ if (!details)
269
+ return;
270
+ const failed = details.status === "error" || details.status === "forbidden";
271
+ if (tool === "sessions_spawn" ? failed : sendStartedNoRunToMatch(details)) {
272
+ this.origins.splice(index, 1);
273
+ return;
274
+ }
275
+ const resolved = nonEmpty(details.sessionKey);
276
+ if (tool === "sessions_send" && resolved) {
277
+ this.origins[index].target = resolved;
278
+ delete this.origins[index].unresolved;
279
+ }
280
+ }
281
+ /**
282
+ * Records a run from a `before_prompt_build` agent context. Malformed input
283
+ * is ignored. A run is classified once: 10.x fires the hook again for each
284
+ * 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.
288
+ */
289
+ onPromptBuild(ctx) {
290
+ const c = rec(ctx);
291
+ const runId = nonEmpty(c?.runId);
292
+ if (!runId)
293
+ return;
294
+ const sessionKey = nonEmpty(c?.sessionKey);
295
+ const entry = this.runs.get(runId) ?? this.classify(c ?? {}, sessionKey);
296
+ this.runs.delete(runId);
297
+ this.runs.set(runId, entry);
298
+ if (sessionKey) {
299
+ this.latestBySession.set(sessionKey, runId);
300
+ boundedSet(this.lastKindBySession, sessionKey, entry.kind, this.maxRuns * 2);
301
+ }
302
+ while (this.runs.size > this.maxRuns) {
303
+ const oldest = this.runs.keys().next().value;
304
+ this.forget(oldest);
305
+ }
306
+ }
307
+ /**
308
+ * Records a spawned child's origin from a `subagent_spawned` context/event:
309
+ * the kind of the run whose `sessions_spawn` call is pending in the requester
310
+ * session (consumed), or `other` when none matches. Malformed input is ignored.
311
+ */
312
+ onSubagentSpawned(ctx, event) {
313
+ const c = rec(ctx);
314
+ const e = rec(event);
315
+ const child = nonEmpty(c?.childSessionKey) ?? nonEmpty(e?.childSessionKey);
316
+ if (!child)
317
+ return;
318
+ const requester = nonEmpty(c?.requesterSessionKey) ?? nonEmpty(rec(e?.requester)?.sessionKey);
319
+ const kind = this.takeOrigin("sessions_spawn", requester)?.kind ?? "other";
320
+ boundedSet(this.childOrigins, child, kind, this.maxRuns * 2);
321
+ boundedSet(this.lastKindBySession, child, kind, this.maxRuns * 2);
322
+ }
323
+ /** Forgets a run (its `agent_end`). */
324
+ onRunEnd(runId) {
325
+ const id = nonEmpty(runId);
326
+ if (id)
327
+ this.forget(id);
328
+ }
329
+ /**
330
+ * The turn of a tool call: by run id, else by the session's latest recorded
331
+ * run, else `unknown` with the given session key.
332
+ */
333
+ lookup(params) {
334
+ const sessionKey = nonEmpty(params.sessionKey);
335
+ const runId = nonEmpty(params.runId) ?? (sessionKey ? this.latestBySession.get(sessionKey) : undefined);
336
+ const entry = runId ? this.runs.get(runId) : undefined;
337
+ const key = entry?.sessionKey ?? sessionKey;
338
+ let kind = entry?.kind ?? "unknown";
339
+ if (entry?.pendingChild && entry.sessionKey)
340
+ kind = this.childOrigins.get(entry.sessionKey) ?? entry.kind;
341
+ return { ...(key ? { sessionKey: key } : {}), kind };
342
+ }
343
+ classify(c, sessionKey) {
344
+ const trigger = nonEmpty(c.trigger)?.trim();
345
+ if (trigger === "cron" || trigger === "heartbeat")
346
+ return { sessionKey, kind: trigger };
347
+ const provenance = rec(c.inputProvenance);
348
+ const provenanceKind = nonEmpty(provenance?.kind);
349
+ if (provenanceKind === "inter_session") {
350
+ const source = nonEmpty(provenance?.sourceSessionKey);
351
+ if (nonEmpty(provenance?.sourceTool) === "sessions_send") {
352
+ return { sessionKey, kind: this.sendOriginKind(source, sessionKey) };
353
+ }
354
+ return { sessionKey, kind: this.kindOfSession(source) };
355
+ }
356
+ if (isChildSession(sessionKey)) {
357
+ const inherited = sessionKey ? this.childOrigins.get(sessionKey) : undefined;
358
+ return inherited ? { sessionKey, kind: inherited } : { sessionKey, kind: "other", pendingChild: true };
359
+ }
360
+ if (trigger === "event" || provenanceKind === "internal_system")
361
+ return { sessionKey, kind: "other" };
362
+ if (nonEmpty(c.jobId) || sessionRest(sessionKey).startsWith("cron:"))
363
+ return { sessionKey, kind: "other" };
364
+ if (trigger === "user" && (provenanceKind === undefined || provenanceKind === "external_user")) {
365
+ return { sessionKey, kind: "chat" };
366
+ }
367
+ return { sessionKey, kind: trigger === undefined ? "unknown" : "other" };
368
+ }
369
+ /** Drops origin calls and exchanges older than the match window. */
370
+ prune() {
371
+ const at = this.now();
372
+ this.origins = this.origins.filter((o) => at - o.at <= SESSIONS_SEND_MATCH_WINDOW_MS);
373
+ this.exchanges = this.exchanges.filter((x) => at - x.at <= SESSIONS_SEND_MATCH_WINDOW_MS);
374
+ }
375
+ /** One kind from several candidates: theirs when all agree and it is known, else `other`. */
376
+ static agreed(kinds) {
377
+ const set = new Set(kinds);
378
+ const [only] = [...set];
379
+ return set.size === 1 && only !== "unknown" ? only : "other";
380
+ }
381
+ /**
382
+ * The pending `tool` call from `source` (for a send: aimed at `target`)
383
+ * that started this run, consumed, with the kind the candidates agree on;
384
+ * `undefined` when none matches.
385
+ */
386
+ takeOrigin(tool, source, target) {
387
+ if (!source)
388
+ return undefined;
389
+ this.prune();
390
+ const fromSource = this.origins.filter((o) => o.tool === tool && o.sources.includes(source));
391
+ let candidates = tool === "sessions_spawn" ? fromSource : fromSource.filter((o) => targetMatches(o.target, target));
392
+ if (candidates.length === 0 && tool === "sessions_send") {
393
+ // A send addressed by label or agent id whose result has not named its
394
+ // target yet: an exact match always wins over these.
395
+ const agent = sessionAgent(target);
396
+ candidates = fromSource.filter((o) => o.unresolved && target !== undefined && (o.unresolved.targetAgent === undefined || o.unresolved.targetAgent === agent));
397
+ }
398
+ const call = candidates[0];
399
+ if (!call)
400
+ return undefined;
401
+ this.origins.splice(this.origins.indexOf(call), 1);
402
+ return { kind: TurnContextTracker.agreed(candidates.map((o) => o.kind)), call };
403
+ }
404
+ /**
405
+ * The kind of a run whose provenance says `sessions_send` from `source`, in
406
+ * `sessionKey`: either a target run (a pending send from `source` aimed at
407
+ * this session) or a reply-back run (an open exchange from this session to
408
+ * `source`). Both possible with different kinds, or neither → `other`.
409
+ */
410
+ sendOriginKind(source, sessionKey) {
411
+ const forward = this.takeOrigin("sessions_send", source, sessionKey);
412
+ const replies = sessionKey
413
+ ? this.exchanges.filter((x) => x.requesters.includes(sessionKey) && targetMatches(x.target, source))
414
+ : [];
415
+ const reply = replies[0];
416
+ if (reply)
417
+ this.exchanges.splice(this.exchanges.indexOf(reply), 1);
418
+ if (forward && sessionKey) {
419
+ this.exchanges.push({ kind: forward.kind, at: this.now(), requesters: forward.call.sources, target: sessionKey });
420
+ while (this.exchanges.length > MAX_ORIGIN_CALLS)
421
+ this.exchanges.shift();
422
+ }
423
+ const kinds = [
424
+ ...(forward ? [forward.kind] : []),
425
+ ...(reply ? [TurnContextTracker.agreed(replies.map((x) => x.kind))] : []),
426
+ ];
427
+ return kinds.length === 0 ? "other" : TurnContextTracker.agreed(kinds);
428
+ }
429
+ /** A session's last classified run kind, or `other` when it is unknown (not resolvable is not chat). */
430
+ kindOfSession(sessionKey) {
431
+ const kind = sessionKey ? this.lastKindBySession.get(sessionKey) : undefined;
432
+ return kind && kind !== "unknown" ? kind : "other";
433
+ }
434
+ forget(runId) {
435
+ const entry = this.runs.get(runId);
436
+ this.runs.delete(runId);
437
+ if (entry?.sessionKey && this.latestBySession.get(entry.sessionKey) === runId) {
438
+ this.latestBySession.delete(entry.sessionKey);
439
+ }
440
+ }
441
+ }
442
+ /**
443
+ * Whether this host lets the runtime classify the run a gated call belongs to:
444
+ * one boot-time fact, never decided per run (D15). Both halves must hold.
445
+ *
446
+ * 1. **The host links a tool call to its run.** The gate reads the run id that
447
+ * `before_tool_call` carries. 5.12 and 5.7 add the bundle-MCP tools (every
448
+ * `senpi__` tool) unwrapped and split them with no hook context (5.12
449
+ * `pi-embedded-runner/run/attempt.ts:1228-1235,1275,1737`; 5.7
450
+ * `attempt.ts:1035,1081`), so `pi-tool-definition-adapter.ts:240-244` runs the
451
+ * hook with no ctx and the call arrives with no run id or session key
452
+ * (`pi-tools.before-tool-call.ts:525-534,594-600`). Every `senpi__` call would
453
+ * read `unknown`, so a 5.x host is never available, whatever its config.
454
+ * The first tag that links is 2026.6.1 (`splitSdkTools` passes
455
+ * `catalogToolHookContext`, which carries `runId`). Since 9.5 the bundle
456
+ * tools are also wrapped up front (`attempt-bundle-tools.ts:204` on 10.10).
457
+ * The runtime gates on the modern host (>= 2026.8.1), which includes that.
458
+ * 2. **The conversation hooks register.** The tracker is fed by
459
+ * `before_prompt_build`, a conversation hook on 10.x. A non-bundled plugin's
460
+ * registration is dropped with only a warn diagnostic unless
461
+ * `plugins.entries.<id>.hooks.allowConversationAccess` is `true` (10.10
462
+ * `registry-registrars-tools-hooks.ts:53-63,404-417`,
463
+ * `hook-policy-decisions.ts:10-16`). `allowPromptInjection: false` drops it
464
+ * too (5.12 `registry.ts:2288-2296`).
465
+ *
466
+ * @param config - The whole OpenClaw config the plugin was registered with (`api.config`).
467
+ * @returns `reason` for status surfaces. `configFix` only when a config change
468
+ * would make it available; a host-version limit has none.
469
+ */
470
+ export function turnClassificationAvailable(params) {
471
+ if (!params.modernHost) {
472
+ return {
473
+ available: false,
474
+ reason: "host cannot link tool calls to runs: OpenClaw 5.x runs MCP tools without their run context",
475
+ };
476
+ }
477
+ const hooks = rec(rec(rec(rec(rec(params.config)?.plugins)?.entries)?.[params.pluginId])?.hooks);
478
+ const base = `plugins.entries.${params.pluginId}.hooks`;
479
+ if (hooks?.allowPromptInjection === false) {
480
+ return {
481
+ available: false,
482
+ reason: `${base}.allowPromptInjection is false, so before_prompt_build is refused`,
483
+ configFix: `remove ${base}.allowPromptInjection: false`,
484
+ };
485
+ }
486
+ if (hooks?.allowConversationAccess !== true) {
487
+ return {
488
+ available: false,
489
+ reason: `${base}.allowConversationAccess is not true, so OpenClaw 10.x refuses before_prompt_build`,
490
+ configFix: `set ${base}.allowConversationAccess to true`,
491
+ };
492
+ }
493
+ return { available: true };
494
+ }
495
+ /**
496
+ * Feeds `tracker` from `before_prompt_build` (records; returns nothing, so the
497
+ * prompt is untouched), `subagent_spawned` (a child's origin; not a
498
+ * conversation hook on any host), `before_tool_call` / `after_tool_call`
499
+ * (observe `sessions_send` and `sessions_spawn` calls and their results only,
500
+ * 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.
503
+ */
504
+ export function registerTurnContextHooks(params) {
505
+ const { api, tracker } = params;
506
+ api.on("before_prompt_build", (_event, ctx) => {
507
+ try {
508
+ tracker.onPromptBuild(ctx);
509
+ }
510
+ catch {
511
+ // never disturb a turn
512
+ }
513
+ return undefined;
514
+ });
515
+ api.on("subagent_spawned", (event, ctx) => {
516
+ try {
517
+ tracker.onSubagentSpawned(ctx, event);
518
+ }
519
+ catch {
520
+ // never disturb a turn
521
+ }
522
+ return undefined;
523
+ });
524
+ api.on("before_tool_call", (event, ctx) => {
525
+ try {
526
+ tracker.onToolCall(event, ctx);
527
+ }
528
+ catch {
529
+ // never disturb a tool call
530
+ }
531
+ return undefined;
532
+ });
533
+ api.on("after_tool_call", (event, ctx) => {
534
+ try {
535
+ tracker.onToolResult(event, ctx);
536
+ }
537
+ catch {
538
+ // never disturb a tool call
539
+ }
540
+ return undefined;
541
+ });
542
+ api.on("agent_end", (_event, ctx) => {
543
+ try {
544
+ tracker.onRunEnd(rec(ctx)?.runId);
545
+ }
546
+ catch {
547
+ // never disturb a turn
548
+ }
549
+ });
550
+ }
551
+ //# sourceMappingURL=turn-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-context.js","sourceRoot":"","sources":["../../src/approvals/turn-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+gBH,eAAO,MAAM,eAAe,QA4XpB,CAAC;AAIT,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CAiDN"}
1
+ {"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+gBH,eAAO,MAAM,eAAe,QA0YpB,CAAC;AAIT,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CAiDN"}
@@ -741,9 +741,23 @@ senpi auto-update — Plugin auto-update (the runtime package's own version chec
741
741
  (exit 1, UNAVAILABLE) when auto-update is off in
742
742
  config or the coordinator is not running. A forced
743
743
  check also runs the
744
- skills-manager tick, and on the path that installs an
745
- update it requests a gateway restart — so the call may
746
- return nothing at all
744
+ skills-manager tick. On OpenClaw 5.x the path that
745
+ installs an update requests a gateway restart, so the
746
+ call may return nothing at all. On 10.x nothing is
747
+ installed in the call: the update waits for this box's
748
+ spread slot and an idle box (no user turn, approval,
749
+ money call or deploy in flight, no user message for
750
+ 15 min), then requests a gateway restart, and the box
751
+ installs it as the gateway comes back.
752
+ The snapshot reason says where it is:
753
+ pending-idle:<v> = waiting for the slot or idle (the
754
+ snapshot's pendingBlockers say why; normal, do not
755
+ re-run check-now to push it);
756
+ updated-restart-requested:<v> / awaiting-restart:<v> =
757
+ restart requested, not loaded yet;
758
+ update-not-loaded:<v> = the restart did not load it
759
+ (retried; after 3 tries parked until a newer release:
760
+ report it, do not loop check-now)
747
761
  --json Raw JSON output
748
762
 
749
763
  senpi dsl — Inspect DSL exit engine
@@ -1 +1 @@
1
- {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAe/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CA06CN;AAuRD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7G;AA6KD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AAiID,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,uGAAuG;IACvG,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAC1C,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1B,gBAAgB,CAAC;IACpB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}
1
+ {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAe/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CAy7CN;AAkUD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7G;AAwLD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AAiID,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,uGAAuG;IACvG,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAC1C,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1B,gBAAgB,CAAC;IACpB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}