aiex-cli 0.0.1-beta.8 → 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.
- package/README.md +32 -25
- package/dist/cli.mjs +912 -572
- package/dist/{completions-ygS1okck.mjs → completions-C3rmTwXZ.mjs} +2 -2
- package/dist/core/schema-sqlite/migrate-helper.mjs +35 -37
- package/dist/{doctor-DxG7uaGR.mjs → doctor-collector-CykRm0fC.mjs} +282 -223
- package/dist/index.d.mts +15 -15
- package/dist/index.mjs +1 -1
- package/dist/table-schema.json +4 -0
- package/dist/web/assets/AISettings-CI6Lgx0p.js +339 -0
- package/dist/web/assets/DataBrowser-CwcTG80-.js +6 -0
- package/dist/web/assets/ExtractionViewer-CsdK1kKK.js +1 -0
- package/dist/web/assets/JsonSchemaEditor-D477lV5a.js +570 -0
- package/dist/web/assets/api-client-D2Y_-4JM.js +1 -0
- package/dist/web/assets/button-Cdgr9Igy.js +927 -0
- package/dist/web/assets/{cssMode-DAbG0CMn.js → cssMode-CPThwItX.js} +1 -1
- package/dist/web/assets/dialog-CUkPLPNP.js +109 -0
- package/dist/web/assets/dist-9yHVMqQ0.js +1 -0
- package/dist/web/assets/{editor.main-BqhfoHxy.js → editor.main-BnOkwRFv.js} +2 -2
- package/dist/web/assets/{freemarker2-B9_5ct2b.js → freemarker2-DWDTYVJR.js} +1 -1
- package/dist/web/assets/{handlebars-TY59WcoQ.js → handlebars-D4DzjGQ7.js} +1 -1
- package/dist/web/assets/{html-CLULsh27.js → html-DnzhKSoD.js} +1 -1
- package/dist/web/assets/{htmlMode-BvG7RNbU.js → htmlMode-CR7UKfEH.js} +1 -1
- package/dist/web/assets/index-C9N8oWt4.css +2 -0
- package/dist/web/assets/{index-BRvFRL-3.js → index-DVDVw-GK.js} +38 -38
- package/dist/web/assets/{javascript-DHrLp6gu.js → javascript-D2srszZ8.js} +1 -1
- package/dist/web/assets/{jsonMode-DBDhdzl1.js → jsonMode-B4jaPYEr.js} +1 -1
- package/dist/web/assets/{liquid-tGeb-nqF.js → liquid-CIT2Wl_l.js} +1 -1
- package/dist/web/assets/{mdx-Cmdz78VU.js → mdx-CWLaEOFy.js} +1 -1
- package/dist/web/assets/{monaco.contribution-CroYPUF5.js → monaco.contribution-DDv5ldfS.js} +2 -2
- package/dist/web/assets/object-utils-I4gWdSnS.js +1 -0
- package/dist/web/assets/{python-Dmfz4iDE.js → python-6CGfpCNq.js} +1 -1
- package/dist/web/assets/{razor-BJicZHJs.js → razor-DEMMh3TD.js} +1 -1
- package/dist/web/assets/runtime-dom.esm-bundler-ei_N7Xjw.js +1 -0
- package/dist/web/assets/select-BGex2SPs.js +439 -0
- package/dist/web/assets/{tsMode-DYqTyE66.js → tsMode-Cm1NtjPs.js} +1 -1
- package/dist/web/assets/{typescript-DLnTe9Hf.js → typescript-BM9aPEFg.js} +1 -1
- package/dist/web/assets/{xml-BIYqLORk.js → xml-CoSbvcg5.js} +1 -1
- package/dist/web/assets/{yaml-BjmulkMX.js → yaml-56GOgy8k.js} +1 -1
- package/dist/web/index.html +10 -8
- package/package.json +16 -1
- package/src/core/schema-sqlite/migrate-helper.ts +32 -46
- package/dist/web/assets/AISettings-D_AFhorO.js +0 -334
- package/dist/web/assets/DataBrowser-rznfVRaV.js +0 -3
- package/dist/web/assets/JsonSchemaEditor-C9iyQs7N.js +0 -929
- package/dist/web/assets/api-client-Dsg4WOM9.js +0 -1
- package/dist/web/assets/button-kTMweGMc.js +0 -927
- package/dist/web/assets/dialog-CWuu7WjI.js +0 -108
- package/dist/web/assets/index-DDFnprdM.css +0 -2
- package/dist/web/assets/lib-C30cIFrm.js +0 -1
- package/dist/web/assets/overlayeventbus-AtOpmI6n.js +0 -80
- package/dist/web/assets/table-schema-mJrrf9qw.js +0 -2
- /package/dist/web/assets/{abap-DrZwwXZX.js → abap-Bgec7Keq.js} +0 -0
- /package/dist/web/assets/{apex-CrCz0btt.js → apex-VBlPwEoQ.js} +0 -0
- /package/dist/web/assets/{azcli-BapzKHay.js → azcli-DKqrEFBx.js} +0 -0
- /package/dist/web/assets/{bat-C_NRAiA1.js → bat-DdgQWy_0.js} +0 -0
- /package/dist/web/assets/{bicep-C7pp2CNk.js → bicep-CRMM43EB.js} +0 -0
- /package/dist/web/assets/{cameligo-BhhK9vxZ.js → cameligo-UatALtML.js} +0 -0
- /package/dist/web/assets/{clojure-D0ujmUyE.js → clojure-D8JU08RA.js} +0 -0
- /package/dist/web/assets/{coffee-DHEl7Jbb.js → coffee-C56wu358.js} +0 -0
- /package/dist/web/assets/{cpp-Iil-3nzZ.js → cpp-CyZLvhJG.js} +0 -0
- /package/dist/web/assets/{csharp-Dh0Ee7SY.js → csharp-BJl3ixva.js} +0 -0
- /package/dist/web/assets/{csp-mwzjw0JL.js → csp-CxEKxmO-.js} +0 -0
- /package/dist/web/assets/{css-COIa8ZTR.js → css-B0t_muXd.js} +0 -0
- /package/dist/web/assets/{cypher-GVc17FC4.js → cypher-D1hqiMFD.js} +0 -0
- /package/dist/web/assets/{dart-phiCaE7_.js → dart-Bz550Pyv.js} +0 -0
- /package/dist/web/assets/{dockerfile-BMaDhdim.js → dockerfile-CIXgVAuA.js} +0 -0
- /package/dist/web/assets/{ecl-Cj47kvqp.js → ecl-D9qbvZoA.js} +0 -0
- /package/dist/web/assets/{editor.api-DLXGyrN1.js → editor.api-C8BHpRhn.js} +0 -0
- /package/dist/web/assets/{elixir-DBbstcE1.js → elixir-b2M38fAy.js} +0 -0
- /package/dist/web/assets/{flow9-ChHb1adO.js → flow9-Dq1UYMkt.js} +0 -0
- /package/dist/web/assets/{fsharp-CMk2OIJN.js → fsharp-BaeLhgfq.js} +0 -0
- /package/dist/web/assets/{go-BrMkuJg0.js → go-Bd-NFKIC.js} +0 -0
- /package/dist/web/assets/{graphql-PSR1UKGv.js → graphql-DZVerJfy.js} +0 -0
- /package/dist/web/assets/{hcl-DAQrbDOW.js → hcl-CAVzrZfH.js} +0 -0
- /package/dist/web/assets/{ini-0TG5BxW0.js → ini-CyXdX58t.js} +0 -0
- /package/dist/web/assets/{java-rgorz17v.js → java-B5pNgvhy.js} +0 -0
- /package/dist/web/assets/{julia-C8VMdHm8.js → julia-XRhmV3AN.js} +0 -0
- /package/dist/web/assets/{kotlin-CllWo3gX.js → kotlin-DOd3J5vr.js} +0 -0
- /package/dist/web/assets/{less-Cgca25AP.js → less-veZSnyw6.js} +0 -0
- /package/dist/web/assets/{lexon-D0GHdBaw.js → lexon-QWGkuK0H.js} +0 -0
- /package/dist/web/assets/{lua-DmRsNG-P.js → lua-CYGpjuO5.js} +0 -0
- /package/dist/web/assets/{m3-BgL5dNKT.js → m3-yNnrZkdc.js} +0 -0
- /package/dist/web/assets/{markdown-BuJfycGS.js → markdown-BCSWEPSX.js} +0 -0
- /package/dist/web/assets/{mips-C9m_93PR.js → mips-OpYmcC30.js} +0 -0
- /package/dist/web/assets/{msdax-CpFHC9OI.js → msdax-2oxoTO9Z.js} +0 -0
- /package/dist/web/assets/{mysql-qFvltsqN.js → mysql-5KlC-K_9.js} +0 -0
- /package/dist/web/assets/{objective-c-Bnmr858J.js → objective-c-CcDCgtLx.js} +0 -0
- /package/dist/web/assets/{pascal-WP0_D5AO.js → pascal-BZGsbaEV.js} +0 -0
- /package/dist/web/assets/{pascaligo-Blom4Rij.js → pascaligo-DtD5qU3G.js} +0 -0
- /package/dist/web/assets/{perl-B-vk8g64.js → perl-C1jNNS3E.js} +0 -0
- /package/dist/web/assets/{pgsql-Cgvz6v67.js → pgsql-CT0fhiZa.js} +0 -0
- /package/dist/web/assets/{php-8a3Lrw9m.js → php-D6DrXoPM.js} +0 -0
- /package/dist/web/assets/{pla-DuFqEZ8V.js → pla-b3-HN2pF.js} +0 -0
- /package/dist/web/assets/{postiats-DkLtSgkp.js → postiats-Bin2ApVS.js} +0 -0
- /package/dist/web/assets/{powerquery-BJ1aNepW.js → powerquery-7ASnn-ZG.js} +0 -0
- /package/dist/web/assets/{powershell-rE98k687.js → powershell-t4p7sU1H.js} +0 -0
- /package/dist/web/assets/{preload-helper-DWTEM3RW.js → preload-helper-Dd-HcVz_.js} +0 -0
- /package/dist/web/assets/{protobuf-CUheFacr.js → protobuf-BUGeWa_j.js} +0 -0
- /package/dist/web/assets/{pug-LDcAMD8w.js → pug-BuKcgC9s.js} +0 -0
- /package/dist/web/assets/{qsharp-IHfqKOfK.js → qsharp-DxLLX8mo.js} +0 -0
- /package/dist/web/assets/{r-D-QApv87.js → r-DMlFgn7A.js} +0 -0
- /package/dist/web/assets/{redis-SXdDyWR9.js → redis-cXItkC5u.js} +0 -0
- /package/dist/web/assets/{redshift-Y6lsCryn.js → redshift-BZVbW7HE.js} +0 -0
- /package/dist/web/assets/{restructuredtext-edObr9a8.js → restructuredtext-BzjxwS8h.js} +0 -0
- /package/dist/web/assets/{ruby-CNnUfF-8.js → ruby-C5nyLV4l.js} +0 -0
- /package/dist/web/assets/{rust-IHUZWzBr.js → rust-BcmMsHdf.js} +0 -0
- /package/dist/web/assets/{sb-DrUvY44N.js → sb-Dnb1iy6B.js} +0 -0
- /package/dist/web/assets/{scala-B4hbXGLM.js → scala-anMIFYpA.js} +0 -0
- /package/dist/web/assets/{scheme-BGrd12j3.js → scheme-BItQTe08.js} +0 -0
- /package/dist/web/assets/{scss-x5G1ES4U.js → scss-BOv51BJ5.js} +0 -0
- /package/dist/web/assets/{shell-DOehe2Y8.js → shell-BsRYRTNN.js} +0 -0
- /package/dist/web/assets/{solidity-BeRvcwWV.js → solidity-BtuLgGDx.js} +0 -0
- /package/dist/web/assets/{sophia-DZbkUNjy.js → sophia-B0Vkc5MF.js} +0 -0
- /package/dist/web/assets/{sparql-B7_oi5-h.js → sparql-B7lvkZQM.js} +0 -0
- /package/dist/web/assets/{sql-CTlsFWVE.js → sql-DvP5MpA3.js} +0 -0
- /package/dist/web/assets/{st-DJVEJdPE.js → st-GVUeyB3U.js} +0 -0
- /package/dist/web/assets/{swift-CwhT3fYa.js → swift-DSPIoCjm.js} +0 -0
- /package/dist/web/assets/{systemverilog-BQN63pkN.js → systemverilog-Icj2-k23.js} +0 -0
- /package/dist/web/assets/{tcl-DqwfpskA.js → tcl-Cd8KQcm-.js} +0 -0
- /package/dist/web/assets/{twig-BiyenUgc.js → twig-CBHmt8z3.js} +0 -0
- /package/dist/web/assets/{typespec-CWOJribt.js → typespec-Ckc037mq.js} +0 -0
- /package/dist/web/assets/{vb-Cq5F87m3.js → vb-B97GW9Wb.js} +0 -0
- /package/dist/web/assets/{wgsl-BAvW2lVr.js → wgsl-DIKmb3YH.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e}from"./editor.api-
|
|
1
|
+
import{m as e}from"./editor.api-C8BHpRhn.js";var t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a=(e,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(let c of r(a))!i.call(e,c)&&c!==o&&t(e,c,{get:()=>a[c],enumerable:!(s=n(a,c))||s.enumerable});return e},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`)),s={};o(s,e);var c={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:s.languages.IndentAction.IndentOutdent,appendText:` * `}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:s.languages.IndentAction.None,appendText:` * `}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:s.languages.IndentAction.None,appendText:`* `}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:s.languages.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`,notIn:[`string`]},{open:`'`,close:`'`,notIn:[`string`,`comment`]},{open:"`",close:"`",notIn:[`string`,`comment`]},{open:`/**`,close:` */`,notIn:[`string`]}],folding:{markers:{start:RegExp(`^\\s*//\\s*#?region\\b`),end:RegExp(`^\\s*//\\s*#?endregion\\b`)}}},l={defaultToken:`invalid`,tokenPostfix:`.ts`,keywords:`abstract.any.as.asserts.bigint.boolean.break.case.catch.class.continue.const.constructor.debugger.declare.default.delete.do.else.enum.export.extends.false.finally.for.from.function.get.if.implements.import.in.infer.instanceof.interface.is.keyof.let.module.namespace.never.new.null.number.object.out.package.private.protected.public.override.readonly.require.global.return.satisfies.set.static.string.super.switch.symbol.this.throw.true.try.type.typeof.undefined.unique.unknown.var.void.while.with.yield.async.await.of`.split(`.`),operators:`<=.>=.==.!=.===.!==.=>.+.-.**.*./.%.++.--.<<.</.>>.>>>.&.|.^.!.~.&&.||.??.?.:.=.+=.-=.*=.**=./=.%=.<<=.>>=.>>>=.&=.|=.^=.@`.split(`.`),symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,`delimiter.bracket`],{include:`common`}],common:[[/#?[a-z_$][\w$]*/,{cases:{"@keywords":`keyword`,"@default":`identifier`}}],[/[A-Z][\w\$]*/,`type.identifier`],{include:`@whitespace`},[/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:`regexp`,bracket:`@open`,next:`@regexp`}],[/[()\[\]]/,`@brackets`],[/[<>](?!@symbols)/,`@brackets`],[/!(?=([^=]|$))/,`delimiter`],[/@symbols/,{cases:{"@operators":`delimiter`,"@default":``}}],[/(@digits)[eE]([\-+]?(@digits))?/,`number.float`],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,`number.float`],[/0[xX](@hexdigits)n?/,`number.hex`],[/0[oO]?(@octaldigits)n?/,`number.octal`],[/0[bB](@binarydigits)n?/,`number.binary`],[/(@digits)n?/,`number`],[/[;,.]/,`delimiter`],[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*\*(?!\/)/,`comment.doc`,`@jsdoc`],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`]],comment:[[/[^\/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[\/*]/,`comment`]],jsdoc:[[/[^\/*]+/,`comment.doc`],[/\*\//,`comment.doc`,`@pop`],[/[\/*]/,`comment.doc`]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,[`regexp.escape.control`,`regexp.escape.control`,`regexp.escape.control`]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,[`regexp.escape.control`,{token:`regexp.escape.control`,next:`@regexrange`}]],[/(\()(\?:|\?=|\?!)/,[`regexp.escape.control`,`regexp.escape.control`]],[/[()]/,`regexp.escape.control`],[/@regexpctl/,`regexp.escape.control`],[/[^\\\/]/,`regexp`],[/@regexpesc/,`regexp.escape`],[/\\\./,`regexp.invalid`],[/(\/)([dgimsuy]*)/,[{token:`regexp`,bracket:`@close`,next:`@pop`},`keyword.other`]]],regexrange:[[/-/,`regexp.escape.control`],[/\^/,`regexp.invalid`],[/@regexpesc/,`regexp.escape`],[/[^\]]/,`regexp`],[/\]/,{token:`regexp.escape.control`,next:`@pop`,bracket:`@close`}]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/\$\{/,{token:`delimiter.bracket`,next:`@bracketCounting`}],[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/`/,`string`,`@pop`]],bracketCounting:[[/\{/,`delimiter.bracket`,`@bracketCounting`],[/\}/,`delimiter.bracket`,`@pop`],{include:`common`}]}};export{c as conf,l as language};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e}from"./editor.api-
|
|
1
|
+
import{m as e}from"./editor.api-C8BHpRhn.js";var t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a=(e,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(let c of r(a))!i.call(e,c)&&c!==o&&t(e,c,{get:()=>a[c],enumerable:!(s=n(a,c))||s.enumerable});return e},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`)),s={};o(s,e);var c={comments:{blockComment:[`<!--`,`-->`]},brackets:[[`<`,`>`]],autoClosingPairs:[{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`"`,close:`"`}],surroundingPairs:[{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`"`,close:`"`}],onEnterRules:[{beforeText:RegExp(`<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:s.languages.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:s.languages.IndentAction.Indent}}]},l={defaultToken:``,tokenPostfix:`.xml`,ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,``],{include:`@whitespace`},[/(<)(@qualifiedName)/,[{token:`delimiter`},{token:`tag`,next:`@tag`}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:`delimiter`},{token:`tag`},``,{token:`delimiter`}]],[/(<\?)(@qualifiedName)/,[{token:`delimiter`},{token:`metatag`,next:`@tag`}]],[/(<\!)(@qualifiedName)/,[{token:`delimiter`},{token:`metatag`,next:`@tag`}]],[/<\!\[CDATA\[/,{token:`delimiter.cdata`,next:`@cdata`}],[/&\w+;/,`string.escape`]],cdata:[[/[^\]]+/,``],[/\]\]>/,{token:`delimiter.cdata`,next:`@pop`}],[/\]/,``]],tag:[[/[ \t\r\n]+/,``],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,[`attribute.name`,``,`attribute.value`]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,[`attribute.name`,``,`attribute.value`]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,[`attribute.name`,``,`attribute.value`]],[/@qualifiedName/,`attribute.name`],[/\?>/,{token:`delimiter`,next:`@pop`}],[/(\/)(>)/,[{token:`tag`},{token:`delimiter`,next:`@pop`}]],[/>/,{token:`delimiter`,next:`@pop`}]],whitespace:[[/[ \t\r\n]+/,``],[/<!--/,{token:`comment`,next:`@comment`}]],comment:[[/[^<\-]+/,`comment.content`],[/-->/,{token:`comment`,next:`@pop`}],[/<!--/,`comment.content.invalid`],[/[<\-]/,`comment.content`]]}};export{c as conf,l as language};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e}from"./editor.api-
|
|
1
|
+
import{m as e}from"./editor.api-C8BHpRhn.js";var t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a=(e,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(let c of r(a))!i.call(e,c)&&c!==o&&t(e,c,{get:()=>a[c],enumerable:!(s=n(a,c))||s.enumerable});return e},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`)),s={};o(s,e);var c={comments:{lineComment:`#`},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:s.languages.IndentAction.Indent}}]},l={tokenPostfix:`.yaml`,brackets:[{token:`delimiter.bracket`,open:`{`,close:`}`},{token:`delimiter.square`,open:`[`,close:`]`}],keywords:[`true`,`True`,`TRUE`,`false`,`False`,`FALSE`,`null`,`Null`,`Null`,`~`],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:`@whitespace`},{include:`@comment`},[/%[^ ]+.*$/,`meta.directive`],[/---/,`operators.directivesEnd`],[/\.{3}/,`operators.documentEnd`],[/[-?:](?= )/,`operators`],{include:`@anchor`},{include:`@tagHandle`},{include:`@flowCollections`},{include:`@blockStyle`},[/@numberInteger(?![ \t]*\S+)/,`number`],[/@numberFloat(?![ \t]*\S+)/,`number.float`],[/@numberOctal(?![ \t]*\S+)/,`number.octal`],[/@numberHex(?![ \t]*\S+)/,`number.hex`],[/@numberInfinity(?![ \t]*\S+)/,`number.infinity`],[/@numberNaN(?![ \t]*\S+)/,`number.nan`],[/@numberDate(?![ \t]*\S+)/,`number.date`],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,[`type`,`white`,`operators`,`white`]],{include:`@flowScalars`},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],object:[{include:`@whitespace`},{include:`@comment`},[/\}/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],[/:(?= )/,`operators`],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,`type`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\},]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],array:[{include:`@whitespace`},{include:`@comment`},[/\]/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\],]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],multiString:[[/^( +).+$/,`string`,`@multiStringContinued.$1`]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":`string`,"@default":{token:`@rematch`,next:`@popall`}}}]],whitespace:[[/[ \t\r\n]+/,`white`]],comment:[[/#.*$/,`comment`]],flowCollections:[[/\[/,`@brackets`,`@array`],[/\{/,`@brackets`,`@object`]],flowScalars:[[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/'[^']*'/,`string`],[/"/,`string`,`@doubleQuotedString`]],doubleQuotedString:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],blockStyle:[[/[>|][0-9]*[+-]?$/,`operators`,`@multiString`]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,`number`],[/@numberFloat(?=[ \t]*[,\]\}])/,`number.float`],[/@numberOctal(?=[ \t]*[,\]\}])/,`number.octal`],[/@numberHex(?=[ \t]*[,\]\}])/,`number.hex`],[/@numberInfinity(?=[ \t]*[,\]\}])/,`number.infinity`],[/@numberNaN(?=[ \t]*[,\]\}])/,`number.nan`],[/@numberDate(?=[ \t]*[,\]\}])/,`number.date`]],tagHandle:[[/\![^ ]*/,`tag`]],anchor:[[/[&*][^ ]+/,`namespace`]]}};export{c as conf,l as language};
|
package/dist/web/index.html
CHANGED
|
@@ -12,17 +12,19 @@
|
|
|
12
12
|
var dark =
|
|
13
13
|
stored === "dark" ||
|
|
14
14
|
((!stored || stored === "auto") && window.matchMedia("(prefers-color-scheme: dark)").matches)
|
|
15
|
+
document.documentElement.setAttribute("data-vxe-ui-theme", dark ? "dark" : "light")
|
|
15
16
|
if (dark) document.documentElement.classList.add("jscb-dark")
|
|
16
17
|
})()
|
|
17
18
|
</script>
|
|
18
|
-
<script type="module" crossorigin src="/assets/index-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/preload-helper-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/button-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/api-client-
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
24
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
25
|
-
<link rel="
|
|
19
|
+
<script type="module" crossorigin src="/assets/index-DVDVw-GK.js"></script>
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Dd-HcVz_.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/button-Cdgr9Igy.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/object-utils-I4gWdSnS.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/api-client-D2Y_-4JM.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/runtime-dom.esm-bundler-ei_N7Xjw.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/dialog-CUkPLPNP.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-9yHVMqQ0.js">
|
|
27
|
+
<link rel="stylesheet" crossorigin href="/assets/index-C9N8oWt4.css">
|
|
26
28
|
</head>
|
|
27
29
|
<body>
|
|
28
30
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiex-cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.1
|
|
4
|
+
"version": "0.0.1",
|
|
5
5
|
"description": "JSON Schema → SQLite with AI-powered data extraction",
|
|
6
6
|
"author": "OSpoon <zxin088@gmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -46,6 +46,9 @@
|
|
|
46
46
|
"@ai-sdk/openai-compatible": "^2.0.47",
|
|
47
47
|
"@clack/prompts": "^1.2.0",
|
|
48
48
|
"@hono/node-server": "^1.0.0",
|
|
49
|
+
"@hono/zod-validator": "^0.8.0",
|
|
50
|
+
"@langfuse/otel": "^5.3.0",
|
|
51
|
+
"@opentelemetry/sdk-trace-node": "^2.7.1",
|
|
49
52
|
"ai": "^6.0.182",
|
|
50
53
|
"better-sqlite3": "^11.0.0",
|
|
51
54
|
"citty": "^0.2.2",
|
|
@@ -57,9 +60,19 @@
|
|
|
57
60
|
"drizzle-orm": "^0.38.4",
|
|
58
61
|
"es-toolkit": "^1.46.1",
|
|
59
62
|
"esbuild": "^0.19.12",
|
|
63
|
+
"execa": "^9.6.1",
|
|
60
64
|
"hono": "^4.0.0",
|
|
65
|
+
"jsonfile": "^6.2.1",
|
|
66
|
+
"jsonrepair": "^3.14.0",
|
|
67
|
+
"kysely": "^0.29.2",
|
|
68
|
+
"mime": "^4.1.0",
|
|
69
|
+
"open": "^11.0.0",
|
|
70
|
+
"p-retry": "^7.1.0",
|
|
61
71
|
"picocolors": "^1.1.1",
|
|
72
|
+
"proper-lockfile": "^4.1.2",
|
|
73
|
+
"tinyglobby": "^0.2.16",
|
|
62
74
|
"tsx": "^4.21.0",
|
|
75
|
+
"unpdf": "^1.6.2",
|
|
63
76
|
"update-notifier": "^7.3.1",
|
|
64
77
|
"zod": "^3.23.0"
|
|
65
78
|
},
|
|
@@ -67,7 +80,9 @@
|
|
|
67
80
|
"@antfu/eslint-config": "^8.1.1",
|
|
68
81
|
"@antfu/ni": "^30.1.0",
|
|
69
82
|
"@types/better-sqlite3": "^7.6.0",
|
|
83
|
+
"@types/jsonfile": "^6.1.4",
|
|
70
84
|
"@types/node": "^25.6.0",
|
|
85
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
71
86
|
"@types/update-notifier": "^6.0.8",
|
|
72
87
|
"@vitest/coverage-v8": "^4.1.4",
|
|
73
88
|
"eslint": "^10.2.0",
|
|
@@ -6,6 +6,8 @@ import process from 'node:process'
|
|
|
6
6
|
import { fileURLToPath } from 'node:url'
|
|
7
7
|
import Database from 'better-sqlite3'
|
|
8
8
|
import * as esbuild from 'esbuild'
|
|
9
|
+
import { readFile as readJsonFile, writeFile as writeJsonFile } from 'jsonfile'
|
|
10
|
+
import lockfile from 'proper-lockfile'
|
|
9
11
|
import { sanitizeMigrationName } from './migration-name'
|
|
10
12
|
|
|
11
13
|
const require = createRequire(import.meta.url)
|
|
@@ -64,14 +66,14 @@ async function loadPrevSnapshot(migrationsPath: string): Promise<DrizzleSQLiteSn
|
|
|
64
66
|
const metaPath = path.join(migrationsPath, 'meta', '_journal.json')
|
|
65
67
|
|
|
66
68
|
try {
|
|
67
|
-
const journal =
|
|
69
|
+
const journal = await readJsonFile(metaPath)
|
|
68
70
|
if (!journal.entries?.length)
|
|
69
71
|
return null
|
|
70
72
|
|
|
71
73
|
const latestEntry = journal.entries[journal.entries.length - 1]
|
|
72
74
|
const snapshotPath = path.join(migrationsPath, 'meta', `${latestEntry.tag}_snapshot.json`)
|
|
73
75
|
|
|
74
|
-
return
|
|
76
|
+
return await readJsonFile(snapshotPath)
|
|
75
77
|
}
|
|
76
78
|
catch {
|
|
77
79
|
return null
|
|
@@ -90,7 +92,7 @@ async function saveSnapshot(
|
|
|
90
92
|
let journal: { version: string, dialect: string, entries: Array<{ idx: number, version: string, when: number, tag: string, breakpoints: boolean }> }
|
|
91
93
|
|
|
92
94
|
try {
|
|
93
|
-
journal =
|
|
95
|
+
journal = await readJsonFile(journalPath)
|
|
94
96
|
}
|
|
95
97
|
catch {
|
|
96
98
|
journal = { version: '6', dialect: 'sqlite', entries: [] }
|
|
@@ -101,7 +103,7 @@ async function saveSnapshot(
|
|
|
101
103
|
const tag = `${String(idx).padStart(4, '0')}_${suffix}`
|
|
102
104
|
|
|
103
105
|
const snapshotPath = path.join(metaPath, `${tag}_snapshot.json`)
|
|
104
|
-
await
|
|
106
|
+
await writeJsonFile(snapshotPath, snapshot, { spaces: 2, EOL: '\n' })
|
|
105
107
|
|
|
106
108
|
journal.entries.push({
|
|
107
109
|
idx,
|
|
@@ -110,7 +112,7 @@ async function saveSnapshot(
|
|
|
110
112
|
tag,
|
|
111
113
|
breakpoints: true,
|
|
112
114
|
})
|
|
113
|
-
await
|
|
115
|
+
await writeJsonFile(journalPath, journal, { spaces: 2, EOL: '\n' })
|
|
114
116
|
|
|
115
117
|
return tag
|
|
116
118
|
}
|
|
@@ -147,53 +149,27 @@ function applyMigrationWithTransaction(dbPath: string, sqlStatements: string[]):
|
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
151
|
|
|
150
|
-
// Simple file lock mechanism
|
|
151
152
|
const LOCK_FILE = '.migrate.lock'
|
|
152
153
|
|
|
153
|
-
async function
|
|
154
|
-
const lockPath = path.join(aiexDir, LOCK_FILE)
|
|
154
|
+
async function acquireMigrationLock(aiexDir: string): Promise<() => Promise<void>> {
|
|
155
155
|
await fs.mkdir(aiexDir, { recursive: true })
|
|
156
156
|
|
|
157
|
-
// Try to create lock file atomically using exclusive write
|
|
158
157
|
try {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
return await lockfile.lock(aiexDir, {
|
|
159
|
+
lockfilePath: path.join(aiexDir, LOCK_FILE),
|
|
160
|
+
realpath: false,
|
|
161
|
+
stale: 300000,
|
|
162
|
+
update: 10000,
|
|
163
|
+
retries: 0,
|
|
164
|
+
})
|
|
162
165
|
}
|
|
163
|
-
catch (
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const content = await fs.readFile(lockPath, 'utf-8')
|
|
168
|
-
const [pidStr, timestampStr] = content.split('\n')
|
|
169
|
-
const lockPid = Number.parseInt(pidStr, 10)
|
|
170
|
-
const lockTime = Number.parseInt(timestampStr, 10)
|
|
171
|
-
|
|
172
|
-
// Check if lock is stale (> 5 minutes old) or process is dead
|
|
173
|
-
const lockAge = Date.now() - lockTime
|
|
174
|
-
if (lockAge > 300000) {
|
|
175
|
-
// Lock is stale, remove it and retry
|
|
176
|
-
await fs.unlink(lockPath)
|
|
177
|
-
return acquireLock(aiexDir)
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
throw new Error(`Migration is already running (PID ${lockPid}, started ${Math.round(lockAge / 1000)}s ago). Wait for it to complete or remove ${lockPath} if stale.`)
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
// Can't read lock file, it might be corrupted - remove and retry
|
|
184
|
-
await fs.unlink(lockPath).catch(() => {})
|
|
185
|
-
return acquireLock(aiexDir)
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
throw e
|
|
166
|
+
catch (error) {
|
|
167
|
+
const lockPath = path.join(aiexDir, LOCK_FILE)
|
|
168
|
+
const message = error instanceof Error ? error.message : String(error)
|
|
169
|
+
throw new Error(`Migration is already running or the lock could not be acquired. Wait for it to complete or remove ${lockPath} if stale. ${message}`)
|
|
189
170
|
}
|
|
190
171
|
}
|
|
191
172
|
|
|
192
|
-
async function releaseLock(aiexDir: string): Promise<void> {
|
|
193
|
-
const lockPath = path.join(aiexDir, LOCK_FILE)
|
|
194
|
-
await fs.unlink(lockPath).catch(() => {})
|
|
195
|
-
}
|
|
196
|
-
|
|
197
173
|
async function main(): Promise<void> {
|
|
198
174
|
const args = process.argv.slice(2)
|
|
199
175
|
const schemaPath = args[0]
|
|
@@ -209,11 +185,21 @@ async function main(): Promise<void> {
|
|
|
209
185
|
try {
|
|
210
186
|
// Acquire lock to prevent concurrent migrations
|
|
211
187
|
const aiexDir = path.dirname(path.dirname(migrationsPath))
|
|
212
|
-
await
|
|
188
|
+
const releaseLock = await acquireMigrationLock(aiexDir)
|
|
213
189
|
|
|
214
190
|
try {
|
|
215
191
|
const exports = await loadSchemaExports(schemaPath)
|
|
216
|
-
|
|
192
|
+
|
|
193
|
+
// Check if database file exists — if missing, force full migration
|
|
194
|
+
let dbMissing = false
|
|
195
|
+
try {
|
|
196
|
+
await fs.access(dbPath)
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
dbMissing = true
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const prevSnapshot = dbMissing ? null : await loadPrevSnapshot(migrationsPath)
|
|
217
203
|
const currentSnapshot = await generateSQLiteDrizzleJson(exports, prevSnapshot?.id)
|
|
218
204
|
|
|
219
205
|
const prev = prevSnapshot || EMPTY_SNAPSHOT
|
|
@@ -237,7 +223,7 @@ async function main(): Promise<void> {
|
|
|
237
223
|
console.log(JSON.stringify({ success: true, changes: sqlStatements.length, tag }))
|
|
238
224
|
}
|
|
239
225
|
finally {
|
|
240
|
-
await releaseLock(
|
|
226
|
+
await releaseLock()
|
|
241
227
|
}
|
|
242
228
|
}
|
|
243
229
|
catch (error: unknown) {
|