@sensigo/realm-cli 0.39.0 → 0.41.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 (109) hide show
  1. package/dist/agent/drive-failure.d.ts +62 -0
  2. package/dist/agent/drive-failure.d.ts.map +1 -0
  3. package/dist/agent/drive-failure.js +241 -0
  4. package/dist/agent/drive-failure.js.map +1 -0
  5. package/dist/agent/providers/agent-utils.d.ts +156 -0
  6. package/dist/agent/providers/agent-utils.d.ts.map +1 -1
  7. package/dist/agent/providers/agent-utils.js +423 -1
  8. package/dist/agent/providers/agent-utils.js.map +1 -1
  9. package/dist/agent/providers/anthropic-provider.d.ts +51 -1
  10. package/dist/agent/providers/anthropic-provider.d.ts.map +1 -1
  11. package/dist/agent/providers/anthropic-provider.js +109 -30
  12. package/dist/agent/providers/anthropic-provider.js.map +1 -1
  13. package/dist/agent/providers/llm-provider.d.ts +13 -1
  14. package/dist/agent/providers/llm-provider.d.ts.map +1 -1
  15. package/dist/agent/providers/llm-provider.js +8 -4
  16. package/dist/agent/providers/llm-provider.js.map +1 -1
  17. package/dist/agent/providers/openai-provider.d.ts +6 -1
  18. package/dist/agent/providers/openai-provider.d.ts.map +1 -1
  19. package/dist/agent/providers/openai-provider.js +75 -20
  20. package/dist/agent/providers/openai-provider.js.map +1 -1
  21. package/dist/agent/providers/openai-reasoning-provider.d.ts +4 -1
  22. package/dist/agent/providers/openai-reasoning-provider.d.ts.map +1 -1
  23. package/dist/agent/providers/openai-reasoning-provider.js +21 -6
  24. package/dist/agent/providers/openai-reasoning-provider.js.map +1 -1
  25. package/dist/agent/run-agent.d.ts +9 -0
  26. package/dist/agent/run-agent.d.ts.map +1 -1
  27. package/dist/agent/run-agent.js +775 -680
  28. package/dist/agent/run-agent.js.map +1 -1
  29. package/dist/agent/run-attach.d.ts.map +1 -1
  30. package/dist/agent/run-attach.js +26 -2
  31. package/dist/agent/run-attach.js.map +1 -1
  32. package/dist/agent/test-support/anthropic-stub.d.ts +45 -0
  33. package/dist/agent/test-support/anthropic-stub.d.ts.map +1 -0
  34. package/dist/agent/test-support/anthropic-stub.js +146 -0
  35. package/dist/agent/test-support/anthropic-stub.js.map +1 -0
  36. package/dist/agent/test-support/composed-journey.d.ts +40 -0
  37. package/dist/agent/test-support/composed-journey.d.ts.map +1 -0
  38. package/dist/agent/test-support/composed-journey.js +104 -0
  39. package/dist/agent/test-support/composed-journey.js.map +1 -0
  40. package/dist/agent/test-support/mcp-server-entry.d.ts +20 -0
  41. package/dist/agent/test-support/mcp-server-entry.d.ts.map +1 -0
  42. package/dist/agent/test-support/mcp-server-entry.js +39 -0
  43. package/dist/agent/test-support/mcp-server-entry.js.map +1 -0
  44. package/dist/agent/test-support/openai-stub.d.ts +47 -0
  45. package/dist/agent/test-support/openai-stub.d.ts.map +1 -0
  46. package/dist/agent/test-support/openai-stub.js +115 -0
  47. package/dist/agent/test-support/openai-stub.js.map +1 -0
  48. package/dist/commands/agent.d.ts +6 -0
  49. package/dist/commands/agent.d.ts.map +1 -1
  50. package/dist/commands/agent.js +44 -3
  51. package/dist/commands/agent.js.map +1 -1
  52. package/dist/commands/drain.d.ts.map +1 -1
  53. package/dist/commands/drain.js +37 -3
  54. package/dist/commands/drain.js.map +1 -1
  55. package/dist/commands/gc.d.ts.map +1 -1
  56. package/dist/commands/gc.js.map +1 -1
  57. package/dist/commands/inspect.d.ts.map +1 -1
  58. package/dist/commands/inspect.js +61 -2
  59. package/dist/commands/inspect.js.map +1 -1
  60. package/dist/commands/list.d.ts.map +1 -1
  61. package/dist/commands/list.js +86 -0
  62. package/dist/commands/list.js.map +1 -1
  63. package/dist/commands/listen.d.ts +13 -0
  64. package/dist/commands/listen.d.ts.map +1 -1
  65. package/dist/commands/listen.js +36 -4
  66. package/dist/commands/listen.js.map +1 -1
  67. package/dist/commands/purge.d.ts +22 -1
  68. package/dist/commands/purge.d.ts.map +1 -1
  69. package/dist/commands/purge.js +70 -42
  70. package/dist/commands/purge.js.map +1 -1
  71. package/dist/commands/register.d.ts +25 -0
  72. package/dist/commands/register.d.ts.map +1 -1
  73. package/dist/commands/register.js +91 -21
  74. package/dist/commands/register.js.map +1 -1
  75. package/dist/commands/respond.d.ts.map +1 -1
  76. package/dist/commands/respond.js +23 -1
  77. package/dist/commands/respond.js.map +1 -1
  78. package/dist/commands/run.d.ts +34 -0
  79. package/dist/commands/run.d.ts.map +1 -1
  80. package/dist/commands/run.js +225 -11
  81. package/dist/commands/run.js.map +1 -1
  82. package/dist/commands/test.d.ts.map +1 -1
  83. package/dist/commands/test.js +48 -8
  84. package/dist/commands/test.js.map +1 -1
  85. package/dist/commands/validate.d.ts +19 -0
  86. package/dist/commands/validate.d.ts.map +1 -1
  87. package/dist/commands/validate.js +358 -84
  88. package/dist/commands/validate.js.map +1 -1
  89. package/dist/commands/watch.d.ts +30 -0
  90. package/dist/commands/watch.d.ts.map +1 -1
  91. package/dist/commands/watch.js +159 -23
  92. package/dist/commands/watch.js.map +1 -1
  93. package/dist/commands/workflow-list.d.ts +16 -0
  94. package/dist/commands/workflow-list.d.ts.map +1 -0
  95. package/dist/commands/workflow-list.js +96 -0
  96. package/dist/commands/workflow-list.js.map +1 -0
  97. package/dist/commands-registry.d.ts.map +1 -1
  98. package/dist/commands-registry.js +2 -0
  99. package/dist/commands-registry.js.map +1 -1
  100. package/dist/extensions/load-project-extensions.d.ts.map +1 -1
  101. package/dist/extensions/load-project-extensions.js +9 -3
  102. package/dist/extensions/load-project-extensions.js.map +1 -1
  103. package/dist/index.js +22 -1
  104. package/dist/index.js.map +1 -1
  105. package/dist/lib/loader-warnings.d.ts +45 -3
  106. package/dist/lib/loader-warnings.d.ts.map +1 -1
  107. package/dist/lib/loader-warnings.js +106 -5
  108. package/dist/lib/loader-warnings.js.map +1 -1
  109. package/package.json +5 -4
