@guuey/config 0.16.11 → 0.16.12

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/agent.d.ts CHANGED
@@ -191,6 +191,42 @@ declare const RuntimeConfigSchema: z.ZodObject<{
191
191
  declare const SystemPromptSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
192
192
  file: z.ZodString;
193
193
  }, z.core.$strict>]>;
194
+ /**
195
+ * One mode of a multi-mode agent (guuey#527). `systemPromptAppend` extends
196
+ * the base prompt (inline string or a `{ file }` the loader inlines);
197
+ * `systemPrompt` replaces it wholesale — exactly ONE of the two (the
198
+ * refine on {@link ModesSchema} enforces the xor). `tools.allowlist`, when
199
+ * present, must be a subset of the base allowlist — the WRITE GATE enforces
200
+ * that (the schema can't see the base), so a mode only ever narrows.
201
+ * `audience` is accepted for forward-compat but the SERVER hardcodes the
202
+ * binding for the recognized pair in tonight's slice.
203
+ */
204
+ declare const ModeSchema: z.ZodObject<{
205
+ systemPromptAppend: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
206
+ file: z.ZodString;
207
+ }, z.core.$strict>]>>;
208
+ systemPrompt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
209
+ file: z.ZodString;
210
+ }, z.core.$strict>]>>;
211
+ tools: z.ZodOptional<z.ZodObject<{
212
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
213
+ denylist: z.ZodOptional<z.ZodArray<z.ZodString>>;
214
+ }, z.core.$strict>>;
215
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
216
+ guest: "guest";
217
+ authenticated: "authenticated";
218
+ byo: "byo";
219
+ }>>>;
220
+ }, z.core.$strict>;
221
+ /**
222
+ * Does the BASE tool allowlist permit `entry`? (guuey#527 subset rule.)
223
+ * A base pattern covers `entry` when it is `*`, an exact match, or a
224
+ * `prefix.*` wildcard whose prefix `entry` falls under. This is the SAME
225
+ * coverage semantics the pod's gate applies at call time, so "the mode's
226
+ * allowlist is a subset" means exactly "every mode tool the base already
227
+ * permits" — a mode can only ever NARROW, never widen.
228
+ */
229
+ export declare function baseAllowlistPermits(baseAllowlist: readonly string[] | undefined, entry: string): boolean;
194
230
  /**
195
231
  * Bedrock-style invocation endpoint config.
196
232
  *
@@ -328,6 +364,24 @@ export declare const AgentSectionV1: z.ZodObject<{
328
364
  allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
329
365
  denylist: z.ZodOptional<z.ZodArray<z.ZodString>>;
330
366
  }, z.core.$strict>>;
367
+ modes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
368
+ systemPromptAppend: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
369
+ file: z.ZodString;
370
+ }, z.core.$strict>]>>;
371
+ systemPrompt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
372
+ file: z.ZodString;
373
+ }, z.core.$strict>]>>;
374
+ tools: z.ZodOptional<z.ZodObject<{
375
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
376
+ denylist: z.ZodOptional<z.ZodArray<z.ZodString>>;
377
+ }, z.core.$strict>>;
378
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
379
+ guest: "guest";
380
+ authenticated: "authenticated";
381
+ byo: "byo";
382
+ }>>>;
383
+ }, z.core.$strict>>>;
384
+ defaultMode: z.ZodOptional<z.ZodString>;
331
385
  runtime: z.ZodOptional<z.ZodObject<{
332
386
  maxTurns: z.ZodOptional<z.ZodNumber>;
333
387
  temperature: z.ZodOptional<z.ZodNumber>;
@@ -387,6 +441,45 @@ export type GuueyAgentRuntime = z.infer<typeof RuntimeConfigSchema>;
387
441
  export type GuueyAgentSystemPrompt = z.infer<typeof SystemPromptSchema>;
388
442
  /** Endpoint config type. */
389
443
  export type GuueyAgentEndpoint = z.infer<typeof EndpointConfigSchema>;
