aiex-cli 0.0.1-beta.9 → 0.0.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 (123) hide show
  1. package/README.md +32 -25
  2. package/dist/cli.mjs +912 -567
  3. package/dist/{completions-ygS1okck.mjs → completions-C3rmTwXZ.mjs} +2 -2
  4. package/dist/core/schema-sqlite/migrate-helper.mjs +35 -37
  5. package/dist/{doctor-BiU1lDp-.mjs → doctor-collector-CykRm0fC.mjs} +282 -223
  6. package/dist/index.d.mts +15 -15
  7. package/dist/index.mjs +1 -1
  8. package/dist/table-schema.json +4 -0
  9. package/dist/web/assets/AISettings-CI6Lgx0p.js +339 -0
  10. package/dist/web/assets/DataBrowser-CwcTG80-.js +6 -0
  11. package/dist/web/assets/ExtractionViewer-CsdK1kKK.js +1 -0
  12. package/dist/web/assets/JsonSchemaEditor-D477lV5a.js +570 -0
  13. package/dist/web/assets/api-client-D2Y_-4JM.js +1 -0
  14. package/dist/web/assets/button-Cdgr9Igy.js +927 -0
  15. package/dist/web/assets/{cssMode-DAbG0CMn.js → cssMode-CPThwItX.js} +1 -1
  16. package/dist/web/assets/dialog-CUkPLPNP.js +109 -0
  17. package/dist/web/assets/dist-9yHVMqQ0.js +1 -0
  18. package/dist/web/assets/{editor.main-BqhfoHxy.js → editor.main-BnOkwRFv.js} +2 -2
  19. package/dist/web/assets/{freemarker2-B9_5ct2b.js → freemarker2-DWDTYVJR.js} +1 -1
  20. package/dist/web/assets/{handlebars-TY59WcoQ.js → handlebars-D4DzjGQ7.js} +1 -1
  21. package/dist/web/assets/{html-CLULsh27.js → html-DnzhKSoD.js} +1 -1
  22. package/dist/web/assets/{htmlMode-BvG7RNbU.js → htmlMode-CR7UKfEH.js} +1 -1
  23. package/dist/web/assets/index-C9N8oWt4.css +2 -0
  24. package/dist/web/assets/{index-CKUXTDYj.js → index-DVDVw-GK.js} +38 -38
  25. package/dist/web/assets/{javascript-DHrLp6gu.js → javascript-D2srszZ8.js} +1 -1
  26. package/dist/web/assets/{jsonMode-DBDhdzl1.js → jsonMode-B4jaPYEr.js} +1 -1
  27. package/dist/web/assets/{liquid-tGeb-nqF.js → liquid-CIT2Wl_l.js} +1 -1
  28. package/dist/web/assets/{mdx-Cmdz78VU.js → mdx-CWLaEOFy.js} +1 -1
  29. package/dist/web/assets/{monaco.contribution-CroYPUF5.js → monaco.contribution-DDv5ldfS.js} +2 -2
  30. package/dist/web/assets/object-utils-I4gWdSnS.js +1 -0
  31. package/dist/web/assets/{python-Dmfz4iDE.js → python-6CGfpCNq.js} +1 -1
  32. package/dist/web/assets/{razor-BJicZHJs.js → razor-DEMMh3TD.js} +1 -1
  33. package/dist/web/assets/runtime-dom.esm-bundler-ei_N7Xjw.js +1 -0
  34. package/dist/web/assets/select-BGex2SPs.js +439 -0
  35. package/dist/web/assets/{tsMode-DYqTyE66.js → tsMode-Cm1NtjPs.js} +1 -1
  36. package/dist/web/assets/{typescript-DLnTe9Hf.js → typescript-BM9aPEFg.js} +1 -1
  37. package/dist/web/assets/{xml-BIYqLORk.js → xml-CoSbvcg5.js} +1 -1
  38. package/dist/web/assets/{yaml-BjmulkMX.js → yaml-56GOgy8k.js} +1 -1
  39. package/dist/web/index.html +10 -8
  40. package/package.json +16 -1
  41. package/src/core/schema-sqlite/migrate-helper.ts +32 -46
  42. package/dist/web/assets/AISettings-DOzonIux.js +0 -334
  43. package/dist/web/assets/DataBrowser-rznfVRaV.js +0 -3
  44. package/dist/web/assets/JsonSchemaEditor-C9iyQs7N.js +0 -929
  45. package/dist/web/assets/api-client-Dsg4WOM9.js +0 -1
  46. package/dist/web/assets/button-kTMweGMc.js +0 -927
  47. package/dist/web/assets/dialog-CWuu7WjI.js +0 -108
  48. package/dist/web/assets/index-DDFnprdM.css +0 -2
  49. package/dist/web/assets/lib-C30cIFrm.js +0 -1
  50. package/dist/web/assets/overlayeventbus-AtOpmI6n.js +0 -80
  51. package/dist/web/assets/table-schema-mJrrf9qw.js +0 -2
  52. /package/dist/web/assets/{abap-DrZwwXZX.js → abap-Bgec7Keq.js} +0 -0
  53. /package/dist/web/assets/{apex-CrCz0btt.js → apex-VBlPwEoQ.js} +0 -0
  54. /package/dist/web/assets/{azcli-BapzKHay.js → azcli-DKqrEFBx.js} +0 -0
  55. /package/dist/web/assets/{bat-C_NRAiA1.js → bat-DdgQWy_0.js} +0 -0
  56. /package/dist/web/assets/{bicep-C7pp2CNk.js → bicep-CRMM43EB.js} +0 -0
  57. /package/dist/web/assets/{cameligo-BhhK9vxZ.js → cameligo-UatALtML.js} +0 -0
  58. /package/dist/web/assets/{clojure-D0ujmUyE.js → clojure-D8JU08RA.js} +0 -0
  59. /package/dist/web/assets/{coffee-DHEl7Jbb.js → coffee-C56wu358.js} +0 -0
  60. /package/dist/web/assets/{cpp-Iil-3nzZ.js → cpp-CyZLvhJG.js} +0 -0
  61. /package/dist/web/assets/{csharp-Dh0Ee7SY.js → csharp-BJl3ixva.js} +0 -0
  62. /package/dist/web/assets/{csp-mwzjw0JL.js → csp-CxEKxmO-.js} +0 -0
  63. /package/dist/web/assets/{css-COIa8ZTR.js → css-B0t_muXd.js} +0 -0
  64. /package/dist/web/assets/{cypher-GVc17FC4.js → cypher-D1hqiMFD.js} +0 -0
  65. /package/dist/web/assets/{dart-phiCaE7_.js → dart-Bz550Pyv.js} +0 -0
  66. /package/dist/web/assets/{dockerfile-BMaDhdim.js → dockerfile-CIXgVAuA.js} +0 -0
  67. /package/dist/web/assets/{ecl-Cj47kvqp.js → ecl-D9qbvZoA.js} +0 -0
  68. /package/dist/web/assets/{editor.api-DLXGyrN1.js → editor.api-C8BHpRhn.js} +0 -0
  69. /package/dist/web/assets/{elixir-DBbstcE1.js → elixir-b2M38fAy.js} +0 -0
  70. /package/dist/web/assets/{flow9-ChHb1adO.js → flow9-Dq1UYMkt.js} +0 -0
  71. /package/dist/web/assets/{fsharp-CMk2OIJN.js → fsharp-BaeLhgfq.js} +0 -0
  72. /package/dist/web/assets/{go-BrMkuJg0.js → go-Bd-NFKIC.js} +0 -0
  73. /package/dist/web/assets/{graphql-PSR1UKGv.js → graphql-DZVerJfy.js} +0 -0
  74. /package/dist/web/assets/{hcl-DAQrbDOW.js → hcl-CAVzrZfH.js} +0 -0
  75. /package/dist/web/assets/{ini-0TG5BxW0.js → ini-CyXdX58t.js} +0 -0
  76. /package/dist/web/assets/{java-rgorz17v.js → java-B5pNgvhy.js} +0 -0
  77. /package/dist/web/assets/{julia-C8VMdHm8.js → julia-XRhmV3AN.js} +0 -0
  78. /package/dist/web/assets/{kotlin-CllWo3gX.js → kotlin-DOd3J5vr.js} +0 -0
  79. /package/dist/web/assets/{less-Cgca25AP.js → less-veZSnyw6.js} +0 -0
  80. /package/dist/web/assets/{lexon-D0GHdBaw.js → lexon-QWGkuK0H.js} +0 -0
  81. /package/dist/web/assets/{lua-DmRsNG-P.js → lua-CYGpjuO5.js} +0 -0
  82. /package/dist/web/assets/{m3-BgL5dNKT.js → m3-yNnrZkdc.js} +0 -0
  83. /package/dist/web/assets/{markdown-BuJfycGS.js → markdown-BCSWEPSX.js} +0 -0
  84. /package/dist/web/assets/{mips-C9m_93PR.js → mips-OpYmcC30.js} +0 -0
  85. /package/dist/web/assets/{msdax-CpFHC9OI.js → msdax-2oxoTO9Z.js} +0 -0
  86. /package/dist/web/assets/{mysql-qFvltsqN.js → mysql-5KlC-K_9.js} +0 -0
  87. /package/dist/web/assets/{objective-c-Bnmr858J.js → objective-c-CcDCgtLx.js} +0 -0
  88. /package/dist/web/assets/{pascal-WP0_D5AO.js → pascal-BZGsbaEV.js} +0 -0
  89. /package/dist/web/assets/{pascaligo-Blom4Rij.js → pascaligo-DtD5qU3G.js} +0 -0
  90. /package/dist/web/assets/{perl-B-vk8g64.js → perl-C1jNNS3E.js} +0 -0
  91. /package/dist/web/assets/{pgsql-Cgvz6v67.js → pgsql-CT0fhiZa.js} +0 -0
  92. /package/dist/web/assets/{php-8a3Lrw9m.js → php-D6DrXoPM.js} +0 -0
  93. /package/dist/web/assets/{pla-DuFqEZ8V.js → pla-b3-HN2pF.js} +0 -0
  94. /package/dist/web/assets/{postiats-DkLtSgkp.js → postiats-Bin2ApVS.js} +0 -0
  95. /package/dist/web/assets/{powerquery-BJ1aNepW.js → powerquery-7ASnn-ZG.js} +0 -0
  96. /package/dist/web/assets/{powershell-rE98k687.js → powershell-t4p7sU1H.js} +0 -0
  97. /package/dist/web/assets/{preload-helper-DWTEM3RW.js → preload-helper-Dd-HcVz_.js} +0 -0
  98. /package/dist/web/assets/{protobuf-CUheFacr.js → protobuf-BUGeWa_j.js} +0 -0
  99. /package/dist/web/assets/{pug-LDcAMD8w.js → pug-BuKcgC9s.js} +0 -0
  100. /package/dist/web/assets/{qsharp-IHfqKOfK.js → qsharp-DxLLX8mo.js} +0 -0
  101. /package/dist/web/assets/{r-D-QApv87.js → r-DMlFgn7A.js} +0 -0
  102. /package/dist/web/assets/{redis-SXdDyWR9.js → redis-cXItkC5u.js} +0 -0
  103. /package/dist/web/assets/{redshift-Y6lsCryn.js → redshift-BZVbW7HE.js} +0 -0
  104. /package/dist/web/assets/{restructuredtext-edObr9a8.js → restructuredtext-BzjxwS8h.js} +0 -0
  105. /package/dist/web/assets/{ruby-CNnUfF-8.js → ruby-C5nyLV4l.js} +0 -0
  106. /package/dist/web/assets/{rust-IHUZWzBr.js → rust-BcmMsHdf.js} +0 -0
  107. /package/dist/web/assets/{sb-DrUvY44N.js → sb-Dnb1iy6B.js} +0 -0
  108. /package/dist/web/assets/{scala-B4hbXGLM.js → scala-anMIFYpA.js} +0 -0
  109. /package/dist/web/assets/{scheme-BGrd12j3.js → scheme-BItQTe08.js} +0 -0
  110. /package/dist/web/assets/{scss-x5G1ES4U.js → scss-BOv51BJ5.js} +0 -0
  111. /package/dist/web/assets/{shell-DOehe2Y8.js → shell-BsRYRTNN.js} +0 -0
  112. /package/dist/web/assets/{solidity-BeRvcwWV.js → solidity-BtuLgGDx.js} +0 -0
  113. /package/dist/web/assets/{sophia-DZbkUNjy.js → sophia-B0Vkc5MF.js} +0 -0
  114. /package/dist/web/assets/{sparql-B7_oi5-h.js → sparql-B7lvkZQM.js} +0 -0
  115. /package/dist/web/assets/{sql-CTlsFWVE.js → sql-DvP5MpA3.js} +0 -0
  116. /package/dist/web/assets/{st-DJVEJdPE.js → st-GVUeyB3U.js} +0 -0
  117. /package/dist/web/assets/{swift-CwhT3fYa.js → swift-DSPIoCjm.js} +0 -0
  118. /package/dist/web/assets/{systemverilog-BQN63pkN.js → systemverilog-Icj2-k23.js} +0 -0
  119. /package/dist/web/assets/{tcl-DqwfpskA.js → tcl-Cd8KQcm-.js} +0 -0
  120. /package/dist/web/assets/{twig-BiyenUgc.js → twig-CBHmt8z3.js} +0 -0
  121. /package/dist/web/assets/{typespec-CWOJribt.js → typespec-Ckc037mq.js} +0 -0
  122. /package/dist/web/assets/{vb-Cq5F87m3.js → vb-B97GW9Wb.js} +0 -0
  123. /package/dist/web/assets/{wgsl-BAvW2lVr.js → wgsl-DIKmb3YH.js} +0 -0
