@kozou/core 0.0.1 → 0.1.1

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.
Files changed (47) hide show
  1. package/LICENSE +202 -0
  2. package/dist/buildSchemaContext.d.ts +19 -0
  3. package/dist/buildSchemaContext.d.ts.map +1 -0
  4. package/dist/buildSchemaContext.js +290 -0
  5. package/dist/buildSchemaContext.js.map +1 -0
  6. package/dist/checkEnum.d.ts +3 -0
  7. package/dist/checkEnum.d.ts.map +1 -0
  8. package/dist/checkEnum.js +35 -0
  9. package/dist/checkEnum.js.map +1 -0
  10. package/dist/displayField.d.ts +7 -0
  11. package/dist/displayField.d.ts.map +1 -0
  12. package/dist/displayField.js +10 -0
  13. package/dist/displayField.js.map +1 -0
  14. package/dist/index.d.ts +11 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +11 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/loadUIHints.d.ts +16 -0
  19. package/dist/loadUIHints.d.ts.map +1 -0
  20. package/dist/loadUIHints.js +50 -0
  21. package/dist/loadUIHints.js.map +1 -0
  22. package/dist/parseCommentTags.d.ts +14 -0
  23. package/dist/parseCommentTags.d.ts.map +1 -0
  24. package/dist/parseCommentTags.js +142 -0
  25. package/dist/parseCommentTags.js.map +1 -0
  26. package/dist/types/adapter.d.ts +45 -0
  27. package/dist/types/adapter.d.ts.map +1 -0
  28. package/dist/types/adapter.js +8 -0
  29. package/dist/types/adapter.js.map +1 -0
  30. package/dist/types/context.d.ts +112 -0
  31. package/dist/types/context.d.ts.map +1 -0
  32. package/dist/types/context.js +7 -0
  33. package/dist/types/context.js.map +1 -0
  34. package/dist/types/raw.d.ts +95 -0
  35. package/dist/types/raw.d.ts.map +1 -0
  36. package/dist/types/raw.js +8 -0
  37. package/dist/types/raw.js.map +1 -0
  38. package/dist/types/ui-hints.d.ts +139 -0
  39. package/dist/types/ui-hints.d.ts.map +1 -0
  40. package/dist/types/ui-hints.js +50 -0
  41. package/dist/types/ui-hints.js.map +1 -0
  42. package/dist/widget.d.ts +11 -0
  43. package/dist/widget.d.ts.map +1 -0
  44. package/dist/widget.js +31 -0
  45. package/dist/widget.js.map +1 -0
  46. package/package.json +42 -4
  47. package/README.md +0 -3
