@guuey/config 0.7.1 → 0.8.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/dist/agent.d.ts CHANGED
@@ -219,6 +219,17 @@ declare const DeploySchema: z.ZodObject<{
219
219
  }>>;
220
220
  region: z.ZodOptional<z.ZodString>;
221
221
  }, z.core.$strict>;
222
+ /**
223
+ * Whether the agent wants VFS layers at all (guuey#234). `storage` absent →
224
+ * the platform default (`['user','app']`) → true; `storage: []` → false; any
225
+ * non-empty list → true. The runtime ANDs this with the pod's own GuueyFS
226
+ * arming to decide `Invoke.fsBound` (→ built-in file tools + `Bash`), so an
227
+ * agent whose definition says "no VFS" never carries a catalog wider than its
228
+ * definition, whatever the pod is capable of.
229
+ */
230
+ export declare function agentDeclaresVfs(agent: {
231
+ storage?: ReadonlyArray<'user' | 'app'>;
232
+ } | undefined): boolean;
222
233
  /**
223
234
  * The agent section — composes runtime + platform features + deploy.
224
235
  *
@@ -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
@@ -304,8 +304,24 @@ const AuthSchema = z.enum(['anonymous', 'required', 'optional']);
304
304
  const MemorySchema = z.enum(['thread', 'none']);
305
305
  /**
306
306
  * VFS scopes to mount into the pod. Empty array = no VFS (still uses thread + state).
307
+ * Absent = the platform default `['user', 'app']`. Consumed by
308
+ * {@link agentDeclaresVfs} — the per-AGENT half of the runtime's `fsBound`
309
+ * signal (guuey#234): a `storage: []` agent gets NO built-in file tools even on
310
+ * a GuueyFS-armed pod.
307
311
  */
308
312
  const StorageScopeSchema = z.array(z.enum(['user', 'app']));
313
+ /**
314
+ * Whether the agent wants VFS layers at all (guuey#234). `storage` absent →
315
+ * the platform default (`['user','app']`) → true; `storage: []` → false; any
316
+ * non-empty list → true. The runtime ANDs this with the pod's own GuueyFS
317
+ * arming to decide `Invoke.fsBound` (→ built-in file tools + `Bash`), so an
318
+ * agent whose definition says "no VFS" never carries a catalog wider than its
319
+ * definition, whatever the pod is capable of.
320
+ */
321
+ export function agentDeclaresVfs(agent) {
322
+ const storage = agent?.storage;
323
+ return storage === undefined || storage.length > 0;
324
+ }
309
325
  /**
310
326
  * The agent section — composes runtime + platform features + deploy.
311
327
  *
package/dist/app.d.ts CHANGED
@@ -9,6 +9,44 @@
9
9
  * (agent or mcp-server) is what's deployable; this section is presentation.
10
10
  */
11
11
  import { z } from 'zod';
12
+ /**
13
+ * End-user auth modes an app record accepts — mirrors the platform's
14
+ * `USER_AUTH_MODES` (`@guuey-private/types` `security/user-auth-mode.ts`),
15
+ * which this published package cannot import; the backend pins the two
16
+ * lists equal (`handlers/reconcile.test.ts`).
17
+ */
18
+ export declare const APP_USER_AUTH_MODES: readonly ["anonymous", "native_pool", "byo"];
19
+ export type AppUserAuthMode = (typeof APP_USER_AUTH_MODES)[number];
20
+ /**
21
+ * `guuey.json#app.access` — the app record's ACCESS POLICY, declared in the
22
+ * manifest so `guuey agent apply` (agents-as-code, guuey#190) converges it
23
+ * alongside the agent definition. Field names ARE the platform API's
24
+ * (`PUT /v1/apps/:id` / the reconcile `config` block): no translation.
25
+ *
26
+ * PUT-per-field semantics: a field that is absent is left untouched by a
27
+ * reconcile (never reset). `userAuthConfig: null` is the explicit "clear the
28
+ * issuer binding". The hosted `GuueyApp` row remains the only enforcement
29
+ * source — this block is the DECLARATION reconcile makes it agree with;
30
+ * the pod ignores it.
31
+ *
32
+ * Tier is deliberately absent (admin plane, never CI); slug/customDomain/
33
+ * listing stay declared-not-converged (they have their own ceremonies).
34
+ */
35
+ export declare const AppAccessV1: z.ZodObject<{
36
+ userAuthMode: z.ZodOptional<z.ZodEnum<{
37
+ anonymous: "anonymous";
38
+ native_pool: "native_pool";
39
+ byo: "byo";
40
+ }>>;
41
+ userAuthConfig: z.ZodOptional<z.ZodNullable<z.ZodObject<{
42
+ issuerUrl: z.ZodString;
43
+ audience: z.ZodString;
44
+ }, z.core.$strict>>>;
45
+ allowedDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
+ guestAccess: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
47
+ }, z.core.$strict>;
48
+ /** Static TypeScript type for `app.access`. */
49
+ export type GuueyAppAccess = z.infer<typeof AppAccessV1>;
12
50
  /**
13
51
  * The app section schema. All fields optional in v1 — a project may carry
14
52
  * the bare minimum at first and grow the listing as it publishes.
@@ -20,6 +58,19 @@ export declare const AppSectionV1: z.ZodObject<{
20
58
  iconUrl: z.ZodOptional<z.ZodURL>;
21
59
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
60
  customDomain: z.ZodOptional<z.ZodString>;
61
+ access: z.ZodOptional<z.ZodObject<{
62
+ userAuthMode: z.ZodOptional<z.ZodEnum<{
63
+ anonymous: "anonymous";
64
+ native_pool: "native_pool";
65
+ byo: "byo";
66
+ }>>;
67
+ userAuthConfig: z.ZodOptional<z.ZodNullable<z.ZodObject<{
68
+ issuerUrl: z.ZodString;
69
+ audience: z.ZodString;
70
+ }, z.core.$strict>>>;
71
+ allowedDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
72
+ guestAccess: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
73
+ }, z.core.$strict>>;
23
74
  }, z.core.$strict>;
24
75
  /** Static TypeScript type for the app section. */
25
76
  export type GuueyApp = z.infer<typeof AppSectionV1>;
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0CxB;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;kBAOvB,CAAC;AAEH,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0CxB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,8CAA+C,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;kBAWtB,CAAC;AAEH,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;kBASvB,CAAC;AAEH,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
package/dist/app.js CHANGED
@@ -40,6 +40,40 @@ const CustomDomainSchema = z
40
40
  .min(4)
41
41
  .max(253)
42
42
  .regex(/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/i, 'must be a valid fully-qualified domain name');
43
+ /**
44
+ * End-user auth modes an app record accepts — mirrors the platform's
45
+ * `USER_AUTH_MODES` (`@guuey-private/types` `security/user-auth-mode.ts`),
46
+ * which this published package cannot import; the backend pins the two
47
+ * lists equal (`handlers/reconcile.test.ts`).
48
+ */
49
+ export const APP_USER_AUTH_MODES = ['anonymous', 'native_pool', 'byo'];
50
+ /**
51
+ * `guuey.json#app.access` — the app record's ACCESS POLICY, declared in the
52
+ * manifest so `guuey agent apply` (agents-as-code, guuey#190) converges it
53
+ * alongside the agent definition. Field names ARE the platform API's
54
+ * (`PUT /v1/apps/:id` / the reconcile `config` block): no translation.
55
+ *
56
+ * PUT-per-field semantics: a field that is absent is left untouched by a
57
+ * reconcile (never reset). `userAuthConfig: null` is the explicit "clear the
58
+ * issuer binding". The hosted `GuueyApp` row remains the only enforcement
59
+ * source — this block is the DECLARATION reconcile makes it agree with;
60
+ * the pod ignores it.
61
+ *
62
+ * Tier is deliberately absent (admin plane, never CI); slug/customDomain/
63
+ * listing stay declared-not-converged (they have their own ceremonies).
64
+ */
65
+ export const AppAccessV1 = z.strictObject({
66
+ userAuthMode: z.enum(APP_USER_AUTH_MODES).optional(),
67
+ userAuthConfig: z
68
+ .strictObject({
69
+ issuerUrl: z.string().min(1),
70
+ audience: z.string().min(1),
71
+ })
72
+ .nullable()
73
+ .optional(),
74
+ allowedDomains: z.array(z.string().min(1)).optional(),
75
+ guestAccess: z.boolean().nullable().optional(),
76
+ });
43
77
  /**
44
78
  * The app section schema. All fields optional in v1 — a project may carry
45
79
  * the bare minimum at first and grow the listing as it publishes.
@@ -51,4 +85,6 @@ export const AppSectionV1 = z.strictObject({
51
85
  iconUrl: z.url().optional(),
52
86
  tags: z.array(TagSchema).max(10).optional(),
53
87
  customDomain: CustomDomainSchema.optional(),
88
+ /** Access policy converged by `guuey agent apply` — see {@link AppAccessV1}. */
89
+ access: AppAccessV1.optional(),
54
90
  });
package/dist/schema.d.ts CHANGED
@@ -164,6 +164,19 @@ export declare const GuueyJsonV1: z.ZodObject<{
164
164
  iconUrl: z.ZodOptional<z.ZodURL>;
165
165
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
166
166
  customDomain: z.ZodOptional<z.ZodString>;
167
+ access: z.ZodOptional<z.ZodObject<{
168
+ userAuthMode: z.ZodOptional<z.ZodEnum<{
169
+ anonymous: "anonymous";
170
+ native_pool: "native_pool";
171
+ byo: "byo";
172
+ }>>;
173
+ userAuthConfig: z.ZodOptional<z.ZodNullable<z.ZodObject<{
174
+ issuerUrl: z.ZodString;
175
+ audience: z.ZodString;
176
+ }, z.core.$strict>>>;
177
+ allowedDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
178
+ guestAccess: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
179
+ }, z.core.$strict>>;
167
180
  }, z.core.$strict>>;
168
181
  ggui: z.ZodOptional<z.ZodObject<{
169
182
  appId: z.ZodOptional<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;;;;;;;;;;;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;;;;;;;;;;;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.7.1",
3
+ "version": "0.8.0",
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",