@kafca/agentdock 0.1.22 → 0.1.23
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 +3 -0
- package/dist/renderer/assets/{Badge-B_rgzxYO.js → Badge-C2K5apfV.js} +1 -1
- package/dist/renderer/assets/{Chat-CYtp6m7T.js → Chat-DI2YeVKb.js} +1 -1
- package/dist/renderer/assets/{ChatMarkdown-DOBMwa9d.js → ChatMarkdown-DMAr15Oi.js} +1 -1
- package/dist/renderer/assets/{Config-DppMSPHF.js → Config-7rP3EuUf.js} +1 -1
- package/dist/renderer/assets/{CronList-BDtB1SuA.js → CronList-81QslYE8.js} +1 -1
- package/dist/renderer/assets/{Dashboard-iFlRnd7Y.js → Dashboard-Db2T7rSZ.js} +2 -2
- package/dist/renderer/assets/{EmptyState-bKDt_T88.js → EmptyState-BBJ3cTvB.js} +1 -1
- package/dist/renderer/assets/{KnowledgeDetail-CKPhKPIg.js → KnowledgeDetail-Dz_6flG3.js} +2 -2
- package/dist/renderer/assets/{KnowledgeHome-CFeJre6i.js → KnowledgeHome-DIh046mN.js} +3 -3
- package/dist/renderer/assets/{Logs-CyxSVOFK.js → Logs-BXBtHJLf.js} +1 -1
- package/dist/renderer/assets/{Modal-CxPnk1Ey.js → Modal-BB2Av_Xs.js} +1 -1
- package/dist/renderer/assets/{Page-kU9vubzj.js → Page-DPSdvMgU.js} +1 -1
- package/dist/renderer/assets/{ProjectDetail-D9FY9NWZ.js → ProjectDetail-C6EWGvGg.js} +1 -1
- package/dist/renderer/assets/{ProjectList-DIwr2TXg.js → ProjectList-BBo5ygnS.js} +1 -1
- package/dist/renderer/assets/{Select-BaWoz5Dn.js → Select-CNX-Tx_O.js} +1 -1
- package/dist/renderer/assets/{SessionChat-Cm9CW8Zx.js → SessionChat-BIn46jqZ.js} +1 -1
- package/dist/renderer/assets/{SessionList-UPnWlXXO.js → SessionList-CZt6f1Rd.js} +1 -1
- package/dist/renderer/assets/{ThreadChat-YvVsACW3.js → ThreadChat-BotD0gKQ.js} +1 -1
- package/dist/renderer/assets/Workspace-C_4tdpjX.js +14 -0
- package/dist/renderer/assets/{arrow-left-BmZAVGV7.js → arrow-left-cHr5wkpq.js} +1 -1
- package/dist/renderer/assets/{book-open-DZ3GXFgI.js → book-open-4nx5C8T-.js} +1 -1
- package/dist/renderer/assets/{check-CeVSvDCv.js → check-exTS-R-x.js} +1 -1
- package/dist/renderer/assets/{chevron-down-yryuMoQ-.js → chevron-down-DSvxXQa0.js} +1 -1
- package/dist/renderer/assets/{circle-eASsFISH.js → circle-DyvEovdw.js} +1 -1
- package/dist/renderer/assets/desktop-B-KVT10D.js +1 -0
- package/dist/renderer/assets/{desktop-Che1cbpE.js → desktop-CVibRyAw.js} +3 -3
- package/dist/renderer/assets/{funnel-pwAe2Ixp.js → funnel-DA9qVdTy.js} +1 -1
- package/dist/renderer/assets/{heart-B2Sp-bCm.js → heart-DuEV0ZRJ.js} +1 -1
- package/dist/renderer/assets/{index-Cse2Br64.js → index-BgflqkCN.js} +3 -3
- package/dist/renderer/assets/{index-BC3MWbS1.js → index-Biz-aexG.js} +39 -39
- package/dist/renderer/assets/{pencil-BfEunUF3.js → pencil-DBDxeNmO.js} +1 -1
- package/dist/renderer/assets/{play-Dcs9Lj_Z.js → play-IzlP83_7.js} +1 -1
- package/dist/renderer/assets/{plug-B_YschQe.js → plug-CuT-qFnW.js} +1 -1
- package/dist/renderer/assets/{plus-Pqo-cXHQ.js → plus-DEqgkn63.js} +1 -1
- package/dist/renderer/assets/projects-DDtDN1rc.js +1 -0
- package/dist/renderer/assets/{save-BKM5yi1A.js → save-D4sRo07y.js} +1 -1
- package/dist/renderer/assets/{search-BU42h10M.js → search-DbPZLuV8.js} +1 -1
- package/dist/renderer/assets/{server-DA5t3Rtr.js → server-D1jUQmwN.js} +1 -1
- package/dist/renderer/assets/{session-utils-Cr9VhNSq.js → session-utils-Aife8ep2.js} +1 -1
- package/dist/renderer/assets/{sessions-bvV8ZMfX.js → sessions-DaH3H7gC.js} +1 -1
- package/dist/renderer/assets/{shield-check-BeOJKur_.js → shield-check-BGwUFWNr.js} +1 -1
- package/dist/renderer/assets/{trash-2-CQ7HKO3q.js → trash-2-CIFBioBa.js} +1 -1
- package/dist/renderer/assets/{user-CtFjY9SV.js → user-CnKcvHdo.js} +1 -1
- package/dist/renderer/assets/{wifi-off-Ci5m0ysf.js → wifi-off-ClO53WGa.js} +1 -1
- package/dist/renderer/index.html +1 -1
- package/dist-electron/electron/local-core-refactor.test.js +505 -0
- package/dist-electron/electron/plugin-kernel.test.js +74 -14
- package/dist-electron/packages/core-sdk/src/index.js +40 -20
- package/dist-electron/services/local-ai-core/src/acp/local-core-acp-turn-coordinator.js +5 -1
- package/dist-electron/services/local-ai-core/src/acp/workspace-acp-permissions.js +55 -3
- package/dist-electron/services/local-ai-core/src/channel/lark/cards.js +210 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/config.js +54 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/local-core-lark-gateway.js +212 -471
- package/dist-electron/services/local-ai-core/src/channel/lark/registration.js +50 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/runtime-state.js +191 -0
- package/dist-electron/services/local-ai-core/src/channel/lark/types.js +2 -0
- package/dist-electron/services/local-ai-core/src/channel/shared/plugin.js +31 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/config.js +125 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/local-core-weixin-gateway.js +141 -324
- package/dist-electron/services/local-ai-core/src/channel/weixin/transport.js +169 -0
- package/dist-electron/services/local-ai-core/src/channel/weixin/types.js +2 -0
- package/dist-electron/services/local-ai-core/src/kernel/bootstrap.js +5 -0
- package/dist-electron/services/local-ai-core/src/plugins/builtin/channel-lark-plugin.js +18 -39
- package/dist-electron/services/local-ai-core/src/plugins/builtin/channel-weixin-plugin.js +18 -39
- package/dist-electron/services/local-ai-core/src/runtime/local-core-controller.js +55 -44
- package/dist-electron/services/local-ai-core/src/runtime/server.js +10 -8
- package/dist-electron/shared/desktop.js +10 -0
- package/package.json +1 -1
- package/dist/renderer/assets/Workspace-ST7V8u6T.js +0 -14
- package/dist/renderer/assets/desktop-DkrP_s-b.js +0 -1
- package/dist/renderer/assets/projects-BCj0k_Gy.js +0 -1
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import{c as rt,y as j,t as st,r as A,j as n,B as I,I as T,S as nt}from"./index-BC3MWbS1.js";import{M as Oe}from"./Modal-CxPnk1Ey.js";import{S as ae}from"./Select-BaWoz5Dn.js";import{E as he}from"./EmptyState-bKDt_T88.js";import{P as at,S as Te,a as ot}from"./Page-kU9vubzj.js";import{c as it,d as Le,e as lt,f as ct}from"./desktop-DkrP_s-b.js";import{D as me,c as $e,g as fe,d as dt,e as ut}from"./desktop-Che1cbpE.js";import{T as ge}from"./trash-2-CQ7HKO3q.js";import{P as ee}from"./plus-Pqo-cXHQ.js";import{S as ze}from"./save-BKM5yi1A.js";import"./index-Cse2Br64.js";import"./chevron-down-yryuMoQ-.js";import"./check-CeVSvDCv.js";/**
|
|
2
|
-
* @license lucide-react v0.487.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const ht=[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]],mt=rt("qr-code",ht);var ft=Object.defineProperty,ie=Object.getOwnPropertySymbols,He=Object.prototype.hasOwnProperty,Ye=Object.prototype.propertyIsEnumerable,Fe=(c,d,o)=>d in c?ft(c,d,{enumerable:!0,configurable:!0,writable:!0,value:o}):c[d]=o,xe=(c,d)=>{for(var o in d||(d={}))He.call(d,o)&&Fe(c,o,d[o]);if(ie)for(var o of ie(d))Ye.call(d,o)&&Fe(c,o,d[o]);return c},ve=(c,d)=>{var o={};for(var h in c)He.call(c,h)&&d.indexOf(h)<0&&(o[h]=c[h]);if(c!=null&&ie)for(var h of ie(c))d.indexOf(h)<0&&Ye.call(c,h)&&(o[h]=c[h]);return o};/**
|
|
7
|
-
* @license QR Code generator library (TypeScript)
|
|
8
|
-
* Copyright (c) Project Nayuki.
|
|
9
|
-
* SPDX-License-Identifier: MIT
|
|
10
|
-
*/var W;(c=>{const d=class C{constructor(e,r,t,a){if(this.version=e,this.errorCorrectionLevel=r,this.modules=[],this.isFunction=[],e<C.MIN_VERSION||e>C.MAX_VERSION)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=e*4+17;let l=[];for(let m=0;m<this.size;m++)l.push(!1);for(let m=0;m<this.size;m++)this.modules.push(l.slice()),this.isFunction.push(l.slice());this.drawFunctionPatterns();const u=this.addEccAndInterleave(t);if(this.drawCodewords(u),a==-1){let m=1e9;for(let g=0;g<8;g++){this.applyMask(g),this.drawFormatBits(g);const p=this.getPenaltyScore();p<m&&(a=g,m=p),this.applyMask(g)}}x(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(e,r){const t=c.QrSegment.makeSegments(e);return C.encodeSegments(t,r)}static encodeBinary(e,r){const t=c.QrSegment.makeBytes(e);return C.encodeSegments([t],r)}static encodeSegments(e,r,t=1,a=40,l=-1,u=!0){if(!(C.MIN_VERSION<=t&&t<=a&&a<=C.MAX_VERSION)||l<-1||l>7)throw new RangeError("Invalid value");let m,g;for(m=t;;m++){const w=C.getNumDataCodewords(m,r)*8,N=M.getTotalBits(e,m);if(N<=w){g=N;break}if(m>=a)throw new RangeError("Data too long")}for(const w of[C.Ecc.MEDIUM,C.Ecc.QUARTILE,C.Ecc.HIGH])u&&g<=C.getNumDataCodewords(m,w)*8&&(r=w);let p=[];for(const w of e){o(w.mode.modeBits,4,p),o(w.numChars,w.mode.numCharCountBits(m),p);for(const N of w.getData())p.push(N)}x(p.length==g);const R=C.getNumDataCodewords(m,r)*8;x(p.length<=R),o(0,Math.min(4,R-p.length),p),o(0,(8-p.length%8)%8,p),x(p.length%8==0);for(let w=236;p.length<R;w^=253)o(w,8,p);let k=[];for(;k.length*8<p.length;)k.push(0);return p.forEach((w,N)=>k[N>>>3]|=w<<7-(N&7)),new C(m,r,k,l)}getModule(e,r){return 0<=e&&e<this.size&&0<=r&&r<this.size&&this.modules[r][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let t=0;t<this.size;t++)this.setFunctionModule(6,t,t%2==0),this.setFunctionModule(t,6,t%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const e=this.getAlignmentPatternPositions(),r=e.length;for(let t=0;t<r;t++)for(let a=0;a<r;a++)t==0&&a==0||t==0&&a==r-1||t==r-1&&a==0||this.drawAlignmentPattern(e[t],e[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){const r=this.errorCorrectionLevel.formatBits<<3|e;let t=r;for(let l=0;l<10;l++)t=t<<1^(t>>>9)*1335;const a=(r<<10|t)^21522;x(a>>>15==0);for(let l=0;l<=5;l++)this.setFunctionModule(8,l,h(a,l));this.setFunctionModule(8,7,h(a,6)),this.setFunctionModule(8,8,h(a,7)),this.setFunctionModule(7,8,h(a,8));for(let l=9;l<15;l++)this.setFunctionModule(14-l,8,h(a,l));for(let l=0;l<8;l++)this.setFunctionModule(this.size-1-l,8,h(a,l));for(let l=8;l<15;l++)this.setFunctionModule(8,this.size-15+l,h(a,l));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;const r=this.version<<12|e;x(r>>>18==0);for(let t=0;t<18;t++){const a=h(r,t),l=this.size-11+t%3,u=Math.floor(t/3);this.setFunctionModule(l,u,a),this.setFunctionModule(u,l,a)}}drawFinderPattern(e,r){for(let t=-4;t<=4;t++)for(let a=-4;a<=4;a++){const l=Math.max(Math.abs(a),Math.abs(t)),u=e+a,m=r+t;0<=u&&u<this.size&&0<=m&&m<this.size&&this.setFunctionModule(u,m,l!=2&&l!=4)}}drawAlignmentPattern(e,r){for(let t=-2;t<=2;t++)for(let a=-2;a<=2;a++)this.setFunctionModule(e+a,r+t,Math.max(Math.abs(a),Math.abs(t))!=1)}setFunctionModule(e,r,t){this.modules[r][e]=t,this.isFunction[r][e]=!0}addEccAndInterleave(e){const r=this.version,t=this.errorCorrectionLevel;if(e.length!=C.getNumDataCodewords(r,t))throw new RangeError("Invalid argument");const a=C.NUM_ERROR_CORRECTION_BLOCKS[t.ordinal][r],l=C.ECC_CODEWORDS_PER_BLOCK[t.ordinal][r],u=Math.floor(C.getNumRawDataModules(r)/8),m=a-u%a,g=Math.floor(u/a);let p=[];const R=C.reedSolomonComputeDivisor(l);for(let w=0,N=0;w<a;w++){let _=e.slice(N,N+g-l+(w<m?0:1));N+=_.length;const $=C.reedSolomonComputeRemainder(_,R);w<m&&_.push(0),p.push(_.concat($))}let k=[];for(let w=0;w<p[0].length;w++)p.forEach((N,_)=>{(w!=g-l||_>=m)&&k.push(N[w])});return x(k.length==u),k}drawCodewords(e){if(e.length!=Math.floor(C.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");let r=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let a=0;a<this.size;a++)for(let l=0;l<2;l++){const u=t-l,g=(t+1&2)==0?this.size-1-a:a;!this.isFunction[g][u]&&r<e.length*8&&(this.modules[g][u]=h(e[r>>>3],7-(r&7)),r++)}}x(r==e.length*8)}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let r=0;r<this.size;r++)for(let t=0;t<this.size;t++){let a;switch(e){case 0:a=(t+r)%2==0;break;case 1:a=r%2==0;break;case 2:a=t%3==0;break;case 3:a=(t+r)%3==0;break;case 4:a=(Math.floor(t/3)+Math.floor(r/2))%2==0;break;case 5:a=t*r%2+t*r%3==0;break;case 6:a=(t*r%2+t*r%3)%2==0;break;case 7:a=((t+r)%2+t*r%3)%2==0;break;default:throw new Error("Unreachable")}!this.isFunction[r][t]&&a&&(this.modules[r][t]=!this.modules[r][t])}}getPenaltyScore(){let e=0;for(let l=0;l<this.size;l++){let u=!1,m=0,g=[0,0,0,0,0,0,0];for(let p=0;p<this.size;p++)this.modules[l][p]==u?(m++,m==5?e+=C.PENALTY_N1:m>5&&e++):(this.finderPenaltyAddHistory(m,g),u||(e+=this.finderPenaltyCountPatterns(g)*C.PENALTY_N3),u=this.modules[l][p],m=1);e+=this.finderPenaltyTerminateAndCount(u,m,g)*C.PENALTY_N3}for(let l=0;l<this.size;l++){let u=!1,m=0,g=[0,0,0,0,0,0,0];for(let p=0;p<this.size;p++)this.modules[p][l]==u?(m++,m==5?e+=C.PENALTY_N1:m>5&&e++):(this.finderPenaltyAddHistory(m,g),u||(e+=this.finderPenaltyCountPatterns(g)*C.PENALTY_N3),u=this.modules[p][l],m=1);e+=this.finderPenaltyTerminateAndCount(u,m,g)*C.PENALTY_N3}for(let l=0;l<this.size-1;l++)for(let u=0;u<this.size-1;u++){const m=this.modules[l][u];m==this.modules[l][u+1]&&m==this.modules[l+1][u]&&m==this.modules[l+1][u+1]&&(e+=C.PENALTY_N2)}let r=0;for(const l of this.modules)r=l.reduce((u,m)=>u+(m?1:0),r);const t=this.size*this.size,a=Math.ceil(Math.abs(r*20-t*10)/t)-1;return x(0<=a&&a<=9),e+=a*C.PENALTY_N4,x(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{const e=Math.floor(this.version/7)+2,r=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2;let t=[6];for(let a=this.size-7;t.length<e;a-=r)t.splice(1,0,a);return t}}static getNumRawDataModules(e){if(e<C.MIN_VERSION||e>C.MAX_VERSION)throw new RangeError("Version number out of range");let r=(16*e+128)*e+64;if(e>=2){const t=Math.floor(e/7)+2;r-=(25*t-10)*t-55,e>=7&&(r-=36)}return x(208<=r&&r<=29648),r}static getNumDataCodewords(e,r){return Math.floor(C.getNumRawDataModules(e)/8)-C.ECC_CODEWORDS_PER_BLOCK[r.ordinal][e]*C.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw new RangeError("Degree out of range");let r=[];for(let a=0;a<e-1;a++)r.push(0);r.push(1);let t=1;for(let a=0;a<e;a++){for(let l=0;l<r.length;l++)r[l]=C.reedSolomonMultiply(r[l],t),l+1<r.length&&(r[l]^=r[l+1]);t=C.reedSolomonMultiply(t,2)}return r}static reedSolomonComputeRemainder(e,r){let t=r.map(a=>0);for(const a of e){const l=a^t.shift();t.push(0),r.forEach((u,m)=>t[m]^=C.reedSolomonMultiply(u,l))}return t}static reedSolomonMultiply(e,r){if(e>>>8||r>>>8)throw new RangeError("Byte out of range");let t=0;for(let a=7;a>=0;a--)t=t<<1^(t>>>7)*285,t^=(r>>>a&1)*e;return x(t>>>8==0),t}finderPenaltyCountPatterns(e){const r=e[1];x(r<=this.size*3);const t=r>0&&e[2]==r&&e[3]==r*3&&e[4]==r&&e[5]==r;return(t&&e[0]>=r*4&&e[6]>=r?1:0)+(t&&e[6]>=r*4&&e[0]>=r?1:0)}finderPenaltyTerminateAndCount(e,r,t){return e&&(this.finderPenaltyAddHistory(r,t),r=0),r+=this.size,this.finderPenaltyAddHistory(r,t),this.finderPenaltyCountPatterns(t)}finderPenaltyAddHistory(e,r){r[0]==0&&(e+=this.size),r.pop(),r.unshift(e)}};d.MIN_VERSION=1,d.MAX_VERSION=40,d.PENALTY_N1=3,d.PENALTY_N2=3,d.PENALTY_N3=40,d.PENALTY_N4=10,d.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],d.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],c.QrCode=d;function o(E,e,r){if(e<0||e>31||E>>>e)throw new RangeError("Value out of range");for(let t=e-1;t>=0;t--)r.push(E>>>t&1)}function h(E,e){return(E>>>e&1)!=0}function x(E){if(!E)throw new Error("Assertion error")}const v=class P{constructor(e,r,t){if(this.mode=e,this.numChars=r,this.bitData=t,r<0)throw new RangeError("Invalid argument");this.bitData=t.slice()}static makeBytes(e){let r=[];for(const t of e)o(t,8,r);return new P(P.Mode.BYTE,e.length,r)}static makeNumeric(e){if(!P.isNumeric(e))throw new RangeError("String contains non-numeric characters");let r=[];for(let t=0;t<e.length;){const a=Math.min(e.length-t,3);o(parseInt(e.substring(t,t+a),10),a*3+1,r),t+=a}return new P(P.Mode.NUMERIC,e.length,r)}static makeAlphanumeric(e){if(!P.isAlphanumeric(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let r=[],t;for(t=0;t+2<=e.length;t+=2){let a=P.ALPHANUMERIC_CHARSET.indexOf(e.charAt(t))*45;a+=P.ALPHANUMERIC_CHARSET.indexOf(e.charAt(t+1)),o(a,11,r)}return t<e.length&&o(P.ALPHANUMERIC_CHARSET.indexOf(e.charAt(t)),6,r),new P(P.Mode.ALPHANUMERIC,e.length,r)}static makeSegments(e){return e==""?[]:P.isNumeric(e)?[P.makeNumeric(e)]:P.isAlphanumeric(e)?[P.makeAlphanumeric(e)]:[P.makeBytes(P.toUtf8ByteArray(e))]}static makeEci(e){let r=[];if(e<0)throw new RangeError("ECI assignment value out of range");if(e<128)o(e,8,r);else if(e<16384)o(2,2,r),o(e,14,r);else if(e<1e6)o(6,3,r),o(e,21,r);else throw new RangeError("ECI assignment value out of range");return new P(P.Mode.ECI,0,r)}static isNumeric(e){return P.NUMERIC_REGEX.test(e)}static isAlphanumeric(e){return P.ALPHANUMERIC_REGEX.test(e)}getData(){return this.bitData.slice()}static getTotalBits(e,r){let t=0;for(const a of e){const l=a.mode.numCharCountBits(r);if(a.numChars>=1<<l)return 1/0;t+=4+l+a.bitData.length}return t}static toUtf8ByteArray(e){e=encodeURI(e);let r=[];for(let t=0;t<e.length;t++)e.charAt(t)!="%"?r.push(e.charCodeAt(t)):(r.push(parseInt(e.substring(t+1,t+3),16)),t+=2);return r}};v.NUMERIC_REGEX=/^[0-9]*$/,v.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,v.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";let M=v;c.QrSegment=v})(W||(W={}));(c=>{(d=>{const o=class{constructor(x,v){this.ordinal=x,this.formatBits=v}};o.LOW=new o(0,1),o.MEDIUM=new o(1,0),o.QUARTILE=new o(2,3),o.HIGH=new o(3,2),d.Ecc=o})(c.QrCode||(c.QrCode={}))})(W||(W={}));(c=>{(d=>{const o=class{constructor(x,v){this.modeBits=x,this.numBitsCharCount=v}numCharCountBits(x){return this.numBitsCharCount[Math.floor((x+7)/17)]}};o.NUMERIC=new o(1,[10,12,14]),o.ALPHANUMERIC=new o(2,[9,11,13]),o.BYTE=new o(4,[8,16,16]),o.KANJI=new o(8,[8,10,12]),o.ECI=new o(7,[0,0,0]),d.Mode=o})(c.QrSegment||(c.QrSegment={}))})(W||(W={}));var K=W;/**
|
|
11
|
-
* @license qrcode.react
|
|
12
|
-
* Copyright (c) Paul O'Shannessy
|
|
13
|
-
* SPDX-License-Identifier: ISC
|
|
14
|
-
*/var gt={L:K.QrCode.Ecc.LOW,M:K.QrCode.Ecc.MEDIUM,Q:K.QrCode.Ecc.QUARTILE,H:K.QrCode.Ecc.HIGH},Ge=128,We="L",Ve="#FFFFFF",Ke="#000000",Xe=!1,qe=1,pt=4,xt=0,vt=.1;function Je(c,d=0){const o=[];return c.forEach(function(h,x){let v=null;h.forEach(function(M,E){if(!M&&v!==null){o.push(`M${v+d} ${x+d}h${E-v}v1H${v+d}z`),v=null;return}if(E===h.length-1){if(!M)return;v===null?o.push(`M${E+d},${x+d} h1v1H${E+d}z`):o.push(`M${v+d},${x+d} h${E+1-v}v1H${v+d}z`);return}M&&v===null&&(v=E)})}),o.join("")}function Ze(c,d){return c.slice().map((o,h)=>h<d.y||h>=d.y+d.h?o:o.map((x,v)=>v<d.x||v>=d.x+d.w?x:!1))}function bt(c,d,o,h){if(h==null)return null;const x=c.length+o*2,v=Math.floor(d*vt),M=x/d,E=(h.width||v)*M,e=(h.height||v)*M,r=h.x==null?c.length/2-E/2:h.x*M,t=h.y==null?c.length/2-e/2:h.y*M,a=h.opacity==null?1:h.opacity;let l=null;if(h.excavate){let m=Math.floor(r),g=Math.floor(t),p=Math.ceil(E+r-m),R=Math.ceil(e+t-g);l={x:m,y:g,w:p,h:R}}const u=h.crossOrigin;return{x:r,y:t,h:e,w:E,excavation:l,opacity:a,crossOrigin:u}}function wt(c,d){return d!=null?Math.max(Math.floor(d),0):c?pt:xt}function et({value:c,level:d,minVersion:o,includeMargin:h,marginSize:x,imageSettings:v,size:M,boostLevel:E}){let e=j.useMemo(()=>{const m=(Array.isArray(c)?c:[c]).reduce((g,p)=>(g.push(...K.QrSegment.makeSegments(p)),g),[]);return K.QrCode.encodeSegments(m,gt[d],o,void 0,void 0,E)},[c,d,o,E]);const{cells:r,margin:t,numCells:a,calculatedImageSettings:l}=j.useMemo(()=>{let u=e.getModules();const m=wt(h,x),g=u.length+m*2,p=bt(u,M,m,v);return{cells:u,margin:m,numCells:g,calculatedImageSettings:p}},[e,M,v,h,x]);return{qrcode:e,margin:t,cells:r,numCells:a,calculatedImageSettings:l}}var yt=(function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0})(),Ct=j.forwardRef(function(d,o){const h=d,{value:x,size:v=Ge,level:M=We,bgColor:E=Ve,fgColor:e=Ke,includeMargin:r=Xe,minVersion:t=qe,boostLevel:a,marginSize:l,imageSettings:u}=h,g=ve(h,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","marginSize","imageSettings"]),{style:p}=g,R=ve(g,["style"]),k=u==null?void 0:u.src,w=j.useRef(null),N=j.useRef(null),_=j.useCallback(L=>{w.current=L,typeof o=="function"?o(L):o&&(o.current=L)},[o]),[$,V]=j.useState(!1),{margin:S,cells:H,numCells:z,calculatedImageSettings:y}=et({value:x,level:M,minVersion:t,boostLevel:a,includeMargin:r,marginSize:l,imageSettings:u,size:v});j.useEffect(()=>{if(w.current!=null){const L=w.current,F=L.getContext("2d");if(!F)return;let Y=H;const G=N.current,se=y!=null&&G!==null&&G.complete&&G.naturalHeight!==0&&G.naturalWidth!==0;se&&y.excavation!=null&&(Y=Ze(H,y.excavation));const X=window.devicePixelRatio||1;L.height=L.width=v*X;const U=v/z*X;F.scale(U,U),F.fillStyle=E,F.fillRect(0,0,z,z),F.fillStyle=e,yt?F.fill(new Path2D(Je(Y,S))):H.forEach(function(le,ce){le.forEach(function(de,ue){de&&F.fillRect(ue+S,ce+S,1,1)})}),y&&(F.globalAlpha=y.opacity),se&&F.drawImage(G,y.x+S,y.y+S,y.w,y.h)}}),j.useEffect(()=>{V(!1)},[k]);const re=xe({height:v,width:v},p);let D=null;return k!=null&&(D=j.createElement("img",{src:k,key:k,style:{display:"none"},onLoad:()=>{V(!0)},ref:N,crossOrigin:y==null?void 0:y.crossOrigin})),j.createElement(j.Fragment,null,j.createElement("canvas",xe({style:re,height:v,width:v,ref:_,role:"img"},R)),D)});Ct.displayName="QRCodeCanvas";var tt=j.forwardRef(function(d,o){const h=d,{value:x,size:v=Ge,level:M=We,bgColor:E=Ve,fgColor:e=Ke,includeMargin:r=Xe,minVersion:t=qe,boostLevel:a,title:l,marginSize:u,imageSettings:m}=h,g=ve(h,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","title","marginSize","imageSettings"]),{margin:p,cells:R,numCells:k,calculatedImageSettings:w}=et({value:x,level:M,minVersion:t,boostLevel:a,includeMargin:r,marginSize:u,imageSettings:m,size:v});let N=R,_=null;m!=null&&w!=null&&(w.excavation!=null&&(N=Ze(R,w.excavation)),_=j.createElement("image",{href:m.src,height:w.h,width:w.w,x:w.x+p,y:w.y+p,preserveAspectRatio:"none",opacity:w.opacity,crossOrigin:w.crossOrigin}));const $=Je(N,p);return j.createElement("svg",xe({height:v,width:v,viewBox:`0 0 ${k} ${k}`,ref:o,role:"img"},g),!!l&&j.createElement("title",null,l),j.createElement("path",{fill:E,d:`M0,0 h${k}v${k}H0z`,shapeRendering:"crispEdges"}),j.createElement("path",{fill:e,d:$,shapeRendering:"crispEdges"}),_)});tt.displayName="QRCodeSVG";const Q="__custom__",pe=["weixin","lark"],be=[{id:"openai",label:"OpenAI",name:"openai",base_url:"https://api.openai.com/v1",model:"gpt-4.1-mini"},{id:"openrouter",label:"OpenRouter",name:"openrouter",base_url:"https://openrouter.ai/api/v1",model:"openai/gpt-4.1-mini"},{id:"anthropic",label:"Anthropic",name:"anthropic",base_url:"https://api.anthropic.com/v1",model:"claude-3-5-haiku-latest"},{id:"minimax",label:"Minimax",name:"minimax",base_url:"https://api.minimax.chat/v1",model:"MiniMax-M2.5"},{id:"ollama",label:"Ollama",name:"ollama",base_url:"http://127.0.0.1:11434/v1",model:"qwen2.5-coder:7b"}];function B(c){return JSON.parse(JSON.stringify(c))}function te(c){return Array.isArray(c.projects)||(c.projects=[]),c.projects}function Et(c){const d=new Set(c.map(h=>h.name).filter(Boolean));let o=c.length+1;for(;d.has(`project-${o}`);)o+=1;return{name:`project-${o}`,agentType:ut,workDir:"",model:""}}function oe(c){var d,o,h,x,v;return{...c,agent:{...c.agent,options:{...((d=c.agent)==null?void 0:d.options)||{},model:$e((o=c.agent)==null?void 0:o.type,String(((x=(h=c.agent)==null?void 0:h.options)==null?void 0:x.model)||""))},providers:((v=c.agent)==null?void 0:v.providers)||[]},platforms:c.platforms||[]}}function Be(c,d){return d.includes(c)?c:Q}function kt(c){var d;return((d=be.find(o=>c.name===o.name||o.base_url&&c.base_url===o.base_url||o.model&&c.model===o.model&&c.name===o.name))==null?void 0:d.id)||Q}function Nt(c,d){const o=be.find(h=>h.id===d);return o?{...c,name:o.name,base_url:o.base_url,model:o.model}:c}function Ue(c="weixin"){return{type:c,options:{}}}function Qe(c){const d=c.type==="feishu"?"lark":c.type,o=c.options&&typeof c.options=="object"?{...c.options}:{};return d==="weixin"?{type:d,options:{...o}}:d==="lark"?{type:d,options:{...o,app_id:String(o.app_id||"").trim(),app_secret:String(o.app_secret||"").trim(),card_actions:o.card_actions===!0}}:{type:d,options:o}}function Pt(c){var d;if(c.type==="weixin")return"WeChat QR login";if(c.type==="lark"){const o=String(((d=c.options)==null?void 0:d.app_id)||"").trim();return o?`App ID ${o}`:"App ID and secret required"}return"Custom platform"}function Mt(c){var h,x;const d=String(((x=(h=c.agent)==null?void 0:h.options)==null?void 0:x.work_dir)||"").trim();return d?d.replace(/\/+$/,"").split("/").filter(Boolean).pop()||d:"No work directory"}function jt(c){return c==="success"?"border-primary/20 bg-primary/10 text-primary dark:border-primary/25 dark:bg-primary/10 dark:text-blue-200":c==="warning"?"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-400/20 dark:bg-amber-500/10 dark:text-amber-200":"border-red-200 bg-red-50 text-red-700 dark:border-red-400/20 dark:bg-red-500/10 dark:text-red-200"}function Ht(){var we,ye,Ce,Ee,ke,Ne,Pe,Me,je,Se,Ae,Re,Ie,_e,De;const[c,d]=st(),o=c.get("project")||"",[h,x]=A.useState(null),[v,M]=A.useState(null),[E,e]=A.useState(0),[r,t]=A.useState("basic"),[a,l]=A.useState(null),[u,m]=A.useState(null),[g,p]=A.useState(null),[R,k]=A.useState(!1),[w,N]=A.useState(!0),[_,$]=A.useState(""),[V,S]=A.useState(null),H=A.useCallback(async(s="")=>{N(!0);try{const i=await it(),f=B(i.parsed||{});if(f.projects=te(f).map(b=>oe(b)),x(f),M(B(f)),s){const b=(f.projects||[]).findIndex(O=>O.name===s);e(b>=0?b:0)}}catch(i){S({tone:"error",message:i instanceof Error?i.message:String(i)})}finally{N(!1)}},[]);A.useEffect(()=>{H(o)},[H]);const z=(h==null?void 0:h.projects)||[],y=z[E]||null,re=JSON.stringify(h||{})!==JSON.stringify(v||{});A.useEffect(()=>{if(!h||!o)return;const s=z.findIndex(i=>i.name===o);s>=0&&s!==E&&e(s)},[h,z,o,E]);const D=A.useCallback(s=>{x(i=>{if(!i)return i;const f=B(i),b=te(f),O=b[E];return O?(b[E]=oe(s(O)),f):i})},[E]),L=A.useCallback((s,i)=>{D(f=>{const b=[...f.agent.providers||[]],O=b[s];return O?(b[s]=i(O),{...f,agent:{...f.agent,providers:b}}):f})},[D]),F=()=>{l(Et(z))},Y=s=>{l(i=>i&&{...i,...s})},G=()=>{if(!a)return;const s=a.name.trim(),i=a.agentType.trim(),f=a.workDir.trim(),b=a.model.trim();if(!s||!i||!f){S({tone:"warning",message:"Project name, agent type, and work directory are required."});return}if(z.some(J=>J.name===s)){S({tone:"warning",message:`Project "${s}" already exists.`});return}const O=oe({name:s,agent:{type:i,options:{model:b||fe(i),work_dir:f},providers:[]},platforms:[],admin_from:"",disabled_commands:[]}),q=z.length;x(J=>{const Z=B(J||{});return te(Z).push(O),Z}),e(q),d({project:s}),l(null),S(null)},se=s=>{x(i=>{if(!i)return i;const f=B(i),b=te(f);return b.splice(s,1),e(Math.max(0,Math.min(s,b.length-1))),f})},X=s=>{var f;if(p(null),s===null){m({index:s,draft:Ue()});return}const i=(f=y==null?void 0:y.platforms)==null?void 0:f[s];i&&m({index:s,draft:B(i)})},U=s=>{m(i=>i&&{...i,draft:s(i.draft)})},le=()=>{if(!u)return;const s=Qe(u.draft);D(i=>{const f=[...i.platforms||[]];return u.index===null?f.push(s):f[u.index]=s,{...i,platforms:f}}),m(null),p(null)},ce=async()=>{if(!(!(y!=null&&y.name)||!h)){k(!0);try{if(u){const i=B(h),f=te(i),b=f[E];if(b){const O=[...b.platforms||[]],q=Qe(u.draft);u.index===null?O.push(q):O[u.index]=q,f[E]=oe({...b,platforms:O});const J=await Le(i),Z=B(J.parsed||i);M(Z),x(B(Z)),m(ne=>ne&&{index:ne.index??O.length-1,draft:q})}}const s=await lt(y.name);p({...s,status:"wait"}),S(null)}catch(s){S({tone:"error",message:s instanceof Error?s.message:String(s)})}finally{k(!1)}}},de=async()=>{if(!(!(y!=null&&y.name)||!(g!=null&&g.ticket))){k(!0);try{const s=await ct(y.name,g.ticket);p(i=>i&&{...i,status:s.status}),s.status==="confirmed"&&S({tone:"success",message:"WeChat QR code confirmed."})}catch(s){S({tone:"error",message:s instanceof Error?s.message:String(s)})}finally{k(!1)}}},ue=async()=>{if(h){$("config");try{const s=await Le(h);M(B(s.parsed||h)),x(B(s.parsed||h)),S({tone:"success",message:"Project changes saved."}),await H()}catch(s){S({tone:"error",message:s instanceof Error?s.message:String(s)})}finally{$("")}}};return w&&!h?n.jsx("div",{className:"flex h-64 items-center justify-center text-sm text-slate-400 animate-pulse",children:"Loading workspace..."}):n.jsxs("div",{className:"space-y-6 animate-fade-in",children:[n.jsx(at,{title:"工作区",description:"创建项目,配置 Agent、工作目录、Provider 和平台接入。"}),V?n.jsx("div",{role:"status",className:`rounded-xl border px-4 py-3 text-sm ${jt(V.tone)}`,children:V.message}):null,re?n.jsx("div",{className:"rounded-xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-400/20 dark:bg-amber-500/10 dark:text-amber-200",children:"You have unsaved project changes."}):null,n.jsxs("div",{className:"grid min-w-0 grid-cols-1 gap-4 lg:grid-cols-[340px_minmax(0,1fr)]",children:[n.jsx(Te,{title:"项目",actions:n.jsxs(I,{size:"sm",onClick:F,children:[n.jsx(ee,{size:14})," 新建项目"]}),className:"lg:self-start",children:z.length===0?n.jsx(he,{message:"还没有项目。"}):n.jsx("div",{className:"space-y-2",children:z.map((s,i)=>{var f,b;return n.jsxs("div",{className:`flex items-center justify-between gap-2 rounded-xl border px-3 py-2 transition-colors ${i===E?"border-accent/30 bg-accent/10":"border-black/10 hover:bg-black/[0.04] dark:border-white/[0.08] dark:hover:bg-white/[0.06]"}`,children:[n.jsxs("button",{type:"button",onClick:()=>{e(i),d(s.name?{project:s.name}:{})},className:"min-w-0 flex-1 text-left",children:[n.jsx("p",{className:"truncate text-sm font-medium text-slate-950 dark:text-white",children:s.name||`Project ${i+1}`}),n.jsxs("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:[((f=s.agent)==null?void 0:f.type)||"unknown"," · ",Mt(s)," · ",((b=s.platforms)==null?void 0:b.length)||0," platforms"]})]}),n.jsx(I,{variant:"ghost",size:"sm",onClick:()=>se(i),"aria-label":`Remove ${s.name}`,children:n.jsx(ge,{size:14})})]},`${s.name}-${i}`)})})}),n.jsx(Te,{title:(y==null?void 0:y.name)||"Project details",description:y?n.jsxs("span",{className:"break-all",children:[((we=y.agent)==null?void 0:we.type)||"unknown"," · ",String(((Ce=(ye=y.agent)==null?void 0:ye.options)==null?void 0:Ce.work_dir)||"No work directory")]}):void 0,children:y?n.jsxs("div",{className:"space-y-6",children:[n.jsx("div",{className:"flex gap-2 overflow-x-auto border-b border-black/10 pb-4 [scrollbar-width:none] dark:border-white/[0.08] [&::-webkit-scrollbar]:hidden sm:flex-wrap",children:[["basic","基本信息"],["providers","Provider"],["platforms","平台接入"]].map(([s,i])=>n.jsx("button",{type:"button",onClick:()=>t(s),className:`shrink-0 rounded-lg px-3 py-1.5 text-sm font-medium transition-colors ${r===s?"bg-accent text-white":"bg-black/[0.04] text-muted-foreground hover:bg-black/[0.07] hover:text-foreground dark:bg-white/[0.05] dark:hover:bg-white/[0.08]"}`,children:i},s))}),r==="basic"?n.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[n.jsx(T,{label:"Project name",value:y.name,onChange:s=>D(i=>({...i,name:s.target.value}))}),n.jsxs(ae,{label:"Agent type",value:Be(((Ee=y.agent)==null?void 0:Ee.type)||"",me),onChange:s=>D(i=>{var b;const f=s.target.value===Q?i.agent.type:s.target.value;return{...i,agent:{...i.agent,type:f,options:{...i.agent.options||{},model:$e(f,String(((b=i.agent.options)==null?void 0:b.model)||""))}}}}),children:[me.map(s=>n.jsx("option",{value:s,children:s},s)),n.jsx("option",{value:Q,children:"custom"})]}),n.jsx(T,{label:"Work directory",value:String(((Ne=(ke=y.agent)==null?void 0:ke.options)==null?void 0:Ne.work_dir)||""),onChange:s=>D(i=>({...i,agent:{...i.agent,options:{...i.agent.options||{},work_dir:s.target.value}}}))}),n.jsx(T,{label:"Default model",value:String(((Me=(Pe=y.agent)==null?void 0:Pe.options)==null?void 0:Me.model)||""),onChange:s=>D(i=>({...i,agent:{...i.agent,options:{...i.agent.options||{},model:s.target.value}}})),placeholder:fe((je=y.agent)==null?void 0:je.type)||"Use agent default model"})]}):null,r==="providers"?n.jsxs("section",{className:"space-y-3",children:[n.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-semibold text-slate-950 dark:text-white",children:"Providers"}),n.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Basic endpoint and default model only."})]}),n.jsxs(I,{size:"sm",variant:"secondary",onClick:()=>D(s=>({...s,agent:{...s.agent,providers:[...s.agent.providers||[],{name:`provider-${(s.agent.providers||[]).length+1}`}]}})),children:[n.jsx(ee,{size:14})," Provider"]})]}),(y.agent.providers||[]).length===0?n.jsxs("div",{className:"flex flex-col gap-3 rounded-xl border border-black/10 px-4 py-4 dark:border-white/[0.08] sm:flex-row sm:items-center sm:justify-between",children:[n.jsx("p",{className:"text-sm text-muted-foreground",children:"No providers configured."}),n.jsxs(I,{size:"sm",variant:"secondary",onClick:()=>D(s=>({...s,agent:{...s.agent,providers:[...s.agent.providers||[],{name:`provider-${(s.agent.providers||[]).length+1}`}]}})),children:[n.jsx(ee,{size:14})," Add provider"]})]}):n.jsx("div",{className:"space-y-3",children:(y.agent.providers||[]).map((s,i)=>n.jsx("div",{className:"rounded-xl border border-black/10 p-4 dark:border-white/[0.08]",children:n.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[n.jsxs(ae,{label:"Preset",value:kt(s),onChange:f=>{f.target.value!==Q&&L(i,b=>Nt(b,f.target.value))},children:[be.map(f=>n.jsx("option",{value:f.id,children:f.label},f.id)),n.jsx("option",{value:Q,children:"custom"})]}),n.jsx(T,{label:"Name",value:s.name||"",onChange:f=>L(i,b=>({...b,name:f.target.value}))}),n.jsx(T,{label:"API key",type:"password",value:s.api_key||"",onChange:f=>L(i,b=>({...b,api_key:f.target.value}))}),n.jsx(T,{label:"Base URL",value:s.base_url||"",onChange:f=>L(i,b=>({...b,base_url:f.target.value}))}),n.jsx(T,{label:"Default model",value:s.model||"",onChange:f=>L(i,b=>({...b,model:f.target.value}))}),n.jsx("div",{className:"flex items-end",children:n.jsxs(I,{variant:"danger",size:"sm",onClick:()=>D(f=>{const b=[...f.agent.providers||[]];return b.splice(i,1),{...f,agent:{...f.agent,providers:b}}}),children:[n.jsx(ge,{size:14})," Remove"]})})]})},`${s.name}-${i}`))})]}):null,r==="platforms"?n.jsxs("section",{className:"space-y-3",children:[n.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{children:[n.jsx("h3",{className:"text-sm font-semibold text-slate-950 dark:text-white",children:"Platforms"}),n.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Configure each platform with its own required connection fields."})]}),n.jsxs(I,{size:"sm",variant:"secondary",onClick:()=>X(null),children:[n.jsx(ee,{size:14})," Platform"]})]}),(y.platforms||[]).length===0?n.jsx(he,{message:"No platforms configured."}):n.jsx("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:(y.platforms||[]).map((s,i)=>n.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-xl border border-black/10 p-3 dark:border-white/[0.08]",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"truncate text-sm font-medium text-slate-950 dark:text-white",children:s.type}),n.jsx("p",{className:"mt-1 truncate text-xs text-muted-foreground",children:Pt(s)})]}),n.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[n.jsx(I,{variant:"secondary",size:"sm",onClick:()=>X(i),"aria-label":`Configure ${s.type}`,children:n.jsx(nt,{size:14})}),n.jsx(I,{variant:"danger",size:"sm",onClick:()=>D(f=>{const b=[...f.platforms||[]];return b.splice(i,1),{...f,platforms:b}}),children:n.jsx(ge,{size:14})})]})]},`${s.type}-${i}`))})]}):null,n.jsx("div",{className:"flex flex-wrap gap-2 border-t border-black/10 pt-5 dark:border-white/[0.08]",children:n.jsxs(I,{className:"w-full sm:w-auto",onClick:()=>void ue(),loading:_==="config",disabled:!re&&_!=="config",children:[n.jsx(ze,{size:14})," 保存更改"]})})]}):n.jsx(he,{message:"选择或新建项目后开始配置。"})})]}),n.jsx(Oe,{open:!!a,onClose:()=>l(null),title:"新建项目",children:a?n.jsxs("div",{className:"space-y-4",children:[n.jsx(T,{label:"Project name",value:a.name,onChange:s=>Y({name:s.target.value}),autoFocus:!0}),n.jsx(ae,{label:"Agent type",value:a.agentType,onChange:s=>{const i=s.target.value;Y({agentType:i})},children:me.map(s=>n.jsx("option",{value:s,children:s},s))}),n.jsx(T,{label:"Work directory",value:a.workDir,onChange:s=>Y({workDir:s.target.value}),placeholder:"/Users/yinyin/code/my-project"}),n.jsx(T,{label:"Default model",value:a.model,onChange:s=>Y({model:s.target.value}),placeholder:fe(a.agentType)||"Use agent default model"}),n.jsxs("div",{className:"flex flex-col-reverse gap-2 pt-2 sm:flex-row sm:justify-end",children:[n.jsx(I,{className:"w-full sm:w-auto",variant:"secondary",onClick:()=>l(null),children:"Cancel"}),n.jsxs(I,{className:"w-full sm:w-auto",onClick:G,children:[n.jsx(ee,{size:14})," 新建项目"]})]})]}):null}),n.jsx(Oe,{open:!!u,onClose:()=>{m(null),p(null)},title:(u==null?void 0:u.index)===null?"Add platform":"Configure platform",children:u?n.jsxs("div",{className:"space-y-4",children:[n.jsxs(ae,{label:"Platform",value:Be(u.draft.type,[...pe]),onChange:s=>{const i=s.target.value===Q?u.draft.type:s.target.value;U(()=>Ue(i)),p(null)},children:[pe.map(s=>n.jsx("option",{value:s,children:s},s)),dt.filter(s=>!pe.includes(s)).map(s=>n.jsx("option",{value:s,children:s},s)),n.jsx("option",{value:Q,children:"custom"})]}),u.draft.type==="lark"?n.jsxs("div",{className:"grid grid-cols-1 gap-3",children:[n.jsx(T,{label:"App ID",value:String(((Se=u.draft.options)==null?void 0:Se.app_id)||""),onChange:s=>U(i=>({...i,options:{...i.options||{},app_id:s.target.value}})),placeholder:"cli_xxx"}),n.jsx(T,{label:"App Secret",type:"password",value:String(((Ae=u.draft.options)==null?void 0:Ae.app_secret)||""),onChange:s=>U(i=>({...i,options:{...i.options||{},app_secret:s.target.value}}))}),n.jsx(T,{label:"Verification token",value:String(((Re=u.draft.options)==null?void 0:Re.verification_token)||""),onChange:s=>U(i=>({...i,options:{...i.options||{},verification_token:s.target.value}}))}),n.jsx(T,{label:"Encrypt key",value:String(((Ie=u.draft.options)==null?void 0:Ie.encrypt_key)||""),onChange:s=>U(i=>({...i,options:{...i.options||{},encrypt_key:s.target.value}}))}),n.jsxs("label",{className:"flex items-center gap-3 text-sm text-foreground",children:[n.jsx("input",{type:"checkbox",checked:((_e=u.draft.options)==null?void 0:_e.auto_approve)===!0,onChange:s=>U(i=>({...i,options:{...i.options||{},auto_approve:s.target.checked}}))}),"Auto-approve Lark users"]}),n.jsxs("label",{className:"flex items-center gap-3 text-sm text-foreground",children:[n.jsx("input",{type:"checkbox",checked:((De=u.draft.options)==null?void 0:De.card_actions)===!0,onChange:s=>U(i=>({...i,options:{...i.options||{},card_actions:s.target.checked}}))}),"Enable Lark card action buttons"]})]}):null,u.draft.type==="weixin"?n.jsxs("div",{className:"space-y-3",children:[n.jsx("div",{className:"rounded-lg border border-black/10 bg-black/[0.03] px-3 py-3 text-sm text-muted-foreground dark:border-white/[0.08] dark:bg-white/[0.04]",children:"WeChat does not need an App ID or secret. Save this platform, then generate a QR code and scan it to finish login."}),g!=null&&g.qrCodeUrl?n.jsxs("div",{className:"flex flex-col items-center gap-3 rounded-lg border border-black/10 p-4 dark:border-white/[0.08]",children:[n.jsx("div",{className:"rounded-lg border border-black/10 bg-white p-3",children:n.jsx(tt,{value:g.qrCodeUrl,size:176,includeMargin:!0})}),n.jsx(ot,{tone:g.status==="confirmed"?"success":g.status==="expired"?"danger":"warning",children:g.status||"wait"})]}):null,n.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap",children:[n.jsxs(I,{className:"w-full sm:w-auto",variant:"secondary",onClick:()=>void ce(),loading:R,children:[n.jsx(mt,{size:14})," Generate QR"]}),n.jsx(I,{className:"w-full sm:w-auto",variant:"secondary",onClick:()=>void de(),loading:R,disabled:!(g!=null&&g.ticket),children:"Check status"})]})]}):null,u.draft.type!=="lark"&&u.draft.type!=="weixin"?n.jsx("div",{className:"rounded-lg border border-black/10 bg-black/[0.03] px-3 py-3 text-sm text-muted-foreground dark:border-white/[0.08] dark:bg-white/[0.04]",children:"This platform has no daily UI fields yet. Existing advanced options are preserved in config."}):null,n.jsxs("div",{className:"flex flex-col-reverse gap-2 border-t border-black/10 pt-4 dark:border-white/[0.08] sm:flex-row sm:justify-end",children:[n.jsx(I,{className:"w-full sm:w-auto",variant:"secondary",onClick:()=>m(null),children:"Cancel"}),n.jsxs(I,{className:"w-full sm:w-auto",onClick:le,children:[n.jsx(ze,{size:14})," Apply"]})]})]}):null})]})}export{Ht as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{V as l,P as g,X as d,Y as u,_ as c,$ as h,a0 as C,a1 as w,a2 as k,a3 as v,a4 as S,a5 as P,a6 as m,a7 as y,a8 as L,a9 as b,aa as f,ab as G,ac as R,ad as B,ae as A,af as F,ag as E,ah as I,ai as W,aj as D,ak as K,al as T,am as x,m as i,i as Q,an as U,ao as j,ap as z,aq as $,ar as _,as as q,at as M,au as V,g as X}from"./index-BC3MWbS1.js";function t(){if(!window.desktop)throw new Error("Desktop APIs are unavailable in the browser build");return window.desktop}const Y={getRuntimeStatus:()=>t().getRuntimeStatus(),startService:()=>t().startService(),stopService:()=>t().stopService(),restartService:()=>t().restartService(),getLogs:e=>t().getLogs(e),listInstalledAgentRuntimes:()=>w().then(e=>e.runtimes),refreshInstalledAgentRuntimes:()=>C().then(e=>e.runtimes),readConfigFile:()=>t().readConfigFile(),saveRawConfigFile:e=>t().saveRawConfigFile(e),saveStructuredConfigFile:e=>t().saveStructuredConfigFile(e),getThreadKnowledgeBases:(e,a)=>t().getThreadKnowledgeBases(e,a),updateThreadKnowledgeBases:(e,a,s)=>t().updateThreadKnowledgeBases(e,a,s),deleteThreadKnowledgeBases:(e,a)=>t().deleteThreadKnowledgeBases(e,a),saveSettings:e=>t().saveSettings(e),getCapabilitySnapshot:()=>h(),getPluginDiagnostics:()=>c(),listChannelGateways:e=>t().listChannelGateways(e),getChannelGatewayStatus:(e,a)=>t().getChannelGatewayStatus(e,a),testChannelConnection:(e,a)=>t().testChannelConnection(e,a),enableChannelGateway:(e,a)=>t().enableChannelGateway(e,a),disableChannelGateway:(e,a)=>t().disableChannelGateway(e,a),listChannelPendingPairings:(e,a)=>t().listChannelPendingPairings(e,a),approveChannelPairing:(e,a)=>t().approveChannelPairing(e,a),rejectChannelPairing:(e,a)=>t().rejectChannelPairing(e,a),listChannelAuthorizedUsers:(e,a)=>t().listChannelAuthorizedUsers(e,a),getWeixinQrCode:e=>u(e),checkWeixinQrCodeStatus:(e,a)=>d(e,a),listLarkGateways:()=>t().listLarkGateways(),getLarkGatewayStatus:e=>t().getLarkGatewayStatus(e),testLarkConnection:e=>t().testLarkConnection(e),enableLarkGateway:e=>t().enableLarkGateway(e),disableLarkGateway:e=>t().disableLarkGateway(e),listLarkPendingPairings:e=>t().listLarkPendingPairings(e),approveLarkPairing:e=>t().approveLarkPairing(e),rejectLarkPairing:e=>t().rejectLarkPairing(e),listLarkAuthorizedUsers:e=>t().listLarkAuthorizedUsers(e),probeWorkspaceStreaming:e=>t().probeWorkspaceStreaming(e),onRuntimeEvent:e=>t().onRuntimeEvent(e),onRuntimeDetectionEvent:e=>g(a=>{(a.type.startsWith("runtime.detect.")||a.type==="runtime.status.changed")&&e(a)}),onBridgeEvent:e=>l(e)},r={getRuntimeStatus:()=>V(),startService:()=>M(),stopService:()=>q(),restartService:()=>_(),getLogs:e=>$(e),listInstalledAgentRuntimes:()=>w().then(e=>e.runtimes),refreshInstalledAgentRuntimes:()=>C().then(e=>e.runtimes),readConfigFile:()=>z(),saveRawConfigFile:e=>j(e),saveStructuredConfigFile:e=>U(e),getThreadKnowledgeBases:(e,a)=>Q(a).then(s=>s.selectedKnowledgeBaseIds||[]),updateThreadKnowledgeBases:(e,a,s)=>i(a,s).then(p=>p.knowledgeBaseIds),deleteThreadKnowledgeBases:(e,a)=>i(a,[]).then(()=>({deleted:!0})),saveSettings:e=>x(e),getCapabilitySnapshot:()=>h(),getPluginDiagnostics:()=>c(),listChannelGateways:e=>T(e).then(a=>a.gateways),getChannelGatewayStatus:(e,a)=>K(e,a),testChannelConnection:(e,a)=>D(e,a),enableChannelGateway:(e,a)=>W(e,a),disableChannelGateway:(e,a)=>I(e,a),listChannelPendingPairings:(e,a)=>E(e,a).then(s=>s.pairings),approveChannelPairing:(e,a)=>F(e,a),rejectChannelPairing:(e,a)=>A(e,a),listChannelAuthorizedUsers:(e,a)=>B(e,a).then(s=>s.users),getWeixinQrCode:e=>u(e),checkWeixinQrCodeStatus:(e,a)=>d(e,a),listLarkGateways:()=>R().then(e=>e.gateways),getLarkGatewayStatus:e=>G(e),testLarkConnection:e=>f(e),enableLarkGateway:e=>b(e),disableLarkGateway:e=>L(e),listLarkPendingPairings:e=>y(e).then(a=>a.pairings),approveLarkPairing:e=>m(e),rejectLarkPairing:e=>P(e),listLarkAuthorizedUsers:e=>S(e).then(a=>a.users),probeWorkspaceStreaming:e=>v(e),onRuntimeEvent:e=>k(e),onRuntimeDetectionEvent:e=>g(a=>{(a.type.startsWith("runtime.detect.")||a.type==="runtime.status.changed")&&e(a)}),onBridgeEvent:e=>l(e)};let o=null;function H(e){return e==="electron"&&window.desktop?Y:r}function n(){const e=o||H(X());if(!e)throw new Error("Managed desktop APIs are unavailable in this build");return o=e,e}const N=()=>n().getRuntimeStatus(),O=()=>n().startService(),Z=()=>n().listInstalledAgentRuntimes(),ee=()=>n().refreshInstalledAgentRuntimes(),ae=()=>n().readConfigFile(),te=e=>n().saveStructuredConfigFile(e),ne=(e,a,s)=>n().updateThreadKnowledgeBases(e,a,s),se=e=>n().saveSettings(e),ie=()=>n().getPluginDiagnostics(),re=e=>n().getWeixinQrCode(e),oe=(e,a)=>n().checkWeixinQrCodeStatus(e,a),le=e=>n().onRuntimeEvent(e),ge=e=>n().onRuntimeDetectionEvent(e),de=e=>n().onBridgeEvent(e);export{ge as a,de as b,ae as c,te as d,re as e,oe as f,N as g,ie as h,se as i,Z as l,le as o,ee as r,O as s,ne as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{z as t}from"./index-BC3MWbS1.js";const e=()=>t.get("/projects"),r=o=>t.get(`/projects/${o}`);export{r as g,e as l};
|