@@ -0,0 +1,139 @@
1
+ import { z } from 'zod';
2
+ declare const relationHintsSchema: z.ZodObject<{
3
+ labelField: z.ZodOptional<z.ZodString>;
4
+ searchFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
5
+ }, z.core.$strip>;
6
+ declare const columnHintsSchema: z.ZodObject<{
7
+ label: z.ZodOptional<z.ZodString>;
8
+ widget: z.ZodOptional<z.ZodEnum<{
9
+ number: "number";
10
+ boolean: "boolean";
11
+ text: "text";
12
+ textarea: "textarea";
13
+ date: "date";
14
+ datetime: "datetime";
15
+ "enum-select": "enum-select";
16
+ "relation-select": "relation-select";
17
+ json: "json";
18
+ "image-url": "image-url";
19
+ uuid: "uuid";
20
+ currency: "currency";
21
+ }>>;
22
+ readonly: z.ZodOptional<z.ZodBoolean>;
23
+ relation: z.ZodOptional<z.ZodObject<{
24
+ labelField: z.ZodOptional<z.ZodString>;
25
+ searchFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
26
+ }, z.core.$strip>>;
27
+ }, z.core.$strip>;
28
+ declare const tableHintsSchema: z.ZodObject<{
29
+ label: z.ZodOptional<z.ZodString>;
30
+ displayField: z.ZodOptional<z.ZodString>;
31
+ columns: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
32
+ label: z.ZodOptional<z.ZodString>;
33
+ widget: z.ZodOptional<z.ZodEnum<{
34
+ number: "number";
35
+ boolean: "boolean";
36
+ text: "text";
37
+ textarea: "textarea";
38
+ date: "date";
39
+ datetime: "datetime";
40
+ "enum-select": "enum-select";
41
+ "relation-select": "relation-select";
42
+ json: "json";
43
+ "image-url": "image-url";
44
+ uuid: "uuid";
45
+ currency: "currency";
46
+ }>>;
47
+ readonly: z.ZodOptional<z.ZodBoolean>;
48
+ relation: z.ZodOptional<z.ZodObject<{
49
+ labelField: z.ZodOptional<z.ZodString>;
50
+ searchFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ }, z.core.$strip>>;
52
+ }, z.core.$strip>>>;
53
+ }, z.core.$strip>;
54
+ declare const viewHintsSchema: z.ZodObject<{
55
+ label: z.ZodOptional<z.ZodString>;
56
+ columns: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
57
+ label: z.ZodOptional<z.ZodString>;
58
+ widget: z.ZodOptional<z.ZodEnum<{
59
+ number: "number";
60
+ boolean: "boolean";
61
+ text: "text";
62
+ textarea: "textarea";
63
+ date: "date";
64
+ datetime: "datetime";
65
+ "enum-select": "enum-select";
66
+ "relation-select": "relation-select";
67
+ json: "json";
68
+ "image-url": "image-url";
69
+ uuid: "uuid";
70
+ currency: "currency";
71
+ }>>;
72
+ readonly: z.ZodOptional<z.ZodBoolean>;
73
+ relation: z.ZodOptional<z.ZodObject<{
74
+ labelField: z.ZodOptional<z.ZodString>;
75
+ searchFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
76
+ }, z.core.$strip>>;
77
+ }, z.core.$strip>>>;
78
+ }, z.core.$strip>;
79
+ /** Top-level zod schema for UIHints YAML. Used by loadUIHints. */
80
+ export declare const uiHintsSchema: z.ZodObject<{
81
+ tables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
82
+ label: z.ZodOptional<z.ZodString>;
83
+ displayField: z.ZodOptional<z.ZodString>;
84
+ columns: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
85
+ label: z.ZodOptional<z.ZodString>;
86
+ widget: z.ZodOptional<z.ZodEnum<{
87
+ number: "number";
88
+ boolean: "boolean";
89
+ text: "text";
90
+ textarea: "textarea";
91
+ date: "date";
92
+ datetime: "datetime";
93
+ "enum-select": "enum-select";
94
+ "relation-select": "relation-select";
95
+ json: "json";
96
+ "image-url": "image-url";
97
+ uuid: "uuid";
98
+ currency: "currency";
99
+ }>>;
100
+ readonly: z.ZodOptional<z.ZodBoolean>;
101
+ relation: z.ZodOptional<z.ZodObject<{
102
+ labelField: z.ZodOptional<z.ZodString>;
103
+ searchFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
104
+ }, z.core.$strip>>;
105
+ }, z.core.$strip>>>;
106
+ }, z.core.$strip>>>;
107
+ views: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
108
+ label: z.ZodOptional<z.ZodString>;
109
+ columns: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
110
+ label: z.ZodOptional<z.ZodString>;
111
+ widget: z.ZodOptional<z.ZodEnum<{
112
+ number: "number";
113
+ boolean: "boolean";
114
+ text: "text";
115
+ textarea: "textarea";
116
+ date: "date";
117
+ datetime: "datetime";
118
+ "enum-select": "enum-select";
119
+ "relation-select": "relation-select";
120
+ json: "json";
121
+ "image-url": "image-url";
122
+ uuid: "uuid";
123
+ currency: "currency";
124
+ }>>;
125
+ readonly: z.ZodOptional<z.ZodBoolean>;
126
+ relation: z.ZodOptional<z.ZodObject<{
127
+ labelField: z.ZodOptional<z.ZodString>;
128
+ searchFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
129
+ }, z.core.$strip>>;
130
+ }, z.core.$strip>>>;
131
+ }, z.core.$strip>>>;
132
+ }, z.core.$strip>;
133
+ export type UIHints = z.infer<typeof uiHintsSchema>;
134
+ export type TableHints = z.infer<typeof tableHintsSchema>;
135
+ export type ColumnHints = z.infer<typeof columnHintsSchema>;
136
+ export type ViewHints = z.infer<typeof viewHintsSchema>;
137
+ export type RelationHints = z.infer<typeof relationHintsSchema>;
138
+ export {};
139
+ //# sourceMappingURL=ui-hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-hints.d.ts","sourceRoot":"","sources":["../../src/types/ui-hints.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,QAAA,MAAM,mBAAmB;;;iBAGvB,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAMrB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBAIpB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;iBAGnB,CAAC;AAEH,kEAAkE;AAClE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGxB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ // UIHints type definitions + zod schema per Kozou v0.1 spec §4.3.
2
+ //
3
+ // Kozou v0.1 spec §16.1 leaves the final YAML grammar intentionally open
4
+ // ("finalised during implementation"). In v0.1 we treat the TypeScript
5
+ // shape in spec §4.3 as the minimal source of truth and validate the
6
+ // parsed YAML with zod from loadUIHints.
7
+ //
8
+ // Extension surface: when v0.2 adds relations or validation rules, extend
9
+ // this schema and update Kozou v0.1 spec §4.3 in the same PR (§0 rule).
10
+ import { z } from 'zod';
11
+ const widgetTypeSchema = z.enum([
12
+ 'text',
13
+ 'textarea',
14
+ 'number',
15
+ 'boolean',
16
+ 'date',
17
+ 'datetime',
18
+ 'enum-select',
19
+ 'relation-select',
20
+ 'json',
21
+ 'image-url',
22
+ 'uuid',
23
+ 'currency',
24
+ ]);
25
+ const relationHintsSchema = z.object({
26
+ labelField: z.string().min(1).optional(),
27
+ searchFields: z.array(z.string().min(1)).optional(),
28
+ });
29
+ const columnHintsSchema = z.object({
30
+ label: z.string().min(1).optional(),
31
+ widget: widgetTypeSchema.optional(),
32
+ readonly: z.boolean().optional(),
33
+ /** Used for relation rendering; only meaningful when widget = relation-select */
34
+ relation: relationHintsSchema.optional(),
35
+ });
36
+ const tableHintsSchema = z.object({
37
+ label: z.string().min(1).optional(),
38
+ displayField: z.string().min(1).optional(),
39
+ columns: z.record(z.string(), columnHintsSchema).optional(),
40
+ });
41
+ const viewHintsSchema = z.object({
42
+ label: z.string().min(1).optional(),
43
+ columns: z.record(z.string(), columnHintsSchema).optional(),
44
+ });
45
+ /** Top-level zod schema for UIHints YAML. Used by loadUIHints. */
46
+ export const uiHintsSchema = z.object({
47
+ tables: z.record(z.string(), tableHintsSchema).optional(),
48
+ views: z.record(z.string(), viewHintsSchema).optional(),
49
+ });
50
+ //# sourceMappingURL=ui-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-hints.js","sourceRoot":"","sources":["../../src/types/ui-hints.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,qEAAqE;AACrE,yCAAyC;AACzC,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AAExE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9B,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,MAAM;IACN,WAAW;IACX,MAAM;IACN,UAAU;CACX,CAAiC,CAAC;AAEnC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,iFAAiF;IACjF,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAC5D,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAC5D,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IACzD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { RawColumn } from './types/raw.js';
2
+ import type { WidgetType } from './types/context.js';
3
+ export type InferWidgetInput = {
4
+ column: RawColumn;
5
+ isForeignKey: boolean;
6
+ enumValues: string[] | null;
7
+ /** parseCommentTags(column.comment).body */
8
+ commentBody: string;
9
+ };
10
+ export declare function inferWidget(input: InferWidgetInput): WidgetType;
11
+ //# sourceMappingURL=widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AASrD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAe/D"}
package/dist/widget.js ADDED
@@ -0,0 +1,31 @@
1
+ const NUMERIC_UDT = new Set(['int2', 'int4', 'int8', 'numeric', 'float4', 'float8']);
2
+ const DATETIME_UDT = new Set(['timestamp', 'timestamptz', 'time', 'timetz']);
3
+ const JSON_UDT = new Set(['json', 'jsonb']);
4
+ const URL_HINT_RE = /(?:^|_)url\b|image/i;
5
+ const TEXTAREA_HINT_RE = /html|markdown|body|content/i;
6
+ export function inferWidget(input) {
7
+ const { column, isForeignKey, enumValues, commentBody } = input;
8
+ const udt = column.udtName;
9
+ if (isForeignKey)
10
+ return 'relation-select';
11
+ if (enumValues !== null && enumValues.length > 0)
12
+ return 'enum-select';
13
+ if (udt === 'uuid')
14
+ return 'uuid';
15
+ if (udt === 'bool')
16
+ return 'boolean';
17
+ if (NUMERIC_UDT.has(udt))
18
+ return 'number';
19
+ if (udt === 'date')
20
+ return 'date';
21
+ if (DATETIME_UDT.has(udt))
22
+ return 'datetime';
23
+ if (JSON_UDT.has(udt))
24
+ return 'json';
25
+ if (udt === 'text' && URL_HINT_RE.test(column.name))
26
+ return 'image-url';
27
+ if (udt === 'text' && TEXTAREA_HINT_RE.test(commentBody))
28
+ return 'textarea';
29
+ return 'text';
30
+ }
31
+ //# sourceMappingURL=widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5C,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAC1C,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AAUvD,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;IAE3B,IAAI,YAAY;QAAE,OAAO,iBAAiB,CAAC;IAC3C,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IACvE,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAC7C,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,GAAG,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IACxE,IAAI,GAAG,KAAK,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,45 @@
1
1
  {
2
2
  "name": "@kozou/core",
3
- "version": "0.0.1",
4
- "description": "Placeholder; v0.1.0 release lands via CI shortly.",
3
+ "version": "0.1.1",
4
+ "description": "Kozou core: Schema Context, type definitions, UI Hints zod schema, DataAdapter interface.",
5
5
  "license": "Apache-2.0",
6
- "publishConfig": { "access": "public" }
7
- }
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/kozou-dev/kozou.git",
9
+ "directory": "packages/core"
10
+ },
11
+ "homepage": "https://kozou.org",
12
+ "bugs": {
13
+ "url": "https://github.com/kozou-dev/kozou/issues"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/index.js",
21
+ "types": "./dist/index.d.ts"
22
+ },
23
+ "./package.json": "./package.json"
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "provenance": true
31
+ },
32
+ "dependencies": {
33
+ "yaml": "^2.6.0",
34
+ "zod": "^4.4.3"
35
+ },
36
+ "devDependencies": {
37
+ "@types/pg": "^8.11.0",
38
+ "pg": "^8.13.0"
39
+ },
40
+ "scripts": {
41
+ "typecheck": "tsc --noEmit",
42
+ "build": "tsc",
43
+ "test": "vitest run --coverage"
44
+ }
45
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # @kozou/core
2
-
3
- Placeholder publish. The real v0.1.0 release lands via CI shortly. See https://github.com/kozou-dev/kozou for the source.