@tangle-network/agent-interface 0.47.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.
Files changed (33) hide show
  1. package/README.md +4 -0
  2. package/dist/agent-candidate-execution-plan-schema.d.ts +4 -0
  3. package/dist/agent-candidate-execution-plan-schema.js +1 -0
  4. package/dist/agent-candidate-outcome-schema.d.ts +7 -0
  5. package/dist/agent-candidate-outcome-schema.js +20 -1
  6. package/dist/agent-candidate-profile-schema.d.ts +3 -0
  7. package/dist/agent-candidate-profile-schema.js +4 -3
  8. package/dist/agent-candidate-promotion-schema.d.ts +58 -0
  9. package/dist/agent-candidate-receipt-schema.d.ts +6 -0
  10. package/dist/agent-candidate-schema-common.js +10 -1
  11. package/dist/agent-candidate-schema.d.ts +3 -0
  12. package/dist/agent-candidate-task-schema.d.ts +4 -0
  13. package/dist/agent-candidate.d.ts +7 -0
  14. package/dist/agent-execution-limits.js +10 -0
  15. package/dist/agent-profile-improvement-schema.d.ts +10 -0
  16. package/dist/agent-profile.d.ts +18 -0
  17. package/dist/environment-observation.d.ts +1076 -0
  18. package/dist/environment-observation.js +306 -0
  19. package/dist/environment-provider.d.ts +2 -0
  20. package/dist/environment-provider.js +2 -0
  21. package/dist/environment-runtime.d.ts +50 -0
  22. package/dist/environment-runtime.js +31 -0
  23. package/dist/environment-terminal.d.ts +172 -0
  24. package/dist/environment-terminal.js +162 -0
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/interaction-data.js +21 -2
  28. package/dist/interaction-fields.d.ts +7 -0
  29. package/dist/interaction-fields.js +12 -2
  30. package/dist/interaction-response-validation.js +2 -2
  31. package/dist/profile-schema.d.ts +34 -0
  32. package/dist/profile-schema.js +33 -1
  33. package/package.json +36 -1
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";
@@ -35,6 +35,9 @@ export declare const agentCandidateProfileSchema: z.ZodObject<{
35
35
  xhigh: "xhigh";
36
36
  ultracode: "ultracode";
37
37
  }>>;
38
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
39
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
40
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
38
41
  default: z.ZodOptional<z.ZodString>;
39
42
  small: z.ZodOptional<z.ZodString>;
40
43
  provider: z.ZodOptional<z.ZodString>;
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import { agentCandidateResourcesSchema } from "./agent-candidate-artifact-schema.js";
3
3
  import { agentCandidateConfigValueSchema, environmentConfigSchema, isCanonicalJsonValue, isSafeExecutable, isSafeRelativePath, isWellFormedUnicode, } from "./agent-candidate-schema-common.js";
4
4
  import { harnessTypeSchema } from "./harness.js";
5
- import { agentProfileConfidentialSchema, agentProfileModeSchema, agentProfileModelHintsSchema, agentProfilePermissionSchema, agentProfilePromptSchema, agentSubagentProfileSchema, } from "./profile-schema.js";
5
+ import { agentProfileConfidentialSchema, agentProfileModeSchema, agentProfileModelHintsBaseSchema, agentProfilePermissionSchema, agentProfilePromptSchema, agentSubagentProfileSchema, enforceModelTokenBounds, } from "./profile-schema.js";
6
6
  const executableSchema = z
7
7
  .string()
8
8
  .refine(isSafeExecutable, "executable must be a canonical non-shell command");
@@ -39,14 +39,15 @@ export const agentCandidateHookCommandSchema = z
39
39
  env: environmentConfigSchema.optional(),
40
40
  })
41
41
  .strict();
42
- const candidateModelHintsSchema = agentProfileModelHintsSchema
42
+ const candidateModelHintsSchema = agentProfileModelHintsBaseSchema
43
43
  .omit({ metadata: true })
44
44
  .extend({
45
45
  default: z.string().min(1).optional(),
46
46
  small: z.string().min(1).optional(),
47
47
  provider: z.string().min(1).optional(),
48
48
  })
49
- .strict();
49
+ .strict()
50
+ .superRefine(enforceModelTokenBounds);
50
51
  const candidateSubagentSchema = agentSubagentProfileSchema
51
52
  .omit({ metadata: true })
