@kozou/core 0.0.1 → 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 +202 -0
- package/dist/buildSchemaContext.d.ts +19 -0
- package/dist/buildSchemaContext.d.ts.map +1 -0
- package/dist/buildSchemaContext.js +287 -0
- package/dist/buildSchemaContext.js.map +1 -0
- package/dist/checkEnum.d.ts +3 -0
- package/dist/checkEnum.d.ts.map +1 -0
- package/dist/checkEnum.js +35 -0
- package/dist/checkEnum.js.map +1 -0
- package/dist/displayField.d.ts +7 -0
- package/dist/displayField.d.ts.map +1 -0
- package/dist/displayField.js +10 -0
- package/dist/displayField.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/loadUIHints.d.ts +16 -0
- package/dist/loadUIHints.d.ts.map +1 -0
- package/dist/loadUIHints.js +50 -0
- package/dist/loadUIHints.js.map +1 -0
- package/dist/parseCommentTags.d.ts +9 -0
- package/dist/parseCommentTags.d.ts.map +1 -0
- package/dist/parseCommentTags.js +62 -0
- package/dist/parseCommentTags.js.map +1 -0
- package/dist/types/adapter.d.ts +45 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +8 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/context.d.ts +105 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +7 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/raw.d.ts +89 -0
- package/dist/types/raw.d.ts.map +1 -0
- package/dist/types/raw.js +8 -0
- package/dist/types/raw.js.map +1 -0
- package/dist/types/ui-hints.d.ts +339 -0
- package/dist/types/ui-hints.d.ts.map +1 -0
- package/dist/types/ui-hints.js +50 -0
- package/dist/types/ui-hints.js.map +1 -0
- package/dist/widget.d.ts +11 -0
- package/dist/widget.d.ts.map +1 -0
- package/dist/widget.js +31 -0
- package/dist/widget.js.map +1 -0
- package/package.json +42 -4
- package/README.md +0 -3
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type UIHints } from './types/ui-hints.js';
|
|
2
|
+
export declare class KozouUIHintsError extends Error {
|
|
3
|
+
readonly filePath: string;
|
|
4
|
+
readonly issues: {
|
|
5
|
+
path: string;
|
|
6
|
+
message: string;
|
|
7
|
+
line?: number;
|
|
8
|
+
}[];
|
|
9
|
+
constructor(message: string, filePath: string, issues: {
|
|
10
|
+
path: string;
|
|
11
|
+
message: string;
|
|
12
|
+
line?: number;
|
|
13
|
+
}[]);
|
|
14
|
+
}
|
|
15
|
+
export declare function loadUIHints(filePath: string): Promise<UIHints>;
|
|
16
|
+
//# sourceMappingURL=loadUIHints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadUIHints.d.ts","sourceRoot":"","sources":["../src/loadUIHints.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAElE,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;gBAElE,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;CAO7D;AAMD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCpE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { basename } from 'node:path';
|
|
3
|
+
import { parseDocument } from 'yaml';
|
|
4
|
+
import { ZodError } from 'zod';
|
|
5
|
+
import { uiHintsSchema } from './types/ui-hints.js';
|
|
6
|
+
export class KozouUIHintsError extends Error {
|
|
7
|
+
filePath;
|
|
8
|
+
issues;
|
|
9
|
+
constructor(message, filePath, issues) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'KozouUIHintsError';
|
|
12
|
+
this.filePath = filePath;
|
|
13
|
+
this.issues = issues;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// Codex N2: by default the error message only includes the file basename.
|
|
17
|
+
// The absolute path is kept on KozouUIHintsError.filePath; callers can decide
|
|
18
|
+
// whether to surface it in debug logs. This prevents user-environment paths
|
|
19
|
+
// from leaking through CLI / MCP error responses.
|
|
20
|
+
export async function loadUIHints(filePath) {
|
|
21
|
+
const content = await readFile(filePath, 'utf8');
|
|
22
|
+
const fileLabel = basename(filePath);
|
|
23
|
+
const doc = parseDocument(content, { prettyErrors: true });
|
|
24
|
+
if (doc.errors.length > 0) {
|
|
25
|
+
const issues = doc.errors.map((e) => ({
|
|
26
|
+
path: '<yaml>',
|
|
27
|
+
message: e.message,
|
|
28
|
+
line: e.linePos?.[0]?.line,
|
|
29
|
+
}));
|
|
30
|
+
throw new KozouUIHintsError(`YAML parse error (${fileLabel}): ${doc.errors.length} issue(s)`, filePath, issues);
|
|
31
|
+
}
|
|
32
|
+
const json = doc.toJS();
|
|
33
|
+
if (json === null || json === undefined) {
|
|
34
|
+
return uiHintsSchema.parse({});
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
return uiHintsSchema.parse(json);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
if (err instanceof ZodError) {
|
|
41
|
+
const issues = err.issues.map((issue) => ({
|
|
42
|
+
path: issue.path.join('.') || '<root>',
|
|
43
|
+
message: issue.message,
|
|
44
|
+
}));
|
|
45
|
+
throw new KozouUIHintsError(`UIHints validation error (${fileLabel}): ${issues.length} issue(s)`, filePath, issues);
|
|
46
|
+
}
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=loadUIHints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadUIHints.js","sourceRoot":"","sources":["../src/loadUIHints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAElE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,QAAQ,CAAS;IACjB,MAAM,CAAqD;IACpE,YACE,OAAe,EACf,QAAgB,EAChB,MAA0D;QAE1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;SAC3B,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,SAAS,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,WAAW,EAChE,QAAQ,EACR,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ;gBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,iBAAiB,CACzB,6BAA6B,SAAS,MAAM,MAAM,CAAC,MAAM,WAAW,EACpE,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WidgetType } from './types/context.js';
|
|
2
|
+
export type ParsedComment = {
|
|
3
|
+
body: string;
|
|
4
|
+
ai: string[];
|
|
5
|
+
widget: WidgetType | null;
|
|
6
|
+
policy: string[];
|
|
7
|
+
};
|
|
8
|
+
export declare function parseCommentTags(comment: string | null): ParsedComment;
|
|
9
|
+
//# sourceMappingURL=parseCommentTags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCommentTags.d.ts","sourceRoot":"","sources":["../src/parseCommentTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAoBrD,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;CAClB,CAAC;AAMF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CA+CtE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const KNOWN_WIDGETS = new Set([
|
|
2
|
+
'text',
|
|
3
|
+
'textarea',
|
|
4
|
+
'number',
|
|
5
|
+
'boolean',
|
|
6
|
+
'date',
|
|
7
|
+
'datetime',
|
|
8
|
+
'enum-select',
|
|
9
|
+
'relation-select',
|
|
10
|
+
'json',
|
|
11
|
+
'image-url',
|
|
12
|
+
'uuid',
|
|
13
|
+
'currency',
|
|
14
|
+
]);
|
|
15
|
+
const KNOWN_TAGS = new Set(['ai', 'widget', 'policy']);
|
|
16
|
+
const TAG_RE = /^\s*@([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.*)$/;
|
|
17
|
+
function isWidgetType(value) {
|
|
18
|
+
return KNOWN_WIDGETS.has(value);
|
|
19
|
+
}
|
|
20
|
+
export function parseCommentTags(comment) {
|
|
21
|
+
const result = { body: '', ai: [], widget: null, policy: [] };
|
|
22
|
+
if (comment === null || comment === '')
|
|
23
|
+
return result;
|
|
24
|
+
const lines = comment.split('\n');
|
|
25
|
+
const bodyLines = [];
|
|
26
|
+
for (const line of lines) {
|
|
27
|
+
const match = TAG_RE.exec(line);
|
|
28
|
+
if (!match) {
|
|
29
|
+
bodyLines.push(line);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const tag = match[1].toLowerCase();
|
|
33
|
+
const value = match[2].trim();
|
|
34
|
+
if (tag === 'ai') {
|
|
35
|
+
result.ai.push(value);
|
|
36
|
+
bodyLines.push(line);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (tag === 'widget') {
|
|
40
|
+
if (isWidgetType(value)) {
|
|
41
|
+
result.widget = value;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.warn(`[@kozou/core] parseCommentTags: invalid @widget value "${value}" (skip)`);
|
|
45
|
+
result.widget = null;
|
|
46
|
+
}
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (tag === 'policy') {
|
|
50
|
+
result.policy.push(value);
|
|
51
|
+
bodyLines.push(line);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (!KNOWN_TAGS.has(tag)) {
|
|
55
|
+
console.warn(`[@kozou/core] parseCommentTags: unknown tag "@${tag}" (forward compat: kept in body)`);
|
|
56
|
+
bodyLines.push(line);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
result.body = bodyLines.join('\n').replace(/\s+$/, '');
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=parseCommentTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCommentTags.js","sourceRoot":"","sources":["../src/parseCommentTags.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAA4B,IAAI,GAAG,CAAa;IACjE,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,MAAM;IACN,WAAW;IACX,MAAM;IACN,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,GAAG,2CAA2C,CAAC;AAS3D,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,aAAa,CAAC,GAAG,CAAC,KAAmB,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7E,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAE/B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CACV,0DAA0D,KAAK,UAAU,CAC1E,CAAC;gBACF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,iDAAiD,GAAG,kCAAkC,CACvF,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface DataAdapter {
|
|
2
|
+
/** List records (pagination, search, sort) */
|
|
3
|
+
list(resource: string, params: ListParams): Promise<ListResult>;
|
|
4
|
+
/** Fetch a single record */
|
|
5
|
+
get(resource: string, id: string | number): Promise<Record<string, unknown>>;
|
|
6
|
+
/** Create a record */
|
|
7
|
+
create(resource: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
8
|
+
/** Update a record */
|
|
9
|
+
update(resource: string, id: string | number, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
10
|
+
/** Delete a record */
|
|
11
|
+
delete(resource: string, id: string | number): Promise<void>;
|
|
12
|
+
/** Lightweight search used by relation-select (returns label / search fields only) */
|
|
13
|
+
searchRelation(resource: string, params: SearchRelationParams): Promise<RelationOption[]>;
|
|
14
|
+
}
|
|
15
|
+
export type ListParams = {
|
|
16
|
+
/** Free-text search query (v0.1 is `ilike`-based) */
|
|
17
|
+
search?: string;
|
|
18
|
+
/** Per-column filters; values are forwarded verbatim */
|
|
19
|
+
filters?: Record<string, unknown>;
|
|
20
|
+
sort?: SortSpec[];
|
|
21
|
+
/** 1-based page index */
|
|
22
|
+
page?: number;
|
|
23
|
+
pageSize?: number;
|
|
24
|
+
};
|
|
25
|
+
export type SortSpec = {
|
|
26
|
+
field: string;
|
|
27
|
+
order: 'asc' | 'desc';
|
|
28
|
+
};
|
|
29
|
+
export type ListResult = {
|
|
30
|
+
rows: Record<string, unknown>[];
|
|
31
|
+
total: number;
|
|
32
|
+
page: number;
|
|
33
|
+
pageSize: number;
|
|
34
|
+
};
|
|
35
|
+
export type SearchRelationParams = {
|
|
36
|
+
query: string;
|
|
37
|
+
labelField: string;
|
|
38
|
+
searchFields: string[];
|
|
39
|
+
limit?: number;
|
|
40
|
+
};
|
|
41
|
+
export type RelationOption = {
|
|
42
|
+
id: string | number;
|
|
43
|
+
label: string;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAOA,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,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7E,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,MAAM,GAAG,MAAM,EACnB,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,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,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,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// DataAdapter interface as defined in Kozou v0.1 spec §4.4.
|
|
2
|
+
//
|
|
3
|
+
// In v0.1 the first concrete adapter ships under @kozou/core. Defining a
|
|
4
|
+
// pluggable boundary up front lets v0.2's `@kozou/api` slot in as a
|
|
5
|
+
// non-breaking change (see end of Kozou v0.1 spec §4.4). For the concrete
|
|
6
|
+
// adapter implementation names, refer to Kozou v0.1 spec §4.4.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,yEAAyE;AACzE,oEAAoE;AACpE,0EAA0E;AAC1E,+DAA+D"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { RawTable, RawView } from './raw.js';
|
|
2
|
+
/** Output of core.buildSchemaContext; input to MCP / UI. */
|
|
3
|
+
export type SchemaContext = {
|
|
4
|
+
meta: {
|
|
5
|
+
serverVersion: string;
|
|
6
|
+
builtAt: string;
|
|
7
|
+
sourceSchemas: string[];
|
|
8
|
+
};
|
|
9
|
+
tables: TableContext[];
|
|
10
|
+
views: ViewContext[];
|
|
11
|
+
enums: EnumContext[];
|
|
12
|
+
/** Domain concepts derived from views (in v0.1, every view is a concept) */
|
|
13
|
+
concepts: ConceptContext[];
|
|
14
|
+
};
|
|
15
|
+
export type TableContext = {
|
|
16
|
+
schema: string;
|
|
17
|
+
name: string;
|
|
18
|
+
/** "schema.name" */
|
|
19
|
+
qualifiedName: string;
|
|
20
|
+
/** Order: UI Hints > first line of COMMENT > name */
|
|
21
|
+
label: string;
|
|
22
|
+
/** Full COMMENT body (plain, with @ai/@widget/@policy tags stripped) */
|
|
23
|
+
description: string | null;
|
|
24
|
+
/** Lines from the COMMENT that start with `@ai:` */
|
|
25
|
+
aiDescription: string | null;
|
|
26
|
+
primaryKey: string[];
|
|
27
|
+
/** From UI Hints; otherwise a heuristic (Kozou v0.1 spec §6.5) */
|
|
28
|
+
displayField: string | null;
|
|
29
|
+
columns: ColumnContext[];
|
|
30
|
+
relations: RelationContext[];
|
|
31
|
+
/** Raw record kept for downstream consumers */
|
|
32
|
+
rawTable: RawTable;
|
|
33
|
+
};
|
|
34
|
+
export type ColumnContext = {
|
|
35
|
+
name: string;
|
|
36
|
+
dataType: string;
|
|
37
|
+
nullable: boolean;
|
|
38
|
+
defaultExpr: string | null;
|
|
39
|
+
isPrimaryKey: boolean;
|
|
40
|
+
isForeignKey: boolean;
|
|
41
|
+
label: string;
|
|
42
|
+
description: string | null;
|
|
43
|
+
aiDescription: string | null;
|
|
44
|
+
/** Order: UI Hints > @widget: tag > heuristic (Kozou v0.1 spec §6.4) */
|
|
45
|
+
widget: WidgetType;
|
|
46
|
+
/** Values extracted from CHECK constraints, or PostgreSQL ENUM members */
|
|
47
|
+
enumValues: string[] | null;
|
|
48
|
+
/** Sourced from UI Hints */
|
|
49
|
+
readonly: boolean;
|
|
50
|
+
};
|
|
51
|
+
/** Widget domain for Kozou v0.1 spec §6.4. */
|
|
52
|
+
export type WidgetType = 'text' | 'textarea' | 'number' | 'boolean' | 'date' | 'datetime' | 'enum-select' | 'relation-select' | 'json' | 'image-url' | 'uuid' | 'currency';
|
|
53
|
+
export type RelationContext = {
|
|
54
|
+
/** Column on this side of the relation (v0.1 limits this to 1) */
|
|
55
|
+
field: string;
|
|
56
|
+
references: {
|
|
57
|
+
schema: string;
|
|
58
|
+
table: string;
|
|
59
|
+
column: string;
|
|
60
|
+
};
|
|
61
|
+
/** v0.1 supports only these two */
|
|
62
|
+
cardinality: 'many-to-one' | 'one-to-one';
|
|
63
|
+
/** From the FK's COMMENT */
|
|
64
|
+
meaning: string | null;
|
|
65
|
+
};
|
|
66
|
+
export type ViewContext = {
|
|
67
|
+
schema: string;
|
|
68
|
+
name: string;
|
|
69
|
+
qualifiedName: string;
|
|
70
|
+
label: string;
|
|
71
|
+
description: string | null;
|
|
72
|
+
aiDescription: string | null;
|
|
73
|
+
/** First paragraph of the COMMENT */
|
|
74
|
+
purpose: string | null;
|
|
75
|
+
columns: ColumnContext[];
|
|
76
|
+
underlyingTables: {
|
|
77
|
+
schema: string;
|
|
78
|
+
name: string;
|
|
79
|
+
}[];
|
|
80
|
+
/** Raw record kept for downstream consumers (e.g. MCP describe_view.definition) */
|
|
81
|
+
rawView: RawView;
|
|
82
|
+
};
|
|
83
|
+
export type EnumContext = {
|
|
84
|
+
schema: string;
|
|
85
|
+
name: string;
|
|
86
|
+
values: string[];
|
|
87
|
+
description: string | null;
|
|
88
|
+
};
|
|
89
|
+
/** v0.1: ConceptContext is a thin wrapper around ViewContext. See end of Kozou v0.1 spec §4.2. */
|
|
90
|
+
export type ConceptContext = {
|
|
91
|
+
/** Matches ViewContext.name */
|
|
92
|
+
name: string;
|
|
93
|
+
label: string;
|
|
94
|
+
description: string | null;
|
|
95
|
+
/** Hard-coded "VIEW" in v0.1, with room to grow (e.g. "FUNCTION") */
|
|
96
|
+
kind: 'VIEW';
|
|
97
|
+
/** Suggested query path: targets the VIEW can be joined to */
|
|
98
|
+
joinSuggestions: {
|
|
99
|
+
table: string;
|
|
100
|
+
on: string;
|
|
101
|
+
}[];
|
|
102
|
+
/** @ai: lines from the COMMENT */
|
|
103
|
+
aiNotes: string[];
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// SchemaContext type definitions per Kozou v0.1 spec §4.2.
|
|
2
|
+
//
|
|
3
|
+
// This is the output contract of @kozou/core.buildSchemaContext and the
|
|
4
|
+
// input contract for @kozou/mcp and @kozou/svelte-ui. Per Kozou v0.1 spec
|
|
5
|
+
// §0, the code is the source of truth.
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,wEAAwE;AACxE,0EAA0E;AAC1E,uCAAuC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/** introspect output: the raw structural information pulled from PostgreSQL. */
|
|
2
|
+
export type RawIntrospection = {
|
|
3
|
+
/** PostgreSQL server version, e.g. "16.2" */
|
|
4
|
+
serverVersion: string;
|
|
5
|
+
/** When introspect ran (ISO 8601) */
|
|
6
|
+
introspectedAt: string;
|
|
7
|
+
/** Target schemas (default: ["public"]) */
|
|
8
|
+
schemas: string[];
|
|
9
|
+
tables: RawTable[];
|
|
10
|
+
views: RawView[];
|
|
11
|
+
enums: RawEnum[];
|
|
12
|
+
/** v0.1 collects these but uses them sparingly in UI/MCP */
|
|
13
|
+
functions: RawFunction[];
|
|
14
|
+
};
|
|
15
|
+
export type RawTable = {
|
|
16
|
+
schema: string;
|
|
17
|
+
name: string;
|
|
18
|
+
comment: string | null;
|
|
19
|
+
columns: RawColumn[];
|
|
20
|
+
/** Array of column names */
|
|
21
|
+
primaryKey: string[];
|
|
22
|
+
foreignKeys: RawForeignKey[];
|
|
23
|
+
checks: RawCheck[];
|
|
24
|
+
indexes: RawIndex[];
|
|
25
|
+
};
|
|
26
|
+
export type RawColumn = {
|
|
27
|
+
name: string;
|
|
28
|
+
/** e.g. "uuid", "text", "numeric(12,2)", "timestamptz" */
|
|
29
|
+
dataType: string;
|
|
30
|
+
/** information_schema.columns.udt_name */
|
|
31
|
+
udtName: string;
|
|
32
|
+
nullable: boolean;
|
|
33
|
+
defaultExpr: string | null;
|
|
34
|
+
comment: string | null;
|
|
35
|
+
/** Ordinal position (1-based, from information_schema.columns) */
|
|
36
|
+
position: number;
|
|
37
|
+
};
|
|
38
|
+
export type RawForeignKey = {
|
|
39
|
+
name: string;
|
|
40
|
+
/** Column name(s) on the referencing (this) side */
|
|
41
|
+
columns: string[];
|
|
42
|
+
referencedSchema: string;
|
|
43
|
+
referencedTable: string;
|
|
44
|
+
referencedColumns: string[];
|
|
45
|
+
onDelete: FkAction;
|
|
46
|
+
onUpdate: FkAction;
|
|
47
|
+
comment: string | null;
|
|
48
|
+
};
|
|
49
|
+
export type FkAction = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT';
|
|
50
|
+
export type RawCheck = {
|
|
51
|
+
name: string;
|
|
52
|
+
/** Raw CHECK expression, e.g. "status IN ('for_sale', 'reserved', 'sold')" */
|
|
53
|
+
expression: string;
|
|
54
|
+
};
|
|
55
|
+
export type RawIndex = {
|
|
56
|
+
name: string;
|
|
57
|
+
columns: string[];
|
|
58
|
+
unique: boolean;
|
|
59
|
+
};
|
|
60
|
+
export type RawView = {
|
|
61
|
+
schema: string;
|
|
62
|
+
name: string;
|
|
63
|
+
comment: string | null;
|
|
64
|
+
/** Inferred columns of the VIEW (with their own COMMENTs) */
|
|
65
|
+
columns: RawColumn[];
|
|
66
|
+
/** Underlying tables resolved by parsing the view definition where possible */
|
|
67
|
+
underlyingTables: {
|
|
68
|
+
schema: string;
|
|
69
|
+
name: string;
|
|
70
|
+
}[];
|
|
71
|
+
/** pg_views.definition */
|
|
72
|
+
definition: string;
|
|
73
|
+
};
|
|
74
|
+
export type RawEnum = {
|
|
75
|
+
schema: string;
|
|
76
|
+
name: string;
|
|
77
|
+
values: string[];
|
|
78
|
+
};
|
|
79
|
+
export type RawFunction = {
|
|
80
|
+
schema: string;
|
|
81
|
+
name: string;
|
|
82
|
+
returnType: string;
|
|
83
|
+
arguments: {
|
|
84
|
+
name: string;
|
|
85
|
+
type: string;
|
|
86
|
+
}[];
|
|
87
|
+
comment: string | null;
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=raw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/types/raw.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// RawIntrospection type definitions per Kozou v0.1 spec §4.1. This is the
|
|
2
|
+
// output contract of @kozou/introspect.
|
|
3
|
+
//
|
|
4
|
+
// Per Kozou v0.1 spec §0, this file is the source of truth on the code
|
|
5
|
+
// side; when type changes diverge from the spec, the same PR must update
|
|
6
|
+
// Kozou v0.1 spec.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=raw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw.js","sourceRoot":"","sources":["../../src/types/raw.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wCAAwC;AACxC,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,mBAAmB"}
|