@kaitranntt/ccs 8.1.0-dev.5 → 8.1.0-dev.6
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/channels/official-channels-runtime.js +1 -1
- package/dist/channels/official-channels-runtime.js.map +1 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts.map +1 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js +16 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +6 -1
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/proxy/proxy-config-resolver.d.ts.map +1 -1
- package/dist/cliproxy/proxy/proxy-config-resolver.js +11 -1
- package/dist/cliproxy/proxy/proxy-config-resolver.js.map +1 -1
- package/dist/commands/config-channels-command.d.ts +1 -4
- package/dist/commands/config-channels-command.d.ts.map +1 -1
- package/dist/commands/config-channels-command.js +20 -24
- package/dist/commands/config-channels-command.js.map +1 -1
- package/dist/cursor/cursor-daemon-auth.d.ts +2 -0
- package/dist/cursor/cursor-daemon-auth.d.ts.map +1 -0
- package/dist/cursor/cursor-daemon-auth.js +49 -0
- package/dist/cursor/cursor-daemon-auth.js.map +1 -0
- package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon-entry.js +44 -0
- package/dist/cursor/cursor-daemon-entry.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts +2 -1
- package/dist/cursor/cursor-daemon.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon.js +21 -5
- package/dist/cursor/cursor-daemon.js.map +1 -1
- package/dist/cursor/cursor-models.d.ts.map +1 -1
- package/dist/cursor/cursor-models.js +2 -1
- package/dist/cursor/cursor-models.js.map +1 -1
- package/dist/cursor/cursor-profile-executor.d.ts +1 -1
- package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
- package/dist/cursor/cursor-profile-executor.js +7 -4
- package/dist/cursor/cursor-profile-executor.js.map +1 -1
- package/dist/cursor/cursor-runtime-probe.d.ts.map +1 -1
- package/dist/cursor/cursor-runtime-probe.js +4 -2
- package/dist/cursor/cursor-runtime-probe.js.map +1 -1
- package/dist/cursor/types.d.ts +1 -0
- package/dist/cursor/types.d.ts.map +1 -1
- package/dist/glmt/sse-parser.d.ts +1 -0
- package/dist/glmt/sse-parser.d.ts.map +1 -1
- package/dist/glmt/sse-parser.js +13 -1
- package/dist/glmt/sse-parser.js.map +1 -1
- package/dist/shared/claude-extension-setup.d.ts.map +1 -1
- package/dist/shared/claude-extension-setup.js +2 -1
- package/dist/shared/claude-extension-setup.js.map +1 -1
- package/dist/targets/codex-adapter.js +1 -1
- package/dist/targets/codex-adapter.js.map +1 -1
- package/dist/ui/assets/{Trans-DyZQZ3e2.js → Trans-Di5ROrcY.js} +1 -1
- package/dist/ui/assets/{accounts-BPJltru3.js → accounts-CXxIrCwi.js} +1 -1
- package/dist/ui/assets/{alert-dialog-DWHL-dqd.js → alert-dialog-BZehL4wx.js} +1 -1
- package/dist/ui/assets/{api-BxPN-zy4.js → api-Dolv94iF.js} +1 -1
- package/dist/ui/assets/{auth-section-B4o90dwz.js → auth-section-DKJ5aBoY.js} +1 -1
- package/dist/ui/assets/{backups-section-1AsdSIJO.js → backups-section-eJJx7JLp.js} +1 -1
- package/dist/ui/assets/{channels-CU4Zdsc_.js → channels-Djz0-bJE.js} +1 -1
- package/dist/ui/assets/{checkbox-CbCKGH8I.js → checkbox-DG_xg3eG.js} +1 -1
- package/dist/ui/assets/{claude-extension-CWpjmIGt.js → claude-extension-Cy9qLj_7.js} +1 -1
- package/dist/ui/assets/{cliproxy-K6eBb5VO.js → cliproxy-BEXh5jJr.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-Dr4L5NRY.js → cliproxy-ai-providers-QnibyE1_.js} +1 -1
- package/dist/ui/assets/cliproxy-control-panel-BYNwcgrf.js +1 -0
- package/dist/ui/assets/{codex-0HdbW8NR.js → codex-C4imOxu_.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-b5Dahgnk.js → confirm-dialog-B7lRez6q.js} +1 -1
- package/dist/ui/assets/{copilot-B1Ojakbt.js → copilot-CtPGqv0X.js} +1 -1
- package/dist/ui/assets/{cursor-PUtNVPx1.js → cursor-C5o_X8TR.js} +1 -1
- package/dist/ui/assets/{droid-S2gclncb.js → droid-B5Bi78eR.js} +1 -1
- package/dist/ui/assets/{globalenv-section-7wKSmNSG.js → globalenv-section-DaQZNPpW.js} +1 -1
- package/dist/ui/assets/{health-hMLN_gyw.js → health-BV1EhsAF.js} +1 -1
- package/dist/ui/assets/{index-Cx0dmbiQ.js → index-BIt0Nf4X.js} +1 -1
- package/dist/ui/assets/{index-CcGVqYOy.js → index-BJ1ahfYc.js} +2 -2
- package/dist/ui/assets/{index-COt1pbk-.js → index-CGnaVkLr.js} +1 -1
- package/dist/ui/assets/{index-CxvNNHgE.js → index-CIjddtqJ.js} +1 -1
- package/dist/ui/assets/{index-Coc3_ABK.js → index-CkQRwUAu.js} +1 -1
- package/dist/ui/assets/{index-BWboJia4.js → index-Cpyc2Ydf.js} +1 -1
- package/dist/ui/assets/{index-DkR2KVhF.js → index-DecRICDx.js} +1 -1
- package/dist/ui/assets/{logs-BRFVfyLc.js → logs-DhppEGsJ.js} +1 -1
- package/dist/ui/assets/{masked-input-4L9CIZGb.js → masked-input-D0qX6KX5.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-s1UWOE23.js → proxy-status-widget-D1v3_y4-.js} +1 -1
- package/dist/ui/assets/{raw-json-settings-editor-panel-DXh8c8rA.js → raw-json-settings-editor-panel-CJT2Kd03.js} +1 -1
- package/dist/ui/assets/{searchable-select-CtvEQrMo.js → searchable-select-Pc4fXxkq.js} +1 -1
- package/dist/ui/assets/{separator-E0ISp1SN.js → separator-ptbOvvEZ.js} +1 -1
- package/dist/ui/assets/{shared-BeYwHeNS.js → shared-BIcL0QaI.js} +1 -1
- package/dist/ui/assets/{table-BBslZvNP.js → table-CvmOeY-p.js} +1 -1
- package/dist/ui/assets/{updates-CDrm903n.js → updates-CcrvA9HB.js} +1 -1
- package/dist/ui/assets/{use-accounts-BdalFsdY.js → use-accounts-DZcJPKy-.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/utils/browser/browser-settings.d.ts.map +1 -1
- package/dist/utils/browser/browser-settings.js +13 -3
- package/dist/utils/browser/browser-settings.js.map +1 -1
- package/dist/utils/glmt-deprecation.d.ts.map +1 -1
- package/dist/utils/glmt-deprecation.js +1 -3
- package/dist/utils/glmt-deprecation.js.map +1 -1
- package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
- package/dist/web-server/middleware/auth-middleware.js +26 -4
- package/dist/web-server/middleware/auth-middleware.js.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.js +25 -8
- package/dist/web-server/routes/cliproxy-local-proxy.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-routes.js +6 -1
- package/dist/web-server/routes/cursor-routes.js.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.js +7 -0
- package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/settings-routes.js +10 -1
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/services/claude-extension-settings-service.d.ts.map +1 -1
- package/dist/web-server/services/claude-extension-settings-service.js +5 -1
- package/dist/web-server/services/claude-extension-settings-service.js.map +1 -1
- package/lib/mcp/ccs-browser-server.cjs +24 -13
- package/package.json +1 -1
- package/dist/ui/assets/cliproxy-control-panel-Cz5r7kHP.js +0 -1
|
@@ -159,6 +159,8 @@ const DEFAULT_WAIT_TIMEOUT_MS = 2000;
|
|
|
159
159
|
const DEFAULT_WAIT_POLL_INTERVAL_MS = 100;
|
|
160
160
|
const DEFAULT_DRAG_STEPS = 5;
|
|
161
161
|
const MAX_POINTER_ACTIONS = 25;
|
|
162
|
+
const MAX_CLICK_COUNT = 25;
|
|
163
|
+
const MAX_KEY_REPEAT = 25;
|
|
162
164
|
const SESSION_START_SETTLE_WINDOW_MS = 250;
|
|
163
165
|
const MAX_ARTIFACT_FILE_BYTES = 5 * 1024 * 1024;
|
|
164
166
|
const MAX_LOCAL_TRANSFER_FILE_BYTES = 10 * 1024 * 1024;
|
|
@@ -454,6 +456,7 @@ function getTools() {
|
|
|
454
456
|
clickCount: {
|
|
455
457
|
type: 'integer',
|
|
456
458
|
minimum: 1,
|
|
459
|
+
maximum: MAX_CLICK_COUNT,
|
|
457
460
|
description: 'Optional click count. Defaults to 1.',
|
|
458
461
|
},
|
|
459
462
|
},
|
|
@@ -519,6 +522,7 @@ function getTools() {
|
|
|
519
522
|
repeat: {
|
|
520
523
|
type: 'integer',
|
|
521
524
|
minimum: 1,
|
|
525
|
+
maximum: MAX_KEY_REPEAT,
|
|
522
526
|
description: 'Optional repeat count. Defaults to 1.',
|
|
523
527
|
},
|
|
524
528
|
},
|
|
@@ -2305,10 +2309,13 @@ function requirePositiveIntegerOrDefault(value, label, fallback) {
|
|
|
2305
2309
|
return value;
|
|
2306
2310
|
}
|
|
2307
2311
|
|
|
2308
|
-
function requirePositiveInteger(value, label) {
|
|
2312
|
+
function requirePositiveInteger(value, label, maximum = undefined) {
|
|
2309
2313
|
if (!Number.isInteger(value) || value <= 0) {
|
|
2310
2314
|
throw new Error(`${label} must be a positive integer`);
|
|
2311
2315
|
}
|
|
2316
|
+
if (maximum !== undefined && value > maximum) {
|
|
2317
|
+
throw new Error(`${label} must be less than or equal to ${maximum}`);
|
|
2318
|
+
}
|
|
2312
2319
|
return value;
|
|
2313
2320
|
}
|
|
2314
2321
|
|
|
@@ -3555,7 +3562,7 @@ async function handleClick(toolArgs) {
|
|
|
3555
3562
|
const clickCount =
|
|
3556
3563
|
toolArgs.clickCount === undefined
|
|
3557
3564
|
? 1
|
|
3558
|
-
: requirePositiveInteger(toolArgs.clickCount, 'clickCount');
|
|
3565
|
+
: requirePositiveInteger(toolArgs.clickCount, 'clickCount', MAX_CLICK_COUNT);
|
|
3559
3566
|
|
|
3560
3567
|
const expression = `(() => {
|
|
3561
3568
|
const selector = JSON.parse(${JSON.stringify(JSON.stringify(selector))});
|
|
@@ -3805,7 +3812,9 @@ async function handlePressKey(toolArgs) {
|
|
|
3805
3812
|
'Shift',
|
|
3806
3813
|
]);
|
|
3807
3814
|
const repeat =
|
|
3808
|
-
toolArgs.repeat === undefined
|
|
3815
|
+
toolArgs.repeat === undefined
|
|
3816
|
+
? 1
|
|
3817
|
+
: requirePositiveInteger(toolArgs.repeat, 'repeat', MAX_KEY_REPEAT);
|
|
3809
3818
|
const modifierMask =
|
|
3810
3819
|
(modifiers.includes('Alt') ? 1 : 0) |
|
|
3811
3820
|
(modifiers.includes('Control') ? 2 : 0) |
|
|
@@ -5097,16 +5106,18 @@ async function ensureInterceptSession(page) {
|
|
|
5097
5106
|
})
|
|
5098
5107
|
);
|
|
5099
5108
|
}
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5106
|
-
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5109
|
+
if (matchedRule) {
|
|
5110
|
+
pushRecentRequest({
|
|
5111
|
+
requestId: String(paused.requestId || ''),
|
|
5112
|
+
pageId: page.id,
|
|
5113
|
+
url: String(paused.request?.url || ''),
|
|
5114
|
+
method: String(paused.request?.method || ''),
|
|
5115
|
+
resourceType: String(paused.resourceType || ''),
|
|
5116
|
+
matchedRuleId: matchedRule.ruleId,
|
|
5117
|
+
action,
|
|
5118
|
+
statusCode: action === 'fulfill' ? matchedRule.statusCode : 0,
|
|
5119
|
+
});
|
|
5120
|
+
}
|
|
5110
5121
|
})();
|
|
5111
5122
|
activityChain = activityChain
|
|
5112
5123
|
.catch(() => {})
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./radix-ui-nu4wz29m.js";import{r as s}from"./react-vendor-Bjx91N7w.js";import{u as S}from"./tanstack-bhJxV1h8.js";import{a as D,bf as g,Z as I}from"./index-CcGVqYOy.js";import{C as _}from"./default-ports-1QQSffYX.js";import{G as Q,R as $,w as X}from"./icons-DzKUh8vG.js";import"./notifications-B4_o8bcr.js";import"./utils-CzKF5WmX.js";import"./form-utils-CuHzLhJZ.js";import"./charts-eIPy2oG6.js";const k="cli-proxy-auth",O="isLoggedIn",U="apiBase",K="apiUrl",F="managementKey";function A(a){return a.startsWith("/")?new URL(a.replace(/\/$/,""),window.location.origin).href:a.replace(/\/$/,"")}function Z(a,u){window.localStorage.removeItem(k),window.localStorage.setItem(U,a),window.localStorage.setItem(K,a),window.localStorage.setItem(F,u),window.localStorage.setItem(O,"true")}function T(){window.localStorage.removeItem(k),window.localStorage.removeItem(U),window.localStorage.removeItem(K),window.localStorage.removeItem(F),window.localStorage.removeItem(O)}function J({port:a=_}){const{t:u}=D(),f=s.useRef(null),[M,N]=s.useState(null),[B,G]=s.useState(0),[L,v]=s.useState(null),[H,E]=s.useState(!1),{data:l,error:w}=S({queryKey:["cliproxy-server-config"],queryFn:()=>I.cliproxyServer.get(),staleTime:3e4});s.useEffect(()=>{w&&console.warn("[ControlPanelEmbed] Config fetch failed, using local mode:",w)},[w]);const j=!!(l?.remote?.enabled&&l?.remote?.host),{data:y,error:x}=S({queryKey:["auth-tokens-raw",j?"remote":"local"],enabled:l!==void 0&&!j,queryFn:async()=>{try{const t=await fetch(g("/settings/auth/tokens/raw"));if(!t.ok)throw new Error("Failed to fetch auth tokens");const n=await t.json(),o=n.managementSecret.value.trim();if(!o)throw new Error("Management secret missing");return Z(A(g("/cliproxy-local/")),o),n}catch(t){throw T(),t}},staleTime:3e4}),{managementUrl:R,checkUrl:h,authToken:b,isRemote:i,displayHost:c}=s.useMemo(()=>{const t=l?.remote,n=l?.local?.port??a;if(t?.enabled&&t?.host){const o=t.protocol||"http",m=t.port||(o==="https"?443:_),p=o==="https"&&m===443||o==="http"&&m===80?"":`:${m}`,r=`${o}://${t.host}${p}`;return{managementUrl:`${r}/management.html`,checkUrl:`${r}/`,authToken:t.auth_token||void 0,isRemote:!0,displayHost:`${t.host}${p}`}}return{managementUrl:g("/cliproxy-local/management.html"),checkUrl:g("/cliproxy-local/"),authToken:y?.managementSecret?.value||void 0,isRemote:!1,displayHost:`localhost:${n}`}},[l,y,a]),C=`${R}:${i?"remote":"local"}:${h}:${b??"missing"}:${B}`,P=l!==void 0&&(i||!!y||!!x);s.useEffect(()=>{x&&console.warn("[ControlPanelEmbed] Failed to preload local control panel session, falling back to manual login:",x)},[x]),s.useEffect(()=>{if(!i)return()=>{T()}},[i]);const Y=!P||!(M===C),q=()=>{if(!(!i||!f.current?.contentWindow||!b))try{const t=A(h),n=new URL(`${t}/`).origin;if(new URL(f.current.src,window.location.origin).origin!==n){console.warn("[ControlPanelEmbed] Remote iframe origin mismatch, skipping postMessage");return}f.current.contentWindow.postMessage({type:"ccs-auto-login",apiBase:t,managementKey:b},n)}catch(t){console.debug("[ControlPanelEmbed] Remote postMessage bootstrap failed:",t)}};s.useEffect(()=>{const t=new AbortController;let n=!1;const o=(r,d)=>{n||(E(r),v(d))},m=async()=>{try{if(i){const r=l?.remote,d=await I.cliproxyServer.test({host:r?.host??"",port:r?.port,protocol:r?.protocol??"http",authToken:r?.auth_token});d?.reachable?o(!0,null):o(!1,d?.error?`Remote CLIProxy at ${c}: ${d.error}`:`Remote CLIProxy at ${c} returned an error`)}else(await fetch(h,{signal:t.signal})).ok?o(!0,null):o(!1,"CLIProxy returned an error")}catch(r){if(r instanceof Error&&r.name==="AbortError")return;o(!1,i?`Remote CLIProxy at ${c} is not reachable`:"CLIProxy is not running")}},p=setTimeout(()=>t.abort(),2e3);return m().finally(()=>clearTimeout(p)),()=>{n=!0,t.abort()}},[h,i,c,l]);const W=()=>{N(C),q()},z=()=>{N(null),G(t=>t+1),v(null),E(!1)};return!H&&L?e.jsxs("div",{className:"flex-1 flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Q,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"font-semibold",children:u("cliproxyHeader.cliproxyControlPanel")})]}),e.jsxs("button",{className:"inline-flex items-center gap-2 px-3 py-1.5 text-sm border rounded-md hover:bg-muted",onClick:z,children:[e.jsx($,{className:"w-4 h-4"}),"Retry"]})]}),e.jsx("div",{className:"flex-1 flex items-center justify-center bg-muted/20",children:e.jsxs("div",{className:"text-center max-w-md px-8",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-destructive/10 flex items-center justify-center mx-auto mb-6",children:e.jsx(X,{className:"w-8 h-8 text-destructive"})}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:u("cliproxyHeader.cliproxyNotAvailable")}),e.jsx("p",{className:"text-muted-foreground mb-4",children:L}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Start a CLIProxy session with"," ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"ccs gemini"})," or run"," ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"ccs config"})," which auto-starts it."]})]})})]}):e.jsx("div",{className:"flex-1 flex flex-col",children:e.jsxs("div",{className:"flex-1 flex flex-col relative",children:[Y&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-background/80 z-10",children:e.jsxs("div",{className:"text-center",children:[e.jsx($,{className:"w-8 h-8 animate-spin text-primary mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:i?`Loading Control Panel from ${c}...`:"Loading Control Panel..."})]})}),P?e.jsx("iframe",{ref:f,src:R,className:"flex-1 w-full border-0",title:"CLIProxy Management Panel",onLoad:W},C):null]})})}function me(){return e.jsx("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:e.jsx(J,{})})}export{me as CliproxyControlPanelPage};
|