52
53
  .extend({
@@ -26,6 +26,9 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
26
26
  xhigh: "xhigh";
27
27
  ultracode: "ultracode";
28
28
  }>>;
29
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
30
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
31
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
29
32
  default: z.ZodOptional<z.ZodString>;
30
33
  small: z.ZodOptional<z.ZodString>;
31
34
  provider: z.ZodOptional<z.ZodString>;
@@ -856,6 +859,9 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
856
859
  xhigh: "xhigh";
857
860
  ultracode: "ultracode";
858
861
  }>>;
862
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
863
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
864
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
859
865
  default: z.ZodOptional<z.ZodString>;
860
866
  small: z.ZodOptional<z.ZodString>;
861
867
  provider: z.ZodOptional<z.ZodString>;
@@ -1835,6 +1841,7 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
1835
1841
  maxModelCalls: z.ZodNumber;
1836
1842
  maxInputTokens: z.ZodNumber;
1837
1843
  maxOutputTokens: z.ZodNumber;
1844
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
1838
1845
  maxCostUsd: z.ZodNumber;
1839
1846
  }, z.core.$strict>;
1840
1847
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -1988,6 +1995,7 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
1988
1995
  maxModelCalls: z.ZodNumber;
1989
1996
  maxInputTokens: z.ZodNumber;
1990
1997
  maxOutputTokens: z.ZodNumber;
1998
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
1991
1999
  maxCostUsd: z.ZodNumber;
1992
2000
  }, z.core.$strict>;
1993
2001
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -2216,6 +2224,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2216
2224
  maxInputTokens: number;
2217
2225
  maxOutputTokens: number;
2218
2226
  maxCostUsd: number;
2227
+ maxTotalTokens?: number | undefined;
2219
2228
  };
2220
2229
  container: {
2221
2230
  image: string;
@@ -2459,6 +2468,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2459
2468
  maxInputTokens: number;
2460
2469
  maxOutputTokens: number;
2461
2470
  maxCostUsd: number;
2471
+ maxTotalTokens?: number | undefined;
2462
2472
  };
2463
2473
  container: {
2464
2474
  image: string;
@@ -2927,6 +2937,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2927
2937
  startedAtMs: number;
2928
2938
  endedAtMs: number;
2929
2939
  inputTokens: number;
2940
+ accountedInputTokens: number;
2930
2941
  outputTokens: number;
2931
2942
  cachedInputTokens: number;
2932
2943
  reasoningTokens: number;
@@ -2938,6 +2949,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2938
2949
  preparationId: string;
2939
2950
  grantDigest: `sha256:${string}`;
2940
2951
  closed: true;
2952
+ usageWithinLimits: boolean;
2941
2953
  resolved: {
2942
2954
  requested: string;
2943
2955
  provider: string;
@@ -2964,6 +2976,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2964
2976
  startedAtMs: number;
2965
2977
  endedAtMs: number;
2966
2978
  inputTokens: number;
2979
+ accountedInputTokens: number;
2967
2980
  outputTokens: number;
2968
2981
  cachedInputTokens: number;
2969
2982
  reasoningTokens: number;
@@ -2975,6 +2988,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2975
2988
  preparationId: string;
2976
2989
  grantDigest: `sha256:${string}`;
2977
2990
  closed: true;
2991
+ usageWithinLimits: boolean;
2978
2992
  resolved: {
2979
2993
  requested: string;
2980
2994
  provider: string;
@@ -3599,6 +3613,9 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
3599
3613
  xhigh: "xhigh";
3600
3614
  ultracode: "ultracode";
3601
3615
  }>>;
3616
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
3617
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
3618
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
3602
3619
  default: z.ZodOptional<z.ZodString>;
3603
3620
  small: z.ZodOptional<z.ZodString>;
3604
3621
  provider: z.ZodOptional<z.ZodString>;
@@ -4429,6 +4446,9 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
4429
4446
  xhigh: "xhigh";
4430
4447
  ultracode: "ultracode";
4431
4448
  }>>;
4449
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
4450
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
4451
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
4432
4452
  default: z.ZodOptional<z.ZodString>;
4433
4453
  small: z.ZodOptional<z.ZodString>;
4434
4454
  provider: z.ZodOptional<z.ZodString>;
@@ -5408,6 +5428,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5408
5428
  maxModelCalls: z.ZodNumber;
5409
5429
  maxInputTokens: z.ZodNumber;
5410
5430
  maxOutputTokens: z.ZodNumber;
5431
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
5411
5432
  maxCostUsd: z.ZodNumber;
5412
5433
  }, z.core.$strict>;
