@mmnto/totem 1.57.0 → 1.58.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.
@@ -65,6 +65,21 @@ export declare const PROVENANCE_UNGROUNDED = "ungrounded";
65
65
  * argument as provenance.
66
66
  */
67
67
  export declare const ADMISSION_COMPLETION_ONLY: "completion_only";
68
+ /**
69
+ * Elevated admission class (mmnto-ai/totem#2102, strategy#474 slice 3): the
70
+ * backend is admitted to ground itself (agentic retrieval/tool use) rather
71
+ * than complete over caller-delivered context. Requestable only when declared
72
+ * in `orchestrator.capabilities.admissionClasses` — the admission gate in
73
+ * `runOrchestrator` fails loud pre-invoke otherwise.
74
+ */
75
+ export declare const ADMISSION_SELF_GROUNDING_AGENT: "self_grounding_agent";
76
+ /**
77
+ * Closed two-value enum this slice — single source of truth for both
78
+ * `BackendSchema.admissionClass` and the config-side capability declaration
79
+ * (`orchestrator.capabilities.admissionClasses`); a parallel definition is
80
+ * the drift vector the #1429 model-validation review named.
81
+ */
82
+ export declare const ADMISSION_CLASSES: readonly ["completion_only", "self_grounding_agent"];
68
83
  /**
69
84
  * The assembled prompt inputs, POST-DLP. `maskedPrompt`/`maskedSystemPrompt`
70
85
  * are what actually crossed the wire (`maskSecrets` output) — recording the
@@ -107,16 +122,16 @@ export declare const GroundingItemSchema: z.ZodObject<{
107
122
  /** Linked-index name for cross-repo hits; ABSENT = the run's own repo (F1) — post-checks resolve `filePath` against the run's config root when absent. */
108
123
  sourceRepo: z.ZodOptional<z.ZodString>;
109
124
  }, "strip", z.ZodTypeAny, {
110
- filePath: string;
111
125
  provenance: string;
112
126
  contentHash: string;
113
127
  sourceType: string;
128
+ filePath: string;
114
129
  sourceRepo?: string | undefined;
115
130
  }, {
116
- filePath: string;
117
131
  provenance: string;
118
132
  contentHash: string;
119
133
  sourceType: string;
134
+ filePath: string;
120
135
  sourceRepo?: string | undefined;
121
136
  }>;
122
137
  /**
@@ -137,32 +152,32 @@ export declare const GroundingBundleSchema: z.ZodObject<{
137
152
  /** Linked-index name for cross-repo hits; ABSENT = the run's own repo (F1) — post-checks resolve `filePath` against the run's config root when absent. */
138
153
  sourceRepo: z.ZodOptional<z.ZodString>;
139
154
  }, "strip", z.ZodTypeAny, {
140
- filePath: string;
141
155
  provenance: string;
142
156
  contentHash: string;
143
157
  sourceType: string;
158
+ filePath: string;
144
159
  sourceRepo?: string | undefined;
145
160
  }, {
146
- filePath: string;
147
161
  provenance: string;
148
162
  contentHash: string;
149
163
  sourceType: string;
164
+ filePath: string;
150
165
  sourceRepo?: string | undefined;
151
166
  }>, "many">;
152
167
  }, "strip", z.ZodTypeAny, {
153
168
  items: {
154
- filePath: string;
155
169
  provenance: string;
156
170
  contentHash: string;
157
171
  sourceType: string;
172
+ filePath: string;
158
173
  sourceRepo?: string | undefined;
159
174
  }[];
160
175
  }, {
161
176
  items: {
162
- filePath: string;
163
177
  provenance: string;
164
178
  contentHash: string;
165
179
  sourceType: string;
180
+ filePath: string;
166
181
  sourceRepo?: string | undefined;
167
182
  }[];
168
183
  }>;
@@ -192,32 +207,32 @@ export declare const GroundingSchema: z.ZodObject<{
192
207
  /** Linked-index name for cross-repo hits; ABSENT = the run's own repo (F1) — post-checks resolve `filePath` against the run's config root when absent. */
193
208
  sourceRepo: z.ZodOptional<z.ZodString>;
194
209
  }, "strip", z.ZodTypeAny, {
195
- filePath: string;
196
210
  provenance: string;
197
211
  contentHash: string;
198
212
  sourceType: string;
213
+ filePath: string;
199
214
  sourceRepo?: string | undefined;
200
215
  }, {
201
- filePath: string;
202
216
  provenance: string;
203
217
  contentHash: string;
204
218
  sourceType: string;
219
+ filePath: string;
205
220
  sourceRepo?: string | undefined;
206
221
  }>, "many">;
207
222
  }, "strip", z.ZodTypeAny, {
208
223
  items: {
209
- filePath: string;
210
224
  provenance: string;
211
225
  contentHash: string;
212
226
  sourceType: string;
227
+ filePath: string;
213
228
  sourceRepo?: string | undefined;
214
229
  }[];
215
230
  }, {
216
231
  items: {
217
- filePath: string;
218
232
  provenance: string;
219
233
  contentHash: string;
220
234
  sourceType: string;
235
+ filePath: string;
221
236
  sourceRepo?: string | undefined;
222
237
  }[];
223
238
  }>>;
@@ -226,10 +241,10 @@ export declare const GroundingSchema: z.ZodObject<{
226
241
  provenanceSummary: string;
227
242
  bundle?: {
228
243
  items: {
229
- filePath: string;
230
244
  provenance: string;
231
245
  contentHash: string;
232
246
  sourceType: string;
247
+ filePath: string;
233
248
  sourceRepo?: string | undefined;
234
249
  }[];
235
250
  } | undefined;
@@ -238,10 +253,10 @@ export declare const GroundingSchema: z.ZodObject<{
238
253
  provenanceSummary: string;
239
254
  bundle?: {
240
255
  items: {
241
- filePath: string;
242
256
  provenance: string;
243
257
  contentHash: string;
244
258
  sourceType: string;
259
+ filePath: string;
245
260
  sourceRepo?: string | undefined;
246
261
  }[];
247
262
  } | undefined;
@@ -271,6 +286,58 @@ export declare const BackendSchema: z.ZodObject<{
271
286
  taskProfile: string;
272
287
  temperature?: number | undefined;
273
288
  }>;
289
+ /**
290
+ * Caller-declared output contract (mmnto-ai/totem#2102): the citations-or-
291
+ * `VERIFY:` declaration. Callers write; #2103 post-checks read; providers
292
+ * transport, never enforce (Totem is not zero-user — backend cooperation is
293
+ * never assumed, enforcement is caller-side post-invocation). Closed object:
294
+ * extensible by additive optional fields, not an index signature.
295
+ */
296
+ export declare const OutputContractSchema: z.ZodObject<{
297
+ /** Response claims must carry citations into the delivered grounding. */
298
+ citationsRequired: z.ZodOptional<z.ZodBoolean>;
299
+ /** Whether an explicit `VERIFY:` escalation is an acceptable fallback for an uncitable claim. */
300
+ verifyFallback: z.ZodOptional<z.ZodBoolean>;
301
+ /** JSON-Schema definition for structured output. */
302
+ schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
303
+ }, "strip", z.ZodTypeAny, {
304
+ citationsRequired?: boolean | undefined;
305
+ verifyFallback?: boolean | undefined;
306
+ schema?: Record<string, unknown> | undefined;
307
+ }, {
308
+ citationsRequired?: boolean | undefined;
309
+ verifyFallback?: boolean | undefined;
310
+ schema?: Record<string, unknown> | undefined;
311
+ }>;
312
+ /**
313
+ * Caller-declared context policy (mmnto-ai/totem#2102). Advisory this slice —
314
+ * recorded for honesty, enforced by nothing yet — but validated so
315
+ * declared-not-enforced never means accepting nonsense.
316
+ */
317
+ export declare const ContextPolicySchema: z.ZodObject<{
318
+ /** Advisory context budget. Unit: INPUT TOKENS. */
319
+ budget: z.ZodOptional<z.ZodNumber>;
320
+ }, "strip", z.ZodTypeAny, {
321
+ budget?: number | undefined;
322
+ }, {
323
+ budget?: number | undefined;
324
+ }>;
325
+ /**
326
+ * Caller identity metadata (mmnto-ai/totem#2102, the #2100 runMetadata
327
+ * target) — recorded verbatim into the artifact.
328
+ */
329
+ export declare const RunMetadataSchema: z.ZodObject<{
330
+ /** The command/module that issued the run (e.g. `spec`, `review`). */
331
+ caller: z.ZodOptional<z.ZodString>;
332
+ /** The CLI command identity the run served, when distinct from `caller`. */
333
+ command: z.ZodOptional<z.ZodString>;
334
+ }, "strip", z.ZodTypeAny, {
335
+ caller?: string | undefined;
336
+ command?: string | undefined;
337
+ }, {
338
+ caller?: string | undefined;
339
+ command?: string | undefined;
340
+ }>;
274
341
  /**
275
342
  * Token counts mirror `OrchestratorResult`: `null` means the provider did not
276
343
  * report (honest-absent), distinct from the field being absent entirely.
@@ -341,32 +408,32 @@ export declare const RunArtifactSchema: z.ZodObject<{
341
408
  /** Linked-index name for cross-repo hits; ABSENT = the run's own repo (F1) — post-checks resolve `filePath` against the run's config root when absent. */
342
409
  sourceRepo: z.ZodOptional<z.ZodString>;
343
410
  }, "strip", z.ZodTypeAny, {
344
- filePath: string;
345
411
  provenance: string;
346
412
  contentHash: string;
347
413
  sourceType: string;
414
+ filePath: string;
348
415
  sourceRepo?: string | undefined;
349
416
  }, {
350
- filePath: string;
351
417
  provenance: string;
352
418
  contentHash: string;
353
419
  sourceType: string;
420
+ filePath: string;
354
421
  sourceRepo?: string | undefined;
355
422
  }>, "many">;
356
423
  }, "strip", z.ZodTypeAny, {
357
424
  items: {
358
- filePath: string;
359
425
  provenance: string;
360
426
  contentHash: string;
361
427
  sourceType: string;
428
+ filePath: string;
362
429
  sourceRepo?: string | undefined;
363
430
  }[];
364
431
  }, {
365
432
  items: {
366
- filePath: string;
367
433
  provenance: string;
368
434
  contentHash: string;
369
435
  sourceType: string;
436
+ filePath: string;
370
437
  sourceRepo?: string | undefined;
371
438
  }[];
372
439
  }>>;
@@ -375,10 +442,10 @@ export declare const RunArtifactSchema: z.ZodObject<{
375
442
  provenanceSummary: string;
376
443
  bundle?: {
377
444
  items: {
378
- filePath: string;
379
445
  provenance: string;
380
446
  contentHash: string;
381
447
  sourceType: string;
448
+ filePath: string;
382
449
  sourceRepo?: string | undefined;
383
450
  }[];
384
451
  } | undefined;
@@ -387,10 +454,10 @@ export declare const RunArtifactSchema: z.ZodObject<{
387
454
  provenanceSummary: string;
388
455
  bundle?: {
389
456
  items: {
390
- filePath: string;
391
457
  provenance: string;
392
458
  contentHash: string;
393
459
  sourceType: string;
460
+ filePath: string;
394
461
  sourceRepo?: string | undefined;
395
462
  }[];
396
463
  } | undefined;
@@ -459,6 +526,71 @@ export declare const RunArtifactSchema: z.ZodObject<{
459
526
  finishReason?: string | undefined;
460
527
  };
461
528
  }>;
529
+ /** Admitted contract group (mmnto-ai/totem#2102) — additive 1.x optional; slice-1/2 artifacts predate it. */
530
+ admission: z.ZodOptional<z.ZodObject<{
531
+ outputContract: z.ZodOptional<z.ZodObject<{
532
+ /** Response claims must carry citations into the delivered grounding. */
533
+ citationsRequired: z.ZodOptional<z.ZodBoolean>;
534
+ /** Whether an explicit `VERIFY:` escalation is an acceptable fallback for an uncitable claim. */
535
+ verifyFallback: z.ZodOptional<z.ZodBoolean>;
536
+ /** JSON-Schema definition for structured output. */
537
+ schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
538
+ }, "strip", z.ZodTypeAny, {
539
+ citationsRequired?: boolean | undefined;
540
+ verifyFallback?: boolean | undefined;
541
+ schema?: Record<string, unknown> | undefined;
542
+ }, {
543
+ citationsRequired?: boolean | undefined;
544
+ verifyFallback?: boolean | undefined;
545
+ schema?: Record<string, unknown> | undefined;
546
+ }>>;
547
+ contextPolicy: z.ZodOptional<z.ZodObject<{
548
+ /** Advisory context budget. Unit: INPUT TOKENS. */
549
+ budget: z.ZodOptional<z.ZodNumber>;
550
+ }, "strip", z.ZodTypeAny, {
551
+ budget?: number | undefined;
552
+ }, {
553
+ budget?: number | undefined;
554
+ }>>;
555
+ runMetadata: z.ZodOptional<z.ZodObject<{
556
+ /** The command/module that issued the run (e.g. `spec`, `review`). */
557
+ caller: z.ZodOptional<z.ZodString>;
558
+ /** The CLI command identity the run served, when distinct from `caller`. */
559
+ command: z.ZodOptional<z.ZodString>;
560
+ }, "strip", z.ZodTypeAny, {
561
+ caller?: string | undefined;
562
+ command?: string | undefined;
563
+ }, {
564
+ caller?: string | undefined;
565
+ command?: string | undefined;
566
+ }>>;
567
+ }, "strip", z.ZodTypeAny, {
568
+ outputContract?: {
569
+ citationsRequired?: boolean | undefined;
570
+ verifyFallback?: boolean | undefined;
571
+ schema?: Record<string, unknown> | undefined;
572
+ } | undefined;
573
+ contextPolicy?: {
574
+ budget?: number | undefined;
575
+ } | undefined;
576
+ runMetadata?: {
577
+ caller?: string | undefined;
578
+ command?: string | undefined;
579
+ } | undefined;
580
+ }, {
581
+ outputContract?: {
582
+ citationsRequired?: boolean | undefined;
583
+ verifyFallback?: boolean | undefined;
584
+ schema?: Record<string, unknown> | undefined;
585
+ } | undefined;
586
+ contextPolicy?: {
587
+ budget?: number | undefined;
588
+ } | undefined;
589
+ runMetadata?: {
590
+ caller?: string | undefined;
591
+ command?: string | undefined;
592
+ } | undefined;
593
+ }>>;
462
594
  /**
463
595
  * ISO-8601 emission time. EXCLUDED from the content address (identical runs
464
596
  * dedup to one artifact regardless of when they ran) — observability only.
@@ -466,16 +598,6 @@ export declare const RunArtifactSchema: z.ZodObject<{
466
598
  createdAt: z.ZodString;
467
599
  }, "strip", z.ZodTypeAny, {
468
600
  createdAt: string;
469
- output: {
470
- content: string;
471
- metrics: {
472
- durationMs: number;
473
- inputTokens?: number | null | undefined;
474
- outputTokens?: number | null | undefined;
475
- cacheReadInputTokens?: number | null | undefined;
476
- finishReason?: string | undefined;
477
- };
478
- };
479
601
  schemaVersion: string;
480
602
  inputBundle: {
481
603
  maskedPrompt: string;
@@ -489,10 +611,10 @@ export declare const RunArtifactSchema: z.ZodObject<{
489
611
  provenanceSummary: string;
490
612
  bundle?: {
491
613
  items: {
492
- filePath: string;
493
614
  provenance: string;
494
615
  contentHash: string;
495
616
  sourceType: string;
617
+ filePath: string;
496
618
  sourceRepo?: string | undefined;
497
619
  }[];
498
620
  } | undefined;
@@ -505,8 +627,6 @@ export declare const RunArtifactSchema: z.ZodObject<{
505
627
  taskProfile: string;
506
628
  temperature?: number | undefined;
507
629
  };
508
- }, {
509
- createdAt: string;
510
630
  output: {
511
631
  content: string;
512
632
  metrics: {
@@ -517,6 +637,22 @@ export declare const RunArtifactSchema: z.ZodObject<{
517
637
  finishReason?: string | undefined;
518
638
  };
519
639
  };
640
+ admission?: {
641
+ outputContract?: {
642
+ citationsRequired?: boolean | undefined;
643
+ verifyFallback?: boolean | undefined;
644
+ schema?: Record<string, unknown> | undefined;
645
+ } | undefined;
646
+ contextPolicy?: {
647
+ budget?: number | undefined;
648
+ } | undefined;
649
+ runMetadata?: {
650
+ caller?: string | undefined;
651
+ command?: string | undefined;
652
+ } | undefined;
653
+ } | undefined;
654
+ }, {
655
+ createdAt: string;
520
656
  schemaVersion: string;
521
657
  inputBundle: {
522
658
  maskedPrompt: string;
@@ -530,10 +666,10 @@ export declare const RunArtifactSchema: z.ZodObject<{
530
666
  provenanceSummary: string;
531
667
  bundle?: {
532
668
  items: {
533
- filePath: string;
534
669
  provenance: string;
535
670
  contentHash: string;
536
671
  sourceType: string;
672
+ filePath: string;
537
673
  sourceRepo?: string | undefined;
538
674
  }[];
539
675
  } | undefined;
@@ -546,9 +682,38 @@ export declare const RunArtifactSchema: z.ZodObject<{
546
682
  taskProfile: string;
547
683
  temperature?: number | undefined;
548
684
  };
685
+ output: {
686
+ content: string;
687
+ metrics: {
688
+ durationMs: number;
689
+ inputTokens?: number | null | undefined;
690
+ outputTokens?: number | null | undefined;
691
+ cacheReadInputTokens?: number | null | undefined;
692
+ finishReason?: string | undefined;
693
+ };
694
+ };
695
+ admission?: {
696
+ outputContract?: {
697
+ citationsRequired?: boolean | undefined;
698
+ verifyFallback?: boolean | undefined;
699
+ schema?: Record<string, unknown> | undefined;
700
+ } | undefined;
701
+ contextPolicy?: {
702
+ budget?: number | undefined;
703
+ } | undefined;
704
+ runMetadata?: {
705
+ caller?: string | undefined;
706
+ command?: string | undefined;
707
+ } | undefined;
708
+ } | undefined;
549
709
  }>;
550
710
  export type RunArtifact = z.infer<typeof RunArtifactSchema>;
551
711
  export type InputBundle = z.infer<typeof InputBundleSchema>;
552
712
  export type GroundingItem = z.infer<typeof GroundingItemSchema>;
553
713
  export type GroundingBundle = z.infer<typeof GroundingBundleSchema>;
714
+ export type OutputContract = z.infer<typeof OutputContractSchema>;
715
+ export type ContextPolicy = z.infer<typeof ContextPolicySchema>;
716
+ export type RunMetadata = z.infer<typeof RunMetadataSchema>;
717
+ /** Inferred from the `BackendSchema` enum — the canonical admission-class union (mmnto-ai/totem#2102). */
718
+ export type BackendAdmissionClass = z.infer<typeof BackendSchema>['admissionClass'];
554
719
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/artifacts/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,UAAU,CAAC;AAEnD,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAC5D,eAAO,MAAM,gCAAgC,0BAA0B,CAAC;AACxE,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AACxD,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AACxD,eAAO,MAAM,kBAAkB,yFAKrB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAG,iBAA0B,CAAC;AAgBpE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;IAG5B,gFAAgF;;IAEhF,oFAAoF;;;;;;;;;;;;EAEpF,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;IAC9B,4IAA4I;;IAE5I,iFAAiF;;IAEjF,0GAA0G;;IAE1G,wFAAwF;;IAExF,0JAA0J;;;;;;;;;;;;;;EAE1J,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;QAjBhC,4IAA4I;;QAE5I,iFAAiF;;QAEjF,0GAA0G;;QAE1G,wFAAwF;;QAExF,0JAA0J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW1J,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,eAAe;IAC1B;;;;;;OAMG;;IAEH,yHAAyH;;IAEzH,yHAAyH;;;YAjCzH,4IAA4I;;YAE5I,iFAAiF;;YAEjF,0GAA0G;;YAE1G,wFAAwF;;YAExF,0JAA0J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B1J,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,aAAa;;;IAGxB,oFAAoF;;;IAGpF,iFAAiF;;;;;;;;;;;;;;;;;EAGjF,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;QA3E5B,gFAAgF;;QAEhF,oFAAoF;;;;;;;;;;;;;IA4EpF,sEAAsE;;;QAzCtE;;;;;;WAMG;;QAEH,yHAAyH;;QAEzH,yHAAyH;;;gBAjCzH,4IAA4I;;gBAE5I,iFAAiF;;gBAEjF,0GAA0G;;gBAE1G,wFAAwF;;gBAExF,0JAA0J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiC1J,oFAAoF;;;QAGpF,iFAAiF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BjF;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/artifacts/schema.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,24 @@ export const PROVENANCE_UNGROUNDED = 'ungrounded';
70
70
  * argument as provenance.
71
71
  */
72
72
  export const ADMISSION_COMPLETION_ONLY = 'completion_only';
73
+ /**
74
+ * Elevated admission class (mmnto-ai/totem#2102, strategy#474 slice 3): the
75
+ * backend is admitted to ground itself (agentic retrieval/tool use) rather
76
+ * than complete over caller-delivered context. Requestable only when declared
77
+ * in `orchestrator.capabilities.admissionClasses` — the admission gate in
78
+ * `runOrchestrator` fails loud pre-invoke otherwise.
79
+ */
80
+ export const ADMISSION_SELF_GROUNDING_AGENT = 'self_grounding_agent';
81
+ /**
82
+ * Closed two-value enum this slice — single source of truth for both
83
+ * `BackendSchema.admissionClass` and the config-side capability declaration
84
+ * (`orchestrator.capabilities.admissionClasses`); a parallel definition is
85
+ * the drift vector the #1429 model-validation review named.
86
+ */
87
+ export const ADMISSION_CLASSES = [
88
+ ADMISSION_COMPLETION_ONLY,
89
+ ADMISSION_SELF_GROUNDING_AGENT,
90
+ ];
73
91
  /** sha256 hex content hash (full digest — identity, not display). */
74
92
  const SHA256_HEX = /^[0-9a-f]{64}$/;
75
93
  /** Major-1 semver literal — keep in sync with {@link RUN_ARTIFACT_KNOWN_MAJOR} (CR review on #2114: a literal beats runtime RegExp construction; the major only changes alongside a migration entry anyway). */
@@ -139,11 +157,56 @@ export const BackendSchema = z.object({
139
157
  model: z.string().min(1),
140
158
  /** The full provider-qualified string telemetry/cache key on (`provider:model`). */
141
159
  qualifiedModel: z.string().min(1),
142
- admissionClass: z.enum(['completion_only', 'self_grounding_agent']),
160
+ admissionClass: z.enum(ADMISSION_CLASSES),
143
161
  /** The command tag the run served (`Spec`, `Review`, ...) — the task profile. */
144
162
  taskProfile: z.string().min(1),
145
163
  temperature: z.number().optional(),
146
164
  });
165
+ /**
166
+ * Caller-declared output contract (mmnto-ai/totem#2102): the citations-or-
167
+ * `VERIFY:` declaration. Callers write; #2103 post-checks read; providers
168
+ * transport, never enforce (Totem is not zero-user — backend cooperation is
169
+ * never assumed, enforcement is caller-side post-invocation). Closed object:
170
+ * extensible by additive optional fields, not an index signature.
171
+ */
172
+ export const OutputContractSchema = z.object({
173
+ /** Response claims must carry citations into the delivered grounding. */
174
+ citationsRequired: z.boolean().optional(),
175
+ /** Whether an explicit `VERIFY:` escalation is an acceptable fallback for an uncitable claim. */
176
+ verifyFallback: z.boolean().optional(),
177
+ /** JSON-Schema definition for structured output. */
178
+ schema: z.record(z.unknown()).optional(),
179
+ });
180
+ /**
181
+ * Caller-declared context policy (mmnto-ai/totem#2102). Advisory this slice —
182
+ * recorded for honesty, enforced by nothing yet — but validated so
183
+ * declared-not-enforced never means accepting nonsense.
184
+ */
185
+ export const ContextPolicySchema = z.object({
186
+ /** Advisory context budget. Unit: INPUT TOKENS. */
187
+ budget: z.number().int().positive().optional(),
188
+ });
189
+ /**
190
+ * Caller identity metadata (mmnto-ai/totem#2102, the #2100 runMetadata
191
+ * target) — recorded verbatim into the artifact.
192
+ */
193
+ export const RunMetadataSchema = z.object({
194
+ /** The command/module that issued the run (e.g. `spec`, `review`). */
195
+ caller: z.string().min(1).optional(),
196
+ /** The CLI command identity the run served, when distinct from `caller`. */
197
+ command: z.string().min(1).optional(),
198
+ });
199
+ /**
200
+ * The admitted contract group (mmnto-ai/totem#2102). Top-level and optional,
201
+ * NOT inside `inputBundle` — `inputBundle` feeds `inputHash`, and polluting
202
+ * it would break rerun/compare identity for identical prompts. Recorded only
203
+ * when the caller supplied at least one member.
204
+ */
205
+ const RunAdmissionSchema = z.object({
206
+ outputContract: OutputContractSchema.optional(),
207
+ contextPolicy: ContextPolicySchema.optional(),
208
+ runMetadata: RunMetadataSchema.optional(),
209
+ });
147
210
  /**
148
211
  * Token counts mirror `OrchestratorResult`: `null` means the provider did not
149
212
  * report (honest-absent), distinct from the field being absent entirely.
@@ -166,6 +229,8 @@ export const RunArtifactSchema = z.object({
166
229
  content: z.string(),
167
230
  metrics: RunMetricsSchema,
168
231
  }),
232
+ /** Admitted contract group (mmnto-ai/totem#2102) — additive 1.x optional; slice-1/2 artifacts predate it. */
233
+ admission: RunAdmissionSchema.optional(),
169
234
  /**
170
235
  * ISO-8601 emission time. EXCLUDED from the content address (identical runs
171
236
  * dedup to one artifact regardless of when they ran) — observability only.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/artifacts/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAEnD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AAC5D,MAAM,CAAC,MAAM,gCAAgC,GAAG,uBAAuB,CAAC;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,0BAA0B;IAC1B,gCAAgC;IAChC,wBAAwB;IACxB,wBAAwB;CAChB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAA0B,CAAC;AAEpE,qEAAqE;AACrE,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,gNAAgN;AAChN,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C,+EAA+E;AAC/E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACN,OAAO,EAAE,2CAA2C,CAAC,qCAAqC,wBAAwB,+DAA+D;CAClL,CAAC,CACH,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,gFAAgF;IAChF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,oFAAoF;IACpF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,4IAA4I;IAC5I,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,iFAAiF;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,yCAAyC,CAAC;IACpF,0GAA0G;IAC1G,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,wFAAwF;IACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,0JAA0J;IAC1J,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACpC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC;;;;;;OAMG;IACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,4CAA4C,CAAC;IAChF,yHAAyH;IACzH,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,yHAAyH;IACzH,MAAM,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,oFAAoF;IACpF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;IACnE,iFAAiF;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,aAAa,EAAE,kBAAkB;IACjC,WAAW,EAAE,iBAAiB;IAC9B,sEAAsE;IACtE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,uCAAuC,CAAC;IAChF,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IACF;;;OAGG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/artifacts/schema.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { RUN_ARTIFACT_SCHEMA_VERSION, RunArtifactSchema } from './schema.js';
2
+ import { ADMISSION_COMPLETION_ONLY, ADMISSION_SELF_GROUNDING_AGENT, ContextPolicySchema, OutputContractSchema, RUN_ARTIFACT_SCHEMA_VERSION, RunArtifactSchema, RunMetadataSchema, } from './schema.js';
3
3
  /** A minimal valid artifact for mutation in each case. */
4
4
  function validArtifact() {
5
5
  return {
@@ -54,4 +54,78 @@ describe('RunArtifactSchema', () => {
54
54
  expect(RunArtifactSchema.safeParse(artifact).success).toBe(true);
55
55
  });
56
56
  });
57
+ // ─── Admission contract (mmnto-ai/totem#2102, strategy#474 slice 3) ──
58
+ describe('admission contract schemas (#2102)', () => {
59
+ it('exports both admission-class constants matching the BackendSchema enum', () => {
60
+ expect(ADMISSION_COMPLETION_ONLY).toBe('completion_only');
61
+ expect(ADMISSION_SELF_GROUNDING_AGENT).toBe('self_grounding_agent');
62
+ // Compile-time lock: BackendAdmissionClass is inferred from the enum, so
63
+ // both constants must be assignable to it.
64
+ const classes = [
65
+ ADMISSION_COMPLETION_ONLY,
66
+ ADMISSION_SELF_GROUNDING_AGENT,
67
+ ];
68
+ expect(classes).toHaveLength(2);
69
+ });
70
+ it('accepts self_grounding_agent as a backend admissionClass', () => {
71
+ const artifact = validArtifact();
72
+ artifact.backend.admissionClass = ADMISSION_SELF_GROUNDING_AGENT;
73
+ expect(RunArtifactSchema.safeParse(artifact).success).toBe(true);
74
+ });
75
+ it('a slice-1 artifact (no admission group) still parses (invariant 6 — additive 1.x)', () => {
76
+ const parsed = RunArtifactSchema.parse(validArtifact());
77
+ expect(parsed.admission).toBeUndefined();
78
+ });
79
+ it('accepts a fully hydrated top-level admission group and roundtrips it verbatim', () => {
80
+ const artifact = {
81
+ ...validArtifact(),
82
+ admission: {
83
+ outputContract: {
84
+ citationsRequired: true,
85
+ verifyFallback: true,
86
+ schema: { type: 'object', properties: { verdict: { type: 'string' } } },
87
+ },
88
+ contextPolicy: { budget: 32_000 },
89
+ runMetadata: { caller: 'spec', command: 'spec' },
90
+ },
91
+ };
92
+ expect(RunArtifactSchema.parse(artifact)).toEqual(artifact);
93
+ });
94
+ it('the admission group lives at the top level, never inside inputBundle (inputHash identity)', () => {
95
+ const artifact = validArtifact();
96
+ const polluted = {
97
+ ...artifact,
98
+ inputBundle: { ...artifact.inputBundle, admission: { contextPolicy: { budget: 1 } } },
99
+ };
100
+ // Zod strips unknown keys: the polluted member never lands in the bundle.
101
+ const parsed = RunArtifactSchema.parse(polluted);
102
+ expect(parsed.inputBundle).toEqual(artifact.inputBundle);
103
+ });
104
+ it('ContextPolicy budget must be a positive integer (input tokens — declared ≠ nonsense)', () => {
105
+ expect(ContextPolicySchema.safeParse({ budget: 8000 }).success).toBe(true);
106
+ expect(ContextPolicySchema.safeParse({}).success).toBe(true);
107
+ expect(ContextPolicySchema.safeParse({ budget: 0 }).success).toBe(false);
108
+ expect(ContextPolicySchema.safeParse({ budget: -100 }).success).toBe(false);
109
+ expect(ContextPolicySchema.safeParse({ budget: 1.5 }).success).toBe(false);
110
+ });
111
+ it('rejects an artifact whose admission carries an invalid budget', () => {
112
+ const broken = {
113
+ ...validArtifact(),
114
+ admission: { contextPolicy: { budget: -1 } },
115
+ };
116
+ expect(RunArtifactSchema.safeParse(broken).success).toBe(false);
117
+ });
118
+ it('OutputContract is a closed object — unknown keys are stripped, never key soup', () => {
119
+ const parsed = OutputContractSchema.parse({
120
+ citationsRequired: false,
121
+ arbitraryExtension: 'smuggled',
122
+ });
123
+ expect(parsed).toEqual({ citationsRequired: false });
124
+ });
125
+ it('RunMetadata rejects empty caller/command strings', () => {
126
+ expect(RunMetadataSchema.safeParse({ caller: 'spec' }).success).toBe(true);
127
+ expect(RunMetadataSchema.safeParse({ caller: '' }).success).toBe(false);
128
+ expect(RunMetadataSchema.safeParse({ command: '' }).success).toBe(false);
129
+ });
130
+ });
57
131
  //# sourceMappingURL=schema.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/artifacts/schema.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/artifacts/schema.test.ts"],"names":[],"mappings":"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"}