@kozou/core 1.2.0 → 1.4.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.
@@ -0,0 +1,24 @@
1
+ import type { RawEnum, RawFunction } from './types/raw.js';
2
+ import type { FunctionContext } from './types/context.js';
3
+ import type { BuildIssue } from './buildSchemaContext.js';
4
+ /** Deploy-time RPC config (RPC design §3). Both lists hold schema-qualified
5
+ * function names (`schema.function`); a bare name is ambiguous and reported as
6
+ * a build issue (§5.0). Sourced from `api.rpc.*` in kozou.config.yaml. */
7
+ export type RpcBuildConfig = {
8
+ /** `security definer` functions the operator has authorized for exposure —
9
+ * the deploy-time half of the double opt-in (§3.2). */
10
+ allowDefiner?: string[];
11
+ /** Functions allowed to keep PUBLIC EXECUTE (intentional public-callable,
12
+ * §6.1). `@expose: rpc public` is the per-function tag equivalent. */
13
+ allowPublicExecute?: string[];
14
+ };
15
+ /** Decide which functions are exposed as RPC actions and shape them into
16
+ * FunctionContexts (RPC design §3–§5). Skipped-but-tagged functions are pushed
17
+ * onto `issues`. Output is sorted by qualified name for stable surfaces. */
18
+ export declare function buildFunctionContexts(input: {
19
+ functions: RawFunction[];
20
+ enums: RawEnum[];
21
+ rpc: RpcBuildConfig | undefined;
22
+ issues: BuildIssue[];
23
+ }): FunctionContext[];
24
+ //# sourceMappingURL=buildFunctionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildFunctionContext.d.ts","sourceRoot":"","sources":["../src/buildFunctionContext.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D;;2EAE2E;AAC3E,MAAM,MAAM,cAAc,GAAG;IAC3B;4DACwD;IACxD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;2EACuE;IACvE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAkSF;;6EAE6E;AAC7E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,GAAG,EAAE,cAAc,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,GAAG,eAAe,EAAE,CAoFpB"}
@@ -0,0 +1,324 @@
1
+ // The RPC exposure decision (RPC design, issue #103, §3 / §4.4 / §6.1) and the
2
+ // shaping of an exposed function into a FunctionContext (§4.2 / §5.4).
3
+ //
4
+ // Input is the raw functions pulled from pg_proc (@kozou/introspect) plus the
5
+ // operator's deploy-time RPC config. Output is the set of functions that pass
6
+ // every guard, ready for the surfaces (REST / OpenAPI / MCP / Admin UI). A
7
+ // function tagged `@expose: rpc` that fails a guard is NOT exposed and is
8
+ // reported as a build issue instead (loud skip — "you tagged it but it does not
9
+ // appear", no silent gap, §4.4). A function with no `@expose` tag is simply
10
+ // absent (the default, not an issue).
11
+ //
12
+ // The guards, in order:
13
+ // 1. overload collision — two+ tagged functions share `schema.name` (§2)
14
+ // 2. unsupported argument — VARIADIC / polymorphic / unnamed (§2 / §4.4)
15
+ // 3. unsupported return — `kind: 'unsupported'` from introspect (§4.3 / §4.4)
16
+ // 4. SECURITY DEFINER — must be in `allowDefiner` AND have an owner-safe
17
+ // search_path (the double opt-in of §3.2)
18
+ // 5. PUBLIC EXECUTE — the CREATE FUNCTION default grant is a hard skip unless
19
+ // intentionally overridden (`@expose: rpc public` / `allowPublicExecute`, §6.1)
20
+ import { parseCommentTags } from './parseCommentTags.js';
21
+ import { inferWidget } from './widget.js';
22
+ // PostgreSQL polymorphic pseudo-types. A function taking one of these resolves
23
+ // its argument types at call time, which v1 does not model — loud skip (§4.4).
24
+ const POLYMORPHIC_TYPES = new Set([
25
+ 'anyelement',
26
+ 'anyarray',
27
+ 'anynonarray',
28
+ 'anyenum',
29
+ 'anyrange',
30
+ 'anymultirange',
31
+ 'anycompatible',
32
+ 'anycompatiblearray',
33
+ 'anycompatiblenonarray',
34
+ 'anycompatiblerange',
35
+ 'anycompatiblemultirange',
36
+ ]);
37
+ /** True for an argument that is part of the call's input (so it appears in the
38
+ * named-args body). OUT (`out`) and RETURNS TABLE columns (`table`) are
39
+ * return-side and excluded. */
40
+ function isInputArg(arg) {
41
+ return arg.mode === 'in' || arg.mode === 'inout' || arg.mode === 'variadic';
42
+ }
43
+ /** Validate an allowlist: every entry must be a schema-qualified name of
44
+ * exactly the form `schema.function`, with both parts non-empty and no extra
45
+ * dot (§5.0). A bare name is ambiguous (which schema?); an entry with two+
46
+ * dots is ambiguous against a quoted identifier that itself contains a dot, so
47
+ * it could authorize the wrong function — both are dropped with a build issue
48
+ * rather than matched loosely (fail-closed for the definer / PUBLIC gates).
49
+ * Returns the set of valid entries. */
50
+ function normalizeAllowlist(entries, configKey, issues) {
51
+ const set = new Set();
52
+ if (entries === undefined)
53
+ return set;
54
+ for (const entry of entries) {
55
+ const parts = entry.split('.');
56
+ if (parts.length !== 2 || parts[0] === '' || parts[1] === '') {
57
+ issues.push({
58
+ path: `rpc.${configKey}`,
59
+ message: `"${entry}" is not a schema-qualified function name ` +
60
+ '(expected exactly "schema.function"); ignored.',
61
+ });
62
+ continue;
63
+ }
64
+ set.add(entry);
65
+ }
66
+ return set;
67
+ }
68
+ /** The owner-relative safe-search_path predicate for `security definer`
69
+ * functions (RPC design §3.2). A definer function runs as its owner, so an
70
+ * unqualified name resolved through a schema that someone else can write to
71
+ * can be hijacked. Safe requires: a declared search_path; `pg_temp` present
72
+ * exactly once and last (else the temp schema is searched implicitly first);
73
+ * and every other element a schema only the owner may CREATE in. Anything
74
+ * unresolvable is unsafe (fail-closed). */
75
+ function checkSafeSearchPath(fn) {
76
+ const sp = fn.searchPath;
77
+ if (sp === null || sp.length === 0) {
78
+ return { safe: false, reason: 'no SET search_path is declared' };
79
+ }
80
+ const tempCount = sp.filter((e) => e.isTemp).length;
81
+ if (tempCount === 0) {
82
+ return {
83
+ safe: false,
84
+ reason: 'pg_temp is not listed, so the session temp schema is searched implicitly first',
85
+ };
86
+ }
87
+ if (tempCount > 1 || !sp[sp.length - 1].isTemp) {
88
+ return { safe: false, reason: 'pg_temp must appear exactly once and as the last element' };
89
+ }
90
+ for (const el of sp) {
91
+ if (el.isTemp)
92
+ continue;
93
+ if (el.schema === null) {
94
+ return { safe: false, reason: `element "${el.raw}" does not resolve to a fixed schema` };
95
+ }
96
+ if (el.writableByOthers === null) {
97
+ return { safe: false, reason: `cannot determine who may CREATE in schema "${el.schema}"` };
98
+ }
99
+ if (el.writableByOthers === true) {
100
+ return {
101
+ safe: false,
102
+ reason: `schema "${el.schema}" is writable by PUBLIC or a role other than the owner`,
103
+ };
104
+ }
105
+ }
106
+ return { safe: true, reason: '' };
107
+ }
108
+ /** Build a synthetic RawColumn so argument widget inference reuses the exact
109
+ * column heuristics (`inferWidget`). Arguments are not foreign keys, so a
110
+ * relation-select only comes from an `@arg` relation hint, handled in
111
+ * `buildArg`; here we only need name + udtName for the type-based path. */
112
+ function inferArgWidget(arg, enumValues) {
113
+ return inferWidget({
114
+ column: {
115
+ name: arg.name,
116
+ dataType: arg.typeName,
117
+ udtName: arg.udtName,
118
+ nullable: true,
119
+ defaultExpr: null,
120
+ comment: null,
121
+ position: 0,
122
+ },
123
+ isForeignKey: false,
124
+ relationSelectable: false,
125
+ enumValues,
126
+ commentBody: '',
127
+ });
128
+ }
129
+ /** ENUM members for an argument's type, matched by type name (preferring the
130
+ * function's own schema when an enum name is reused across schemas). */
131
+ function findEnumValues(enums, udtName, fnSchema) {
132
+ const match = enums.find((e) => e.name === udtName && e.schema === fnSchema) ??
133
+ enums.find((e) => e.name === udtName);
134
+ return match?.values;
135
+ }
136
+ function buildArg(arg, parsed, fnSchema, enums) {
137
+ const hint = parsed.args.find((h) => h.name === arg.name);
138
+ const relation = hint?.relation
139
+ ? {
140
+ // A 2-part ref (`table.col`) defaults its schema to the function's.
141
+ schema: hint.relation.schema ?? fnSchema,
142
+ table: hint.relation.table,
143
+ column: hint.relation.column,
144
+ }
145
+ : undefined;
146
+ const enumValues = findEnumValues(enums, arg.udtName, fnSchema);
147
+ // Widget order: explicit @arg widget hint > relation-select (relation hint) >
148
+ // type-based inference (enum-select for an ENUM, else a scalar widget).
149
+ let widget;
150
+ if (hint?.widget) {
151
+ widget = hint.widget;
152
+ }
153
+ else if (relation) {
154
+ widget = 'relation-select';
155
+ }
156
+ else {
157
+ widget = inferArgWidget(arg, enumValues ?? null);
158
+ }
159
+ return {
160
+ name: arg.name,
161
+ typeName: arg.typeName,
162
+ hasDefault: arg.hasDefault,
163
+ ...(enumValues ? { enumValues } : {}),
164
+ ...(relation ? { relation } : {}),
165
+ widget,
166
+ };
167
+ }
168
+ function mapReturn(r) {
169
+ // 'unsupported' is gated before this is reached; the fallback keeps the type
170
+ // total without inventing a misleading shape.
171
+ const kind = r.kind === 'unsupported' ? 'void' : r.kind;
172
+ return {
173
+ kind,
174
+ typeName: r.typeName,
175
+ ...(r.columns
176
+ ? { columns: r.columns.map((c) => ({ name: c.name, typeName: c.typeName })) }
177
+ : {}),
178
+ };
179
+ }
180
+ function decideAndBuild(input) {
181
+ const { fn, parsed, qualifiedName, enums, allowDefiner, allowPublicExecute, issues } = input;
182
+ const skip = (message) => {
183
+ issues.push({ path: `functions.${qualifiedName}`, message: `"${qualifiedName}" ${message}` });
184
+ return null;
185
+ };
186
+ const inputArgs = fn.arguments.filter(isInputArg);
187
+ // (2) unsupported arguments
188
+ for (const arg of inputArgs) {
189
+ if (arg.mode === 'variadic') {
190
+ return skip(`has a VARIADIC argument ("${arg.name}"), unsupported in v1; not exposed.`);
191
+ }
192
+ if (arg.name === '') {
193
+ return skip('has an unnamed argument; the named-args RPC body requires names, so it is not exposed.');
194
+ }
195
+ if (POLYMORPHIC_TYPES.has(arg.udtName)) {
196
+ return skip(`has a polymorphic argument ("${arg.name}" ${arg.typeName}), unsupported in v1; not exposed.`);
197
+ }
198
+ }
199
+ // (3) unsupported return
200
+ if (fn.returns.kind === 'unsupported') {
201
+ return skip(`returns "${fn.returns.typeName}", an unsupported return shape in v1 ` +
202
+ '(OUT/INOUT composite, record, or polymorphic); not exposed.');
203
+ }
204
+ // (4) SECURITY DEFINER double opt-in + safe search_path
205
+ if (fn.security === 'definer') {
206
+ if (!allowDefiner.has(qualifiedName)) {
207
+ return skip('is SECURITY DEFINER and tagged @expose: rpc, but is not listed in api.rpc.allowDefiner; ' +
208
+ 'not exposed (the operator must opt in to a privilege-bypassing endpoint, §3.2).');
209
+ }
210
+ const sp = checkSafeSearchPath(fn);
211
+ if (!sp.safe) {
212
+ return skip(`is SECURITY DEFINER but its search_path is not owner-safe (${sp.reason}); ` +
213
+ 'not exposed. Declare SET search_path with owner-only schemas and a trailing pg_temp (§3.2).');
214
+ }
215
+ }
216
+ // (5) PUBLIC EXECUTE — the default grant is a hard skip unless overridden
217
+ let publicCallable = false;
218
+ if (fn.publicExecute) {
219
+ const overridden = parsed.expose === 'rpc-public' || allowPublicExecute.has(qualifiedName);
220
+ if (!overridden) {
221
+ return skip('still grants EXECUTE to PUBLIC (the CREATE FUNCTION default); not exposed. ' +
222
+ 'REVOKE EXECUTE FROM PUBLIC and GRANT it to the intended role, or declare the public ' +
223
+ 'endpoint intentional with @expose: rpc public / api.rpc.allowPublicExecute (§6.1).');
224
+ }
225
+ publicCallable = true;
226
+ }
227
+ const args = inputArgs.map((arg) => buildArg(arg, parsed, fn.schema, enums));
228
+ // An @arg hint naming a non-existent argument is a loud (non-fatal) issue —
229
+ // the function is still exposed, but the typo would otherwise vanish silently
230
+ // (mirrors how UIHints reports a column that does not exist).
231
+ const inputArgNames = new Set(inputArgs.map((a) => a.name));
232
+ for (const hint of parsed.args) {
233
+ if (!inputArgNames.has(hint.name)) {
234
+ issues.push({
235
+ path: `functions.${qualifiedName}.args.${hint.name}`,
236
+ message: `@arg hint references argument "${hint.name}", which "${qualifiedName}" does not have; ignored.`,
237
+ });
238
+ }
239
+ }
240
+ const body = parsed.body !== '' ? parsed.body : null;
241
+ const label = body !== null ? body.split('\n')[0].trim() : fn.name;
242
+ return {
243
+ schema: fn.schema,
244
+ name: fn.name,
245
+ qualifiedName,
246
+ label,
247
+ description: body,
248
+ aiDescription: parsed.ai.length > 0 ? parsed.ai.join('\n') : null,
249
+ policy: parsed.policy,
250
+ args,
251
+ returns: mapReturn(fn.returns),
252
+ volatility: fn.volatility,
253
+ security: fn.security,
254
+ publicCallable,
255
+ rawFunction: fn,
256
+ };
257
+ }
258
+ /** Decide which functions are exposed as RPC actions and shape them into
259
+ * FunctionContexts (RPC design §3–§5). Skipped-but-tagged functions are pushed
260
+ * onto `issues`. Output is sorted by qualified name for stable surfaces. */
261
+ export function buildFunctionContexts(input) {
262
+ const { functions, enums, issues } = input;
263
+ const allowDefiner = normalizeAllowlist(input.rpc?.allowDefiner, 'allowDefiner', issues);
264
+ const allowPublicExecute = normalizeAllowlist(input.rpc?.allowPublicExecute, 'allowPublicExecute', issues);
265
+ const byQualified = new Map();
266
+ for (const fn of functions) {
267
+ const parsed = parseCommentTags(fn.comment);
268
+ const q = `${fn.schema}.${fn.name}`;
269
+ const group = byQualified.get(q);
270
+ if (group)
271
+ group.push({ fn, parsed });
272
+ else
273
+ byQualified.set(q, [{ fn, parsed }]);
274
+ }
275
+ const result = [];
276
+ for (const [qualifiedName, group] of byQualified) {
277
+ // An identity with no tagged member is simply not exposed (the untagged
278
+ // majority: triggers, RLS predicates, internal helpers, §3.1) — no issue.
279
+ if (!group.some((e) => e.parsed.expose !== 'none'))
280
+ continue;
281
+ // (1) overload collision: the identity has >1 definition and at least one
282
+ // is tagged. Expose none of them (§2 / §4.4). cross-schema same-name is a
283
+ // distinct identity (§5.0) and does not collide.
284
+ if (group.length > 1) {
285
+ issues.push({
286
+ path: `functions.${qualifiedName}`,
287
+ message: `"${qualifiedName}" has ${group.length} overloaded definitions and at least one is ` +
288
+ 'tagged for RPC exposure; v1 cannot disambiguate overloads by signature, so none are ' +
289
+ 'exposed. Rename the overloads or keep a single definition for this name.',
290
+ });
291
+ continue;
292
+ }
293
+ // The canonical identity is the dotted string `schema.name`, shared by the
294
+ // REST path, OpenAPI operationId, MCP tool name, and config entries (§5.0).
295
+ // A dot inside a (quoted) schema or function name makes that string
296
+ // non-injective — `"a.b".c` and `a."b.c"` both flatten to `a.b.c`, so an
297
+ // `allowDefiner` / `allowPublicExecute` entry could authorize the wrong
298
+ // function. Such a name cannot be expressed unambiguously, so it fails
299
+ // closed (loud skip).
300
+ const entry = group[0];
301
+ if (entry.fn.schema.includes('.') || entry.fn.name.includes('.')) {
302
+ issues.push({
303
+ path: `functions.${entry.fn.schema}.${entry.fn.name}`,
304
+ message: `"${entry.fn.schema}"."${entry.fn.name}" has a "." in its schema or name; ` +
305
+ 'the schema-qualified RPC identity (schema.function) would be ambiguous, so it is not exposed.',
306
+ });
307
+ continue;
308
+ }
309
+ const ctx = decideAndBuild({
310
+ fn: entry.fn,
311
+ parsed: entry.parsed,
312
+ qualifiedName,
313
+ enums,
314
+ allowDefiner,
315
+ allowPublicExecute,
316
+ issues,
317
+ });
318
+ if (ctx !== null)
319
+ result.push(ctx);
320
+ }
321
+ result.sort((a, b) => a.qualifiedName.localeCompare(b.qualifiedName));
322
+ return result;
323
+ }
324
+ //# sourceMappingURL=buildFunctionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildFunctionContext.js","sourceRoot":"","sources":["../src/buildFunctionContext.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,16 @@
1
1
  import type { RawIntrospection } from './types/raw.js';
