@sensigo/realm-cli 0.33.0 → 0.34.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 (52) hide show
  1. package/dist/agent/gate/gate-expiry-timer.d.ts +19 -0
  2. package/dist/agent/gate/gate-expiry-timer.d.ts.map +1 -0
  3. package/dist/agent/gate/gate-expiry-timer.js +83 -0
  4. package/dist/agent/gate/gate-expiry-timer.js.map +1 -0
  5. package/dist/agent/gate/slack-gate-notifier.d.ts +24 -2
  6. package/dist/agent/gate/slack-gate-notifier.d.ts.map +1 -1
  7. package/dist/agent/gate/slack-gate-notifier.js +101 -8
  8. package/dist/agent/gate/slack-gate-notifier.js.map +1 -1
  9. package/dist/agent/mcp/mcp-extensions.d.ts +8 -1
  10. package/dist/agent/mcp/mcp-extensions.d.ts.map +1 -1
  11. package/dist/agent/providers/anthropic-provider.d.ts +31 -0
  12. package/dist/agent/providers/anthropic-provider.d.ts.map +1 -1
  13. package/dist/agent/providers/anthropic-provider.js +169 -25
  14. package/dist/agent/providers/anthropic-provider.js.map +1 -1
  15. package/dist/agent/providers/llm-provider.d.ts +17 -0
  16. package/dist/agent/providers/llm-provider.d.ts.map +1 -1
  17. package/dist/agent/providers/llm-provider.js +16 -0
  18. package/dist/agent/providers/llm-provider.js.map +1 -1
  19. package/dist/agent/run-agent.d.ts.map +1 -1
  20. package/dist/agent/run-agent.js +141 -4
  21. package/dist/agent/run-agent.js.map +1 -1
  22. package/dist/commands/abandon.d.ts.map +1 -1
  23. package/dist/commands/abandon.js +4 -1
  24. package/dist/commands/abandon.js.map +1 -1
  25. package/dist/commands/drain.d.ts +24 -0
  26. package/dist/commands/drain.d.ts.map +1 -1
  27. package/dist/commands/drain.js +152 -12
  28. package/dist/commands/drain.js.map +1 -1
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +1 -0
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/inspect.d.ts.map +1 -1
  33. package/dist/commands/inspect.js +26 -1
  34. package/dist/commands/inspect.js.map +1 -1
  35. package/dist/commands/list.d.ts.map +1 -1
  36. package/dist/commands/list.js +33 -3
  37. package/dist/commands/list.js.map +1 -1
  38. package/dist/commands/listen.d.ts +32 -2
  39. package/dist/commands/listen.d.ts.map +1 -1
  40. package/dist/commands/listen.js +100 -0
  41. package/dist/commands/listen.js.map +1 -1
  42. package/dist/commands/reclaim.d.ts.map +1 -1
  43. package/dist/commands/reclaim.js +8 -0
  44. package/dist/commands/reclaim.js.map +1 -1
  45. package/dist/commands/run.d.ts.map +1 -1
  46. package/dist/commands/run.js +17 -1
  47. package/dist/commands/run.js.map +1 -1
  48. package/dist/commands/validate.d.ts.map +1 -1
  49. package/dist/commands/validate.js +72 -2
  50. package/dist/commands/validate.js.map +1 -1
  51. package/dist/index.js +1 -1
  52. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
1
  // anthropic-provider.ts — Anthropic LLM provider implementation for realm agent.
2
2
  // Requires @anthropic-ai/sdk >= 0.20.0 as an optional peer dependency (npm install @anthropic-ai/sdk).
3
- import { WorkflowError, validateAgentSubmission } from '@sensigo/realm';
3
+ import { WorkflowError, validateAgentSubmission, } from '@sensigo/realm';
4
4
  import { ToolCapableLlmProvider } from './llm-provider.js';
5
5
  import { sanitizeError, serializeToolResult, parseNamespacedId, extractJsonObject, rejectAfter, buildSystemPrompt, summarizeAgentValidationErrors, renderValidationSummaryEntry, } from './agent-utils.js';
6
6
  /** The tool offered at `tool_choice:'auto'` so the model can return structured output directly —
@@ -10,24 +10,123 @@ import { sanitizeError, serializeToolResult, parseNamespacedId, extractJsonObjec
10
10
  * decision in prompts/robust-anthropic-provider.md). Not pushed into tool_call_records anywhere it's
11
11
  * used — it's an extraction mechanism, not an agent-chosen tool. */
12
12
  const SUBMIT_TOOL_NAME = '__realm_submit__';