package/README.md CHANGED
@@ -21,10 +21,9 @@ npm install -g aiex-cli
21
21
  ```
22
22
 
23
23
  ```bash
24
- aiex schema --init # set up .aiex/schema/ directory
24
+ aiex web # configure schemas and AI settings in the browser
25
25
  aiex schema # generate SQLite from JSON Schema files
26
- aiex extract -s invoice -f invoice.pdf # extract data with AI
27
- aiex extract -s invoice -f invoice.pdf --db # extract and insert into database
26
+ aiex extract -s invoice -f invoice.pdf # extract data with AI and insert into database
28
27
  ```
29
28
 
30
29
  <br>
@@ -34,23 +33,15 @@ aiex extract -s invoice -f invoice.pdf --db # extract and insert into database
34
33
  - **JSON Schema → SQLite** — Define tables as JSON Schema files, generate Drizzle ORM schema, and migrate to SQLite
35
34
  - **Visual Editor** — Browser-based UI for designing schemas without writing JSON by hand
36
35
  - **AI Extraction** — Extract structured data from text, images, and PDFs using any OpenAI-compatible provider (OpenAI, Anthropic, Ollama, DeepSeek, local models, etc.)
36
+ - **Interactive Mode** — Run `aiex extract` without arguments for a guided extraction workflow
37
+ - **Batch Mode** — `aiex extract -d <dir>` processes entire directories with optional glob filtering
37
38
  - **Built-in Model Registry** — Knows capabilities of 2000+ models (vision, structured output) so you don't have to guess
38
39
 
39
40
  <br>
40
41
 
41
42
  ## 🚀 Getting Started
42
43
 
43
- ### 1. Initialize
44
-
45
- ```bash
46
- aiex schema --init
47
- ```
48
-
49
- Creates a `.aiex/` directory with example schemas to get you started.
50
-
51
- Add your own JSON Schema files to `.aiex/schema/` (one file per table), then run `aiex schema` to migrate them into the database.
52
-
53
- ### 2. Visual Editor
44
+ ### 1. Configure In Web UI
54
45
 
55
46
  ```bash