@@ -34,12 +34,86 @@ let additionalRedactionValues = [];
34
34
  export function setAdditionalRedactionValues(values) {
35
35
  additionalRedactionValues = values;
36
36
  }
37
+ /**
38
+ * The THREE launcher keys whose values are public by name, not by prefix (issue #407).
39
+ *
40
+ * Exact keys, deliberately — the prefix form they replace was a secret channel. Yarn classic
41
+ * flattens the ENTIRE package.json into `npm_package_*`, so `npm_package_deploy_apiKey` was
42
+ * excluded from redaction under that launcher. With a closed set of three, everything a launcher
43
+ * invents is swept by default: `npm_package_config_*`, `npm_config_*`, every yarn1-flattened
44
+ * field, and `npm_lifecycle_script` — whose value is author-written script text that can carry an
45
+ * inline token, and whose whole line is echoed by a spawn failure.
46
+ *
47
+ * `npm_package_json` is NOT here: it is path-valued on every launcher that sets it, so it belongs
48
+ * to the under-HOME value rule below — a checkout under home keeps its tail, one outside home is
49
+ * redacted whole, which is the same privacy trade every other path value gets.
50
+ *
51
+ * Case-sensitive on purpose: a hostile `NPM_PACKAGE_NAME` is not one of these and stays swept.
52
+ */
53
+ const EXCLUDED_LAUNCHER_METADATA = new Set([
54
+ 'npm_package_name',
55
+ 'npm_package_version',
56
+ 'npm_lifecycle_event',
57
+ ]);
58
+ /**
59
+ * Values that are public by SHAPE: booleans, and 2-or-3-segment dotted version numbers.
60
+ *
61
+ * Launchers inject these constantly — pnpm's `pnpm_config_verify_deps_before_run=false`, yarn1's
62
+ * `YARN_WRAP_OUTPUT=false`, npm's `npm_config_npm_version=11.8.0` — so the word "false" and any
63
+ * matching version string were being cut out of every message and every recorded tool result.
64
+ *
65
+ * The bound is narrow on purpose. A looser `\d+(\.\d+)*` would admit bare integers (numeric
66
+ * PINs, account ids) and IPv4 addresses — values the sweep exists for. Two or three segments,
67
+ * each dotted, and nothing else: `1.0.0-beta` and four-segment strings stay swept.
68
+ *
69
+ * Case-sensitive: `FALSE` stays swept. The `true` alternative is dead today — four characters,
70
+ * already below the length filter — and is kept as defense should that filter ever change.
71
+ */
72
+ const PUBLIC_VALUE_SHAPE = /^(true|false|\d+\.\d+(\.\d+)?)$/;
37
73
  /**
38
74
  * Converts an error value to a string and strips sensitive patterns: Bearer tokens,
39
75
  * query-string tokens, process.env values longer than 4 characters, and the additional
40
76
  * (manifest-secret) values. All literal values are redacted in ONE combined pass,
41
77
  * deduped and applied LONGEST-FIRST — a short value contained in a longer one can no
42
78
  * longer leave fragments of the longer value behind.
79
+ *
80
+ * THE BOUNDARY (issue #407). The default is fail-closed — every env value over four characters
81
+ * is redacted — with three bounded exceptions, and everything else swept. Where the field bounds
82
+ * redaction by key semantics or by registered values, realm keeps the closed default and names
83
+ * its exceptions.
84
+ *
85
+ * Why it exists at all: under npm, `npm_package_name` is `"realm"`, so realm redacted its own
86
+ * name out of its own error messages. Console-only that was cosmetic; issue #401 persists those
87
+ * messages in the run record, which made the mangling durable evidence.
88
+ *
89
+ * The first fix excluded `npm_package_*` BY PREFIX — and that was itself a secret channel. Yarn
90
+ * classic flattens the whole package.json into that namespace, so `npm_package_deploy_apiKey`
91
+ * and `npm_package_scripts_ship` (a script line with an inline token) were excluded from
92
+ * redaction. The premise "npm_package_* is public metadata" is true of npm, pnpm, bun and berry,
93
+ * and FALSE of yarn 1.x. Exact keys cannot be flattened into.
94
+ *
95
+ * The three rules, applied to the ENV SWEEP ONLY:
96
+ *
97
+ * 1. EXACT KEYS — {@link EXCLUDED_LAUNCHER_METADATA}, three of them, none path-valued.
98
+ * 2. PUBLIC SHAPE — {@link PUBLIC_VALUE_SHAPE}: booleans and dotted versions, which launchers
99
+ * inject everywhere and which mangled ordinary prose ("received false") and version numbers.
100
+ * 3. UNDER HOME — a value starting with `HOME + '/'` leaves the sweep, so a require stack
101
+ * renders `[REDACTED]/code/realm/…`: the tail is the informative half, the username is not.
102
+ * HOME ITSELF stays swept, which is what strips the prefix.
103
+ *
104
+ * Rule 3 is CONDITIONAL PRIVACY, and the condition is the point: a path outside home — the WSL
105
+ * `/mnt/c/Users/<Name>` shape — cannot have its username stripped by a home-prefix rule, so it
106
+ * stays redacted whole. Accepted bound: a path INTO home (`SECRET_PATH=/home/x/secrets/key.pem`)
107
+ * reveals its tail. A path to a secret is not the secret — file content never transits env — but
108
+ * the tail can disclose directory structure. The remedy for a sensitive path is to declare it a
109
+ * manifest secret: the exemption below redacts declared values even under home.
110
+ *
111
+ * THE EXEMPTION, load-bearing: rules 2 and 3 filter the ENV sweep only. `additionalRedactionValues`
112
+ * — values an author DECLARED secret — are never filtered, however public-shaped they look or
113
+ * wherever they live.
114
+ *
115
+ * BLAST RADIUS: {@link serializeToolResult} runs this same pass, so persisted tool results heal
116
+ * with it — going forward. Records written by earlier releases keep the mangled form.
43
117
  */
