aitable-workflow-cli 0.1.16 → 0.1.17-beta.1786415522134
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/dist/chunk-IG7PZYXN.js +1 -0
- package/dist/{chunk-FW6MXYUM.js → chunk-KGQEW2IX.js} +23 -23
- package/dist/chunk-W3EUICMH.js +1 -0
- package/dist/cli.js +53 -46
- package/dist/{config-command-O7YLFPAN.js → config-command-JNDJNEFV.js} +1 -1
- package/dist/config-ui-server-BEAEXJ5Z.js +8 -0
- package/dist/{pid-file-HPTFI54H.js → pid-file-3JTHFPFF.js} +1 -1
- package/dist/web/assets/index-2f60MFru.css +1 -0
- package/dist/web/assets/index-UuCwjsUx.js +321 -0
- package/dist/web/index.html +2 -2
- package/package.json +3 -3
- package/dist/chunk-U773UWB7.js +0 -1
- package/dist/config-ui-server-7H5HRTRE.js +0 -9
- package/dist/web/assets/index-Dk4AmuGi.css +0 -1
- package/dist/web/assets/index-lH_EMWyt.js +0 -318
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as r}from"./chunk-EI7MMDWY.js";import{spawnManagedProcess as a}from"aitable-workflow-core";function d(n){let o=i(n);try{let e=a({...o,stdio:"ignore",detached:!0});e.child.once("error",()=>t(n)),e.unref()}catch{t(n)}}r(d,"openExternalUrl");function i(n,o=process.platform){return o==="darwin"?{command:"open",args:[n]}:o==="win32"?{command:"rundll32.exe",args:["url.dll,FileProtocolHandler",n]}:{command:"xdg-open",args:[n]}}r(i,"openInvocation");function t(n){console.log(`\u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00: ${n}`)}r(t,"printFallback");export{d as a};
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import{a as l}from"./chunk-EI7MMDWY.js";import{readdir as ee,readFile as
|
|
1
|
+
import{a as l}from"./chunk-EI7MMDWY.js";import{readdir as ee,readFile as _,mkdir as te}from"fs/promises";import w from"path";import q from"yaml";import{checkbox as U,input as T,password as V,confirm as h,select as A}from"@inquirer/prompts";import{runCheck as $,ingest as ne,detectCodingEngines as oe,engineToAgent as se,ENGINE_TO_AGENT as re,writeBack as O,writeJsonFile as ie,getDefaultAgentEntry as ae}from"aitable-workflow-core";var M={name:"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u5C42",value:null};async function Be(e){let n=e.configPath;e.json||console.log(`
|
|
2
2
|
\u{1F50D} \u6B63\u5728\u6821\u9A8C\u9879\u76EE\u914D\u7F6E: ${n}
|
|
3
|
-
`);let t=await $({configPath:n,workflowId:e.workflowId});if(e.json&&(process.stdout.write(JSON.stringify(
|
|
4
|
-
`),process.exit(t.ok?0:1)),x(t),!e.interactive){if(e.noExit)return t;process.exit(t.ok?0:1)}let r=await Z(n),o=
|
|
3
|
+
`);let t=await $({configPath:n,workflowId:e.workflowId});if(e.json&&(process.stdout.write(JSON.stringify(Pe(t),null,2)+`
|
|
4
|
+
`),process.exit(t.ok?0:1)),x(t),!e.interactive){if(e.noExit)return t;process.exit(t.ok?0:1)}let r=await Z(n),o=ce(t);if(e.offerSkipToBuild&&o.every(s=>v(s))){let s=new Set(o.map(g=>g.key));for(let g of Y(t))s.add(g.key);let i=s.size;if(await h({message:i>0?`\u5FC5\u586B\u914D\u7F6E\u5DF2\u5C31\u7EEA\uFF0C\u5269\u4F59 ${i} \u9879\u5747\u4E3A\u5EFA\u8BAE\u914D\u7F6E\u3002\u662F\u5426\u8DF3\u8FC7\u914D\u7F6E\uFF0C\u76F4\u63A5\u5F00\u59CB\u642D\u5EFA\uFF1F`:"\u5FC5\u586B\u914D\u7F6E\u5DF2\u5C31\u7EEA\u3002\u662F\u5426\u8DF3\u8FC7\u914D\u7F6E\uFF0C\u76F4\u63A5\u5F00\u59CB\u642D\u5EFA\uFF1F",default:!0}))return console.log(`
|
|
5
5
|
\u21B7 \u5DF2\u8DF3\u8FC7\u914D\u7F6E\u73AF\u8282\uFF0C\u7EE7\u7EED setup \u642D\u5EFA\u6D41\u7A0B\uFF08\u5EFA\u8BAE\u9879\u53EF\u968F\u65F6\u7528 config \u547D\u4EE4\u8865\u914D\uFF09\u3002
|
|
6
|
-
`),t}return o.length>0&&(t=await
|
|
7
|
-
\u2500 ${o+1}. \u5DE5\u4F5C\u6D41: ${s.name} (${s.id})`);for(let u of s.items)K(u," ");let i=s.ok?"\u2713":"\u2717";console.log(` ${i} ${s.id} \u914D\u7F6E${s.ok?"\u5B8C\u6574":"\u4E0D\u5B8C\u6574"}`)}else{e.id==="env"&&e.items.length>1&&console.log(` \u5F15\u7528\u4E86 ${e.items.length} \u4E2A\u73AF\u5883\u53D8\u91CF:`);for(let o of e.items)K(o," ")}let n=e.id==="workflow"&&e.workflows?e.workflows.reduce((o,s)=>o+s.items.filter(i=>i.status==="error").length,0):e.items.filter(o=>o.status==="error").length,t=e.ok?"\u2713":"\u2717",r=e.ok?`${e.name}\u5B8C\u6574`:`${e.name}\u4E0D\u5B8C\u6574 \u2014 ${n} \u9879\u5F85\u8865\u9F50`;console.log(` ${t} ${r}`),console.log()}l(
|
|
6
|
+
`),t}return o.length>0&&(t=await ge(o,r,n,e.workflowId,ue(t))),t=await de(t,r,n,e.workflowId),t=await Ae(t,r,n,e.workflowId),await pe(t,n,e.workflowId),t}l(Be,"runConfigCommand");function x(e){for(let i of e.modules)le(i);console.log("\u2501".repeat(56)),console.log();let{passedModules:n,totalModules:t,errors:r,warnings:o,suggestions:s}=e.summary;if(e.ok)console.log("\u2705 \u6821\u9A8C\u901A\u8FC7 \u2014 \u6240\u6709\u914D\u7F6E\u5B8C\u6574\uFF0C\u9879\u76EE\u53EF\u8FD0\u884C\u3002");else{let i=[`${n}/${t} \u6A21\u5757\u901A\u8FC7`];r>0&&i.push(`${r} \u9879\u963B\u65AD`),o>0&&i.push(`${o} \u9879\u8B66\u544A`),console.log(`\u{1F4CA} \u6821\u9A8C\u7ED3\u679C: ${i.join(", ")}`)}s>0&&console.log(`\u{1F4A1} ${s} \u9879\u5EFA\u8BAE\u914D\u7F6E\uFF08\u975E\u5FC5\u987B\uFF0C\u4F46\u63A8\u8350\u586B\u5199\uFF09`),console.log()}l(x,"printReport");function le(e){if(console.log(`\u2501\u2501 ${L(e)} \u2501${"\u2501".repeat(Math.max(0,50-L(e).length))}`),e.workflows&&e.workflows.length>0)for(let o=0;o<e.workflows.length;o++){let s=e.workflows[o];console.log(`
|
|
7
|
+
\u2500 ${o+1}. \u5DE5\u4F5C\u6D41: ${s.name} (${s.id})`);for(let u of s.items)K(u," ");let i=s.ok?"\u2713":"\u2717";console.log(` ${i} ${s.id} \u914D\u7F6E${s.ok?"\u5B8C\u6574":"\u4E0D\u5B8C\u6574"}`)}else{e.id==="env"&&e.items.length>1&&console.log(` \u5F15\u7528\u4E86 ${e.items.length} \u4E2A\u73AF\u5883\u53D8\u91CF:`);for(let o of e.items)K(o," ")}let n=e.id==="workflow"&&e.workflows?e.workflows.reduce((o,s)=>o+s.items.filter(i=>i.status==="error").length,0):e.items.filter(o=>o.status==="error").length,t=e.ok?"\u2713":"\u2717",r=e.ok?`${e.name}\u5B8C\u6574`:`${e.name}\u4E0D\u5B8C\u6574 \u2014 ${n} \u9879\u5F85\u8865\u9F50`;console.log(` ${t} ${r}`),console.log()}l(le,"printModuleReport");function K(e,n){let r={ok:"\u2713",error:"\u2717",warn:"\u26A0",suggestion:"\u{1F4A1}"}[e.status]??"?",o=e.status==="error"?" \u2190 \u5FC5\u987B\u586B\u5199":e.status==="suggestion"?" \u2190 \u5EFA\u8BAE\u914D\u7F6E":"",s=e.message?e.message.startsWith(e.key)?e.message:`${e.key}: ${e.message}`:e.key;console.log(`${n}${r} ${s}${o}`)}l(K,"printCheckItem");function L(e){return{project:"1. \u9879\u76EE\u7EA7\u914D\u7F6E (aitable-workflow.config.yml)",coding_agent:"2. Coding Agent",workflow:"3. \u5DE5\u4F5C\u6D41\u7EA7\u914D\u7F6E",roles:"4. \u89D2\u8272\u914D\u7F6E (roles/)",env:"5. \u73AF\u5883\u53D8\u91CF (.env)"}[e.id]??e.name}l(L,"moduleTitle");function qe(e){return D(e,n=>n.status==="error")}l(qe,"collectErrorItems");function Y(e){return D(e,n=>n.status==="suggestion")}l(Y,"collectSuggestionItems");function ce(e){return D(e,n=>n.status==="error"||v(n)&&n.status!=="ok")}l(ce,"collectPromptItems");function D(e,n){let t=[];for(let r of e.modules)if(r.workflows)for(let o of r.workflows)for(let s of o.items){let i=I(s);n(s)&&i&&t.push({...s,writeTarget:i})}else for(let o of r.items){let s=I(o);n(o)&&s&&t.push({...o,writeTarget:s})}return t}l(D,"collectPromptableItems");function v(e){return I(e)?e.surface?e.surface.allowEmpty:e.status==="warn":!1}l(v,"isOptionalPromptItem");function I(e){return e.writeTarget??e.surface?.writeTarget}l(I,"normalizedWriteTarget");function ue(e){let n=new Map;for(let t of e.modules){let r=t.workflows?t.workflows.flatMap(o=>o.items):t.items;for(let o of r)typeof o.value=="string"&&R(o)&&!n.has(C(o))&&z(o,o.value,n)}return n}l(ue,"collectPromptDefaults");function fe(e,n){if(e.key==="coding_agent.engine"&&typeof e.value=="string")return e.value;if(R(e)){if(typeof e.value=="string"&&e.value.trim())return e.value;let t=n.get(C(e));if(t)return t}if(typeof e.value=="boolean")return e.value?"true":"false";if(e.status==="warn"&&typeof e.value=="string")return e.value}l(fe,"promptDefaultForItem");function z(e,n,t){let r=n.trim();r&&R(e)&&t.set(C(e),r)}l(z,"rememberPromptValue");async function ge(e,n,t,r,o=new Map){if(e.length===0)return $({configPath:t,workflowId:r});let s=e.filter(f=>!v(f)).length,i=e.length-s,u=[`${s} \u9879\u7F3A\u5931\u914D\u7F6E`];i>0&&u.push(`${i} \u9879\u5EFA\u8BAE\u914D\u7F6E`),console.log(`
|
|
8
8
|
\u53D1\u73B0 ${u.join("\uFF0C")}:
|
|
9
|
-
`);let
|
|
9
|
+
`);let g=e.map((f,a)=>({name:`[${v(f)?"\u5EFA\u8BAE":Q(f.writeTarget)}] ${f.key} \u2014 ${f.surface?.description??f.message??""}`,value:a,checked:!0})),c=await U({message:"\u9009\u62E9\u8981\u8865\u9F50\u7684\u9879\uFF08\u2191\u2193 \u79FB\u52A8, Space \u9009\u62E9, Enter \u786E\u8BA4, A \u5168\u9009\uFF09",choices:g});if(c.length===0)return console.log(`
|
|
10
10
|
\u672A\u9009\u62E9\u4EFB\u4F55\u9879\uFF0C\u8DF3\u8FC7\u8865\u9F50\u3002
|
|
11
|
-
`),$({configPath:t,workflowId:r});for(let f=0;f<c.length;f++){let a=e[c[f]];if(await
|
|
11
|
+
`),$({configPath:t,workflowId:r});for(let f=0;f<c.length;f++){let a=e[c[f]];if(await we(a,n)){console.log(`
|
|
12
12
|
\u21B7 ${a.key} \u5DF2\u5728\u9009\u62E9 Coding Agent \u65F6\u81EA\u52A8\u542F\u7528\uFF0C\u8DF3\u8FC7`);continue}console.log(`
|
|
13
|
-
\u2501\u2501 \u914D\u7F6E\u9879 (${f+1}/${c.length}) \u2501${"\u2501".repeat(30)}`),console.log(` \u914D\u7F6E\u9879: ${a.key}`),a.surface?.description&&console.log(` \u8BF4\u660E: ${a.surface?.description}`),a.writeTarget&&console.log(` \u6587\u4EF6: ${b(a.writeTarget)}`),a.writeTarget?.type==="yaml"&&a.writeTarget.valueType==="string[]"&&console.log(" \u63D0\u793A: \u591A\u4E2A\u503C\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u5982 cidAAA==,cidBBB==\uFF09");let p=v(a);p&&console.log(" \u63D0\u793A: \u76F4\u63A5\u56DE\u8F66\u7559\u7A7A\u5373\u53EF\uFF0Csetup \u9636\u6BB5\u4F1A\u81EA\u52A8\u521B\u5EFA\u8868\u683C\u5E76\u56DE\u586B\u5230\u914D\u7F6E\u6587\u4EF6\u3002"),console.log();let k=
|
|
13
|
+
\u2501\u2501 \u914D\u7F6E\u9879 (${f+1}/${c.length}) \u2501${"\u2501".repeat(30)}`),console.log(` \u914D\u7F6E\u9879: ${a.key}`),a.surface?.description&&console.log(` \u8BF4\u660E: ${a.surface?.description}`),a.writeTarget&&console.log(` \u6587\u4EF6: ${b(a.writeTarget)}`),a.writeTarget?.type==="yaml"&&a.writeTarget.valueType==="string[]"&&console.log(" \u63D0\u793A: \u591A\u4E2A\u503C\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u5982 cidAAA==,cidBBB==\uFF09");let p=v(a);p&&console.log(" \u63D0\u793A: \u76F4\u63A5\u56DE\u8F66\u7559\u7A7A\u5373\u53EF\uFF0Csetup \u9636\u6BB5\u4F1A\u81EA\u52A8\u521B\u5EFA\u8868\u683C\u5E76\u56DE\u586B\u5230\u914D\u7F6E\u6587\u4EF6\u3002"),console.log();let k=fe(a,o),y=await N(a,a.writeTarget,k,p);if(p&&y.trim().length===0){console.log(` \u21B7 \u5DF2\u4FDD\u7559\u4E3A\u7A7A\uFF0Csetup \u9636\u6BB5\u5C06\u81EA\u52A8\u521B\u5EFA\u8868\u683C\u5E76\u56DE\u586B\u5230 ${b(a.writeTarget)}`);continue}await O(a.writeTarget,y,n),await J(a,y,n),z(a,y,o),console.log(` \u2713 \u5DF2\u66F4\u65B0 ${b(a.writeTarget)}`)}console.log(`
|
|
14
14
|
\u2705 \u5DF2\u5904\u7406 ${c.length} \u9879\u914D\u7F6E\u3002\u91CD\u65B0\u6821\u9A8C...
|
|
15
|
-
`);let
|
|
15
|
+
`);let d=await $({configPath:t,workflowId:r});return x(d),d}l(ge,"promptFixMissing");async function de(e,n,t,r){let o=Y(e);if(o.length===0)return e;console.log(`
|
|
16
16
|
\u{1F4A1} \u53D1\u73B0 ${o.length} \u9879\u5EFA\u8BAE\u914D\u7F6E:
|
|
17
|
-
`);for(let
|
|
17
|
+
`);for(let g of o)console.log(` - ${g.key}: ${g.surface?.description??g.message??"\u5EFA\u8BAE\u914D\u7F6E"}`);if(console.log(),!await h({message:"\u662F\u5426\u73B0\u5728\u914D\u7F6E\u8FD9\u4E9B\u5EFA\u8BAE\u9879\uFF1F",default:!1}))return e;let i=await me({items:o,configDir:n,originalResult:e,title:"\u586B\u5199\u5EFA\u8BAE\u914D\u7F6E",heading:"\u53EF\u914D\u7F6E\u7684\u5EFA\u8BAE\u9879:",selectMessage:"\u9009\u62E9\u8981\u914D\u7F6E\u7684\u5EFA\u8BAE\u9879\uFF08\u2191\u2193 \u79FB\u52A8, Space \u9009\u62E9, Enter \u786E\u8BA4, A \u5168\u9009\uFF09",selectedMessage:"\u672A\u9009\u62E9\u4EFB\u4F55\u5EFA\u8BAE\u9879\uFF0C\u8DF3\u8FC7\u3002"});if(i===0)return e;console.log(`
|
|
18
18
|
\u2705 \u5DF2\u586B\u5199 ${i} \u9879\u5EFA\u8BAE\u914D\u7F6E\u3002\u91CD\u65B0\u6821\u9A8C...
|
|
19
|
-
`);let u=await $({configPath:t,workflowId:r});return x(u),u}l(
|
|
19
|
+
`);let u=await $({configPath:t,workflowId:r});return x(u),u}l(de,"promptConfigureSuggestions");async function me(e){let{items:n,configDir:t,originalResult:r,title:o,heading:s,selectMessage:i,selectedMessage:u}=e;if(n.length===0)return 0;console.log(`
|
|
20
20
|
${s}
|
|
21
|
-
`);let
|
|
21
|
+
`);let g=new Map;r&&Me(r,g);let c=n.map((f,a)=>({name:`[${Q(f.writeTarget)}] ${f.key} \u2014 ${f.surface?.description??f.message??""}`,value:a,checked:!0})),d=await U({message:i,choices:c});if(d.length===0)return console.log(`
|
|
22
22
|
${u}
|
|
23
|
-
`),0;for(let f=0;f<
|
|
24
|
-
\u2501\u2501 ${o} (${f+1}/${
|
|
25
|
-
`);continue}let
|
|
26
|
-
`);continue}console.log(` \u53EF\u4FEE\u6539 ${
|
|
27
|
-
`);let c=await
|
|
28
|
-
`)),e=await $({configPath:n,workflowId:t})}}l(
|
|
29
|
-
${t} \u6309\u9879\u586B\u5199\uFF1A\u6BCF\u9879\u4E00\u4E2A\u300C${o}\u300D\uFF0C\u4E0B\u8BBE ${n.valueFields.join(" / ")} \u5B57\u6BB5\u3002`),n.example&&console.log(` \u683C\u5F0F\u53C2\u8003: ${n.example}`);let
|
|
30
|
-
\u23F3 \u6B63\u5728\u5BFC\u5165\u6587\u6863\u5230 ${e.collectionName}/ ...`);try{let t=await ne({url:e.source,outputDir:n,preserveStructure:!0,onProgress:l((o,s,i)=>{console.log(` [${o+1}/${s}] ${i}`)},"onProgress")});if(
|
|
23
|
+
`),0;for(let f=0;f<d.length;f++){let a=n[d[f]];console.log(`
|
|
24
|
+
\u2501\u2501 ${o} (${f+1}/${d.length}) \u2501${"\u2501".repeat(30)}`),console.log(` \u914D\u7F6E\u9879: ${a.key}`),a.surface?.description&&console.log(` \u8BF4\u660E: ${a.surface?.description}`),a.writeTarget&&console.log(` \u6587\u4EF6: ${b(a.writeTarget)}`),a.writeTarget?.type==="yaml"&&a.writeTarget.valueType==="string[]"&&console.log(" \u63D0\u793A: \u591A\u4E2A\u503C\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF08\u5982 cidAAA==,cidBBB==\uFF09"),console.log();let p=Se(a,g),k=p?`\uFF08\u5EFA\u8BAE\u503C: ${xe(p)}\uFF0C\u76F4\u63A5\u56DE\u8F66\u4F7F\u7528\uFF09`:"",y=await N(a,a.writeTarget,p,v(a));await O(a.writeTarget,y,t),await J(a,y,t),console.log(` \u2713 \u5DF2\u66F4\u65B0 ${b(a.writeTarget)}`)}return d.length}l(me,"promptFillItems");async function pe(e,n,t){let r=e.summary.suggestions;if(!await h({message:r>0?"\u662F\u5426\u8FD8\u9700\u8981\u4FEE\u6539\u5176\u4ED6\u914D\u7F6E\uFF1F":"\u662F\u5426\u9700\u8981\u4FEE\u6539\u914D\u7F6E\uFF1F",default:!1}))return;let s=await Z(n);for(;;){let i=await A({message:"\u9009\u62E9\u8981\u4FEE\u6539\u7684\u914D\u7F6E\u7C7B\u522B:",choices:[{name:"1. \u9879\u76EE\u7EA7\u914D\u7F6E (agent \u5F15\u64CE / \u8F6E\u8BE2 / SLA)",value:"project"},{name:"2. \u5DE5\u4F5C\u6D41\u7EA7\u914D\u7F6E (tracker / toolkit / event source / handler / \u6B65\u9AA4\u53C2\u6570)",value:"workflow"},{name:"3. \u89D2\u8272\u914D\u7F6E",value:"roles"},{name:"4. \u73AF\u5883\u53D8\u91CF",value:"env"},M]});if(i===null)break;let u=e.modules.find(m=>m.id===i);if(!u){console.log(` \u8BE5\u6A21\u5757\u65E0\u53EF\u4FEE\u6539\u9879
|
|
25
|
+
`);continue}let g=await ke(u,s);if(g.length===0){console.log(` \u8BE5\u6A21\u5757\u65E0\u53EF\u4FEE\u6539\u9879
|
|
26
|
+
`);continue}console.log(` \u53EF\u4FEE\u6539 ${g.length} \u9879\uFF08\u4EC5\u5C55\u793A CLI \u53EF\u5B89\u5168\u5199\u56DE\u7684\u914D\u7F6E\u9879\uFF09
|
|
27
|
+
`);let c=await A({message:"\u9009\u62E9\u8981\u4FEE\u6539\u7684\u914D\u7F6E\u9879:",choices:[...g.map(m=>({name:`${m.label} (\u5F53\u524D: ${Re(m.item)})`,value:m})),M]});if(!c)continue;let d=c.item,f=c.label,a=await N(d,d.writeTarget,je(d),v(d),f);d.writeTarget&&(await O(d.writeTarget,a,s),await J(d,a,s),console.log(` \u2713 \u5DF2\u66F4\u65B0 ${b(d.writeTarget)}
|
|
28
|
+
`)),e=await $({configPath:n,workflowId:t})}}l(pe,"promptBrowseAndEdit");async function N(e,n,t,r,o){let s=o??e.key,i=n?.valueType==="boolean",u=n?.type==="yaml"&&n.valueType==="string[]";if(e.key==="coding_agent.engine")return he(t);if(e.surface?.envJsonSpec)return ye(e,e.surface.envJsonSpec,s,t);if(i){let g=t?t.toLowerCase()==="true":!0;return await h({message:`\u662F\u5426\u542F\u7528 ${s}\uFF1F`,default:g})?"true":"false"}return e.sensitive?await V({message:`\u8BF7\u8F93\u5165 ${s}:`}):await T({message:`\u8BF7\u8F93\u5165 ${s}${u?"\uFF08\u9017\u53F7\u5206\u9694\uFF09":""}${t?`\uFF08\u9ED8\u8BA4: ${t}\uFF09`:""}:`,default:t,validate:l(g=>_e(e,n,g,r),"validate")})}l(N,"promptForValue");async function ye(e,n,t,r){let o=n.keyLabel??"\u540D\u79F0",s=/secret|token|password|api_key/i,i=new Map,u=r??(typeof e.value=="string"?e.value:"");try{let c=JSON.parse(u);if(c&&typeof c=="object"&&!Array.isArray(c))for(let[d,f]of Object.entries(c)){let a={};for(let[m,p]of Object.entries(f??{}))a[m]=p==null?"":String(p);i.set(d,a)}}catch{}console.log(`
|
|
29
|
+
${t} \u6309\u9879\u586B\u5199\uFF1A\u6BCF\u9879\u4E00\u4E2A\u300C${o}\u300D\uFF0C\u4E0B\u8BBE ${n.valueFields.join(" / ")} \u5B57\u6BB5\u3002`),n.example&&console.log(` \u683C\u5F0F\u53C2\u8003: ${n.example}`);let g=l(async c=>{let d=i.get(c)??{},f={...d},a=[...n.valueFields];for(let m of Object.keys(d))a.includes(m)||a.push(m);for(let m of a){let p=s.test(m)?V:T,k=d[m]?`\uFF08\u5F53\u524D: ${s.test(m)?"***":d[m]}\uFF0C\u56DE\u8F66\u4FDD\u7559\uFF09`:"",y=await p({message:` ${c}.${m}${k}:`});(y.trim()||!d[m])&&(f[m]=y.trim())}i.set(c,f)},"promptEntryFields");for(;;){let c=[...i.keys()],d=c.length>0?`\u5DF2\u914D ${c.length} \u9879: ${c.join(", ")}`:"\u5C1A\u672A\u914D\u7F6E\u4EFB\u4F55\u9879",f=await A({message:`${t}\uFF08${d}\uFF09:`,choices:[{name:`\u2795 \u6DFB\u52A0\u4E00\u9879\uFF08\u5148\u586B ${o}\uFF0C\u518D\u9010\u5B57\u6BB5\u586B\u503C\uFF09`,value:"add"},...c.map(a=>({name:`\u270F\uFE0F \u7F16\u8F91 ${a}`,value:`edit:${a}`})),...c.map(a=>({name:`\u{1F5D1} \u5220\u9664 ${a}`,value:`del:${a}`})),{name:"\u2705 \u5B8C\u6210\u5E76\u4FDD\u5B58",value:"done"}]});if(f==="done"){if(c.length===0&&!await h({message:"\u5F53\u524D\u6CA1\u6709\u4EFB\u4F55\u6761\u76EE\uFF0C\u786E\u5B9A\u4FDD\u5B58\u7A7A\u914D\u7F6E\uFF1F",default:!1}))continue;break}if(f==="add"){let a=await T({message:` \u65B0\u589E\u9879\u7684 ${o}:`,validate:l(m=>{let p=m.trim();return p?i.has(p)?`${o} \u5DF2\u5B58\u5728: ${p}`:!0:`${o} \u4E0D\u80FD\u4E3A\u7A7A`},"validate")});await g(a.trim());continue}if(f.startsWith("edit:")){await g(f.slice(5));continue}if(f.startsWith("del:")){i.delete(f.slice(4));continue}}return JSON.stringify(Object.fromEntries(i))}l(ye,"promptJsonMapValue");async function he(e){let n=oe(),t=new Set(n.available.map(s=>String(s.engine))),r=[];for(let s of n.available){let i=s.engine===n.recommendedEngine?" (\u63A8\u8350)":"",u=s.version?` ${s.version}`:"";r.push({name:`${s.engine} \u2014 \u672C\u673A\u53EF\u7528 (${s.cmd}${u})${i}`,value:String(s.engine)})}for(let s of Object.keys(re))t.has(s)||r.push({name:`${s} \u2014 \u672C\u673A\u672A\u68C0\u6D4B\u5230 CLI`,value:s});r.push({name:"llm_only \u2014 \u4E0D\u542F\u7528 coding agent\uFF08\u964D\u7EA7\uFF09",value:"llm_only"}),n.available.length===0&&console.log(" \u672A\u68C0\u6D4B\u5230\u672C\u673A Coding Agent CLI\uFF1B\u53EF\u5148\u9009 llm_only\uFF0C\u5B89\u88C5\u540E\u518D\u5207\u6362\u3002");let o=e&&r.some(s=>s.value===e)?e:n.recommendedEngine?String(n.recommendedEngine):void 0;return await A({message:"\u9009\u62E9 Coding Agent \u5F15\u64CE:",choices:r,...o?{default:o}:{}})}l(he,"promptCodingEngine");async function J(e,n,t){if(e.key!=="coding_agent.engine")return;let r=n.trim();if(!r||r==="llm_only")return;let o=se(r);if(!o)return;let s=w.resolve(t,"coding-agents.config.json"),i=ae(o);for(let[u,g]of Object.entries(i))(typeof g=="string"||typeof g=="boolean")&&await ie(s,["agents",o,u],g);console.log(` \u2713 \u5DF2\u5728 coding-agents.config.json \u5199\u5165 ${o} \u9ED8\u8BA4\u914D\u7F6E`)}l(J,"autoEnableCodingAgent");async function we(e,n){if(e.key!=="coding_agent.config.enabled")return!1;let t=e.writeTarget;if(!t||t.type!=="json")return!1;try{let r=await _(w.resolve(n,t.file),"utf8"),o=JSON.parse(r);for(let s of t.jsonPath){if(o==null||typeof o!="object")return!1;o=o[String(s)]}return o===!0}catch{return!1}}l(we,"isEnableTargetSatisfied");function G(e){let n=[];if(e.workflows)for(let t of e.workflows)for(let r of t.items){let o=I(r);o&&n.push({...r,writeTarget:o})}else for(let t of e.items){let r=I(t);r&&n.push({...t,writeTarget:r})}return n}l(G,"collectEditableItems");async function ke(e,n){if(e.id==="roles")return $e(e,n);if(!e.workflows)return G(e).map(o=>({item:o,label:o.key}));let t=[],r=new Set;for(let o of e.workflows){let s=`${o.name} (${o.id})`;for(let i of o.items){let u=I(i);if(!u)continue;let g=E(u);r.has(g)||(r.add(g),t.push({item:{...i,writeTarget:u},label:`${s} / ${i.key}`}))}}return t}l(ke,"collectEditableChoices");async function $e(e,n){let t=G(e).map(i=>({item:i,label:i.key})),r=new Set(t.map(i=>i.item.writeTarget).filter(Boolean).map(i=>E(i))),o=w.resolve(n,"roles"),s;try{s=await ee(o)}catch{return t}for(let i of s.filter(u=>u.endsWith(".role.yml")).sort()){let u=i.replace(/\.role\.yml$/,""),g=await ve(w.join("roles",i),w.resolve(o,i));for(let c of g){if(!c.writeTarget)continue;let d=E(c.writeTarget);r.has(d)||(r.add(d),t.push({item:c,label:`role.${u} / ${c.key}`}))}}return t}l($e,"collectRoleEditableChoices");async function ve(e,n,t){let r;try{r=q.parse(await _(n,"utf8"))}catch{return[]}if(!j(r))return[];if(t)return t(r);let o=[];return S({items:o,file:e,keyPrefix:"",yamlPath:[],value:r}),o}l(ve,"collectYamlEditableItems");function S(e){let{items:n,file:t,keyPrefix:r,yamlPath:o,value:s}=e;if(s!=null){if(typeof s=="string"){n.push({key:r,status:"ok",value:s,writeTarget:{type:"yaml",file:t,yamlPath:o}});return}if(Array.isArray(s)){s.every(i=>typeof i=="string")&&n.push({key:r,status:"ok",value:s,writeTarget:{type:"yaml",file:t,yamlPath:o,valueType:"string[]"}}),s.forEach((i,u)=>{j(i)&&S({items:n,file:t,keyPrefix:`${r}.${u}`,yamlPath:[...o,u],value:i})});return}if(j(s))for(let[i,u]of Object.entries(s))S({items:n,file:t,keyPrefix:Ce(r,i),yamlPath:[...o,i],value:u})}}l(S,"collectEditableLeaves");function Ce(e,n){return e?`${e}.${n}`:n}l(Ce,"appendKey");function j(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}l(j,"isRecord");function E(e){return e.type==="env"?`env:${e.file}:${e.envKey}`:e.type==="yamlAll"?`yamlAll:${e.targets.map(n=>`${n.file}:${n.yamlPath.join(".")}`).join(",")}`:e.type==="json"?`json:${e.file}:${e.jsonPath.join(".")}`:e.type==="textFile"?`textFile:${e.file}`:`yaml:${e.file}:${e.yamlPath.join(".")}`}l(E,"writeTargetKey");function Ue(e){try{return new URL(e),!0}catch{return!1}}l(Ue,"isUrl");function be(e){return"totalDocs"in e}l(be,"isIngestReport");async function B(e){let n=w.resolve(e.configDir,e.collectionName);await te(n,{recursive:!0}),console.log(`
|
|
30
|
+
\u23F3 \u6B63\u5728\u5BFC\u5165\u6587\u6863\u5230 ${e.collectionName}/ ...`);try{let t=await ne({url:e.source,outputDir:n,preserveStructure:!0,onProgress:l((o,s,i)=>{console.log(` [${o+1}/${s}] ${i}`)},"onProgress")});if(be(t)){let o=[`${t.successCount} \u65B0\u589E/\u66F4\u65B0`];t.skippedCount>0&&o.push(`${t.skippedCount} \u8DF3\u8FC7(\u65E0\u53D8\u5316)`),t.skippedUnsupported>0&&o.push(`${t.skippedUnsupported} \u8DF3\u8FC7(\u4E0D\u652F\u6301\u7684\u683C\u5F0F)`),t.failureCount>0&&o.push(`${t.failureCount} \u5931\u8D25`);let s=`\u5BFC\u5165\u5B8C\u6210: ${o.join(", ")} (\u5171 ${t.totalDocs} \u7BC7)`;console.log(`\u2713 ${s}`);let i=t.successCount>0||t.skippedCount>0;return{success:i,message:i?s:`\u5BFC\u5165\u5931\u8D25: \u5168\u90E8 ${t.totalDocs} \u7BC7\u6587\u6863\u5904\u7406\u5931\u8D25`}}if(t.success){let s=`${t.action==="skipped"?"\u8DF3\u8FC7(\u65E0\u53D8\u5316)":t.action==="updated"?"\u5DF2\u66F4\u65B0":"\u5BFC\u5165\u6210\u529F"}: ${t.title??t.relativePath}`;return console.log(`\u2713 ${s}`),{success:!0,message:s}}let r=`\u5BFC\u5165\u5931\u8D25: ${t.error}`;return console.error(`\u2717 ${r}`),{success:!1,message:r}}catch(t){let r=`\u5BFC\u5165\u5931\u8D25: ${t instanceof Error?t.message:String(t)}`;return console.error(`\u2717 ${r}`),{success:!1,message:r}}}l(B,"ingestToCollection");function H(e){let n=[];for(let t of e)typeof t=="string"?n.push(t):typeof t=="object"&&t!==null&&"collection"in t&&n.push(String(t.collection));return n}l(H,"extractCollectionNames");function Ie(e){return`wiki/${e}`}l(Ie,"roleCollectionName");async function Te(e,n){let t=Ie(n);try{let o=q.parse(await _(e,"utf8"))?.knowledge_scope,s=j(o)?o.kb_collections:void 0;if(Array.isArray(s)){let i=H(s);if(i.length>0)return i.includes(t)?t:i[0]}}catch{}return t}l(Te,"resolveRoleKbCollection");async function Ae(e,n,t,r){let o=e.modules.find(c=>c.id==="roles");if(!o)return e;let s=".knowledge_scope.kb_collections",i=o.items.filter(c=>c.status==="suggestion"&&c.key.endsWith(s)),u=o.items.filter(c=>c.status==="ok"&&c.key.endsWith(s));if(i.length===0&&u.length===0)return e;let g=!1;for(let c of i){let d=c.key.replace(s,"").replace(/^role\./,""),f=`${d}.role.yml`;if(console.log(`
|
|
31
31
|
\u2501\u2501 \u89D2\u8272\u77E5\u8BC6\u5E93\u914D\u7F6E \u2501${"\u2501".repeat(38)}`),console.log(`
|
|
32
32
|
\xB7 ${f} \u2014 \u672A\u914D\u7F6E knowledge_scope.kb_collections\uFF08\u6DFB\u52A0\u53EA\u5F80\u76EE\u5F55\u5199\u6587\u6863\uFF0C\u4E0D\u6539\u52A8\u8BE5\u914D\u7F6E\uFF09
|
|
33
|
-
`),!await h({message:`\u662F\u5426\u8981\u4E3A ${
|
|
33
|
+
`),!await h({message:`\u662F\u5426\u8981\u4E3A ${d} \u6DFB\u52A0\u77E5\u8BC6\u5E93\uFF1F`,default:!1}))continue;let m=await Te(w.resolve(n,"roles",f),d);for(;;){let p=await T({message:"\u8BF7\u8F93\u5165\u6587\u6863\u6765\u6E90\uFF08\u672C\u5730\u8DEF\u5F84 \u6216 \u5728\u7EBF\u6587\u6863\u94FE\u63A5\uFF09:",validate:l(W=>W.trim().length>0||"\u4E0D\u80FD\u4E3A\u7A7A","validate")});if((await B({source:p.trim(),collectionName:m,configDir:n})).success&&(console.log(` (kb_collections \u4E0D\u53D8\uFF0C\u6587\u6863\u5DF2\u5199\u5165\u76EE\u5F55 ${m}/)`),g=!0),!await h({message:`\u662F\u5426\u7EE7\u7EED\u6DFB\u52A0\u66F4\u591A\u6587\u6863\u5230 ${d} \u7684\u77E5\u8BC6\u5E93\uFF1F`,default:!1}))break}}for(let c of u){let d=c.key.replace(s,"").replace(/^role\./,""),f=`${d}.role.yml`,a=Array.isArray(c.value)?H(c.value):[];if(console.log(`
|
|
34
34
|
\u2501\u2501 \u89D2\u8272\u77E5\u8BC6\u5E93\u914D\u7F6E \u2501${"\u2501".repeat(38)}`),console.log(`
|
|
35
35
|
\xB7 ${f} \u2014 \u5DF2\u6709 ${a.length} \u4E2A\u77E5\u8BC6\u5E93\u96C6\u5408: ${a.join(", ")}\uFF08\u4E0D\u6539\u52A8\u5176\u6587\u4EF6\u8DEF\u5F84\uFF0C\u53EA\u8FFD\u52A0\u6587\u6863\uFF09
|
|
36
|
-
`),!!await h({message:`\u662F\u5426\u8981\u4E3A ${
|
|
36
|
+
`),!!await h({message:`\u662F\u5426\u8981\u4E3A ${d} \u8FFD\u52A0\u66F4\u591A\u6587\u6863\uFF1F`,default:!1}))for(;;){let p;if(a.length===1)p=a[0];else{let P=await A({message:"\u9009\u62E9\u8981\u6DFB\u52A0\u6587\u6863\u7684\u77E5\u8BC6\u5E93\u96C6\u5408:",choices:[...a.map(F=>({name:F,value:F})),M]});if(P===null)break;p=P}let k=await T({message:"\u8BF7\u8F93\u5165\u6587\u6863\u6765\u6E90\uFF08\u672C\u5730\u8DEF\u5F84 \u6216 \u5728\u7EBF\u6587\u6863\u94FE\u63A5\uFF09:",validate:l(P=>P.trim().length>0||"\u4E0D\u80FD\u4E3A\u7A7A","validate")});if((await B({source:k.trim(),collectionName:p,configDir:n})).success&&(console.log(" (kb_collections \u4E0D\u53D8\uFF0C\u6587\u6863\u5DF2\u5199\u5165\u65E2\u6709\u96C6\u5408\u76EE\u5F55)"),g=!0),!await h({message:"\u662F\u5426\u7EE7\u7EED\u6DFB\u52A0\u66F4\u591A\u6587\u6863\uFF1F",default:!1}))break}}if(g){console.log(`
|
|
37
37
|
\u91CD\u65B0\u6821\u9A8C...
|
|
38
|
-
`);let c=await $({configPath:t,workflowId:r});return x(c),c}return e}l(
|
|
38
|
+
`);let c=await $({configPath:t,workflowId:r});return x(c),c}return e}l(Ae,"promptKbSetup");function Q(e){return e.type==="env"?"\u73AF\u5883\u53D8\u91CF":e.type==="json"?"Agent \u914D\u7F6E":e.type==="yamlAll"?"\u9879\u76EE/\u5DE5\u4F5C\u6D41":e.type==="textFile"?"\u6587\u4EF6\u5185\u5BB9":e.file.includes("workflow")?"\u5DE5\u4F5C\u6D41":"\u9879\u76EE"}l(Q,"targetLabel");function b(e){return e.type==="env"?`.env \u2192 ${e.envKey}`:e.type==="json"?`${e.file} \u2192 ${e.jsonPath.join(".")}`:e.type==="yamlAll"?e.targets.map(n=>`${n.file} \u2192 ${n.yamlPath.join(".")}`).join(", "):e.type==="textFile"?`${e.file}\uFF08\u6574\u6587\u4EF6\u5185\u5BB9\uFF09`:`${e.file} \u2192 ${e.yamlPath.join(".")}`}l(b,"writeTargetDesc");function Re(e){if(e.surface?.envJsonSpec){if(typeof e.value!="string"||!e.value.trim())return"\u672A\u8BBE\u7F6E";try{let n=JSON.parse(e.value);if(!n||typeof n!="object"||Array.isArray(n))return"\u914D\u7F6E\u683C\u5F0F\u65E0\u6548";let t=Object.keys(n);return t.length>0?`\u5DF2\u914D ${t.length} \u9879: ${t.join(", ")}`:"\u672A\u8BBE\u7F6E"}catch{return"\u914D\u7F6E\u683C\u5F0F\u65E0\u6548"}}return e.sensitive?"***":e.value===void 0||e.value===null?"\u672A\u8BBE\u7F6E":Array.isArray(e.value)?e.value.join(","):String(e.value)}l(Re,"formatValue");function Pe(e){let n=JSON.parse(JSON.stringify(e));for(let t of n.modules){let r=t.workflows?t.workflows.flatMap(o=>o.items):t.items;for(let o of r){if(o.value===void 0)continue;if(o.sensitive){o.value="***";continue}let s=o.surface?.envJsonSpec;if(!(!s||!s.valueFields.some(i=>/secret|token|password|api_key/i.test(i)))){if(typeof o.value!="string"){o.value="***";continue}try{let i=JSON.parse(o.value);for(let u of Object.values(i))if(!(!u||typeof u!="object"||Array.isArray(u)))for(let g of Object.keys(u))/secret|token|password|api_key/i.test(g)&&(u[g]="***");o.value=JSON.stringify(i)}catch{o.value="***"}}}}return n}l(Pe,"redactConfigResultForJson");function je(e){if(typeof e.value=="string")return e.value;if(typeof e.value=="boolean")return e.value?"true":"false";if(Array.isArray(e.value)){let n=e.value.filter(t=>typeof t=="string");if(n.length>0)return n.join(",")}}l(je,"formatInputDefault");function C(e){let n=e.key,t=n.lastIndexOf("."),r=t>=0?n.slice(t+1):n;return r==="base_id"||r==="baseId"?"baseId":r==="table_id"||r==="tableId"?"tableId":r}l(C,"getSemanticKey");function xe(e){return e.length<=40?e:e.slice(0,37)+"..."}l(xe,"formatDefaultForDisplay");function Me(e,n){for(let t of e.modules){let r=t.workflows?t.workflows.flatMap(o=>o.items):t.items;for(let o of r){if(o.status==="error"||o.sensitive||o.value===void 0||o.value===null)continue;let s=C(o);if(n.has(s)||!R(o))continue;let i=Ee(o.value);i&&X(o,i)&&n.set(s,i)}}}l(Me,"seedSessionDefaults");function Se(e,n){if(!R(e))return;let t=n.get(C(e));if(!(!t||!X(e,t)))return t}l(Se,"getSuggestedDefault");function R(e){return C(e)==="baseId"}l(R,"canOfferDefaultFor");function X(e,n){let t=n.trim();return t?C(e)==="baseId"?t.length>=8:!0:!1}l(X,"isPlausibleDefault");function Ee(e){if(typeof e=="string")return e;if(typeof e=="boolean")return e?"true":"false";if(Array.isArray(e)){let n=e.filter(t=>typeof t=="string");if(n.length>0)return n.join(",")}}l(Ee,"stringifyDefaultValue");function _e(e,n,t,r){let o=t.trim();if(!r&&o.length===0)return"\u4E0D\u80FD\u4E3A\u7A7A";if(e.key==="coding_agent.engine"){let s=new Set(["claude","codex","qoder","codebuddy","opencode","qwen","deepseek","trae","qwenwork","llm_only"]);return s.has(o)||`\u8BF7\u8F93\u5165\u6709\u6548 engine: ${[...s].join(", ")}`}if(n?.valueType==="boolean"){let s=o.toLowerCase();return s==="true"||s==="false"?!0:"\u8BF7\u8F93\u5165 true \u6216 false"}return!0}l(_e,"validatePromptValue");async function Z(e){let{resolveConfigPath:n}=await import("aitable-workflow-core"),t=await n(e);return w.dirname(t)}l(Z,"resolveConfigDir");export{Be as a,qe as b,Y as c,ce as d,v as e,ue as f,fe as g,z as h,G as i,ke as j,Ue as k,B as l,Ie as m,Te as n,Pe as o,C as p,R as q};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as i}from"./chunk-EI7MMDWY.js";import{readFile as a,writeFile as c,mkdir as l,rm as u}from"fs/promises";import o from"path";import m from"os";import{assertPortableId as p}from"aitable-workflow-core";var f=o.join(m.homedir(),".aitable-workflow","daemons");function s(r){return o.join(f,p(r,{label:"agentId"}))}i(s,"daemonDir");function n(r){return o.join(s(r),"daemon.pid")}i(n,"pidFilePath");function d(r){try{return process.kill(r,0),!0}catch{return!1}}i(d,"isProcessAlive");async function w(r){try{let e=await a(n(r),"utf8"),t=parseInt(e.trim(),10);return Number.isFinite(t)&&t>0?t:null}catch{return null}}i(w,"readPidFile");async function h(r){let e=s(r);await l(e,{recursive:!0});let t=await w(r);if(t!==null&&d(t))throw new Error(`Agent "${r}" \u5DF2\u5728\u8FD0\u884C (PID: ${t})\u3002\u5148\u6267\u884C \`aitable-workflow stop --agent ${r}\` \u518D\u542F\u52A8\u3002`);await c(n(r),String(process.pid),"utf8")}i(h,"writePidFile");async function F(r){try{await u(n(r),{force:!0})}catch{}}i(F,"removePidFile");export{f as a,s as b,n as c,d,w as e,h as f,F as g};
|