5413
5434
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -5561,6 +5582,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5561
5582
  maxModelCalls: z.ZodNumber;
5562
5583
  maxInputTokens: z.ZodNumber;
5563
5584
  maxOutputTokens: z.ZodNumber;
5585
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
5564
5586
  maxCostUsd: z.ZodNumber;
5565
5587
  }, z.core.$strict>;
5566
5588
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -5790,6 +5812,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5790
5812
  maxInputTokens: number;
5791
5813
  maxOutputTokens: number;
5792
5814
  maxCostUsd: number;
5815
+ maxTotalTokens?: number | undefined;
5793
5816
  };
5794
5817
  container: {
5795
5818
  image: string;
@@ -6033,6 +6056,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6033
6056
  maxInputTokens: number;
6034
6057
  maxOutputTokens: number;
6035
6058
  maxCostUsd: number;
6059
+ maxTotalTokens?: number | undefined;
6036
6060
  };
6037
6061
  container: {
6038
6062
  image: string;
@@ -6501,6 +6525,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6501
6525
  startedAtMs: number;
6502
6526
  endedAtMs: number;
6503
6527
  inputTokens: number;
6528
+ accountedInputTokens: number;
6504
6529
  outputTokens: number;
6505
6530
  cachedInputTokens: number;
6506
6531
  reasoningTokens: number;
@@ -6512,6 +6537,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6512
6537
  preparationId: string;
6513
6538
  grantDigest: `sha256:${string}`;
6514
6539
  closed: true;
6540
+ usageWithinLimits: boolean;
6515
6541
  resolved: {
6516
6542
  requested: string;
6517
6543
  provider: string;
@@ -6538,6 +6564,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6538
6564
  startedAtMs: number;
6539
6565
  endedAtMs: number;
6540
6566
  inputTokens: number;
6567
+ accountedInputTokens: number;
6541
6568
  outputTokens: number;
6542
6569
  cachedInputTokens: number;
6543
6570
  reasoningTokens: number;
@@ -6549,6 +6576,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6549
6576
  preparationId: string;
6550
6577
  grantDigest: `sha256:${string}`;
6551
6578
  closed: true;
6579
+ usageWithinLimits: boolean;
6552
6580
  resolved: {
6553
6581
  requested: string;
6554
6582
  provider: string;
@@ -7179,6 +7207,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7179
7207
  maxInputTokens: number;
7180
7208
  maxOutputTokens: number;
7181
7209
  maxCostUsd: number;
7210
+ maxTotalTokens?: number | undefined;
7182
7211
  };
7183
7212
  container: {
7184
7213
  image: string;
@@ -7422,6 +7451,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7422
7451
  maxInputTokens: number;
7423
7452
  maxOutputTokens: number;
7424
7453
  maxCostUsd: number;
7454
+ maxTotalTokens?: number | undefined;
7425
7455
  };
7426
7456
  container: {
7427
7457
  image: string;
@@ -7890,6 +7920,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7890
7920
  startedAtMs: number;
7891
7921
  endedAtMs: number;
7892
7922
  inputTokens: number;
7923
+ accountedInputTokens: number;
7893
7924
  outputTokens: number;
7894
7925
  cachedInputTokens: number;
7895
7926
  reasoningTokens: number;
@@ -7901,6 +7932,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7901
7932
  preparationId: string;
7902
7933
  grantDigest: `sha256:${string}`;
7903
7934
  closed: true;
7935
+ usageWithinLimits: boolean;
7904
7936
  resolved: {
7905
7937
  requested: string;
7906
7938
  provider: string;
@@ -7927,6 +7959,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7927
7959
  startedAtMs: number;
7928
7960
  endedAtMs: number;
7929
7961
  inputTokens: number;
7962
+ accountedInputTokens: number;
7930
7963
  outputTokens: number;
7931
7964
  cachedInputTokens: number;
7932
7965
  reasoningTokens: number;
@@ -7938,6 +7971,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7938
7971
  preparationId: string;
7939
7972
  grantDigest: `sha256:${string}`;
7940
7973
  closed: true;
7974
+ usageWithinLimits: boolean;
7941
7975
  resolved: {
7942
7976
  requested: string;
7943
7977
  provider: string;
@@ -8592,6 +8626,9 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
8592
8626
  xhigh: "xhigh";
8593
8627
  ultracode: "ultracode";
8594
8628
  }>>;
8629
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
8630
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
8631
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
8595
8632
  default: z.ZodOptional<z.ZodString>;
8596
8633
  small: z.ZodOptional<z.ZodString>;
8597
8634
  provider: z.ZodOptional<z.ZodString>;
@@ -9422,6 +9459,9 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
9422
9459
  xhigh: "xhigh";
9423
9460
  ultracode: "ultracode";
9424
9461
  }>>;
9462
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
9463
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
9464
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
9425
9465
  default: z.ZodOptional<z.ZodString>;
9426
9466
  small: z.ZodOptional<z.ZodString>;
9427
9467
  provider: z.ZodOptional<z.ZodString>;
@@ -10401,6 +10441,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10401
10441
  maxModelCalls: z.ZodNumber;
10402
10442
  maxInputTokens: z.ZodNumber;
10403
10443
  maxOutputTokens: z.ZodNumber;
10444
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
10404
10445
  maxCostUsd: z.ZodNumber;
10405
10446
  }, z.core.$strict>;
10406
10447
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -10554,6 +10595,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10554
10595
  maxModelCalls: z.ZodNumber;
10555
10596
  maxInputTokens: z.ZodNumber;
10556
10597
  maxOutputTokens: z.ZodNumber;
10598
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
10557
10599
  maxCostUsd: z.ZodNumber;
10558
10600
  }, z.core.$strict>;
10559
10601
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -10783,6 +10825,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10783
10825
  maxInputTokens: number;
10784
10826
  maxOutputTokens: number;
10785
10827
  maxCostUsd: number;
10828
+ maxTotalTokens?: number | undefined;
10786
10829
  };