444
+ /** One declared mode's shape. */
445
+ export type GuueyAgentMode = z.infer<typeof ModeSchema>;
446
+ /** The v1 mode axis — the caller's REAL auth state, server-derived. */
447
+ export type ModeAudienceClass = 'guest' | 'auth';
448
+ /** The result of {@link applyAgentMode} — the effective snapshot + provenance. */
449
+ export interface AppliedAgentMode {
450
+ /** The snapshot to SERVE this invoke (a new object when a mode applied; the same reference otherwise). */
451
+ agent: GuueyAgent;
452
+ /** The mode key actually applied, or `null` when serving the bare base. */
453
+ applied: string | null;
454
+ /** Present when the resolution took a non-obvious branch (all fail-soft). */
455
+ fallback?: 'unknown-mode' | 'pin-clamped' | 'auth-undeclared';
456
+ }
457
+ /**
458
+ * Resolve + apply one invoke's agent mode (guuey#527/#566 — the guest/auth
459
+ * axis, founder-refined 2026-08-31: "letting them use guest mode vs auth
460
+ * mode is the correct definition").
461
+ *
462
+ * SELECTION is SERVER-DERIVED: `audience` is the caller's REAL auth state
463
+ * (the pod maps anonymous → 'guest', authenticated → 'auth') — never a
464
+ * client claim. The `pin` (the widget/SDK `mode` param) may only choose
465
+ * WITHIN permission: an authed caller may pin 'guest' (preview-as-visitor);
466
+ * a guest pinning 'auth' is CLAMPED to guest ('pin-clamped'), and an
467
+ * unrecognized pin key is ignored ('unknown-mode') — fail-soft always, an
468
+ * embed never breaks.
469
+ *
470
+ * Fallback chain: the selected key's def; an undeclared 'auth' falls to
471
+ * 'guest''s def ('auth-undeclared' — an app that only configures the
472
+ * visitor rep serves everyone that rep, which IS hire-a-rep); still
473
+ * nothing → base. `defaultMode` is deprecated and not consulted.
474
+ *
475
+ * Application (unchanged from the first cut, test-pinned): `systemPrompt`
476
+ * REPLACES the base; `systemPromptAppend` = base + "\n\n" + append; an
477
+ * EMPTY def serves the base by SAME REFERENCE (callers detect no-override
478
+ * by identity); `tools` replaces with the write-gate-proven subset; a
479
+ * `{ file }` prompt is unusable at serve time → base. Pure — never
480
+ * mutates inputs.
481
+ */
482
+ export declare function applyAgentMode(agent: GuueyAgent, pin: string | undefined, audience: ModeAudienceClass): AppliedAgentMode;
390
483
  /** Deploy config type. */
391
484
  export type GuueyAgentDeploy = z.infer<typeof DeploySchema>;
392
485
  /**
@@ -427,6 +520,14 @@ export declare const RESERVED_MEMORY_SERVER_NAME = "guuey-memory";
427
520
  * platform entry at invoke time.
428
521
  */
429
522
  export declare const RESERVED_PROFILE_SERVER_NAME = "guuey-profile";
