aiex-cli 0.0.1-beta.27 → 0.0.1-beta.28

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.
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from "node:module";
2
+ import fs from "node:fs/promises";
2
3
  import path from "node:path";
3
4
  import process from "node:process";
4
5
  import { fileURLToPath } from "node:url";
5
- import fs from "node:fs/promises";
6
6
  import Database from "better-sqlite3";
7
7
  import * as esbuild from "esbuild";
8
8
 
@@ -1,9 +1,9 @@
1
- import path from "node:path";
2
- import process from "node:process";
3
- import { z } from "zod";
4
1
  import fs from "node:fs/promises";
5
2
  import os from "node:os";
3
+ import path from "node:path";
4
+ import process from "node:process";
6
5
  import Conf from "conf";
6
+ import { z } from "zod";
7
7
 
8
8
  //#region src/core/doctor.ts
9
9
  function buildDoctorDiagnostics(input) {
@@ -61,6 +61,234 @@ function doctorDiagnosticsTableRows(d) {
61
61
  return rows;
62
62
  }
63
63
 
64
+ //#endregion
65
+ //#region package.json
66
+ var name = "aiex-cli";
67
+ var version = "0.0.1-beta.28";
68
+ var description = "JSON Schema → SQLite with AI-powered data extraction";
69
+ var package_default = {
70
+ name,
71
+ type: "module",
72
+ version,
73
+ description,
74
+ author: "OSpoon <zxin088@gmail.com>",
75
+ license: "MIT",
76
+ homepage: "https://github.com/OSpoon/aiex-cli#readme",
77
+ repository: {
78
+ "type": "git",
79
+ "url": "git+https://github.com/OSpoon/aiex-cli.git"
80
+ },
81
+ bugs: "https://github.com/OSpoon/aiex-cli/issues",
82
+ keywords: [
83
+ "json-schema",
84
+ "sqlite",
85
+ "drizzle",
86
+ "orm",
87
+ "ai-extraction",
88
+ "cli",
89
+ "database-migration",
90
+ "schema-editor",
91
+ "code-generation",
92
+ "structured-output"
93
+ ],
94
+ sideEffects: false,
95
+ exports: {
96
+ ".": "./dist/index.mjs",
97
+ "./cli": "./dist/cli.mjs",
98
+ "./core/schema-sqlite/migrate-helper": "./dist/core/schema-sqlite/migrate-helper.mjs",
99
+ "./package.json": "./package.json"
100
+ },
101
+ main: "./dist/index.mjs",
102
+ module: "./dist/index.mjs",
103
+ types: "./dist/index.d.mts",
104
+ bin: { "aiex": "./bin/cli.mjs" },
105
+ files: [
106
+ "bin",
107
+ "dist",
108
+ "src/core/schema-sqlite/migrate-helper.ts",
109
+ "src/core/schema-sqlite/migration-name.ts"
110
+ ],
111
+ scripts: {
112
+ "build": "tsdown && pnpm --filter aiex-web build",
113
+ "dev": "tsdown --watch",
114
+ "start": "tsx src/index.ts",
115
+ "test": "vitest",
116
+ "coverage": "vitest --coverage",
117
+ "typecheck": "tsc",
118
+ "lint": "eslint .",
119
+ "prepack": "cp ../../README.md .",
120
+ "postpack": "rm -f README.md",
121
+ "prepublishOnly": "pnpm run build"
122
+ },
123
+ dependencies: {
124
+ "@ai-sdk/openai-compatible": "catalog:",
125
+ "@clack/prompts": "catalog:",
126
+ "@hono/node-server": "catalog:",
127
+ "@langfuse/otel": "catalog:",
128
+ "@opentelemetry/sdk-trace-node": "catalog:",
129
+ "ai": "catalog:",
130
+ "better-sqlite3": "catalog:",
131
+ "citty": "catalog:",
132
+ "cli-table3": "catalog:",
133
+ "conf": "catalog:",
134
+ "consola": "catalog:",
135
+ "date-fns": "catalog:",
136
+ "drizzle-kit": "catalog:cli",
137
+ "drizzle-orm": "catalog:",
138
+ "es-toolkit": "catalog:",
139
+ "esbuild": "catalog:",
140
+ "hono": "catalog:",
141
+ "picocolors": "catalog:",
142
+ "picomatch": "catalog:",
143
+ "tsx": "catalog:cli",
144
+ "unpdf": "catalog:",
145
+ "update-notifier": "catalog:",
146
+ "zod": "catalog:"
147
+ },
148
+ devDependencies: {
149
+ "@antfu/eslint-config": "catalog:cli",
150
+ "@antfu/ni": "catalog:cli",
151
+ "@types/better-sqlite3": "catalog:types",
152
+ "@types/node": "catalog:types",
153
+ "@types/picomatch": "catalog:",
154
+ "@types/update-notifier": "catalog:",
155
+ "@vitest/coverage-v8": "catalog:testing",
156
+ "eslint": "catalog:cli",
157
+ "publint": "catalog:cli",
158
+ "tsdown": "catalog:cli",
159
+ "tsnapi": "catalog:testing",
160
+ "typescript": "catalog:cli",
161
+ "vitest": "catalog:testing"
162
+ }
163
+ };
164
+
165
+ //#endregion
166
+ //#region src/config.ts
167
+ function createConfig() {
168
+ return new Conf({
169
+ cwd: process.env.CLI_CONFIG_DIR,
170
+ projectName: process.env.CLI_CONFIG_PROJECT_NAME || name
171
+ });
172
+ }
173
+ function seedConfig(config = createConfig()) {
174
+ if (!config.has("name")) config.set("name", name);
175
+ if (!config.has("version")) config.set("version", version);
176
+ }
177
+
178
+ //#endregion
179
+ //#region src/core/ai-extraction/schemas.ts
180
+ const ModelCapabilitiesSchema = z.object({
181
+ vision: z.boolean(),
182
+ structuredOutput: z.boolean(),
183
+ maxTokens: z.number().int().positive().optional(),
184
+ maxOutputTokens: z.number().int().positive().optional()
185
+ });
186
+ const AIModelConfigSchema = z.object({
187
+ name: z.string().min(1),
188
+ capabilities: ModelCapabilitiesSchema
189
+ });
190
+ const AIProviderConfigSchema = z.object({
191
+ baseURL: z.string().min(1),
192
+ apiKey: z.string(),
193
+ models: z.array(AIModelConfigSchema).min(1),
194
+ timeout: z.number().int().positive().default(300).optional()
195
+ });
196
+ const PromptConfigSchema = z.object({
197
+ systemTemplate: z.string().min(1),
198
+ userTemplate: z.string().min(1)
199
+ });
200
+ const ExtractionConfigSchema = z.object({ outputDir: z.string().min(1) });
201
+ const LangfuseConfigSchema = z.object({
202
+ publicKey: z.string(),
203
+ secretKey: z.string(),
204
+ host: z.string().optional()
205
+ });
206
+ const AIConfigSchema = z.object({
207
+ provider: AIProviderConfigSchema,
208
+ prompt: PromptConfigSchema,
209
+ extraction: ExtractionConfigSchema,
210
+ langfuse: LangfuseConfigSchema.optional()
211
+ });
212
+
213
+ //#endregion
214
+ //#region src/core/ai-extraction/types.ts
215
+ const PLACEHOLDER_SCHEMA = "{schema}";
216
+ const PLACEHOLDER_TEXT = "{text}";
217
+ const DEFAULT_MODELS = [{
218
+ name: "qwen-plus",
219
+ capabilities: {
220
+ vision: false,
221
+ structuredOutput: true
222
+ }
223
+ }, {
224
+ name: "qwen-vl-plus",
225
+ capabilities: {
226
+ vision: true,
227
+ structuredOutput: true
228
+ }
229
+ }];
230
+ const DEFAULT_PROVIDER_CONFIG = {
231
+ baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
232
+ apiKey: "",
233
+ models: [...DEFAULT_MODELS],
234
+ timeout: 300
235
+ };
236
+ const DEFAULT_PROMPT_CONFIG = {
237
+ systemTemplate: `You are a professional data extraction assistant. Your task is to extract structured data from text and return a JSON object based on the data structure definition provided below.
238
+
239
+ {schema}
240
+
241
+ Extraction requirements:
242
+ 1. Extract strictly according to the field names and types defined in the structure
243
+ 2. If the text lacks information for a field, set that field to null
244
+ 3. Do not add fields that do not exist in the structure definition
245
+ 4. Maintain data accuracy and completeness`,
246
+ userTemplate: `Please extract data from the following text:
247
+ {text}`
248
+ };
249
+ const DEFAULT_EXTRACTION_CONFIG = { outputDir: ".aiex/extracted" };
250
+ const DEFAULT_AI_CONFIG = {
251
+ provider: DEFAULT_PROVIDER_CONFIG,
252
+ prompt: DEFAULT_PROMPT_CONFIG,
253
+ extraction: DEFAULT_EXTRACTION_CONFIG
254
+ };
255
+
256
+ //#endregion
257
+ //#region src/core/ai-extraction/config.ts
258
+ const CONFIG_FILE_NAME = "ai-config.json";
259
+ const GITIGNORE_FILE = ".gitignore";
260
+ async function readAIConfig(aiexDir) {
261
+ const configPath = path.join(aiexDir, CONFIG_FILE_NAME);
262
+ try {
263
+ const content = await fs.readFile(configPath, "utf-8");
264
+ const parsed = JSON.parse(content);
265
+ return AIConfigSchema.parse(parsed);
266
+ } catch {
267
+ return null;
268
+ }
269
+ }
270
+ async function writeAIConfig(aiexDir, config) {
271
+ const configPath = path.join(aiexDir, CONFIG_FILE_NAME);
272
+ await fs.mkdir(aiexDir, { recursive: true });
273
+ await fs.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`);
274
+ await addToGitignore(aiexDir, CONFIG_FILE_NAME);
275
+ }
276
+ function getDefaultAIConfig() {
277
+ return { ...DEFAULT_AI_CONFIG };
278
+ }
279
+ async function addToGitignore(aiexDir, fileName) {
280
+ const projectRoot = path.dirname(aiexDir);
281
+ const gitignorePath = path.join(projectRoot, GITIGNORE_FILE);
282
+ try {
283
+ const content = await fs.readFile(gitignorePath, "utf-8");
284
+ if (content.split("\n").some((line) => line.trim() === fileName || line.includes(".aiex/"))) return;
285
+ const newContent = content.endsWith("\n") ? `${content}${fileName}\n` : `${content}\n${fileName}\n`;
286
+ await fs.writeFile(gitignorePath, newContent);
287
+ } catch {
288
+ await fs.writeFile(gitignorePath, `${fileName}\n`);
289
+ }
290
+ }
291
+
64
292
  //#endregion
65
293
  //#region src/core/schema-sqlite/generator.ts
66
294
  function generateColumnDefinition(column) {
@@ -410,233 +638,7 @@ function generateDrizzleConfig() {
410
638
  }
411
639
 
412
640
  //#endregion
413
- //#region package.json
414
- var name = "aiex-cli";
415
- var version = "0.0.1-beta.27";
416
- var description = "JSON Schema → SQLite with AI-powered data extraction";
417
- var package_default = {
418
- name,
419
- type: "module",
420
- version,
421
- description,
422
- author: "OSpoon <zxin088@gmail.com>",
423
- license: "MIT",
424
- homepage: "https://github.com/OSpoon/aiex-cli#readme",
425
- repository: {
426
- "type": "git",
427
- "url": "git+https://github.com/OSpoon/aiex-cli.git"
428
- },
429
- bugs: "https://github.com/OSpoon/aiex-cli/issues",
430
- keywords: [
431
- "json-schema",
432
- "sqlite",
433
- "drizzle",
434
- "orm",
435
- "ai-extraction",
436
- "cli",
437
- "database-migration",
438
- "schema-editor",
439
- "code-generation",
440
- "structured-output"
441
- ],
442
- sideEffects: false,
443
- exports: {
444
- ".": "./dist/index.mjs",
445
- "./cli": "./dist/cli.mjs",
446
- "./core/schema-sqlite/migrate-helper": "./dist/core/schema-sqlite/migrate-helper.mjs",
447
- "./package.json": "./package.json"
448
- },
449
- main: "./dist/index.mjs",
450
- module: "./dist/index.mjs",
451
- types: "./dist/index.d.mts",
452
- bin: { "aiex": "./bin/cli.mjs" },
453
- files: [
454
- "bin",
455
- "dist",
456
- "src/core/schema-sqlite/migrate-helper.ts",
457
- "src/core/schema-sqlite/migration-name.ts"
458
- ],
459
- scripts: {
460
- "build": "tsdown && pnpm --filter aiex-web build",
461
- "dev": "tsdown --watch",
462
- "start": "tsx src/index.ts",
463
- "test": "vitest",
464
- "coverage": "vitest --coverage",
465
- "typecheck": "tsc",
466
- "lint": "eslint .",
467
- "prepack": "cp ../../README.md .",
468
- "postpack": "rm -f README.md",
469
- "prepublishOnly": "pnpm run build"
470
- },
471
- dependencies: {
472
- "@ai-sdk/openai-compatible": "catalog:",
473
- "@clack/prompts": "catalog:",
474
- "@hono/node-server": "catalog:",
475
- "@langfuse/otel": "catalog:",
476
- "@opentelemetry/sdk-trace-node": "catalog:",
477
- "ai": "catalog:",
478
- "better-sqlite3": "catalog:",
479
- "citty": "catalog:",
480
- "cli-table3": "catalog:",
481
- "conf": "catalog:",
482
- "consola": "catalog:",
483
- "date-fns": "catalog:",
484
- "drizzle-kit": "catalog:cli",
485
- "drizzle-orm": "catalog:",
486
- "es-toolkit": "catalog:",
487
- "esbuild": "catalog:",
488
- "hono": "catalog:",
489
- "picocolors": "catalog:",
490
- "tsx": "catalog:cli",
491
- "unpdf": "catalog:",
492
- "update-notifier": "catalog:",
493
- "zod": "catalog:"
494
- },
495
- devDependencies: {
496
- "@antfu/eslint-config": "catalog:cli",
497
- "@antfu/ni": "catalog:cli",
498
- "@types/better-sqlite3": "catalog:types",
499
- "@types/node": "catalog:types",
500
- "@types/update-notifier": "catalog:",
501
- "@vitest/coverage-v8": "catalog:testing",
502
- "eslint": "catalog:cli",
503
- "publint": "catalog:cli",
504
- "tsdown": "catalog:cli",
505
- "tsnapi": "catalog:testing",
506
- "typescript": "catalog:cli",
507
- "vitest": "catalog:testing"
508
- }
509
- };
510
-
511
- //#endregion
512
- //#region src/config.ts
513
- function createConfig() {
514
- return new Conf({
515
- cwd: process.env.CLI_CONFIG_DIR,
516
- projectName: process.env.CLI_CONFIG_PROJECT_NAME || name
517
- });
518
- }
519
- function seedConfig(config = createConfig()) {
520
- if (!config.has("name")) config.set("name", name);
521
- if (!config.has("version")) config.set("version", version);
522
- }
523
-
524
- //#endregion
525
- //#region src/core/ai-extraction/schemas.ts
526
- const ModelCapabilitiesSchema = z.object({
527
- vision: z.boolean(),
528
- structuredOutput: z.boolean(),
529
- maxTokens: z.number().int().positive().optional(),
530
- maxOutputTokens: z.number().int().positive().optional()
531
- });
532
- const AIModelConfigSchema = z.object({
533
- name: z.string().min(1),
534
- capabilities: ModelCapabilitiesSchema
535
- });
536
- const AIProviderConfigSchema = z.object({
537
- baseURL: z.string().min(1),
538
- apiKey: z.string(),
539
- models: z.array(AIModelConfigSchema).min(1),
540
- timeout: z.number().int().positive().default(300).optional()
541
- });
542
- const PromptConfigSchema = z.object({
543
- systemTemplate: z.string().min(1),
544
- userTemplate: z.string().min(1)
545
- });
546
- const ExtractionConfigSchema = z.object({ outputDir: z.string().min(1) });
547
- const LangfuseConfigSchema = z.object({
548
- publicKey: z.string(),
549
- secretKey: z.string(),
550
- host: z.string().optional()
551
- });
552
- const AIConfigSchema = z.object({
553
- provider: AIProviderConfigSchema,
554
- prompt: PromptConfigSchema,
555
- extraction: ExtractionConfigSchema,
556
- langfuse: LangfuseConfigSchema.optional()
557
- });
558
-
559
- //#endregion
560
- //#region src/core/ai-extraction/types.ts
561
- const PLACEHOLDER_SCHEMA = "{schema}";
562
- const PLACEHOLDER_TEXT = "{text}";
563
- const DEFAULT_MODELS = [{
564
- name: "qwen-plus",
565
- capabilities: {
566
- vision: false,
567
- structuredOutput: true
568
- }
569
- }, {
570
- name: "qwen-vl-plus",
571
- capabilities: {
572
- vision: true,
573
- structuredOutput: true
574
- }
575
- }];
576
- const DEFAULT_PROVIDER_CONFIG = {
577
- baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
578
- apiKey: "",
579
- models: [...DEFAULT_MODELS],
580
- timeout: 300
581
- };
582
- const DEFAULT_PROMPT_CONFIG = {
583
- systemTemplate: `You are a professional data extraction assistant. Your task is to extract structured data from text and return a JSON object based on the data structure definition provided below.
584
-
585
- {schema}
586
-
587
- Extraction requirements:
588
- 1. Extract strictly according to the field names and types defined in the structure
589
- 2. If the text lacks information for a field, set that field to null
590
- 3. Do not add fields that do not exist in the structure definition
591
- 4. Maintain data accuracy and completeness`,
592
- userTemplate: `Please extract data from the following text:
593
- {text}`
594
- };
595
- const DEFAULT_EXTRACTION_CONFIG = { outputDir: ".aiex/extracted" };
596
- const DEFAULT_AI_CONFIG = {
597
- provider: DEFAULT_PROVIDER_CONFIG,
598
- prompt: DEFAULT_PROMPT_CONFIG,
599
- extraction: DEFAULT_EXTRACTION_CONFIG
600
- };
601
-
602
- //#endregion
603
- //#region src/core/ai-extraction/config.ts
604
- const CONFIG_FILE_NAME = "ai-config.json";
605
- const GITIGNORE_FILE = ".gitignore";
606
- async function readAIConfig(aiexDir) {
607
- const configPath = path.join(aiexDir, CONFIG_FILE_NAME);
608
- try {
609
- const content = await fs.readFile(configPath, "utf-8");
610
- const parsed = JSON.parse(content);
611
- return AIConfigSchema.parse(parsed);
612
- } catch {
613
- return null;
614
- }
615
- }
616
- async function writeAIConfig(aiexDir, config) {
617
- const configPath = path.join(aiexDir, CONFIG_FILE_NAME);
618
- await fs.mkdir(aiexDir, { recursive: true });
619
- await fs.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`);
620
- await addToGitignore(aiexDir, CONFIG_FILE_NAME);
621
- }
622
- function getDefaultAIConfig() {
623
- return { ...DEFAULT_AI_CONFIG };
624
- }
625
- async function addToGitignore(aiexDir, fileName) {
626
- const projectRoot = path.dirname(aiexDir);
627
- const gitignorePath = path.join(projectRoot, GITIGNORE_FILE);
628
- try {
629
- const content = await fs.readFile(gitignorePath, "utf-8");
630
- if (content.split("\n").some((line) => line.trim() === fileName || line.includes(".aiex/"))) return;
631
- const newContent = content.endsWith("\n") ? `${content}${fileName}\n` : `${content}\n${fileName}\n`;
632
- await fs.writeFile(gitignorePath, newContent);
633
- } catch {
634
- await fs.writeFile(gitignorePath, `${fileName}\n`);
635
- }
636
- }
637
-
638
- //#endregion
639
- //#region src/doctor.ts
641
+ //#region src/core/doctor-collector.ts
640
642
  const V1_SUFFIX_RE = /\/v1\/?$/;
