agentfootprint 10.2.0 → 10.3.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 (160) hide show
  1. package/CAPABILITIES.md +1 -0
  2. package/dist/adapters/llm/AnthropicProvider.js +11 -2
  3. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  4. package/dist/adapters/llm/BrowserAnthropicProvider.js +11 -2
  5. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  6. package/dist/adapters/llm/MockProvider.js +11 -1
  7. package/dist/adapters/llm/MockProvider.js.map +1 -1
  8. package/dist/adapters/llm/anthropicMessagesWire.js +19 -0
  9. package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
  10. package/dist/adapters/llm/anthropicModels.js +48 -14
  11. package/dist/adapters/llm/anthropicModels.js.map +1 -1
  12. package/dist/adapters/llm/wireManifest.js +8 -2
  13. package/dist/adapters/llm/wireManifest.js.map +1 -1
  14. package/dist/adapters/nativeOutputSchema.js +80 -0
  15. package/dist/adapters/nativeOutputSchema.js.map +1 -0
  16. package/dist/adapters/requestRefusal.js +2 -0
  17. package/dist/adapters/requestRefusal.js.map +1 -1
  18. package/dist/adapters/types.js.map +1 -1
  19. package/dist/core/Agent.js +74 -22
  20. package/dist/core/Agent.js.map +1 -1
  21. package/dist/core/agent/AgentBuilder.js +23 -0
  22. package/dist/core/agent/AgentBuilder.js.map +1 -1
  23. package/dist/core/agent/buildDynamicAgentChart.js +5 -0
  24. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  25. package/dist/core/agent/findings/reserved.js +50 -1
  26. package/dist/core/agent/findings/reserved.js.map +1 -1
  27. package/dist/core/agent/nativeOutputFormat.js +389 -0
  28. package/dist/core/agent/nativeOutputFormat.js.map +1 -0
  29. package/dist/core/agent/outputEnforcement.js +35 -1
  30. package/dist/core/agent/outputEnforcement.js.map +1 -1
  31. package/dist/core/agent/stages/answerValidation.js +14 -4
  32. package/dist/core/agent/stages/answerValidation.js.map +1 -1
  33. package/dist/core/agent/stages/callLLM.js +24 -0
  34. package/dist/core/agent/stages/callLLM.js.map +1 -1
  35. package/dist/core/agent/stages/outputRetry.js +1 -0
  36. package/dist/core/agent/stages/outputRetry.js.map +1 -1
  37. package/dist/core/agent/stages/route.js +33 -10
  38. package/dist/core/agent/stages/route.js.map +1 -1
  39. package/dist/core/outputSchema.js.map +1 -1
  40. package/dist/esm/adapters/llm/AnthropicProvider.d.ts +3 -0
  41. package/dist/esm/adapters/llm/AnthropicProvider.js +12 -3
  42. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  43. package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +3 -0
  44. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +12 -3
  45. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  46. package/dist/esm/adapters/llm/MockProvider.d.ts +7 -0
  47. package/dist/esm/adapters/llm/MockProvider.js +11 -1
  48. package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
  49. package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +13 -0
  50. package/dist/esm/adapters/llm/anthropicMessagesWire.js +19 -0
  51. package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
  52. package/dist/esm/adapters/llm/anthropicModels.d.ts +36 -3
  53. package/dist/esm/adapters/llm/anthropicModels.js +46 -13
  54. package/dist/esm/adapters/llm/anthropicModels.js.map +1 -1
  55. package/dist/esm/adapters/llm/wireManifest.d.ts +9 -1
  56. package/dist/esm/adapters/llm/wireManifest.js +8 -2
  57. package/dist/esm/adapters/llm/wireManifest.js.map +1 -1
  58. package/dist/esm/adapters/nativeOutputSchema.d.ts +66 -0
  59. package/dist/esm/adapters/nativeOutputSchema.js +75 -0
  60. package/dist/esm/adapters/nativeOutputSchema.js.map +1 -0
  61. package/dist/esm/adapters/requestRefusal.js +2 -0
  62. package/dist/esm/adapters/requestRefusal.js.map +1 -1
  63. package/dist/esm/adapters/types.d.ts +40 -0
  64. package/dist/esm/adapters/types.js.map +1 -1
  65. package/dist/esm/core/Agent.d.ts +16 -0
  66. package/dist/esm/core/Agent.js +74 -22
  67. package/dist/esm/core/Agent.js.map +1 -1
  68. package/dist/esm/core/agent/AgentBuilder.js +23 -0
  69. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  70. package/dist/esm/core/agent/buildDynamicAgentChart.js +5 -0
  71. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  72. package/dist/esm/core/agent/findings/reserved.d.ts +16 -0
  73. package/dist/esm/core/agent/findings/reserved.js +48 -0
  74. package/dist/esm/core/agent/findings/reserved.js.map +1 -1
  75. package/dist/esm/core/agent/nativeOutputFormat.d.ts +85 -0
  76. package/dist/esm/core/agent/nativeOutputFormat.js +384 -0
  77. package/dist/esm/core/agent/nativeOutputFormat.js.map +1 -0
  78. package/dist/esm/core/agent/outputEnforcement.d.ts +33 -1
  79. package/dist/esm/core/agent/outputEnforcement.js +33 -0
  80. package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
  81. package/dist/esm/core/agent/stages/answerValidation.d.ts +1 -1
  82. package/dist/esm/core/agent/stages/answerValidation.js +14 -4
  83. package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
  84. package/dist/esm/core/agent/stages/callLLM.d.ts +9 -1
  85. package/dist/esm/core/agent/stages/callLLM.js +24 -0
  86. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  87. package/dist/esm/core/agent/stages/outputRetry.js +1 -0
  88. package/dist/esm/core/agent/stages/outputRetry.js.map +1 -1
  89. package/dist/esm/core/agent/stages/route.js +34 -11
  90. package/dist/esm/core/agent/stages/route.js.map +1 -1
  91. package/dist/esm/core/agent/types.d.ts +19 -3
  92. package/dist/esm/core/outputSchema.d.ts +30 -3
  93. package/dist/esm/core/outputSchema.js.map +1 -1
  94. package/dist/esm/lib/time-travel/receipt.d.ts +11 -0
  95. package/dist/esm/lib/time-travel/receipt.js +8 -2
  96. package/dist/esm/lib/time-travel/receipt.js.map +1 -1
  97. package/dist/esm/providers.d.ts +1 -0
  98. package/dist/esm/providers.js +1 -0
  99. package/dist/esm/providers.js.map +1 -1
  100. package/dist/esm/resilience/withCircuitBreaker.js +7 -0
  101. package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
  102. package/dist/esm/resilience/withFallback.js +10 -0
  103. package/dist/esm/resilience/withFallback.js.map +1 -1
  104. package/dist/esm/resilience/withRetry.js +8 -0
  105. package/dist/esm/resilience/withRetry.js.map +1 -1
  106. package/dist/lib/time-travel/receipt.js +8 -2
  107. package/dist/lib/time-travel/receipt.js.map +1 -1
  108. package/dist/providers.js +4 -1
  109. package/dist/providers.js.map +1 -1
  110. package/dist/resilience/withCircuitBreaker.js +7 -0
  111. package/dist/resilience/withCircuitBreaker.js.map +1 -1
  112. package/dist/resilience/withFallback.js +10 -0
  113. package/dist/resilience/withFallback.js.map +1 -1
  114. package/dist/resilience/withRetry.js +8 -0
  115. package/dist/resilience/withRetry.js.map +1 -1
  116. package/dist/types/adapters/llm/AnthropicProvider.d.ts +3 -0
  117. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  118. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +3 -0
  119. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  120. package/dist/types/adapters/llm/MockProvider.d.ts +7 -0
  121. package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
  122. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +13 -0
  123. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
  124. package/dist/types/adapters/llm/anthropicModels.d.ts +36 -3
  125. package/dist/types/adapters/llm/anthropicModels.d.ts.map +1 -1
  126. package/dist/types/adapters/llm/wireManifest.d.ts +9 -1
  127. package/dist/types/adapters/llm/wireManifest.d.ts.map +1 -1
  128. package/dist/types/adapters/nativeOutputSchema.d.ts +67 -0
  129. package/dist/types/adapters/nativeOutputSchema.d.ts.map +1 -0
  130. package/dist/types/adapters/requestRefusal.d.ts.map +1 -1
  131. package/dist/types/adapters/types.d.ts +40 -0
  132. package/dist/types/adapters/types.d.ts.map +1 -1
  133. package/dist/types/core/Agent.d.ts +16 -0
  134. package/dist/types/core/Agent.d.ts.map +1 -1
  135. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  136. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  137. package/dist/types/core/agent/findings/reserved.d.ts +16 -0
  138. package/dist/types/core/agent/findings/reserved.d.ts.map +1 -1
  139. package/dist/types/core/agent/nativeOutputFormat.d.ts +86 -0
  140. package/dist/types/core/agent/nativeOutputFormat.d.ts.map +1 -0
  141. package/dist/types/core/agent/outputEnforcement.d.ts +33 -1
  142. package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
  143. package/dist/types/core/agent/stages/answerValidation.d.ts +1 -1
  144. package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
  145. package/dist/types/core/agent/stages/callLLM.d.ts +9 -1
  146. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  147. package/dist/types/core/agent/stages/outputRetry.d.ts.map +1 -1
  148. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  149. package/dist/types/core/agent/types.d.ts +19 -3
  150. package/dist/types/core/agent/types.d.ts.map +1 -1
  151. package/dist/types/core/outputSchema.d.ts +30 -3
  152. package/dist/types/core/outputSchema.d.ts.map +1 -1
  153. package/dist/types/lib/time-travel/receipt.d.ts +11 -0
  154. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  155. package/dist/types/providers.d.ts +1 -0
  156. package/dist/types/providers.d.ts.map +1 -1
  157. package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
  158. package/dist/types/resilience/withFallback.d.ts.map +1 -1
  159. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  160. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAkOH;;;;GAIG;AACU,QAAA,2BAA2B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC5E,MAAM;IACN,WAAW;CACZ,CAAC,CAAC;AAqpBH;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,OAAsC,EACtC,UAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACxD,CAAC;AAPD,wCAOC;AAqID;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAgGpD;uDACuD;AACvD,SAAgB,kBAAkB,CAChC,OAAoB;IAEpB,OAAO,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC;AACnD,CAAC;AAJD,gDAIC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAkOH;;;;GAIG;AACU,QAAA,2BAA2B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC5E,MAAM;IACN,WAAW;CACZ,CAAC,CAAC;AA6rBH;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,OAAsC,EACtC,UAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACxD,CAAC;AAPD,wCAOC;AAqID;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAgGpD;uDACuD;AACvD,SAAgB,kBAAkB,CAChC,OAAoB;IAEpB,OAAO,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC;AACnD,CAAC;AAJD,gDAIC"}