2
2
  import type { UIHints } from './types/ui-hints.js';
3
3
  import type { SchemaContext } from './types/context.js';
4
+ import { type RpcBuildConfig } from './buildFunctionContext.js';
4
5
  export type BuildOptions = {
5
6
  raw: RawIntrospection;
6
7
  uiHints?: UIHints;
7
8
  /** Whether to warn-only on validation issues, or throw. Default: false (warn only). */
8
9
  strict?: boolean;
10
+ /** RPC exposure config (issue #103). When omitted, no `security definer` or
11
+ * PUBLIC-EXECUTE function can be exposed; invoker functions tagged
12
+ * `@expose: rpc` (with PUBLIC EXECUTE revoked) still are. */
13
+ rpc?: RpcBuildConfig;
9
14
  };
10
15
  export type BuildIssue = {
11
16
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"buildSchemaContext.d.ts","sourceRoot":"","sources":["../src/buildSchemaContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,gBAAgB,EAAqB,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAA2B,OAAO,EAAa,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAKV,aAAa,EAId,MAAM,oBAAoB,CAAC;AAM5B,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;CAKlD;AA4SD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA6EnF"}
1
+ {"version":3,"file":"buildSchemaContext.d.ts","sourceRoot":"","sources":["../src/buildSchemaContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,gBAAgB,EAAqB,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAA2B,OAAO,EAAa,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAKV,aAAa,EAId,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEvF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;kEAE8D;IAC9D,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;CAKlD;AAyTD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA0HnF"}
@@ -2,6 +2,7 @@ import { parseCommentTags } from './parseCommentTags.js';
2
2
  import { extractCheckEnums } from './checkEnum.js';
3
3
  import { inferWidget } from './widget.js';
4
4
  import { inferDisplayField } from './displayField.js';
5
+ import { buildFunctionContexts } from './buildFunctionContext.js';
5
6
  export class KozouBuildError extends Error {
6
7
  issues;
7
8
  constructor(message, issues) {
@@ -44,6 +45,16 @@ function buildColumn(input) {
44
45
  commentBody: parsed.body,
45
46
  });
46
47
  const label = hints?.label ?? deriveLabel(column.name);
48
+ // Privilege-aware mode (issue #99): when the serving role's privileges were
49
+ // evaluated, surface them as `insertable` / `updatable` (the privilege
50
+ // truth). `readonly` stays sourced from UI Hints only — applying the grant
51
+ // to read-only is mode-dependent (a column may be insertable but not
52
+ // updatable, or vice versa), so the Admin UI derives a per-mode read-only
53
+ // from `insertable` (create) / `updatable` (edit). Keeping it out of the
54
+ // shared `readonly` leaves `@kozou/api` / MCP schema-wide.
55
+ const priv = column.privileges;
56
+ const insertable = priv === undefined ? undefined : priv.insert;
57
+ const updatable = priv === undefined ? undefined : priv.update;
47
58
  return {
48
59
  name: column.name,
49
60
  dataType: column.dataType,
@@ -58,6 +69,8 @@ function buildColumn(input) {
58
69
  widget,
59
70
  enumValues,
60
71
  readonly: hints?.readonly ?? false,
72
+ ...(insertable === undefined ? {} : { insertable }),
73
+ ...(updatable === undefined ? {} : { updatable }),
61
74
  };
62
75
  }
63
76
  function buildRelations(table, issues) {
@@ -268,7 +281,7 @@ function buildConcept(view) {
268
281
  };
269
282
  }
270
283
  export async function buildSchemaContext(opts) {
271
- const { raw, uiHints, strict = false } = opts;
284
+ const { raw, uiHints, strict = false, rpc } = opts;
272
285
  const issues = [];
273
286
  const knownTables = new Set(raw.tables.map((t) => `${t.schema}.${t.name}`));
274
287
  raw.views.forEach((v) => knownTables.add(`${v.schema}.${v.name}`));
@@ -292,13 +305,44 @@ export async function buildSchemaContext(opts) {
292
305
  }
293
306
  }
294
307
  }
295
- const tables = raw.tables.map((t) => buildTableContext({
308
+ // Privilege-aware mode (issue #99): a table / view the serving role cannot
309
+ // SELECT (or whose schema it cannot USAGE — both folded into `select`) is
310
+ // hidden from the generated surfaces rather than listed and erroring on open.
311
+ // Hiding is intended behaviour, not a validation issue, so it is reported on a
312
+ // separate informational channel (never thrown, even under strict). Relations
313
+ // whose privileges were not evaluated (`undefined`) are always kept. Relation
314
+ // targets are still resolved against the full `knownTables`, so a relation
315
+ // pointing at a hidden table is not flagged as missing; such an embed would be
316
+ // denied at query time (mapped to 403) — see issue #99 known limitations.
317
+ const hiddenNames = [];
318
+ const visibleRawTables = raw.tables.filter((t) => {
319
+ if (t.privileges?.select === false) {
320
+ hiddenNames.push(t.name);
321
+ return false;
322
+ }
323
+ return true;
324
+ });
325
+ const visibleRawViews = raw.views.filter((v) => {
326
+ if (v.privileges?.select === false) {
327
+ hiddenNames.push(v.name);
328
+ return false;
329
+ }
330
+ return true;
331
+ });
332
+ if (hiddenNames.length > 0) {
333
+ const role = raw.tables.find((t) => t.privileges !== undefined)?.privileges?.role ??
334
+ raw.views.find((v) => v.privileges !== undefined)?.privileges?.role ??
335
+ 'the role';
336
+ console.warn(`[@kozou/core] privilege-aware introspection: hid ${hiddenNames.length} relation(s) ` +
337
+ `that "${role}" cannot SELECT: ${hiddenNames.join(', ')}`);
338
+ }
339
+ const tables = visibleRawTables.map((t) => buildTableContext({
296
340
  table: t,
297
341
  hints: uiHints?.tables?.[t.name],
298
342
  issues,
299
343
  knownTables,
300
344
  }));
301
- const views = raw.views.map((v) => buildViewContext({
345
+ const views = visibleRawViews.map((v) => buildViewContext({
302
346
  view: v,
303
347
  hints: uiHints?.views?.[v.name],
304
348
  issues,
@@ -309,7 +353,15 @@ export async function buildSchemaContext(opts) {
309
353
  values: e.values,
310
354
  description: null,
311
355
  }));
312
- const concepts = raw.views.map(buildConcept);
356
+ const concepts = visibleRawViews.map(buildConcept);
357
+ // RPC functions (issue #103): decide which tagged functions are exposed and
358
+ // shape them; skipped-but-tagged functions append loud-skip issues below.
359
+ const functions = buildFunctionContexts({
360
+ functions: raw.functions,
361
+ enums: raw.enums,
362
+ rpc,
363
+ issues,
364
+ });
313
365
  if (issues.length > 0) {
314
366
  if (strict) {
315
367
  throw new KozouBuildError(`buildSchemaContext: ${issues.length} validation issue(s) (strict=true)`, issues);
@@ -328,6 +380,7 @@ export async function buildSchemaContext(opts) {
328
380
  views,
329
381
  enums,
330
382
  concepts,
383
+ functions,
331
384
  };
332
385
  }
333
386
  //# sourceMappingURL=buildSchemaContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildSchemaContext.js","sourceRoot":"","sources":["../src/buildSchemaContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildSchemaContext.js","sourceRoot":"","sources":["../src/buildSchemaContext.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export type { RawIntrospection, RawTable, RawColumn, RawForeignKey, RawCheck, RawIndex, RawView, RawEnum, RawFunction, FkAction, } from './types/raw.js';
2
- export type { SchemaContext, TableContext, ColumnContext, WidgetType, RelationContext, ViewContext, EnumContext, ConceptContext, } from './types/context.js';
1
+ export type { RawIntrospection, RawTable, RawColumn, RawForeignKey, RawCheck, RawIndex, RawView, RawEnum, RawFunction, RawFunctionArg, RawFunctionReturn, RawFunctionSearchPathElement, FkAction, } from './types/raw.js';
2
+ export type { SchemaContext, TableContext, ColumnContext, WidgetType, RelationContext, ViewContext, EnumContext, ConceptContext, FunctionContext, FunctionArgContext, FunctionReturnContext, } from './types/context.js';
3
3
  export { uiHintsSchema, type UIHints, type TableHints, type ColumnHints, type ViewHints, type RelationHints, } from './types/ui-hints.js';
4
4
  export type { DataAdapter, ResourceId, ListParams, ListResult, SortSpec, SearchRelationParams, RelationOption, } from './types/adapter.js';
5
- export { parseCommentTags, type ParsedComment } from './parseCommentTags.js';
5
+ export { parseCommentTags, type ParsedComment, type ExposeKind, type ArgHint, } from './parseCommentTags.js';
6
+ export { buildFunctionContexts, type RpcBuildConfig, } from './buildFunctionContext.js';
6
7
  export { inferWidget, type InferWidgetInput } from './widget.js';
7
8
  export { inferDisplayField, type InferDisplayFieldInput } from './displayField.js';
8
9
  export { extractCheckEnums } from './checkEnum.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,4BAA4B,EAC5B,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,OAAO,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,KAAK,cAAc,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,8 @@
2
2
  // Per Kozou v0.1 spec §0, the type definitions in this package are the
3
3
  // source of truth on the code side.
4
4
  export { uiHintsSchema, } from './types/ui-hints.js';
5
- export { parseCommentTags } from './parseCommentTags.js';
5
+ export { parseCommentTags, } from './parseCommentTags.js';
6
+ export { buildFunctionContexts, } from './buildFunctionContext.js';
6
7
  export { inferWidget } from './widget.js';
7
8
  export { inferDisplayField } from './displayField.js';
8
9
  export { extractCheckEnums } from './checkEnum.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,uEAAuE;AACvE,oCAAoC;AA0BpC,OAAO,EACL,aAAa,GAMd,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EAAE,gBAAgB,EAAsB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAyB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,eAAe,GAGhB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,uEAAuE;AACvE,oCAAoC;AAgCpC,OAAO,EACL,aAAa,GAMd,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EACL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,GAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAyB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,eAAe,GAGhB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -3,12 +3,33 @@ export type ExampleQuery = {
3
3
  description: string;
4
4
  sql: string;
5
5
  };
6
+ /** RPC exposure marker from `@expose:` (RPC design §3 / §6.1). `none` = the
7
+ * function is not exposed (the default); `rpc` = exposed; `rpc-public` =
8
+ * exposed and intentionally public-callable (PUBLIC EXECUTE override, §6.1). */
9
+ export type ExposeKind = 'none' | 'rpc' | 'rpc-public';
10
+ /** Per-argument hint from `@arg: <name> ...` on a function COMMENT (RPC design
11
+ * §5.4). `relation` targets a relation-select; `widget` forces a widget. The
12
+ * relation `schema` is null when the ref was 2-part (`table.col`); the
13
+ * function-context builder defaults it to the function's schema. */
14
+ export type ArgHint = {
15
+ name: string;
16
+ relation?: {
17
+ schema: string | null;
18
+ table: string;
19
+ column: string;
20
+ };
21
+ widget?: WidgetType;
22
+ };
6
23
  export type ParsedComment = {
7
24
  body: string;
8
25
  ai: string[];
9
26
  widget: WidgetType | null;
10
27
  policy: string[];
11
28
  examples: ExampleQuery[];
29
+ /** RPC exposure marker (`@expose:`); `none` when the tag is absent. */
30
+ expose: ExposeKind;
31
+ /** `@arg:` hints, in source order (RPC design §5.4). */
32
+ args: ArgHint[];
12
33
  };
13
34
  export declare function parseCommentTags(comment: string | null): ParsedComment;
14
35
  //# sourceMappingURL=parseCommentTags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseCommentTags.d.ts","sourceRoot":"","sources":["../src/parseCommentTags.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAuFrD,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAaF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAiHtE"}
1
+ {"version":3,"file":"parseCommentTags.d.ts","sourceRoot":"","sources":["../src/parseCommentTags.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAuFrD,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;iFAEiF;AACjF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;AAEvD;;;qEAGqE;AACrE,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,uEAAuE;IACvE,MAAM,EAAE,UAAU,CAAC;IACnB,wDAAwD;IACxD,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AA2DF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAqJtE"}
@@ -2,6 +2,13 @@
2
2
  // `@policy:`, `@example:`). See Kozou v0.1 design spec §10.1 for the
3
3
  // tag vocabulary and §7.3.6 for the `exampleQueries` MCP surface.
4
4
  //
5
+ // Two single-line tags were added for the RPC surface (issue #103, RPC
6
+ // design §3 / §5.4): `@expose:` marks a function for RPC exposure
7
+ // (`@expose: rpc`, or `@expose: rpc public` to keep PUBLIC callable),
8
+ // and `@arg: <name> relation(<ref>)` / `@arg: <name> widget(<type>)`
9
+ // hints a function argument toward a relation-select / specific widget
10
+ // in the Admin UI action form.
11
+ //
5
12
  // Tags are recognized at line start only (after optional leading
6
13
  // whitespace). A known tag written mid-line is NOT parsed — the text
7
14
  // stays in `body` verbatim — and emits a warning so the leak into
@@ -33,7 +40,7 @@ const KNOWN_WIDGETS = new Set([
33
40
  'uuid',
34
41
  'currency',
35
42
  ]);
36
- const KNOWN_TAGS = new Set(['ai', 'widget', 'policy', 'example']);
43
+ const KNOWN_TAGS = new Set(['ai', 'widget', 'policy', 'example', 'expose', 'arg']);
37
44
  // Note: no `\s*` after the `:` — the captured value is `.trim()`ed in
38
45
  // code, and a `\s*` directly before `(.*)` makes this a polynomial-ReDoS
39
46
  // shape (both match spaces) that CodeQL flags. Leading/intra whitespace
@@ -101,6 +108,52 @@ function warnMidlineTag(token) {
101
108
  function isWidgetType(value) {
102
109
  return KNOWN_WIDGETS.has(value);
103
110
  }
111
+ /** Index of the first whitespace character, or -1. Manual scan (no regex) to
112
+ * stay off CodeQL's polynomial-ReDoS radar, like the rest of this module. */
113
+ function firstWhitespaceIndex(s) {
114
+ for (let i = 0; i < s.length; i += 1) {
115
+ if (LINE_WS_RE.test(s[i]))
116
+ return i;
117
+ }
118
+ return -1;
119
+ }
120
+ /** Extract `<inner>` from a `<name>(<inner>)` directive token (trimmed), or
121
+ * null when the token is not exactly that shape. Manual scan, no regex. */
122
+ function parenDirective(directive, name) {
123
+ const prefix = `${name}(`;
124
+ if (!directive.startsWith(prefix) || !directive.endsWith(')'))
125
+ return null;
126
+ return directive.slice(prefix.length, -1).trim();
127
+ }
128
+ /** Parse an `@arg:` value — "<argname> relation(<ref>)" or
129
+ * "<argname> widget(<type>)". Returns null on any malformed shape so the
130
+ * caller can warn (no silent drop). `<ref>` is `table.col` (schema defaulted
131
+ * later) or `schema.table.col`. */
132
+ function parseArgHint(value) {
133
+ const ws = firstWhitespaceIndex(value);
134
+ if (ws === -1)
135
+ return null; // bare name, no directive
136
+ const name = value.slice(0, ws);
137
+ const directive = value.slice(ws + 1).trim();
138
+ if (name === '' || directive === '')
139
+ return null;
140
+ const rel = parenDirective(directive, 'relation');
141
+ if (rel !== null) {
142
+ const parts = rel.split('.').map((p) => p.trim());
143
+ if (parts.length === 2 && parts.every((p) => p !== '')) {
144
+ return { name, relation: { schema: null, table: parts[0], column: parts[1] } };
145
+ }
146
+ if (parts.length === 3 && parts.every((p) => p !== '')) {
147
+ return { name, relation: { schema: parts[0], table: parts[1], column: parts[2] } };
148
+ }
149
+ return null;
150
+ }
151
+ const wid = parenDirective(directive, 'widget');
152
+ if (wid !== null) {
153
+ return isWidgetType(wid) ? { name, widget: wid } : null;
154
+ }
155
+ return null;
156
+ }
104
157
  export function parseCommentTags(comment) {
105
158
  const result = {
106
159
  body: '',
@@ -108,6 +161,8 @@ export function parseCommentTags(comment) {
108
161
  widget: null,
109
162
  policy: [],
110
163
  examples: [],
164
+ expose: 'none',
165
+ args: [],
111
166
  };
112
167
  if (comment === null || comment === '')
113
168
  return result;
@@ -203,6 +258,39 @@ export function parseCommentTags(comment) {
203
258
  pending = { kind: 'example', description: value, sqlLines: [] };
204
259
  continue;
205
260
  }
261
+ if (tag === 'expose') {
262
+ // Single-line directive, lifted out of `body` like `@widget`. Accept
263
+ // `rpc` (exposed) and `rpc public` (exposed + public-callable, §6.1);
264
+ // a later `@expose:` line wins (last-write). Whitespace-normalized so
265
+ // "rpc public" still parses.
266
+ const tokens = value.toLowerCase().split(/\s+/).filter((t) => t !== '');
267
+ if (tokens.length === 1 && tokens[0] === 'rpc') {
268
+ result.expose = 'rpc';
269
+ }
270
+ else if (tokens.length === 2 && tokens[0] === 'rpc' && tokens[1] === 'public') {
271
+ result.expose = 'rpc-public';
272
+ }
273
+ else {
274
+ // Fail closed: an invalid value resets exposure to none so a malformed
275
+ // later line (`@expose: rpc` then `@expose: disabled`) cannot leave an
276
+ // earlier allow active — exposure is a security gate.
277
+ result.expose = 'none';
278
+ console.warn(`[@kozou/core] parseCommentTags: invalid @expose value "${value}" ` +
279
+ '(expected "rpc" or "rpc public"; not exposed)');
280
+ }
281
+ continue;
282
+ }
283
+ if (tag === 'arg') {
284
+ const hint = parseArgHint(value);
285
+ if (hint !== null) {
286
+ result.args.push(hint);
287
+ }
288
+ else {
289
+ console.warn(`[@kozou/core] parseCommentTags: invalid @arg value "${value}" ` +
290
+ '(expected "<name> relation(<table.col>)" or "<name> widget(<type>)"; skip)');
291
+ }
292
+ continue;
293
+ }
206
294
  if (!KNOWN_TAGS.has(tag)) {
207
295
  console.warn(`[@kozou/core] parseCommentTags: unknown tag "@${tag}" (forward compat: kept in body)`);
208
296
  bodyLines.push(line);
@@ -1 +1 @@
1
- {"version":3,"file":"parseCommentTags.js","sourceRoot":"","sources":["../src/parseCommentTags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseCommentTags.js","sourceRoot":"","sources":["../src/parseCommentTags.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,15 @@ export interface DataAdapter {
18
18
  delete(resource: string, id: ResourceId): Promise<void>;
19
19
  /** Lightweight search used by relation-select (returns label / search fields only) */
20
20
  searchRelation(resource: string, params: SearchRelationParams): Promise<RelationOption[]>;
21
+ /**
22
+ * Invoke an exposed RPC function (issue #103). `qualifiedName` is the
23
+ * schema-qualified identity (`schema.function`); `args` is the named-argument
24
+ * object. Resolves to the function's result: a scalar, an object, an array,
25
+ * or null for a void function. Optional — only the in-house @kozou/api
26
+ * backend serves the `/rpc/` surface; an adapter without it has no RPC
27
+ * actions and the Admin UI hides the "Actions" surface.
28
+ */
29
+ callFunction?(qualifiedName: string, args: Record<string, unknown>): Promise<unknown>;
21
30
  }
22
31
  export type ListParams = {
23
32
  /** Free-text search query (v0.1 is `ilike`-based) */
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,sBAAsB;IACtB,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,sFAAsF;IACtF,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;;;OASG;IACH,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,sBAAsB;IACtB,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,sFAAsF;IACtF,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,YAAY,CAAC,CACX,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;;;OASG;IACH,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RawTable, RawView } from './raw.js';
1
+ import type { RawFunction, RawTable, RawView } from './raw.js';
2
2
  /** Output of core.buildSchemaContext; input to MCP / UI. */
3
3
  export type SchemaContext = {
4
4
  meta: {
@@ -11,6 +11,13 @@ export type SchemaContext = {
11
11
  enums: EnumContext[];
12
12
  /** Domain concepts derived from views (in v0.1, every view is a concept) */
13
13
  concepts: ConceptContext[];
14
+ /** Functions exposed as RPC actions (RPC design, issue #103). Contains only
15
+ * the functions that pass the exposure decision (§3); functions tagged for
16
+ * exposure that fail a guard are reported as build issues (loud skip, §4.4),
17
+ * not listed here. Optional for back-compat: `buildSchemaContext` always
18
+ * populates it (possibly empty), but a context built before this field
19
+ * existed omits it, so readers normalize with `functions ?? []`. */
20
+ functions?: FunctionContext[];
14
21
  };
15
22
  export type TableContext = {
16
23
  schema: string;
@@ -54,8 +61,19 @@ export type ColumnContext = {
54
61
  widget: WidgetType;
55
62
  /** Values extracted from CHECK constraints, or PostgreSQL ENUM members */
56
63
  enumValues: string[] | null;
57
- /** Sourced from UI Hints */
64
+ /** Read-only in the Admin UI, sourced from UI Hints. Drives form rendering
65
+ * and payload exclusion. Privilege-aware mode (issue #99) does NOT fold into
66
+ * this flag: read-only is mode-dependent there, so the Admin UI derives a
67
+ * per-mode read-only from `insertable` / `updatable` (see below). */
58
68
  readonly: boolean;
69
+ /** Privilege-aware mode only (issue #99): whether the serving role may INSERT
70
+ * this column. `undefined` = privileges were not evaluated (default mode).
71
+ * `false` makes the Admin UI render the column read-only on **create**. */
72
+ insertable?: boolean;
73
+ /** Privilege-aware mode only (issue #99): whether the serving role may UPDATE
74
+ * this column. `undefined` = not evaluated. `false` makes the Admin UI
75
+ * render the column read-only on **edit**. */
76
+ updatable?: boolean;
59
77
  };
60
78
  /** Widget domain for Kozou v0.1 spec §6.4. */
61
79
  export type WidgetType = 'text' | 'textarea' | 'number' | 'boolean' | 'date' | 'datetime' | 'enum-select' | 'relation-select' | 'json' | 'image-url' | 'uuid' | 'currency';
@@ -111,6 +129,70 @@ export type EnumContext = {
111
129
  values: string[];
112
130
  description: string | null;
113
131
  };
132
+ /** One input argument of an exposed RPC function, shaped for the surfaces
133
+ * (RPC design §4.2 / §5.4). Only input args (`in` / `inout` / `variadic`)
134
+ * reach here; the builder excludes OUT / TABLE columns. */
135
+ export type FunctionArgContext = {
136
+ name: string;
137
+ /** `format_type` rendering of the argument's SQL type. */
138
+ typeName: string;
139
+ /** Whether the argument has a DEFAULT, so the RPC body may omit it. */
140
+ hasDefault: boolean;
141
+ /** ENUM members when the argument's type is a PostgreSQL ENUM (drives
142
+ * enum-select in the Admin UI action form). */
143
+ enumValues?: string[];
144
+ /** Relation target resolved from an `@arg: <name> relation(<ref>)` hint
145
+ * (RPC design §5.4), for a relation-select argument widget. */
146
+ relation?: {
147
+ schema: string;
148
+ table: string;
149
+ column: string;
150
+ };
151
+ /** Widget for the Admin UI action form: relation-select (relation hint),
152
+ * enum-select (enum type), else a type-based scalar widget. */
153
+ widget: WidgetType;
154
+ };
155
+ /** Return shape of an exposed RPC function, mapped to the v1 wire (§4.3). */
156
+ export type FunctionReturnContext = {
157
+ kind: 'scalar' | 'composite' | 'setof' | 'void';
158
+ typeName: string;
159
+ /** Columns of a composite / SETOF return, when resolvable. */
160
+ columns?: {
161
+ name: string;
162
+ typeName: string;
163
+ }[];
164
+ };
165
+ /** A function compiled into the RPC surface (RPC design, issue #103). Only
166
+ * functions that pass the exposure decision (§3) become a FunctionContext;
167
+ * skipped-but-tagged functions are reported as build issues instead (§4.4).
168
+ * The canonical external identity is the schema-qualified `qualifiedName`
169
+ * (§5.0); REST path / OpenAPI operationId / MCP tool name all derive from it. */
170
+ export type FunctionContext = {
171
+ schema: string;
172
+ name: string;
173
+ /** "schema.name" — the canonical external identity (RPC design §5.0). */
174
+ qualifiedName: string;
175
+ /** Order: first line of COMMENT > name. */
176
+ label: string;
177
+ /** Full COMMENT body (plain text; `@ai:` / `@policy:` lines retained inline). */
178
+ description: string | null;
179
+ /** `@ai:` lines from the COMMENT. */
180
+ aiDescription: string | null;
181
+ /** `@policy:` advisory lines from the COMMENT (never enforced by kozou; see
182
+ * TableContext.policy). */
183
+ policy?: string[];
184
+ /** Input arguments, in declaration order. */
185
+ args: FunctionArgContext[];
186
+ returns: FunctionReturnContext;
187
+ volatility: 'immutable' | 'stable' | 'volatile';
188
+ security: 'invoker' | 'definer';
189
+ /** Whether this function is intentionally public-callable: PUBLIC keeps
190
+ * EXECUTE by deliberate override (`@expose: rpc public` / `allowPublicExecute`,
191
+ * §6.1). Default false: the function is callable only by roles with EXECUTE. */
192
+ publicCallable: boolean;
193
+ /** Raw record kept for downstream consumers. */
194
+ rawFunction: RawFunction;
195
+ };
114
196
  /** v0.1: ConceptContext is a thin wrapper around ViewContext. See end of Kozou v0.1 spec §4.2. */
115
197
  export type ConceptContext = {
116
198
  /** Matches ViewContext.name */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,25 @@ export type RawIntrospection = {
12
12
  /** v0.1 collects these but uses them sparingly in UI/MCP */
13
13
  functions: RawFunction[];
14
14
  };
15
+ /** Privileges of one role on a table, evaluated by `has_table_privilege`.
16
+ * Only populated when introspection runs with `privilegeRole` set (the
17
+ * opt-in privilege-aware mode, Kozou issue #99); otherwise `undefined`,
18
+ * meaning "privileges were not evaluated" — distinct from "all denied". */
19
+ export type RawTablePrivileges = {
20
+ /** Evaluated for this role name. */
21
+ role: string;
22
+ select: boolean;
23
+ insert: boolean;
24
+ update: boolean;
25
+ delete: boolean;
26
+ };
27
+ /** Privileges of one role on a single column, from `has_column_privilege`.
28
+ * Postgres reports a column privilege as held when it is granted either at
29
+ * the column level or table-wide, so these subsume the table grants. */
30
+ export type RawColumnPrivileges = {
31
+ insert: boolean;
32
+ update: boolean;
33
+ };
15
34
  export type RawTable = {
16
35
  schema: string;
17
36
  name: string;
@@ -22,6 +41,9 @@ export type RawTable = {
22
41
  foreignKeys: RawForeignKey[];
23
42
  checks: RawCheck[];
24
43
  indexes: RawIndex[];
44
+ /** Privileges of the serving role, present only in privilege-aware mode
45
+ * (issue #99). `undefined` = not evaluated. */
46
+ privileges?: RawTablePrivileges;
25
47
  /** Planner-maintained row count estimate (`pg_class.reltuples`).
26
48
  * PostgreSQL stores -1 for "never analyzed"; that case maps to
27
49
  * null here so consumers always see "a non-negative count, or
@@ -40,6 +62,9 @@ export type RawColumn = {
40
62
  comment: string | null;
41
63
  /** Ordinal position (1-based, from information_schema.columns) */
42
64
  position: number;
65
+ /** Privileges of the serving role on this column, present only in
66
+ * privilege-aware mode (issue #99). `undefined` = not evaluated. */
67
+ privileges?: RawColumnPrivileges;
43
68
  };
44
69
  export type RawForeignKey = {
45
70
  name: string;
@@ -76,20 +101,98 @@ export type RawView = {
76
101
  }[];
77
102
  /** pg_views.definition */
78
103
  definition: string;
104
+ /** Privileges of the serving role, present only in privilege-aware mode
105
+ * (issue #99). A view the role cannot SELECT (or whose schema it cannot
106
+ * USAGE) is hidden, like a table. `undefined` = not evaluated. */
107
+ privileges?: RawTablePrivileges;
79
108
  };
80
109
  export type RawEnum = {
81
110
  schema: string;
82
111
  name: string;
83
112
  values: string[];
84
113
  };
114
+ /** One declared argument of a function, as introspected from pg_proc. Covers
115
+ * all modes; the function-context builder keeps only the input ones (`in` /
116
+ * `inout` / `variadic`) when shaping the RPC surface, and treats `variadic` /
117
+ * unnamed args as a loud skip per the RPC design §4.4. */
118
+ export type RawFunctionArg = {
119
+ /** Argument name, or '' for an unnamed positional argument. */
120
+ name: string;
121
+ /** `format_type` rendering, e.g. "uuid", "integer", "public.order_status". */
122
+ typeName: string;
123
+ /** `pg_type.typname` of the argument's type, e.g. "uuid", "order_status".
124
+ * Used for widget inference (mirrors RawColumn.udtName). */
125
+ udtName: string;
126
+ /** `pg_type.oid` of the argument's type. */
127
+ typeOid: number;
128
+ /** Argument mode. `table` is an OUT column of a `RETURNS TABLE(...)` function. */
129
+ mode: 'in' | 'out' | 'inout' | 'variadic' | 'table';
130
+ /** Whether the argument has a DEFAULT (so the RPC body may omit it). */
131
+ hasDefault: boolean;
132
+ };
133
+ /** Classification of a function's return type for the RPC wire shape (RPC
134
+ * design §4.3). `unsupported` covers OUT/INOUT composite, record, polymorphic,
135
+ * and anything else v1 does not map — a loud skip when the function is tagged
136
+ * for exposure (§4.4). */
137
+ export type RawFunctionReturn = {
138
+ kind: 'scalar' | 'composite' | 'setof' | 'void' | 'unsupported';
139
+ /** `format_type` rendering of the return type, e.g. "integer", "SETOF orders". */
140
+ typeName: string;
141
+ /** True for `SETOF` / `RETURNS TABLE(...)` (the array wire shape). */
142
+ returnsSet: boolean;
143
+ /** Columns of a composite / TABLE(...) return, when resolvable. */
144
+ columns?: {
145
+ name: string;
146
+ typeName: string;
147
+ typeOid: number;
148
+ }[];
149
+ };
150
+ /** One element of a `security definer` function's declared `SET search_path`,
151
+ * used by the owner-relative safe-search_path predicate (RPC design §3.2). */
152
+ export type RawFunctionSearchPathElement = {
153
+ /** Raw element text from proconfig, e.g. "public", "pg_catalog", "$user". */
154
+ raw: string;
155
+ /** Resolved schema name, or null for a dynamic / unresolvable element
156
+ * (`$user`, a non-existent schema) — treated as unsafe (fail-closed). */
157
+ schema: string | null;
158
+ /** Whether PUBLIC, or any role other than the function owner, may CREATE in
159
+ * this schema (the hijack surface). `null` = could not be determined, which
160
+ * the predicate treats as unsafe (fail-closed, §3.2). Not evaluated for the
161
+ * `pg_temp` element (`isTemp: true`), whose hazard is presence/position. */
162
+ writableByOthers: boolean | null;
163
+ /** True for the `pg_temp` element (the session temp schema). */
164
+ isTemp: boolean;
165
+ };
166
+ /** A function pulled from pg_proc. Populated by @kozou/introspect for the RPC
167
+ * surface (RPC design §4). All fields beyond schema/name/comment are used by
168
+ * the exposure decision and the wire mapping; see RawFunctionArg / return /
169
+ * search-path types above. */
85
170
  export type RawFunction = {
86
171
  schema: string;
87
172
  name: string;
88
- returnType: string;
89
- arguments: {
173
+ /** Human-readable signature from `pg_get_function_arguments`, e.g.
174
+ * "order_id uuid, qty integer DEFAULT 1". Kept for diagnostics / docs. */
175
+ argumentSignature: string;
176
+ arguments: RawFunctionArg[];
177
+ returns: RawFunctionReturn;
178
+ volatility: 'immutable' | 'stable' | 'volatile';
179
+ /** `prosecdef`: a `security definer` function runs as its owner and needs the
180
+ * double opt-in + safe search_path of RPC design §3.2. */
181
+ security: 'invoker' | 'definer';
182
+ /** `proowner`: the role the function runs as under `security definer`, and
183
+ * the "only role allowed to CREATE" anchor of the safe-search_path predicate
184
+ * (§3.2 / §4.2). */
185
+ owner: {
186
+ oid: number;
90
187
  name: string;
91
- type: string;
92
- }[];
188
+ };
189
+ /** Whether PUBLIC holds EXECUTE on this function — the default-grant footgun
190
+ * (`CREATE FUNCTION` grants EXECUTE to PUBLIC by default). RPC design §6.1
191
+ * hard-skips a tagged function that still has this unless overridden. */
192
+ publicExecute: boolean;
193
+ /** Parsed `proconfig` `search_path` elements; null = none declared. Drives the
194
+ * safe-search_path predicate for `security definer` functions (§3.2). */
195
+ searchPath: RawFunctionSearchPathElement[] | null;
93
196
  comment: string | null;
94
197
  };
95
198
  //# sourceMappingURL=raw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/types/raw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/types/raw.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kozou/core",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Kozou core: Schema Context, type definitions, UI Hints zod schema, DataAdapter interface.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {