@cleocode/contracts 2026.6.11 → 2026.6.13
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/dist/__tests__/operation-def.test.js +2 -1
- package/dist/__tests__/operation-def.test.js.map +1 -1
- package/dist/__tests__/sealed-credential.test.d.ts +19 -0
- package/dist/__tests__/sealed-credential.test.d.ts.map +1 -0
- package/dist/__tests__/sealed-credential.test.js +74 -0
- package/dist/__tests__/sealed-credential.test.js.map +1 -0
- package/dist/__tests__/skill-executor-contract.test.js +3 -0
- package/dist/__tests__/skill-executor-contract.test.js.map +1 -1
- package/dist/acceptance-gate.d.ts +2 -3
- package/dist/acceptance-gate.d.ts.map +1 -1
- package/dist/boundary.d.ts.map +1 -1
- package/dist/boundary.js +1 -19
- package/dist/boundary.js.map +1 -1
- package/dist/config.d.ts +102 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/data-accessor.d.ts +21 -1
- package/dist/data-accessor.d.ts.map +1 -1
- package/dist/data-accessor.js.map +1 -1
- package/dist/dispatch/identity.d.ts +1 -1
- package/dist/dispatch/identity.d.ts.map +1 -1
- package/dist/dispatch/identity.js +5 -0
- package/dist/dispatch/identity.js.map +1 -1
- package/dist/dispatch/operations-registry.d.ts.map +1 -1
- package/dist/dispatch/operations-registry.js +46 -168
- package/dist/dispatch/operations-registry.js.map +1 -1
- package/dist/docs/read.d.ts +2 -2
- package/dist/index.d.ts +12 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lease-ipc/__tests__/freeze.test.d.ts +15 -0
- package/dist/lease-ipc/__tests__/freeze.test.d.ts.map +1 -0
- package/dist/lease-ipc/__tests__/freeze.test.js +221 -0
- package/dist/lease-ipc/__tests__/freeze.test.js.map +1 -0
- package/dist/lease-ipc/index.d.ts +17 -0
- package/dist/lease-ipc/index.d.ts.map +1 -0
- package/dist/lease-ipc/index.js +16 -0
- package/dist/lease-ipc/index.js.map +1 -0
- package/dist/lease-ipc/messages.d.ts +754 -0
- package/dist/lease-ipc/messages.d.ts.map +1 -0
- package/dist/lease-ipc/messages.js +383 -0
- package/dist/lease-ipc/messages.js.map +1 -0
- package/dist/lease-ipc/version.d.ts +41 -0
- package/dist/lease-ipc/version.d.ts.map +1 -0
- package/dist/lease-ipc/version.js +43 -0
- package/dist/lease-ipc/version.js.map +1 -0
- package/dist/llm/interfaces.d.ts +23 -0
- package/dist/llm/interfaces.d.ts.map +1 -1
- package/dist/llm/sealed-credential.d.ts +164 -0
- package/dist/llm/sealed-credential.d.ts.map +1 -0
- package/dist/llm/sealed-credential.js +43 -0
- package/dist/llm/sealed-credential.js.map +1 -0
- package/dist/llm/system-of-use.d.ts +383 -0
- package/dist/llm/system-of-use.d.ts.map +1 -0
- package/dist/llm/system-of-use.js +238 -0
- package/dist/llm/system-of-use.js.map +1 -0
- package/dist/llm/system-resolver.d.ts +45 -11
- package/dist/llm/system-resolver.d.ts.map +1 -1
- package/dist/llm/system-resolver.js +14 -7
- package/dist/llm/system-resolver.js.map +1 -1
- package/dist/operations/__tests__/ensures-schema-registry.test.d.ts +17 -0
- package/dist/operations/__tests__/ensures-schema-registry.test.d.ts.map +1 -0
- package/dist/operations/__tests__/ensures-schema-registry.test.js +113 -0
- package/dist/operations/__tests__/ensures-schema-registry.test.js.map +1 -0
- package/dist/operations/ensures-schema-registry.d.ts +172 -0
- package/dist/operations/ensures-schema-registry.d.ts.map +1 -0
- package/dist/operations/ensures-schema-registry.js +226 -0
- package/dist/operations/ensures-schema-registry.js.map +1 -0
- package/dist/operations/llm.d.ts +101 -9
- package/dist/operations/llm.d.ts.map +1 -1
- package/dist/operations/validate.d.ts +1 -12
- package/dist/operations/validate.d.ts.map +1 -1
- package/dist/operations/validate.js +1 -1
- package/dist/playbook.d.ts +60 -0
- package/dist/playbook.d.ts.map +1 -1
- package/dist/session.d.ts +11 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js.map +1 -1
- package/dist/templates/manifest.d.ts +1 -1
- package/dist/tools/agent-tools.d.ts +231 -0
- package/dist/tools/agent-tools.d.ts.map +1 -0
- package/dist/tools/agent-tools.js +25 -0
- package/dist/tools/agent-tools.js.map +1 -0
- package/dist/tools/atomic.d.ts +19 -0
- package/dist/tools/atomic.d.ts.map +1 -1
- package/dist/tools/atomic.js +17 -0
- package/dist/tools/atomic.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/skill-executor.d.ts +7 -0
- package/dist/tools/skill-executor.d.ts.map +1 -1
- package/dist/tools/web-tools.d.ts +217 -0
- package/dist/tools/web-tools.d.ts.map +1 -0
- package/dist/tools/web-tools.js +31 -0
- package/dist/tools/web-tools.js.map +1 -0
- package/package.json +6 -2
- package/src/__tests__/__snapshots__/operations-registry.test.ts.snap +1 -1
- package/src/__tests__/operation-def.test.ts +2 -1
- package/src/__tests__/sealed-credential.test.ts +100 -0
- package/src/__tests__/skill-executor-contract.test.ts +3 -0
- package/src/acceptance-gate.ts +2 -3
- package/src/boundary.ts +1 -20
- package/src/config.ts +104 -0
- package/src/data-accessor.ts +22 -1
- package/src/dispatch/identity.ts +5 -0
- package/src/dispatch/operations-registry.ts +51 -170
- package/src/index.ts +103 -24
- package/src/lease-ipc/__tests__/freeze.test.ts +246 -0
- package/src/lease-ipc/index.ts +63 -0
- package/src/lease-ipc/messages.ts +471 -0
- package/src/lease-ipc/version.ts +46 -0
- package/src/llm/interfaces.ts +23 -0
- package/src/llm/sealed-credential.ts +166 -0
- package/src/llm/system-of-use.ts +503 -0
- package/src/llm/system-resolver.ts +46 -11
- package/src/operations/__tests__/ensures-schema-registry.test.ts +169 -0
- package/src/operations/ensures-schema-registry.ts +260 -0
- package/src/operations/llm.ts +105 -8
- package/src/operations/validate.ts +1 -14
- package/src/playbook.ts +61 -0
- package/src/session.ts +11 -0
- package/src/tools/agent-tools.ts +270 -0
- package/src/tools/atomic.ts +21 -0
- package/src/tools/index.ts +46 -0
- package/src/tools/skill-executor.ts +7 -0
- package/src/tools/web-tools.ts +247 -0
- package/dist/tessera.d.ts +0 -32
- package/dist/tessera.d.ts.map +0 -1
- package/dist/tessera.js +0 -11
- package/dist/tessera.js.map +0 -1
- package/dist/warp-chain.d.ts +0 -129
- package/dist/warp-chain.d.ts.map +0 -1
- package/dist/warp-chain.js +0 -13
- package/dist/warp-chain.js.map +0 -1
- package/src/tessera.ts +0 -35
- package/src/warp-chain.ts +0 -185
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensures-schema Zod registry — the cantbook `ensures.schema` name → Zod
|
|
3
|
+
* validator SSoT (T11762 ST-1 · Lane A).
|
|
4
|
+
*
|
|
5
|
+
* ## Why this exists
|
|
6
|
+
*
|
|
7
|
+
* The playbook runtime (`packages/playbooks/src/runtime.ts`) validates a node's
|
|
8
|
+
* post-merge `context` against a named shape declared as `ensures.schema:` in a
|
|
9
|
+
* `.cantbook`. Historically the runtime HARDCODED two bespoke validators
|
|
10
|
+
* (`validateDecompositionTaskTree` / `validateIvtrEvidenceOutput`) in an
|
|
11
|
+
* `if (schema === 'task_tree') … else if (=== 'evidence')` block, and silently
|
|
12
|
+
* SKIPPED any other schema name. T11762 replaces that hardcode with a
|
|
13
|
+
* registry-driven lookup so:
|
|
14
|
+
*
|
|
15
|
+
* - `ensures.schema` names resolve to a registered Zod validator (AC1).
|
|
16
|
+
* - the runtime no longer hardcodes `'task_tree'` / `'evidence'` (AC2).
|
|
17
|
+
* - an unknown schema name FAILS CLOSED instead of silently passing.
|
|
18
|
+
*
|
|
19
|
+
* This module holds ONLY the Gate-10 (`lint-no-runtime-in-contracts`)-ALLOWED
|
|
20
|
+
* kinds: the Zod schema **const values**, the {@link EnsuresSchemaSpec} **type**,
|
|
21
|
+
* and the registry **data** (a `ReadonlyMap` value). The bodied accessors
|
|
22
|
+
* (`getEnsuresSchema` / `listEnsuresSchemaNames` / `defineEnsuresSchema`) live in
|
|
23
|
+
* `@cleocode/core` (`packages/core/src/dispatch/contracts/ensures-schema.ts`,
|
|
24
|
+
* ST-1b) because a `Map.get` helper is a net-new runtime function that the
|
|
25
|
+
* contracts-purity gate forbids in this leaf package.
|
|
26
|
+
*
|
|
27
|
+
* ## Message parity (behavior preservation)
|
|
28
|
+
*
|
|
29
|
+
* The Zod schemas are crafted so that — for every input the deleted bespoke
|
|
30
|
+
* validators rejected — the FIRST Zod issue message equals the SUFFIX of the
|
|
31
|
+
* original human-readable violation string (the part after the
|
|
32
|
+
* `ensures.schema[<name>] on <nodeId>: ` prefix). ST-2's runtime wrapper
|
|
33
|
+
* re-applies that prefix, so the end-to-end violation strings are unchanged. The
|
|
34
|
+
* ST-1 parity test asserts on these issue messages directly.
|
|
35
|
+
*
|
|
36
|
+
* ## Genkit-forward naming
|
|
37
|
+
*
|
|
38
|
+
* The registry surface is deliberately Genkit-shaped so a future Genkit
|
|
39
|
+
* `ai.defineSchema(name, zodSchema)` bridge (T11768) is a thin adapter over this
|
|
40
|
+
* SSoT, never a competing source.
|
|
41
|
+
*
|
|
42
|
+
* @packageDocumentation
|
|
43
|
+
* @module @cleocode/contracts/operations/ensures-schema-registry
|
|
44
|
+
*
|
|
45
|
+
* @epic T11762 — E-OUTPUT-SCHEMA-ENFORCEMENT
|
|
46
|
+
* @task T11900 — ST-1: ensures-schema Zod registry DATA + schemas
|
|
47
|
+
* @see validateDecompositionTaskTree — the ported bespoke task_tree validator
|
|
48
|
+
* @see validateIvtrEvidenceOutput — the ported bespoke evidence validator
|
|
49
|
+
*/
|
|
50
|
+
import { type ZodType } from 'zod';
|
|
51
|
+
/**
|
|
52
|
+
* One registered `ensures.schema` entry: the Zod validator plus which playbook
|
|
53
|
+
* `context` key holds the value to validate.
|
|
54
|
+
*
|
|
55
|
+
* @public
|
|
56
|
+
*/
|
|
57
|
+
export interface EnsuresSchemaSpec {
|
|
58
|
+
/**
|
|
59
|
+
* The schema NAME used in `ensures.schema:` (e.g. `'task_tree'`, `'evidence'`).
|
|
60
|
+
*/
|
|
61
|
+
readonly name: string;
|
|
62
|
+
/**
|
|
63
|
+
* The playbook `context` key whose value is validated. Defaults to {@link name}
|
|
64
|
+
* (matching today's `context['task_tree']` / `context['evidence']` convention).
|
|
65
|
+
*/
|
|
66
|
+
readonly contextKey: string;
|
|
67
|
+
/**
|
|
68
|
+
* The Zod validator applied to `context[contextKey]`.
|
|
69
|
+
*/
|
|
70
|
+
readonly schema: ZodType;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Zod schema for a single `task_tree` entry.
|
|
74
|
+
*
|
|
75
|
+
* Parity rules ported from `validateDecompositionTaskTree`:
|
|
76
|
+
* - `title` must be a non-empty string (after trim).
|
|
77
|
+
* - `acceptance` must be a non-empty array containing at least one non-empty
|
|
78
|
+
* (after-trim) string.
|
|
79
|
+
* - `id` / `parentId` / `depends` are optional and not hard-validated (the
|
|
80
|
+
* bespoke validator was intentionally lenient on these).
|
|
81
|
+
*
|
|
82
|
+
* @remarks
|
|
83
|
+
* The `title` check is split so the message echoes the bespoke
|
|
84
|
+
* `entry[i].title must be a non-empty string` regardless of whether the field is
|
|
85
|
+
* absent, the wrong type, or whitespace-only.
|
|
86
|
+
*/
|
|
87
|
+
export declare const taskTreeEntrySchema: ZodType;
|
|
88
|
+
/**
|
|
89
|
+
* Zod schema for the `task_tree` context value emitted by a RCASD decomposition
|
|
90
|
+
* node — a non-empty array of {@link taskTreeEntrySchema} entries.
|
|
91
|
+
*
|
|
92
|
+
* Parity: an empty array is rejected with `task_tree is an empty array …`; a
|
|
93
|
+
* non-array is rejected by Zod's base array type error.
|
|
94
|
+
*
|
|
95
|
+
* @public
|
|
96
|
+
*/
|
|
97
|
+
export declare const taskTreeSchema: ZodType;
|
|
98
|
+
/**
|
|
99
|
+
* Zod schema for the `evidence` context value emitted by an IVTR validation
|
|
100
|
+
* node.
|
|
101
|
+
*
|
|
102
|
+
* Parity rules ported from `validateIvtrEvidenceOutput`. Valid evidence is one
|
|
103
|
+
* of:
|
|
104
|
+
* - a non-empty (after-trim) string,
|
|
105
|
+
* - a non-empty array,
|
|
106
|
+
* - an object with at least one key.
|
|
107
|
+
*
|
|
108
|
+
* `null` / `undefined`, the empty string, the empty array, the empty object, and
|
|
109
|
+
* any other primitive (number, boolean) are rejected — matching the bespoke
|
|
110
|
+
* validator exactly.
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* A `z.union` of the three valid shapes would reject the SAME set of inputs, but
|
|
114
|
+
* collapses every rejection to a generic `"Invalid input"` union error. To
|
|
115
|
+
* preserve the bespoke validator's branch-specific messages (`evidence must be
|
|
116
|
+
* present …`, `evidence string must not be empty`, `evidence array must not be
|
|
117
|
+
* empty`, `evidence object must have at least one key (got {})`, `evidence must
|
|
118
|
+
* be a string, array, or object (got <type>)`), this schema replicates the
|
|
119
|
+
* original branch order in a single `superRefine`. The `superRefine` callback is
|
|
120
|
+
* an inline argument — NOT an exported bodied function/arrow — so it does not
|
|
121
|
+
* trip the Gate-10 contracts-purity lint.
|
|
122
|
+
*
|
|
123
|
+
* @public
|
|
124
|
+
*/
|
|
125
|
+
export declare const evidenceSchema: ZodType;
|
|
126
|
+
/**
|
|
127
|
+
* Passthrough validator that accepts ANY value (including `undefined`).
|
|
128
|
+
*
|
|
129
|
+
* Used to register the legacy `ensures.schema` names already declared in the
|
|
130
|
+
* shipped starter `.cantbook` files ({@link LEGACY_PASSTHROUGH_SCHEMA_NAMES}).
|
|
131
|
+
*
|
|
132
|
+
* @remarks
|
|
133
|
+
* Before T11762, the runtime hardcoded ONLY `task_tree` / `evidence` and
|
|
134
|
+
* SILENTLY SKIPPED every other `ensures.schema` name. ST-2 flips that to
|
|
135
|
+
* fail-closed: an UNREGISTERED name is now a contract violation. To avoid
|
|
136
|
+
* regressing the in-repo starter playbooks (`release` / `rcasd` / `ivtr`),
|
|
137
|
+
* which declare a dozen descriptive schema names that were never actually
|
|
138
|
+
* shape-checked, each such name is registered here with this passthrough
|
|
139
|
+
* schema — preserving their historical "always pass" behavior EXACTLY while
|
|
140
|
+
* still failing-closed for genuinely-unknown names (Risk R1). Tightening any of
|
|
141
|
+
* these into a real shape is a follow-up; the name is the SSoT anchor.
|
|
142
|
+
*
|
|
143
|
+
* @public
|
|
144
|
+
*/
|
|
145
|
+
export declare const passthroughSchema: ZodType;
|
|
146
|
+
/**
|
|
147
|
+
* The legacy `ensures.schema` names declared in the shipped starter
|
|
148
|
+
* `.cantbook` files that were SILENTLY SKIPPED pre-T11762. Registered with
|
|
149
|
+
* {@link passthroughSchema} so the fail-closed flip (ST-2) does not regress
|
|
150
|
+
* them. Kept as exported DATA so the parity test can assert the exact set.
|
|
151
|
+
*
|
|
152
|
+
* @public
|
|
153
|
+
*/
|
|
154
|
+
export declare const LEGACY_PASSTHROUGH_SCHEMA_NAMES: readonly string[];
|
|
155
|
+
/**
|
|
156
|
+
* The ensures-schema registry DATA — a `ReadonlyMap` from `ensures.schema` name
|
|
157
|
+
* to its {@link EnsuresSchemaSpec}.
|
|
158
|
+
*
|
|
159
|
+
* This is a VALUE (data), not a bodied function, so it is Gate-10-safe in the
|
|
160
|
+
* `@cleocode/contracts` leaf package. The bodied accessor layer in
|
|
161
|
+
* `@cleocode/core` (ST-1b) reads this map.
|
|
162
|
+
*
|
|
163
|
+
* Two strict entries (`task_tree`, `evidence`) port the deleted bespoke
|
|
164
|
+
* validators; the remaining entries are the legacy starter names
|
|
165
|
+
* ({@link LEGACY_PASSTHROUGH_SCHEMA_NAMES}) registered with
|
|
166
|
+
* {@link passthroughSchema} so the ST-2 fail-closed flip does not regress the
|
|
167
|
+
* shipped playbooks (Risk R1).
|
|
168
|
+
*
|
|
169
|
+
* @public
|
|
170
|
+
*/
|
|
171
|
+
export declare const ENSURES_SCHEMA_REGISTRY: ReadonlyMap<string, EnsuresSchemaSpec>;
|
|
172
|
+
//# sourceMappingURL=ensures-schema-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensures-schema-registry.d.ts","sourceRoot":"","sources":["../../src/operations/ensures-schema-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAID;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAahC,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,OAE0D,CAAC;AAIxF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,cAAc,EAAE,OAkC3B,CAAC;AAIH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAqB,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAgB5D,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAUzE,CAAC"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensures-schema Zod registry — the cantbook `ensures.schema` name → Zod
|
|
3
|
+
* validator SSoT (T11762 ST-1 · Lane A).
|
|
4
|
+
*
|
|
5
|
+
* ## Why this exists
|
|
6
|
+
*
|
|
7
|
+
* The playbook runtime (`packages/playbooks/src/runtime.ts`) validates a node's
|
|
8
|
+
* post-merge `context` against a named shape declared as `ensures.schema:` in a
|
|
9
|
+
* `.cantbook`. Historically the runtime HARDCODED two bespoke validators
|
|
10
|
+
* (`validateDecompositionTaskTree` / `validateIvtrEvidenceOutput`) in an
|
|
11
|
+
* `if (schema === 'task_tree') … else if (=== 'evidence')` block, and silently
|
|
12
|
+
* SKIPPED any other schema name. T11762 replaces that hardcode with a
|
|
13
|
+
* registry-driven lookup so:
|
|
14
|
+
*
|
|
15
|
+
* - `ensures.schema` names resolve to a registered Zod validator (AC1).
|
|
16
|
+
* - the runtime no longer hardcodes `'task_tree'` / `'evidence'` (AC2).
|
|
17
|
+
* - an unknown schema name FAILS CLOSED instead of silently passing.
|
|
18
|
+
*
|
|
19
|
+
* This module holds ONLY the Gate-10 (`lint-no-runtime-in-contracts`)-ALLOWED
|
|
20
|
+
* kinds: the Zod schema **const values**, the {@link EnsuresSchemaSpec} **type**,
|
|
21
|
+
* and the registry **data** (a `ReadonlyMap` value). The bodied accessors
|
|
22
|
+
* (`getEnsuresSchema` / `listEnsuresSchemaNames` / `defineEnsuresSchema`) live in
|
|
23
|
+
* `@cleocode/core` (`packages/core/src/dispatch/contracts/ensures-schema.ts`,
|
|
24
|
+
* ST-1b) because a `Map.get` helper is a net-new runtime function that the
|
|
25
|
+
* contracts-purity gate forbids in this leaf package.
|
|
26
|
+
*
|
|
27
|
+
* ## Message parity (behavior preservation)
|
|
28
|
+
*
|
|
29
|
+
* The Zod schemas are crafted so that — for every input the deleted bespoke
|
|
30
|
+
* validators rejected — the FIRST Zod issue message equals the SUFFIX of the
|
|
31
|
+
* original human-readable violation string (the part after the
|
|
32
|
+
* `ensures.schema[<name>] on <nodeId>: ` prefix). ST-2's runtime wrapper
|
|
33
|
+
* re-applies that prefix, so the end-to-end violation strings are unchanged. The
|
|
34
|
+
* ST-1 parity test asserts on these issue messages directly.
|
|
35
|
+
*
|
|
36
|
+
* ## Genkit-forward naming
|
|
37
|
+
*
|
|
38
|
+
* The registry surface is deliberately Genkit-shaped so a future Genkit
|
|
39
|
+
* `ai.defineSchema(name, zodSchema)` bridge (T11768) is a thin adapter over this
|
|
40
|
+
* SSoT, never a competing source.
|
|
41
|
+
*
|
|
42
|
+
* @packageDocumentation
|
|
43
|
+
* @module @cleocode/contracts/operations/ensures-schema-registry
|
|
44
|
+
*
|
|
45
|
+
* @epic T11762 — E-OUTPUT-SCHEMA-ENFORCEMENT
|
|
46
|
+
* @task T11900 — ST-1: ensures-schema Zod registry DATA + schemas
|
|
47
|
+
* @see validateDecompositionTaskTree — the ported bespoke task_tree validator
|
|
48
|
+
* @see validateIvtrEvidenceOutput — the ported bespoke evidence validator
|
|
49
|
+
*/
|
|
50
|
+
import { z } from 'zod';
|
|
51
|
+
// ─── task_tree — ports validateDecompositionTaskTree (runtime.ts:794-855) ──────
|
|
52
|
+
/**
|
|
53
|
+
* Zod schema for a single `task_tree` entry.
|
|
54
|
+
*
|
|
55
|
+
* Parity rules ported from `validateDecompositionTaskTree`:
|
|
56
|
+
* - `title` must be a non-empty string (after trim).
|
|
57
|
+
* - `acceptance` must be a non-empty array containing at least one non-empty
|
|
58
|
+
* (after-trim) string.
|
|
59
|
+
* - `id` / `parentId` / `depends` are optional and not hard-validated (the
|
|
60
|
+
* bespoke validator was intentionally lenient on these).
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* The `title` check is split so the message echoes the bespoke
|
|
64
|
+
* `entry[i].title must be a non-empty string` regardless of whether the field is
|
|
65
|
+
* absent, the wrong type, or whitespace-only.
|
|
66
|
+
*/
|
|
67
|
+
export const taskTreeEntrySchema = z.object({
|
|
68
|
+
title: z
|
|
69
|
+
.string({ message: 'title must be a non-empty string' })
|
|
70
|
+
.refine((s) => s.trim().length > 0, { message: 'title must be a non-empty string' }),
|
|
71
|
+
acceptance: z
|
|
72
|
+
.array(z.unknown(), { message: 'must have a non-empty acceptance array' })
|
|
73
|
+
.min(1, { message: 'must have a non-empty acceptance array' })
|
|
74
|
+
.refine((arr) => arr.some((s) => typeof s === 'string' && s.trim().length > 0), {
|
|
75
|
+
message: 'acceptance array contains no non-empty strings',
|
|
76
|
+
}),
|
|
77
|
+
id: z.string().optional(),
|
|
78
|
+
parentId: z.string().optional(),
|
|
79
|
+
depends: z.array(z.string()).optional(),
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Zod schema for the `task_tree` context value emitted by a RCASD decomposition
|
|
83
|
+
* node — a non-empty array of {@link taskTreeEntrySchema} entries.
|
|
84
|
+
*
|
|
85
|
+
* Parity: an empty array is rejected with `task_tree is an empty array …`; a
|
|
86
|
+
* non-array is rejected by Zod's base array type error.
|
|
87
|
+
*
|
|
88
|
+
* @public
|
|
89
|
+
*/
|
|
90
|
+
export const taskTreeSchema = z
|
|
91
|
+
.array(taskTreeEntrySchema, { message: 'task_tree must be a non-empty array' })
|
|
92
|
+
.min(1, { message: 'task_tree is an empty array — decomposition produced no tasks' });
|
|
93
|
+
// ─── evidence — ports validateIvtrEvidenceOutput (runtime.ts:873-902) ──────────
|
|
94
|
+
/**
|
|
95
|
+
* Zod schema for the `evidence` context value emitted by an IVTR validation
|
|
96
|
+
* node.
|
|
97
|
+
*
|
|
98
|
+
* Parity rules ported from `validateIvtrEvidenceOutput`. Valid evidence is one
|
|
99
|
+
* of:
|
|
100
|
+
* - a non-empty (after-trim) string,
|
|
101
|
+
* - a non-empty array,
|
|
102
|
+
* - an object with at least one key.
|
|
103
|
+
*
|
|
104
|
+
* `null` / `undefined`, the empty string, the empty array, the empty object, and
|
|
105
|
+
* any other primitive (number, boolean) are rejected — matching the bespoke
|
|
106
|
+
* validator exactly.
|
|
107
|
+
*
|
|
108
|
+
* @remarks
|
|
109
|
+
* A `z.union` of the three valid shapes would reject the SAME set of inputs, but
|
|
110
|
+
* collapses every rejection to a generic `"Invalid input"` union error. To
|
|
111
|
+
* preserve the bespoke validator's branch-specific messages (`evidence must be
|
|
112
|
+
* present …`, `evidence string must not be empty`, `evidence array must not be
|
|
113
|
+
* empty`, `evidence object must have at least one key (got {})`, `evidence must
|
|
114
|
+
* be a string, array, or object (got <type>)`), this schema replicates the
|
|
115
|
+
* original branch order in a single `superRefine`. The `superRefine` callback is
|
|
116
|
+
* an inline argument — NOT an exported bodied function/arrow — so it does not
|
|
117
|
+
* trip the Gate-10 contracts-purity lint.
|
|
118
|
+
*
|
|
119
|
+
* @public
|
|
120
|
+
*/
|
|
121
|
+
export const evidenceSchema = z.unknown().superRefine((value, ctx) => {
|
|
122
|
+
if (value === null || value === undefined) {
|
|
123
|
+
ctx.addIssue({
|
|
124
|
+
code: 'custom',
|
|
125
|
+
message: 'evidence must be present (non-null, non-undefined)',
|
|
126
|
+
});
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (typeof value === 'string') {
|
|
130
|
+
if (value.trim().length === 0) {
|
|
131
|
+
ctx.addIssue({ code: 'custom', message: 'evidence string must not be empty' });
|
|
132
|
+
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (Array.isArray(value)) {
|
|
136
|
+
if (value.length === 0) {
|
|
137
|
+
ctx.addIssue({ code: 'custom', message: 'evidence array must not be empty' });
|
|
138
|
+
}
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (typeof value === 'object') {
|
|
142
|
+
if (Object.keys(value).length === 0) {
|
|
143
|
+
ctx.addIssue({
|
|
144
|
+
code: 'custom',
|
|
145
|
+
message: 'evidence object must have at least one key (got {})',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Numbers, booleans, symbols, bigints, functions — not valid evidence shapes.
|
|
151
|
+
ctx.addIssue({
|
|
152
|
+
code: 'custom',
|
|
153
|
+
message: `evidence must be a string, array, or object (got ${typeof value})`,
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
// ─── passthrough — legacy starter `ensures.schema` names (R1 fail-closed) ──────
|
|
157
|
+
/**
|
|
158
|
+
* Passthrough validator that accepts ANY value (including `undefined`).
|
|
159
|
+
*
|
|
160
|
+
* Used to register the legacy `ensures.schema` names already declared in the
|
|
161
|
+
* shipped starter `.cantbook` files ({@link LEGACY_PASSTHROUGH_SCHEMA_NAMES}).
|
|
162
|
+
*
|
|
163
|
+
* @remarks
|
|
164
|
+
* Before T11762, the runtime hardcoded ONLY `task_tree` / `evidence` and
|
|
165
|
+
* SILENTLY SKIPPED every other `ensures.schema` name. ST-2 flips that to
|
|
166
|
+
* fail-closed: an UNREGISTERED name is now a contract violation. To avoid
|
|
167
|
+
* regressing the in-repo starter playbooks (`release` / `rcasd` / `ivtr`),
|
|
168
|
+
* which declare a dozen descriptive schema names that were never actually
|
|
169
|
+
* shape-checked, each such name is registered here with this passthrough
|
|
170
|
+
* schema — preserving their historical "always pass" behavior EXACTLY while
|
|
171
|
+
* still failing-closed for genuinely-unknown names (Risk R1). Tightening any of
|
|
172
|
+
* these into a real shape is a follow-up; the name is the SSoT anchor.
|
|
173
|
+
*
|
|
174
|
+
* @public
|
|
175
|
+
*/
|
|
176
|
+
export const passthroughSchema = z.unknown();
|
|
177
|
+
/**
|
|
178
|
+
* The legacy `ensures.schema` names declared in the shipped starter
|
|
179
|
+
* `.cantbook` files that were SILENTLY SKIPPED pre-T11762. Registered with
|
|
180
|
+
* {@link passthroughSchema} so the fail-closed flip (ST-2) does not regress
|
|
181
|
+
* them. Kept as exported DATA so the parity test can assert the exact set.
|
|
182
|
+
*
|
|
183
|
+
* @public
|
|
184
|
+
*/
|
|
185
|
+
export const LEGACY_PASSTHROUGH_SCHEMA_NAMES = [
|
|
186
|
+
// release.cantbook
|
|
187
|
+
'version_bump_report',
|
|
188
|
+
'changelog_entry',
|
|
189
|
+
'publish_report',
|
|
190
|
+
// rcasd.cantbook
|
|
191
|
+
'research_summary',
|
|
192
|
+
'consensus_decision',
|
|
193
|
+
'architecture_plan',
|
|
194
|
+
'specification_document',
|
|
195
|
+
// ivtr.cantbook
|
|
196
|
+
'implementation_diff',
|
|
197
|
+
'validation_report',
|
|
198
|
+
'audit_report',
|
|
199
|
+
'test_report',
|
|
200
|
+
'release_confirmation',
|
|
201
|
+
];
|
|
202
|
+
/**
|
|
203
|
+
* The ensures-schema registry DATA — a `ReadonlyMap` from `ensures.schema` name
|
|
204
|
+
* to its {@link EnsuresSchemaSpec}.
|
|
205
|
+
*
|
|
206
|
+
* This is a VALUE (data), not a bodied function, so it is Gate-10-safe in the
|
|
207
|
+
* `@cleocode/contracts` leaf package. The bodied accessor layer in
|
|
208
|
+
* `@cleocode/core` (ST-1b) reads this map.
|
|
209
|
+
*
|
|
210
|
+
* Two strict entries (`task_tree`, `evidence`) port the deleted bespoke
|
|
211
|
+
* validators; the remaining entries are the legacy starter names
|
|
212
|
+
* ({@link LEGACY_PASSTHROUGH_SCHEMA_NAMES}) registered with
|
|
213
|
+
* {@link passthroughSchema} so the ST-2 fail-closed flip does not regress the
|
|
214
|
+
* shipped playbooks (Risk R1).
|
|
215
|
+
*
|
|
216
|
+
* @public
|
|
217
|
+
*/
|
|
218
|
+
export const ENSURES_SCHEMA_REGISTRY = new Map([
|
|
219
|
+
['task_tree', { name: 'task_tree', contextKey: 'task_tree', schema: taskTreeSchema }],
|
|
220
|
+
['evidence', { name: 'evidence', contextKey: 'evidence', schema: evidenceSchema }],
|
|
221
|
+
...LEGACY_PASSTHROUGH_SCHEMA_NAMES.map((name) => [
|
|
222
|
+
name,
|
|
223
|
+
{ name, contextKey: name, schema: passthroughSchema },
|
|
224
|
+
]),
|
|
225
|
+
]);
|
|
226
|
+
//# sourceMappingURL=ensures-schema-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensures-schema-registry.js","sourceRoot":"","sources":["../../src/operations/ensures-schema-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/operations/llm.d.ts
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* @epic T1386
|
|
10
10
|
*/
|
|
11
11
|
import type { BuiltinProviderId, ProviderId } from '../llm/provider-id.js';
|
|
12
|
+
import type { SealedCredential } from '../llm/sealed-credential.js';
|
|
13
|
+
import type { SystemOfUseKind, SystemOfUsePickerEntry } from '../llm/system-of-use.js';
|
|
12
14
|
/**
|
|
13
15
|
* @deprecated since Phase 4 (ADR-072). Use {@link ProviderId} from
|
|
14
16
|
* `@cleocode/contracts/llm/provider-id.js` for new code. This alias remains
|
|
@@ -167,22 +169,52 @@ export interface CredentialResultWire {
|
|
|
167
169
|
/** Scheme used to present the credential to the provider. */
|
|
168
170
|
authType: AuthTypeWire;
|
|
169
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Non-secret credential metadata — the E10 (T11753) redacted view of a resolved
|
|
174
|
+
* credential that {@link ResolvedLLM} carries inline.
|
|
175
|
+
*
|
|
176
|
+
* This is {@link CredentialResultWire} with the secret-bearing `apiKey` field
|
|
177
|
+
* **structurally removed**. The resolver returns this metadata so consumers can
|
|
178
|
+
* branch on `authType` / `source` / `provider` (e.g. choose OAuth-vs-api_key
|
|
179
|
+
* header style, surface `cleo llm whoami` diagnostics) WITHOUT any plaintext
|
|
180
|
+
* crossing the resolver boundary. The plaintext is reachable ONLY via
|
|
181
|
+
* {@link ResolvedLLM.sealedCredential}'s `fetch()` at the wire.
|
|
182
|
+
*
|
|
183
|
+
* @task T11753
|
|
184
|
+
* @epic T11746
|
|
185
|
+
*/
|
|
186
|
+
export interface CredentialMetadataWire {
|
|
187
|
+
/** Provider transport this credential is for. */
|
|
188
|
+
provider: ModelTransport;
|
|
189
|
+
/**
|
|
190
|
+
* Which tier produced this credential. `undefined` only when no credential
|
|
191
|
+
* was resolved (in which case both this and {@link ResolvedLLM.sealedCredential}
|
|
192
|
+
* are `null`).
|
|
193
|
+
*/
|
|
194
|
+
source: CredentialSourceWire | undefined;
|
|
195
|
+
/** Scheme used to present the credential to the provider. */
|
|
196
|
+
authType: AuthTypeWire;
|
|
197
|
+
}
|
|
170
198
|
/**
|
|
171
199
|
* Which configuration tier produced a {@link ResolvedLLM}.
|
|
172
200
|
*
|
|
173
201
|
* Resolution chain order:
|
|
174
|
-
* 1. `role`
|
|
175
|
-
* 2. `profile`
|
|
176
|
-
* 3. `
|
|
177
|
-
* 4. `default
|
|
178
|
-
* 5. `
|
|
202
|
+
* 1. `role` — `config.llm.roles[role]` (explicit override)
|
|
203
|
+
* 2. `profile` — `config.llm.profiles[roles[role].profile]`
|
|
204
|
+
* 3. `system` — `config.llm.systems[systemKey]` (granular override)
|
|
205
|
+
* 4. `default` — `config.llm.default` (canonical default)
|
|
206
|
+
* 5. `default-profile` — `config.llm.profiles[config.llm.defaultProfile]`
|
|
207
|
+
* 6. `registered-default` — `registerSystemOfUse()` default (below user config)
|
|
208
|
+
* 7. `implicit-fallback` — hard-coded fallback inside the resolver
|
|
179
209
|
*
|
|
180
210
|
* Useful for `cleo llm whoami` diagnostics.
|
|
181
211
|
*
|
|
182
212
|
* @task T9306
|
|
183
213
|
* @task T11617 (`profile`, `default-profile`)
|
|
214
|
+
* @task T11748 (`system`)
|
|
215
|
+
* @task T11751 (`registered-default`)
|
|
184
216
|
*/
|
|
185
|
-
export type ResolutionSource = 'role' | 'profile' | 'default' | 'default-profile' | 'implicit-fallback';
|
|
217
|
+
export type ResolutionSource = 'role' | 'profile' | 'system' | 'default' | 'default-profile' | 'registered-default' | 'implicit-fallback';
|
|
186
218
|
/**
|
|
187
219
|
* Result envelope returned by `resolveLLMForRole(role)`.
|
|
188
220
|
*
|
|
@@ -217,10 +249,33 @@ export interface ResolvedLLM {
|
|
|
217
249
|
*/
|
|
218
250
|
client: unknown;
|
|
219
251
|
/**
|
|
220
|
-
* Resolved credential
|
|
221
|
-
*
|
|
252
|
+
* Resolved credential **metadata** — provider / source / authType only.
|
|
253
|
+
* `null` when no tier produced a credential (in which case
|
|
254
|
+
* {@link sealedCredential} is also `null`). Callers MUST handle this case.
|
|
255
|
+
*
|
|
256
|
+
* E10 (T11753): the secret-bearing `apiKey` field has been **removed** — this
|
|
257
|
+
* is now a {@link CredentialMetadataWire}, NOT the old
|
|
258
|
+
* {@link CredentialResultWire}. The plaintext token never rides on this
|
|
259
|
+
* envelope; obtain it ONLY via {@link sealedCredential}'s `fetch()` at the
|
|
260
|
+
* wire. Branch on `authType` / `source` here for header-style / diagnostics.
|
|
222
261
|
*/
|
|
223
|
-
credential:
|
|
262
|
+
credential: CredentialMetadataWire | null;
|
|
263
|
+
/**
|
|
264
|
+
* Sealed credential handle — the E10 on-demand-decrypt credential surface
|
|
265
|
+
* (T11752 · T11753 · T11746). `null` when no tier produced a credential
|
|
266
|
+
* (paired with `credential === null`); non-null exactly when a usable
|
|
267
|
+
* credential was resolved.
|
|
268
|
+
*
|
|
269
|
+
* The plaintext token is materialized ONLY by calling
|
|
270
|
+
* {@link SealedCredential.fetch} at the wire (`transportForProvider` /
|
|
271
|
+
* `session-factory.ts`) or daemon worker-injection — never returned up this
|
|
272
|
+
* envelope. This is the canonical credential surface; the old inline
|
|
273
|
+
* `credential.apiKey` plaintext is gone.
|
|
274
|
+
*
|
|
275
|
+
* @task T11752
|
|
276
|
+
* @task T11753
|
|
277
|
+
*/
|
|
278
|
+
sealedCredential: SealedCredential | null;
|
|
224
279
|
/** Which config path produced this resolution. */
|
|
225
280
|
source: ResolutionSource;
|
|
226
281
|
/** When `roles[role].credentialLabel` was set, the label that was used. */
|
|
@@ -238,6 +293,19 @@ export interface ResolveLLMForRoleOptions {
|
|
|
238
293
|
* Defaults to `process.cwd()`.
|
|
239
294
|
*/
|
|
240
295
|
projectRoot?: string;
|
|
296
|
+
/**
|
|
297
|
+
* Optional encoded system-of-use key (e.g. `'sentient'`, `'tool:web-search'`)
|
|
298
|
+
* that activates the `llm.systems[key]` override tier in the resolution chain
|
|
299
|
+
* (E9 · T11748).
|
|
300
|
+
*
|
|
301
|
+
* When set, `llm.systems[systemKey]` is consulted AFTER any explicit
|
|
302
|
+
* role/argument override but BEFORE the global `llm.defaultProfile`. Threaded
|
|
303
|
+
* down by `resolveLLMForSystem`; direct role callers leave it unset and the
|
|
304
|
+
* system tier is skipped — preserving role-resolution behaviour unchanged.
|
|
305
|
+
*
|
|
306
|
+
* @task T11748
|
|
307
|
+
*/
|
|
308
|
+
systemKey?: string;
|
|
241
309
|
}
|
|
242
310
|
/**
|
|
243
311
|
* Storage-level authentication scheme as persisted in the credentials store.
|
|
@@ -498,6 +566,30 @@ export interface LlmWhoamiResult {
|
|
|
498
566
|
/** One entry per role resolved (filtered by `params.role` when set). */
|
|
499
567
|
entries: LlmWhoamiEntry[];
|
|
500
568
|
}
|
|
569
|
+
/**
|
|
570
|
+
* Parameters for `llm.systems-of-use` (query — the profile-picker enumeration).
|
|
571
|
+
*
|
|
572
|
+
* Reserved for future filters (e.g. by {@link SystemOfUsePickerEntry.kind}).
|
|
573
|
+
*
|
|
574
|
+
* @task T11751
|
|
575
|
+
*/
|
|
576
|
+
export interface LlmSystemsOfUseParams {
|
|
577
|
+
/** Optional kind filter — when set, only that axis is enumerated. */
|
|
578
|
+
kind?: SystemOfUseKind;
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Result envelope for `llm.systems-of-use` (query · T11751 · AC2).
|
|
582
|
+
*
|
|
583
|
+
* The merged picker surface: every builtin {@link SystemOfUse} plus every
|
|
584
|
+
* runtime-registered system (`registerSystemOfUse`), so the TUI / Studio
|
|
585
|
+
* profile picker can enumerate them from ONE op.
|
|
586
|
+
*
|
|
587
|
+
* @task T11751
|
|
588
|
+
*/
|
|
589
|
+
export interface LlmSystemsOfUseResult {
|
|
590
|
+
/** One entry per builtin or registered system-of-use. */
|
|
591
|
+
entries: SystemOfUsePickerEntry[];
|
|
592
|
+
}
|
|
501
593
|
/**
|
|
502
594
|
* A single entry in the auxiliary fallback chain as surfaced by
|
|
503
595
|
* `cleo llm auxiliary-status`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/operations/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/operations/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Validate / Check Domain Operations
|
|
3
3
|
*
|
|
4
4
|
* T982 extension: Added new types for gate, archive, coherence, compliance-sync,
|
|
5
|
-
*
|
|
5
|
+
* grade, canon, workflow-compliance, verify-explain, and all protocol subtypes.
|
|
6
6
|
*/
|
|
7
|
-
import type { WarpChain } from '../warp-chain.js';
|
|
8
7
|
export type ValidationSeverity = 'error' | 'warning' | 'info';
|
|
9
8
|
export interface ValidationViolation {
|
|
10
9
|
rule: string;
|
|
@@ -233,15 +232,6 @@ export interface ValidateArchiveStatsParams {
|
|
|
233
232
|
until?: string;
|
|
234
233
|
}
|
|
235
234
|
export type ValidateArchiveStatsResult = Record<string, unknown>;
|
|
236
|
-
export interface ValidateChainParams {
|
|
237
|
-
chain: WarpChain;
|
|
238
|
-
}
|
|
239
|
-
export interface ValidateChainResult {
|
|
240
|
-
wellFormed: boolean;
|
|
241
|
-
gateSatisfiable: boolean;
|
|
242
|
-
errors: string[];
|
|
243
|
-
warnings: string[];
|
|
244
|
-
}
|
|
245
235
|
export interface ValidateGradeParams {
|
|
246
236
|
sessionId: string;
|
|
247
237
|
}
|
|
@@ -362,7 +352,6 @@ export type CheckOps = {
|
|
|
362
352
|
readonly 'gate.set': readonly [ValidateGateParams, ValidateGateResult];
|
|
363
353
|
readonly 'verify.explain': readonly [ValidateVerifyExplainParams, ValidateVerifyExplainResult];
|
|
364
354
|
readonly 'archive.stats': readonly [ValidateArchiveStatsParams, ValidateArchiveStatsResult];
|
|
365
|
-
readonly 'chain.validate': readonly [ValidateChainParams, ValidateChainResult];
|
|
366
355
|
readonly grade: readonly [ValidateGradeParams, ValidateGradeResult];
|
|
367
356
|
readonly 'grade.list': readonly [ValidateGradeListParams, ValidateGradeListResult];
|
|
368
357
|
readonly canon: readonly [ValidateCanonParams, ValidateCanonResult];
|