@eir-labs/coltrane 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/bandleader.json +54 -0
- package/agents/bill.json +4 -2
- package/agents/change-verifier.json +2 -1
- package/agents/code-implementer.json +7 -4
- package/agents/john.json +5 -3
- package/agents/lineage-scout-external.json +19 -6
- package/agents/lineage-scribe.json +20 -9
- package/agents/lineage-weaver.json +26 -11
- package/agents/miles.json +2 -1
- package/agents/players/bandleader.md +70 -0
- package/agents/pr-publisher.json +4 -2
- package/agents/red-spec-drafter.json +12 -6
- package/agents/room-prober.json +29 -0
- package/agents/source-walker.json +1 -1
- package/charts/room-probe-chart-v1.json +14 -0
- package/charts/worker-contract-docker-v2.json +135 -0
- package/charts/worker-contract-v3.json +206 -0
- package/dist/src/boundary_check.d.ts +18 -0
- package/dist/src/boundary_check.js +70 -0
- package/dist/src/boundary_check.js.map +1 -0
- package/dist/src/boundary_scan.d.ts +62 -0
- package/dist/src/boundary_scan.js +93 -0
- package/dist/src/boundary_scan.js.map +1 -0
- package/dist/src/chart.js +34 -1
- package/dist/src/chart.js.map +1 -1
- package/dist/src/claude_invoker.d.ts +2 -1
- package/dist/src/claude_invoker.js +150 -17
- package/dist/src/claude_invoker.js.map +1 -1
- package/dist/src/cli.d.ts +1 -1
- package/dist/src/cli.js +61 -26
- package/dist/src/cli.js.map +1 -1
- package/dist/src/drain_preflight.d.ts +33 -0
- package/dist/src/drain_preflight.js +97 -0
- package/dist/src/drain_preflight.js.map +1 -0
- package/dist/src/genome_schema.d.ts +390 -9
- package/dist/src/genome_schema.js +163 -8
- package/dist/src/genome_schema.js.map +1 -1
- package/dist/src/genome_store.js +9 -0
- package/dist/src/genome_store.js.map +1 -1
- package/dist/src/genome_writer.d.ts +1 -1
- package/dist/src/genome_writer.js +10 -2
- package/dist/src/genome_writer.js.map +1 -1
- package/dist/src/gig_conformance.d.ts +66 -0
- package/dist/src/gig_conformance.js +153 -0
- package/dist/src/gig_conformance.js.map +1 -0
- package/dist/src/gig_tracker.js +8 -0
- package/dist/src/gig_tracker.js.map +1 -1
- package/dist/src/grounding.d.ts +44 -0
- package/dist/src/grounding.js +127 -0
- package/dist/src/grounding.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/institution_loader.d.ts +29 -5
- package/dist/src/institution_loader.js +67 -6
- package/dist/src/institution_loader.js.map +1 -1
- package/dist/src/lineage_adoption.d.ts +82 -0
- package/dist/src/lineage_adoption.js +82 -0
- package/dist/src/lineage_adoption.js.map +1 -0
- package/dist/src/lineage_persist.d.ts +34 -0
- package/dist/src/lineage_persist.js +60 -0
- package/dist/src/lineage_persist.js.map +1 -0
- package/dist/src/loader.d.ts +13 -0
- package/dist/src/loader.js +43 -2
- package/dist/src/loader.js.map +1 -1
- package/dist/src/mcp.js +37 -4
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/org_hire.d.ts +23 -0
- package/dist/src/org_hire.js +42 -0
- package/dist/src/org_hire.js.map +1 -0
- package/dist/src/outputs.d.ts +17 -0
- package/dist/src/outputs.js +86 -1
- package/dist/src/outputs.js.map +1 -1
- package/dist/src/player_to_claude_code.js +26 -2
- package/dist/src/player_to_claude_code.js.map +1 -1
- package/dist/src/registry.d.ts +3 -1
- package/dist/src/registry.js +43 -3
- package/dist/src/registry.js.map +1 -1
- package/dist/src/repo_index.d.ts +58 -0
- package/dist/src/repo_index.js +232 -0
- package/dist/src/repo_index.js.map +1 -0
- package/dist/src/reuse.d.ts +44 -4
- package/dist/src/reuse.js +0 -0
- package/dist/src/reuse.js.map +1 -1
- package/dist/src/runtime.d.ts +82 -0
- package/dist/src/runtime.js +254 -25
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/server.d.ts +37 -0
- package/dist/src/server.js +422 -11
- package/dist/src/server.js.map +1 -1
- package/dist/src/server_relay.d.ts +40 -2
- package/dist/src/server_relay.js +186 -19
- package/dist/src/server_relay.js.map +1 -1
- package/dist/src/tool_providers.d.ts +27 -0
- package/dist/src/tool_providers.js +48 -0
- package/dist/src/tool_providers.js.map +1 -1
- package/dist/src/venue_credential.d.ts +41 -0
- package/dist/src/venue_credential.js +57 -0
- package/dist/src/venue_credential.js.map +1 -0
- package/dist/src/venue_realize.d.ts +23 -0
- package/dist/src/venue_realize.js +43 -3
- package/dist/src/venue_realize.js.map +1 -1
- package/dist/src/venue_realizer.d.ts +224 -0
- package/dist/src/venue_realizer.js +889 -0
- package/dist/src/venue_realizer.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/worker.d.ts +37 -0
- package/dist/src/worker.js +127 -24
- package/dist/src/worker.js.map +1 -1
- package/dist/src/worker_env.d.ts +79 -0
- package/dist/src/worker_env.js +322 -0
- package/dist/src/worker_env.js.map +1 -0
- package/dist/src/workspace.d.ts +12 -1
- package/dist/src/workspace.js +10 -3
- package/dist/src/workspace.js.map +1 -1
- package/domain_types/change-context.json +59 -13
- package/domain_types/lineage-adoption-target.json +22 -0
- package/domain_types/lineage-map.json +7 -2
- package/domain_types/lineage-record.json +55 -5
- package/domain_types/prior-art-hit.json +16 -1
- package/domain_types/red-spec.json +5 -3
- package/domain_types/woodshed-record.json +149 -0
- package/evals/gist-present.json +7 -0
- package/institutions/coltrane.json +178 -6
- package/package.json +6 -3
- package/skills/non-vacuity-probe/fixtures/fixture-001.json +17 -0
- package/skills/non-vacuity-probe/meta.json +12 -0
- package/skills/non-vacuity-probe/skill.md +27 -0
- package/skills/non-vacuity-probe/skill.mjs +81 -0
- package/standards/lineage-adopt-v0.json +37 -0
- package/standards/room-probe-v1.json +28 -0
- package/standards/software-change-pr-v1.json +15 -15
- package/standards/software-change-red-first-v0.json +183 -0
- package/standards/spec-review-and-sequence-v0.json +112 -0
- package/standards/studio-session-v0.json +101 -0
- package/tours/coltrane.json +72 -0
- package/venues/engine-room-v1.json +32 -0
|
@@ -965,7 +965,7 @@ export type LineageRecordRefOutput = z.output<typeof LineageRecordRefSchema>;
|
|
|
965
965
|
* `evidence_grade` types the distinction the diplomatics tradition draws and this codebase had
|
|
966
966
|
* only ever narrated: ARCHIVE — the primary was fetched, and `retrieved_at` says when — versus
|
|
967
967
|
* ATTESTATION — someone declared it. The grade is recorded and never laundered upward. */
|
|
968
|
-
export declare const CitationSchema: z.ZodEffects<z.ZodObject<{
|
|
968
|
+
export declare const CitationSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
969
969
|
/** Author names as cited, e.g. "Crawford, S.E.S.". At least one — an anonymous citation is a rumour. */
|
|
970
970
|
authors: z.ZodArray<z.ZodString, "many">;
|
|
971
971
|
year: z.ZodNumber;
|
|
@@ -1020,6 +1020,26 @@ export declare const CitationSchema: z.ZodEffects<z.ZodObject<{
|
|
|
1020
1020
|
doi?: string | undefined;
|
|
1021
1021
|
url?: string | undefined;
|
|
1022
1022
|
retrieved_at?: string | undefined;
|
|
1023
|
+
}>, {
|
|
1024
|
+
authors: string[];
|
|
1025
|
+
year: number;
|
|
1026
|
+
title: string;
|
|
1027
|
+
venue: string;
|
|
1028
|
+
evidence_grade: "archive" | "attestation";
|
|
1029
|
+
locator?: string | undefined;
|
|
1030
|
+
doi?: string | undefined;
|
|
1031
|
+
url?: string | undefined;
|
|
1032
|
+
retrieved_at?: string | undefined;
|
|
1033
|
+
}, {
|
|
1034
|
+
authors: string[];
|
|
1035
|
+
year: number;
|
|
1036
|
+
title: string;
|
|
1037
|
+
venue: string;
|
|
1038
|
+
evidence_grade: "archive" | "attestation";
|
|
1039
|
+
locator?: string | undefined;
|
|
1040
|
+
doi?: string | undefined;
|
|
1041
|
+
url?: string | undefined;
|
|
1042
|
+
retrieved_at?: string | undefined;
|
|
1023
1043
|
}>;
|
|
1024
1044
|
/** How a genome schema class stands to the published work behind it.
|
|
1025
1045
|
*
|
|
@@ -1042,7 +1062,7 @@ export declare const SchemaAttributionSchema: z.ZodObject<{
|
|
|
1042
1062
|
subject: z.ZodString;
|
|
1043
1063
|
relation: z.ZodEnum<["descends-from", "aligns-with", "diverges-from", "supersedes", "informed-by"]>;
|
|
1044
1064
|
what_taken: z.ZodString;
|
|
1045
|
-
citation: z.ZodEffects<z.ZodObject<{
|
|
1065
|
+
citation: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
1046
1066
|
/** Author names as cited, e.g. "Crawford, S.E.S.". At least one — an anonymous citation is a rumour. */
|
|
1047
1067
|
authors: z.ZodArray<z.ZodString, "many">;
|
|
1048
1068
|
year: z.ZodNumber;
|
|
@@ -1097,6 +1117,26 @@ export declare const SchemaAttributionSchema: z.ZodObject<{
|
|
|
1097
1117
|
doi?: string | undefined;
|
|
1098
1118
|
url?: string | undefined;
|
|
1099
1119
|
retrieved_at?: string | undefined;
|
|
1120
|
+
}>, {
|
|
1121
|
+
authors: string[];
|
|
1122
|
+
year: number;
|
|
1123
|
+
title: string;
|
|
1124
|
+
venue: string;
|
|
1125
|
+
evidence_grade: "archive" | "attestation";
|
|
1126
|
+
locator?: string | undefined;
|
|
1127
|
+
doi?: string | undefined;
|
|
1128
|
+
url?: string | undefined;
|
|
1129
|
+
retrieved_at?: string | undefined;
|
|
1130
|
+
}, {
|
|
1131
|
+
authors: string[];
|
|
1132
|
+
year: number;
|
|
1133
|
+
title: string;
|
|
1134
|
+
venue: string;
|
|
1135
|
+
evidence_grade: "archive" | "attestation";
|
|
1136
|
+
locator?: string | undefined;
|
|
1137
|
+
doi?: string | undefined;
|
|
1138
|
+
url?: string | undefined;
|
|
1139
|
+
retrieved_at?: string | undefined;
|
|
1100
1140
|
}>;
|
|
1101
1141
|
}, "strict", z.ZodTypeAny, {
|
|
1102
1142
|
subject: string;
|
|
@@ -2269,7 +2309,214 @@ export declare const VenueLifecycleSchema: z.ZodObject<{
|
|
|
2269
2309
|
policy?: "ephemeral" | "standing" | undefined;
|
|
2270
2310
|
rebuild_cadence?: string | undefined;
|
|
2271
2311
|
}>;
|
|
2272
|
-
|
|
2312
|
+
/** The CLOSED set of device KINDS a room may ask a host for — a class, never a path. A contract that
|
|
2313
|
+
* could name a raw device path could name the raw memory device (`/dev/mem`) or a whole block
|
|
2314
|
+
* device, which is a host compromise submitted as a hardware request; the concrete nodes are the
|
|
2315
|
+
* machine's business, mapped from the class at realization. Validated at the VALUE level so a path
|
|
2316
|
+
* is refused by name (on `devices`), not merely as an unknown key. */
|
|
2317
|
+
export declare const VenueDeviceClassSchema: z.ZodEnum<["audio", "gpio", "i2c", "serial", "spi", "video"]>;
|
|
2318
|
+
export declare const DEVICE_CLASSES: ["audio", "gpio", "i2c", "serial", "spi", "video"];
|
|
2319
|
+
/** One MCP server a room stands up: a slug, a transport, the launch command, and which credential
|
|
2320
|
+
* CLASSES it needs (never material). Modelled on what a room declares and deliberately NOT
|
|
2321
|
+
* `.strict()`, so a future transport-specific field is an addition rather than a breaking change —
|
|
2322
|
+
* the sub-schema is inferred from the contract's own shape, not a formally frozen surface. */
|
|
2323
|
+
export declare const VenueMcpServerSchema: z.ZodObject<{
|
|
2324
|
+
slug: z.ZodString;
|
|
2325
|
+
transport: z.ZodString;
|
|
2326
|
+
command: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2327
|
+
/** The endpoint an over-the-wire transport (e.g. `sse`) connects to. Absent for a `stdio` server,
|
|
2328
|
+
* which is reached by its `command` instead — the per-transport requirement is stated once, in the
|
|
2329
|
+
* cross-field rule on `VenueSchema`, so both doors (the loader and venue_define) enforce it. */
|
|
2330
|
+
url: z.ZodOptional<z.ZodString>;
|
|
2331
|
+
credential_names: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2332
|
+
}, "strip", z.ZodTypeAny, {
|
|
2333
|
+
slug: string;
|
|
2334
|
+
transport: string;
|
|
2335
|
+
command: string[];
|
|
2336
|
+
credential_names: string[];
|
|
2337
|
+
url?: string | undefined;
|
|
2338
|
+
}, {
|
|
2339
|
+
slug: string;
|
|
2340
|
+
transport: string;
|
|
2341
|
+
url?: string | undefined;
|
|
2342
|
+
command?: string[] | undefined;
|
|
2343
|
+
credential_names?: string[] | undefined;
|
|
2344
|
+
}>;
|
|
2345
|
+
export declare const VenueObjectSchema: z.ZodObject<{
|
|
2346
|
+
slug: z.ZodString;
|
|
2347
|
+
/** Exactly one owning institution. The institution is the duty holder; the office below is the
|
|
2348
|
+
* appointed accountable individual. */
|
|
2349
|
+
institution_slug: z.ZodString;
|
|
2350
|
+
/** Why this room is shaped the way it is — read at review, never at runtime. */
|
|
2351
|
+
description: z.ZodOptional<z.ZodString>;
|
|
2352
|
+
/** The base kind of room (e.g. "ingest-empty", "code-work"). A label for humans and for
|
|
2353
|
+
* "which room does this work want", not a resolvable reference. */
|
|
2354
|
+
flavor: z.ZodOptional<z.ZodString>;
|
|
2355
|
+
/** Defaulted, not required, and the default is the EMPTY room. Every access-shaped field here
|
|
2356
|
+
* leans the same way: absent doors reach nothing, absent installs install nothing, an absent
|
|
2357
|
+
* credential surface permits nothing. A venue that forgot to state its equipment must hold
|
|
2358
|
+
* nothing rather than hold whatever the reader assumed — and both doors into this class (the
|
|
2359
|
+
* loader and venue_define) get that from the one schema rather than from two agreeing habits. */
|
|
2360
|
+
equipment: z.ZodDefault<z.ZodObject<{
|
|
2361
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2362
|
+
}, "strict", z.ZodTypeAny, {
|
|
2363
|
+
tools: string[];
|
|
2364
|
+
}, {
|
|
2365
|
+
tools?: string[] | undefined;
|
|
2366
|
+
}>>;
|
|
2367
|
+
doors: z.ZodOptional<z.ZodObject<{
|
|
2368
|
+
ingress: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
|
|
2369
|
+
egress: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
|
|
2370
|
+
}, "strict", z.ZodTypeAny, {
|
|
2371
|
+
ingress: string[];
|
|
2372
|
+
egress: string[];
|
|
2373
|
+
}, {
|
|
2374
|
+
ingress?: string[] | undefined;
|
|
2375
|
+
egress?: string[] | undefined;
|
|
2376
|
+
}>>;
|
|
2377
|
+
/** Digest-pinned software the room contains. */
|
|
2378
|
+
installs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2379
|
+
/** Which CLASSES of credential may legitimately be present, by name. Never material, and never
|
|
2380
|
+
* a field material could occupy: a room that declares nothing here is a room where finding a
|
|
2381
|
+
* credential is a breach rather than a configuration difference. */
|
|
2382
|
+
credential_surface: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2383
|
+
lifecycle: z.ZodDefault<z.ZodObject<{
|
|
2384
|
+
policy: z.ZodDefault<z.ZodEnum<["ephemeral", "standing"]>>;
|
|
2385
|
+
/** ISO-8601 duration or cron-shaped cadence — read by the responsible office, not the engine. */
|
|
2386
|
+
rebuild_cadence: z.ZodOptional<z.ZodString>;
|
|
2387
|
+
}, "strict", z.ZodTypeAny, {
|
|
2388
|
+
policy: "ephemeral" | "standing";
|
|
2389
|
+
rebuild_cadence?: string | undefined;
|
|
2390
|
+
}, {
|
|
2391
|
+
policy?: "ephemeral" | "standing" | undefined;
|
|
2392
|
+
rebuild_cadence?: string | undefined;
|
|
2393
|
+
}>>;
|
|
2394
|
+
/** The accountable office: an institutional chair id (the office, not its incumbent). One named
|
|
2395
|
+
* duty-holder answers for the room and for what it permits. */
|
|
2396
|
+
responsible_chair: z.ZodOptional<z.ZodString>;
|
|
2397
|
+
/** WHICH SUBSTRATE this room requires — a free string a deployment matches its available
|
|
2398
|
+
* realizers against (e.g. "container"). A FREE string, not a closed enum: the set of substrates
|
|
2399
|
+
* is a deployment fact rather than a genome one, and freezing it here would over-constrain
|
|
2400
|
+
* substrates the contract has not yet named. Absent means the deployment's default — deny-by-
|
|
2401
|
+
* default belongs on CAPABILITY, not on portability, so a room that names no substrate runs on
|
|
2402
|
+
* whatever is supplied, the same lean an unnamed venue takes on targeting. */
|
|
2403
|
+
substrate: z.ZodOptional<z.ZodString>;
|
|
2404
|
+
/** The MCP servers the room stands up. Each names credential CLASSES, never material — the same
|
|
2405
|
+
* discipline `credential_surface` takes, restated at the server that consumes them. */
|
|
2406
|
+
mcp_servers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
2407
|
+
slug: z.ZodString;
|
|
2408
|
+
transport: z.ZodString;
|
|
2409
|
+
command: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2410
|
+
/** The endpoint an over-the-wire transport (e.g. `sse`) connects to. Absent for a `stdio` server,
|
|
2411
|
+
* which is reached by its `command` instead — the per-transport requirement is stated once, in the
|
|
2412
|
+
* cross-field rule on `VenueSchema`, so both doors (the loader and venue_define) enforce it. */
|
|
2413
|
+
url: z.ZodOptional<z.ZodString>;
|
|
2414
|
+
credential_names: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2415
|
+
}, "strip", z.ZodTypeAny, {
|
|
2416
|
+
slug: string;
|
|
2417
|
+
transport: string;
|
|
2418
|
+
command: string[];
|
|
2419
|
+
credential_names: string[];
|
|
2420
|
+
url?: string | undefined;
|
|
2421
|
+
}, {
|
|
2422
|
+
slug: string;
|
|
2423
|
+
transport: string;
|
|
2424
|
+
url?: string | undefined;
|
|
2425
|
+
command?: string[] | undefined;
|
|
2426
|
+
credential_names?: string[] | undefined;
|
|
2427
|
+
}>, "many">>;
|
|
2428
|
+
/** The device CLASSES the room needs — a kind (`serial`, `gpio`…), never a path. The machine
|
|
2429
|
+
* maps a class to concrete nodes and the owning group; a contract that could name a node could
|
|
2430
|
+
* name the raw memory device, so the value is pinned to the closed enumeration. */
|
|
2431
|
+
devices: z.ZodDefault<z.ZodArray<z.ZodEnum<["audio", "gpio", "i2c", "serial", "spi", "video"]>, "many">>;
|
|
2432
|
+
/** The architectures this room supports (e.g. `arm64`). Absent means any: portability is not
|
|
2433
|
+
* capability, so an unnamed architecture is realizable on any host rather than none. */
|
|
2434
|
+
architectures: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2435
|
+
/** A ceiling on how many chairs may realize against this room at once. Per-chair realization
|
|
2436
|
+
* multiplies substrate resources by the WIDTH of a phase, and memory scales with running
|
|
2437
|
+
* processes, so the bound belongs in the contract where an author sets it deliberately rather
|
|
2438
|
+
* than discovering it with the first wide DAG on the first box that runs it. */
|
|
2439
|
+
max_concurrent_chairs: z.ZodOptional<z.ZodNumber>;
|
|
2440
|
+
/** The shared FLOOR this room composes over, so N rooms cost floor + Σ(deltas) rather than
|
|
2441
|
+
* N × environment. A label two rooms share to declare they build on the same base. */
|
|
2442
|
+
floor: z.ZodOptional<z.ZodString>;
|
|
2443
|
+
}, "strict", z.ZodTypeAny, {
|
|
2444
|
+
slug: string;
|
|
2445
|
+
institution_slug: string;
|
|
2446
|
+
equipment: {
|
|
2447
|
+
tools: string[];
|
|
2448
|
+
};
|
|
2449
|
+
installs: string[];
|
|
2450
|
+
credential_surface: string[];
|
|
2451
|
+
lifecycle: {
|
|
2452
|
+
policy: "ephemeral" | "standing";
|
|
2453
|
+
rebuild_cadence?: string | undefined;
|
|
2454
|
+
};
|
|
2455
|
+
mcp_servers: {
|
|
2456
|
+
slug: string;
|
|
2457
|
+
transport: string;
|
|
2458
|
+
command: string[];
|
|
2459
|
+
credential_names: string[];
|
|
2460
|
+
url?: string | undefined;
|
|
2461
|
+
}[];
|
|
2462
|
+
devices: ("audio" | "gpio" | "i2c" | "serial" | "spi" | "video")[];
|
|
2463
|
+
architectures: string[];
|
|
2464
|
+
description?: string | undefined;
|
|
2465
|
+
flavor?: string | undefined;
|
|
2466
|
+
doors?: {
|
|
2467
|
+
ingress: string[];
|
|
2468
|
+
egress: string[];
|
|
2469
|
+
} | undefined;
|
|
2470
|
+
responsible_chair?: string | undefined;
|
|
2471
|
+
substrate?: string | undefined;
|
|
2472
|
+
max_concurrent_chairs?: number | undefined;
|
|
2473
|
+
floor?: string | undefined;
|
|
2474
|
+
}, {
|
|
2475
|
+
slug: string;
|
|
2476
|
+
institution_slug: string;
|
|
2477
|
+
description?: string | undefined;
|
|
2478
|
+
flavor?: string | undefined;
|
|
2479
|
+
equipment?: {
|
|
2480
|
+
tools?: string[] | undefined;
|
|
2481
|
+
} | undefined;
|
|
2482
|
+
doors?: {
|
|
2483
|
+
ingress?: string[] | undefined;
|
|
2484
|
+
egress?: string[] | undefined;
|
|
2485
|
+
} | undefined;
|
|
2486
|
+
installs?: string[] | undefined;
|
|
2487
|
+
credential_surface?: string[] | undefined;
|
|
2488
|
+
lifecycle?: {
|
|
2489
|
+
policy?: "ephemeral" | "standing" | undefined;
|
|
2490
|
+
rebuild_cadence?: string | undefined;
|
|
2491
|
+
} | undefined;
|
|
2492
|
+
responsible_chair?: string | undefined;
|
|
2493
|
+
substrate?: string | undefined;
|
|
2494
|
+
mcp_servers?: {
|
|
2495
|
+
slug: string;
|
|
2496
|
+
transport: string;
|
|
2497
|
+
url?: string | undefined;
|
|
2498
|
+
command?: string[] | undefined;
|
|
2499
|
+
credential_names?: string[] | undefined;
|
|
2500
|
+
}[] | undefined;
|
|
2501
|
+
devices?: ("audio" | "gpio" | "i2c" | "serial" | "spi" | "video")[] | undefined;
|
|
2502
|
+
architectures?: string[] | undefined;
|
|
2503
|
+
max_concurrent_chairs?: number | undefined;
|
|
2504
|
+
floor?: string | undefined;
|
|
2505
|
+
}>;
|
|
2506
|
+
/**
|
|
2507
|
+
* The venue contract, with the cross-field MCP rules a single field cannot state.
|
|
2508
|
+
*
|
|
2509
|
+
* The inner `VenueObjectSchema` above is a plain `ZodObject` — it retains `.shape`, which
|
|
2510
|
+
* `zodToMcpProps(VenueObjectSchema)` (the advertised MCP surface) and `Object.keys(...shape)` (the
|
|
2511
|
+
* hosted-write key list) both need. `VenueSchema` wraps it in a `.superRefine`, which is a
|
|
2512
|
+
* `ZodEffects` that has NEITHER — so those two consumers read the inner object while every
|
|
2513
|
+
* `.parse`/`.safeParse` caller (the loader, `venue_define`, the realizer) gets the cross-field rules
|
|
2514
|
+
* for free. The three rules below are the ones a room could otherwise author "granted but
|
|
2515
|
+
* unprovided": a tool naming a server the room never declared, a transport missing the field that
|
|
2516
|
+
* makes it reachable, or a server needing a credential the surface does not admit. Each is refused at
|
|
2517
|
+
* PARSE, moving the discovery from a box nobody is watching to the author's own terminal.
|
|
2518
|
+
*/
|
|
2519
|
+
export declare const VenueSchema: z.ZodEffects<z.ZodObject<{
|
|
2273
2520
|
slug: z.ZodString;
|
|
2274
2521
|
/** Exactly one owning institution. The institution is the duty holder; the office below is the
|
|
2275
2522
|
* appointed accountable individual. */
|
|
@@ -2321,6 +2568,52 @@ export declare const VenueSchema: z.ZodObject<{
|
|
|
2321
2568
|
/** The accountable office: an institutional chair id (the office, not its incumbent). One named
|
|
2322
2569
|
* duty-holder answers for the room and for what it permits. */
|
|
2323
2570
|
responsible_chair: z.ZodOptional<z.ZodString>;
|
|
2571
|
+
/** WHICH SUBSTRATE this room requires — a free string a deployment matches its available
|
|
2572
|
+
* realizers against (e.g. "container"). A FREE string, not a closed enum: the set of substrates
|
|
2573
|
+
* is a deployment fact rather than a genome one, and freezing it here would over-constrain
|
|
2574
|
+
* substrates the contract has not yet named. Absent means the deployment's default — deny-by-
|
|
2575
|
+
* default belongs on CAPABILITY, not on portability, so a room that names no substrate runs on
|
|
2576
|
+
* whatever is supplied, the same lean an unnamed venue takes on targeting. */
|
|
2577
|
+
substrate: z.ZodOptional<z.ZodString>;
|
|
2578
|
+
/** The MCP servers the room stands up. Each names credential CLASSES, never material — the same
|
|
2579
|
+
* discipline `credential_surface` takes, restated at the server that consumes them. */
|
|
2580
|
+
mcp_servers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
2581
|
+
slug: z.ZodString;
|
|
2582
|
+
transport: z.ZodString;
|
|
2583
|
+
command: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2584
|
+
/** The endpoint an over-the-wire transport (e.g. `sse`) connects to. Absent for a `stdio` server,
|
|
2585
|
+
* which is reached by its `command` instead — the per-transport requirement is stated once, in the
|
|
2586
|
+
* cross-field rule on `VenueSchema`, so both doors (the loader and venue_define) enforce it. */
|
|
2587
|
+
url: z.ZodOptional<z.ZodString>;
|
|
2588
|
+
credential_names: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2589
|
+
}, "strip", z.ZodTypeAny, {
|
|
2590
|
+
slug: string;
|
|
2591
|
+
transport: string;
|
|
2592
|
+
command: string[];
|
|
2593
|
+
credential_names: string[];
|
|
2594
|
+
url?: string | undefined;
|
|
2595
|
+
}, {
|
|
2596
|
+
slug: string;
|
|
2597
|
+
transport: string;
|
|
2598
|
+
url?: string | undefined;
|
|
2599
|
+
command?: string[] | undefined;
|
|
2600
|
+
credential_names?: string[] | undefined;
|
|
2601
|
+
}>, "many">>;
|
|
2602
|
+
/** The device CLASSES the room needs — a kind (`serial`, `gpio`…), never a path. The machine
|
|
2603
|
+
* maps a class to concrete nodes and the owning group; a contract that could name a node could
|
|
2604
|
+
* name the raw memory device, so the value is pinned to the closed enumeration. */
|
|
2605
|
+
devices: z.ZodDefault<z.ZodArray<z.ZodEnum<["audio", "gpio", "i2c", "serial", "spi", "video"]>, "many">>;
|
|
2606
|
+
/** The architectures this room supports (e.g. `arm64`). Absent means any: portability is not
|
|
2607
|
+
* capability, so an unnamed architecture is realizable on any host rather than none. */
|
|
2608
|
+
architectures: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
2609
|
+
/** A ceiling on how many chairs may realize against this room at once. Per-chair realization
|
|
2610
|
+
* multiplies substrate resources by the WIDTH of a phase, and memory scales with running
|
|
2611
|
+
* processes, so the bound belongs in the contract where an author sets it deliberately rather
|
|
2612
|
+
* than discovering it with the first wide DAG on the first box that runs it. */
|
|
2613
|
+
max_concurrent_chairs: z.ZodOptional<z.ZodNumber>;
|
|
2614
|
+
/** The shared FLOOR this room composes over, so N rooms cost floor + Σ(deltas) rather than
|
|
2615
|
+
* N × environment. A label two rooms share to declare they build on the same base. */
|
|
2616
|
+
floor: z.ZodOptional<z.ZodString>;
|
|
2324
2617
|
}, "strict", z.ZodTypeAny, {
|
|
2325
2618
|
slug: string;
|
|
2326
2619
|
institution_slug: string;
|
|
@@ -2333,6 +2626,77 @@ export declare const VenueSchema: z.ZodObject<{
|
|
|
2333
2626
|
policy: "ephemeral" | "standing";
|
|
2334
2627
|
rebuild_cadence?: string | undefined;
|
|
2335
2628
|
};
|
|
2629
|
+
mcp_servers: {
|
|
2630
|
+
slug: string;
|
|
2631
|
+
transport: string;
|
|
2632
|
+
command: string[];
|
|
2633
|
+
credential_names: string[];
|
|
2634
|
+
url?: string | undefined;
|
|
2635
|
+
}[];
|
|
2636
|
+
devices: ("audio" | "gpio" | "i2c" | "serial" | "spi" | "video")[];
|
|
2637
|
+
architectures: string[];
|
|
2638
|
+
description?: string | undefined;
|
|
2639
|
+
flavor?: string | undefined;
|
|
2640
|
+
doors?: {
|
|
2641
|
+
ingress: string[];
|
|
2642
|
+
egress: string[];
|
|
2643
|
+
} | undefined;
|
|
2644
|
+
responsible_chair?: string | undefined;
|
|
2645
|
+
substrate?: string | undefined;
|
|
2646
|
+
max_concurrent_chairs?: number | undefined;
|
|
2647
|
+
floor?: string | undefined;
|
|
2648
|
+
}, {
|
|
2649
|
+
slug: string;
|
|
2650
|
+
institution_slug: string;
|
|
2651
|
+
description?: string | undefined;
|
|
2652
|
+
flavor?: string | undefined;
|
|
2653
|
+
equipment?: {
|
|
2654
|
+
tools?: string[] | undefined;
|
|
2655
|
+
} | undefined;
|
|
2656
|
+
doors?: {
|
|
2657
|
+
ingress?: string[] | undefined;
|
|
2658
|
+
egress?: string[] | undefined;
|
|
2659
|
+
} | undefined;
|
|
2660
|
+
installs?: string[] | undefined;
|
|
2661
|
+
credential_surface?: string[] | undefined;
|
|
2662
|
+
lifecycle?: {
|
|
2663
|
+
policy?: "ephemeral" | "standing" | undefined;
|
|
2664
|
+
rebuild_cadence?: string | undefined;
|
|
2665
|
+
} | undefined;
|
|
2666
|
+
responsible_chair?: string | undefined;
|
|
2667
|
+
substrate?: string | undefined;
|
|
2668
|
+
mcp_servers?: {
|
|
2669
|
+
slug: string;
|
|
2670
|
+
transport: string;
|
|
2671
|
+
url?: string | undefined;
|
|
2672
|
+
command?: string[] | undefined;
|
|
2673
|
+
credential_names?: string[] | undefined;
|
|
2674
|
+
}[] | undefined;
|
|
2675
|
+
devices?: ("audio" | "gpio" | "i2c" | "serial" | "spi" | "video")[] | undefined;
|
|
2676
|
+
architectures?: string[] | undefined;
|
|
2677
|
+
max_concurrent_chairs?: number | undefined;
|
|
2678
|
+
floor?: string | undefined;
|
|
2679
|
+
}>, {
|
|
2680
|
+
slug: string;
|
|
2681
|
+
institution_slug: string;
|
|
2682
|
+
equipment: {
|
|
2683
|
+
tools: string[];
|
|
2684
|
+
};
|
|
2685
|
+
installs: string[];
|
|
2686
|
+
credential_surface: string[];
|
|
2687
|
+
lifecycle: {
|
|
2688
|
+
policy: "ephemeral" | "standing";
|
|
2689
|
+
rebuild_cadence?: string | undefined;
|
|
2690
|
+
};
|
|
2691
|
+
mcp_servers: {
|
|
2692
|
+
slug: string;
|
|
2693
|
+
transport: string;
|
|
2694
|
+
command: string[];
|
|
2695
|
+
credential_names: string[];
|
|
2696
|
+
url?: string | undefined;
|
|
2697
|
+
}[];
|
|
2698
|
+
devices: ("audio" | "gpio" | "i2c" | "serial" | "spi" | "video")[];
|
|
2699
|
+
architectures: string[];
|
|
2336
2700
|
description?: string | undefined;
|
|
2337
2701
|
flavor?: string | undefined;
|
|
2338
2702
|
doors?: {
|
|
@@ -2340,6 +2704,9 @@ export declare const VenueSchema: z.ZodObject<{
|
|
|
2340
2704
|
egress: string[];
|
|
2341
2705
|
} | undefined;
|
|
2342
2706
|
responsible_chair?: string | undefined;
|
|
2707
|
+
substrate?: string | undefined;
|
|
2708
|
+
max_concurrent_chairs?: number | undefined;
|
|
2709
|
+
floor?: string | undefined;
|
|
2343
2710
|
}, {
|
|
2344
2711
|
slug: string;
|
|
2345
2712
|
institution_slug: string;
|
|
@@ -2359,17 +2726,31 @@ export declare const VenueSchema: z.ZodObject<{
|
|
|
2359
2726
|
rebuild_cadence?: string | undefined;
|
|
2360
2727
|
} | undefined;
|
|
2361
2728
|
responsible_chair?: string | undefined;
|
|
2729
|
+
substrate?: string | undefined;
|
|
2730
|
+
mcp_servers?: {
|
|
2731
|
+
slug: string;
|
|
2732
|
+
transport: string;
|
|
2733
|
+
url?: string | undefined;
|
|
2734
|
+
command?: string[] | undefined;
|
|
2735
|
+
credential_names?: string[] | undefined;
|
|
2736
|
+
}[] | undefined;
|
|
2737
|
+
devices?: ("audio" | "gpio" | "i2c" | "serial" | "spi" | "video")[] | undefined;
|
|
2738
|
+
architectures?: string[] | undefined;
|
|
2739
|
+
max_concurrent_chairs?: number | undefined;
|
|
2740
|
+
floor?: string | undefined;
|
|
2362
2741
|
}>;
|
|
2363
2742
|
export type VenueInput = z.input<typeof VenueSchema>;
|
|
2364
2743
|
export type VenueOutput = z.output<typeof VenueSchema>;
|
|
2365
2744
|
/**
|
|
2366
|
-
*
|
|
2745
|
+
* The one cross-field venue rule that is NOT a parse error — the lifecycle snowflake below.
|
|
2367
2746
|
*
|
|
2368
|
-
*
|
|
2369
|
-
*
|
|
2370
|
-
* `
|
|
2371
|
-
*
|
|
2372
|
-
*
|
|
2747
|
+
* The MCP cross-field rules (a granted server must be declared, a transport owes its reachability
|
|
2748
|
+
* field, a credential must be in the surface) now live on `VenueSchema.superRefine`, so
|
|
2749
|
+
* `VenueSchema.safeParse` catches them directly; the split into `VenueObjectSchema` (which keeps the
|
|
2750
|
+
* `.shape` that `zodToMcpProps(VenueObjectSchema)` and `Object.keys(...shape)` need) is what let those
|
|
2751
|
+
* rules move onto the schema without breaking the advertised surface. This function remains for the
|
|
2752
|
+
* lifecycle rule, kept out of the schema so its teaching message stays a full paragraph rather than a
|
|
2753
|
+
* ZodIssue string; both doors — the loader and `venue_define` — call `safeParse` and then this.
|
|
2373
2754
|
*
|
|
2374
2755
|
* Returns the teaching message, or null when the venue is sound.
|
|
2375
2756
|
*/
|