523
+ /**
524
+ * The reserved colocated key the auto-injected human-handoff MCP is booted +
525
+ * spliced under (guuey#552, spec 2026-08-31-human-handoff-v1-design.md).
526
+ * NEVER builder-declarable — mirrors {@link RESERVED_MEMORY_SERVER_NAME}'s
527
+ * reservation for the same reason; the handoff child's own server advertises
528
+ * this name and its aud is `colocatedResourceUrl(appId, this)`.
529
+ */
530
+ export declare const RESERVED_HANDOFF_SERVER_NAME = "guuey-handoff";
430
531
  /**
431
532
  * Every `mcpServers` map key the platform reserves. Extensible — one entry
432
533
  * today ({@link RESERVED_MEMORY_SERVER_NAME}); future platform-injected
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js CHANGED
@@ -279,6 +279,58 @@ const SystemPromptSchema = z.union([
279
279
  z.string().min(1),
280
280
  z.strictObject({ file: z.string().min(1) }),
281
281
  ]);
282
+ /**
283
+ * One mode of a multi-mode agent (guuey#527). `systemPromptAppend` extends
284
+ * the base prompt (inline string or a `{ file }` the loader inlines);
285
+ * `systemPrompt` replaces it wholesale — exactly ONE of the two (the
286
+ * refine on {@link ModesSchema} enforces the xor). `tools.allowlist`, when
287
+ * present, must be a subset of the base allowlist — the WRITE GATE enforces
288
+ * that (the schema can't see the base), so a mode only ever narrows.
289
+ * `audience` is accepted for forward-compat but the SERVER hardcodes the
290
+ * binding for the recognized pair in tonight's slice.
291
+ */
292
+ const ModeSchema = z.strictObject({
293
+ systemPromptAppend: SystemPromptSchema.optional(),
294
+ systemPrompt: SystemPromptSchema.optional(),
295
+ tools: ToolGatesSchema.optional(),
296
+ audience: z.array(z.enum(['guest', 'authenticated', 'byo'])).optional(),
297
+ });
298
+ /**
299
+ * The `agent.modes` map (guuey#527). Mode keys are short machine
300
+ * identifiers (`rep`, `agent`, …) — the court-key grammar, reused. Each
301
+ * value is a {@link ModeSchema}; a mode declares AT MOST one of
302
+ * `systemPromptAppend` / `systemPrompt` (both = a contradiction the
303
+ * manifest must not carry).
304
+ */
305
+ const MODE_KEY_RE = /^[a-z][a-z0-9-]{0,31}$/;
306
+ const ModesSchema = z
307
+ .record(z.string().regex(MODE_KEY_RE), ModeSchema)
308
+ .refine((modes) => Object.values(modes).every((m) => !(m.systemPromptAppend !== undefined && m.systemPrompt !== undefined)), { message: 'a mode declares at most one of systemPromptAppend / systemPrompt, never both' });
309
+ /**
310
+ * Does the BASE tool allowlist permit `entry`? (guuey#527 subset rule.)
311
+ * A base pattern covers `entry` when it is `*`, an exact match, or a
312
+ * `prefix.*` wildcard whose prefix `entry` falls under. This is the SAME
313
+ * coverage semantics the pod's gate applies at call time, so "the mode's
314
+ * allowlist is a subset" means exactly "every mode tool the base already
315
+ * permits" — a mode can only ever NARROW, never widen.
316
+ */
317
+ export function baseAllowlistPermits(baseAllowlist, entry) {
318
+ // No base allowlist = the model may call anything, so any mode entry is
319
+ // trivially permitted (the mode is still a real narrowing of "anything").
320
+ if (baseAllowlist === undefined)
321
+ return true;
322
+ return baseAllowlist.some((b) => {
323
+ if (b === '*')
324
+ return true;
325
+ if (b === entry)
326
+ return true;
327
+ if (b.endsWith('.*')) {
328
+ const prefix = b.slice(0, -1); // keep the dot: "platform." covers "platform.whoami"
329
+ return entry.startsWith(prefix);
330
+ }
331
+ return false;
332
+ });
333
+ }
282
334
  /**
283
335
  * Bedrock-style invocation endpoint config.
284
336
  *
@@ -423,6 +475,28 @@ export const AgentSectionV1 = z.strictObject({
423
475
  })
424
476
  .optional(),
425
477
  tools: ToolGatesSchema.optional(),
478
+ /**
479
+ * Multi-mode agent (guuey#527) — ONE agent, per-mode prompt overlays on
480
+ * the base `systemPrompt` + a per-mode tool SUBSET of the base allowlist.
481
+ * THE AXIS (founder-refined 2026-08-31, the final word): modes are the
482
+ * AUDIENCE'S AUTH STATE — v1 recognizes exactly `guest` (website
483
+ * visitors; the hire-a-rep mode) and `auth` (signed-in users; navigated
484
+ * separately in studio). SELECTION is SERVER-DERIVED from the caller's
485
+ * REAL auth state ({@link applyAgentMode}) — an anonymous caller
486
+ * structurally cannot claim auth mode; the widget/SDK `mode` param is a
487
+ * PIN within permission (authed may pin `guest` to preview-as-visitor;
488
+ * a guest pinning `auth` clamps). `defaultMode` and per-mode `audience`
489
+ * are v1-DEPRECATED (parseable, not consulted — derivation replaced
490
+ * both); the grammar stays key-agnostic for future axes.
491
+ *
492
+ * Each mode: exactly one of `systemPromptAppend` (extend the base — the
493
+ * common case) or `systemPrompt` (full replace); an optional `tools`
494
+ * allowlist that must be a SUBSET of the base `agent.tools.allowlist`
495
+ * (the write gate enforces it — a mode can only ever NARROW).
496
+ */
497
+ modes: ModesSchema.optional(),
498
+ /** The mode a caller with no audience match resolves to (a declared mode key). */
499
+ defaultMode: z.string().min(1).optional(),
426
500
  runtime: RuntimeConfigSchema.optional(),
