@consciousclouds/admin-sdk 0.1.1 → 0.1.3
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/generated/contract-types.d.ts +648 -0
- package/dist/generated/contract-types.d.ts.map +1 -0
- package/dist/generated/contract-types.js +12 -0
- package/dist/generated/contract-types.js.map +1 -0
- package/dist/index.d.ts +20 -221
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The body of GET /personality-envelope/{productId}/{personalityId} — a Personality's EFFECTIVE AUTHORITY, re-derived live and uncached at read time: the cutover state and the owning product's enrollment grants are read fresh on every call, while the personality DECLARATION baseline is the one loaded at boot and is not re-read until the service restarts. It is a snapshot of a computation, never stored state. It carries only the Personality/consent HALF of the authority envelope: the re-proven initiating actor and the immutable Operation bounds are deliberately elsewhere. A lawful refusal (post-cutover, or no file authority) is DATA, not an error — it arrives as a 200 carrying the reason, with every dimension empty.
|
|
3
|
+
*/
|
|
4
|
+
export interface AuthorityEnvelope {
|
|
5
|
+
/** The product that OWNS this Personality — echoed back from the request path, and the product whose enrollment grants were intersected in. A personality id alone is ambiguous across products, so authority is only ever answered for the owning product named here. */
|
|
6
|
+
product_id: string;
|
|
7
|
+
/** The Personality whose authority was computed — echoed back from the request path. */
|
|
8
|
+
personality_id: string;
|
|
9
|
+
/** The moment this computation ran (UTC). A COMPUTATION timestamp, not a state as-of: nothing in this body was stored at this time, and re-reading a second later may legitimately return different dimensions if a grant was revoked in between. */
|
|
10
|
+
evaluated_at: string;
|
|
11
|
+
/** How this answer was produced. The COMPUTATION is uncached — an operator is reading what would be decided now, not what was decided once. Note the boundary precisely: the cutover state and enrollment grants are re-read per call; the personality declaration baseline is boot-loaded and changes only on restart. */
|
|
12
|
+
evaluation: "live_uncached_at_read";
|
|
13
|
+
/** Which part of the authority envelope this body actually answers. Always the Personality/consent half — never the complete authority a commissioned Operation runs under. Stated explicitly so a reader does not mistake this for the whole. */
|
|
14
|
+
scope: "personality_consent_half";
|
|
15
|
+
/** The authority terms this read deliberately does NOT include, named so their absence is visible rather than assumed. To see the whole authority of a commissioned Operation, an operator must also consult the re-proven initiating actor and the Operation's own immutable bounds (breadth, authored cap, time ceiling). */
|
|
16
|
+
excluded_terms: ("reproven_initiating_actor_authority" | "immutable_operation_bounds")[];
|
|
17
|
+
/** Which authority actually served this computation. Pre-cutover, the authored file declaration IS runtime authority. An EMPTY string means no authority was computed at all — read `refusal` for why; the dimensions below will all be empty and must not be read as 'this Personality may do nothing by design'. */
|
|
18
|
+
mode: "pre_cutover_file_authority" | "";
|
|
19
|
+
/** Why no authority could be computed, or EMPTY when the computation succeeded. A refusal is a lawful answer to the operator's question, not a failure: the Personality's record has cut over to a mode this wave will not serve, or the Personality has no file declaration to draw authority from at all. Both leave every dimension empty. */
|
|
20
|
+
refusal: "" | "envelope_post_cutover_unsupported" | "envelope_no_file_authority";
|
|
21
|
+
/** The seven authority dimensions, kept separate rather than flattened because they carry DIFFERENT guarantees — see `intersected_with_enrollment`. Every dimension is always present as a list; an empty list means the Personality holds nothing in that dimension (or that the whole computation refused). */
|
|
22
|
+
dimensions: {
|
|
23
|
+
/** The entitlements this Personality may exercise. This is the Personality's own authority alone — a DIFFERENT namespace from enrollment capability grants, and never narrowed by them. */
|
|
24
|
+
capabilities: string[];
|
|
25
|
+
/** The tools this Personality may invoke. The Personality's authority alone — no enrollment grant array exists for tools, so nothing narrows it. */
|
|
26
|
+
allowed_tools: string[];
|
|
27
|
+
/** The canvas types this Personality may emit. The Personality's authority alone. */
|
|
28
|
+
allowed_canvases: string[];
|
|
29
|
+
/** The adapters this Personality may read context from. The Personality's authority alone. */
|
|
30
|
+
allowed_adapters: string[];
|
|
31
|
+
/** The knowledge namespaces this Personality may actually query — its declared namespaces INTERSECTED with the owning product's live enrollment grants. An entry the Personality declares but the product is not granted will be missing here, and revoking that grant removes it from the very next read. */
|
|
32
|
+
knowledge_namespaces: string[];
|
|
33
|
+
/** The graph scopes this Personality may actually read — declared scopes INTERSECTED with the owning product's live enrollment grants. */
|
|
34
|
+
graph_scopes: string[];
|
|
35
|
+
/** The memory scopes this Personality may actually reach — declared scopes INTERSECTED with the owning product's live enrollment grants. */
|
|
36
|
+
memory_scopes: string[];
|
|
37
|
+
};
|
|
38
|
+
/** Which of the seven dimensions above were narrowed by the owning product's enrollment grants, and which were not. The dimensions named here answer 'the Personality declares this AND the product is granted it'; every dimension NOT named here is the Personality's effective authority standing alone. They are different guarantees, so an operator must never read the seven as one flat list. */
|
|
39
|
+
intersected_with_enrollment: ("knowledge_namespaces" | "graph_scopes" | "memory_scopes")[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The response body of GET /admin/enrollments/{productId} on the conductor — ONE enrolled product's full manifest surface, rendered safe-by-construction from the boot-loaded enrollment Record. Federation trust is public by design (issuer name, JWKS location, accepted audiences — never a key); endpoints appear as KEYS and a reachable flag, never URLs; storage bindings appear as declared+lifecycle only, never the Doppler secret name / index / bucket / database. An unknown product is a 404 (`{"error":"no such enrollment"}`), not this shape. Read-only: nothing here is computed or stored, every field is already on the loaded Record. NOTE ON CLOSED VOCABULARIES: the Go loader closes NO vocabulary on the record itself — every closed-set rule (operative role, sandbox_requirement, escalation, observe family, storage-binding status) lives in a boot validator that SKIPS every record whose status is not `active`, and this endpoint renders non-active records verbatim. Those fields are therefore described in prose, never locked as an enum, exactly like `status` and `s2s_trust_mode`.
|
|
43
|
+
*/
|
|
44
|
+
export interface EnrollmentDetail {
|
|
45
|
+
/** The enrolled product this detail page is about — the platform's durable name for the product AND for its project (an enrolled product IS a project under the Project Isolation Doctrine). The path parameter must match this exactly; there is no fuzzy lookup. */
|
|
46
|
+
product_id: string;
|
|
47
|
+
/** The enrollment gate as recorded, verbatim. Only `active` is trusted anywhere: a `suspended` or `revoked` product still renders here (so an operator can see what was revoked) but resolves no capability, grants no personality, and is skipped by every boot-time validation. Rendered as loaded — the conductor never rewrites it. Not enumerated: the Go loader defines no closed constant set and only ever compares this to "active". */
|
|
48
|
+
status: string;
|
|
49
|
+
/** How the factory's OUTBOUND capability projection into this product is proven — the re-proof scheme the product expects, never the principal and never the HMAC secret behind it. The conductor only projects `signed-envelope`, and refuses at boot to run with an ACTIVE product declaring anything else; a non-active product may still show a mode it declared. */
|
|
50
|
+
s2s_trust_mode: string;
|
|
51
|
+
/** The identity issuer this product signs its own users with — the federation declaration that lets Universal trust a forwarded actor without ever minting one (products own people). Absent when the product has not declared federated identity. */
|
|
52
|
+
issuer?: string;
|
|
53
|
+
/** Where this product publishes the public keys that verify its actor tokens. Public by design — it is a location, never a key. Absent when the product has not declared federated identity. */
|
|
54
|
+
jwks_uri?: string;
|
|
55
|
+
/** The token audiences accepted for this product's actors — an incoming token must name one of these to be honoured. Empty means no audience was declared, which fails actor verification closed. */
|
|
56
|
+
audiences: string[];
|
|
57
|
+
/** The personality ids this product is allowed to resolve at the Conductor. A personality is resolved locally from its declaration, so this grant alone decides whether that declaration may register — there is nothing to route. This is also the one-owner-each pin: a personality id granted here belongs to this product. */
|
|
58
|
+
personality_grants: string[];
|
|
59
|
+
/** Every capability this product is granted, each shown with whether it is actually reachable by configuration. A grant with no route, or a route to a missing endpoint, is a grant that cannot be invoked — this is where that shows up. */
|
|
60
|
+
capability_grants: Array<{
|
|
61
|
+
/** The granted capability's id (<primitive>.<verb>) — what a personality names to invoke it. */
|
|
62
|
+
capability_id: string;
|
|
63
|
+
/** The service_endpoints KEY this capability is routed to — the name of the product backend that hosts it, never the URL. Absent when the capability is granted but unrouted, which means it can never be invoked. */
|
|
64
|
+
route_key?: string;
|
|
65
|
+
/** Whether the routed endpoint key is declared with a non-empty base URL — 'reachable by configuration', not a live health check. False means the grant is dead: either unrouted, or routed to an endpoint this record does not declare. */
|
|
66
|
+
endpoint_present: boolean;
|
|
67
|
+
}>;
|
|
68
|
+
/** The document/vector namespaces this product may read. A personality's own knowledge_namespaces may only narrow this set, so an empty grant means no personality of this product can search anything — breadth is granted, never assumed. */
|
|
69
|
+
knowledge_namespace_grants: string[];
|
|
70
|
+
/** The OTHER projects this product's actors may address for data access — the operator-breadth grant that makes a cross-product read (Chief reading eno) authorized at all. Empty is the default and means self-access only. Ownership never moves: the data stays owned by the addressed project. */
|
|
71
|
+
cross_project_grants: string[];
|
|
72
|
+
/** The names of the product backends this record declares, sorted. Keys only — the base URLs behind them are private and never serialized. This is the set a capability route may point at. */
|
|
73
|
+
service_endpoint_keys: string[];
|
|
74
|
+
/** This project's storage manifest as the six binding slots across the four data planes (structured = graph + memory + learning; plus vector, object, analytics). Always the full grid — an undeclared plane is an explicit declared:false row, so a missing plane is visible rather than silently absent. Presence and lifecycle only; the Doppler secret name, index, bucket and database behind each binding are never serialized. */
|
|
75
|
+
storage_bindings: {
|
|
76
|
+
/** This project's own graph store (Neon) — where its Reference and Overlay rings physically live. */
|
|
77
|
+
graph: {
|
|
78
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
79
|
+
declared: boolean;
|
|
80
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
81
|
+
status?: string;
|
|
82
|
+
};
|
|
83
|
+
/** This project's own memory store (Neon) — where its Memory Tier 0 / Tier 1 records physically live. */
|
|
84
|
+
memory: {
|
|
85
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
86
|
+
declared: boolean;
|
|
87
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
88
|
+
status?: string;
|
|
89
|
+
};
|
|
90
|
+
/** This project's own learning store (Neon) — where its edge inference and epoch state physically live. */
|
|
91
|
+
learning: {
|
|
92
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
93
|
+
declared: boolean;
|
|
94
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
95
|
+
status?: string;
|
|
96
|
+
};
|
|
97
|
+
/** This project's own vector collection — the retrieval plane; per-source namespaces nest inside it. */
|
|
98
|
+
vector: {
|
|
99
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
100
|
+
declared: boolean;
|
|
101
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
102
|
+
status?: string;
|
|
103
|
+
};
|
|
104
|
+
/** This project's own object-storage partition — the bucket/prefix its Artifact bytes live in. */
|
|
105
|
+
object: {
|
|
106
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
107
|
+
declared: boolean;
|
|
108
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
109
|
+
status?: string;
|
|
110
|
+
};
|
|
111
|
+
/** This project's own analytics database — the fourth plane, where its traces, usage and cost land. */
|
|
112
|
+
analytics: {
|
|
113
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
114
|
+
declared: boolean;
|
|
115
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
116
|
+
status?: string;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
/** The org/team that owns this product — the party whose consent a cross-product delegation must record as its approver. Absent when the record declares no owner, which makes any cross-product delegation TARGETING this product unverifiable and therefore refused. */
|
|
120
|
+
owner?: string;
|
|
121
|
+
/** The browser origins this product's surfaces may call from. Carried on the record and enforced at the gateway layer, not by the conductor. Empty means none declared. */
|
|
122
|
+
allowed_origins: string[];
|
|
123
|
+
/** The graph Reference namespaces this product may read. A personality's allowed_graph_scopes may only narrow this, so an empty grant is a refusal for any personality that declares one — never a permissive default. */
|
|
124
|
+
graph_scope_grants: string[];
|
|
125
|
+
/** The memory scopes this product is granted. Same narrowing-only, fail-closed rule as the graph grant: empty means any personality declaring a memory scope is refused. */
|
|
126
|
+
memory_scope_grants: string[];
|
|
127
|
+
/** The cognitive-topic families this product's Watcher is granted to subscribe to. v1 is SELF-OBSERVE ONLY — every ACTIVE record's grant has a project equal to its own product_id, and cross-project or universal observation is refused at boot — so this must never be read as general observation breadth. It is co-declared intent; the broker's per-project literal ACL is the real subscription gate. Empty means this product runs no Watcher subscription. */
|
|
128
|
+
observe_topic_grants: Array<{
|
|
129
|
+
/** The project whose topic may be subscribed to. On an ACTIVE record this always equals the record's own product_id (ValidateObserveGrants refuses anything else at boot); a non-active record is never validated and renders whatever it declared. */
|
|
130
|
+
project: string;
|
|
131
|
+
/** Which cognitive-topic family may be observed. The lawful families are `episodes` (owner-scoped episode records) and `cognition` (cognitive run/relay events). NOT enumerated: the handler copies grant.Family through verbatim with no normalization or filtering, and the closed set is enforced only by ValidateObserveGrants, which skips every record whose status is not `active` — so this endpoint can and does emit other strings (the endpoint's own test pins a response carrying family "governance"). */
|
|
132
|
+
family: string;
|
|
133
|
+
}>;
|
|
134
|
+
/** The depth-1 delegate authorities this product's composer personalities hold — which of its composers may ASK which target personality for help inside one synchronous turn. The grant carries a task, never authority: the child runs under the target's OWN envelope. This is the mechanism half only; an operator-audience composer also needs a live Control-Plane Access row, and divergence fails closed. Empty means this product delegates to no one. */
|
|
135
|
+
delegation_grants: Array<{
|
|
136
|
+
/** The personality THIS product grants that is allowed to delegate. A product may only authorize its own composer, never another product's. */
|
|
137
|
+
composer_personality: string;
|
|
138
|
+
/** The personality the composer may ask for help. It must resolve to an enrolled, active product that grants it. */
|
|
139
|
+
target_personality: string;
|
|
140
|
+
/** Recorded delegate-side consent — the TARGET product's owner, required when the target belongs to another product. Absent on a same-product grant, where the product consents by declaring it; absent on a cross-product grant is a refusal at boot. */
|
|
141
|
+
approver?: string;
|
|
142
|
+
/** Whether this grant dispatches real bounded EXECUTION rather than an ordinary read-only delegated turn. True exactly when an execution_envelope is present — the two can never disagree. */
|
|
143
|
+
is_execution_grant: boolean;
|
|
144
|
+
/** The human-authored execution-provider selector this grant forwards to the Execution Runtime (policy metadata, never a credential and never AI-set). Absent means the runtime uses its own default. */
|
|
145
|
+
execution_provider?: string;
|
|
146
|
+
/** The bounded execution envelope this grant executes under, or null for the ordinary read-only delegated turn. Null is meaningful ABSENCE — it is never rendered as a row of zeros, which would read as 'bounded at nothing'. */
|
|
147
|
+
execution_envelope: {
|
|
148
|
+
/** CPU allotment the execution may consume. */
|
|
149
|
+
cpu: number;
|
|
150
|
+
/** Memory ceiling in MiB for the execution. */
|
|
151
|
+
memory_mib: number;
|
|
152
|
+
/** Writable filesystem ceiling in MiB for the execution. */
|
|
153
|
+
filesystem_mib: number;
|
|
154
|
+
/** Maximum bytes of output the execution may return — the bound that stops a runaway from flooding the caller. */
|
|
155
|
+
output_bytes_max: number;
|
|
156
|
+
/** The hosts this execution may reach. Authored governance, not a secret: an operator must be able to read it to judge the bound. Empty means no egress is allowed. */
|
|
157
|
+
network_egress_allow: string[];
|
|
158
|
+
/** Wall-clock ceiling for the execution before it is terminated. */
|
|
159
|
+
timeout_ms: number;
|
|
160
|
+
/** How long the execution's lease stays valid — the window in which it must renew or be reclaimed. */
|
|
161
|
+
lease_ttl_ms: number;
|
|
162
|
+
/** Grace period allowed for the execution to shut down cleanly after its bound is reached. */
|
|
163
|
+
teardown_slack_ms: number;
|
|
164
|
+
};
|
|
165
|
+
}>;
|
|
166
|
+
/** This product's declared Operative Types — the commissionable execution intelligences it authors. This is the AUTHORING half only: what the product declared, which is NOT what a governed Operation record resolves or what any gate enforces. An Operative is config, never an actor: it holds no grants and no identity outside an Operation. Empty means this product declares none. The product-authored `preferences` blob is deliberately never serialized here — it is opaque, schema-free, and could carry a credential on a platform-scoped read. */
|
|
167
|
+
operatives: Array<{
|
|
168
|
+
/** The executor identifier the existing grants and wire already speak. A COMPATIBILITY identifier only — never public vocabulary and never UI language. Unique within this record; across products the identity is the (product_id, id) pair. */
|
|
169
|
+
id: string;
|
|
170
|
+
/** The public face of this Operative Type — what an operator should actually read. On an ACTIVE record it is required and never equal to the raw id. */
|
|
171
|
+
display_name: string;
|
|
172
|
+
/** The Operative's registered role. The CLOSED seven-role vocabulary is `builder`, `research`, `scout`, `review`, `testing`, `migration`, `documentation`, plus the one legacy exception `general` — lawful only on ccu-admin's pre-ruling chief-worker declaration and excluded from typed commissioning. NOT enumerated: the handler copies the declared role through verbatim, and the closed set is enforced only by ValidateOperatives, which skips every record whose status is not `active`. */
|
|
173
|
+
role: string;
|
|
174
|
+
/** The human-authored execution-provider selector for this Type (policy metadata, never a credential, never AI-set). Absent means the runtime's own default applies. */
|
|
175
|
+
execution_provider?: string;
|
|
176
|
+
/** The bounded envelope this Operative always executes within — an Operative is never unbounded, and this is the operative-first source of truth that overrides the delegation grant's copy. Null only on a record boot validation never inspected (an unbounded declaration is a defect, refused for any active product). */
|
|
177
|
+
execution_envelope: {
|
|
178
|
+
/** CPU allotment this Operative may consume. */
|
|
179
|
+
cpu: number;
|
|
180
|
+
/** Memory ceiling in MiB for this Operative. */
|
|
181
|
+
memory_mib: number;
|
|
182
|
+
/** Writable filesystem ceiling in MiB for this Operative. */
|
|
183
|
+
filesystem_mib: number;
|
|
184
|
+
/** Maximum bytes of output this Operative may return. */
|
|
185
|
+
output_bytes_max: number;
|
|
186
|
+
/** The hosts this Operative may reach. Authored governance an operator must be able to read to judge the bound, not a secret. Empty means no egress is allowed. */
|
|
187
|
+
network_egress_allow: string[];
|
|
188
|
+
/** Wall-clock ceiling before this Operative's execution is terminated. */
|
|
189
|
+
timeout_ms: number;
|
|
190
|
+
/** How long this Operative's execution lease stays valid before it must renew or be reclaimed. */
|
|
191
|
+
lease_ttl_ms: number;
|
|
192
|
+
/** Grace period allowed for a clean shutdown after the bound is reached. */
|
|
193
|
+
teardown_slack_ms: number;
|
|
194
|
+
};
|
|
195
|
+
/** Capabilities this Type NEEDS in order to run — a binding requirement, never a grant. Nothing is authorized by appearing here; the evaluation is the commission-time intersection of the Operation's envelope with this list. Empty means none declared. */
|
|
196
|
+
required_capabilities: string[];
|
|
197
|
+
/** The named personalities permitted to commission this Type. Empty means any personality of the owning product that passes the ordinary intersection may commission it — enforced at commission, not here. */
|
|
198
|
+
allowed_commissioners: string[];
|
|
199
|
+
/** The execution FORM this Type requires. The lawful values are `none` (may run in the shared runtime; also what the handler normalizes an unauthored empty value to) and `isolated` (requires an isolated form; provider-blind, and an unsatisfiable requirement REFUSES the commission rather than silently downgrading). Shape, deliberately not an authority grant. NOT enumerated: the handler normalizes only the empty string and passes every other declared value through verbatim, and the closed set is enforced only by ValidateOperatives, which skips every record whose status is not `active`. */
|
|
200
|
+
sandbox_requirement: string;
|
|
201
|
+
/** Whether this Type CAN be one member of a grouped multiplicity. Defaults false, fail-closed: a Type that has not declared clustering can never be swept into one. The Operation's commission shape decides what is PERMITTED — both must agree and either may refuse. */
|
|
202
|
+
supports_clustering: boolean;
|
|
203
|
+
/** How an instance of this Type ENDS when it cannot proceed. The lawful values are `fail` (terminates abnormally; also what the handler normalizes an unauthored empty value to) and `report` (terminates AND records a structured reason for the commissioning personality). Deliberately narrow: it can NEVER mean acquiring authority, budget, time, or a human's attention. NOT enumerated: the handler normalizes only the empty string and passes every other declared value through verbatim, and the closed set is enforced only by ValidateOperatives, which skips every record whose status is not `active`. */
|
|
204
|
+
escalation: string;
|
|
205
|
+
/** Advisory operator-facing prose about this Type. Never binding and never part of the binding digest. Absent when the product authored none. */
|
|
206
|
+
description?: string;
|
|
207
|
+
/** This Type's default model-selection policy, resolved at commission time. Absent means the Operation's own policy governs. */
|
|
208
|
+
default_model_policy_ref?: string;
|
|
209
|
+
/** Type-level wall-clock bound an Operation may narrow but never widen. 0 means undeclared, not zero time. */
|
|
210
|
+
max_wall_clock_ms: number;
|
|
211
|
+
/** Type-level iteration bound an Operation may narrow but never widen. 0 means undeclared, not zero iterations. */
|
|
212
|
+
max_iterations: number;
|
|
213
|
+
/** The kinds of Artifact this Type may admit — enforced at Artifact admission, not here. Empty means none declared. */
|
|
214
|
+
artifact_contract: string[];
|
|
215
|
+
}>;
|
|
216
|
+
/** RETIRED by owner ruling (2026-08-19) and empty on every ACTIVE record: the role vocabulary is closed, and product specialization belongs in Type identity and display_name. Still rendered so a stale record's entries are VISIBLE rather than silently dropped — a non-empty array here means an active record would refuse loudly at validation, or that the record is not active and was never validated. Never read this as a live role registry. */
|
|
217
|
+
operative_roles: string[];
|
|
218
|
+
/** The record's full routing table: capability id to the service_endpoints KEY that hosts it — never a URL. Explicit, never inferred. May contain routes for capabilities that are not granted; the granted subset with reachability is capability_grants. Empty object means nothing is routed. */
|
|
219
|
+
capability_routes: Record<string, string>;
|
|
220
|
+
/** This product's ceiling on concurrent Operatives within one Operation, shown honestly as declared vs effective because an undeclared ceiling stores as 0 and a bare 0 on screen would read as 'no Operatives permitted' — the opposite of the truth. */
|
|
221
|
+
operation_breadth: {
|
|
222
|
+
/** The human-authored ceiling exactly as recorded. 0 means nobody has authored one. */
|
|
223
|
+
declared: number;
|
|
224
|
+
/** The ceiling actually applied: the declared value, or the fail-closed default of 1 when undeclared. Raising it is an explicit human enrollment edit — a request may narrow within it, never raise it. */
|
|
225
|
+
effective: number;
|
|
226
|
+
/** That this ceiling is genuinely enforced (atomically, at the worker-run storage boundary) — unlike several declared Type fields that are recorded now and enforced at a later gate. Always true. */
|
|
227
|
+
enforced: boolean;
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The body of GET /admin/enrollments — every enrolled product the conductor loaded at boot, as a SUMMARY. It is deliberately narrower than the enrollment detail: identity, gate, trust mode and the two grant arrays, and nothing else. Non-active records are listed too, so an operator can see what was suspended or revoked rather than watching it vanish. Nothing here is a secret: no endpoint URL, no storage coordinate, no key.
|
|
232
|
+
*/
|
|
233
|
+
export interface EnrollmentList {
|
|
234
|
+
/** One row per loaded record, in load order. Always an array — never null — so an empty registry reads as 'no products enrolled' rather than as a missing field. */
|
|
235
|
+
enrollments: Array<{
|
|
236
|
+
/** The platform's durable name for the product, and for its project — an enrolled product IS a project under the Project Isolation Doctrine. */
|
|
237
|
+
product_id: string;
|
|
238
|
+
/** The enrollment gate as recorded, verbatim. Only `active` is trusted anywhere; a suspended or revoked product still appears here but resolves no capability and grants no personality. Not enumerated: the loader defines no closed constant set and only ever compares this to "active". */
|
|
239
|
+
status: string;
|
|
240
|
+
/** How the factory's outbound capability projection into this product is proven — the scheme, never the principal and never the secret behind it. */
|
|
241
|
+
s2s_trust_mode: string;
|
|
242
|
+
/** The personality ids this product owns. One-owner-each is a boot-enforced law for active records, so an id appearing here for two active products would refuse the boot. Always an array. */
|
|
243
|
+
personality_grants: string[];
|
|
244
|
+
/** The capabilities this product is entitled to consume. A grant is an entitlement, not a route — the detail read pairs each with its route key and whether an endpoint is present. Always an array. */
|
|
245
|
+
capability_grants: string[];
|
|
246
|
+
}>;
|
|
247
|
+
/** The number of rows, emitted alongside the array so a truncated or mis-parsed response is detectable rather than silently short. */
|
|
248
|
+
count: number;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* The body of GET /operative-type/{productId}/{operativeId} — one Operative Type as an operator reads it, re-proven at the owning product. It never collapses the three answers that look like one: what the product DECLARED, what the governed record currently RESOLVES to, and what a gate actually ENFORCES. It carries the full authored version history and, unlike the roster read, the Type's opaque product-authored preferences. Unknown, unowned and unauthorized all answer 404, so this surface is never an existence oracle.
|
|
252
|
+
*/
|
|
253
|
+
export interface OperativeTypeDetail {
|
|
254
|
+
/** The product that OWNS this Operative Type. Half of the Type's canonical identity — an operative id alone is ambiguous across products, so this is echoed back to prove which product's roster you are reading. */
|
|
255
|
+
product_id: string;
|
|
256
|
+
/** The Type's identifier within its owning product (a compatibility identifier, e.g. chief-worker — never operator-facing language; use declared.display_name for that). */
|
|
257
|
+
operative_id: string;
|
|
258
|
+
/** The governed record's own state row: what has been authored, which version stands, and the standing lifecycle verdict. */
|
|
259
|
+
record: {
|
|
260
|
+
/** Whether a state row exists for this Type. Always true on this read — an absent record answers 404 rather than a body — but stated so the row shape is identical to the roster's. */
|
|
261
|
+
exists: boolean;
|
|
262
|
+
/** The version number the runtime currently points at. 0 means no version is active, which makes the Type unresolvable rather than falling back to the newest. */
|
|
263
|
+
active_version: number;
|
|
264
|
+
/** Whether a version pointer is set at all. Read this before trusting active_version, so 'none active' is never mistaken for 'version zero'. */
|
|
265
|
+
has_active_version: boolean;
|
|
266
|
+
/** The standing verdict on the Type. Only 'active' resolves; 'retired' and 'revoked' refuse commissioning even while the pointer and the full version chain remain (a verdict never edits or deletes history). Genuinely closed: a database CHECK constraint has held this column to these three values since the table was created, and both store twins refuse anything else before the write. */
|
|
267
|
+
lifecycle: "active" | "retired" | "revoked";
|
|
268
|
+
/** The reason recorded with the last lifecycle or pointer change — why a Type was retired or revoked. Empty when none was recorded. */
|
|
269
|
+
state_reason: string;
|
|
270
|
+
/** Who last changed the state row (the attributed actor for the activation, retirement or revocation). Empty when the store recorded none. */
|
|
271
|
+
updated_by: string;
|
|
272
|
+
/** When the state row last changed, in UTC. Null when the record has never carried an update timestamp — 'never stamped', not 'changed at epoch'. */
|
|
273
|
+
updated_at: string | null;
|
|
274
|
+
};
|
|
275
|
+
/** What the record RESOLVES to right now — the shape a commission would actually be admitted against, or the reason it refuses. A refusal is data, not an error: 'this Type cannot currently be commissioned, for this reason' is a true answer to the operator's question. Every field here is produced through the record's resolution gate, which re-runs the CURRENT write-boundary law over the active version before answering — which is why the vocabularies below can be closed while their history counterparts cannot. */
|
|
276
|
+
governed: {
|
|
277
|
+
/** Whether this Type can be commissioned right now. False means every field below except refusal_reason is empty — read the reason, not the blanks. */
|
|
278
|
+
resolvable: boolean;
|
|
279
|
+
/** Why the Type refuses to resolve: no active version pointer, or one of three named corruptions (the pointer names a version that does not exist; the active version fails the current write-boundary law; its stored digest is not the digest of its content). A stable governance code, never infrastructure error text — a store outage is a 500 here, never a cheerful refusal. Empty when resolvable. */
|
|
280
|
+
refusal_reason: "" | "no active version" | "torn_record" | "active_version_fails_current_law" | "content_digest_mismatch";
|
|
281
|
+
/** The version number a commission would pin, so mid-flight re-authoring cannot change work already running. 0 when the Type does not resolve. */
|
|
282
|
+
version: number;
|
|
283
|
+
/** The operational kind the runtime treats this Type as, from the closed universal roster. 'general' is the one legacy role, lawful only on the pre-ruling ccu-admin/chief-worker identity and outside typed commissioning. Empty when the Type does not resolve — and an active version whose role predates the closed roster resolves to exactly that: empty, with refusal_reason 'active_version_fails_current_law'. That gate is why this enum is closed and history's is not. */
|
|
284
|
+
role: "" | "builder" | "research" | "scout" | "review" | "testing" | "migration" | "documentation" | "general";
|
|
285
|
+
/** Capabilities this Type NEEDS but is never granted — they narrow the commissioning envelope by intersection, they never widen it. Empty list, never null. */
|
|
286
|
+
required_capabilities: string[];
|
|
287
|
+
/** The named Personalities permitted to commission this Type. An empty list means any Personality of the owning product that passes the other gates — an empty fence is open, not closed. */
|
|
288
|
+
allowed_commissioners: string[];
|
|
289
|
+
/** The isolation form a run of this Type demands. An unsatisfiable requirement refuses the commission outright — never a silent downgrade. Empty when the Type does not resolve. */
|
|
290
|
+
sandbox_requirement: "" | "none" | "isolated";
|
|
291
|
+
/** Whether this Type may be one member of a grouped multiplicity. False by default and fail-closed: a Type that has not declared clustering cannot be swept into one. */
|
|
292
|
+
supports_clustering: boolean;
|
|
293
|
+
/** How an instance of this Type ENDS when it gets stuck — fail outright, or report and stop. Empty when the Type does not resolve. */
|
|
294
|
+
escalation: "" | "fail" | "report";
|
|
295
|
+
/** The provider-by-policy selector naming which execution backend runs this Type. Empty means defer to the runtime's environment default — meaningful emptiness, not an unresolved value. */
|
|
296
|
+
execution_provider: string;
|
|
297
|
+
};
|
|
298
|
+
/** The AUTHORED half of the active version — the values the record carries that no runtime gate consumes today, plus this read's one exclusive field, preferences. This is governance the record RECORDS, not governance in force; compare it against `enforcement` before treating any of it as a bound. Read straight from the stored active version WITHOUT re-validation, so it is populated even when `governed` refuses: a retired Type, or one whose active version fails the current law, still shows what it declares. */
|
|
299
|
+
declared: {
|
|
300
|
+
/** Whether an active version was found to read these values from. False means nothing is declared here — the sibling fields are blank because there is no declaration, not because it declares zeros. */
|
|
301
|
+
present: boolean;
|
|
302
|
+
/** The Type's operator-facing name, required at authoring and never the raw operative id. This is the language to show an operator. */
|
|
303
|
+
display_name: string;
|
|
304
|
+
/** Advisory prose describing what this Operative is for. Outside the binding digest — editing it does not invalidate what was approved. */
|
|
305
|
+
description: string;
|
|
306
|
+
/** The Type's default model-selection law. Empty means absent, and the commissioning Operation's own policy governs instead. */
|
|
307
|
+
default_model_policy_ref: string;
|
|
308
|
+
/** The Type-level wall-clock ceiling a run may not exceed; an Operation may narrow it, never widen it. 0 means undeclared. Non-negativity is a database CHECK, not a convention. */
|
|
309
|
+
max_wall_clock_ms: number;
|
|
310
|
+
/** The Type-level iteration ceiling for a run, narrowable by the Operation but never widenable. 0 means undeclared. Non-negativity is a database CHECK, not a convention. */
|
|
311
|
+
max_iterations: number;
|
|
312
|
+
/** The kinds of Artifact this Type is declared to admit, enforced at the Artifact admission boundary. Empty list, never null. */
|
|
313
|
+
artifact_contract: string[];
|
|
314
|
+
/** The bounded-executor envelope this Type DECLARES. Note it is not the execution envelope that bounds a real run — see enforcement.serving_envelope_source. Null when the active version records none; never an object of zeros, which would read as 'bounded at nothing'. */
|
|
315
|
+
execution_envelope: {
|
|
316
|
+
/** Compute allotted to one run, in CPU units. Must be greater than zero — an unbounded executor is a declaration defect. */
|
|
317
|
+
cpu: number;
|
|
318
|
+
/** Memory ceiling for one run, in MiB. */
|
|
319
|
+
memory_mib: number;
|
|
320
|
+
/** Writable filesystem ceiling for one run, in MiB. */
|
|
321
|
+
filesystem_mib: number;
|
|
322
|
+
/** The largest output a run may return, in bytes. */
|
|
323
|
+
output_bytes_max: number;
|
|
324
|
+
/** The hosts a run may reach outbound. Absent means no egress allowance was declared. */
|
|
325
|
+
network_egress_allow?: string[];
|
|
326
|
+
/** How long one run may take before it is cut off. */
|
|
327
|
+
timeout_ms: number;
|
|
328
|
+
/** How long the run's lease is held. Always strictly greater than timeout plus teardown slack, so a lease can never reap live in-budget work. */
|
|
329
|
+
lease_ttl_ms: number;
|
|
330
|
+
/** The grace period allowed for tearing a finished run down, on top of its timeout. May be zero. */
|
|
331
|
+
teardown_slack_ms?: number;
|
|
332
|
+
};
|
|
333
|
+
/** Opaque, schema-free, product-authored configuration recorded verbatim and enforced by nothing. THIS READ ONLY: it is deliberately absent from the roster and from the platform-scoped enrollment read, because a platform-breadth operator can sweep those across every product at once and the platform cannot know what a product put in here. Always a JSON object when present (null, scalars and arrays refuse at the write boundary); null when the version declares none. */
|
|
334
|
+
preferences: Record<string, unknown> | null;
|
|
335
|
+
};
|
|
336
|
+
/** The honesty control. Which of this record's fields actually reach a gate, which are recorded and consumed by nothing, and which authority supplies the execution envelope that really bounds a run. Computed by the platform, not remembered by a UI — a bound that does not bind is the silent failure this field exists to prevent. */
|
|
337
|
+
enforcement: {
|
|
338
|
+
/** The field names on this record that a gate actually consults — the census gate, typed commission admission, or provider-bound sandbox satisfiability. Everything named here is governance in force. */
|
|
339
|
+
enforced: string[];
|
|
340
|
+
/** The field names validated at the write boundary and carried in the content digest, but consulted by no gate today. Everything named here is recorded governance, not enforced governance. */
|
|
341
|
+
declared: string[];
|
|
342
|
+
/** Which authority supplies the execution envelope that actually bounds a run. It is the enrollment declaration's envelope, NOT the Type record's own declared.execution_envelope — two truths, and this surface reports both rather than choosing. */
|
|
343
|
+
serving_envelope_source: "enrollment_declaration";
|
|
344
|
+
};
|
|
345
|
+
/** Every authored version of this Type, newest first, each carrying its FULL authored content. A history that showed only a role and a name would report that something changed without ever showing what — which is not a history an operator can audit a governance decision against. Append-only: retiring or revoking a Type never edits or removes an entry, and entries are served exactly as stored, with no re-validation against the current write-boundary law. Read every field below as an authored historical fact, not as a value the present law would still admit. */
|
|
346
|
+
history: Array<{
|
|
347
|
+
/** This version's monotonic number — the identity a commission pins so later authoring cannot change running work. */
|
|
348
|
+
version: number;
|
|
349
|
+
/** The approval identity: a digest over this version's BINDING content only, so advisory copy edits do not invalidate what was approved. A scheme prefix marks which digest law computed it; a digest is only comparable under its own scheme, and an entry authored before the current scheme carries no prefix at all. */
|
|
350
|
+
content_digest: string;
|
|
351
|
+
/** Who authored this version. A governed record is attributed, never anonymous. */
|
|
352
|
+
authored_by: string;
|
|
353
|
+
/** When this version was appended, in UTC, stamped by the store rather than the caller — provenance can never be backdated. */
|
|
354
|
+
authored_at: string;
|
|
355
|
+
/** Whether this is the version the record currently points at. At most one entry is true, and none is when the Type has no active pointer. True does not imply resolvable — a retired Type still points at a version. */
|
|
356
|
+
is_active: boolean;
|
|
357
|
+
/** The operational kind declared by THIS version, as authored. NOT a closed set on this surface, deliberately. The current roster is builder · research · scout · review · testing · migration · documentation, plus the legacy 'general' on the one pre-ruling ccu-admin/chief-worker identity — but that roster became the record's own write-boundary law after the record shipped, the role column carries no database constraint, and versions are append-only and never re-validated on read. Entries authored under the earlier extensible vocabulary therefore survive here permanently and may carry a value the present law refuses (for example 'build', migrated to 'builder', or a retired product-declared role). Read a value outside the current roster as history, not as a live classification; governed.role is the field that answers what the runtime treats this Type as NOW, and it is closed because it is re-proven against the current law before it is served. */
|
|
358
|
+
role: string;
|
|
359
|
+
/** The operator-facing name as authored in this version. Advisory, and never the raw operative id under the current law; an entry authored before that requirement may carry an empty name. */
|
|
360
|
+
display_name: string;
|
|
361
|
+
/** The advisory prose as authored in this version. */
|
|
362
|
+
description: string;
|
|
363
|
+
/** The default model-selection law as authored in this version. Empty means absent — the Operation's own policy would govern. */
|
|
364
|
+
default_model_policy_ref: string;
|
|
365
|
+
/** The wall-clock ceiling as authored in this version. 0 means undeclared. Non-negativity is a database CHECK. */
|
|
366
|
+
max_wall_clock_ms: number;
|
|
367
|
+
/** The iteration ceiling as authored in this version. 0 means undeclared. Non-negativity is a database CHECK. */
|
|
368
|
+
max_iterations: number;
|
|
369
|
+
/** The Artifact kinds this version declared admissible. Empty list, never null. */
|
|
370
|
+
artifact_contract: string[];
|
|
371
|
+
/** The capabilities this version required, in authored order. Requirements that narrow a commission's envelope — never grants. Empty list, never null. */
|
|
372
|
+
required_capabilities: string[];
|
|
373
|
+
/** The Personalities this version restricted commissioning to. Empty means unrestricted within the owning product. Empty list, never null. */
|
|
374
|
+
allowed_commissioners: string[];
|
|
375
|
+
/** The isolation form this version demanded. Stored normalized, so an entry never shows a blank that a reader would have to resolve to a default. Genuinely closed even across history: a database CHECK constraint has held this column to these two values since the table was created. */
|
|
376
|
+
sandbox_requirement: "none" | "isolated";
|
|
377
|
+
/** Whether this version permitted the Type to be one member of a grouped multiplicity. */
|
|
378
|
+
supports_clustering: boolean;
|
|
379
|
+
/** How this version said a stuck instance should end. Stored normalized, never blank. Genuinely closed even across history: a database CHECK constraint has held this column to these two values since the table was created. */
|
|
380
|
+
escalation: "fail" | "report";
|
|
381
|
+
/** The execution backend selector this version authored. Empty means defer to the runtime's environment default. */
|
|
382
|
+
execution_provider: string;
|
|
383
|
+
/** The bounded-executor envelope this version authored, emitted as JSON rather than an encoded blob. Null when the stored version records none. */
|
|
384
|
+
execution_envelope: {
|
|
385
|
+
/** Compute allotted to one run, in CPU units. */
|
|
386
|
+
cpu: number;
|
|
387
|
+
/** Memory ceiling for one run, in MiB. */
|
|
388
|
+
memory_mib: number;
|
|
389
|
+
/** Writable filesystem ceiling for one run, in MiB. */
|
|
390
|
+
filesystem_mib: number;
|
|
391
|
+
/** The largest output a run may return, in bytes. */
|
|
392
|
+
output_bytes_max: number;
|
|
393
|
+
/** The hosts a run may reach outbound. Absent means no egress allowance was declared in this version. */
|
|
394
|
+
network_egress_allow?: string[];
|
|
395
|
+
/** How long one run may take before it is cut off. */
|
|
396
|
+
timeout_ms: number;
|
|
397
|
+
/** How long the run's lease is held — always strictly greater than timeout plus teardown slack. */
|
|
398
|
+
lease_ttl_ms: number;
|
|
399
|
+
/** The grace period allowed for tearing a finished run down. May be zero. */
|
|
400
|
+
teardown_slack_ms?: number;
|
|
401
|
+
};
|
|
402
|
+
}>;
|
|
403
|
+
/** When the service assembled this answer, in UTC. Everything above is a reading at this instant — a governance verdict can move underneath it, so an operator citing this body should cite this timestamp with it. */
|
|
404
|
+
as_of: string;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* The body of GET /operative-types — the Operative Type ROSTER, bounded by the operator's resolved read scope (an optional product_id query only NARROWS that scope, never widens it). Every row is built by the shared row builder and therefore reports three answers the surface refuses to collapse: what the product DECLARED, what the governed record currently RESOLVES to, and which of its fields any gate actually ENFORCES. The roster deliberately omits the declared `preferences` value — opaque, schema-free, product-authored JSON that a platform-breadth operator could sweep across every product in a single call; it is added only by the single-Type detail read.
|
|
408
|
+
*/
|
|
409
|
+
export interface OperativeTypeList {
|
|
410
|
+
/** Every Operative Type the operator is authorized to see, ordered by owning product then operative id. An empty array means the operator's scope contains no Types — never that they were denied; a denial is a 403, so 'you may not look' and 'there is nothing here' stay distinguishable. */
|
|
411
|
+
operative_types: Array<{
|
|
412
|
+
/** The product that OWNS this Operative Type — the first half of its canonical identity. An operative id alone is ambiguous across products, so the owning product is always named. */
|
|
413
|
+
product_id: string;
|
|
414
|
+
/** The Type's id within its owning product — the second half of the canonical identity, and the id an operator quotes when commissioning. */
|
|
415
|
+
operative_id: string;
|
|
416
|
+
/** The governed record's own state row: what was authored, which version the runtime pointer names, and the standing lifecycle verdict. */
|
|
417
|
+
record: {
|
|
418
|
+
/** Whether a governed record was found for this identity. Always true on a roster row — the row is here because the record is. */
|
|
419
|
+
exists: boolean;
|
|
420
|
+
/** The ONE version the runtime pointer names. Zero means no version is active, which is a refusing state for anything that commissions this Type. */
|
|
421
|
+
active_version: number;
|
|
422
|
+
/** Whether the pointer actually names a version, stated explicitly so an operator never has to read zero as a sentinel. */
|
|
423
|
+
has_active_version: boolean;
|
|
424
|
+
/** The standing verdict on the Type. Anything but active refuses resolution even while a pointer is set; retiring or revoking never edits or deletes the version history. */
|
|
425
|
+
lifecycle: "active" | "retired" | "revoked";
|
|
426
|
+
/** The reason an operator recorded alongside the current lifecycle verdict (for example why a Type was revoked). Empty when no reason was recorded. */
|
|
427
|
+
state_reason: string;
|
|
428
|
+
/** The operator attributed with the last change to this record's state. Empty when the state was never attributed. */
|
|
429
|
+
updated_by: string;
|
|
430
|
+
/** When the record's state was last changed, in UTC. Null when the record carries no state timestamp at all — never a zero date that would read as a real edit in 1970. */
|
|
431
|
+
updated_at: string | null;
|
|
432
|
+
};
|
|
433
|
+
/** What the record RESOLVES to right now — the half of the Type that binds a commission — or, when it cannot resolve, why it refuses. A refusal is data, not an error: 'this Type cannot currently be commissioned, for this reason' is a true answer to the operator's question. */
|
|
434
|
+
governed: {
|
|
435
|
+
/** Whether this Type can be commissioned right now. When false, every field below is the empty answer and only refusal_reason is meaningful. */
|
|
436
|
+
resolvable: boolean;
|
|
437
|
+
/** Why the record refuses to resolve, as a stable governance code rather than an error message: no active version (the pointer names nothing, the lifecycle is not active, or the state row is absent), a torn record (the pointer names a version that is missing), an active version that fails the law in force today, or a content digest that no longer matches its version. Empty when the Type resolves. */
|
|
438
|
+
refusal_reason: "" | "no active version" | "torn_record" | "active_version_fails_current_law" | "content_digest_mismatch";
|
|
439
|
+
/** The version that actually resolved — the one a commission would run. Zero when nothing resolved. */
|
|
440
|
+
version: number;
|
|
441
|
+
/** The Type's declared operational kind, drawn from the closed universal roster. `general` is the single legacy role, lawful only on the one pre-ruling declaration and outside typed commissioning. Empty when the Type does not resolve. */
|
|
442
|
+
role: "" | "builder" | "research" | "scout" | "review" | "testing" | "migration" | "documentation" | "general";
|
|
443
|
+
/** The capabilities this Type NEEDS in order to run — requirements it states, never grants. Intersected against the commissioner's authority at commission time. An empty list means the Type requires nothing beyond the baseline. */
|
|
444
|
+
required_capabilities: string[];
|
|
445
|
+
/** The named Personalities permitted to commission this Type. An empty list means any Personality of the owning product that passes the ordinary commission checks. */
|
|
446
|
+
allowed_commissioners: string[];
|
|
447
|
+
/** The isolation this Type demands of its execution backend. A requirement no provider can satisfy makes the commission REFUSE — it is never silently downgraded. Empty when the Type does not resolve. */
|
|
448
|
+
sandbox_requirement: "" | "none" | "isolated";
|
|
449
|
+
/** Whether this Type may run as more than one concurrent instance under a single commission. */
|
|
450
|
+
supports_clustering: boolean;
|
|
451
|
+
/** How an instance of this Type ENDS when it gets stuck — fail (end in failure) or report (end reporting what it reached). Empty when the Type does not resolve. */
|
|
452
|
+
escalation: "" | "fail" | "report";
|
|
453
|
+
/** The provider-by-policy selector naming which execution backend runs this Type. Empty is meaningful here: it means defer to the runtime environment's default, not that nothing was declared. */
|
|
454
|
+
execution_provider: string;
|
|
455
|
+
};
|
|
456
|
+
/** The AUTHORED half — the values of the fields the runtime does NOT consume. They are governance the record RECORDS, not governance in force; naming the fields without their content would tell an operator that a field exists but never what it says. NOTE: the roster's declared block carries no `preferences` key at all. That value is opaque, schema-free, product-authored JSON and appears only on the single-Type detail read, which is re-proven at one owning product. */
|
|
457
|
+
declared: {
|
|
458
|
+
/** Whether there is an active version to read declared values from. False means nothing is declared here — distinct from a row of zeros, which would read as 'bounded at nothing'. Note this is the pointer's version, read WITHOUT re-validation: it can be true while the governed half refuses. */
|
|
459
|
+
present: boolean;
|
|
460
|
+
/** The operator-facing name for this Type. Advisory: it is shown to humans and binds nothing. */
|
|
461
|
+
display_name: string;
|
|
462
|
+
/** The authored prose describing what this Type is for. Advisory — recorded, consumed by no gate. */
|
|
463
|
+
description: string;
|
|
464
|
+
/** The model-selection policy this Type names as its default. Empty means the Type defers to the commissioning Operation's policy. */
|
|
465
|
+
default_model_policy_ref: string;
|
|
466
|
+
/** The Type-level wall-clock ceiling an instance may run for. Zero means undeclared; an Operation may narrow this bound but never widen it. */
|
|
467
|
+
max_wall_clock_ms: number;
|
|
468
|
+
/** The Type-level ceiling on execution iterations. Zero means undeclared; an Operation may narrow this bound but never widen it. */
|
|
469
|
+
max_iterations: number;
|
|
470
|
+
/** The kinds of Artifact this Type declares it may produce, checked when an Artifact is admitted. An empty list means no kinds were declared. */
|
|
471
|
+
artifact_contract: string[];
|
|
472
|
+
/** The resource envelope this Type's record declares for a bounded executor, emitted as the AUTHORED JSON EXACTLY AS STORED — the roster never re-validates or re-renders these bytes, so this object's shape is bounded by the record's own write boundary and by nothing else. Null when no envelope is on the record (no active version, or an unreadable one). IMPORTANT: this is NOT the execution envelope that bounds a real run — see enforcement.serving_envelope_source; the enrollment declaration's envelope is the one resolved at dispatch. */
|
|
473
|
+
execution_envelope: {
|
|
474
|
+
/** CPU allowance for one instance of this Type. Required: the write boundary demands a value > 0, and an absent key decodes to zero and is refused — so no stored envelope can omit it. May be fractional. */
|
|
475
|
+
cpu: number;
|
|
476
|
+
/** Memory allowance for one instance, in MiB. Required for the same reason as cpu; a fractional literal is refused at the write boundary, so this is always an integer. */
|
|
477
|
+
memory_mib: number;
|
|
478
|
+
/** Working filesystem allowance for one instance, in MiB. Required: must be > 0 at the write boundary. */
|
|
479
|
+
filesystem_mib: number;
|
|
480
|
+
/** The most output bytes one instance may emit before it is cut off. Required: must be > 0 at the write boundary. */
|
|
481
|
+
output_bytes_max: number;
|
|
482
|
+
/** The hosts an instance may reach outbound. OPTIONAL, and NULLABLE: the key may be absent, an empty array, or an explicit JSON null — a null decodes to an empty host list, passes the write boundary, and is then re-emitted verbatim, so a consumer must treat absent, [] and null alike as 'no egress allowed'. Every entry, when present, is a non-empty printable host string. */
|
|
483
|
+
network_egress_allow?: string[];
|
|
484
|
+
/** How long the WORK itself may take before it is stopped. Required: must be > 0 at the write boundary. */
|
|
485
|
+
timeout_ms: number;
|
|
486
|
+
/** How long the execution lease is held. Required: must be > 0 and strictly longer than the work plus its teardown slack, so a lease can never reap live in-budget work. */
|
|
487
|
+
lease_ttl_ms: number;
|
|
488
|
+
/** The grace allowed for shutting an instance down after its work ends. OPTIONAL, and NULLABLE — this is the one bound whose zero is lawful, so the key may be absent or an explicit JSON null (both decode to zero and pass the write boundary, and null is then re-emitted verbatim). Read absent and null as zero slack. */
|
|
489
|
+
teardown_slack_ms?: number | null;
|
|
490
|
+
};
|
|
491
|
+
};
|
|
492
|
+
/** The honesty control, carried on EVERY row: which of the record's fields reach a gate, which are recorded and consumed by nothing, and which authority actually supplies the execution envelope that bounds a run. It describes the mechanism, so it is identical on every row — a surface that left this to a renderer would eventually show an operator a bound that does not bind. */
|
|
493
|
+
enforcement: {
|
|
494
|
+
/** The record's fields that actually reach a gate — today: role, required_capabilities, allowed_commissioners, sandbox_requirement, supports_clustering, execution_provider. These are governance in force. */
|
|
495
|
+
enforced: string[];
|
|
496
|
+
/** The record's fields that are validated when written and carried in the content digest, but consulted by nothing at run time — today: default_model_policy_ref, max_wall_clock_ms, max_iterations, artifact_contract, escalation, execution_envelope, description, preferences. Naming `preferences` here reports that the field exists; its value is still withheld from the roster. */
|
|
497
|
+
declared: string[];
|
|
498
|
+
/** Which authority supplies the execution envelope that actually bounds a run. It is the enrollment declaration's envelope, NOT the Type record's own — the surface reports both truths rather than choosing one. */
|
|
499
|
+
serving_envelope_source: "enrollment_declaration";
|
|
500
|
+
};
|
|
501
|
+
}>;
|
|
502
|
+
/** The UTC instant this roster was assembled. The read is live and uncached, so this is the moment the scope was resolved and the rows were projected — not a cache stamp. */
|
|
503
|
+
as_of: string;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Response body of GET /personalities on the conductor-service read-only admin surface (mounted as /admin/personalities behind the verified-actor gate and the gateway S2S-trust gate). The full roster of personalities registered at the composition root, each joined to the product whose enrollment grants it. The registry is immutable after boot, so this read is a snapshot of the running configuration, never a query against stored state. A personality's route table is deliberately absent from this surface.
|
|
507
|
+
*/
|
|
508
|
+
export interface PersonalityList {
|
|
509
|
+
/** Every registered personality, ordered by id. Always an array — an unconfigured registry yields an empty list, never null and never an error. */
|
|
510
|
+
personalities: Array<{
|
|
511
|
+
/** The registry key the engine resolves this personality by. Opaque — the engine never branches on it. */
|
|
512
|
+
id: string;
|
|
513
|
+
/** Human display name, for operator screens only. */
|
|
514
|
+
name: string;
|
|
515
|
+
/** The enrolled product whose enrollment record grants this personality. An EMPTY STRING is a real, meaningful value: the personality is registered in the runtime but no active enrollment grants it, so it currently has no owning product. The key is always present — do not read absence as unowned; read the empty string as unowned. */
|
|
516
|
+
owning_product: string;
|
|
517
|
+
/** That this personality is live in the running registry. Always true on this surface — the registry holds only successfully registered personalities, so an inactive row cannot appear here. */
|
|
518
|
+
active: boolean;
|
|
519
|
+
/** The model-tier hint the Conductor resolves against a provider. Never a vendor or model id. Always present — registration fails closed without a valid tier. */
|
|
520
|
+
tier: "fast" | "deep" | "local";
|
|
521
|
+
/** Coarse operator archetype, used for discovery and defaults only — it changes no runtime behavior. OMITTED ENTIRELY when the personality declared none; absence means undeclared, not a default. */
|
|
522
|
+
classification?: "operator" | "consumer" | "developer" | "administrator" | "analyst" | "educator";
|
|
523
|
+
/** Presentation posture the AI Client arranges the surface for. OMITTED ENTIRELY when undeclared, in which case the client's own chat-first default applies — this surface does not fill it in. */
|
|
524
|
+
primary_surface?: "chat-first" | "canvas-first";
|
|
525
|
+
/** The consul-bound entitlement envelope this personality declares (<primitive>.<verb>). Every allowed tool's required capability sits inside it. Always present; an empty array means the personality declared no capabilities, which is a genuine zero-entitlement state. */
|
|
526
|
+
capabilities: string[];
|
|
527
|
+
/** The registered tool names this personality may invoke. Always present; an empty array means it may invoke none. */
|
|
528
|
+
allowed_tools: string[];
|
|
529
|
+
/** The canvas types this personality may emit. Always present; an empty array means it may emit none. */
|
|
530
|
+
allowed_canvases: string[];
|
|
531
|
+
}>;
|
|
532
|
+
/** How many personalities the list carries — always the length of the personalities array on this page, never a total across a larger unreturned set (this surface does not paginate). */
|
|
533
|
+
count: number;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* The body of GET /personality-model-policy/:personalityId — the AOE-2 Model Policy surface's per-personality RESOLUTION EXPLANATION: which provider and model this personality would use right now, and why. Split into the AUTHORED half (what a human wrote on the personality) and the DERIVED half (what the resolver computed against the live world), which are never to be read as one thing. A refusal is a legitimate ANSWER here, not an error: the operator asked what happens, and 'it refuses, for this reason' is the truth. Emitted only after the operator is re-proven at the personality's owning product; unknown, unowned, and unauthorized targets are indistinguishable 404s.
|
|
537
|
+
*/
|
|
538
|
+
export interface PersonalityResolution {
|
|
539
|
+
/** The personality this explanation is about, echoed back from the request so a cached or logged answer can never be misattributed to a different personality. */
|
|
540
|
+
personality_id: string;
|
|
541
|
+
/** What a human actually wrote on the personality declaration. Nothing here was computed; if an operator wants to change the outcome, this is the half they edit. */
|
|
542
|
+
authored: {
|
|
543
|
+
/** The Model Policy this personality points at. Empty string means the personality is on the tier-compatibility path — where every unbound personality sits, and where no Model Policy governs the choice at all. */
|
|
544
|
+
policy_ref: string;
|
|
545
|
+
/** The authored model-tier hint (never a vendor or model id). On the tier-compat path this is what actually decides the model; on the policy path the policy overrides it. */
|
|
546
|
+
tier: "fast" | "deep" | "local";
|
|
547
|
+
};
|
|
548
|
+
/** What the resolver computed by walking the authored policy against the live world (provider records, compiled adapters, degraded/impaired posture). Nothing here is stored or editable — it is the answer as of this instant, and it will change when the world changes. */
|
|
549
|
+
derived: {
|
|
550
|
+
/** Whether the Model Policy path ran at all. False means the personality is untouched by Model Policy and is served by tier compatibility exactly as before. */
|
|
551
|
+
policy_path: boolean;
|
|
552
|
+
/** Which of the two mutually exclusive paths answered: 'policy' = a Model Policy governed this personality, 'tier_compat' = no policy reference, the legacy tier default applies. The word form of policy_path, for a screen that should not print a boolean. */
|
|
553
|
+
path: "tier_compat" | "policy";
|
|
554
|
+
/** The product that owns this personality, taken from enrollment and never from the declaration — it is the authority for the cross-product check, so a policy belonging to any other product can never govern here. Empty string when the owner could not be derived or when no policy path ran. */
|
|
555
|
+
owning_product: string;
|
|
556
|
+
/** The immutable policy version that actually governed this resolution — the number to cite in an incident, because policy content is versioned and the live pointer moves. 0 means no version governed (tier-compat, or the policy path refused before reaching a version). */
|
|
557
|
+
active_policy_version: number;
|
|
558
|
+
/** The content digest of the governing policy version — proof that the bytes an operator is reading in the policy detail view are the bytes that produced this answer. Empty string when no version governed. */
|
|
559
|
+
policy_content_digest: string;
|
|
560
|
+
/** Why the policy path refused to select anything. Empty string means it did not refuse (either a model was selected, or this personality is on the tier-compat path). A set reference that cannot resolve always REFUSES — it never quietly falls back to the tier default, because falling back would widen what the product admitted. */
|
|
561
|
+
refusal: "" | "policy_not_found" | "policy_has_no_active_version" | "policy_owned_by_another_product" | "personality_owner_unknown" | "no_lane_entry_qualified" | "active_version_missing";
|
|
562
|
+
/** WHICH AUTHORITY admitted the selection — never to be conflated with the fact that one was made. 'provider_record' = admitted by the governed active Provider Record. 'pre_cutover_compiled_equivalence' = admitted only because the entry names exactly the compiled binding already serving on a provider that has never cut over; that is compatibility, not governance, and an operator reading it should know less governance is in force than the screen implies. Empty string when the walk ran but exhausted every entry. Present only when the walk was reached (a policy path that got as far as an active version). */
|
|
563
|
+
admission?: "" | "pre_cutover_compiled_equivalence" | "provider_record";
|
|
564
|
+
/** Which authored lane the winning entry came from — 'primary' means the first choice held, 'fallback' means the primary chain was exhausted and this personality is running degraded from what was intended. Empty string when nothing qualified. Present only when the walk was reached. The walk itself only ever traverses primary then fallback; the remaining lane names exist in the policy vocabulary but cannot be selected today. */
|
|
565
|
+
selected_lane?: "" | "primary" | "fallback" | "reasoning" | "large_context" | "cheap_classification";
|
|
566
|
+
/** The provider this personality's turns will actually go to right now. Present only when an entry qualified — its absence is the operator's signal that no model is available and turns are refusing. */
|
|
567
|
+
resolved_provider?: string;
|
|
568
|
+
/** The exact model this personality's turns will actually use right now. Present only when an entry qualified. Always one of the models the policy explicitly named — the walk can never reach a model the policy did not list. */
|
|
569
|
+
resolved_model?: string;
|
|
570
|
+
/** Every entry the walk rejected before settling, in authored walk order, each with the reason it was passed over. This is what makes a fallback chain readable rather than a list of hopes: it shows which intended choices are unavailable and why, even when the final answer is a healthy selection. Present only when the walk was reached; an empty array means the very first entry qualified. */
|
|
571
|
+
skips?: Array<{
|
|
572
|
+
/** The authored lane this rejected entry sat in — a rejection in 'primary' is the operator's intended choice failing, a rejection in 'fallback' is the safety net failing. */
|
|
573
|
+
lane: "primary" | "fallback" | "reasoning" | "large_context" | "cheap_classification";
|
|
574
|
+
/** The provider named by the rejected entry. */
|
|
575
|
+
provider: string;
|
|
576
|
+
/** The model named by the rejected entry. */
|
|
577
|
+
model: string;
|
|
578
|
+
/** The one rule that rejected this entry — a closed vocabulary, so 'no model qualified' is always actionable. Fence and record codes are governance problems (the product never admitted it, or the record does not admit it); capability, context-window and token-cap codes are authoring problems (the policy asks for more than the model declares); degraded and impaired are live-posture problems that will clear on their own. */
|
|
579
|
+
reason: "outside_allowed_provider_fence" | "no_provider_record" | "provider_record_not_admitted" | "model_not_in_active_version" | "no_compiled_provider_adapter" | "missing_required_capability" | "context_window_below_minimum" | "max_output_tokens_over_platform_cap" | "max_output_tokens_over_vendor_cap" | "provider_degraded" | "provider_impaired" | "pre_cutover_entry_is_not_the_compiled_binding";
|
|
580
|
+
}>;
|
|
581
|
+
/** The instant this explanation was computed, in UTC. Derived posture is a photograph, not a stored fact: the same personality can resolve differently a second later if a provider degrades or a version is activated, so an answer without this stamp is not quotable. */
|
|
582
|
+
as_of: string;
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* The body of GET /admin/projects — every enrolled product seen as a PROJECT: its provisioning posture rather than its AI configuration. An enrolled product IS a project (Project Isolation Doctrine), so the rows are the same records the enrollment list returns, projected through a different question: is this project storage-bound, across which planes, and what may it read across project lines. Non-active records appear here too, so a suspended project is visible rather than absent.
|
|
587
|
+
*/
|
|
588
|
+
export interface ProjectList {
|
|
589
|
+
/** One row per loaded record, in load order. Always an array — never null. */
|
|
590
|
+
projects: Array<{
|
|
591
|
+
/** The project's durable name — identical to the enrolled product_id. */
|
|
592
|
+
project_id: string;
|
|
593
|
+
/** The recorded provisioning/enrollment lifecycle, verbatim: `active` (fully provisioned, verified, turn-capable) or `suspended` per the engine's flip rule. Not enumerated: the loader closes no vocabulary and only ever compares this to "active". */
|
|
594
|
+
status: string;
|
|
595
|
+
/** Whether ANY plane binding is declared. False is a valid, pre-provisioning state — enrolled but not yet storage-bound — and must not be read as a failure. */
|
|
596
|
+
storage_bound: boolean;
|
|
597
|
+
/** The four-plane binding grid (six slots; structured = graph + memory + learning), each with declared + lifecycle status — the SAME safe rendering as the enrollment detail, deliberately identical so the two surfaces cannot drift into describing storage differently. Presence and lifecycle only; no secret name, index, bucket or database is ever serialized. */
|
|
598
|
+
planes: {
|
|
599
|
+
/** This project's own graph store (Neon) — where its Reference and Overlay rings physically live. */
|
|
600
|
+
graph: {
|
|
601
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
602
|
+
declared: boolean;
|
|
603
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
604
|
+
status?: string;
|
|
605
|
+
};
|
|
606
|
+
/** This project's own memory store (Neon) — where its Memory Tier 0 / Tier 1 records physically live. */
|
|
607
|
+
memory: {
|
|
608
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
609
|
+
declared: boolean;
|
|
610
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
611
|
+
status?: string;
|
|
612
|
+
};
|
|
613
|
+
/** This project's own learning store (Neon) — where its edge inference and epoch state physically live. */
|
|
614
|
+
learning: {
|
|
615
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
616
|
+
declared: boolean;
|
|
617
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
618
|
+
status?: string;
|
|
619
|
+
};
|
|
620
|
+
/** This project's own vector collection — the retrieval plane; per-source namespaces nest inside it. */
|
|
621
|
+
vector: {
|
|
622
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
623
|
+
declared: boolean;
|
|
624
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
625
|
+
status?: string;
|
|
626
|
+
};
|
|
627
|
+
/** This project's own object-storage partition — the bucket/prefix its Artifact bytes live in. */
|
|
628
|
+
object: {
|
|
629
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
630
|
+
declared: boolean;
|
|
631
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
632
|
+
status?: string;
|
|
633
|
+
};
|
|
634
|
+
/** This project's own analytics database — the fourth plane, where its traces, usage and cost land. */
|
|
635
|
+
analytics: {
|
|
636
|
+
/** Whether the record declares this plane at all. False = enrolled but not yet bound here, a valid pre-provisioning state. */
|
|
637
|
+
declared: boolean;
|
|
638
|
+
/** The provisioning lifecycle of a declared binding. The handler normalizes an omitted status to `active` and otherwise passes the recorded value through verbatim; the lawful set (`active` — resolves; `pending` — declared but unprovisioned, boots fine and fails closed at resolve) is closed only by ValidateStorage, which skips every non-active record, so this is described rather than enumerated. Absent when the plane is not declared. */
|
|
639
|
+
status?: string;
|
|
640
|
+
};
|
|
641
|
+
};
|
|
642
|
+
/** The other projects this one may read across, by name. Cross-project reach is granted, never assumed, and needs BOTH this grant and a Control Plane decision — divergence fails closed. Always an array. */
|
|
643
|
+
cross_project_grants: string[];
|
|
644
|
+
}>;
|
|
645
|
+
/** The number of rows, emitted alongside the array so a truncated response is detectable. */
|
|
646
|
+
count: number;
|
|
647
|
+
}
|
|
648
|
+
//# sourceMappingURL=contract-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-types.d.ts","sourceRoot":"","sources":["../../src/generated/contract-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// GENERATED FILE — DO NOT EDIT BY HAND.
|
|
2
|
+
//
|
|
3
|
+
// Source: platform/contracts/operator-admin/v1/*.schema.json
|
|
4
|
+
// Generator: scripts/generate_operator_admin_types.py
|
|
5
|
+
//
|
|
6
|
+
// The published Admin SDK's response types were hand-written once, and nine of them disagreed with the wire —
|
|
7
|
+
// phantom fields, missing fields, inverted optionality, and a response read at the wrong nesting level, all of
|
|
8
|
+
// which type-checked and shipped. These types are now DERIVED from the operator-admin contract, and the same
|
|
9
|
+
// contract is enforced against the real Go handlers by the conductor's contract_conformance_test.go. Editing
|
|
10
|
+
// this file by hand fails the repository's generated-output drift gate; edit the schema instead.
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=contract-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-types.js","sourceRoot":"","sources":["../../src/generated/contract-types.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,6DAA6D;AAC7D,sDAAsD;AACtD,EAAE;AACF,8GAA8G;AAC9G,+GAA+G;AAC/G,6GAA6G;AAC7G,6GAA6G;AAC7G,iGAAiG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -50,221 +50,8 @@ export declare class AdminError extends Error {
|
|
|
50
50
|
readonly path: string;
|
|
51
51
|
constructor(method: string, path: string, status: number);
|
|
52
52
|
}
|
|
53
|
-
export
|
|
54
|
-
|
|
55
|
-
status?: string;
|
|
56
|
-
}
|
|
57
|
-
export interface ObserveTopicGrant {
|
|
58
|
-
project: string;
|
|
59
|
-
family: string;
|
|
60
|
-
}
|
|
61
|
-
export interface ExecutionEnvelope {
|
|
62
|
-
cpu: number;
|
|
63
|
-
memory_mib: number;
|
|
64
|
-
filesystem_mib: number;
|
|
65
|
-
output_bytes_max: number;
|
|
66
|
-
network_egress_allow: string[];
|
|
67
|
-
timeout_ms: number;
|
|
68
|
-
lease_ttl_ms: number;
|
|
69
|
-
teardown_slack_ms: number;
|
|
70
|
-
}
|
|
71
|
-
export interface DelegationGrant {
|
|
72
|
-
composer_personality: string;
|
|
73
|
-
target_personality: string;
|
|
74
|
-
approver?: string;
|
|
75
|
-
is_execution_grant: boolean;
|
|
76
|
-
execution_provider?: string;
|
|
77
|
-
execution_envelope: ExecutionEnvelope | null;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* An Operative declared in a product's enrollment — the AUTHORING half, which is not the same thing as the
|
|
81
|
-
* governed record's resolution or as what any gate enforces.
|
|
82
|
-
*
|
|
83
|
-
* There is deliberately no `preferences` field: it is opaque, product-authored, schema-free JSON, and the
|
|
84
|
-
* platform-scoped read that feeds this does not serialize it.
|
|
85
|
-
*/
|
|
86
|
-
export interface OperativeDeclaration {
|
|
87
|
-
id: string;
|
|
88
|
-
display_name: string;
|
|
89
|
-
role: string;
|
|
90
|
-
execution_provider?: string;
|
|
91
|
-
execution_envelope: ExecutionEnvelope | null;
|
|
92
|
-
required_capabilities: string[];
|
|
93
|
-
allowed_commissioners: string[];
|
|
94
|
-
sandbox_requirement: string;
|
|
95
|
-
supports_clustering: boolean;
|
|
96
|
-
escalation: string;
|
|
97
|
-
description?: string;
|
|
98
|
-
default_model_policy_ref?: string;
|
|
99
|
-
max_wall_clock_ms: number;
|
|
100
|
-
max_iterations: number;
|
|
101
|
-
artifact_contract: string[];
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* The breadth ceiling, told honestly. `declared` is what the product authored (0 = undeclared), `effective` is
|
|
105
|
-
* what the runtime computes (undeclared fails closed to 1), and `enforced` records that this bound really is
|
|
106
|
-
* applied — atomically, at the run store's admission boundary.
|
|
107
|
-
*/
|
|
108
|
-
export interface OperationBreadth {
|
|
109
|
-
declared: number;
|
|
110
|
-
effective: number;
|
|
111
|
-
enforced: boolean;
|
|
112
|
-
}
|
|
113
|
-
export interface CapabilityRoute {
|
|
114
|
-
capability_id: string;
|
|
115
|
-
route_key: string;
|
|
116
|
-
endpoint_present: boolean;
|
|
117
|
-
}
|
|
118
|
-
/** A Project's enrollment record: its governed AI configuration, references only — never a secret. */
|
|
119
|
-
export interface EnrollmentDetail {
|
|
120
|
-
product_id: string;
|
|
121
|
-
status: string;
|
|
122
|
-
s2s_trust_mode: string;
|
|
123
|
-
issuer?: string;
|
|
124
|
-
jwks_uri?: string;
|
|
125
|
-
audiences: string[];
|
|
126
|
-
personality_grants: string[];
|
|
127
|
-
capability_grants: CapabilityRoute[];
|
|
128
|
-
knowledge_namespace_grants: string[];
|
|
129
|
-
cross_project_grants: string[];
|
|
130
|
-
service_endpoint_keys: string[];
|
|
131
|
-
storage_bindings: Record<string, StorageBindingRead>;
|
|
132
|
-
owner?: string;
|
|
133
|
-
allowed_origins: string[];
|
|
134
|
-
graph_scope_grants: string[];
|
|
135
|
-
memory_scope_grants: string[];
|
|
136
|
-
observe_topic_grants: ObserveTopicGrant[];
|
|
137
|
-
delegation_grants: DelegationGrant[];
|
|
138
|
-
operatives: OperativeDeclaration[];
|
|
139
|
-
/** RETIRED by owner ruling and required to be empty; carried only so a stale record refuses loudly. */
|
|
140
|
-
operative_roles: string[];
|
|
141
|
-
/** Capability id → service_endpoints KEY. Never a URL. */
|
|
142
|
-
capability_routes: Record<string, string>;
|
|
143
|
-
operation_breadth: OperationBreadth;
|
|
144
|
-
}
|
|
145
|
-
export interface PersonalitySummary {
|
|
146
|
-
id: string;
|
|
147
|
-
name?: string;
|
|
148
|
-
classification?: string;
|
|
149
|
-
tier?: string;
|
|
150
|
-
business_package?: string;
|
|
151
|
-
capabilities?: string[];
|
|
152
|
-
allowed_tools?: string[];
|
|
153
|
-
allowed_canvases?: string[];
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* A Personality's EFFECTIVE AUTHORITY, computed at read time.
|
|
157
|
-
*
|
|
158
|
-
* This is not stored state and the type refuses to imply otherwise. `evaluated_at` is a computation timestamp,
|
|
159
|
-
* `evaluation` records that the computation is live and uncached, and `scope` + `excluded_terms` say plainly
|
|
160
|
-
* that this is the Personality/consent half — the re-proven initiating actor and the immutable Operation bounds
|
|
161
|
-
* are separate terms that a commission applies elsewhere.
|
|
162
|
-
*/
|
|
163
|
-
export interface AuthorityEnvelope {
|
|
164
|
-
product_id: string;
|
|
165
|
-
personality_id: string;
|
|
166
|
-
evaluated_at: string;
|
|
167
|
-
evaluation: 'live_uncached_at_read';
|
|
168
|
-
scope: 'personality_consent_half';
|
|
169
|
-
excluded_terms: string[];
|
|
170
|
-
mode: string;
|
|
171
|
-
/** Empty when the authority envelope resolved; otherwise the reason it refuses, which is an answer, not an error. */
|
|
172
|
-
refusal: string;
|
|
173
|
-
dimensions: {
|
|
174
|
-
capabilities: string[];
|
|
175
|
-
allowed_tools: string[];
|
|
176
|
-
allowed_canvases: string[];
|
|
177
|
-
allowed_adapters: string[];
|
|
178
|
-
knowledge_namespaces: string[];
|
|
179
|
-
graph_scopes: string[];
|
|
180
|
-
memory_scopes: string[];
|
|
181
|
-
};
|
|
182
|
-
/** Which dimensions are effective authority ∩ the owning product's enrollment grants; the rest are authority alone. */
|
|
183
|
-
intersected_with_enrollment: string[];
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Which of a Type's fields actually bind.
|
|
187
|
-
*
|
|
188
|
-
* This is data rather than a rendering convention on purpose: a consumer asked to remember which fields are live
|
|
189
|
-
* will eventually forget, and the failure is silent — an operator reads a bound that does not bind.
|
|
190
|
-
*/
|
|
191
|
-
export interface OperativeTypeEnforcement {
|
|
192
|
-
/** Fields that reach a gate (census admission, typed commission admission, provider-bound sandbox). */
|
|
193
|
-
enforced: string[];
|
|
194
|
-
/** Fields validated at the write boundary, carried in the content digest, and consumed by nothing. */
|
|
195
|
-
declared: string[];
|
|
196
|
-
/** Which authority supplies the execution envelope that actually bounds a run. */
|
|
197
|
-
serving_envelope_source: string;
|
|
198
|
-
}
|
|
199
|
-
export interface OperativeTypeRecordState {
|
|
200
|
-
exists: boolean;
|
|
201
|
-
active_version: number;
|
|
202
|
-
has_active_version: boolean;
|
|
203
|
-
lifecycle: string;
|
|
204
|
-
state_reason?: string;
|
|
205
|
-
updated_by?: string;
|
|
206
|
-
updated_at?: string | null;
|
|
207
|
-
}
|
|
208
|
-
export interface OperativeTypeGoverned {
|
|
209
|
-
resolvable: boolean;
|
|
210
|
-
refusal_reason?: string;
|
|
211
|
-
version?: number;
|
|
212
|
-
role?: string;
|
|
213
|
-
required_capabilities: string[];
|
|
214
|
-
allowed_commissioners: string[];
|
|
215
|
-
sandbox_requirement?: string;
|
|
216
|
-
supports_clustering: boolean;
|
|
217
|
-
escalation?: string;
|
|
218
|
-
execution_provider?: string;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* The AUTHORED VALUES of the fields the runtime does not consume.
|
|
222
|
-
*
|
|
223
|
-
* Naming the fields without their content was half a contract: it told a consumer that
|
|
224
|
-
* `default_model_policy_ref` exists, never what it says — and the whole point of the declared/enforced split
|
|
225
|
-
* is to show what is configured next to what binds.
|
|
226
|
-
*
|
|
227
|
-
* `preferences` is opaque, product-authored JSON. It is present on this TARGET-BOUND read, where only an
|
|
228
|
-
* operator already authorized at the owning product can see it, and deliberately absent from the
|
|
229
|
-
* platform-scoped enrollment detail. Different breadth, different answer.
|
|
230
|
-
*/
|
|
231
|
-
export interface OperativeTypeDeclared {
|
|
232
|
-
present: boolean;
|
|
233
|
-
display_name?: string;
|
|
234
|
-
description?: string;
|
|
235
|
-
default_model_policy_ref: string;
|
|
236
|
-
max_wall_clock_ms: number;
|
|
237
|
-
max_iterations: number;
|
|
238
|
-
artifact_contract: string[];
|
|
239
|
-
/** The record's OWN declared envelope — not the one resolved at dispatch. See `serving_envelope_source`. */
|
|
240
|
-
execution_envelope: unknown | null;
|
|
241
|
-
preferences: unknown | null;
|
|
242
|
-
}
|
|
243
|
-
export interface OperativeTypeView {
|
|
244
|
-
product_id: string;
|
|
245
|
-
operative_id: string;
|
|
246
|
-
record: OperativeTypeRecordState;
|
|
247
|
-
governed: OperativeTypeGoverned;
|
|
248
|
-
declared: OperativeTypeDeclared;
|
|
249
|
-
enforcement: OperativeTypeEnforcement;
|
|
250
|
-
}
|
|
251
|
-
export interface OperativeTypeVersion {
|
|
252
|
-
version: number;
|
|
253
|
-
content_digest: string;
|
|
254
|
-
authored_by: string;
|
|
255
|
-
authored_at: string;
|
|
256
|
-
is_active: boolean;
|
|
257
|
-
role: string;
|
|
258
|
-
display_name: string;
|
|
259
|
-
}
|
|
260
|
-
export interface OperativeTypeDetail extends OperativeTypeView {
|
|
261
|
-
history: OperativeTypeVersion[];
|
|
262
|
-
as_of: string;
|
|
263
|
-
}
|
|
264
|
-
export interface OperativeTypeList {
|
|
265
|
-
operative_types: OperativeTypeView[];
|
|
266
|
-
as_of: string;
|
|
267
|
-
}
|
|
53
|
+
export type { AuthorityEnvelope, EnrollmentDetail, EnrollmentList, OperativeTypeDetail, OperativeTypeList, PersonalityList, PersonalityResolution, ProjectList, } from './generated/contract-types.js';
|
|
54
|
+
import type { AuthorityEnvelope, EnrollmentDetail, EnrollmentList, OperativeTypeDetail, OperativeTypeList, PersonalityList, PersonalityResolution, ProjectList } from './generated/contract-types.js';
|
|
268
55
|
/**
|
|
269
56
|
* AdminClient is a thin wrapper over the Operator Gateway's governance reads. Each method is one request; the
|
|
270
57
|
* gateway authorizes before proxying, and a non-2xx response throws.
|
|
@@ -273,6 +60,20 @@ export interface OperativeTypeList {
|
|
|
273
60
|
* is ambiguous across products, and resolving one by picking a match would show a caller another product's
|
|
274
61
|
* governance — so the detail methods take (productId, id) and encode both.
|
|
275
62
|
*/
|
|
63
|
+
/**
|
|
64
|
+
* A CONTRACT-COVERED METHOD TAKES NO TYPE PARAMETER.
|
|
65
|
+
*
|
|
66
|
+
* Six of these reads are described by platform/contracts/operator-admin/v1 and return the GENERATED type for
|
|
67
|
+
* their contract. They deliberately expose no `<T>` escape, because a caller-supplied replacement type is
|
|
68
|
+
* exactly the defect this package was rebuilt to remove: the consumer re-declares the shape by hand, the
|
|
69
|
+
* hand-written shape drifts from the wire, and nothing objects — which is how nine divergences shipped. An
|
|
70
|
+
* override would let a consumer opt back out of the contract one call site at a time, and the contract would
|
|
71
|
+
* quietly stop meaning anything.
|
|
72
|
+
*
|
|
73
|
+
* The remaining eight methods are still `<T = unknown>`. That is honest rather than lax: they declare NOTHING,
|
|
74
|
+
* so they cannot contradict the wire. They gain contracts, and lose their type parameter, when their response
|
|
75
|
+
* bodies are added to the contract home.
|
|
76
|
+
*/
|
|
276
77
|
export declare class AdminClient {
|
|
277
78
|
private readonly baseUrl;
|
|
278
79
|
private readonly headersFn;
|
|
@@ -280,15 +81,13 @@ export declare class AdminClient {
|
|
|
280
81
|
constructor(options: AdminClientOptions);
|
|
281
82
|
private request;
|
|
282
83
|
/** Every enrolled Project the operator may see. */
|
|
283
|
-
listEnrollments
|
|
84
|
+
listEnrollments(): Promise<EnrollmentList>;
|
|
284
85
|
/** One Project's enrollment record — its governed AI configuration. */
|
|
285
86
|
getEnrollment(productId: string): Promise<EnrollmentDetail>;
|
|
286
87
|
/** The Project portfolio read. */
|
|
287
|
-
listProjects
|
|
88
|
+
listProjects(): Promise<ProjectList>;
|
|
288
89
|
/** The personalities the conductor is actually serving (the file registry). */
|
|
289
|
-
listPersonalities<
|
|
290
|
-
personalities: PersonalitySummary[];
|
|
291
|
-
}>(): Promise<T>;
|
|
90
|
+
listPersonalities(): Promise<PersonalityList>;
|
|
292
91
|
/** The governed Personality Records inside the operator's read scope, optionally narrowed to one product. */
|
|
293
92
|
listPersonalityRecords<T = unknown>(productId?: string): Promise<T>;
|
|
294
93
|
/** One governed Personality Record and its version history. */
|
|
@@ -316,7 +115,7 @@ export declare class AdminClient {
|
|
|
316
115
|
* COMPATIBILITY, not governance — the Provider Record has not cut over, so nothing it declares is in force.
|
|
317
116
|
* A consumer that renders this as "governed" states the opposite of the truth.
|
|
318
117
|
*/
|
|
319
|
-
getPersonalityModelPolicy
|
|
118
|
+
getPersonalityModelPolicy(personalityId: string): Promise<PersonalityResolution>;
|
|
320
119
|
/** The Provider Records the platform declares. Platform-scoped: a provider is platform configuration. */
|
|
321
120
|
listProviders<T = unknown>(): Promise<T>;
|
|
322
121
|
/** One Provider Record with its authored and derived halves. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAOzD;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -56,6 +56,20 @@ export class AdminError extends Error {
|
|
|
56
56
|
* is ambiguous across products, and resolving one by picking a match would show a caller another product's
|
|
57
57
|
* governance — so the detail methods take (productId, id) and encode both.
|
|
58
58
|
*/
|
|
59
|
+
/**
|
|
60
|
+
* A CONTRACT-COVERED METHOD TAKES NO TYPE PARAMETER.
|
|
61
|
+
*
|
|
62
|
+
* Six of these reads are described by platform/contracts/operator-admin/v1 and return the GENERATED type for
|
|
63
|
+
* their contract. They deliberately expose no `<T>` escape, because a caller-supplied replacement type is
|
|
64
|
+
* exactly the defect this package was rebuilt to remove: the consumer re-declares the shape by hand, the
|
|
65
|
+
* hand-written shape drifts from the wire, and nothing objects — which is how nine divergences shipped. An
|
|
66
|
+
* override would let a consumer opt back out of the contract one call site at a time, and the contract would
|
|
67
|
+
* quietly stop meaning anything.
|
|
68
|
+
*
|
|
69
|
+
* The remaining eight methods are still `<T = unknown>`. That is honest rather than lax: they declare NOTHING,
|
|
70
|
+
* so they cannot contradict the wire. They gain contracts, and lose their type parameter, when their response
|
|
71
|
+
* bodies are added to the contract home.
|
|
72
|
+
*/
|
|
59
73
|
export class AdminClient {
|
|
60
74
|
constructor(options) {
|
|
61
75
|
this.baseUrl = options.baseUrl.replace(/\/$/, '');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,0GAA0G;AAC1G,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAWtC;;;;;;;GAOG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAInC,YAAY,MAAc,EAAE,IAAY,EAAE,MAAc;QACtD,KAAK,CAAC,cAAc,MAAM,IAAI,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@consciousclouds/admin-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "ConsciousClouds Universal Admin SDK \u2014 the thin, policy-free client for the Operator Gateway's governance reads: Projects/enrollment, Personalities and their governed records, effective authority envelopes, and Operative Type rosters. Types + HTTP wrappers only; every authorization decision belongs to the Operator Gateway and the Control Plane.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|