13
- function buildSubmitTool(schema) {
13
+ /**
14
+ * Issue #236: `strict` is a NEW sanctioned option, threaded from run-agent through both call
15
+ * sites of this builder (the main `callStep`/`callStepWithMeta` call AND `performFinalExtraction`
16
+ * — design §4 [CG]). Default absent = today's behavior byte-identical: the key is only ever
17
+ * added to the returned object when the caller explicitly opts in.
18
+ */
19
+ function buildSubmitTool(schema, opts) {
14
20
  return {
15
21
  name: SUBMIT_TOOL_NAME,
16
22
  description: 'Return your final result for this step as structured data.',
17
23
  input_schema: schema,
24
+ ...(opts?.strict === true ? { strict: true } : {}),
18
25
  };
19
26
  }
20
27
  /**
21
28
  * Returns the maximum output tokens for the given Anthropic model.
22
29
  * The Anthropic Messages API requires max_tokens — this must always produce a valid value.
23
30
  * Source: https://docs.anthropic.com/en/docs/about-claude/models/all-models
31
+ *
32
+ * Issue #309 fix (ratified per design-d4-final.md's ADDENDUM, the audit's 3.5-cap correction):
33
+ * the PRE-#309 regex (`claude-(3[-.]5|[a-z]+-4)`) was stale in a dangerous direction — it gave
34
+ * the claude-3.5 family's OWN hard output cap (8192; 16384 would 400 every call) to EVERY 4.x
35
+ * model too (claude-sonnet-4-5, claude-opus-4-1, …), silently under-budgeting them. Three
36
+ * buckets now, ordered most-specific-first:
37
+ * 1. claude-3.5 family (`claude-3-5-*` / `claude-3.5-*`) ⇒ 8192 — its OWN hard cap.
38
+ * 2. Bare legacy claude-3 generation (claude-3-opus/-sonnet/-haiku, NOT 3.5) ⇒ 4096 — original,
39
+ * unchanged fallback.
40
+ * 3. Everything else — 3.7, every 4.x/5.x model, and any UNKNOWN future model id — ⇒ 16384.
41
+ * Fail-forward (the stale-classifier lesson, #312 is the durable fix: an unrecognized model
42
+ * id is treated as AT LEAST as capable as today's models, never less; 16384 is
43
+ * non-streaming-safe and current models think by default, so 4096 would starve
44
+ * thinking+output on anything not explicitly bucketed above).
24
45
  */
25
46
  function resolveMaxTokens(model) {
26
- // claude-3.5 and claude-4 families support 8192 output tokens.
27
- // Matches: claude-3-5-*, claude-3.5-*, claude-<name>-4-*, etc.
28
- if (/claude-(3[-.]5|[a-z]+-4)/i.test(model))
47
+ if (/claude-3[-.]5/i.test(model))
29
48
  return 8192;
30
- return 4096; // safe fallback for claude-3 and any unrecognised model
49
+ if (/claude-3-(opus|sonnet|haiku)(-|$)/i.test(model))
50
+ return 4096;
51
+ return 16384;
52
+ }
53
+ // ---------------------------------------------------------------------------------------------
54
+ // issue #236 — the fallback ladder. Any 400/503 on a request that carried `strict: true` drops
55
+ // strict, discloses, and retries ONCE; any other status propagates untouched (the arm keys on
56
+ // HTTP status ∧ strict-sent, NEVER on message text — design §4 [Rv5]).
57
+ // ---------------------------------------------------------------------------------------------
58
+ /** The captured grammar-compilation-unavailable text (premise-probe-raw.md's own canonical mock
59
+ * — the label match keys on THIS string only, never a broader "any 503" heuristic). A stale/
60
+ * non-matching message degrades to the generic `service_unavailable` label (fail-safe). */
61
+ const GRAMMAR_UNAVAILABLE_TEXT = 'Grammar compilation is temporarily unavailable';
62
+ /** Duck-typed extraction — the `@anthropic-ai/sdk` package is a consumer-supplied peer dependency
63
+ * (absent from this repo and CI), so its real error class can never be imported/instanceof-
64
+ * checked here. `.status`/`.message` are the SDK's own long-stable public `APIError` contract. */
65
+ function extractHttpStatus(err) {
66
+ if (typeof err === 'object' && err !== null && 'status' in err) {
67
+ const status = err.status;
68
+ if (typeof status === 'number')
69
+ return status;
70
+ }
71
+ return undefined;
72
+ }
73
+ function extractErrorMessage(err) {
74
+ return err instanceof Error ? err.message : String(err);
75
+ }
76
+ /**
77
+ * Thrown when the ladder's OWN drop-strict retry ALSO fails — design §4 [R2-7]: (a) carries the
78
+ * `structuredOutput` meta so a catch site can still disclose the downgrade even though no result
79
+ * was ever produced (run-agent's sticky map is armed from this on failure paths too), (b) sets
80
+ * the ORIGINAL (retry) error as `cause`, (c) adopts that error's own message verbatim — run-agent
81
+ * prints `err.message` directly at its two LLM-call catch sites, so this must describe what
82
+ * ACTUALLY failed (the retry's real error), never a generic wrapper string.
83
+ */
84
+ export class StructuredOutputLadderError extends Error {
85
+ structuredOutput;
86
+ constructor(message, structuredOutput, options) {
87
+ super(message, options);
88
+ this.name = 'StructuredOutputLadderError';
89
+ this.structuredOutput = structuredOutput;
90
+ }
91
+ }
92
+ /**
93
+ * Wraps ONE `client.messages.create` call with the strict fallback ladder. `buildOpts(strict)`
94
+ * must build the FULL request options for that boolean — called fresh on every attempt so a
95
+ * downgrade takes effect immediately. Non-strict calls (state.strict already false, OR strict was
96
+ * never requested for this invocation) pass straight through with no ladder engagement at all —
97
+ * byte-identical to pre-#236 behavior.
98
+ */
99
+ async function createMessageWithLadder(
100
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
+ client, buildOpts, state) {
102
+ if (!state.strict) {
103
+ return client.messages.create(buildOpts(false));
104
+ }
105
+ try {
106
+ const response = await client.messages.create(buildOpts(true));
107
+ state.meta = { requested: true, sent: true };
108
+ return response;
109
+ }
110
+ catch (err) {
111
+ const status = extractHttpStatus(err);
112
+ if (status !== 400 && status !== 503)
113
+ throw err; // unrelated failure — never engage the ladder
114
+ const api_message = extractErrorMessage(err);
115
+ const downgrade_reason = status === 400
116
+ ? 'api_rejected_schema'
117
+ : api_message.includes(GRAMMAR_UNAVAILABLE_TEXT)
118
+ ? 'grammar_unavailable'
119
+ : 'service_unavailable';
120
+ state.strict = false; // sticky for the rest of THIS invocation
121
+ try {
122
+ const response = await client.messages.create(buildOpts(false));
123
+ state.meta = { requested: true, sent: false, downgrade_reason, api_message };
124
+ return response;
125
+ }
126
+ catch (retryErr) {
127
+ throw new StructuredOutputLadderError(extractErrorMessage(retryErr), { requested: true, sent: false, downgrade_reason, api_message }, { cause: retryErr });
128
+ }
129
+ }
31
130
  }
32
131
  /**
33
132
  * Anthropic LLM provider for realm agent.
@@ -40,7 +139,8 @@ export class AnthropicProvider extends ToolCapableLlmProvider {
40
139
  super();
41
140
  this.model = model;
42
141
  }
43
- async callStep(prompt, inputSchema, agentProfileInstructions) {
142
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
+ async getClient() {
44
144
  // Dynamically import @anthropic-ai/sdk to keep it an optional peer dependency.
45
145
  // See openai-provider.ts for an explanation of the 'string' cast technique.
46
146
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -54,30 +154,47 @@ export class AnthropicProvider extends ToolCapableLlmProvider {
54
154
  process.exit(1);
55
155
  }
56
156
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
- const client = new mod.default({
157
+ return new mod.default({
58
158
  apiKey: process.env['ANTHROPIC_API_KEY'],
59
159
  });
160
+ }
161
+ /**
162
+ * Shared body for `callStep`/`callStepWithMeta` (issue #236). `strictRequested` is `undefined`
163
+ * for `callStep`'s own byte-identical-behavior contract (no ladder state is even constructed);
164
+ * `true`/`false` for `callStepWithMeta`. Returns `meta` only when strict was ever requested for
165
+ * THIS invocation — a step that never opted in gets no `structuredOutput` meta at all.
166
+ */
167
+ async callStepInternal(prompt, inputSchema, agentProfileInstructions, strictRequested) {
168
+ const client = await this.getClient();
169
+ const state = { strict: strictRequested === true, meta: undefined };
60
170
  // P0: offer a schema-typed __realm_submit__ tool at tool_choice:'auto' (never forced — see the
61
171
  // module-level SUBMIT_TOOL_NAME comment) when a schema is available; a tool_use.input arrives
62
172
  // pre-parsed, so this eliminates the fenced/prefaced-JSON parse-failure class by construction.
63
173
  // Without a schema there is nothing to type the tool with, so no tool is offered — falls straight
64
- // to the P1 extractor below.
65
- const submitTool = inputSchema !== undefined ? buildSubmitTool(inputSchema) : undefined;
174
+ // to the P1 extractor below. `hasSchema` — NOT `strict` — governs buildSystemPrompt: the O8
175
+ // honesty mechanism depends on the original schema staying model-visible regardless of strict
176
+ // (design §4, pinned by test — buildSystemPrompt is byte-invariant under strict).
177
+ const hasSchema = inputSchema !== undefined;
66
178
  const systemPrompt = buildSystemPrompt(inputSchema, agentProfileInstructions,
67
- /* structuredToolOffered */ submitTool !== undefined);
179
+ /* structuredToolOffered */ hasSchema);
68
180
  const makeRequest = async (userContent) => {
69
- const opts = {
70
- model: this.model,
71
- max_tokens: resolveMaxTokens(this.model),
72
- system: systemPrompt,
73
- messages: [{ role: 'user', content: userContent }],
181
+ const buildOpts = (strict) => {
182
+ const submitTool = hasSchema
183
+ ? buildSubmitTool(inputSchema, strict ? { strict: true } : undefined)
184
+ : undefined;
185
+ const opts = {
186
+ model: this.model,
187
+ max_tokens: resolveMaxTokens(this.model),
188
+ system: systemPrompt,
189
+ messages: [{ role: 'user', content: userContent }],
190
+ };
191
+ if (submitTool !== undefined) {
192
+ opts['tools'] = [submitTool];
193
+ opts['tool_choice'] = { type: 'auto' };
194
+ }
195
+ return opts;
74
196
  };
75
- if (submitTool !== undefined) {
76
- opts['tools'] = [submitTool];
77
- opts['tool_choice'] = { type: 'auto' };
78
- }
79
- const response = await // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
- client.messages.create(opts);
197
+ const response = await createMessageWithLadder(client, buildOpts, state);
81
198
  const blocks = response.content;
82
199
  const toolUse = blocks.find((b) => b.type === 'tool_use' && b.name === SUBMIT_TOOL_NAME);
83
200
  const textBlock = blocks.find((b) => b.type === 'text');
@@ -90,16 +207,26 @@ export class AnthropicProvider extends ToolCapableLlmProvider {
90
207
  // If the model called the tool, its input is ALREADY a parsed object — no parse step, done.
91
208
  // Otherwise fall back to the robust extractor (P1) on the text answer.
92
209
  const extract = (result) => result.toolInput ?? extractJsonObject(result.text);
210
+ // issue #236: submission_channel — the standing dodge detector (design record R-B). Set on
211
+ // whichever result actually produced the returned output.
212
+ const withChannel = (output, viaTool) => {
213
+ if (state.meta === undefined)
214
+ return { output };
215
+ return {
216
+ output,
217
+ meta: { ...state.meta, submission_channel: viaTool ? 'tool' : 'text' },
218
+ };
219
+ };
93
220
  const first = await makeRequest(prompt);
94
221
  const firstParsed = extract(first);
95
222
  if (firstParsed !== null)
96
- return firstParsed;
223
+ return withChannel(firstParsed, first.toolInput !== undefined);
97
224
  // Retry once with an explicit reminder to return JSON (preserves today's retry shape).
98
225
  const retryPrompt = `${prompt}\n\nYour previous response was not valid JSON. Respond with a JSON object only.`;
99
226
  const retry = await makeRequest(retryPrompt);
100
227
  const retryParsed = extract(retry);
101
228
  if (retryParsed !== null)
102
- return retryParsed;
229
+ return withChannel(retryParsed, retry.toolInput !== undefined);
103
230
  // Guard: a response cut short by the token budget must never silently return a partial object —
104
231
  // give a clear, distinct error rather than the generic "non-JSON content" message.
105
232
  if (retry.stopReason === 'max_tokens') {
@@ -107,6 +234,15 @@ export class AnthropicProvider extends ToolCapableLlmProvider {
107
234
  }
108
235
  throw new WorkflowError(sanitizeError(`Anthropic returned non-JSON content after retry: ${retry.text.slice(0, 200)}`), { code: 'ENGINE_STEP_FAILED', category: 'ENGINE', agentAction: 'stop', retryable: false });
109
236
  }
237
+ async callStep(prompt, inputSchema, agentProfileInstructions) {
238
+ const { output } = await this.callStepInternal(prompt, inputSchema, agentProfileInstructions, undefined);
239
+ return output;
240
+ }
241
+ /** issue #236 override — the only provider in this codebase that actually honors
242
+ * `opts.structuredOutputStrict`; the base class's default just wraps `callStep`. */
243
+ async callStepWithMeta(prompt, inputSchema, agentProfileInstructions, opts) {
244
+ return this.callStepInternal(prompt, inputSchema, agentProfileInstructions, opts?.structuredOutputStrict === true);
245
+ }
110
246
  /**
111
247
  * Agentic loop for tool-capable steps. Executes tool calls serially (V1 constraint).
112
248
  * All tool results for one turn are accumulated into a single user message with an array
@@ -177,6 +313,11 @@ export class AnthropicProvider extends ToolCapableLlmProvider {
177
313
  // history ends with a valid user turn. NOT restructuring the agentic loop / MCP tools array —
178
314
  // this synthetic tool only ever appears on this ONE isolated extraction call.
179
315
  const performFinalExtraction = async () => {
316
+ // issue #236: buildSubmitTool's `strict` option is never threaded here — BY CONSTRUCTION,
317
+ // not by omission. This call site lives inside callStepWithTools, which only ever runs for
318
+ // tools-bearing steps; G6 makes every tools-bearing step ineligible for strict end-to-end
319
+ // in v1 (design §4 [CG]), so run-agent structurally never has a `true` to pass down this
320
+ // path. No end-to-end pin is possible here — do not add one.
180
321
  const finalSubmitTool = options.inputSchema !== undefined ? buildSubmitTool(options.inputSchema) : undefined;
181
322
  const finalOpts = {
182
323
  model: this.model,
@@ -191,7 +332,10 @@ export class AnthropicProvider extends ToolCapableLlmProvider {
191
332
  else {
192
333
  finalOpts['tool_choice'] = { type: 'none' };
193
334
  // NO tools array — enforces text-only response
194
- // NO response_format — not a valid Anthropic parameter
335
+ // NO response_format — Anthropic's structured-output mechanism is strict TOOL USE
336
+ // (issue #236's `structured_output: 'strict'`, wired through buildSubmitTool's `strict`
337
+ // option above), not an `output_config.format` request parameter — deliberately not
338
+ // used here (banked, design record R-P).
195
339
  }
196
340
  const final = await // eslint-disable-next-line @typescript-eslint/no-explicit-any
197
341
  client.messages.create(finalOpts);
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../../src/agent/providers/anthropic-provider.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uGAAuG;AACvG,OAAO,EACL,aAAa,EACb,uBAAuB,GAGxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAO3D,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B;;;;;oEAKoE;AACpE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAE5C;;;;;GAKG;AACH,SAAS,eAAe,CACtB,MAA+B,EAC/B,IAA2B;IAO3B,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,4DAA4D;QACzE,YAAY,EAAE,MAAM;QACpB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gGAAgG;AAChG,+FAA+F;AAC/F,8FAA8F;AAC9F,uEAAuE;AACvE,gGAAgG;AAEhG;;4FAE4F;AAC5F,MAAM,wBAAwB,GAAG,gDAAgD,CAAC;AAElF;;mGAEmG;AACnG,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAI,GAA4B,CAAC,MAAM,CAAC;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY;IACvC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,gBAAgB,CAAuB;IAChD,YACE,OAAe,EACf,gBAAsC,EACtC,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAUD;;;;;;GAMG;AACH,KAAK,UAAU,uBAAuB;AACpC,8DAA8D;AAC9D,MAAW,EACX,SAAuD,EACvD,KAAkB;IAGlB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAQ,MAAM,CAAC,QAAQ,CAAC,MAA8D,CACpF,SAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MACf,MAAM,CAAC,QAAQ,CAAC,MACjB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM,GAAG,CAAC,CAAC,8CAA8C;QAC/F,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,gBAAgB,GACpB,MAAM,KAAK,GAAG;YACZ,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC;gBAC9C,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,qBAAqB,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,yCAAyC;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MACf,MAAM,CAAC,QAAQ,CAAC,MACjB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;YAC7E,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,2BAA2B,CACnC,mBAAmB,CAAC,QAAQ,CAAC,EAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAC/D,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,sBAAsB;IAC9B;IAA7B,YAA6B,KAAa;QACxC,KAAK,EAAE,CAAC;QADmB,UAAK,GAAL,KAAK,CAAQ;IAE1C,CAAC;IAED,8DAA8D;IACtD,KAAK,CAAC,SAAS;QACrB,+EAA+E;QAC/E,4EAA4E;QAC5E,8DAA8D;QAC9D,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAW,mBAAmB,CAAC;YAC7C,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,wFAAwF,CACzF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,8DAA8D;QAC9D,OAAO,IAAK,GAAG,CAAC,OAAsD,CAAC;YACrE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,WAAgD,EAChD,wBAA4C,EAC5C,eAAoC;QAEpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,GAAgB,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAEjF,+FAA+F;QAC/F,8FAA8F;QAC9F,+FAA+F;QAC/F,kGAAkG;QAClG,4FAA4F;QAC5F,8FAA8F;QAC9F,kFAAkF;QAClF,MAAM,SAAS,GAAG,WAAW,KAAK,SAAS,CAAC;QAC5C,MAAM,YAAY,GAAG,iBAAiB,CACpC,WAAW,EACX,wBAAwB;QACxB,2BAA2B,CAAC,SAAS,CACtC,CAAC;QAQF,MAAM,WAAW,GAAG,KAAK,EAAE,WAAmB,EAAuB,EAAE;YACrE,MAAM,SAAS,GAAG,CAAC,MAAe,EAA2B,EAAE;gBAC7D,MAAM,UAAU,GAAG,SAAS;oBAC1B,CAAC,CAAC,eAAe,CAAC,WAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACtE,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,IAAI,GAA4B;oBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACxC,MAAM,EAAE,YAAY;oBACpB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;iBACnD,CAAC;gBACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC7B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAKtB,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;YACzF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACxD,OAAO;gBACL,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;gBAC3B,GAAG,CAAC,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1F,CAAC;QACJ,CAAC,CAAC;QAEF,4FAA4F;QAC5F,uEAAuE;QACvE,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAkC,EAAE,CACrE,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErD,2FAA2F;QAC3F,0DAA0D;QAC1D,MAAM,WAAW,GAAG,CAClB,MAA+B,EAC/B,OAAgB,EACkD,EAAE;YACpE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAChD,OAAO;gBACL,MAAM;gBACN,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;aACvE,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAEzF,uFAAuF;QACvF,MAAM,WAAW,GAAG,GAAG,MAAM,iFAAiF,CAAC;QAC/G,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAEzF,gGAAgG;QAChG,mFAAmF;QACnF,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,aAAa,CACrB,aAAa,CACX,yFAAyF,CAC1F,EACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,aAAa,CACrB,aAAa,CAAC,oDAAoD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAC7F,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAC1F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,WAAqC,EACrC,wBAAiC;QAEjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC5C,MAAM,EACN,WAAW,EACX,wBAAwB,EACxB,SAAS,CACV,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;yFACqF;IAC5E,KAAK,CAAC,gBAAgB,CAC7B,MAAc,EACd,WAAqC,EACrC,wBAAiC,EACjC,IAA2C;QAE3C,OAAO,IAAI,CAAC,gBAAgB,CAC1B,MAAM,EACN,WAAW,EACX,wBAAwB,EACxB,IAAI,EAAE,sBAAsB,KAAK,IAAI,CACtC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,KAAuB,EACvB,QAAsB,EACtB,OAQC;QAED,8DAA8D;QAC9D,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAW,mBAAmB,CAAC;YAC7C,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,wFAAwF,CACzF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,8DAA8D;QAC9D,MAAM,MAAM,GAAG,IAAK,GAAG,CAAC,OAAsD,CAAC;YAC7E,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;SACzC,CAAC,CAAC;QAEH,uFAAuF;QACvF,4FAA4F;QAC5F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,MAAM,cAAc,GAIf,EAAE,CAAC;QACR,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,IAAI,oFAAoF,CACtI,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,qCAAqC;aACtE,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,wBAAwB,GAAG,KAAK,CAAC;QACrC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,6FAA6F;QAC7F,4FAA4F;QAC5F,2FAA2F;QAC3F,sFAAsF;QACtF,uCAAuC;QACvC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,MAAM,iBAAiB,GAAqB,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACxF,yFAAyF;QACzF,MAAM,mBAAmB,GAAG,CAAC,MAA2B,EAAuB,EAAE,CAC/E,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEnF,8DAA8D;QAC9D,MAAM,OAAO,GAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,GAA4B,EAAE;YACtD,MAAM,IAAI,GAA4B;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM;gBACN,QAAQ,EAAE,OAAO;aAClB,CAAC;YACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iGAAiG;QACjG,kGAAkG;QAClG,+FAA+F;QAC/F,kGAAkG;QAClG,8FAA8F;QAC9F,8EAA8E;QAC9E,MAAM,sBAAsB,GAAG,KAAK,IAAkC,EAAE;YACtE,0FAA0F;YAC1F,2FAA2F;YAC3F,0FAA0F;YAC1F,yFAAyF;YACzF,6DAA6D;YAC7D,MAAM,eAAe,GACnB,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,MAAM,SAAS,GAA4B;gBACzC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM;gBACN,QAAQ,EAAE,OAAO;aAClB,CAAC;YACF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACvC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC5C,+CAA+C;gBAC/C,kFAAkF;gBAClF,wFAAwF;gBACxF,oFAAoF;gBACpF,yCAAyC;YAC3C,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,8DAA8D;aACjF,MAAM,CAAC,QAAQ,CAAC,MAA0D,CAAC,SAAS,CAAC,CAAC;YACvF,MAAM,MAAM,GAAG,KAAK,CAAC,OAKnB,CAAC;YACH,gFAAgF;YAChF,0EAA0E;YAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;YACzF,qFAAqF;YACrF,yFAAyF;YACzF,0FAA0F;YAC1F,yFAAyF;YACzF,0FAA0F;YAC1F,sFAAsF;YACtF,qFAAqF;YACrF,mFAAmF;YACnF,0FAA0F;YAC1F,wFAAwF;YACxF,8EAA8E;YAC9E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,mBAAmB,CAAC;oBACzB,MAAM,EAAE,OAAO,CAAC,KAAgC;oBAChD,SAAS,EAAE,iBAAiB;iBAC7B,CAAC,CAAC;YACL,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,kFAAkF;YAClF,8DAA8D;YAC9D,MAAM,IAAI,aAAa,CACrB,aAAa,CAAC,oDAAoD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EACvF;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,KAAK;aACjB,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,8DAA8D;aACpF,MAAM,CAAC,QAAQ,CAAC,MAA0D,CACzE,iBAAiB,EAAE,CACpB,CAAC;YACF,MAAM,aAAa,GACjB,QAAQ,CAAC,OACV,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAEvC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE/D,MAAM,uBAAuB,GAIxB,EAAE,CAAC;gBACR,IAAI,0BAA0B,GAAG,KAAK,CAAC;gBAEvC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;oBAClC,MAAM,aAAa,GAAG,KAAK,CAAC,EAAG,CAAC,CAAC,uCAAuC;oBAExE,IAAI,eAAe,IAAI,QAAQ,IAAI,wBAAwB,EAAE,CAAC;wBAC5D,0EAA0E;wBAC1E,uBAAuB,CAAC,IAAI,CAAC;4BAC3B,IAAI,EAAE,aAAa;4BACnB,WAAW,EAAE,aAAa;4BAC1B,OAAO,EAAE,mCAAmC;yBAC7C,CAAC,CAAC;wBACH,0BAA0B,GAAG,IAAI,CAAC;wBAClC,SAAS;oBACX,CAAC;oBAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAK,CAAE,CAAC;oBAC/C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;oBAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAEzB,IAAI,aAAqB,CAAC;oBAC1B,IAAI,MAAsB,CAAC;oBAE3B,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;4BACnC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;4BAC1B,WAAW,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;yBAC5C,CAAC,CAAC;wBACH,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;wBAClD,MAAM,GAAG;4BACP,SAAS,EAAE,QAAQ;4BACnB,IAAI,EAAE,QAAQ;4BACd,IAAI;4BACJ,MAAM,EAAE,UAAU;4BAClB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;yBAChC,CAAC;wBACF,aAAa,GAAG,UAAU,CAAC;oBAC7B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;wBACrC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;wBACnF,MAAM,GAAG;4BACP,SAAS,EAAE,QAAQ;4BACnB,IAAI,EAAE,QAAQ;4BACd,IAAI;4BACJ,MAAM,EAAE,IAAI;4BACZ,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;4BAC/B,KAAK,EAAE,SAAS;yBACjB,CAAC;wBACF,aAAa,GAAG,OAAO,CAAC;oBAC1B,CAAC;oBAED,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/B,eAAe,EAAE,CAAC;oBAClB,IACE,SAAS,KAAK,SAAS;wBACvB,CAAC,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,iBAAiB,CAAC,EAC5D,CAAC;wBACD,aAAa,EAAE,CAAC;wBAChB,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;4BAC/B,wBAAwB,GAAG,IAAI,CAAC;4BAChC,0BAA0B,GAAG,IAAI,CAAC;wBACpC,CAAC;oBACH,CAAC;oBACD,uBAAuB,CAAC,IAAI,CAAC;wBAC3B,IAAI,EAAE,aAAa;wBACnB,WAAW,EAAE,aAAa;wBAC1B,OAAO,EAAE,aAAa;qBACvB,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,SAAS,GAAG,0BAA0B,IAAI,eAAe,IAAI,QAAQ,CAAC;gBAE5E,IAAI,SAAS,EAAE,CAAC;oBACd,+EAA+E;oBAC/E,uEAAuE;oBACvE,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,GAAG,uBAAuB;4BAC1B;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,0KAA0K;6BACjL;yBACF;qBACF,CAAC,CAAC;oBACH,OAAO,sBAAsB,EAAE,CAAC;gBAClC,CAAC;gBAED,yEAAyE;gBACzE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,qFAAqF;gBACrF,8EAA8E;gBAC9E,0FAA0F;gBAC1F,uFAAuF;gBACvF,qFAAqF;gBACrF,2FAA2F;gBAC3F,MAAM,SAAS,GAAI,QAAQ,CAAC,OAAkD,CAAC,IAAI,CACjF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CACzB,CAAC;gBACF,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,OAAO,GACX,MAAM,KAAK,IAAI;oBACb,CAAC,CAAC,uBAAuB,CACrB,MAAM,EACN;wBACE,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,SAAS;4BAC7C,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,qBAAmC,EAAE;4BAC9D,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;4BAC9C,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,sBAAoC,EAAE;4BAChE,CAAC,CAAC,EAAE,CAAC;qBACR,EACD,mBAAmB,CACpB;oBACH,CAAC,CAAC,SAAS,CAAC;gBAChB,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC/C,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBACD,mFAAmF;gBACnF,uFAAuF;gBACvF,wFAAwF;gBACxF,oFAAoF;gBACpF,yFAAyF;gBACzF,gBAAgB,EAAE,CAAC;gBACnB,MAAM,OAAO,GACX,OAAO,KAAK,SAAS;oBACnB,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,SAAS,CAAC;yBAC9C,GAAG,CAAC,4BAA4B,CAAC;yBACjC,IAAI,CAAC,IAAI,CAAC;oBACf,CAAC,CAAC,2DAA2D,CAAC;gBAClE,OAAO,CAAC,KAAK,CAAC,sDAAsD,gBAAgB,GAAG,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,yDAAyD,OAAO,cAAc;iBACxF,CAAC,CAAC;gBACH,eAAe,EAAE,CAAC,CAAC,oCAAoC;gBACvD,IAAI,eAAe,IAAI,QAAQ,EAAE,CAAC;oBAChC,OAAO,sBAAsB,EAAE,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { StructuredOutputMeta } from '@sensigo/realm';
1
2
  import type { ToolDefinition, ToolExecutor, StepWithToolsResult } from '../mcp/mcp-extensions.js';
2
3
  /**
3
4
  * Describes the optional feature set that an LLM provider supports.
@@ -19,6 +20,22 @@ export interface ProviderCapabilities {
19
20
  export declare abstract class LlmProvider {
20
21
  /** Call the LLM with a step prompt and return a JSON object. */
21
22
  abstract callStep(prompt: string, inputSchema?: Record<string, unknown>, agentProfileInstructions?: string): Promise<Record<string, unknown>>;
23
+ /**
24
+ * Issue #236 — the structured_output-aware entry point run-agent's callStep site calls for
25
+ * every agent step. DEFAULT-IMPLEMENTED here (never abstract): every third-party
26
+ * `--provider-module` that only implements `callStep` inherits a disclosed no-op BY
27
+ * CONSTRUCTION — `{ output }`, no `meta` — WITHOUT needing to know this method exists (the
28
+ * `instanceof` check at agent.ts is unaffected; a plugin author never has to override this).
29
+ * `AnthropicProvider` is the only override in this codebase — it actually honors
30
+ * `opts.structuredOutputStrict`. The OpenAI provider gets this SAME default no-op; it is never
31
+ * special-cased (design record §5, final gate: restored — do not add an OpenAI override).
32
+ */
33
+ callStepWithMeta(prompt: string, inputSchema?: Record<string, unknown>, agentProfileInstructions?: string, opts?: {
34
+ structuredOutputStrict?: boolean;
35
+ }): Promise<{
36
+ output: Record<string, unknown>;
37
+ meta?: StructuredOutputMeta;
38
+ }>;
22
39
  /** Returns the capability set for this provider instance. */
23
40
  capabilities(): ProviderCapabilities;
24
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"llm-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/llm-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAElG;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,8BAAsB,WAAW;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,wBAAwB,CAAC,EAAE,MAAM,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,6DAA6D;IAC7D,YAAY,IAAI,oBAAoB;CAGrC;AAED;;;GAGG;AACH,8BAAsB,sBAAuB,SAAQ,WAAW;IAC9D;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;QACP;;;;;;WAMG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC;;;;;;WAMG;QACH,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD;;;;;WAKG;QACH,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,GACA,OAAO,CAAC,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,sBAAsB,CAEvF;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;AAElD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,CAmCtB"}
1
+ {"version":3,"file":"llm-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/llm-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAElG;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,8BAAsB,WAAW;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,wBAAwB,CAAC,EAAE,MAAM,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;;;;;;;OASG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,wBAAwB,CAAC,EAAE,MAAM,EAEjC,IAAI,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC;IAK5E,6DAA6D;IAC7D,YAAY,IAAI,oBAAoB;CAGrC;AAED;;;GAGG;AACH,8BAAsB,sBAAuB,SAAQ,WAAW;IAC9D;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;QACP;;;;;;WAMG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC;;;;;;WAMG;QACH,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD;;;;;WAKG;QACH,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,GACA,OAAO,CAAC,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,sBAAsB,CAEvF;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;AAElD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,CAmCtB"}
@@ -3,6 +3,22 @@
3
3
  * Extend this class to implement a custom provider.
4
4
  */
5
5
  export class LlmProvider {
6
+ /**
7
+ * Issue #236 — the structured_output-aware entry point run-agent's callStep site calls for
8
+ * every agent step. DEFAULT-IMPLEMENTED here (never abstract): every third-party
9
+ * `--provider-module` that only implements `callStep` inherits a disclosed no-op BY
10
+ * CONSTRUCTION — `{ output }`, no `meta` — WITHOUT needing to know this method exists (the
11
+ * `instanceof` check at agent.ts is unaffected; a plugin author never has to override this).
12
+ * `AnthropicProvider` is the only override in this codebase — it actually honors
13
+ * `opts.structuredOutputStrict`. The OpenAI provider gets this SAME default no-op; it is never
14
+ * special-cased (design record §5, final gate: restored — do not add an OpenAI override).
15
+ */
16
+ async callStepWithMeta(prompt, inputSchema, agentProfileInstructions,
17
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
+ opts) {
19
+ const output = await this.callStep(prompt, inputSchema, agentProfileInstructions);
20
+ return { output };
21
+ }
6
22
  /** Returns the capability set for this provider instance. */
7
23
  capabilities() {
8
24
  return { jsonMode: false };
@@ -1 +1 @@
1
- {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../../../src/agent/providers/llm-provider.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAQ/B,6DAA6D;IAC7D,YAAY;QACV,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;CA2C/D;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAqB;IACjD,OAAO,QAAQ,YAAY,sBAAsB,CAAC;AACpD,CAAC;AAID;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAAsC,EACtC,SAA6B,EAC7B,WAAoB;IAEpB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,SAAS,CAAC;IAEpE,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAEtE,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,wFAAwF;YACtF,wFAAwF,CAC3F,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,8EAA8E;QAC9E,sEAAsE;QACtE,+EAA+E;QAC/E,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,WAAW,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACnF,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAChE,OAAO,IAAI,cAAc,CAAC,SAAS,IAAI,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACtE,OAAO,IAAI,iBAAiB,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../../../src/agent/providers/llm-provider.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAQ/B;;;;;;;;;OASG;IACH,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,WAAqC,EACrC,wBAAiC;IACjC,6DAA6D;IAC7D,IAA2C;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAClF,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,6DAA6D;IAC7D,YAAY;QACV,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;CA2C/D;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAqB;IACjD,OAAO,QAAQ,YAAY,sBAAsB,CAAC;AACpD,CAAC;AAID;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAAsC,EACtC,SAA6B,EAC7B,WAAoB;IAEpB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,SAAS,CAAC;IAEpE,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAEtE,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,wFAAwF;YACtF,wFAAwF,CAC3F,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,8EAA8E;QAC9E,sEAAsE;QACtE,+EAA+E;QAC/E,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,WAAW,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACnF,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAChE,OAAO,IAAI,cAAc,CAAC,SAAS,IAAI,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACtE,OAAO,IAAI,iBAAiB,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-agent.d.ts","sourceRoot":"","sources":["../../src/agent/run-agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAYL,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAM/D,OAAO,KAAK,EAAE,SAAS,EAAgC,MAAM,yBAAyB,CAAC;AAGvF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,iBAAiB,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,SAAS,CAAC;IACnF;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8GAA8G;IAC9G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0ED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAukBjG"}
1
+ {"version":3,"file":"run-agent.d.ts","sourceRoot":"","sources":["../../src/agent/run-agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAaL,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAM/D,OAAO,KAAK,EAAE,SAAS,EAAgC,MAAM,yBAAyB,CAAC;AAIvF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,iBAAiB,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,SAAS,CAAC;IACnF;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8GAA8G;IAC9G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0ED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA2tBjG"}
@@ -2,10 +2,11 @@
2
2
  // Exports runAgent(), AgentDeps, AgentRunOptions, and AgentRunResult.
3
3
  // All Slack-specific gate notification logic lives in slack-gate-notifier.ts.
4
4
  import { join } from 'node:path';
5
- import { loadWorkflowFromFile, findEligibleSteps, classifyInProgressClaims, executeChain, buildNextActions, findCapabilityBlockedSteps, unmetCapabilities, capabilityWarning, buildFailedAttemptRecord, WorkflowError, DEFAULT_VALIDATION_EXHAUSTION_THRESHOLD, } from '@sensigo/realm';
5
+ import { loadWorkflowFromFile, findEligibleSteps, classifyInProgressClaims, executeChain, buildNextActions, findCapabilityBlockedSteps, unmetCapabilities, capabilityWarning, buildFailedAttemptRecord, WorkflowError, DEFAULT_VALIDATION_EXHAUSTION_THRESHOLD, assessStructuredOutputEligibility, } from '@sensigo/realm';
6
6
  import { setAdditionalRedactionValues, renderValidationSummaryEntry, } from './providers/agent-utils.js';
7
7
  import { isToolCapable } from './providers/llm-provider.js';
8
8
  import { McpClient as McpClientImpl } from './mcp/mcp-client.js';
9
+ import { scheduleGateExpiryTimer } from './gate/gate-expiry-timer.js';
9
10
  /**
10
11
  * Dormant strict posture (issue #197 PR-2, design §6 — the #169→#170 template): read PER CALL,
11
12
  * never cached at module load (a test flips the env var mid-process). "on" = set to any
@@ -95,6 +96,14 @@ export async function runAgent(deps, options) {
95
96
  // issue #217: resolved once per run (not per call, unlike shouldMintWriterNonce — there is no
96
97
  // env-var strict-flip counterpart here). `0` disables the repair loop entirely.
97
98
  const schemaRetries = deps.schemaRetries ?? 2;
99
+ // issue #236 — sticky downgrade (design §4 [Rv8]): per step, homed HERE (run-agent scope,
100
+ // beside the verdict) — survives ALL THREE loops (the provider ladder ⊂ the 2-attempt callStep
101
+ // wrapper ⊂ the #217 repair loop). Once armed for a step, every LATER attempt for that SAME
102
+ // step name (across repair iterations, across a re-attach) never re-sends strict — it goes
103
+ // straight to the ORIGINAL downgrade_reason/api_message. Never cleared for the run's lifetime
104
+ // (R-Q: a non-grammar 503 disables prevention for the whole drive session — accepted, the
105
+ // `service_unavailable` labeling makes it auditable).
106
+ const structuredOutputSticky = new Map();
98
107
  // Load or use provided definition.
99
108
  const definition = options.definition !== undefined
100
109
  ? options.definition
@@ -187,7 +196,20 @@ export async function runAgent(deps, options) {
187
196
  const label = choice.charAt(0).toUpperCase() + choice.slice(1);
188
197
  console.log(` ${label}: realm run respond ${runId} --gate ${gate.gate_id} --choice ${choice}`);
189
198
  }
190
- await pollUntilGateResolved(deps.store, runId, gate.gate_id, options.pollIntervalMs ?? 3000);
199
+ // issue #291 (Deliverable 4e, Amendment 4): the ATTENDING-PROCESS enactment timer —
200
+ // this IS "the non-Slack agent poll loop" the design names as its own timer host. A
201
+ // no-op for a finding-only/non-expiring gate.
202
+ const clearExpiryTimer = scheduleGateExpiryTimer(runId, gate, {
203
+ store: deps.store,
204
+ definition,
205
+ registry: deps.registry,
206
+ });
207
+ try {
208
+ await pollUntilGateResolved(deps.store, runId, gate.gate_id, options.pollIntervalMs ?? 3000);
209
+ }
210
+ finally {
211
+ clearExpiryTimer();
212
+ }
191
213
  }
192
214
  currentRun = await deps.store.get(runId);
193
215
  continue;
@@ -224,11 +246,15 @@ export async function runAgent(deps, options) {
224
246
  // pre-existing (non-repair) case.
225
247
  let stepInput = {};
226
248
  let toolCallsForMeta;
249
+ // issue #236: the resolved structuredOutput meta for THIS attempt's callStep call — reset
250
+ // every iteration alongside toolCallsForMeta, threaded into stepMeta below.
251
+ let structuredOutputMetaForStep;
227
252
  let result;
228
253
  let repairsUsed = 0;
229
254
  let lastRejection;
230
255
  for (;;) {
231
256
  toolCallsForMeta = undefined;
257
+ structuredOutputMetaForStep = undefined;
232
258
  // issue #217 conjunct (vi) ground truth — captured FRESH at the top of EVERY attempt
233
259
  // (including the first), never once per step: a per-step capture is stale across the
234
260
  // whole provider LLM call, so any concurrent writer (a second drive, a gate `respond`, a
@@ -267,6 +293,46 @@ export async function runAgent(deps, options) {
267
293
  const agentProfileInstructions = stepDef.agent_profile !== undefined
268
294
  ? definition.resolved_profiles?.[stepDef.agent_profile]?.content
269
295
  : undefined;
296
+ // issue #236: compute the Phase-B verdict ONCE per attempt-cycle, on the EXACT resolved
297
+ // `inputSchema` local above — never re-derived from `stepDef` (design §2, Rv11). Only
298
+ // steps that DECLARED structured_output ever get a plan at all — an undeclared step's
299
+ // call site below is completely untouched (byte-identical for the non-opted majority).
300
+ let structuredOutputPlan;
301
+ if (stepDef.structured_output === 'strict') {
302
+ const sticky = structuredOutputSticky.get(stepName);
303
+ if (sticky !== undefined) {
304
+ // A prior attempt for this step already downgraded — never re-attempt strict.
305
+ structuredOutputPlan = {
306
+ send: false,
307
+ ineligibleMeta: { requested: true, sent: false, ...sticky },
308
+ };
309
+ }
310
+ else {
311
+ const verdict = assessStructuredOutputEligibility({
312
+ schema: inputSchema,
313
+ tools: false,
314
+ });
315
+ if (verdict.verdict === 'ineligible') {
316
+ structuredOutputPlan = {
317
+ send: false,
318
+ ineligibleMeta: {
319
+ requested: true,
320
+ sent: false,
321
+ downgrade_reason: 'gate_ineligible',
322
+ },
323
+ };
324
+ }
325
+ else if (verdict.verdict === 'eligible_with_caveats') {
326
+ structuredOutputPlan = {
327
+ send: true,
328
+ caveats: verdict.caveats.map((c) => c.code),
329
+ };
330
+ }
331
+ else {
332
+ structuredOutputPlan = { send: true };
333
+ }
334
+ }
335
+ }
270
336
  if (repairsUsed === 0) {
271
337
  const descPreview = stepDef.description.slice(0, 80);
272
338
  console.log(`\n→ [agent] ${stepName}`);
@@ -405,12 +471,72 @@ export async function runAgent(deps, options) {
405
471
  stepInput = {};
406
472
  for (let attempt = 0; attempt < 2; attempt++) {
407
473
  try {
408
- stepInput = await deps.provider.callStep(promptForAttempt, inputSchema, agentProfileInstructions);
474
+ if (structuredOutputPlan !== undefined) {
475
+ // issue #236: the declared-step path — always call callStepWithMeta so the
476
+ // synthesis rule (design §5 [R2-3]) can distinguish a genuinely-absent meta
477
+ // (third-party provider ⇒ provider_unsupported) from a gate/sticky decision
478
+ // that never even attempted a call.
479
+ const { output, meta } = await deps.provider.callStepWithMeta(promptForAttempt, inputSchema, agentProfileInstructions, { structuredOutputStrict: structuredOutputPlan.send });
480
+ stepInput = output;
481
+ if (structuredOutputPlan.ineligibleMeta !== undefined) {
482
+ // Gate-ineligible or sticky — strict was never attempted this call at all.
483
+ structuredOutputMetaForStep = structuredOutputPlan.ineligibleMeta;
484
+ }
485
+ else if (meta !== undefined) {
486
+ structuredOutputMetaForStep = {
487
+ ...meta,
488
+ ...(structuredOutputPlan.caveats !== undefined
489
+ ? { caveats: structuredOutputPlan.caveats }
490
+ : {}),
491
+ };
492
+ // Arm sticky the FIRST time THIS step downgrades (never re-arm from a
493
+ // gate_ineligible meta — that's not a live-API downgrade to remember).
494
+ if (meta.sent === false &&
495
+ meta.downgrade_reason !== undefined &&
496
+ meta.downgrade_reason !== 'gate_ineligible' &&
497
+ !structuredOutputSticky.has(stepName)) {
498
+ structuredOutputSticky.set(stepName, {
499
+ downgrade_reason: meta.downgrade_reason,
500
+ ...(meta.api_message !== undefined
501
+ ? { api_message: meta.api_message }
502
+ : {}),
503
+ });
504
+ }
505
+ }
506
+ else {
507
+ // The base LlmProvider default returned no meta at all — a third-party
508
+ // provider that never overrides callStepWithMeta.
509
+ structuredOutputMetaForStep = {
510
+ requested: true,
511
+ sent: false,
512
+ downgrade_reason: 'provider_unsupported',
513
+ };
514
+ }
515
+ }
516
+ else {
517
+ stepInput = await deps.provider.callStep(promptForAttempt, inputSchema, agentProfileInstructions);
518
+ }
409
519
  callError = undefined;
410
520
  break;
411
521
  }
412
522
  catch (err) {
413
523
  callError = err;
524
+ // issue #236 [R2-7]: a ladder failure still carries a structuredOutput meta on
525
+ // the thrown error — arm sticky from it too, so a subsequent repair/retry never
526
+ // re-attempts strict even though this attempt produced no result at all.
527
+ const failedMeta = err
528
+ ?.structuredOutput;
529
+ if (failedMeta !== undefined &&
530
+ failedMeta.downgrade_reason !== undefined &&
531
+ failedMeta.downgrade_reason !== 'gate_ineligible' &&
532
+ !structuredOutputSticky.has(stepName)) {
533
+ structuredOutputSticky.set(stepName, {
534
+ downgrade_reason: failedMeta.downgrade_reason,
535
+ ...(failedMeta.api_message !== undefined
536
+ ? { api_message: failedMeta.api_message }
537
+ : {}),
538
+ });
539
+ }
414
540
  console.warn(` ⚠ LLM call attempt ${attempt + 1} failed: ${err instanceof Error ? err.message : String(err)}`);
415
541
  }
416
542
  }
@@ -434,7 +560,18 @@ export async function runAgent(deps, options) {
434
560
  ...(deps.traceBufferStore !== undefined
435
561
  ? { traceBufferStore: deps.traceBufferStore }
436
562
  : {}),
437
- ...(toolCallsForMeta !== undefined ? { stepMeta: { toolCalls: toolCallsForMeta } } : {}),
563
+ // issue #236: stepMeta now ALSO passes when structuredOutput exists (previously only
564
+ // passed when toolCalls existed) — the two are independent, either alone must thread.
565
+ ...(toolCallsForMeta !== undefined || structuredOutputMetaForStep !== undefined
566
+ ? {
567
+ stepMeta: {
568
+ ...(toolCallsForMeta !== undefined ? { toolCalls: toolCallsForMeta } : {}),
569
+ ...(structuredOutputMetaForStep !== undefined
570
+ ? { structuredOutput: structuredOutputMetaForStep }
571
+ : {}),
572
+ },
573
+ }
574
+ : {}),
438
575
  // issue #197 PR-2: a FRESH nonce per step-attempt — resolved per call, never cached, so
439
576
  // the strict-flip (checked inside shouldMintWriterNonce) is honored even if the env var
440
577
  // changes mid-process (tests flip it). Also fresh per issue #217 repair attempt, since