427
501
  /** Claude Agent SDK-specific knobs. Only read when `framework: 'claude-agent-sdk'`. */
428
502
  claude: ClaudeFrameworkConfigSchema.optional(),
@@ -444,7 +518,122 @@ export const AgentSectionV1 = z.strictObject({
444
518
  endpoint: EndpointConfigSchema.optional(),
445
519
  // ── Deploy ──
446
520
  deploy: DeploySchema.optional(),
521
+ }).superRefine((agent, ctx) => {
522
+ // guuey#527 — the mode tool SUBSET rule, enforced at parse time (CLI
523
+ // loader AND server both run this): a mode's tool allowlist may only
524
+ // contain tools the BASE allowlist already permits. A mode narrows,
525
+ // never widens — the one privilege-adjacent axis, closed here.
526
+ if (agent.modes === undefined)
527
+ return;
528
+ const base = agent.tools?.allowlist;
529
+ for (const [mode, def] of Object.entries(agent.modes)) {
530
+ const modeAllow = def.tools?.allowlist;
531
+ if (modeAllow === undefined)
532
+ continue;
533
+ for (const entry of modeAllow) {
534
+ if (!baseAllowlistPermits(base, entry)) {
535
+ ctx.addIssue({
536
+ code: z.ZodIssueCode.custom,
537
+ path: ['modes', mode, 'tools', 'allowlist'],
538
+ message: `mode "${mode}" allows tool "${entry}" which the base agent.tools.allowlist does not permit — a mode can only narrow the base tools, never widen them`,
539
+ });
540
+ }
541
+ }
542
+ }
543
+ // A declared defaultMode must name a declared mode.
544
+ if (agent.defaultMode !== undefined && agent.modes[agent.defaultMode] === undefined) {
545
+ ctx.addIssue({
546
+ code: z.ZodIssueCode.custom,
547
+ path: ['defaultMode'],
548
+ message: `defaultMode "${agent.defaultMode}" is not a declared mode (${Object.keys(agent.modes).join(', ') || 'none'})`,
549
+ });
550
+ }
447
551
  });
