@guuey/config 0.1.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/LICENSE +21 -0
- package/README.md +18 -0
- package/dist/agent-loader.d.ts +65 -0
- package/dist/agent-loader.d.ts.map +1 -0
- package/dist/agent-loader.js +155 -0
- package/dist/agent.d.ts +284 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +426 -0
- package/dist/app.d.ts +26 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +54 -0
- package/dist/ggui.d.ts +36 -0
- package/dist/ggui.d.ts.map +1 -0
- package/dist/ggui.js +51 -0
- package/dist/hosting.d.ts +78 -0
- package/dist/hosting.d.ts.map +1 -0
- package/dist/hosting.js +30 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/loader.d.ts +70 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +144 -0
- package/dist/mcp-proxy.d.ts +123 -0
- package/dist/mcp-proxy.d.ts.map +1 -0
- package/dist/mcp-proxy.js +133 -0
- package/dist/mcp-servers.d.ts +173 -0
- package/dist/mcp-servers.d.ts.map +1 -0
- package/dist/mcp-servers.js +147 -0
- package/dist/registry.d.ts +35 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +80 -0
- package/dist/schema.d.ts +204 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +125 -0
- package/dist/system-prompt.d.ts +13 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +19 -0
- package/package.json +56 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mcpServers` — Guuey hosted overlay shape for relayed MCP server
|
|
3
|
+
* declarations.
|
|
4
|
+
*
|
|
5
|
+
* Relocated 2026-04-21 from `@ggui-ai/protocol/types/credential.ts`
|
|
6
|
+
* as part of the OSS split §8.2 classification fix (mirror of the
|
|
7
|
+
* 2026-04-21 `mcp-proxy` split). The `McpServerAuthConfig` type
|
|
8
|
+
* previously lived in the open protocol package with a docstring
|
|
9
|
+
* that said "Auth config in guuey.json mcpServers entries" — an
|
|
10
|
+
* overlay-shape type in an open package, exactly the pattern the
|
|
11
|
+
* mcp-proxy split closed.
|
|
12
|
+
*
|
|
13
|
+
* ## The classification decision
|
|
14
|
+
*
|
|
15
|
+
* `mcpServers` is the declaration block a developer adds to
|
|
16
|
+
* `guuey.json` to tell Guuey hosting: *"for this project, relay
|
|
17
|
+
* these HTTP MCP servers through the Guuey bridge, authenticating
|
|
18
|
+
* each via the credential stored under this `serviceId`."* That is
|
|
19
|
+
* platform-layer plumbing — the Guuey bridge registers the
|
|
20
|
+
* declaration with the Guuey-hosted WebSocket gateway, and the
|
|
21
|
+
* Guuey mcp-proxy Lambda resolves `auth.serviceId` against the
|
|
22
|
+
* platform's UserCredential store. An OSS-only `ggui serve`
|
|
23
|
+
* deployment has no analog for `auth.serviceId` because there is no
|
|
24
|
+
* Guuey credential store.
|
|
25
|
+
*
|
|
26
|
+
* Per §8.2: the OSS `ggui` server does NOT read `guuey.json`.
|
|
27
|
+
* Consumers that need this overlay value (the closed `guuey` CLI's
|
|
28
|
+
* `guuey dev` command, the closed `@guuey/bridge` package, Guuey-
|
|
29
|
+
* hosted Lambdas) are the only call sites allowed to import from
|
|
30
|
+
* this package. Open packages that historically read
|
|
31
|
+
* `McpServerAuthConfig` (`@ggui-ai/server`'s auth-relay code) now
|
|
32
|
+
* inline the minimal structural shape they actually use.
|
|
33
|
+
*
|
|
34
|
+
* ## Scope of this module
|
|
35
|
+
*
|
|
36
|
+
* - {@link CredentialInjection} + {@link CredentialInjectionConfig}
|
|
37
|
+
* — runtime injection-mode descriptors, used here as
|
|
38
|
+
* `McpServerAuth.injection` and also exported from
|
|
39
|
+
* `@ggui-ai/protocol/types/credential.ts` for cloud-side runtime
|
|
40
|
+
* consumers. The overlap is intentional and minor (10 lines of
|
|
41
|
+
* literal-union type) — duplicating inline keeps this private
|
|
42
|
+
* package dep-minimal (zod-only). If the two ever drift, the
|
|
43
|
+
* consolidation fix is to add `@ggui-ai/protocol` as a workspace
|
|
44
|
+
* dep here; today the duplication is cheaper than that cross-
|
|
45
|
+
* boundary edge.
|
|
46
|
+
* - {@link McpServerAuthConfig} — auth block on a single
|
|
47
|
+
* `mcpServers` entry. `serviceId` references the Guuey
|
|
48
|
+
* credential store; `preInject` + `injection` tune how the relay
|
|
49
|
+
* writes the placeholder.
|
|
50
|
+
* - {@link McpServerEntryConfig} — a single mcpServers entry
|
|
51
|
+
* (`{ url, auth? }`). `url` is the HTTP MCP server endpoint.
|
|
52
|
+
* - {@link McpServersConfig} — the top-level record keyed by MCP
|
|
53
|
+
* server name (`gmail`, `calendar`, future `slack`, …). Exactly
|
|
54
|
+
* the shape `guuey.json#mcpServers` carries.
|
|
55
|
+
*
|
|
56
|
+
* ## Strictness
|
|
57
|
+
*
|
|
58
|
+
* Zod validation matches the rest of `guuey.json`: strict objects,
|
|
59
|
+
* non-empty strings, URL validation on `url`. Unknown keys on
|
|
60
|
+
* nested objects fail parse (prevents silent drift toward a "what
|
|
61
|
+
* else can we stuff into guuey.json" shape).
|
|
62
|
+
*/
|
|
63
|
+
import { z } from 'zod';
|
|
64
|
+
/**
|
|
65
|
+
* Injection mode — how the Guuey mcp-proxy splices the resolved
|
|
66
|
+
* credential into the outbound HTTP request to the upstream MCP
|
|
67
|
+
* server. Duplicated minor from
|
|
68
|
+
* `@ggui-ai/protocol/types/credential.ts#CredentialInjection`; see
|
|
69
|
+
* module docstring for the duplication rationale.
|
|
70
|
+
*/
|
|
71
|
+
declare const CredentialInjectionSchema: z.ZodEnum<{
|
|
72
|
+
bearer_header: "bearer_header";
|
|
73
|
+
api_key_header: "api_key_header";
|
|
74
|
+
query_param: "query_param";
|
|
75
|
+
custom_header: "custom_header";
|
|
76
|
+
}>;
|
|
77
|
+
/** Full injection config — `mode` + per-mode tunables. */
|
|
78
|
+
declare const CredentialInjectionConfigSchema: z.ZodObject<{
|
|
79
|
+
mode: z.ZodEnum<{
|
|
80
|
+
bearer_header: "bearer_header";
|
|
81
|
+
api_key_header: "api_key_header";
|
|
82
|
+
query_param: "query_param";
|
|
83
|
+
custom_header: "custom_header";
|
|
84
|
+
}>;
|
|
85
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
86
|
+
paramName: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}, z.core.$strict>;
|
|
88
|
+
/**
|
|
89
|
+
* Auth block on a single `mcpServers` entry. All fields are
|
|
90
|
+
* optional at the block level — a server without `auth` is relayed
|
|
91
|
+
* without credential injection (public MCP endpoint).
|
|
92
|
+
*/
|
|
93
|
+
declare const McpServerAuthSchema: z.ZodObject<{
|
|
94
|
+
serviceId: z.ZodString;
|
|
95
|
+
preInject: z.ZodOptional<z.ZodBoolean>;
|
|
96
|
+
injection: z.ZodOptional<z.ZodObject<{
|
|
97
|
+
mode: z.ZodEnum<{
|
|
98
|
+
bearer_header: "bearer_header";
|
|
99
|
+
api_key_header: "api_key_header";
|
|
100
|
+
query_param: "query_param";
|
|
101
|
+
custom_header: "custom_header";
|
|
102
|
+
}>;
|
|
103
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
104
|
+
paramName: z.ZodOptional<z.ZodString>;
|
|
105
|
+
}, z.core.$strict>>;
|
|
106
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
107
|
+
}, z.core.$strict>;
|
|
108
|
+
/**
|
|
109
|
+
* A single `mcpServers` entry. `url` is the HTTP MCP server
|
|
110
|
+
* endpoint; `auth` scopes the credential injection.
|
|
111
|
+
*/
|
|
112
|
+
declare const McpServerEntrySchema: z.ZodObject<{
|
|
113
|
+
url: z.ZodURL;
|
|
114
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
115
|
+
serviceId: z.ZodString;
|
|
116
|
+
preInject: z.ZodOptional<z.ZodBoolean>;
|
|
117
|
+
injection: z.ZodOptional<z.ZodObject<{
|
|
118
|
+
mode: z.ZodEnum<{
|
|
119
|
+
bearer_header: "bearer_header";
|
|
120
|
+
api_key_header: "api_key_header";
|
|
121
|
+
query_param: "query_param";
|
|
122
|
+
custom_header: "custom_header";
|
|
123
|
+
}>;
|
|
124
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
125
|
+
paramName: z.ZodOptional<z.ZodString>;
|
|
126
|
+
}, z.core.$strict>>;
|
|
127
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
128
|
+
}, z.core.$strict>>;
|
|
129
|
+
}, z.core.$strict>;
|
|
130
|
+
/**
|
|
131
|
+
* The `mcpServers` section of `guuey.json`. Keys are MCP server
|
|
132
|
+
* display names (`gmail`, `calendar`, future `slack`, …) —
|
|
133
|
+
* arbitrary strings, by design. New servers are additive; a fixed
|
|
134
|
+
* literal union would force a schema change every time a new MCP
|
|
135
|
+
* server integration lands.
|
|
136
|
+
*/
|
|
137
|
+
export declare const McpServersSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
138
|
+
url: z.ZodURL;
|
|
139
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
140
|
+
serviceId: z.ZodString;
|
|
141
|
+
preInject: z.ZodOptional<z.ZodBoolean>;
|
|
142
|
+
injection: z.ZodOptional<z.ZodObject<{
|
|
143
|
+
mode: z.ZodEnum<{
|
|
144
|
+
bearer_header: "bearer_header";
|
|
145
|
+
api_key_header: "api_key_header";
|
|
146
|
+
query_param: "query_param";
|
|
147
|
+
custom_header: "custom_header";
|
|
148
|
+
}>;
|
|
149
|
+
headerName: z.ZodOptional<z.ZodString>;
|
|
150
|
+
paramName: z.ZodOptional<z.ZodString>;
|
|
151
|
+
}, z.core.$strict>>;
|
|
152
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
153
|
+
}, z.core.$strict>>;
|
|
154
|
+
}, z.core.$strict>>;
|
|
155
|
+
/** Runtime injection-mode descriptor type. */
|
|
156
|
+
export type CredentialInjection = z.infer<typeof CredentialInjectionSchema>;
|
|
157
|
+
/** Injection-config block type. */
|
|
158
|
+
export type CredentialInjectionConfig = z.infer<typeof CredentialInjectionConfigSchema>;
|
|
159
|
+
/** Auth-block type on an `mcpServers` entry. */
|
|
160
|
+
export type McpServerAuthConfig = z.infer<typeof McpServerAuthSchema>;
|
|
161
|
+
/** Single-entry type inside the `mcpServers` record. */
|
|
162
|
+
export type McpServerEntryConfig = z.infer<typeof McpServerEntrySchema>;
|
|
163
|
+
/** Full `mcpServers` overlay type derived from the zod schema. */
|
|
164
|
+
export type McpServersConfig = z.infer<typeof McpServersSchema>;
|
|
165
|
+
/**
|
|
166
|
+
* Parse a raw JSON value into a validated {@link McpServersConfig}.
|
|
167
|
+
* Throws a `ZodError` on invalid input.
|
|
168
|
+
*/
|
|
169
|
+
export declare function parseMcpServers(raw: unknown): McpServersConfig;
|
|
170
|
+
/** Safe-parse variant — see {@link parseMcpServers}. */
|
|
171
|
+
export declare function safeParseMcpServers(raw: unknown): ReturnType<typeof McpServersSchema.safeParse>;
|
|
172
|
+
export {};
|
|
173
|
+
//# sourceMappingURL=mcp-servers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../src/mcp-servers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,QAAA,MAAM,yBAAyB;;;;;EAK7B,CAAC;AAEH,0DAA0D;AAC1D,QAAA,MAAM,+BAA+B;;;;;;;;;kBAMnC,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;kBA4BvB,CAAC;AAEH;;;GAGG;AACH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;kBAKxB,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;mBAG5B,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,mCAAmC;AACnC,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,wDAAwD;AACxD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAE9D;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,GACX,UAAU,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAE/C"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mcpServers` — Guuey hosted overlay shape for relayed MCP server
|
|
3
|
+
* declarations.
|
|
4
|
+
*
|
|
5
|
+
* Relocated 2026-04-21 from `@ggui-ai/protocol/types/credential.ts`
|
|
6
|
+
* as part of the OSS split §8.2 classification fix (mirror of the
|
|
7
|
+
* 2026-04-21 `mcp-proxy` split). The `McpServerAuthConfig` type
|
|
8
|
+
* previously lived in the open protocol package with a docstring
|
|
9
|
+
* that said "Auth config in guuey.json mcpServers entries" — an
|
|
10
|
+
* overlay-shape type in an open package, exactly the pattern the
|
|
11
|
+
* mcp-proxy split closed.
|
|
12
|
+
*
|
|
13
|
+
* ## The classification decision
|
|
14
|
+
*
|
|
15
|
+
* `mcpServers` is the declaration block a developer adds to
|
|
16
|
+
* `guuey.json` to tell Guuey hosting: *"for this project, relay
|
|
17
|
+
* these HTTP MCP servers through the Guuey bridge, authenticating
|
|
18
|
+
* each via the credential stored under this `serviceId`."* That is
|
|
19
|
+
* platform-layer plumbing — the Guuey bridge registers the
|
|
20
|
+
* declaration with the Guuey-hosted WebSocket gateway, and the
|
|
21
|
+
* Guuey mcp-proxy Lambda resolves `auth.serviceId` against the
|
|
22
|
+
* platform's UserCredential store. An OSS-only `ggui serve`
|
|
23
|
+
* deployment has no analog for `auth.serviceId` because there is no
|
|
24
|
+
* Guuey credential store.
|
|
25
|
+
*
|
|
26
|
+
* Per §8.2: the OSS `ggui` server does NOT read `guuey.json`.
|
|
27
|
+
* Consumers that need this overlay value (the closed `guuey` CLI's
|
|
28
|
+
* `guuey dev` command, the closed `@guuey/bridge` package, Guuey-
|
|
29
|
+
* hosted Lambdas) are the only call sites allowed to import from
|
|
30
|
+
* this package. Open packages that historically read
|
|
31
|
+
* `McpServerAuthConfig` (`@ggui-ai/server`'s auth-relay code) now
|
|
32
|
+
* inline the minimal structural shape they actually use.
|
|
33
|
+
*
|
|
34
|
+
* ## Scope of this module
|
|
35
|
+
*
|
|
36
|
+
* - {@link CredentialInjection} + {@link CredentialInjectionConfig}
|
|
37
|
+
* — runtime injection-mode descriptors, used here as
|
|
38
|
+
* `McpServerAuth.injection` and also exported from
|
|
39
|
+
* `@ggui-ai/protocol/types/credential.ts` for cloud-side runtime
|
|
40
|
+
* consumers. The overlap is intentional and minor (10 lines of
|
|
41
|
+
* literal-union type) — duplicating inline keeps this private
|
|
42
|
+
* package dep-minimal (zod-only). If the two ever drift, the
|
|
43
|
+
* consolidation fix is to add `@ggui-ai/protocol` as a workspace
|
|
44
|
+
* dep here; today the duplication is cheaper than that cross-
|
|
45
|
+
* boundary edge.
|
|
46
|
+
* - {@link McpServerAuthConfig} — auth block on a single
|
|
47
|
+
* `mcpServers` entry. `serviceId` references the Guuey
|
|
48
|
+
* credential store; `preInject` + `injection` tune how the relay
|
|
49
|
+
* writes the placeholder.
|
|
50
|
+
* - {@link McpServerEntryConfig} — a single mcpServers entry
|
|
51
|
+
* (`{ url, auth? }`). `url` is the HTTP MCP server endpoint.
|
|
52
|
+
* - {@link McpServersConfig} — the top-level record keyed by MCP
|
|
53
|
+
* server name (`gmail`, `calendar`, future `slack`, …). Exactly
|
|
54
|
+
* the shape `guuey.json#mcpServers` carries.
|
|
55
|
+
*
|
|
56
|
+
* ## Strictness
|
|
57
|
+
*
|
|
58
|
+
* Zod validation matches the rest of `guuey.json`: strict objects,
|
|
59
|
+
* non-empty strings, URL validation on `url`. Unknown keys on
|
|
60
|
+
* nested objects fail parse (prevents silent drift toward a "what
|
|
61
|
+
* else can we stuff into guuey.json" shape).
|
|
62
|
+
*/
|
|
63
|
+
import { z } from 'zod';
|
|
64
|
+
/**
|
|
65
|
+
* Injection mode — how the Guuey mcp-proxy splices the resolved
|
|
66
|
+
* credential into the outbound HTTP request to the upstream MCP
|
|
67
|
+
* server. Duplicated minor from
|
|
68
|
+
* `@ggui-ai/protocol/types/credential.ts#CredentialInjection`; see
|
|
69
|
+
* module docstring for the duplication rationale.
|
|
70
|
+
*/
|
|
71
|
+
const CredentialInjectionSchema = z.enum([
|
|
72
|
+
'bearer_header',
|
|
73
|
+
'api_key_header',
|
|
74
|
+
'query_param',
|
|
75
|
+
'custom_header',
|
|
76
|
+
]);
|
|
77
|
+
/** Full injection config — `mode` + per-mode tunables. */
|
|
78
|
+
const CredentialInjectionConfigSchema = z.strictObject({
|
|
79
|
+
mode: CredentialInjectionSchema,
|
|
80
|
+
/** Header name for `api_key_header` / `custom_header`. Default: `X-API-Key`. */
|
|
81
|
+
headerName: z.string().min(1).optional(),
|
|
82
|
+
/** Query param name for `query_param`. Default: `api_key`. */
|
|
83
|
+
paramName: z.string().min(1).optional(),
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Auth block on a single `mcpServers` entry. All fields are
|
|
87
|
+
* optional at the block level — a server without `auth` is relayed
|
|
88
|
+
* without credential injection (public MCP endpoint).
|
|
89
|
+
*/
|
|
90
|
+
const McpServerAuthSchema = z.strictObject({
|
|
91
|
+
/**
|
|
92
|
+
* Service ID referenced against the Guuey platform's
|
|
93
|
+
* UserCredential store. This is a Guuey-platform concept — an
|
|
94
|
+
* OSS-only deployment has no equivalent lookup.
|
|
95
|
+
*/
|
|
96
|
+
serviceId: z.string().min(1),
|
|
97
|
+
/**
|
|
98
|
+
* Pre-inject placeholder before the first upstream request
|
|
99
|
+
* (skips the 401 → consent → retry dance for cases where the
|
|
100
|
+
* user has already linked the credential). Default: `false`.
|
|
101
|
+
*/
|
|
102
|
+
preInject: z.boolean().optional(),
|
|
103
|
+
/**
|
|
104
|
+
* Override the injection mode. Falls back to the
|
|
105
|
+
* `McpServiceConfig` table entry keyed by `serviceId`, which
|
|
106
|
+
* defaults to `bearer_header`.
|
|
107
|
+
*/
|
|
108
|
+
injection: CredentialInjectionConfigSchema.optional(),
|
|
109
|
+
/**
|
|
110
|
+
* Optional OAuth scope hint forwarded to the hosted bridge at
|
|
111
|
+
* connect time. The platform consumes this when minting tokens
|
|
112
|
+
* against the upstream MCP server. Preserved here (2026-04-21)
|
|
113
|
+
* for wire-compat with `@guuey/bridge`'s existing inline shape,
|
|
114
|
+
* which flows `auth.scopes` through the bridge WebSocket config
|
|
115
|
+
* message.
|
|
116
|
+
*/
|
|
117
|
+
scopes: z.array(z.string().min(1)).optional(),
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* A single `mcpServers` entry. `url` is the HTTP MCP server
|
|
121
|
+
* endpoint; `auth` scopes the credential injection.
|
|
122
|
+
*/
|
|
123
|
+
const McpServerEntrySchema = z.strictObject({
|
|
124
|
+
/** HTTP MCP server endpoint. */
|
|
125
|
+
url: z.url(),
|
|
126
|
+
/** Optional auth block — omit for public endpoints. */
|
|
127
|
+
auth: McpServerAuthSchema.optional(),
|
|
128
|
+
});
|
|
129
|
+
/**
|
|
130
|
+
* The `mcpServers` section of `guuey.json`. Keys are MCP server
|
|
131
|
+
* display names (`gmail`, `calendar`, future `slack`, …) —
|
|
132
|
+
* arbitrary strings, by design. New servers are additive; a fixed
|
|
133
|
+
* literal union would force a schema change every time a new MCP
|
|
134
|
+
* server integration lands.
|
|
135
|
+
*/
|
|
136
|
+
export const McpServersSchema = z.record(z.string().min(1), McpServerEntrySchema);
|
|
137
|
+
/**
|
|
138
|
+
* Parse a raw JSON value into a validated {@link McpServersConfig}.
|
|
139
|
+
* Throws a `ZodError` on invalid input.
|
|
140
|
+
*/
|
|
141
|
+
export function parseMcpServers(raw) {
|
|
142
|
+
return McpServersSchema.parse(raw);
|
|
143
|
+
}
|
|
144
|
+
/** Safe-parse variant — see {@link parseMcpServers}. */
|
|
145
|
+
export function safeParseMcpServers(raw) {
|
|
146
|
+
return McpServersSchema.safeParse(raw);
|
|
147
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model + framework registry — single source of truth per the model-release
|
|
3
|
+
* playbook §8 item A; a release = one entry change here + rate-card row.
|
|
4
|
+
*/
|
|
5
|
+
export type ModelStatus = "ga" | "preview" | "announced" | "deprecated";
|
|
6
|
+
export interface ModelEntry {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly provider: "anthropic" | "openai" | "google" | "openrouter";
|
|
9
|
+
readonly label: string;
|
|
10
|
+
readonly status: ModelStatus;
|
|
11
|
+
readonly isDefault?: true;
|
|
12
|
+
readonly sunset?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface FrameworkEntry {
|
|
15
|
+
readonly framework: "claude-agent-sdk" | "openai-agents-sdk" | "google-adk" | "vanilla";
|
|
16
|
+
readonly sdkPackage: string | null;
|
|
17
|
+
readonly platformPinnedVersion: string | null;
|
|
18
|
+
readonly facetSupportedRange: string | null;
|
|
19
|
+
readonly defaultProvider: "anthropic" | "openai" | "google";
|
|
20
|
+
}
|
|
21
|
+
export declare const MODEL_REGISTRY: readonly ModelEntry[];
|
|
22
|
+
export declare const FRAMEWORK_REGISTRY: readonly FrameworkEntry[];
|
|
23
|
+
/**
|
|
24
|
+
* Get all models for a provider, filtered to ga|preview only, with default first.
|
|
25
|
+
*/
|
|
26
|
+
export declare function modelsForProvider(p: ModelEntry["provider"]): readonly ModelEntry[];
|
|
27
|
+
/**
|
|
28
|
+
* Get the default model id for a framework's default provider.
|
|
29
|
+
*/
|
|
30
|
+
export declare function defaultModelFor(framework: FrameworkEntry["framework"]): string;
|
|
31
|
+
/**
|
|
32
|
+
* Look up a model entry by id.
|
|
33
|
+
*/
|
|
34
|
+
export declare function modelEntry(id: string): ModelEntry | undefined;
|
|
35
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,YAAY,GAAG,SAAS,CAAC;IACxF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC7D;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,UAAU,EAe/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,cAAc,EA6BvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,SAAS,UAAU,EAAE,CAQlF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,CAM9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model + framework registry — single source of truth per the model-release
|
|
3
|
+
* playbook §8 item A; a release = one entry change here + rate-card row.
|
|
4
|
+
*/
|
|
5
|
+
export const MODEL_REGISTRY = [
|
|
6
|
+
{ id: "claude-sonnet-5", provider: "anthropic", label: "Claude Sonnet 5", status: "ga", isDefault: true },
|
|
7
|
+
{ id: "claude-fable-5", provider: "anthropic", label: "Claude Fable 5", status: "ga" },
|
|
8
|
+
{ id: "claude-sonnet-4-6", provider: "anthropic", label: "Claude Sonnet 4.6", status: "ga" },
|
|
9
|
+
{ id: "claude-haiku-4-5", provider: "anthropic", label: "Claude Haiku 4.5", status: "ga" },
|
|
10
|
+
{ id: "claude-opus-4-8", provider: "anthropic", label: "Claude Opus 4.8", status: "ga" },
|
|
11
|
+
{ id: "gpt-5.5", provider: "openai", label: "GPT-5.5", status: "ga", isDefault: true },
|
|
12
|
+
{ id: "gpt-5.4", provider: "openai", label: "GPT-5.4", status: "ga" },
|
|
13
|
+
{ id: "gpt-4o", provider: "openai", label: "GPT-4o", status: "ga" },
|
|
14
|
+
{ id: "gpt-4o-mini", provider: "openai", label: "GPT-4o Mini", status: "ga" },
|
|
15
|
+
{ id: "gpt-5.6", provider: "openai", label: "GPT-5.6", status: "announced" },
|
|
16
|
+
{ id: "gemini-3.5-flash", provider: "google", label: "Gemini 3.5 Flash", status: "ga", isDefault: true },
|
|
17
|
+
{ id: "gemini-3.1-pro", provider: "google", label: "Gemini 3.1 Pro", status: "ga" },
|
|
18
|
+
{ id: "gemini-2.5-flash", provider: "google", label: "Gemini 2.5 Flash", status: "ga" },
|
|
19
|
+
{ id: "gemini-2.5-pro", provider: "google", label: "Gemini 2.5 Pro", status: "ga" },
|
|
20
|
+
];
|
|
21
|
+
export const FRAMEWORK_REGISTRY = [
|
|
22
|
+
{
|
|
23
|
+
framework: "claude-agent-sdk",
|
|
24
|
+
sdkPackage: "@anthropic-ai/claude-agent-sdk",
|
|
25
|
+
platformPinnedVersion: "0.3.199",
|
|
26
|
+
facetSupportedRange: ">=0.2.76 <0.4",
|
|
27
|
+
defaultProvider: "anthropic",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
framework: "openai-agents-sdk",
|
|
31
|
+
sdkPackage: "@openai/agents",
|
|
32
|
+
platformPinnedVersion: "0.12.0",
|
|
33
|
+
facetSupportedRange: ">=0.2.0 <0.13",
|
|
34
|
+
defaultProvider: "openai",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
framework: "google-adk",
|
|
38
|
+
sdkPackage: "google-adk",
|
|
39
|
+
platformPinnedVersion: "2.3.0",
|
|
40
|
+
facetSupportedRange: null,
|
|
41
|
+
defaultProvider: "google",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
framework: "vanilla",
|
|
45
|
+
sdkPackage: null,
|
|
46
|
+
platformPinnedVersion: null,
|
|
47
|
+
facetSupportedRange: null,
|
|
48
|
+
defaultProvider: "anthropic",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Get all models for a provider, filtered to ga|preview only, with default first.
|
|
53
|
+
*/
|
|
54
|
+
export function modelsForProvider(p) {
|
|
55
|
+
return MODEL_REGISTRY.filter((m) => m.provider === p && (m.status === "ga" || m.status === "preview")).sort((a, b) => {
|
|
56
|
+
if (a.isDefault)
|
|
57
|
+
return -1;
|
|
58
|
+
if (b.isDefault)
|
|
59
|
+
return 1;
|
|
60
|
+
return 0;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get the default model id for a framework's default provider.
|
|
65
|
+
*/
|
|
66
|
+
export function defaultModelFor(framework) {
|
|
67
|
+
const fw = FRAMEWORK_REGISTRY.find((f) => f.framework === framework);
|
|
68
|
+
if (!fw)
|
|
69
|
+
throw new Error(`Unknown framework: ${framework}`);
|
|
70
|
+
const model = MODEL_REGISTRY.find((m) => m.provider === fw.defaultProvider && m.isDefault && m.status === "ga");
|
|
71
|
+
if (!model)
|
|
72
|
+
throw new Error(`No default ga model for provider: ${fw.defaultProvider}`);
|
|
73
|
+
return model.id;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Look up a model entry by id.
|
|
77
|
+
*/
|
|
78
|
+
export function modelEntry(id) {
|
|
79
|
+
return MODEL_REGISTRY.find((m) => m.id === id);
|
|
80
|
+
}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `guuey.json` v1 — the merged platform config.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for a guuey-deployed project. Composed of:
|
|
5
|
+
*
|
|
6
|
+
* - `agent` (required for agent deploys) — declarative runtime + deploy config
|
|
7
|
+
* - `app` (optional) — App Store / Portal listing metadata
|
|
8
|
+
* - `ggui` (optional) — cross-protocol integration if the agent uses ggui rendering
|
|
9
|
+
*
|
|
10
|
+
* Plus top-level platform identity (`appId`, `workspaceId`) populated by
|
|
11
|
+
* the CLI after `guuey create` / `guuey link`.
|
|
12
|
+
*
|
|
13
|
+
* **Filename convention** (filename = artifact kind, see design doc §3):
|
|
14
|
+
* ```
|
|
15
|
+
* guuey.json ← agent deploy (this file's schema)
|
|
16
|
+
* guuey.mcp.json ← MCP server deploy (separate schema — see guuey-mcp.ts when added)
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* **History.** Pre-2026-05-25 the repo carried two separate files:
|
|
20
|
+
* - `agent.json` — runtime contract (slice 2.0)
|
|
21
|
+
* - `guuey.json` — hosted overlay (project, deploy, deployments, mcpProxies, mcpServers)
|
|
22
|
+
*
|
|
23
|
+
* Slice 7.2 (2026-05-25) merged them per platform-architecture design doc §3.1
|
|
24
|
+
* + §14.2 field-by-field migration table. Pre-launch no-backcompat rule —
|
|
25
|
+
* the old shape is GONE, not deprecated.
|
|
26
|
+
*
|
|
27
|
+
* **Minimum valid `guuey.json`** (every other field defaults):
|
|
28
|
+
*
|
|
29
|
+
* ```jsonc
|
|
30
|
+
* {
|
|
31
|
+
* "schema": "1",
|
|
32
|
+
* "agent": {
|
|
33
|
+
* "framework": "claude-agent-sdk",
|
|
34
|
+
* "model": "claude-sonnet-4-6",
|
|
35
|
+
* "systemPrompt": { "file": "prompts/system.md" }
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
import { z } from 'zod';
|
|
41
|
+
import { type GuueyAgent } from './agent.js';
|
|
42
|
+
import { type GuueyApp } from './app.js';
|
|
43
|
+
import { type GuueyGguiSection } from './ggui.js';
|
|
44
|
+
/**
|
|
45
|
+
* Top-level guuey.json v1 schema.
|
|
46
|
+
*
|
|
47
|
+
* `agent` is required — there's no "empty" guuey.json. A repo that hosts
|
|
48
|
+
* only an MCP server uses `guuey.mcp.json` instead (separate schema).
|
|
49
|
+
*
|
|
50
|
+
* `appId` and `workspaceId` are platform-resolved identifiers stamped by
|
|
51
|
+
* the CLI after `guuey create` / `guuey link`. A fresh project has neither.
|
|
52
|
+
* After first `guuey create`, both may be present.
|
|
53
|
+
*
|
|
54
|
+
* Re-exports the sub-section types for consumer convenience.
|
|
55
|
+
*/
|
|
56
|
+
export declare const GuueyJsonV1: z.ZodObject<{
|
|
57
|
+
schema: z.ZodLiteral<"1">;
|
|
58
|
+
appId: z.ZodOptional<z.ZodString>;
|
|
59
|
+
workspaceId: z.ZodOptional<z.ZodString>;
|
|
60
|
+
agent: z.ZodObject<{
|
|
61
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
code: "code";
|
|
63
|
+
declarative: "declarative";
|
|
64
|
+
}>>;
|
|
65
|
+
framework: z.ZodOptional<z.ZodEnum<{
|
|
66
|
+
"claude-agent-sdk": "claude-agent-sdk";
|
|
67
|
+
"openai-agents-sdk": "openai-agents-sdk";
|
|
68
|
+
"google-adk": "google-adk";
|
|
69
|
+
vanilla: "vanilla";
|
|
70
|
+
}>>;
|
|
71
|
+
model: z.ZodOptional<z.ZodString>;
|
|
72
|
+
modelProvider: z.ZodOptional<z.ZodEnum<{
|
|
73
|
+
openai: "openai";
|
|
74
|
+
openrouter: "openrouter";
|
|
75
|
+
}>>;
|
|
76
|
+
systemPrompt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
77
|
+
file: z.ZodString;
|
|
78
|
+
}, z.core.$strict>]>>;
|
|
79
|
+
mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
80
|
+
kind: z.ZodLiteral<"colocated">;
|
|
81
|
+
command: z.ZodString;
|
|
82
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
84
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
85
|
+
kind: z.ZodLiteral<"hosted">;
|
|
86
|
+
server: z.ZodOptional<z.ZodString>;
|
|
87
|
+
source: z.ZodOptional<z.ZodString>;
|
|
88
|
+
devPort: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
90
|
+
kind: z.ZodLiteral<"proxied">;
|
|
91
|
+
connection: z.ZodString;
|
|
92
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
93
|
+
kind: z.ZodLiteral<"external">;
|
|
94
|
+
url: z.ZodURL;
|
|
95
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
96
|
+
http: "http";
|
|
97
|
+
sse: "sse";
|
|
98
|
+
}>>;
|
|
99
|
+
federate: z.ZodOptional<z.ZodBoolean>;
|
|
100
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
101
|
+
devPort: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
}, z.core.$strict>], "kind">>>;
|
|
103
|
+
tools: z.ZodOptional<z.ZodObject<{
|
|
104
|
+
allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
105
|
+
denylist: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
106
|
+
}, z.core.$strict>>;
|
|
107
|
+
runtime: z.ZodOptional<z.ZodObject<{
|
|
108
|
+
maxTurns: z.ZodOptional<z.ZodNumber>;
|
|
109
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
110
|
+
}, z.core.$strict>>;
|
|
111
|
+
claude: z.ZodOptional<z.ZodObject<{
|
|
112
|
+
permissions: z.ZodOptional<z.ZodObject<{
|
|
113
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
114
|
+
default: "default";
|
|
115
|
+
acceptEdits: "acceptEdits";
|
|
116
|
+
bypassPermissions: "bypassPermissions";
|
|
117
|
+
}>>;
|
|
118
|
+
}, z.core.$strict>>;
|
|
119
|
+
}, z.core.$strict>>;
|
|
120
|
+
auth: z.ZodOptional<z.ZodEnum<{
|
|
121
|
+
optional: "optional";
|
|
122
|
+
anonymous: "anonymous";
|
|
123
|
+
required: "required";
|
|
124
|
+
}>>;
|
|
125
|
+
memory: z.ZodOptional<z.ZodEnum<{
|
|
126
|
+
thread: "thread";
|
|
127
|
+
none: "none";
|
|
128
|
+
}>>;
|
|
129
|
+
storage: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
130
|
+
user: "user";
|
|
131
|
+
app: "app";
|
|
132
|
+
}>>>;
|
|
133
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
134
|
+
secrets: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
135
|
+
endpoint: z.ZodOptional<z.ZodObject<{
|
|
136
|
+
kind: z.ZodOptional<z.ZodLiteral<"invoke">>;
|
|
137
|
+
streaming: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
+
}, z.core.$strict>>;
|
|
139
|
+
deploy: z.ZodOptional<z.ZodObject<{
|
|
140
|
+
size: z.ZodOptional<z.ZodEnum<{
|
|
141
|
+
xs: "xs";
|
|
142
|
+
sm: "sm";
|
|
143
|
+
md: "md";
|
|
144
|
+
lg: "lg";
|
|
145
|
+
xl: "xl";
|
|
146
|
+
}>>;
|
|
147
|
+
region: z.ZodOptional<z.ZodString>;
|
|
148
|
+
}, z.core.$strict>>;
|
|
149
|
+
}, z.core.$strict>;
|
|
150
|
+
app: z.ZodOptional<z.ZodObject<{
|
|
151
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
152
|
+
name: z.ZodOptional<z.ZodString>;
|
|
153
|
+
description: z.ZodOptional<z.ZodString>;
|
|
154
|
+
iconUrl: z.ZodOptional<z.ZodURL>;
|
|
155
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
156
|
+
customDomain: z.ZodOptional<z.ZodString>;
|
|
157
|
+
}, z.core.$strict>>;
|
|
158
|
+
ggui: z.ZodOptional<z.ZodObject<{
|
|
159
|
+
appId: z.ZodOptional<z.ZodString>;
|
|
160
|
+
configFile: z.ZodOptional<z.ZodString>;
|
|
161
|
+
inline: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
162
|
+
}, z.core.$strict>>;
|
|
163
|
+
worker: z.ZodOptional<z.ZodString>;
|
|
164
|
+
protocol: z.ZodDefault<z.ZodEnum<{
|
|
165
|
+
silver: "silver";
|
|
166
|
+
bypass: "bypass";
|
|
167
|
+
}>>;
|
|
168
|
+
runtime: z.ZodOptional<z.ZodObject<{
|
|
169
|
+
router: z.ZodDefault<z.ZodEnum<{
|
|
170
|
+
v1: "v1";
|
|
171
|
+
}>>;
|
|
172
|
+
}, z.core.$strict>>;
|
|
173
|
+
}, z.core.$strict>;
|
|
174
|
+
/** Static TypeScript type for `guuey.json` v1. */
|
|
175
|
+
export type GuueyJsonV1 = z.infer<typeof GuueyJsonV1>;
|
|
176
|
+
/**
|
|
177
|
+
* Author-side shape for `guuey.json` v1 — what a writer may construct before
|
|
178
|
+
* `parseGuueyJson` applies schema defaults (e.g. `protocol` → `'silver'`).
|
|
179
|
+
* Fields with defaults are optional here and required on {@link GuueyJsonV1}.
|
|
180
|
+
*/
|
|
181
|
+
export type GuueyJsonV1Input = z.input<typeof GuueyJsonV1>;
|
|
182
|
+
export type { GuueyAgent, GuueyApp, GuueyGguiSection };
|
|
183
|
+
/**
|
|
184
|
+
* Canonical filename — always at the project root, always this name.
|
|
185
|
+
* Exported so tooling uses the same constant instead of hard-coding.
|
|
186
|
+
*/
|
|
187
|
+
export declare const GUUEY_JSON_FILENAME = "guuey.json";
|
|
188
|
+
/**
|
|
189
|
+
* Parse a raw JSON value into a validated {@link GuueyJsonV1}.
|
|
190
|
+
* Throws a `ZodError` with human-readable issues on invalid input.
|
|
191
|
+
*
|
|
192
|
+
* Callers must have already JSON-decoded the source. Does NOT resolve
|
|
193
|
+
* `agent.systemPrompt.file` references — that's the loader's job (see
|
|
194
|
+
* `./loader.ts#loadGuueyJson`). Pure parse is safe to run anywhere;
|
|
195
|
+
* file resolution requires a base directory and is Node-only.
|
|
196
|
+
*/
|
|
197
|
+
export declare function parseGuueyJson(raw: unknown): GuueyJsonV1;
|
|
198
|
+
/**
|
|
199
|
+
* Safe-parse variant — returns a discriminated `z.safeParse` result.
|
|
200
|
+
* Prefer this inside CLI tooling where you want to render the issue
|
|
201
|
+
* list without try/catch.
|
|
202
|
+
*/
|
|
203
|
+
export declare function safeParseGuueyJson(raw: unknown): ReturnType<typeof GuueyJsonV1.safeParse>;
|
|
204
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +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"}
|