@@ -46,6 +46,7 @@ const PolicyHaltError_js_1 = require("../security/PolicyHaltError.js");
46
46
  const CacheGateDecider_js_1 = require("../cache/CacheGateDecider.js");
47
47
  const cacheStrategyFor_js_1 = require("../cache/cacheStrategyFor.js");
48
48
  const forcedToolChoice_js_1 = require("../adapters/forcedToolChoice.js");
49
+ const nativeOutputSchema_js_1 = require("../adapters/nativeOutputSchema.js");
49
50
  const requestRefusal_js_1 = require("../adapters/requestRefusal.js");
50
51
  const assistantReplay_js_1 = require("./agent/assistantReplay.js");
51
52
  const skillBrains_js_1 = require("./agent/skillBrains.js");
@@ -1449,29 +1450,38 @@ class Agent extends RunnerBase_js_1.RunnerBase {
1449
1450
  return (0, outputSchema_js_1.applyOutputSchema)(raw, parser);
1450
1451
  }
1451
1452
  catch (err) {
1452
- if (!this.outputFallbackCfg || !(err instanceof outputSchema_js_1.OutputSchemaError))
1453
- throw err;
1454
- // Engage the 3-tier fallback. The dispatcher gives us the
1455
- // typed-event entry; we synthesize a minimal event shape since
1456
- // these events have no per-stage anchor.
1457
- // Typed via `OutputFallbackEmit`, so the registry — not a grep — is what
1458
- // decides these two names are real. The cast is now only the envelope
1459
- // assembly (type + payload are already checked against the event map).
1460
- const emit = (eventType, payload) => {
1461
- try {
1462
- this.dispatcher.dispatch({
1463
- type: eventType,
1464
- timestamp: Date.now(),
1465
- payload,
1466
- });
1467
- }
1468
- catch {
1469
- /* observability errors must not poison the fallback path */
1470
- }
1471
- };
1472
- return (0, outputFallback_js_1.applyOutputFallback)(raw, parser, this.outputFallbackCfg, emit, err, this.lastRunRetriesSpent());
1453
+ return this.settleTypedFailure(raw, err);
1473
1454
  }