56
47
  aiex web
@@ -58,7 +49,7 @@ aiex web
58
49
 
59
50
  Opens a browser UI where you can visually design and manage your schemas, configure AI settings, preview extraction prompts, and apply changes to the database.
60
51
 
61
- ### 3. Generate Database
52
+ ### 2. Generate Database
62
53
 
63
54
  ```bash
64
55
  aiex schema
@@ -66,23 +57,27 @@ aiex schema
66
57
 
67
58
  Converts your JSON Schema files into a SQLite database with full migration support.
68
59
 
69
- ### 4. Extract Data
60
+ ### 3. Extract Data
70
61
 
71
62
  ```bash
72
- aiex extract -s <schema> -f <file> # from file (txt, pdf, png, jpg, ...)
73
- aiex extract -s <schema> -t <text> # from text
74
- aiex extract -s <schema> -f <file> -m <model> # specify AI model (overrides auto-selection)
63
+ aiex extract # interactive mode (prompts for schema & input)
64
+ aiex extract -s <schema> -f <file> # from file (txt, pdf, png, jpg, ...)
65
+ aiex extract -s <schema> -t <text> # from text
66
+ aiex extract -s <schema> -f <file> -m <model> # specify AI model (overrides auto-selection)
67
+ aiex extract -s <schema> -d <directory> # batch extract all supported files in a directory
68
+ aiex extract -s <schema> -d <dir> -g "*.pdf" # batch with glob filter
75
69
  ```
76
70
 
77
71
  The AI reads your document and outputs structured JSON matching your schema.
78
72
 
79
73
  **Examples:**
80
74
  ```bash