552
+ /**
553
+ * Resolve + apply one invoke's agent mode (guuey#527/#566 — the guest/auth
554
+ * axis, founder-refined 2026-08-31: "letting them use guest mode vs auth
555
+ * mode is the correct definition").
556
+ *
557
+ * SELECTION is SERVER-DERIVED: `audience` is the caller's REAL auth state
558
+ * (the pod maps anonymous → 'guest', authenticated → 'auth') — never a
559
+ * client claim. The `pin` (the widget/SDK `mode` param) may only choose
560
+ * WITHIN permission: an authed caller may pin 'guest' (preview-as-visitor);
561
+ * a guest pinning 'auth' is CLAMPED to guest ('pin-clamped'), and an
562
+ * unrecognized pin key is ignored ('unknown-mode') — fail-soft always, an
563
+ * embed never breaks.
564
+ *
565
+ * Fallback chain: the selected key's def; an undeclared 'auth' falls to
566
+ * 'guest''s def ('auth-undeclared' — an app that only configures the
567
+ * visitor rep serves everyone that rep, which IS hire-a-rep); still
568
+ * nothing → base. `defaultMode` is deprecated and not consulted.
569
+ *
570
+ * Application (unchanged from the first cut, test-pinned): `systemPrompt`
571
+ * REPLACES the base; `systemPromptAppend` = base + "\n\n" + append; an
572
+ * EMPTY def serves the base by SAME REFERENCE (callers detect no-override
573
+ * by identity); `tools` replaces with the write-gate-proven subset; a
574
+ * `{ file }` prompt is unusable at serve time → base. Pure — never
575
+ * mutates inputs.
576
+ */
577
+ export function applyAgentMode(agent, pin, audience) {
578
+ const modes = agent.modes;
579
+ if (modes === undefined)
580
+ return { agent, applied: null };
581
+ // ── Selection: derived, then the pin within permission ──────────────
582
+ let fallback;
583
+ let selected = audience;
584
+ if (pin !== undefined && pin !== audience) {
585
+ if (pin !== 'guest' && pin !== 'auth') {
586
+ fallback = 'unknown-mode'; // ignored; pure derivation stands
587
+ }
588
+ else if (pin === 'auth' && audience === 'guest') {
589
+ fallback = 'pin-clamped'; // a guest cannot claim auth mode
590
+ }
591
+ else {
592
+ selected = pin; // authed pinning 'guest' — preview-as-visitor
593
+ }
594
+ }
595
+ // ── Fallback chain: selected → guest → base ─────────────────────────
596
+ let applied = selected;
597
+ let def = modes[selected];
598
+ if (def === undefined && selected === 'auth') {
599
+ def = modes['guest'];
600
+ if (def !== undefined) {
601
+ applied = 'guest';
602
+ fallback = fallback ?? 'auth-undeclared';
603
+ }
604
+ }
605
+ if (def === undefined) {
606
+ return { agent, applied: null, ...(fallback !== undefined ? { fallback } : {}) };
607
+ }
608
+ // ── Application (unchanged) ─────────────────────────────────────────
609
+ // An EMPTY def (legal — "at most one") IS the base: same reference out,
610
+ // so callers can cheaply detect "nothing to override" by identity.
611
+ if (def.systemPrompt === undefined && def.systemPromptAppend === undefined && def.tools === undefined) {
612
+ return { agent, applied, ...(fallback !== undefined ? { fallback } : {}) };
613
+ }
614
+ const basePrompt = typeof agent.systemPrompt === 'string' ? agent.systemPrompt : undefined;
615
+ let systemPrompt = agent.systemPrompt;
616
+ if (typeof def.systemPrompt === 'string') {
617
+ systemPrompt = def.systemPrompt;
618
+ }
619
+ else if (typeof def.systemPromptAppend === 'string') {
620
+ systemPrompt =
621
+ basePrompt !== undefined ? `${basePrompt}\n\n${def.systemPromptAppend}` : def.systemPromptAppend;
622
+ }
623
+ else if (def.systemPrompt !== undefined || def.systemPromptAppend !== undefined) {
624
+ // { file } shape — unusable at serve time; base verbatim.
625
+ return { agent, applied: null, ...(fallback !== undefined ? { fallback } : {}) };
626
+ }
627
+ return {
628
+ agent: {
629
+ ...agent,
630
+ ...(systemPrompt !== undefined ? { systemPrompt } : {}),
631
+ ...(def.tools !== undefined ? { tools: def.tools } : {}),
632
+ },
633
+ applied,
634
+ ...(fallback !== undefined ? { fallback } : {}),
635
+ };
636
+ }
448
637
  // ── No-literal-secrets validation (deploy-time contract enforcement) ──────────
449
638
  //
450
639
  // The schema (McpServerSchema JSDoc) requires secrets in `mcpServers[].headers`
@@ -613,6 +802,14 @@ export const RESERVED_MEMORY_SERVER_NAME = 'guuey-memory';
613
802
  * platform entry at invoke time.
614
803
  */
615
804
  export const RESERVED_PROFILE_SERVER_NAME = 'guuey-profile';
805
+ /**
806
+ * The reserved colocated key the auto-injected human-handoff MCP is booted +
807
+ * spliced under (guuey#552, spec 2026-08-31-human-handoff-v1-design.md).
808
+ * NEVER builder-declarable — mirrors {@link RESERVED_MEMORY_SERVER_NAME}'s
809
+ * reservation for the same reason; the handoff child's own server advertises
810
+ * this name and its aud is `colocatedResourceUrl(appId, this)`.
811
+ */
812
+ export const RESERVED_HANDOFF_SERVER_NAME = 'guuey-handoff';
616
813
  /**
617
814
  * Every `mcpServers` map key the platform reserves. Extensible — one entry
618
815
  * today ({@link RESERVED_MEMORY_SERVER_NAME}); future platform-injected
@@ -621,6 +818,7 @@ export const RESERVED_PROFILE_SERVER_NAME = 'guuey-profile';
621
818
  export const RESERVED_MCP_SERVER_NAMES = [
622
819
  RESERVED_MEMORY_SERVER_NAME,
623
820
  RESERVED_PROFILE_SERVER_NAME,
821
+ RESERVED_HANDOFF_SERVER_NAME,
624
822
  ];
625
823
  /**
626
824
  * Validate that no `agent.mcpServers` entry uses a platform-RESERVED name
package/dist/app.d.ts CHANGED
@@ -35,9 +35,9 @@ export type AppUserAuthMode = (typeof APP_USER_AUTH_MODES)[number];
35
35
  */