10787
10830
  container: {
10788
10831
  image: string;
@@ -11026,6 +11069,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11026
11069
  maxInputTokens: number;
11027
11070
  maxOutputTokens: number;
11028
11071
  maxCostUsd: number;
11072
+ maxTotalTokens?: number | undefined;
11029
11073
  };
11030
11074
  container: {
11031
11075
  image: string;
@@ -11494,6 +11538,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11494
11538
  startedAtMs: number;
11495
11539
  endedAtMs: number;
11496
11540
  inputTokens: number;
11541
+ accountedInputTokens: number;
11497
11542
  outputTokens: number;
11498
11543
  cachedInputTokens: number;
11499
11544
  reasoningTokens: number;
@@ -11505,6 +11550,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11505
11550
  preparationId: string;
11506
11551
  grantDigest: `sha256:${string}`;
11507
11552
  closed: true;
11553
+ usageWithinLimits: boolean;
11508
11554
  resolved: {
11509
11555
  requested: string;
11510
11556
  provider: string;
@@ -11531,6 +11577,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11531
11577
  startedAtMs: number;
11532
11578
  endedAtMs: number;
11533
11579
  inputTokens: number;
11580
+ accountedInputTokens: number;
11534
11581
  outputTokens: number;
11535
11582
  cachedInputTokens: number;
11536
11583
  reasoningTokens: number;
@@ -11542,6 +11589,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11542
11589
  preparationId: string;
11543
11590
  grantDigest: `sha256:${string}`;
11544
11591
  closed: true;
11592
+ usageWithinLimits: boolean;
11545
11593
  resolved: {
11546
11594
  requested: string;
11547
11595
  provider: string;
@@ -12172,6 +12220,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12172
12220
  maxInputTokens: number;
12173
12221
  maxOutputTokens: number;
12174
12222
  maxCostUsd: number;
12223
+ maxTotalTokens?: number | undefined;
12175
12224
  };
12176
12225
  container: {
12177
12226
  image: string;
@@ -12415,6 +12464,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12415
12464
  maxInputTokens: number;
12416
12465
  maxOutputTokens: number;
12417
12466
  maxCostUsd: number;
12467
+ maxTotalTokens?: number | undefined;
12418
12468
  };
12419
12469
  container: {
12420
12470
  image: string;
@@ -12883,6 +12933,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12883
12933
  startedAtMs: number;
12884
12934
  endedAtMs: number;
12885
12935
  inputTokens: number;
12936
+ accountedInputTokens: number;
12886
12937
  outputTokens: number;
12887
12938
  cachedInputTokens: number;
12888
12939
  reasoningTokens: number;
@@ -12894,6 +12945,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12894
12945
  preparationId: string;
12895
12946
  grantDigest: `sha256:${string}`;
12896
12947
  closed: true;
12948
+ usageWithinLimits: boolean;
12897
12949
  resolved: {
12898
12950
  requested: string;
12899
12951
  provider: string;
@@ -12920,6 +12972,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12920
12972
  startedAtMs: number;
12921
12973
  endedAtMs: number;
12922
12974
  inputTokens: number;
12975
+ accountedInputTokens: number;
12923
12976
  outputTokens: number;
12924
12977
  cachedInputTokens: number;
12925
12978
  reasoningTokens: number;
@@ -12931,6 +12984,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12931
12984
  preparationId: string;
12932
12985
  grantDigest: `sha256:${string}`;
12933
12986
  closed: true;
12987
+ usageWithinLimits: boolean;
12934
12988
  resolved: {
12935
12989
  requested: string;
12936
12990
  provider: string;
@@ -13644,6 +13698,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13644
13698
  maxModelCalls: z.ZodNumber;
13645
13699
  maxInputTokens: z.ZodNumber;
13646
13700
  maxOutputTokens: z.ZodNumber;
13701
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13647
13702
  maxCostUsd: z.ZodNumber;
13648
13703
  }, z.core.$strict>;
13649
13704
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -13695,6 +13750,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13695
13750
  maxModelCalls: z.ZodNumber;
13696
13751
  maxInputTokens: z.ZodNumber;
13697
13752
  maxOutputTokens: z.ZodNumber;
13753
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13698
13754
  maxCostUsd: z.ZodNumber;
13699
13755
  }, z.core.$strict>;
13700
13756
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
@@ -13779,6 +13835,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13779
13835
  maxModelCalls: z.ZodNumber;
13780
13836
  maxInputTokens: z.ZodNumber;
13781
13837
  maxOutputTokens: z.ZodNumber;
13838
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13782
13839
  maxCostUsd: z.ZodNumber;
13783
13840
  }, z.core.$strict>;
13784
13841
  usage: z.ZodObject<{
@@ -13931,6 +13988,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
13931
13988
  maxModelCalls: z.ZodNumber;
13932
13989
  maxInputTokens: z.ZodNumber;
13933
13990
  maxOutputTokens: z.ZodNumber;
13991
+ maxTotalTokens: z.ZodOptional<z.ZodNumber>;
13934
13992
  maxCostUsd: z.ZodNumber;
13935
13993
  }, z.core.$strict>;
13936
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;
@@ -186,7 +186,16 @@ export function isCanonicalJsonValue(value, ancestors = new Set()) {
186
186
  }
187
187
  const nextAncestors = new Set(ancestors).add(value);
188
188
  if (Array.isArray(value)) {
189
- return value.every((entry) => isCanonicalJsonValue(entry, nextAncestors));
189
+ for (let index = 0; index < value.length; index += 1) {
190
+ // A sparse hole serializes to the same bytes as a dense null but is a
191
+ // distinct in-memory value, so two observable inputs would share one
192
+ // content digest. Reject the sparse form; never change the output bytes.
193
+ if (!(index in value))
194
+ return false;
195
+ if (!isCanonicalJsonValue(value[index], nextAncestors))
196
+ return false;
197
+ }
198
+ return true;
190
199
  }
191
200
  return Object.entries(value).every(([key, entry]) => isWellFormedUnicode(key) && isCanonicalJsonValue(entry, nextAncestors));
192
201
  }
@@ -30,6 +30,9 @@ export declare const agentCandidateBundleSchema: z.ZodObject<{
30
30
  xhigh: "xhigh";
31
31
  ultracode: "ultracode";
32
32
  }>>;
33
+ maxVisibleOutputTokens: z.ZodOptional<z.ZodNumber>;
34
+ maxReasoningTokens: z.ZodOptional<z.ZodNumber>;
35
+ maxTotalOutputTokens: z.ZodOptional<z.ZodNumber>;
33
36
  default: z.ZodOptional<z.ZodString>;
34
37
  small: z.ZodOptional<z.ZodString>;
35
38
  provider: z.ZodOptional<z.ZodString>;