641
643
  async function checkConnection(baseURL) {
642
644
  try {
@@ -722,4 +724,4 @@ async function collectDoctorDiagnostics(options = {}) {
722
724
  }
723
725
 
724
726
  //#endregion
725
- export { formatDoctorDiagnosticsJson as C, doctorDiagnosticsTableRows as S, JsonSchemaDefinitionSchema as _, DEFAULT_PROMPT_CONFIG as a, generateDrizzleSchema as b, AIConfigSchema as c, description as d, name as f, generateDrizzleConfig as g, createMigrationConfig as h, writeAIConfig as i, createConfig as l, version as m, getDefaultAIConfig as n, PLACEHOLDER_SCHEMA as o, package_default as p, readAIConfig as r, PLACEHOLDER_TEXT as s, collectDoctorDiagnostics as t, seedConfig as u, parseJsonSchema as v, buildDoctorDiagnostics as x, toSnakeCase as y };
727
+ export { formatDoctorDiagnosticsJson as C, doctorDiagnosticsTableRows as S, description as _, parseJsonSchema as a, version as b, getDefaultAIConfig as c, DEFAULT_PROMPT_CONFIG as d, PLACEHOLDER_SCHEMA as f, seedConfig as g, createConfig as h, JsonSchemaDefinitionSchema as i, readAIConfig as l, AIConfigSchema as m, createMigrationConfig as n, toSnakeCase as o, PLACEHOLDER_TEXT as p, generateDrizzleConfig as r, generateDrizzleSchema as s, collectDoctorDiagnostics as t, writeAIConfig as u, name as v, buildDoctorDiagnostics as x, package_default as y };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { ZodError, z } from "zod";
2
1
  import Conf from "conf";
2
+ import { ZodError, z } from "zod";
3
3
 
4
4
  //#region src/core/doctor.d.ts
5
5
  interface DoctorDiagnostics {
@@ -60,6 +60,19 @@ declare function buildDoctorDiagnostics(input: {
60
60
  declare function formatDoctorDiagnosticsJson(d: DoctorDiagnostics): string;
61
61
  declare function doctorDiagnosticsTableRows(d: DoctorDiagnostics): [string, string][];
62
62
  //#endregion
63
+ //#region src/config.d.ts
64
+ interface AppConfig {
65
+ name?: string;
66
+ version?: string;
67
+ }
68
+ declare function createConfig(): Conf<AppConfig>;
69
+ //#endregion
70
+ //#region src/core/doctor-collector.d.ts
71
+ interface CollectDoctorDiagnosticsOptions {
72
+ config?: ReturnType<typeof createConfig>;
73
+ }
74
+ declare function collectDoctorDiagnostics(options?: CollectDoctorDiagnosticsOptions): Promise<DoctorDiagnostics>;
75
+ //#endregion
63
76
  //#region src/core/schema-sqlite/types.d.ts
64
77
  interface ParsedColumn {
65
78
  name: string;
@@ -114,7 +127,6 @@ declare function createMigrationConfig(cwd: string): MigrationConfig;
114
127
  declare function generateDrizzleConfig(): string;
115
128
  //#endregion
116
129
  //#region src/core/schema-sqlite/schemas.d.ts
117
-
118
130
  declare const JsonSchemaDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodObject<{
119
131
  $schema: z.ZodOptional<z.ZodString>;
120
132
  title: z.ZodString;
@@ -266,17 +278,4 @@ type JsonSchemaDefinition = z.infer<typeof JsonSchemaDefinitionSchema>;
266
278
  //#region src/core/schema-sqlite/parser.d.ts
267
279
  declare function parseJsonSchema(schema: JsonSchemaDefinition): ParseResult;
268
280
  //#endregion
269
- //#region src/config.d.ts
270
- interface AppConfig {
271
- name?: string;
272
- version?: string;
273
- }
274
- declare function createConfig(): Conf<AppConfig>;
275
- //#endregion
276
- //#region src/doctor.d.ts
277
- interface CollectDoctorDiagnosticsOptions {
278
- config?: ReturnType<typeof createConfig>;
279
- }
280
- declare function collectDoctorDiagnostics(options?: CollectDoctorDiagnosticsOptions): Promise<DoctorDiagnostics>;
281
- //#endregion
282
281
  export { type DoctorDiagnostics, type JsonSchemaDefinition, JsonSchemaDefinitionSchema, type JsonSchemaProperty, type MigrationConfig, type ParseResult, type ParsedColumn, type ParsedRelation, type ParsedTable, buildDoctorDiagnostics, collectDoctorDiagnostics, createMigrationConfig, doctorDiagnosticsTableRows, formatDoctorDiagnosticsJson, generateDrizzleConfig, generateDrizzleSchema, parseJsonSchema };
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { C as formatDoctorDiagnosticsJson, S as doctorDiagnosticsTableRows, _ as JsonSchemaDefinitionSchema, b as generateDrizzleSchema, g as generateDrizzleConfig, h as createMigrationConfig, t as collectDoctorDiagnostics, v as parseJsonSchema, x as buildDoctorDiagnostics } from "./doctor-IvHYLDX6.mjs";
1
+ import { C as formatDoctorDiagnosticsJson, S as doctorDiagnosticsTableRows, a as parseJsonSchema, i as JsonSchemaDefinitionSchema, n as createMigrationConfig, r as generateDrizzleConfig, s as generateDrizzleSchema, t as collectDoctorDiagnostics, x as buildDoctorDiagnostics } from "./doctor-collector-D2q6iD_e.mjs";
2
2
 
3
3
  export { JsonSchemaDefinitionSchema, buildDoctorDiagnostics, collectDoctorDiagnostics, createMigrationConfig, doctorDiagnosticsTableRows, formatDoctorDiagnosticsJson, generateDrizzleConfig, generateDrizzleSchema, parseJsonSchema };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aiex-cli",
3
3
  "type": "module",
4
- "version": "0.0.1-beta.27",
4
+ "version": "0.0.1-beta.28",
5
5
  "description": "JSON Schema → SQLite with AI-powered data extraction",
6
6
  "author": "OSpoon <zxin088@gmail.com>",
7
7
  "license": "MIT",
@@ -61,6 +61,7 @@
61
61
  "esbuild": "^0.19.12",
62
62
  "hono": "^4.0.0",
63
63
  "picocolors": "^1.1.1",
64
+ "picomatch": "^4.0.4",
64
65
  "tsx": "^4.21.0",
65
66
  "unpdf": "^1.6.2",
66
67
  "update-notifier": "^7.3.1",
@@ -71,6 +72,7 @@
71
72
  "@antfu/ni": "^30.1.0",
72
73
  "@types/better-sqlite3": "^7.6.0",
73
74
  "@types/node": "^25.6.0",
75
+ "@types/picomatch": "^4.0.3",
74
76
  "@types/update-notifier": "^6.0.8",
75
77
  "@vitest/coverage-v8": "^4.1.4",
76
78
  "eslint": "^10.2.0",