1474
1455
  }
1456
+ /**
1457
+ * A typed answer that failed: rethrow, or — with `.outputFallback()` and an
1458
+ * `OutputSchemaError` — hand it to the 3-tier fallback. The one settle for
1459
+ * `parseOutputAsync`'s parse failure and `runTyped`'s native stop failure.
1460
+ */
1461
+ async settleTypedFailure(raw, err) {
1462
+ const parser = this.outputSchemaParser;
1463
+ if (!this.outputFallbackCfg || !(err instanceof outputSchema_js_1.OutputSchemaError))
1464
+ throw err;
1465
+ // Engage the 3-tier fallback. The dispatcher gives us the
1466
+ // typed-event entry; we synthesize a minimal event shape since
1467
+ // these events have no per-stage anchor.
1468
+ // Typed via `OutputFallbackEmit`, so the registry — not a grep — is what
1469
+ // decides these two names are real. The cast is now only the envelope
1470
+ // assembly (type + payload are already checked against the event map).
1471
+ const emit = (eventType, payload) => {
1472
+ try {
1473
+ this.dispatcher.dispatch({
1474
+ type: eventType,
1475
+ timestamp: Date.now(),
1476
+ payload,
1477
+ });
1478
+ }
1479
+ catch {
1480
+ /* observability errors must not poison the fallback path */
1481
+ }
1482
+ };
1483
+ return (0, outputFallback_js_1.applyOutputFallback)(raw, parser, this.outputFallbackCfg, emit, err, this.lastRunRetriesSpent());
1484
+ }
1475
1485
  /**
1476
1486
  * Corrective re-asks the agent's LAST run paid for, read off its own ledger.
1477
1487
  *
@@ -1510,6 +1520,15 @@ class Agent extends RunnerBase_js_1.RunnerBase {
1510
1520
  throw new Error('Agent.runTyped: run paused — typed mode does not support pauses. ' +
1511
1521
  'Use agent.run() + agent.parseOutput(...) after resume.');
1512
1522
  }
1523
+ // `strategy: 'native'`: an answer whose last attempt failed on a refusal
1524
+ // or truncation stop is refused here even when its text parses — the
1525
+ // format did not hold for it (outputEnforcement.ts · nativeStopFailure).
1526
+ // FIRST, before any delivery path. It takes the same path a parse failure
1527
+ // takes, `.outputFallback()` included.
1528
+ const stopped = this.outputEnforcement?.outputFormat !== undefined ? this.outputContractUnmet() : undefined;
1529
+ if (stopped?.stopReason !== undefined) {
1530
+ return this.settleTypedFailure(out, new outputSchema_js_1.OutputSchemaError(stopped.error, { rawOutput: out, stage: stopped.stage }));
1531
+ }
1513
1532
  if (this.answerValidationConfig !== undefined) {
1514
1533
  // The validator judged the schema's JSON output. Do not run a transforming
1515
1534
  // or stateful parser again and hand back a value the validator never saw.
@@ -3017,9 +3036,38 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3017
3036
  `{ strategy: 'instruct', retries: N } on this provider — it works on every wire — or ` +
3018
3037
  `run the forced strategy on a provider that declares the capability.`);
3019
3038
  }
3039
+ /**
3040
+ * Refuse, at run start, a `'native'` output strategy on a provider that
3041
+ * does not put a structured-output format on its wire, or on a model that
3042
+ * does not take one — the `assertForcedToolChoiceSupported` twin, for the
3043
+ * same reasons: run start because a decorated provider is only what it is
3044
+ * once composed; a refusal because `'instruct'` asks in prose for what this
3045
+ * strategy constrains at decoding, and a quiet swap would be config that
3046
+ * lies.
3047
+ */
3048
+ assertNativeOutputSchemaSupported() {
3049
+ if (this.outputEnforcement?.outputFormat === undefined)
3050
+ return;
3051
+ const first = this.reliabilityConfig?.providers?.[0];
3052
+ const provider = first?.provider ?? this.provider;
3053
+ const model = first?.model ?? this.model;
3054
+ if (provider.carriesNativeOutputSchema === true) {
3055
+ // A configured agent resolves its model at seed; callLLM judges it there.
3056
+ if ((first === undefined && this.runConfigFn !== undefined) ||
3057
+ (0, nativeOutputSchema_js_1.nativeOutputSchemaFor)(provider, model))
3058
+ return;
3059
+ throw new nativeOutputSchema_js_1.UnsupportedNativeOutputError({ provider: provider.name, model });
3060
+ }
3061
+ throw new Error(`Agent: .outputSchema(parser, { strategy: 'native' }) needs a provider that puts a ` +
3062
+ `structured-output format on its wire, and '${provider.name}' does not declare one. ` +
3063
+ `anthropic(), browserAnthropic() and the mock do; the Bedrock and gateway adapters do ` +
3064
+ `not in this release. Use { strategy: 'instruct', retries: N } on this provider — it ` +
3065
+ `works on every wire — or run the native strategy on a provider that declares it.`);
3066
+ }
3020
3067
  createExecutor(runOptions) {
3021
3068
  this.assertDeliverableRoles();
3022
3069
  this.assertForcedToolChoiceSupported();
3070
+ this.assertNativeOutputSchemaSupported();
3023
3071
  const correlationId = runOptions?.correlationId;
3024
3072
  const traceId = runOptions?.traceId ?? runOptions?.env?.traceId;
3025
3073
  const sessionId = runOptions?.sessionId;
@@ -4646,6 +4694,10 @@ class Agent extends RunnerBase_js_1.RunnerBase {
4646
4694
  ...(this.outputEnforcement?.schemaTool !== undefined && {
4647
4695
  schemaTool: this.outputEnforcement.schemaTool,
4648
4696
  }),
4697
+ // The structured-output format, under `strategy: 'native'` only.
4698
+ ...(this.outputEnforcement?.outputFormat !== undefined && {
4699
+ outputFormat: this.outputEnforcement.outputFormat,
4700
+ }),
4649
4701
  ...(this.thinkingBudget !== undefined && { thinkingBudget: this.thinkingBudget }),
4650
4702
  // Only a configured agent reads `scope.resolvedModel` — see the dep's
4651
4703
  // JSDoc for why this is a build-time flag and not a runtime fallback.
@@ -4777,7 +4829,7 @@ class Agent extends RunnerBase_js_1.RunnerBase {
4777
4829
  answerArmed ? true : undefined);
4778
4830
  const routeDecider = this.answerValidationConfig === undefined
4779
4831
  ? baseRouteDecider
4780
- : (0, answerValidation_js_1.withAnswerValidation)(baseRouteDecider, this.answerValidationConfig, this.outputSchemaParser, artifactStore, () => this.consentOutstanding.size > 0);
4832
+ : (0, answerValidation_js_1.withAnswerValidation)(baseRouteDecider, this.answerValidationConfig, this.outputSchemaParser, artifactStore, () => this.consentOutstanding.size > 0, this.outputEnforcement?.outputFormat !== undefined);
4781
4833
  // `.limitsTravelWithTheAnswer()` on a TYPED answer — decided once, here.
4782
4834
  // An output schema makes the answer JSON, and the appended block would
4783
4835
  // make it JSON followed by prose, which `runTyped()` cannot parse. So the