36
36
  export declare const AppAccessV1: z.ZodObject<{
37
37
  userAuthMode: z.ZodOptional<z.ZodEnum<{
38
+ byo: "byo";
38
39
  anonymous: "anonymous";
39
40
  native_pool: "native_pool";
40
- byo: "byo";
41
41
  }>>;
42
42
  userAuthConfig: z.ZodOptional<z.ZodNullable<z.ZodObject<{
43
43
  issuerUrl: z.ZodString;
@@ -110,9 +110,9 @@ export declare const AppSectionV1: z.ZodObject<{
110
110
  customDomain: z.ZodOptional<z.ZodString>;
111
111
  access: z.ZodOptional<z.ZodObject<{
112
112
  userAuthMode: z.ZodOptional<z.ZodEnum<{
113
+ byo: "byo";
113
114
  anonymous: "anonymous";
114
115
  native_pool: "native_pool";
115
- byo: "byo";
116
116
  }>>;
117
117
  userAuthConfig: z.ZodOptional<z.ZodNullable<z.ZodObject<{
118
118
  issuerUrl: z.ZodString;
package/dist/schema.d.ts CHANGED
@@ -189,6 +189,24 @@ export declare const GuueyJsonV1: z.ZodObject<{
189
189
  allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
190
190
  denylist: z.ZodOptional<z.ZodArray<z.ZodString>>;
191
191
  }, z.core.$strict>>;
192
+ modes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
193
+ systemPromptAppend: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
194
+ file: z.ZodString;
195
+ }, z.core.$strict>]>>;
196
+ systemPrompt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
197
+ file: z.ZodString;
198
+ }, z.core.$strict>]>>;
199
+ tools: z.ZodOptional<z.ZodObject<{
200
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
201
+ denylist: z.ZodOptional<z.ZodArray<z.ZodString>>;
202
+ }, z.core.$strict>>;
203
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
204
+ guest: "guest";
205
+ authenticated: "authenticated";
206
+ byo: "byo";
207
+ }>>>;
208
+ }, z.core.$strict>>>;
209
+ defaultMode: z.ZodOptional<z.ZodString>;
192
210
  runtime: z.ZodOptional<z.ZodObject<{
193
211
  maxTurns: z.ZodOptional<z.ZodNumber>;
194
212
  temperature: z.ZodOptional<z.ZodNumber>;
@@ -245,9 +263,9 @@ export declare const GuueyJsonV1: z.ZodObject<{
245
263
  customDomain: z.ZodOptional<z.ZodString>;
246
264
  access: z.ZodOptional<z.ZodObject<{
247
265
  userAuthMode: z.ZodOptional<z.ZodEnum<{
266
+ byo: "byo";
248
267
  anonymous: "anonymous";
249
268
  native_pool: "native_pool";
250
- byo: "byo";
251
269
  }>>;
252
270
  userAuthConfig: z.ZodOptional<z.ZodNullable<z.ZodObject<{
253
271
  issuerUrl: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAY5E;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,IAAI,EAAE,gBAAgB,GAAG,oBAAoB;aAC7C,KAAK,EAAE,MAAM;gBADb,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,EAC7C,KAAK,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkBjE;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmDtB,CAAC;AAEH,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAG3D,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAExD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAE1C"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAY5E;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,IAAI,EAAE,gBAAgB,GAAG,oBAAoB;aAC7C,KAAK,EAAE,MAAM;gBADb,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,EAC7C,KAAK,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkBjE;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmDtB,CAAC;AAEH,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAG3D,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAExD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAE1C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guuey/config",
3
- "version": "0.16.11",
3
+ "version": "0.16.12",
4
4
  "description": "Open-source schemas + loaders for the three guuey config files: agent.json (declarative agent definition), guuey.json (hosted-deploy overlay), and the helper types around them. Consumed by @guuey/cli, the guuey backend, and devs writing their own agent or MCP server.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -35,7 +35,7 @@
35
35
  "@types/node": "^24.0.0",
36
36
  "typescript": "^5.0.0",
37
37
  "vitest": "^3.2.7",
38
- "@guuey/chat": "0.16.11"
38
+ "@guuey/chat": "0.16.12"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"