@tangle-network/agent-interface 0.48.0 → 0.49.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.
package/README.md CHANGED
@@ -122,6 +122,7 @@ Providers must omit the capability unless every property is enforced on their re
122
122
  `AgentCandidateBundle` is the portable output of an improvement run: a recursively strict profile, an explicit disabled/no-op/changed code result, a shell-free launch, optional knowledge, isolated memory, ancestry, and spend.
123
123
  Execution either pins a candidate-selected container in the bundle or delegates container selection to the benchmark evaluator.
124
124
  For evaluator-owned task images, the protected runtime creates a separate plan for every candidate/task pair and binds the exact result shape (workspace change or bounded typed output), UTF-8 instruction bytes, selected OCI index, manifest, platform, task workspace, model, launch, counted attempt, retry policy, and tool-step limit before execution.
125
+ Execution limits may also carry `maxTotalTokens`, which bounds the accounted `inputTokens + outputTokens` total for one arm.
125
126
  Instruction delivery is closed to one final argv element, exact stdin bytes followed by EOF, or a fixed file path exposed through `TANGLE_CANDIDATE_TASK_PATH`.
126
127
  That plan also binds the profile target workspace and every mounted path; benchmark adapters must restore or exclude task-targeted profile paths before capturing the submitted solution patch.
127
128
  Resources are embedded, addressed through closed S3/IPFS locators, or pinned to a full GitHub commit plus content digest.
@@ -131,6 +132,9 @@ Candidate-authored process configuration is explicitly public; model authorizati
131
132
  Because prompts and inline files are arbitrary text, producers must also run their normal secret scanner before persistence.
132
133
  Candidate bundles reject unregistered backend extensions instead of accepting an untyped behavior or credential channel.
133
134
 
135
+ Each terminal model settlement carries the raw and accounted input tokens for every router call, plus the router's `usageWithinLimits` result.
136
+ The settlement usage input total equals accounted input tokens, so aggregate limits cannot be recomputed from raw provider input alone.
137
+
134
138
  `agentCandidateBundleSchema.parse()` proves only that the wire shape is valid.
135
139
  Before execution, an integrity verifier must omit only the top-level `digest`, canonicalize the rest with RFC 8785, hash the UTF-8 bytes to lowercase `sha256:<hex>`, verify every artifact, apply any Git patch to the declared base tree, and emit an `AgentCandidateMaterializationReceipt`.
136
140
  Artifact and OCI resolvers must also reject redirects or DNS results that reach loopback, private, or link-local addresses; schema parsing cannot prove network resolution safety.
@@ -194,6 +194,7 @@ export declare const agentCandidateExecutionLimitsSchema: z.ZodObject<{
194
194
  maxModelCalls: z.ZodNumber;
195
195
  maxInputTokens: z.ZodNumber;
196
196
  maxOutputTokens: z.ZodNumber;
197
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
197
198
  maxCostUsd: z.ZodNumber;
198
199
  }, z.core.$strict>;
199
200
  export declare const agentCandidateTaskOutcomeSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -360,6 +361,7 @@ export declare const agentCandidateExecutionPlanMaterialSchema: z.ZodObject<{
360
361
  maxModelCalls: z.ZodNumber;
361
362
  maxInputTokens: z.ZodNumber;
362
363
  maxOutputTokens: z.ZodNumber;
364
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
363
365
  maxCostUsd: z.ZodNumber;
364
366
  }, z.core.$strict>;