44
118
  export function sanitizeError(err) {
45
119
  let text;
@@ -54,7 +128,30 @@ export function sanitizeError(err) {
54
128
  }
55
129
  text = text.replace(/Bearer [A-Za-z0-9._-]+/g, 'Bearer [REDACTED]');
56
130
  text = text.replace(/token=[A-Za-z0-9._-]+/g, 'token=[REDACTED]');
57
- const envValues = Object.values(process.env).filter((val) => val !== undefined && val.length > 4);
131
+ // Read PER CALL, never captured at module scope: a module-scope read is the issue-#285 class
132
+ // and would make every `vi.stubEnv('HOME', …)` cell test the process's real home instead.
133
+ //
134
+ // Keyed on `process.env.HOME`, deliberately NOT `os.homedir()`, and the listen.ts #332
135
+ // precedent that brands bare HOME reads house-inconsistent does not apply here: the filter key
136
+ // MUST be the same string the sweep can still redact. With homedir() and HOME unset or
137
+ // different, under-home values would leave the sweep while nothing redacted their prefix, and
138
+ // the full path would ship bare. The coupling is the mechanism.
139
+ //
140
+ // The length guard is not cosmetic: a HOME of four characters or fewer is itself outside the
141
+ // sweep, so nothing would redact the prefix it strips. No normalization either — a trailing
142
+ // slash makes `HOME + '/'` never match, the rule no-ops, and the value stays redacted.
143
+ //
144
+ // win32 is a stated non-goal rather than an oversight (realm has live win32 branches
145
+ // elsewhere): HOME is typically undefined there, so the rule no-ops into today's fail-closed
146
+ // full redaction, and `USERPROFILE` is deliberately unhandled — its value stays swept.
147
+ const home = process.env['HOME'];
148
+ const homePrefix = home !== undefined && home.length > 4 ? `${home}/` : undefined;
149
+ const envValues = Object.entries(process.env)
150
+ .filter(([key]) => !EXCLUDED_LAUNCHER_METADATA.has(key))
151
+ .map(([, val]) => val)
152
+ .filter((val) => val !== undefined && val.length > 4)
153
+ .filter((val) => !PUBLIC_VALUE_SHAPE.test(val))
154
+ .filter((val) => homePrefix === undefined || !val.startsWith(homePrefix));
58
155
  const combined = [...new Set([...envValues, ...additionalRedactionValues])].sort((a, b) => b.length - a.length);
59
156
  for (const val of combined) {
60
157
  text = text.split(val).join('[REDACTED]');
@@ -69,6 +166,60 @@ export function serializeToolResult(result) {
69
166
  const raw = typeof result === 'string' ? result : JSON.stringify(result);
70
167
  return sanitizeError(raw);
71
168
  }
169
+ /** The `error` text for a Class-B result whose content carries no readable text at all. */
170
+ export const CLASS_B_NO_TEXT_MARKER = 'tool returned isError with no text content';
171
+ /**
172
+ * Extracts the failure text from a POLITELY FAILED tool call — issue #345.
173
+ *
174
+ * MCP defines two ways a tool call fails. The transport can reject (Class A: an exception, which
175
+ * the providers' catch branch already records honestly), or the call can RETURN normally with
176
+ * `isError: true` inside the result (Class B: the polite failure the spec defines for a tool
177
+ * reporting its own error to the model). Class B used to be minted as a success — no `error`
178
+ * field, the failure text buried inside `result` — which made the record type's own doc contract
179
+ * false and made every tool-reliability count read failures as successes.
180
+ *
181
+ * Returns the sanitized failure text for a Class-B result, or `undefined` for anything else — so
182
+ * a caller writes `const err = classBError(raw)` and branches on presence.
183
+ *
184
+ * WHY `=== true` AND NOT TRUTHINESS. The SDK zod-validates every `callTool` response against
185
+ * `CallToolResultSchema`, where `isError` is `z.boolean().optional()`. A non-boolean `isError`
186
+ * fails that parse, the promise REJECTS, and the call lands in the catch branch as Class A —
187
+ * recorded WITH an `error` either way. So the spec-illegal world cannot reach this mint through
188
+ * the real transport, and a strict check cannot silently swallow a failure. (The fixture in the
189
+ * strict-boolean cell models a wire state that cannot occur; it exists to pin the choice, not a
190
+ * reachable case.) This premise breaks only if realm switches to
191
+ * `CompatibilityCallToolResultSchema` or talks to a raw transport that skips validation — if that
192
+ * ever happens, revisit this line first.
193
+ */
194
+ export function classBError(rawResult) {
195
+ if (typeof rawResult !== 'object' || rawResult === null)
196
+ return undefined;
197
+ const result = rawResult;
198
+ if (result.isError !== true)
199
+ return undefined;
200
+ const blocks = Array.isArray(result.content) ? result.content : [];
201
+ const text = blocks
202
+ .filter((b) => typeof b === 'object' &&
203
+ b !== null &&
204
+ b.type === 'text' &&
205
+ typeof b.text === 'string')
206
+ .map((b) => b.text)
207
+ // '\n' is specified rather than incidental: two providers mint this and a different join
208
+ // would make the same failure read differently depending on which one ran.
209
+ .join('\n');
210
+ // Empty JOINED text, not merely absent blocks — `text: ''` is transport-legal, and an empty
211
+ // `error` would be invisible to inspect's truthiness check, so a politely-failed call would
212
+ // render as unfailed. The marker is what stops that.
213
+ //
214
+ // Tested on the TRIMMED text, and that is not fussiness: TWO empty blocks join to `'\n'`, which
215
+ // is length 1 and would have sailed past a `length === 0` check — producing an `error` that is
216
+ // technically truthy and visually nothing, which is the same invisible failure wearing a
217
+ // different hat. (Found by the all-empty cell below, which is why it exists.) The returned text
218
+ // is never trimmed — only the emptiness question is.
219
+ if (text.trim().length === 0)
220
+ return CLASS_B_NO_TEXT_MARKER;
221
+ return sanitizeError(text);
222
+ }
72
223
  /** Splits "server_id:tool_name" into its components. Throws if the format is invalid. */
73
224
  export function parseNamespacedId(id) {
74
225
  const colonIdx = id.indexOf(':');
@@ -291,4 +442,275 @@ export function extractApiErrorFields(err) {
291
442
  out.api_code = typeof e.code === 'string' ? e.code : null;
292
443
  return out;
293
444
  }
445
+ // =================================================================================================
446
+ // issue #401 — the per-create budget: the counting fetch, the ceiling, and the attribution
447
+ //
448
+ // THE INVARIANT: no single model request can hold a drive hostage. The SDK's own `timeout` bounds
449
+ // one ATTEMPT; nothing bounded the whole create, so a server directing a two-hour Retry-After, or
450
+ // a connection that hung after headers, could park a drive indefinitely with nothing recorded.
451
+ //
452
+ // Scope, stated because the claim must not overreach: this bounds realm's IN-REPO providers, which
453
+ // consume the clock. A `--provider-module` provider still gets the RECORD when it fails — it just
454
+ // does not get the bound.
455
+ // =================================================================================================
456
+ /** Realm's own retry count, passed EXPLICITLY to every SDK client. */
457
+ export const MAX_RETRIES = 2;
458
+ /** The download allowance the derived ceiling adds on top of the retry budget. */
459
+ const DOWNLOAD_ALLOWANCE_MS = 60_000;
460
+ /**
461
+ * The largest delay a timer can hold. Past it `setTimeout` overflows and fires ~immediately,
462
+ * which would inVERT a huge budget into an instant abort (gate-expiry-timer.ts:24 clamps for the
463
+ * same reason). Both timers matter here: realm's own ceiling, and the `timeout` realm hands the
464
+ * SDK — an unclamped per-attempt value overflows one layer down and returns as a
465
+ * `connection_timeout` that has nothing to do with the connection.
466
+ */
467
+ const MAX_TIMEOUT_MS = 2 ** 31 - 1;
468
+ /**
469
+ * Derives the whole-create ceiling from a per-attempt value.
470
+ *
471
+ * `perAttempt × (MAX_RETRIES + 1)` covers every attempt the SDK will make, plus the backoff it
472
+ * sleeps between them, plus a download allowance so a large-but-progressing response is never
473
+ * killed for being large. The backoff term is the SDK's OWN schedule summed as an UPPER bound —
474
+ * its jitter only ever reduces the wait, so budgeting the un-jittered sum cannot cut short a
475
+ * retry the SDK scheduled for itself.
476
+ *
477
+ * A SERVER-DIRECTED wait is a different thing and is deliberately NOT budgeted. A `Retry-After`
478
+ * can ask for hours; the ceiling outranks it on purpose, which is the point of the bound rather
479
+ * than a gap in it.
480
+ */
481
+ export function deriveLlmClock(perAttemptMs) {
482
+ let backoffMarginMs = 0;
483
+ for (let n = 0; n < MAX_RETRIES; n++)
484
+ backoffMarginMs += Math.min(0.5 * 2 ** n, 8) * 1000;
485
+ // Clamped BEFORE the arithmetic and again after it, because both numbers arm a real timer. The
486
+ // clamped per-attempt value is what gets recorded too — the record states what actually bounds
487
+ // the attempt, not what someone asked for. There is deliberately no validator upper bound: a
488
+ // huge value is not an authoring error, it is a request for "effectively no limit", and that is
489
+ // what it gets.
490
+ const perAttempt = Math.min(perAttemptMs, MAX_TIMEOUT_MS);
491
+ return {
492
+ ceilingMs: Math.min(perAttempt * (MAX_RETRIES + 1) + backoffMarginMs + DOWNLOAD_ALLOWANCE_MS, MAX_TIMEOUT_MS),
493
+ declaredPerAttemptMs: perAttempt,
494
+ };
495
+ }
496
+ /**
497
+ * Parses all three Retry-After forms into milliseconds: `retry-after-ms`, a numeric
498
+ * `Retry-After` in seconds, and an HTTP-date `Retry-After`. OBSERVED, never honored by realm.
499
+ *
500
+ * The date form is legal, the SDKs honor it, and a parser that only understood numbers dropped a
501
+ * whole header form on the floor — recording nothing for a rate limit that was clearly signalled.
502
+ * A date already in the past observes as 0 (the wait is over; a negative number would be a
503
+ * nonsense measurement), while a header nobody can parse observes as nothing at all — realm has
504
+ * no idea what was asked for and says so by omission rather than by inventing a zero.
505
+ */
506
+ function parseRetryAfterMs(headers) {
507
+ const ms = headers.get('retry-after-ms');
508
+ if (ms !== null && ms.trim() !== '' && Number.isFinite(Number(ms)))
509
+ return Number(ms);
510
+ const after = headers.get('retry-after');
511
+ if (after === null || after.trim() === '')
512
+ return undefined;
513
+ if (Number.isFinite(Number(after)))
514
+ return Number(after) * 1000;
515
+ // `Number`, deliberately, not `parseFloat`. RFC 9110 says a Retry-After is EITHER digits-only
516
+ // seconds or an HTTP-date; `parseFloat('7200abc')` would happily read 7200 out of a header that
517
+ // is neither, and record a measurement the server never sent. The strict parse falls through to
518
+ // the date arm and then to nothing, which is the truthful answer for a malformed header.
519
+ const at = Date.parse(after);
520
+ if (!Number.isFinite(at))
521
+ return undefined;
522
+ return Math.max(0, at - Date.now());
523
+ }
524
+ /**
525
+ * Wraps `fetch` so realm can SEE what the SDK's retry ladder did — how many attempts it made, the
526
+ * last status, and any Retry-After the server asked for, in all three of its legal forms
527
+ * (`retry-after-ms`, a numeric `Retry-After`, an HTTP-date `Retry-After`).
528
+ *
529
+ * Observation only. Realm never honors a Retry-After: acting on it would be a scheduling decision
530
+ * this layer does not make, and recording it is what lets an operator tell a rate limit apart from
531
+ * a hang. The inner fetch is injectable so the wrapper is unit-testable without a socket.
532
+ */
533
+ export function makeCountingFetch(counters, innerFetch = globalThis.fetch) {
534
+ return async (input, init) => {
535
+ try {
536
+ const res = await innerFetch(input, init);
537
+ counters.attempts++;
538
+ counters.lastStatus = res.status;
539
+ const retryAfter = parseRetryAfterMs(res.headers);
540
+ if (retryAfter !== undefined)
541
+ counters.lastRetryAfterMs = retryAfter;
542
+ return res;
543
+ }
544
+ catch (err) {
545
+ // A rejection is still an attempt — it just carries no status to observe.
546
+ counters.attempts++;
547
+ throw err;
548
+ }
549
+ };
550
+ }
551
+ /**
552
+ * Attaches a payload to an error, WITHOUT overwriting one that is already there.
553
+ *
554
+ * TOTAL. Both the probe and the assignment can throw on a value realm did not create — `in` runs
555
+ * a proxy's `has` trap, and assigning to a frozen object throws in strict mode. Either one would
556
+ * hand the caller the attacher's own TypeError in place of the failure it was trying to describe,
557
+ * which is the whole attribution chain defeated by the last link in it. An error that cannot be
558
+ * enriched still propagates, intact and unenriched; shape classification never needed the payload.
559
+ */
560
+ export function attachDriveCall(err, payload) {
561
+ if (typeof err !== 'object' || err === null)
562
+ return;
563
+ try {
564
+ if ('driveCall' in err)
565
+ return; // e.g. getClient's sdk_missing attach — never re-attributed
566
+ err.driveCall = payload;
567
+ }
568
+ catch {
569
+ /* enrichment never out-throws the error being attributed */
570
+ }
571
+ }
572
+ /**
573
+ * Converts any thrown value to display text, TOTALLY.
574
+ *
575
+ * The chokepoints interpolate the thrown value into their console line BEFORE recording it, so a
576
+ * poisoned `toString` used to out-throw at the print — replacing the operator's error with a
577
+ * secondary one before the (already hardened) mint could run.
578
+ */
579
+ export function safeErrorText(err) {
580
+ try {
581
+ return err instanceof Error ? err.message : String(err);
582
+ }
583
+ catch {
584
+ return 'unrenderable thrown value';
585
+ }
586
+ }
587
+ /**
588
+ * Classifies an SDK-raised error by shape, for the payload's `error_class`.
589
+ *
590
+ * BOTH `name` and `constructor.name` are checked, and the second is the one that works. Neither
591
+ * installed SDK sets `.name` on its error classes — a real `APIConnectionError` from either one
592
+ * reports `name === 'Error'` and carries its identity on the constructor — so a check on `.name`
593
+ * alone recorded every genuine connection failure and every genuine request timeout as `other`.
594
+ * `.name` is kept because a wrapper that re-throws with a copied name is a real shape too.
595
+ *
596
+ * The timeout arm sits first as a belt: under exact string equality a real timeout cannot match
597
+ * the connection arm anyway (its constructor name is the leaf), but a wrapper copying a parent
598
+ * `.name` onto a timeout instance could.
599
+ *
600
+ * TOTAL. This runs inside driveCreate's catch, where a throw would replace the operator's failure
601
+ * with realm's own — and reading `constructor` and `name` off a value realm did not create can
602
+ * throw. (That hole predates the constructor check: a poisoned `.name` getter out-threw here.)
603
+ */
604
+ function shapeClass(err) {
605
+ try {
606
+ const name = err?.name;
607
+ const ctor = err?.constructor?.name;
608
+ if (name === 'APIConnectionTimeoutError' || ctor === 'APIConnectionTimeoutError') {
609
+ return 'connection_timeout';
610
+ }
611
+ if (name === 'APIConnectionError' || ctor === 'APIConnectionError')
612
+ return 'connection_error';
613
+ if (extractHttpStatus(err) !== undefined)
614
+ return 'api_status';
615
+ return 'other';
616
+ }
617
+ catch {
618
+ return 'other';
619
+ }
620
+ }
621
+ /**
622
+ * Runs ONE model create under realm's ceiling.
623
+ *
624
+ * Two mechanisms, because one is not enough. The timer is what bounds the wall clock; the abort is
625
+ * what actually stops work — but only as far as the SDK will let it. The SDK's sleep primitive is
626
+ * signal-aware, yet its retry site passes no signal, so a raced-out backoff sleep runs to
627
+ * completion in the worker. That is the ceiling's known reach, not a bug in it: an SDK bump that
628
+ * threads the signal there would make the race leg partially redundant, and it would still be
629
+ * earning its keep on the post-header body hang.
630
+ *
631
+ * Wraps the CREATE only. Client construction stays outside — that is where a missing SDK attaches
632
+ * its own payload, and this must never re-attribute it.
633
+ */
634
+ export async function driveCreate(rawCreate, body, clock, counters) {
635
+ const before = { ...counters };
636
+ // The observations are cleared, the attempt total is not. `attempts` is a running count, so a
637
+ // delta is the right question for it; a status is an OBSERVATION, and asking "did it change?"
638
+ // means a second identical 429 reads as nothing observed at all — the discriminator vanishing
639
+ // exactly during the rate-limit storm it exists to describe. Cleared here, they are present in
640
+ // the payload if and only if THIS create saw them.
641
+ delete counters.lastStatus;
642
+ delete counters.lastRetryAfterMs;
643
+ const started = Date.now();
644
+ const controller = new AbortController();
645
+ let timer;
646
+ let fired = false;
647
+ const ceiling = new Promise((_, reject) => {
648
+ timer = setTimeout(() => {
649
+ fired = true;
650
+ reject(new Error('__realm_ceiling__'));
651
+ }, clock.ceilingMs);
652
+ });
653
+ // A race has a LOSER, and an unobserved rejected promise takes the process down on Node >= 15.
654
+ // DEFENSE IN DEPTH, stated precisely: `Promise.race` subscribes to every promise it is given,
655
+ // and that subscription counts as handling — so as long as the race below actually runs, neither
656
+ // loser can go unhandled, and probing this line away does NOT trip an unhandledRejection trap.
657
+ // What made the class real was the path where the race NEVER RAN: a create that threw
658
+ // synchronously escaped before `Promise.race`, leaving this timer to fire into nothing and kill
659
+ // the process. That path is closed structurally below; this line is the belt for a future
660
+ // refactor that stops racing, which is why it survives a probe showing it does nothing today.
661
+ void ceiling.catch(() => undefined);
662
+ // Declared out here so the fired path can observe the loser; ASSIGNED inside the try, because a
663
+ // provider whose create throws SYNCHRONOUSLY (a bad argument, a mocked double) would otherwise
664
+ // escape past both the classification and the `finally` — leaving the error unattributed and
665
+ // the timer running to fire into nothing.
666
+ let sdkCall;
667
+ try {
668
+ sdkCall = (async () => rawCreate(body, { signal: controller.signal }))();
669
+ return await Promise.race([sdkCall, ceiling]);
670
+ }
671
+ catch (err) {
672
+ // Present iff THIS create observed them — the fields were cleared at the top, so a stale
673
+ // status from a previous create cannot attach to this failure and tell a confident lie about
674
+ // what just happened.
675
+ const sawStatus = counters.lastStatus !== undefined;
676
+ const sawRetryAfter = counters.lastRetryAfterMs !== undefined;
677
+ const delta = {
678
+ attempts_sdk: counters.attempts - before.attempts,
679
+ elapsed_ms: Date.now() - started,
680
+ ...(sawStatus ? { last_observed_status: counters.lastStatus } : {}),
681
+ ...(sawRetryAfter ? { retry_after_observed_ms: counters.lastRetryAfterMs } : {}),
682
+ ...(clock.declaredPerAttemptMs !== undefined
683
+ ? { declared_per_attempt_ms: clock.declaredPerAttemptMs }
684
+ : {}),
685
+ derived_ceiling_ms: clock.ceilingMs,
686
+ };
687
+ if (fired) {
688
+ controller.abort();
689
+ // The loser's rejection still arrives — an APIUserAbortError, moments later. Same defense
690
+ // in depth as the timer's catch above, and the same honest caveat: the race is already
691
+ // subscribed, so this is insurance rather than the thing currently preventing a crash.
692
+ void sdkCall?.catch(() => undefined);
693
+ // The lever named is the one that is actually LIVE. Telling an operator to raise a flag
694
+ // that a step key is already overriding sends them to change something with no effect —
695
+ // so provenance decides which arm renders. With no provenance at all (a hand-built clock)
696
+ // both arms render, because either could be the live one.
697
+ const source = clock.perAttemptSource;
698
+ const stepArm = source === undefined || source === 'step';
699
+ const flagArm = source === undefined || source === 'flag' || source === 'default';
700
+ const levers = [
701
+ ...(stepArm ? ['raise llm_timeout_seconds on the step'] : []),
702
+ ...(flagArm ? ['pass a larger --llm-timeout'] : []),
703
+ ].join(' or ');
704
+ const aborted = new Error(`LLM create exceeded the per-create ceiling (${String(clock.ceilingMs)}ms) — ${levers}`);
705
+ attachDriveCall(aborted, { error_class: 'aborted_by_budget', ...delta });
706
+ throw aborted;
707
+ }
708
+ attachDriveCall(err, { error_class: shapeClass(err), ...delta });
709
+ throw err;
710
+ }
711
+ finally {
712
+ if (timer !== undefined)
713
+ clearTimeout(timer);
714
+ }
715
+ }
294
716
  //# sourceMappingURL=agent-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-utils.js","sourceRoot":"","sources":["../../../src/agent/providers/agent-utils.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GACtB,kEAAkE;IAClE,8FAA8F,CAAC;AAEjG,mGAAmG;AACnG,mGAAmG;AACnG,2GAA2G;AAC3G,MAAM,4BAA4B,GAChC,kEAAkE;IAClE,8FAA8F;IAC9F,wDAAwD,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAqC,EACrC,wBAAiC,EACjC,qBAA+B;IAE/B,MAAM,UAAU,GACd,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrF,MAAM,IAAI,GACR,wBAAwB,KAAK,SAAS;QACpC,CAAC,CAAC,GAAG,wBAAwB,OAAO,UAAU,EAAE;QAChD,CAAC,CAAC,UAAU,CAAC;IACjB,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,GAAG,IAAI,2CAA2C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,IAAI,yBAAyB,GAAsB,EAAE,CAAC;AAEtD,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B,CAAC,MAAyB;IACpE,yBAAyB,GAAG,MAAM,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,IAAY,CAAC;IACjB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC;IACpE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CACjD,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAC5D,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9E,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC9B,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,EAAE,0CAA0C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,kGAAkG;AAClG,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,6BAA6B,CAAC;IAC9C,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACtB,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,KAAK,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;YAC3B,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,KAAK,GAAG,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,+FAA+F;AAC/F,SAAS,gBAAgB,CAAC,UAAoB;IAC5C,IAAI,MAAM,GAAmC,IAAI,CAAC;IAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,MAAM,GAAG,MAAiC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gGAAgG;QAClG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAC3C,sFAAsF;IACxF,CAAC;IACD,OAAO,gBAAgB,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,8FAA8F;AAC9F,gGAAgG;AAChG,gGAAgG;AAChG,oFAAoF;AAEpF,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAqBD;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,SAA+B;IAE/B,MAAM,GAAG,GAAgC,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAC1D,MAAM,CAAC,GAAG,KAA2C,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GACV,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ;YACrD,CAAC,CAAE,CAAC,CAAC,QAAQ,CAA6B;YAC1C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,kBAAkB,GACtB,OAAO,KAAK,sBAAsB,IAAI,OAAO,MAAM,EAAE,CAAC,oBAAoB,CAAC,KAAK,QAAQ;YACtF,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC9B,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,eAAe,GACnB,OAAO,KAAK,UAAU,IAAI,OAAO,MAAM,EAAE,CAAC,iBAAiB,CAAC,KAAK,QAAQ;YACvE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC3B,CAAC,CAAC,SAAS,CAAC;QAChB,wFAAwF;QACxF,2FAA2F;QAC3F,MAAM,aAAa,GACjB,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC,CAAE,MAAM,CAAC,eAAe,CAAe;YACxC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,IAAI,MAAM;gBACvE,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC1B,CAAC,CAAC,SAAS,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC;YACP,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAC7D,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACzD,OAAO;YACP,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACnD,GAAG,CAAC,kBAAkB,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC5D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,eAAe,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE,gBAAgB,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAgC;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvE,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,CAAC;IAC5D,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,IAAI,2BAA2B,KAAK,CAAC,mBAAmB,IAAI,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,IAAI,wBAAwB,KAAK,CAAC,gBAAgB,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,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;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAIhD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,GAA0C,CAAC;IACrD,MAAM,GAAG,GAA4D,EAAE,CAAC;IACxE,IAAI,OAAO,IAAI,CAAC;QAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,IAAI,MAAM,IAAI,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"agent-utils.js","sourceRoot":"","sources":["../../../src/agent/providers/agent-utils.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GACtB,kEAAkE;IAClE,8FAA8F,CAAC;AAEjG,mGAAmG;AACnG,mGAAmG;AACnG,2GAA2G;AAC3G,MAAM,4BAA4B,GAChC,kEAAkE;IAClE,8FAA8F;IAC9F,wDAAwD,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAqC,EACrC,wBAAiC,EACjC,qBAA+B;IAE/B,MAAM,UAAU,GACd,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrF,MAAM,IAAI,GACR,wBAAwB,KAAK,SAAS;QACpC,CAAC,CAAC,GAAG,wBAAwB,OAAO,UAAU,EAAE;QAChD,CAAC,CAAC,UAAU,CAAC;IACjB,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,GAAG,IAAI,2CAA2C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,IAAI,yBAAyB,GAAsB,EAAE,CAAC;AAEtD,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B,CAAC,MAAyB;IACpE,yBAAyB,GAAG,MAAM,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,kBAAkB,GAAG,iCAAiC,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,IAAY,CAAC;IACjB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC;IACpE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;IAClE,6FAA6F;IAC7F,0FAA0F;IAC1F,EAAE;IACF,uFAAuF;IACvF,+FAA+F;IAC/F,uFAAuF;IACvF,8FAA8F;IAC9F,gEAAgE;IAChE,EAAE;IACF,6FAA6F;IAC7F,4FAA4F;IAC5F,uFAAuF;IACvF,EAAE;IACF,qFAAqF;IACrF,6FAA6F;IAC7F,uFAAuF;IACvF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACvD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;SACrB,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;SACnE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9E,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC9B,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,sBAAsB,GAAG,4CAA4C,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,WAAW,CAAC,SAAkB;IAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,SAAqD,CAAC;IACrE,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM;SAChB,MAAM,CACL,CAAC,CAAC,EAAuC,EAAE,CACzC,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACT,CAAwB,CAAC,IAAI,KAAK,MAAM;QACzC,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,CACrD;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnB,yFAAyF;QACzF,2EAA2E;SAC1E,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,4FAA4F;IAC5F,4FAA4F;IAC5F,qDAAqD;IACrD,EAAE;IACF,gGAAgG;IAChG,+FAA+F;IAC/F,yFAAyF;IACzF,gGAAgG;IAChG,qDAAqD;IACrD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,sBAAsB,CAAC;IAC5D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,EAAE,0CAA0C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,kGAAkG;AAClG,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,6BAA6B,CAAC;IAC9C,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACtB,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,KAAK,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;YAC3B,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,KAAK,GAAG,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,+FAA+F;AAC/F,SAAS,gBAAgB,CAAC,UAAoB;IAC5C,IAAI,MAAM,GAAmC,IAAI,CAAC;IAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,MAAM,GAAG,MAAiC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gGAAgG;QAClG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAC3C,sFAAsF;IACxF,CAAC;IACD,OAAO,gBAAgB,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,8FAA8F;AAC9F,gGAAgG;AAChG,gGAAgG;AAChG,oFAAoF;AAEpF,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAqBD;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,SAA+B;IAE/B,MAAM,GAAG,GAAgC,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAC1D,MAAM,CAAC,GAAG,KAA2C,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GACV,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ;YACrD,CAAC,CAAE,CAAC,CAAC,QAAQ,CAA6B;YAC1C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,kBAAkB,GACtB,OAAO,KAAK,sBAAsB,IAAI,OAAO,MAAM,EAAE,CAAC,oBAAoB,CAAC,KAAK,QAAQ;YACtF,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC9B,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,eAAe,GACnB,OAAO,KAAK,UAAU,IAAI,OAAO,MAAM,EAAE,CAAC,iBAAiB,CAAC,KAAK,QAAQ;YACvE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC3B,CAAC,CAAC,SAAS,CAAC;QAChB,wFAAwF;QACxF,2FAA2F;QAC3F,MAAM,aAAa,GACjB,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC,CAAE,MAAM,CAAC,eAAe,CAAe;YACxC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,IAAI,MAAM;gBACvE,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC1B,CAAC,CAAC,SAAS,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC;YACP,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAC7D,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACzD,OAAO;YACP,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACnD,GAAG,CAAC,kBAAkB,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC5D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,eAAe,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE,gBAAgB,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAgC;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvE,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,CAAC;IAC5D,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,IAAI,2BAA2B,KAAK,CAAC,mBAAmB,IAAI,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,IAAI,wBAAwB,KAAK,CAAC,gBAAgB,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,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;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAIhD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,GAA0C,CAAC;IACrD,MAAM,GAAG,GAA4D,EAAE,CAAC;IACxE,IAAI,OAAO,IAAI,CAAC;QAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,IAAI,MAAM,IAAI,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oGAAoG;AACpG,2FAA2F;AAC3F,EAAE;AACF,kGAAkG;AAClG,kGAAkG;AAClG,+FAA+F;AAC/F,EAAE;AACF,mGAAmG;AACnG,kGAAkG;AAClG,0BAA0B;AAC1B,oGAAoG;AAEpG,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,kFAAkF;AAClF,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAuCrC;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;QAAE,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1F,+FAA+F;IAC/F,+FAA+F;IAC/F,6FAA6F;IAC7F,gGAAgG;IAChG,gBAAgB;IAChB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC1D,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,CACjB,UAAU,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,eAAe,GAAG,qBAAqB,EACxE,cAAc,CACf;QACD,oBAAoB,EAAE,UAAU;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAChE,8FAA8F;IAC9F,gGAAgG;IAChG,gGAAgG;IAChG,yFAAyF;IACzF,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,aAA2B,UAAU,CAAC,KAAK;IAE3C,OAAO,KAAK,EAAE,KAAwB,EAAE,IAAkB,EAAqB,EAAE;QAC/E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,UAAU,KAAK,SAAS;gBAAE,QAAQ,CAAC,gBAAgB,GAAG,UAAU,CAAC;YACrE,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY,EAAE,OAAyB;IACrE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IACpD,IAAI,CAAC;QACH,IAAI,WAAW,IAAI,GAAG;YAAE,OAAO,CAAC,4DAA4D;QAC3F,GAAuC,CAAC,SAAS,GAAG,OAAO,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,UAAU,CAAC,GAAY;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAI,GAAiC,EAAE,IAAI,CAAC;QACtD,MAAM,IAAI,GAAI,GAAmD,EAAE,WAAW,EAAE,IAAI,CAAC;QACrF,IAAI,IAAI,KAAK,2BAA2B,IAAI,IAAI,KAAK,2BAA2B,EAAE,CAAC;YACjF,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,oBAAoB;YAAE,OAAO,kBAAkB,CAAC;QAC9F,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC;QAC9D,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAuF,EACvF,IAA6B,EAC7B,KAAe,EACf,QAAsB;IAEtB,MAAM,MAAM,GAAiB,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7C,8FAA8F;IAC9F,8FAA8F;IAC9F,8FAA8F;IAC9F,+FAA+F;IAC/F,mDAAmD;IACnD,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC3B,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,IAAI,KAAgD,CAAC;IACrD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,+FAA+F;IAC/F,8FAA8F;IAC9F,iGAAiG;IACjG,+FAA+F;IAC/F,sFAAsF;IACtF,gGAAgG;IAChG,0FAA0F;IAC1F,8FAA8F;IAC9F,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEpC,gGAAgG;IAChG,+FAA+F;IAC/F,6FAA6F;IAC7F,0CAA0C;IAC1C,IAAI,OAA+B,CAAC;IAEpC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yFAAyF;QACzF,6FAA6F;QAC7F,sBAAsB;QACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC;QACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,KAAK,SAAS,CAAC;QAC9D,MAAM,KAAK,GAAqB;YAC9B,YAAY,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YACjD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;YAChC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,uBAAuB,EAAE,KAAK,CAAC,oBAAoB,EAAE;gBACzD,CAAC,CAAC,EAAE,CAAC;YACP,kBAAkB,EAAE,KAAK,CAAC,SAAS;SACpC,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,0FAA0F;YAC1F,uFAAuF;YACvF,uFAAuF;YACvF,KAAK,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACrC,wFAAwF;YACxF,wFAAwF;YACxF,0FAA0F;YAC1F,0DAA0D;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS,CAAC;YAClF,MAAM,MAAM,GAAG;gBACb,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,KAAK,CACvB,+CAA+C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,CACxF,CAAC;YACF,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,OAAO,CAAC;QAChB,CAAC;QAED,eAAe,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACjE,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -1,6 +1,52 @@
1
1
  import { type StructuredOutputMeta } from '@sensigo/realm';
2
2
  import { ToolCapableLlmProvider, type ProviderCapabilities } from './llm-provider.js';
3
3
  import type { ToolDefinition, ToolExecutor, StepWithToolsResult } from '../mcp/mcp-extensions.js';
4
+ import { type LlmClock } from './agent-utils.js';
5
+ /**
6
+ * Returns the maximum output tokens for the given Anthropic model.
7
+ * The Anthropic Messages API requires max_tokens — this must always produce a valid value.
8
+ * Source: https://docs.anthropic.com/en/docs/about-claude/models/all-models
9
+ *
10
+ * Issue #309 fix (ratified per design-d4-final.md's ADDENDUM, the audit's 3.5-cap correction):
11
+ * the PRE-#309 regex (`claude-(3[-.]5|[a-z]+-4)`) was stale in a dangerous direction — it gave
12
+ * the claude-3.5 family's OWN hard output cap (8192; 16384 would 400 every call) to EVERY 4.x
13
+ * model too (claude-sonnet-4-5, claude-opus-4-1, …), silently under-budgeting them. Three
14
+ * buckets now, ordered most-specific-first:
15
+ * 1. claude-3.5 family (`claude-3-5-*` / `claude-3.5-*`) ⇒ 8192 — its OWN hard cap.
16
+ * 2. Bare legacy claude-3 generation (claude-3-opus/-sonnet/-haiku, NOT 3.5) ⇒ 4096 — original,
17
+ * unchanged fallback.
18
+ * 3. Everything else — 3.7, every 4.x/5.x model, and any UNKNOWN future model id — ⇒ 16384.
19
+ * Fail-forward (the stale-classifier lesson, #312 is the durable fix: an unrecognized model
20
+ * id is treated as AT LEAST as capable as today's models, never less; 16384 is
21
+ * non-streaming-safe and current models think by default, so 4096 would starve
22
+ * thinking+output on anything not explicitly bucketed above).
23
+ */
24
+ export declare function resolveMaxTokens(model: string): number;
25
+ /**
26
+ * The Anthropic SDK's own non-streaming coherence threshold. A single non-streaming request asking
27
+ * for more output tokens than this can legitimately outrun a ten-minute budget, and the SDK would
28
+ * rather you stream than have the request die on a timeout it cannot distinguish from a hang.
29
+ */
30
+ export declare const MAX_NONSTREAMING_TOKENS = 21333;
31
+ /**
32
+ * issue #401 — realm re-imposes the SDK's rule, because realm's own `timeout` DISABLES it.
33
+ * The SDK runs that check only when `!stream && timeout == null` (messages.js:29-33): the moment
34
+ * realm passes an explicit per-attempt timeout, the guard silently stops running. Re-imposing it
35
+ * here keeps behaviour identical to the pre-#401 client instead of trading a loud refusal for a
36
+ * confusing abort — so it fires ONLY when a clock was threaded (no clock ⇒ no realm timeout ⇒ the
37
+ * SDK's own guard is still live and will raise this itself).
38
+ *
39
+ * STREAMING FORK: realm's Anthropic path never sets `stream: true` on any request, so in practice
40
+ * this is unconditional. If a streaming path is ever added it must NOT call this — the rule is
41
+ * about non-streaming requests only, and inheriting it would refuse a request that is perfectly
42
+ * legal when streamed.
43
+ *
44
+ * Realm re-imposes the RATIO rule ONLY. The SDK additionally carries per-model
45
+ * MODEL_NONSTREAMING_TOKENS caps; those are deliberately not duplicated — a per-model table
46
+ * copied into a client goes stale on the next model release and starts refusing requests the
47
+ * server would have served.
48
+ */
49
+ export declare function assertMaxTokensCoherent(maxTokens: number, clock: LlmClock | undefined): void;
4
50
  /**
5
51
  * Thrown when the ladder's OWN drop-strict retry ALSO fails — design §4 [R2-7]: (a) carries the
6
52
  * `structuredOutput` meta so a catch site can still disclose the downgrade even though no result
@@ -42,11 +88,14 @@ export declare class AnthropicProvider extends ToolCapableLlmProvider {
42
88
  * THIS invocation — a step that never opted in gets no `structuredOutput` meta at all.
43
89
  */
44
90
  private callStepInternal;
45
- callStep(prompt: string, inputSchema?: Record<string, unknown>, agentProfileInstructions?: string): Promise<Record<string, unknown>>;
91
+ callStep(prompt: string, inputSchema?: Record<string, unknown>, agentProfileInstructions?: string, opts?: {
92
+ llmClock?: LlmClock;
93
+ }): Promise<Record<string, unknown>>;
46
94
  /** issue #236 override — the only provider in this codebase that actually honors
47
95
  * `opts.structuredOutputStrict`; the base class's default just wraps `callStep`. */
48
96
  callStepWithMeta(prompt: string, inputSchema?: Record<string, unknown>, agentProfileInstructions?: string, opts?: {
49
97
  structuredOutputStrict?: boolean;
98
+ llmClock?: LlmClock;
50
99
  }): Promise<{
51
100
  output: Record<string, unknown>;
52
101
  meta?: StructuredOutputMeta;
@@ -64,6 +113,7 @@ export declare class AnthropicProvider extends ToolCapableLlmProvider {
64
113
  maxFanOut?: number;
65
114
  toolTimeoutMs?: number;
66
115
  agentProfileInstructions?: string;
116
+ llmClock?: LlmClock;
67
117
  }): Promise<StepWithToolsResult>;
68
118
  }
69
119
  //# sourceMappingURL=anthropic-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,KAAK,EAEV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAuFlC;;;;;;;GAOG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;gBAE9C,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,oBAAoB,EACtC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMhC;AA8DD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAI1C;;;;;;;;;OASG;IACH,YAAY,IAAI,oBAAoB;YAKtB,SAAS;IAoBvB;;;;;OAKG;YACW,gBAAgB;IA0GxB,QAAQ,CACZ,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;IAUnC;yFACqF;IACtE,gBAAgB,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,wBAAwB,CAAC,EAAE,MAAM,EACjC,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;IAS5E;;;;OAIG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,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;CAmZhC"}
1
+ {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,KAAK,EAEV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAcL,KAAK,QAAQ,EAEd,MAAM,kBAAkB,CAAC;AAiC1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAQ5F;AAoBD;;;;;;;GAOG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;gBAE9C,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,oBAAoB,EACtC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMhC;AA2ED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAI1C;;;;;;;;;OASG;IACH,YAAY,IAAI,oBAAoB;YAKtB,SAAS;IAkCvB;;;;;OAKG;YACW,gBAAgB;IA+GxB,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,wBAAwB,CAAC,EAAE,MAAM,EACjC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAWnC;yFACqF;IACtE,gBAAgB,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,wBAAwB,CAAC,EAAE,MAAM,EACjC,IAAI,CAAC,EAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,GAC/D,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC;IAU5E;;;;OAIG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,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;QAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;KACrB,GACA,OAAO,CAAC,mBAAmB,CAAC;CA6ahC"}