81
- aiex extract -s paper -f research.pdf # save result to .aiex/extracted/
82
- aiex extract -s paper -f research.pdf --db # also insert into SQLite database
75
+ aiex extract # interactive mode
76
+ aiex extract -s paper -f research.pdf # save result to .aiex/extracted/ and insert into database
83
77
  aiex extract -s paper -f research.pdf -m gpt-4o # use a specific model
78
+ aiex extract -s paper -d ./papers -g "*.pdf" # batch extract PDFs from a directory
84
79
  ```
85
- Saves the extracted result to `.aiex/extracted/<schema-name>-<timestamp>.json` with fields like `title`, `firstAuthor`, `journal`, `year` — exactly as defined in your schema. Add `--db` to also insert the data directly into the SQLite database.
80
+ Saves the extracted result to `.aiex/extracted/<schema-name>-<timestamp>.json` with fields like `title`, `firstAuthor`, `journal`, `year` — exactly as defined in your schema. Data is automatically inserted into the SQLite database.
86
81
 
87
82
  By default, aiex automatically selects a model based on your input type (vision-capable for images, structured output for text). Use `--model` / `-m` to override and specify any model from your AI configuration.
88
83
 
@@ -92,13 +87,14 @@ By default, aiex automatically selects a model based on your input type (vision-
92
87
 
93
88
  | Command | Description |
94
89
  | --- | --- |
95
- | `aiex schema --init` | Scaffold `.aiex/` directory with example schemas |
96
90
  | `aiex schema` | Parse JSON Schema files and migrate to SQLite |
97
91
  | `aiex schema --generate` | Generate Drizzle schema code only (skip migration) |
98
92
  | `aiex web` | Launch visual schema editor in browser |
99
- | `aiex extract -s <name> -f <file>` | Extract structured data from documents via AI |
100
- | `aiex extract -s <name> -f <file> --db` | Extract and insert into SQLite database |
93
+ | `aiex extract` | Interactive mode prompts for schema and input source |
94
+ | `aiex extract -s <name> -f <file>` | Extract structured data from documents and insert into SQLite database |
101
95
  | `aiex extract -s <name> -f <file> -m <model>` | Extract with a specific AI model |
96
+ | `aiex extract -s <name> -d <dir>` | Batch extract all supported files in a directory |
97
+ | `aiex extract -s <name> -d <dir> -g "*.pdf"` | Batch extract with glob filter |
102
98
  | `aiex doctor` | System and configuration diagnostics |
103
99
  | `aiex completion bash\|zsh\|fish` | Generate shell completion scripts |
104
100
 
@@ -133,6 +129,17 @@ aiex works with any OpenAI-compatible API provider. Configure in the Web UI (AI
133
129
 
134
130
  The built-in model registry automatically suggests capabilities for 2000+ models from providers including OpenAI, Anthropic, Google, Meta, Mistral, DeepSeek, Alibaba Cloud, and more.
135
131
 
132
+ ### Langfuse Tracing
133
+
134
+ aiex can send AI model interaction traces to [Langfuse](https://langfuse.com) for monitoring and debugging.
135
+
136
+ - **Enable** — In Web UI → AI Settings → Langfuse Tracing, toggle on and enter your Langfuse Secret Key / Public Key
137
+ - **Self-hosted** — Optionally set a custom Host URL; defaults to `https://us.cloud.langfuse.com`
138
+ - **No impact when disabled** — No tracing is sent if keys are left empty
139
+ - **Non-blocking** — Misconfigured keys will not affect extraction
140
+
141
+ Once enabled, every `aiex extract` call is automatically traced with full request/response payloads, token usage, and latency.
142
+
136
143
  <br>
137
144
 
138
145
  ## 🙏 Acknowledgments