365
367
  container: z.ZodObject<{
@@ -763,6 +765,7 @@ export declare const agentCandidateExecutionPlanEvidenceSchema: z.ZodObject<{
763
765
  maxInputTokens: number;
764
766
  maxOutputTokens: number;
765
767
  maxCostUsd: number;
768
+ maxTotalTokens?: number | undefined;
766
769
  };
767
770
  container: {
768
771
  image: string;
@@ -1006,6 +1009,7 @@ export declare const agentCandidateExecutionPlanEvidenceSchema: z.ZodObject<{
1006
1009
  maxInputTokens: number;
1007
1010
  maxOutputTokens: number;
1008
1011
  maxCostUsd: number;
1012
+ maxTotalTokens?: number | undefined;
1009
1013
  };
1010
1014
  container: {
1011
1015
  image: string;
@@ -182,6 +182,7 @@ export const agentCandidateExecutionLimitsSchema = z
182
182
  maxModelCalls: z.number().int().nonnegative(),
183
183
  maxInputTokens: z.number().int().nonnegative(),
184
184
  maxOutputTokens: z.number().int().nonnegative(),
185
+ maxTotalTokens: z.number().int().nonnegative().safe().optional(),
185
186
  maxCostUsd: z.number().finite().nonnegative(),
186
187
  })
187
188
  .strict();
@@ -23,6 +23,7 @@ export declare const agentCandidateModelSettlementCallSchema: z.ZodObject<{
23
23
  startedAtMs: z.ZodNumber;
24
24
  endedAtMs: z.ZodNumber;
25
25
  inputTokens: z.ZodNumber;
26
+ accountedInputTokens: z.ZodNumber;
26
27
  outputTokens: z.ZodNumber;
27
28
  cachedInputTokens: z.ZodNumber;
28
29
  reasoningTokens: z.ZodNumber;
@@ -45,6 +46,7 @@ export declare const agentCandidateModelSettlementMaterialSchema: z.ZodObject<{
45
46
  startedAtMs: z.ZodNumber;
46
47
  endedAtMs: z.ZodNumber;
47
48
  inputTokens: z.ZodNumber;
49
+ accountedInputTokens: z.ZodNumber;
48
50
  outputTokens: z.ZodNumber;
49
51
  cachedInputTokens: z.ZodNumber;
50
52
  reasoningTokens: z.ZodNumber;
@@ -59,6 +61,7 @@ export declare const agentCandidateModelSettlementMaterialSchema: z.ZodObject<{
59
61
  preparationId: z.ZodString;
60
62
  grantDigest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
61
63
  closed: z.ZodLiteral<true>;
64
+ usageWithinLimits: z.ZodBoolean;
62
65
  resolved: z.ZodObject<{
63
66
  requested: z.ZodString;
64
67
  provider: z.ZodString;
@@ -100,6 +103,7 @@ export declare const agentCandidateModelSettlementEvidenceSchema: z.ZodObject<{
100
103
  startedAtMs: number;
101
104
  endedAtMs: number;
102
105
  inputTokens: number;
106
+ accountedInputTokens: number;
103
107
  outputTokens: number;
104
108
  cachedInputTokens: number;
105
109
  reasoningTokens: number;
@@ -111,6 +115,7 @@ export declare const agentCandidateModelSettlementEvidenceSchema: z.ZodObject<{
111
115
  preparationId: string;
112
116
  grantDigest: `sha256:${string}`;
113
117
  closed: true;
118
+ usageWithinLimits: boolean;
114
119
  resolved: {
115
120
  requested: string;
116
121
  provider: string;
@@ -137,6 +142,7 @@ export declare const agentCandidateModelSettlementEvidenceSchema: z.ZodObject<{
137
142
  startedAtMs: number;
138
143
  endedAtMs: number;
139
144
  inputTokens: number;
145
+ accountedInputTokens: number;
140
146
  outputTokens: number;
141
147
  cachedInputTokens: number;
142
148
  reasoningTokens: number;
@@ -148,6 +154,7 @@ export declare const agentCandidateModelSettlementEvidenceSchema: z.ZodObject<{
148
154
  preparationId: string;
149
155
  grantDigest: `sha256:${string}`;
150
156
  closed: true;
157
+ usageWithinLimits: boolean;
151
158
  resolved: {
152
159
  requested: string;
153
160
  provider: string;
@@ -34,6 +34,7 @@ export const agentCandidateModelSettlementCallSchema = z
34
34
  startedAtMs: positiveTimestampSchema,
35
35
  endedAtMs: positiveTimestampSchema,
36
36
  inputTokens: safeCountSchema,
37
+ accountedInputTokens: safeCountSchema,
37
38
  outputTokens: safeCountSchema,
38
39
  cachedInputTokens: safeCountSchema,
39
40
  reasoningTokens: safeCountSchema,
@@ -63,6 +64,7 @@ const modelSettlementMaterialShape = {
63
64
  preparationId: boundedIdentifierSchema,
64
65
  grantDigest: sha256DigestSchema,
65
66
  closed: z.literal(true),
67
+ usageWithinLimits: z.boolean(),
66
68
  resolved: agentCandidateResolvedModelSchema,
67
69
  usage: agentCandidateFixedSpendSchema,
68
70
  };
@@ -118,8 +120,14 @@ function refineModelSettlementMaterial(material, ctx) {
118
120
  message: "settled call model must match the resolved single model",
119
121
  });
120
122
  }
123
+ if (call.accountedInputTokens < call.inputTokens) {
124
+ ctx.addIssue({
125
+ code: "custom",
126
+ path: ["calls", index, "accountedInputTokens"],
127
+ message: "accounted input tokens cannot be less than reported input tokens",
128
+ });
129
+ }
121
130
  for (const field of [
122
- "inputTokens",
123
131
  "outputTokens",
124
132
  "cachedInputTokens",
125
133
  "reasoningTokens",
@@ -137,6 +145,17 @@ function refineModelSettlementMaterial(material, ctx) {
137
145
  totals[field] = sum;
138
146
  }
139
147
  }
148
+ const accountedInputTotal = totals.inputTokens + call.accountedInputTokens;
149
+ if (!Number.isSafeInteger(accountedInputTotal)) {
150
+ ctx.addIssue({
151
+ code: "custom",
152
+ path: ["calls", index, "accountedInputTokens"],
153
+ message: "model settlement accounted input total exceeds safe integer range",
154
+ });
155
+ }
156
+ else {
157
+ totals.inputTokens = accountedInputTotal;
158
+ }
140
159
  }
141
160
  if (material.calls.some((call) => call.costProvenance === "estimated")) {
142
161
  totals.costProvenance = "estimated";
@@ -1841,6 +1841,7 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
1841
1841
  maxModelCalls: z.ZodNumber;
1842
1842
  maxInputTokens: z.ZodNumber;
1843
1843
  maxOutputTokens: z.ZodNumber;
1844
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
1844
1845
  maxCostUsd: z.ZodNumber;
1845
1846
  }, z.core.$strict>;
1846
1847
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -1994,6 +1995,7 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
1994
1995
  maxModelCalls: z.ZodNumber;
1995
1996
  maxInputTokens: z.ZodNumber;
1996
1997
  maxOutputTokens: z.ZodNumber;
1998
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
1997
1999
  maxCostUsd: z.ZodNumber;
1998
2000
  }, z.core.$strict>;
1999
2001
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -2222,6 +2224,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2222
2224
  maxInputTokens: number;
2223
2225
  maxOutputTokens: number;
2224
2226
  maxCostUsd: number;
2227
+ maxTotalTokens?: number | undefined;
2225
2228
  };
2226
2229
  container: {
2227
2230
  image: string;
@@ -2465,6 +2468,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2465
2468
  maxInputTokens: number;
2466
2469
  maxOutputTokens: number;
2467
2470
  maxCostUsd: number;
2471
+ maxTotalTokens?: number | undefined;
2468
2472
  };
2469
2473
  container: {
2470
2474
  image: string;
@@ -2933,6 +2937,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2933
2937
  startedAtMs: number;
2934
2938
  endedAtMs: number;
2935
2939
  inputTokens: number;
2940
+ accountedInputTokens: number;
2936
2941
  outputTokens: number;
2937
2942
  cachedInputTokens: number;
2938
2943
  reasoningTokens: number;
@@ -2944,6 +2949,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2944
2949
  preparationId: string;
2945
2950
  grantDigest: `sha256:${string}`;
2946
2951
  closed: true;
2952
+ usageWithinLimits: boolean;
2947
2953
  resolved: {
2948
2954
  requested: string;
2949
2955
  provider: string;
@@ -2970,6 +2976,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2970
2976
  startedAtMs: number;
2971
2977
  endedAtMs: number;
2972
2978
  inputTokens: number;
2979
+ accountedInputTokens: number;
2973
2980
  outputTokens: number;
2974
2981
  cachedInputTokens: number;
2975
2982
  reasoningTokens: number;
@@ -2981,6 +2988,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2981
2988
  preparationId: string;
2982
2989
  grantDigest: `sha256:${string}`;
2983
2990
  closed: true;
2991
+ usageWithinLimits: boolean;
2984
2992
  resolved: {
2985
2993
  requested: string;
2986
2994
  provider: string;
@@ -5420,6 +5428,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5420
5428
  maxModelCalls: z.ZodNumber;
5421
5429
  maxInputTokens: z.ZodNumber;
5422
5430
  maxOutputTokens: z.ZodNumber;
5431
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
5423
5432
  maxCostUsd: z.ZodNumber;
5424
5433
  }, z.core.$strict>;
5425
5434
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -5573,6 +5582,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5573
5582
  maxModelCalls: z.ZodNumber;
5574
5583
  maxInputTokens: z.ZodNumber;
5575
5584
  maxOutputTokens: z.ZodNumber;
5585
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
5576
5586
  maxCostUsd: z.ZodNumber;
5577
5587
  }, z.core.$strict>;
5578
5588
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -5802,6 +5812,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5802
5812
  maxInputTokens: number;
5803
5813
  maxOutputTokens: number;
5804
5814
  maxCostUsd: number;
5815
+ maxTotalTokens?: number | undefined;
5805
5816
  };
5806
5817
  container: {
5807
5818
  image: string;
@@ -6045,6 +6056,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6045
6056
  maxInputTokens: number;
6046
6057
  maxOutputTokens: number;
6047
6058
  maxCostUsd: number;
6059
+ maxTotalTokens?: number | undefined;
6048
6060
  };
6049
6061
  container: {
6050
6062
  image: string;
@@ -6513,6 +6525,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6513
6525
  startedAtMs: number;
6514
6526
  endedAtMs: number;
6515
6527
  inputTokens: number;
6528
+ accountedInputTokens: number;
6516
6529
  outputTokens: number;
6517
6530
  cachedInputTokens: number;
6518
6531
  reasoningTokens: number;
@@ -6524,6 +6537,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6524
6537
  preparationId: string;
6525
6538
  grantDigest: `sha256:${string}`;
6526
6539
  closed: true;
6540
+ usageWithinLimits: boolean;
6527
6541
  resolved: {
6528
6542
  requested: string;
6529
6543
  provider: string;
@@ -6550,6 +6564,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6550
6564
  startedAtMs: number;
6551
6565
  endedAtMs: number;
6552
6566
  inputTokens: number;
6567
+ accountedInputTokens: number;
6553
6568
  outputTokens: number;
6554
6569
  cachedInputTokens: number;
6555
6570
  reasoningTokens: number;
@@ -6561,6 +6576,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6561
6576
  preparationId: string;
6562
6577
  grantDigest: `sha256:${string}`;
6563
6578
  closed: true;
6579
+ usageWithinLimits: boolean;
6564
6580
  resolved: {
6565
6581
  requested: string;
6566
6582
  provider: string;
@@ -7191,6 +7207,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7191
7207
  maxInputTokens: number;
7192
7208
  maxOutputTokens: number;
7193
7209
  maxCostUsd: number;
7210
+ maxTotalTokens?: number | undefined;
7194
7211
  };
7195
7212
  container: {
7196
7213
  image: string;
@@ -7434,6 +7451,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7434
7451
  maxInputTokens: number;
7435
7452
  maxOutputTokens: number;
7436
7453
  maxCostUsd: number;
7454
+ maxTotalTokens?: number | undefined;
7437
7455
  };
7438
7456
  container: {
7439
7457
  image: string;
@@ -7902,6 +7920,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7902
7920
  startedAtMs: number;
7903
7921
  endedAtMs: number;
7904
7922
  inputTokens: number;
7923
+ accountedInputTokens: number;
7905
7924
  outputTokens: number;
7906
7925
  cachedInputTokens: number;
7907
7926
  reasoningTokens: number;
@@ -7913,6 +7932,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7913
7932
  preparationId: string;
7914
7933
  grantDigest: `sha256:${string}`;
7915
7934
  closed: true;
7935
+ usageWithinLimits: boolean;
7916
7936
  resolved: {
7917
7937
  requested: string;
7918
7938
  provider: string;
@@ -7939,6 +7959,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7939
7959
  startedAtMs: number;
7940
7960
  endedAtMs: number;
7941
7961
  inputTokens: number;
7962
+ accountedInputTokens: number;
7942
7963
  outputTokens: number;
7943
7964
  cachedInputTokens: number;
7944
7965
  reasoningTokens: number;
@@ -7950,6 +7971,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7950
7971
  preparationId: string;
7951
7972
  grantDigest: `sha256:${string}`;
7952
7973
  closed: true;
7974
+ usageWithinLimits: boolean;
7953
7975
  resolved: {
7954
7976
  requested: string;
7955
7977
  provider: string;
@@ -10419,6 +10441,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10419
10441
  maxModelCalls: z.ZodNumber;
10420
10442
  maxInputTokens: z.ZodNumber;
10421
10443
  maxOutputTokens: z.ZodNumber;
10444
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
10422
10445
  maxCostUsd: z.ZodNumber;
10423
10446
  }, z.core.$strict>;
10424
10447
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -10572,6 +10595,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10572
10595
  maxModelCalls: z.ZodNumber;
10573
10596
  maxInputTokens: z.ZodNumber;
10574
10597
  maxOutputTokens: z.ZodNumber;
10598
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
10575
10599
  maxCostUsd: z.ZodNumber;
10576
10600
  }, z.core.$strict>;
10577
10601
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -10801,6 +10825,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10801
10825
  maxInputTokens: number;
10802
10826
  maxOutputTokens: number;
10803
10827
  maxCostUsd: number;
10828
+ maxTotalTokens?: number | undefined;
10804
10829
  };
10805
10830
  container: {
10806
10831
  image: string;
@@ -11044,6 +11069,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11044
11069
  maxInputTokens: number;
11045
11070
  maxOutputTokens: number;
11046
11071
  maxCostUsd: number;
11072
+ maxTotalTokens?: number | undefined;
11047
11073
  };
11048
11074
  container: {
11049
11075
  image: string;
@@ -11512,6 +11538,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11512
11538
  startedAtMs: number;
11513
11539
  endedAtMs: number;
11514
11540
  inputTokens: number;
11541
+ accountedInputTokens: number;
11515
11542
  outputTokens: number;
11516
11543
  cachedInputTokens: number;
11517
11544
  reasoningTokens: number;
@@ -11523,6 +11550,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11523
11550
  preparationId: string;
11524
11551
  grantDigest: `sha256:${string}`;
11525
11552
  closed: true;
11553
+ usageWithinLimits: boolean;
11526
11554
  resolved: {
11527
11555
  requested: string;
11528
11556
  provider: string;
@@ -11549,6 +11577,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11549
11577
  startedAtMs: number;
11550
11578
  endedAtMs: number;
11551
11579
  inputTokens: number;
11580
+ accountedInputTokens: number;
11552
11581
  outputTokens: number;
11553
11582
  cachedInputTokens: number;
11554
11583
  reasoningTokens: number;
@@ -11560,6 +11589,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11560
11589
  preparationId: string;
11561
11590
  grantDigest: `sha256:${string}`;
11562
11591
  closed: true;
11592
+ usageWithinLimits: boolean;
11563
11593
  resolved: {
11564
11594
  requested: string;
11565
11595
  provider: string;
@@ -12190,6 +12220,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12190
12220
  maxInputTokens: number;
12191
12221
  maxOutputTokens: number;
12192
12222
  maxCostUsd: number;
12223
+ maxTotalTokens?: number | undefined;
12193
12224
  };
12194
12225
  container: {
12195
12226
  image: string;
@@ -12433,6 +12464,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12433
12464
  maxInputTokens: number;
12434
12465
  maxOutputTokens: number;
12435
12466
  maxCostUsd: number;
12467
+ maxTotalTokens?: number | undefined;
12436
12468
  };
12437
12469
  container: {
12438
12470
  image: string;
@@ -12901,6 +12933,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12901
12933
  startedAtMs: number;
12902
12934
  endedAtMs: number;
12903
12935
  inputTokens: number;
12936
+ accountedInputTokens: number;
12904
12937
  outputTokens: number;
12905
12938
  cachedInputTokens: number;
12906
12939
  reasoningTokens: number;
@@ -12912,6 +12945,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12912
12945
  preparationId: string;
12913
12946
  grantDigest: `sha256:${string}`;
12914
12947
  closed: true;
12948
+ usageWithinLimits: boolean;
12915
12949
  resolved: {
12916
12950
  requested: string;
12917
12951
  provider: string;
@@ -12938,6 +12972,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12938
12972
  startedAtMs: number;
12939
12973
  endedAtMs: number;
12940
12974
  inputTokens: number;
12975
+ accountedInputTokens: number;
12941
12976
  outputTokens: number;
12942
12977
  cachedInputTokens: number;
12943
12978
  reasoningTokens: number;
@@ -12949,6 +12984,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12949
12984
  preparationId: string;
12950
12985
  grantDigest: `sha256:${string}`;
12951
12986
  closed: true;
12987
+ usageWithinLimits: boolean;
12952
12988
  resolved: {
12953
12989
  requested: string;
12954
12990
  provider: string;
@@ -13662,6 +13698,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13662
13698
  maxModelCalls: z.ZodNumber;
13663
13699
  maxInputTokens: z.ZodNumber;
13664
13700
  maxOutputTokens: z.ZodNumber;
13701
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13665
13702
  maxCostUsd: z.ZodNumber;
13666
13703
  }, z.core.$strict>;
13667
13704
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -13713,6 +13750,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13713
13750
  maxModelCalls: z.ZodNumber;
13714
13751
  maxInputTokens: z.ZodNumber;
13715
13752
  maxOutputTokens: z.ZodNumber;
13753
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13716
13754
  maxCostUsd: z.ZodNumber;
13717
13755
  }, z.core.$strict>;
13718
13756
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -13797,6 +13835,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13797
13835
  maxModelCalls: z.ZodNumber;
13798
13836
  maxInputTokens: z.ZodNumber;
13799
13837
  maxOutputTokens: z.ZodNumber;
13838
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13800
13839
  maxCostUsd: z.ZodNumber;
13801
13840
  }, z.core.$strict>;
13802
13841
  usage: z.ZodObject<{
@@ -13949,6 +13988,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13949
13988
  maxModelCalls: z.ZodNumber;
13950
13989
  maxInputTokens: z.ZodNumber;
13951
13990
  maxOutputTokens: z.ZodNumber;
13991
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13952
13992
  maxCostUsd: z.ZodNumber;
13953
13993
  }, z.core.$strict>;
13954
13994
  usage: z.ZodObject<{
@@ -349,6 +349,7 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
349
349
  maxInputTokens: number;
350
350
  maxOutputTokens: number;
351
351
  maxCostUsd: number;
352
+ maxTotalTokens?: number | undefined;
352
353
  };
353
354
  container: {
354
355
  image: string;
@@ -592,6 +593,7 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
592
593
  maxInputTokens: number;
593
594
  maxOutputTokens: number;
594
595
  maxCostUsd: number;
596
+ maxTotalTokens?: number | undefined;
595
597
  };
596
598
  container: {
597
599
  image: string;
@@ -1060,6 +1062,7 @@ export declare const agentCandidateRunReceiptSchema: z.ZodObject<{
1060
1062
  startedAtMs: number;
1061
1063
  endedAtMs: number;
1062
1064
  inputTokens: number;
1065
+ accountedInputTokens: number;
1063
1066
  outputTokens: number;
1064
1067
  cachedInputTokens: number;
1065
1068
  reasoningTokens: number;
@@ -1071,6 +1074,7 @@ export declare const agentCandidateRunReceiptSchema: z.ZodObject<{
1071
1074
  preparationId: string;
1072
1075
  grantDigest: `sha256:${string}`;
1073
1076
  closed: true;
1077
+ usageWithinLimits: boolean;
1074
1078
  resolved: {
1075
1079
  requested: string;
1076
1080
  provider: string;
@@ -1097,6 +1101,7 @@ export declare const agentCandidateRunReceiptSchema: z.ZodObject<{
1097
1101
  startedAtMs: number;
1098
1102
  endedAtMs: number;
1099
1103
  inputTokens: number;
1104
+ accountedInputTokens: number;
1100
1105
  outputTokens: number;
1101
1106
  cachedInputTokens: number;
1102
1107
  reasoningTokens: number;
@@ -1108,6 +1113,7 @@ export declare const agentCandidateRunReceiptSchema: z.ZodObject<{
1108
1113
  preparationId: string;
1109
1114
  grantDigest: `sha256:${string}`;
1110
1115
  closed: true;
1116
+ usageWithinLimits: boolean;
1111
1117
  resolved: {
1112
1118
  requested: string;
1113
1119
  provider: string;
@@ -150,6 +150,7 @@ export declare const agentCandidateBenchmarkTaskMaterialSchema: z.ZodObject<{
150
150
  maxModelCalls: z.ZodNumber;
151
151
  maxInputTokens: z.ZodNumber;
152
152
  maxOutputTokens: z.ZodNumber;
153
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
153
154
  maxCostUsd: z.ZodNumber;
154
155
  }, z.core.$strict>;
155
156
  }, z.core.$strict>;
@@ -304,6 +305,7 @@ export declare const agentCandidateBenchmarkTaskSchema: z.ZodObject<{
304
305
  maxModelCalls: z.ZodNumber;
305
306
  maxInputTokens: z.ZodNumber;
306
307
  maxOutputTokens: z.ZodNumber;
308
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
307
309
  maxCostUsd: z.ZodNumber;
308
310
  }, z.core.$strict>;
309
311
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -482,6 +484,7 @@ export declare const agentCandidateBenchmarkSuiteInputsSchema: z.ZodObject<{
482
484
  maxModelCalls: z.ZodNumber;
483
485
  maxInputTokens: z.ZodNumber;
484
486
  maxOutputTokens: z.ZodNumber;
487
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
485
488
  maxCostUsd: z.ZodNumber;
486
489
  }, z.core.$strict>;
487
490
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -635,6 +638,7 @@ export declare const agentCandidateBenchmarkSuiteInputsSchema: z.ZodObject<{
635
638
  maxModelCalls: z.ZodNumber;
636
639
  maxInputTokens: z.ZodNumber;
637
640
  maxOutputTokens: z.ZodNumber;
641
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
638
642
  maxCostUsd: z.ZodNumber;
639
643
  }, z.core.$strict>;
640
644
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -402,6 +402,8 @@ export interface AgentCandidateExecutionLimits {
402
402
  maxModelCalls: number;
403
403
  maxInputTokens: number;
404
404
  maxOutputTokens: number;
405
+ /** Optional aggregate cap over accounted input and output tokens. */
406
+ maxTotalTokens?: number;
405
407
  /** Total agent plus grading spend for one complete arm. */
406
408
  maxCostUsd: number;
407
409
  }
@@ -924,6 +926,8 @@ export interface AgentCandidateModelSettlementCall {
924
926
  startedAtMs: number;
925
927
  endedAtMs: number;
926
928
  inputTokens: number;
929
+ /** Input plus cache units charged against the frozen input cap. */
930
+ accountedInputTokens: number;
927
931
  outputTokens: number;
928
932
  cachedInputTokens: number;
929
933
  reasoningTokens: number;
@@ -937,8 +941,11 @@ export interface AgentCandidateModelSettlementMaterial {
937
941
  preparationId: string;
938
942
  grantDigest: Sha256Digest;
939
943
  closed: true;
944
+ /** Router's terminal check over the frozen model limits. */
945
+ usageWithinLimits: boolean;
940
946
  resolved: AgentCandidateResolvedModel;
941
947
  calls: AgentCandidateModelSettlementCall[];
948
+ /** `inputTokens` is the sum of each call's accounted input tokens. */
942
949
  usage: AgentCandidateFixedSpend;
943
950
  }
944
951
  export interface AgentCandidateModelSettlementEvidence {
@@ -66,6 +66,16 @@ function executionLimitViolations(limits, observation) {
66
66
  actual: observation.usage.outputTokens,
67
67
  maximum: limits.maxOutputTokens,
68
68
  },
69
+ ...(limits.maxTotalTokens === undefined
70
+ ? []
71
+ : [
72
+ {
73
+ path: ["usage", "totalTokens"],
74
+ label: "totalTokens",
75
+ actual: observation.usage.inputTokens + observation.usage.outputTokens,
76
+ maximum: limits.maxTotalTokens,
77
+ },
78
+ ]),
69
79
  {
70
80
  path: ["usage", "costUsdNanos"],
71
81
  label: "costUsd",