@ian2018cs/agenthub 0.1.73 → 0.1.75
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/assets/index-B5imuFpg.js +192 -0
- package/dist/assets/index-oUz7uC99.css +32 -0
- package/dist/assets/{vendor-icons-CFgKYN6c.js → vendor-icons-DUmFlkZ8.js} +49 -49
- package/dist/index.html +3 -3
- package/package.json +2 -2
- package/server/claude-sdk.js +12 -0
- package/server/index.js +28 -5
- package/server/projects.js +18 -0
- package/server/routes/agents.js +23 -7
- package/server/routes/mcp-repos.js +22 -4
- package/server/routes/skills.js +59 -5
- package/shared/brand.js +8 -0
- package/dist/assets/index-CyYbCDk1.js +0 -192
- package/dist/assets/index-DQaPJRqa.css +0 -32
|
@@ -3,7 +3,7 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const x=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c
|
|
6
|
+
*/const x=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,o,c)=>c?c.toUpperCase():o.toLowerCase()),h=t=>{const a=_(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,o,c)=>!!a&&a.trim()!==""&&c.indexOf(a)===o).join(" ").trim(),M=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};/**
|
|
7
7
|
* @license lucide-react v0.515.0 - ISC
|
|
8
8
|
*
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
@@ -13,32 +13,32 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const v=y.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:
|
|
16
|
+
*/const v=y.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:c,className:s="",children:n,iconNode:i,...d},l)=>y.createElement("svg",{ref:l,...m,width:a,height:a,stroke:t,strokeWidth:c?Number(o)*24/Number(a):o,className:k("lucide",s),...!n&&!M(d)&&{"aria-hidden":"true"},...d},[...i.map(([r,p])=>y.createElement(r,p)),...Array.isArray(n)?n:[n]]));/**
|
|
17
17
|
* @license lucide-react v0.515.0 - ISC
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const e=(t,a)=>{const
|
|
21
|
+
*/const e=(t,a)=>{const o=y.forwardRef(({className:c,...s},n)=>y.createElement(v,{ref:n,iconNode:a,className:k(`lucide-${x(h(t))}`,`lucide-${t}`,c),...s}));return o.displayName=h(t),o};/**
|
|
22
22
|
* @license lucide-react v0.515.0 - ISC
|
|
23
23
|
*
|
|
24
24
|
* This source code is licensed under the ISC license.
|
|
25
25
|
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const u=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],
|
|
26
|
+
*/const u=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],F1=e("arrow-down",u);/**
|
|
27
27
|
* @license lucide-react v0.515.0 - ISC
|
|
28
28
|
*
|
|
29
29
|
* This source code is licensed under the ISC license.
|
|
30
30
|
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
-
*/const $=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],
|
|
31
|
+
*/const $=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],B1=e("arrow-left",$);/**
|
|
32
32
|
* @license lucide-react v0.515.0 - ISC
|
|
33
33
|
*
|
|
34
34
|
* This source code is licensed under the ISC license.
|
|
35
35
|
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
-
*/const
|
|
36
|
+
*/const N=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],R1=e("bot",N);/**
|
|
37
37
|
* @license lucide-react v0.515.0 - ISC
|
|
38
38
|
*
|
|
39
39
|
* This source code is licensed under the ISC license.
|
|
40
40
|
* See the LICENSE file in the root directory of this source tree.
|
|
41
|
-
*/const
|
|
41
|
+
*/const g=[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]],T1=e("brain",g);/**
|
|
42
42
|
* @license lucide-react v0.515.0 - ISC
|
|
43
43
|
*
|
|
44
44
|
* This source code is licensed under the ISC license.
|
|
@@ -48,17 +48,17 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
48
48
|
*
|
|
49
49
|
* This source code is licensed under the ISC license.
|
|
50
50
|
* See the LICENSE file in the root directory of this source tree.
|
|
51
|
-
*/const w=[["line",{x1:"18",x2:"18",y1:"20",y2:"10",key:"1xfpm4"}],["line",{x1:"12",x2:"12",y1:"20",y2:"4",key:"be30l9"}],["line",{x1:"6",x2:"6",y1:"20",y2:"14",key:"1r4le6"}]],
|
|
51
|
+
*/const w=[["line",{x1:"18",x2:"18",y1:"20",y2:"10",key:"1xfpm4"}],["line",{x1:"12",x2:"12",y1:"20",y2:"4",key:"be30l9"}],["line",{x1:"6",x2:"6",y1:"20",y2:"14",key:"1r4le6"}]],O1=e("chart-no-axes-column",w);/**
|
|
52
52
|
* @license lucide-react v0.515.0 - ISC
|
|
53
53
|
*
|
|
54
54
|
* This source code is licensed under the ISC license.
|
|
55
55
|
* See the LICENSE file in the root directory of this source tree.
|
|
56
|
-
*/const q=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],
|
|
56
|
+
*/const q=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],G1=e("check",q);/**
|
|
57
57
|
* @license lucide-react v0.515.0 - ISC
|
|
58
58
|
*
|
|
59
59
|
* This source code is licensed under the ISC license.
|
|
60
60
|
* See the LICENSE file in the root directory of this source tree.
|
|
61
|
-
*/const z=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],
|
|
61
|
+
*/const z=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],I1=e("chevron-down",z);/**
|
|
62
62
|
* @license lucide-react v0.515.0 - ISC
|
|
63
63
|
*
|
|
64
64
|
* This source code is licensed under the ISC license.
|
|
@@ -83,112 +83,112 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
83
83
|
*
|
|
84
84
|
* This source code is licensed under the ISC license.
|
|
85
85
|
* See the LICENSE file in the root directory of this source tree.
|
|
86
|
-
*/const A=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9
|
|
86
|
+
*/const A=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],Q1=e("circle-x",A);/**
|
|
87
87
|
* @license lucide-react v0.515.0 - ISC
|
|
88
88
|
*
|
|
89
89
|
* This source code is licensed under the ISC license.
|
|
90
90
|
* See the LICENSE file in the root directory of this source tree.
|
|
91
|
-
*/const
|
|
91
|
+
*/const L=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]],Y1=e("clock",L);/**
|
|
92
92
|
* @license lucide-react v0.515.0 - ISC
|
|
93
93
|
*
|
|
94
94
|
* This source code is licensed under the ISC license.
|
|
95
95
|
* See the LICENSE file in the root directory of this source tree.
|
|
96
|
-
*/const
|
|
96
|
+
*/const V=[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"m8 17 4-4 4 4",key:"1quai1"}]],e2=e("cloud-upload",V);/**
|
|
97
97
|
* @license lucide-react v0.515.0 - ISC
|
|
98
98
|
*
|
|
99
99
|
* This source code is licensed under the ISC license.
|
|
100
100
|
* See the LICENSE file in the root directory of this source tree.
|
|
101
|
-
*/const S=[["
|
|
101
|
+
*/const S=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],a2=e("copy",S);/**
|
|
102
102
|
* @license lucide-react v0.515.0 - ISC
|
|
103
103
|
*
|
|
104
104
|
* This source code is licensed under the ISC license.
|
|
105
105
|
* See the LICENSE file in the root directory of this source tree.
|
|
106
|
-
*/const U=[["
|
|
106
|
+
*/const U=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],t2=e("dollar-sign",U);/**
|
|
107
107
|
* @license lucide-react v0.515.0 - ISC
|
|
108
108
|
*
|
|
109
109
|
* This source code is licensed under the ISC license.
|
|
110
110
|
* See the LICENSE file in the root directory of this source tree.
|
|
111
|
-
*/const Z=[["
|
|
111
|
+
*/const Z=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],o2=e("download",Z);/**
|
|
112
112
|
* @license lucide-react v0.515.0 - ISC
|
|
113
113
|
*
|
|
114
114
|
* This source code is licensed under the ISC license.
|
|
115
115
|
* See the LICENSE file in the root directory of this source tree.
|
|
116
|
-
*/const P=[["
|
|
116
|
+
*/const P=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],c2=e("external-link",P);/**
|
|
117
117
|
* @license lucide-react v0.515.0 - ISC
|
|
118
118
|
*
|
|
119
119
|
* This source code is licensed under the ISC license.
|
|
120
120
|
* See the LICENSE file in the root directory of this source tree.
|
|
121
|
-
*/const
|
|
121
|
+
*/const E=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],n2=e("eye",E);/**
|
|
122
122
|
* @license lucide-react v0.515.0 - ISC
|
|
123
123
|
*
|
|
124
124
|
* This source code is licensed under the ISC license.
|
|
125
125
|
* See the LICENSE file in the root directory of this source tree.
|
|
126
|
-
*/const
|
|
126
|
+
*/const F=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],y2=e("eye-off",F);/**
|
|
127
127
|
* @license lucide-react v0.515.0 - ISC
|
|
128
128
|
*
|
|
129
129
|
* This source code is licensed under the ISC license.
|
|
130
130
|
* See the LICENSE file in the root directory of this source tree.
|
|
131
|
-
*/const
|
|
131
|
+
*/const B=[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]],s2=e("file-code",B);/**
|
|
132
132
|
* @license lucide-react v0.515.0 - ISC
|
|
133
133
|
*
|
|
134
134
|
* This source code is licensed under the ISC license.
|
|
135
135
|
* See the LICENSE file in the root directory of this source tree.
|
|
136
|
-
*/const R=[["path",{d:"
|
|
136
|
+
*/const R=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],d2=e("file-text",R);/**
|
|
137
137
|
* @license lucide-react v0.515.0 - ISC
|
|
138
138
|
*
|
|
139
139
|
* This source code is licensed under the ISC license.
|
|
140
140
|
* See the LICENSE file in the root directory of this source tree.
|
|
141
|
-
*/const T=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]
|
|
141
|
+
*/const T=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]],h2=e("file",T);/**
|
|
142
142
|
* @license lucide-react v0.515.0 - ISC
|
|
143
143
|
*
|
|
144
144
|
* This source code is licensed under the ISC license.
|
|
145
145
|
* See the LICENSE file in the root directory of this source tree.
|
|
146
|
-
*/const D=[["path",{d:"
|
|
146
|
+
*/const D=[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["path",{d:"M18 19c-2.8 0-5-2.2-5-5v8",key:"pkpw2h"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]],k2=e("folder-git-2",D);/**
|
|
147
147
|
* @license lucide-react v0.515.0 - ISC
|
|
148
148
|
*
|
|
149
149
|
* This source code is licensed under the ISC license.
|
|
150
150
|
* See the LICENSE file in the root directory of this source tree.
|
|
151
|
-
*/const
|
|
151
|
+
*/const O=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],i2=e("folder-open",O);/**
|
|
152
152
|
* @license lucide-react v0.515.0 - ISC
|
|
153
153
|
*
|
|
154
154
|
* This source code is licensed under the ISC license.
|
|
155
155
|
* See the LICENSE file in the root directory of this source tree.
|
|
156
|
-
*/const
|
|
156
|
+
*/const G=[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],l2=e("folder-plus",G);/**
|
|
157
157
|
* @license lucide-react v0.515.0 - ISC
|
|
158
158
|
*
|
|
159
159
|
* This source code is licensed under the ISC license.
|
|
160
160
|
* See the LICENSE file in the root directory of this source tree.
|
|
161
|
-
*/const
|
|
161
|
+
*/const I=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],r2=e("folder",I);/**
|
|
162
162
|
* @license lucide-react v0.515.0 - ISC
|
|
163
163
|
*
|
|
164
164
|
* This source code is licensed under the ISC license.
|
|
165
165
|
* See the LICENSE file in the root directory of this source tree.
|
|
166
|
-
*/const K=[["path",{d:"
|
|
166
|
+
*/const K=[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]],p2=e("git-branch",K);/**
|
|
167
167
|
* @license lucide-react v0.515.0 - ISC
|
|
168
168
|
*
|
|
169
169
|
* This source code is licensed under the ISC license.
|
|
170
170
|
* See the LICENSE file in the root directory of this source tree.
|
|
171
|
-
*/const W=[["
|
|
171
|
+
*/const W=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],x2=e("globe",W);/**
|
|
172
172
|
* @license lucide-react v0.515.0 - ISC
|
|
173
173
|
*
|
|
174
174
|
* This source code is licensed under the ISC license.
|
|
175
175
|
* See the LICENSE file in the root directory of this source tree.
|
|
176
|
-
*/const X=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12
|
|
176
|
+
*/const X=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],_2=e("info",X);/**
|
|
177
177
|
* @license lucide-react v0.515.0 - ISC
|
|
178
178
|
*
|
|
179
179
|
* This source code is licensed under the ISC license.
|
|
180
180
|
* See the LICENSE file in the root directory of this source tree.
|
|
181
|
-
*/const J=[["
|
|
181
|
+
*/const J=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],M2=e("key",J);/**
|
|
182
182
|
* @license lucide-react v0.515.0 - ISC
|
|
183
183
|
*
|
|
184
184
|
* This source code is licensed under the ISC license.
|
|
185
185
|
* See the LICENSE file in the root directory of this source tree.
|
|
186
|
-
*/const Q=[["path",{d:"
|
|
186
|
+
*/const Q=[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]],m2=e("languages",Q);/**
|
|
187
187
|
* @license lucide-react v0.515.0 - ISC
|
|
188
188
|
*
|
|
189
189
|
* This source code is licensed under the ISC license.
|
|
190
190
|
* See the LICENSE file in the root directory of this source tree.
|
|
191
|
-
*/const Y=[["path",{d:"
|
|
191
|
+
*/const Y=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],v2=e("link-2",Y);/**
|
|
192
192
|
* @license lucide-react v0.515.0 - ISC
|
|
193
193
|
*
|
|
194
194
|
* This source code is licensed under the ISC license.
|
|
@@ -203,17 +203,17 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
203
203
|
*
|
|
204
204
|
* This source code is licensed under the ISC license.
|
|
205
205
|
* See the LICENSE file in the root directory of this source tree.
|
|
206
|
-
*/const t1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],
|
|
206
|
+
*/const t1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],N2=e("log-out",t1);/**
|
|
207
207
|
* @license lucide-react v0.515.0 - ISC
|
|
208
208
|
*
|
|
209
209
|
* This source code is licensed under the ISC license.
|
|
210
210
|
* See the LICENSE file in the root directory of this source tree.
|
|
211
|
-
*/const
|
|
211
|
+
*/const o1=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],g2=e("mail",o1);/**
|
|
212
212
|
* @license lucide-react v0.515.0 - ISC
|
|
213
213
|
*
|
|
214
214
|
* This source code is licensed under the ISC license.
|
|
215
215
|
* See the LICENSE file in the root directory of this source tree.
|
|
216
|
-
*/const
|
|
216
|
+
*/const c1=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],f2=e("maximize-2",c1);/**
|
|
217
217
|
* @license lucide-react v0.515.0 - ISC
|
|
218
218
|
*
|
|
219
219
|
* This source code is licensed under the ISC license.
|
|
@@ -258,12 +258,12 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
258
258
|
*
|
|
259
259
|
* This source code is licensed under the ISC license.
|
|
260
260
|
* See the LICENSE file in the root directory of this source tree.
|
|
261
|
-
*/const r1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],
|
|
261
|
+
*/const r1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],L2=e("refresh-cw",r1);/**
|
|
262
262
|
* @license lucide-react v0.515.0 - ISC
|
|
263
263
|
*
|
|
264
264
|
* This source code is licensed under the ISC license.
|
|
265
265
|
* See the LICENSE file in the root directory of this source tree.
|
|
266
|
-
*/const p1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],
|
|
266
|
+
*/const p1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],V2=e("rotate-ccw",p1);/**
|
|
267
267
|
* @license lucide-react v0.515.0 - ISC
|
|
268
268
|
*
|
|
269
269
|
* This source code is licensed under the ISC license.
|
|
@@ -288,27 +288,27 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
288
288
|
*
|
|
289
289
|
* This source code is licensed under the ISC license.
|
|
290
290
|
* See the LICENSE file in the root directory of this source tree.
|
|
291
|
-
*/const v1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],
|
|
291
|
+
*/const v1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],E2=e("shield-check",v1);/**
|
|
292
292
|
* @license lucide-react v0.515.0 - ISC
|
|
293
293
|
*
|
|
294
294
|
* This source code is licensed under the ISC license.
|
|
295
295
|
* See the LICENSE file in the root directory of this source tree.
|
|
296
|
-
*/const u1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],
|
|
296
|
+
*/const u1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],F2=e("shield",u1);/**
|
|
297
297
|
* @license lucide-react v0.515.0 - ISC
|
|
298
298
|
*
|
|
299
299
|
* This source code is licensed under the ISC license.
|
|
300
300
|
* See the LICENSE file in the root directory of this source tree.
|
|
301
|
-
*/const $1=[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]],
|
|
301
|
+
*/const $1=[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]],B2=e("sliders-horizontal",$1);/**
|
|
302
302
|
* @license lucide-react v0.515.0 - ISC
|
|
303
303
|
*
|
|
304
304
|
* This source code is licensed under the ISC license.
|
|
305
305
|
* See the LICENSE file in the root directory of this source tree.
|
|
306
|
-
*/const
|
|
306
|
+
*/const N1=[["line",{x1:"4",x2:"4",y1:"21",y2:"14",key:"1p332r"}],["line",{x1:"4",x2:"4",y1:"10",y2:"3",key:"gb41h5"}],["line",{x1:"12",x2:"12",y1:"21",y2:"12",key:"hf2csr"}],["line",{x1:"12",x2:"12",y1:"8",y2:"3",key:"1kfi7u"}],["line",{x1:"20",x2:"20",y1:"21",y2:"16",key:"1lhrwl"}],["line",{x1:"20",x2:"20",y1:"12",y2:"3",key:"16vvfq"}],["line",{x1:"2",x2:"6",y1:"14",y2:"14",key:"1uebub"}],["line",{x1:"10",x2:"14",y1:"8",y2:"8",key:"1yglbp"}],["line",{x1:"18",x2:"22",y1:"16",y2:"16",key:"1jxqpz"}]],R2=e("sliders-vertical",N1);/**
|
|
307
307
|
* @license lucide-react v0.515.0 - ISC
|
|
308
308
|
*
|
|
309
309
|
* This source code is licensed under the ISC license.
|
|
310
310
|
* See the LICENSE file in the root directory of this source tree.
|
|
311
|
-
*/const
|
|
311
|
+
*/const g1=[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]],T2=e("sparkles",g1);/**
|
|
312
312
|
* @license lucide-react v0.515.0 - ISC
|
|
313
313
|
*
|
|
314
314
|
* This source code is licensed under the ISC license.
|
|
@@ -318,17 +318,17 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
318
318
|
*
|
|
319
319
|
* This source code is licensed under the ISC license.
|
|
320
320
|
* See the LICENSE file in the root directory of this source tree.
|
|
321
|
-
*/const w1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],
|
|
321
|
+
*/const w1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],O2=e("sun",w1);/**
|
|
322
322
|
* @license lucide-react v0.515.0 - ISC
|
|
323
323
|
*
|
|
324
324
|
* This source code is licensed under the ISC license.
|
|
325
325
|
* See the LICENSE file in the root directory of this source tree.
|
|
326
|
-
*/const q1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],
|
|
326
|
+
*/const q1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],G2=e("terminal",q1);/**
|
|
327
327
|
* @license lucide-react v0.515.0 - ISC
|
|
328
328
|
*
|
|
329
329
|
* This source code is licensed under the ISC license.
|
|
330
330
|
* See the LICENSE file in the root directory of this source tree.
|
|
331
|
-
*/const z1=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],
|
|
331
|
+
*/const z1=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],I2=e("trash-2",z1);/**
|
|
332
332
|
* @license lucide-react v0.515.0 - ISC
|
|
333
333
|
*
|
|
334
334
|
* This source code is licensed under the ISC license.
|
|
@@ -358,12 +358,12 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
358
358
|
*
|
|
359
359
|
* This source code is licensed under the ISC license.
|
|
360
360
|
* See the LICENSE file in the root directory of this source tree.
|
|
361
|
-
*/const
|
|
361
|
+
*/const L1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]],Y2=e("user-plus",L1);/**
|
|
362
362
|
* @license lucide-react v0.515.0 - ISC
|
|
363
363
|
*
|
|
364
364
|
* This source code is licensed under the ISC license.
|
|
365
365
|
* See the LICENSE file in the root directory of this source tree.
|
|
366
|
-
*/const
|
|
366
|
+
*/const V1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"17",x2:"22",y1:"8",y2:"13",key:"3nzzx3"}],["line",{x1:"22",x2:"17",y1:"8",y2:"13",key:"1swrse"}]],e0=e("user-x",V1);/**
|
|
367
367
|
* @license lucide-react v0.515.0 - ISC
|
|
368
368
|
*
|
|
369
369
|
* This source code is licensed under the ISC license.
|
|
@@ -378,9 +378,9 @@ import{a as y}from"./vendor-react-Bv0Nkan8.js";/**
|
|
|
378
378
|
*
|
|
379
379
|
* This source code is licensed under the ISC license.
|
|
380
380
|
* See the LICENSE file in the root directory of this source tree.
|
|
381
|
-
*/const Z1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],
|
|
381
|
+
*/const Z1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],o0=e("x",Z1);/**
|
|
382
382
|
* @license lucide-react v0.515.0 - ISC
|
|
383
383
|
*
|
|
384
384
|
* This source code is licensed under the ISC license.
|
|
385
385
|
* See the LICENSE file in the root directory of this source tree.
|
|
386
|
-
*/const P1=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],
|
|
386
|
+
*/const P1=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],c0=e("zap",P1);export{M2 as $,c2 as A,R1 as B,X1 as C,o2 as D,n2 as E,l2 as F,p2 as G,B1 as H,_2 as I,k2 as J,e2 as K,u2 as L,q2 as M,W1 as N,Q1 as O,j2 as P,J1 as Q,L2 as R,U2 as S,W2 as T,X2 as U,b2 as V,O2 as W,o0 as X,F1 as Y,c0 as Z,m2 as _,T2 as a,a2 as a0,N2 as a1,V2 as a2,C2 as a3,Y2 as a4,D1 as a5,t2 as a6,O1 as a7,Q2 as a8,B2 as a9,e0 as aa,J2 as ab,a0 as ac,E2 as ad,g2 as ae,t0 as af,K2 as ag,R2 as ah,$2 as ai,d2 as b,Z2 as c,I1 as d,K1 as e,r2 as f,i2 as g,G1 as h,D2 as i,I2 as j,Y1 as k,H2 as l,A2 as m,P2 as n,F2 as o,T1 as p,S2 as q,z2 as r,f2 as s,y2 as t,v2 as u,h2 as v,s2 as w,w2 as x,G2 as y,x2 as z};
|
package/dist/index.html
CHANGED
|
@@ -25,16 +25,16 @@
|
|
|
25
25
|
|
|
26
26
|
<!-- Prevent zoom on iOS -->
|
|
27
27
|
<meta name="format-detection" content="telephone=no" />
|
|
28
|
-
<script type="module" crossorigin src="/assets/index-
|
|
28
|
+
<script type="module" crossorigin src="/assets/index-B5imuFpg.js"></script>
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-Bv0Nkan8.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-sVRjxPVQ.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/vendor-utils-00TdZexr.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-icons-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-icons-DUmFlkZ8.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/vendor-katex-DK8hFnhL.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/vendor-markdown-CjscLcYM.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/vendor-syntax-BKENXTeY.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/vendor-xterm-CvdiG4-n.js">
|
|
37
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
37
|
+
<link rel="stylesheet" crossorigin href="/assets/index-oUz7uC99.css">
|
|
38
38
|
</head>
|
|
39
39
|
<body>
|
|
40
40
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ian2018cs/agenthub",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.75",
|
|
4
4
|
"description": "A web-based UI for AI Agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "server/index.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@anthropic-ai/claude-agent-sdk": "^0.2.
|
|
54
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.77",
|
|
55
55
|
"@codemirror/lang-css": "^6.3.1",
|
|
56
56
|
"@codemirror/lang-html": "^6.4.9",
|
|
57
57
|
"@codemirror/lang-javascript": "^6.2.4",
|
package/server/claude-sdk.js
CHANGED
|
@@ -890,6 +890,18 @@ async function queryClaudeSDK(command, options = {}, ws) {
|
|
|
890
890
|
console.log('No session_id in message or already captured. message.session_id:', message.session_id, 'capturedSessionId:', capturedSessionId);
|
|
891
891
|
}
|
|
892
892
|
|
|
893
|
+
// Handle api_retry system messages specially
|
|
894
|
+
if (message.type === 'system' && message.subtype === 'api_retry') {
|
|
895
|
+
mutableWriter.send({
|
|
896
|
+
type: 'claude-api-retry',
|
|
897
|
+
attempt: message.attempt,
|
|
898
|
+
maxRetries: message.max_retries,
|
|
899
|
+
retryDelayMs: message.retry_delay_ms,
|
|
900
|
+
errorStatus: message.error_status
|
|
901
|
+
});
|
|
902
|
+
continue;
|
|
903
|
+
}
|
|
904
|
+
|
|
893
905
|
// Transform and send message to WebSocket
|
|
894
906
|
const transformedMessage = transformMessage(message);
|
|
895
907
|
mutableWriter.send({
|
package/server/index.js
CHANGED
|
@@ -670,8 +670,9 @@ app.put('/api/projects/:projectName/file', authenticateToken, async (req, res) =
|
|
|
670
670
|
app.get('/api/projects/:projectName/files', authenticateToken, async (req, res) => {
|
|
671
671
|
try {
|
|
672
672
|
// Query parameters for lazy loading
|
|
673
|
-
const { dirPath, depth = '1' } = req.query;
|
|
673
|
+
const { dirPath, depth = '1', showHidden = 'false' } = req.query;
|
|
674
674
|
const maxDepth = Math.min(parseInt(depth) || 1, 10); // Limit max depth to 10
|
|
675
|
+
const showHiddenFiles = showHidden === 'true';
|
|
675
676
|
|
|
676
677
|
// Use extractProjectDirectory to get the actual project path
|
|
677
678
|
let projectPath;
|
|
@@ -701,7 +702,7 @@ app.get('/api/projects/:projectName/files', authenticateToken, async (req, res)
|
|
|
701
702
|
return res.status(404).json({ error: `Path not found: ${targetPath}` });
|
|
702
703
|
}
|
|
703
704
|
|
|
704
|
-
const files = await getFileTree(targetPath, maxDepth, 0,
|
|
705
|
+
const files = await getFileTree(targetPath, maxDepth, 0, showHiddenFiles);
|
|
705
706
|
res.json(files);
|
|
706
707
|
} catch (error) {
|
|
707
708
|
console.error('[ERROR] File tree error:', error.message);
|
|
@@ -2361,14 +2362,36 @@ async function getFileTree(dirPath, maxDepth = 1, currentDepth = 0, showHidden =
|
|
|
2361
2362
|
for (const entry of entries) {
|
|
2362
2363
|
// Skip heavy build directories and VCS directories
|
|
2363
2364
|
if (SKIP_DIRECTORIES.has(entry.name)) continue;
|
|
2365
|
+
// Skip hidden files/dirs when showHidden is false
|
|
2366
|
+
if (!showHidden && entry.name.startsWith('.')) continue;
|
|
2364
2367
|
|
|
2365
2368
|
const itemPath = path.join(dirPath, entry.name);
|
|
2369
|
+
const isSymlink = entry.isSymbolicLink();
|
|
2366
2370
|
const item = {
|
|
2367
2371
|
name: entry.name,
|
|
2368
2372
|
path: itemPath,
|
|
2369
|
-
type: entry.isDirectory() ? 'directory' : 'file'
|
|
2373
|
+
type: entry.isDirectory() ? 'directory' : 'file',
|
|
2374
|
+
isSymlink,
|
|
2370
2375
|
};
|
|
2371
2376
|
|
|
2377
|
+
// Resolve symlink target and actual type
|
|
2378
|
+
if (isSymlink) {
|
|
2379
|
+
try {
|
|
2380
|
+
item.symlinkTarget = await fsPromises.readlink(itemPath);
|
|
2381
|
+
} catch {
|
|
2382
|
+
item.symlinkTarget = null;
|
|
2383
|
+
}
|
|
2384
|
+
try {
|
|
2385
|
+
// stat() follows the symlink to get target info
|
|
2386
|
+
const targetStats = await fsPromises.stat(itemPath);
|
|
2387
|
+
item.type = targetStats.isDirectory() ? 'directory' : 'file';
|
|
2388
|
+
} catch {
|
|
2389
|
+
// Broken symlink — keep as 'file', mark broken
|
|
2390
|
+
item.type = 'file';
|
|
2391
|
+
item.isBrokenSymlink = true;
|
|
2392
|
+
}
|
|
2393
|
+
}
|
|
2394
|
+
|
|
2372
2395
|
// Get file stats for additional metadata
|
|
2373
2396
|
try {
|
|
2374
2397
|
const stats = await fsPromises.stat(itemPath);
|
|
@@ -2383,14 +2406,14 @@ async function getFileTree(dirPath, maxDepth = 1, currentDepth = 0, showHidden =
|
|
|
2383
2406
|
item.permissions = ((mode >> 6) & 7).toString() + ((mode >> 3) & 7).toString() + (mode & 7).toString();
|
|
2384
2407
|
item.permissionsRwx = permToRwx(ownerPerm) + permToRwx(groupPerm) + permToRwx(otherPerm);
|
|
2385
2408
|
} catch (statError) {
|
|
2386
|
-
// If stat fails, provide default values
|
|
2409
|
+
// If stat fails (e.g. broken symlink), provide default values
|
|
2387
2410
|
item.size = 0;
|
|
2388
2411
|
item.modified = null;
|
|
2389
2412
|
item.permissions = '000';
|
|
2390
2413
|
item.permissionsRwx = '---------';
|
|
2391
2414
|
}
|
|
2392
2415
|
|
|
2393
|
-
if (
|
|
2416
|
+
if (item.type === 'directory') {
|
|
2394
2417
|
// For lazy loading: check if directory has children without loading them
|
|
2395
2418
|
if (currentDepth >= maxDepth) {
|
|
2396
2419
|
// Don't load children, just check if they exist
|
package/server/projects.js
CHANGED
|
@@ -903,6 +903,9 @@ async function deleteProject(projectName, userUuid, options = {}) {
|
|
|
903
903
|
actualProjectDir = await extractProjectDirectory(projectName, userUuid);
|
|
904
904
|
}
|
|
905
905
|
|
|
906
|
+
// Also resolve the actual path to clean up .claude.json project-scoped MCPs
|
|
907
|
+
const resolvedProjectDir = actualProjectDir || await extractProjectDirectory(projectName, userUuid).catch(() => null);
|
|
908
|
+
|
|
906
909
|
// Remove the Claude sessions directory
|
|
907
910
|
try {
|
|
908
911
|
await fs.rm(sessionDir, { recursive: true, force: true });
|
|
@@ -917,6 +920,21 @@ async function deleteProject(projectName, userUuid, options = {}) {
|
|
|
917
920
|
delete config[projectName];
|
|
918
921
|
await saveProjectConfig(config, userUuid);
|
|
919
922
|
|
|
923
|
+
// Clean up project-scoped MCP servers from .claude.json
|
|
924
|
+
if (resolvedProjectDir) {
|
|
925
|
+
try {
|
|
926
|
+
const claudeJsonPath = path.join(getUserPaths(userUuid).claudeDir, '.claude.json');
|
|
927
|
+
const claudeConfig = JSON.parse(await fs.readFile(claudeJsonPath, 'utf-8'));
|
|
928
|
+
if (claudeConfig.projects?.[resolvedProjectDir]) {
|
|
929
|
+
delete claudeConfig.projects[resolvedProjectDir];
|
|
930
|
+
await fs.writeFile(claudeJsonPath, JSON.stringify(claudeConfig, null, 2), 'utf-8');
|
|
931
|
+
}
|
|
932
|
+
} catch (err) {
|
|
933
|
+
// Non-fatal: log and continue
|
|
934
|
+
console.error(`[deleteProject] Failed to clean up .claude.json for ${resolvedProjectDir}:`, err.message);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
|
|
920
938
|
// Optionally delete the actual project folder
|
|
921
939
|
if (deleteFolder && actualProjectDir) {
|
|
922
940
|
try {
|