@phenx-inc/ctlsurf 0.1.2 → 0.1.3
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/out/headless/index.mjs +4 -2
- package/out/headless/index.mjs.map +2 -2
- package/out/main/index.js +3678 -4
- package/out/renderer/assets/{cssMode-DL0XItGB.js → cssMode-CY6x0qXW.js} +3 -3
- package/out/renderer/assets/{freemarker2-CrOEuDcF.js → freemarker2-BXSW9BAX.js} +1 -1
- package/out/renderer/assets/{handlebars-D4QYaBof.js → handlebars-BYUZ1IOs.js} +1 -1
- package/out/renderer/assets/{html-B2Dqk2ai.js → html-DPocQM4t.js} +1 -1
- package/out/renderer/assets/{htmlMode-CdZ0Prhd.js → htmlMode-CsPinKYA.js} +3 -3
- package/out/renderer/assets/{index-pZmE1QXB.js → index-Bml7oDn9.js} +84 -36
- package/out/renderer/assets/{index-CJ6RsQWP.css → index-DK9wLFFm.css} +146 -0
- package/out/renderer/assets/{javascript-CK8zNQXj.js → javascript-_HVGB-lj.js} +2 -2
- package/out/renderer/assets/{jsonMode-Cewaellc.js → jsonMode-JbrRQBOU.js} +3 -3
- package/out/renderer/assets/{liquid-Bd3GPNs2.js → liquid-B7izKdqo.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-DSDH7BnA.js → lspLanguageFeatures-DzxH499X.js} +1 -1
- package/out/renderer/assets/{mdx-CCPVCrXC.js → mdx-CmvUeYLw.js} +1 -1
- package/out/renderer/assets/{python-34jOtlcC.js → python-DJqYTFoi.js} +1 -1
- package/out/renderer/assets/{razor-DXRw694z.js → razor-CGEA5nUK.js} +1 -1
- package/out/renderer/assets/{tsMode-CmND5_wB.js → tsMode-CN0FOHMy.js} +1 -1
- package/out/renderer/assets/{typescript-BNNI0Euv.js → typescript-CIn-DSfY.js} +1 -1
- package/out/renderer/assets/{xml-CgdndrNB.js → xml-C5t3U2jS.js} +1 -1
- package/out/renderer/assets/{yaml-DNWPIf1s.js → yaml-n-Jb6xf1.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/package.json +6 -4
- package/src/main/workerWs.ts +6 -2
- package/src/renderer/App.tsx +38 -12
- package/src/renderer/components/AgentPicker.tsx +49 -0
- package/src/renderer/styles.css +146 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages } from "./index-
|
|
2
|
-
import { C as CompletionAdapter, H as HoverAdapter, D as DocumentHighlightAdapter, a as DefinitionAdapter, R as ReferenceAdapter, b as DocumentSymbolAdapter, c as RenameAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, e as DiagnosticsAdapter, S as SelectionRangeAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider } from "./lspLanguageFeatures-
|
|
3
|
-
import { h, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages } from "./index-Bml7oDn9.js";
|
|
2
|
+
import { C as CompletionAdapter, H as HoverAdapter, D as DocumentHighlightAdapter, a as DefinitionAdapter, R as ReferenceAdapter, b as DocumentSymbolAdapter, c as RenameAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, e as DiagnosticsAdapter, S as SelectionRangeAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider } from "./lspLanguageFeatures-DzxH499X.js";
|
|
3
|
+
import { h, i, j, t, k } from "./lspLanguageFeatures-DzxH499X.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages } from "./index-
|
|
2
|
-
import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-
|
|
3
|
-
import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages } from "./index-Bml7oDn9.js";
|
|
2
|
+
import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-DzxH499X.js";
|
|
3
|
+
import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-DzxH499X.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-CY6x0qXW.js","./lspLanguageFeatures-DzxH499X.js","./htmlMode-CsPinKYA.js","./jsonMode-JbrRQBOU.js","./javascript-_HVGB-lj.js","./typescript-CIn-DSfY.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function getDefaultExportFromCjs(x) {
|
|
3
3
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
4
4
|
}
|
|
@@ -206489,7 +206489,7 @@ const lessDefaults = new LanguageServiceDefaultsImpl$3(
|
|
|
206489
206489
|
modeConfigurationDefault$2
|
|
206490
206490
|
);
|
|
206491
206491
|
function getMode$3() {
|
|
206492
|
-
return __vitePreload(() => import("./cssMode-
|
|
206492
|
+
return __vitePreload(() => import("./cssMode-CY6x0qXW.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
|
|
206493
206493
|
}
|
|
206494
206494
|
languages.onLanguage("less", () => {
|
|
206495
206495
|
getMode$3().then((mode2) => mode2.setupMode(lessDefaults));
|
|
@@ -206594,7 +206594,7 @@ const razorLanguageService = registerHTMLLanguageService(
|
|
|
206594
206594
|
);
|
|
206595
206595
|
const razorDefaults = razorLanguageService.defaults;
|
|
206596
206596
|
function getMode$2() {
|
|
206597
|
-
return __vitePreload(() => import("./htmlMode-
|
|
206597
|
+
return __vitePreload(() => import("./htmlMode-CsPinKYA.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
|
|
206598
206598
|
}
|
|
206599
206599
|
function registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {
|
|
206600
206600
|
const defaults = new LanguageServiceDefaultsImpl$2(languageId, options, modeConfiguration);
|
|
@@ -206678,7 +206678,7 @@ const jsonDefaults = new LanguageServiceDefaultsImpl$1(
|
|
|
206678
206678
|
);
|
|
206679
206679
|
const getWorker$1 = () => getMode$1().then((mode2) => mode2.getWorker());
|
|
206680
206680
|
function getMode$1() {
|
|
206681
|
-
return __vitePreload(() => import("./jsonMode-
|
|
206681
|
+
return __vitePreload(() => import("./jsonMode-JbrRQBOU.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
|
|
206682
206682
|
}
|
|
206683
206683
|
languages.register({
|
|
206684
206684
|
id: "json",
|
|
@@ -206924,7 +206924,7 @@ const getJavaScriptWorker = () => {
|
|
|
206924
206924
|
return getMode().then((mode) => mode.getJavaScriptWorker());
|
|
206925
206925
|
};
|
|
206926
206926
|
function getMode() {
|
|
206927
|
-
return __vitePreload(() => import("./tsMode-
|
|
206927
|
+
return __vitePreload(() => import("./tsMode-CN0FOHMy.js"), true ? [] : void 0, import.meta.url);
|
|
206928
206928
|
}
|
|
206929
206929
|
languages.onLanguage("typescript", () => {
|
|
206930
206930
|
return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));
|
|
@@ -207119,49 +207119,49 @@ registerLanguage({
|
|
|
207119
207119
|
extensions: [".ftl", ".ftlh", ".ftlx"],
|
|
207120
207120
|
aliases: ["FreeMarker2", "Apache FreeMarker2"],
|
|
207121
207121
|
loader: () => {
|
|
207122
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207122
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
207123
207123
|
}
|
|
207124
207124
|
});
|
|
207125
207125
|
registerLanguage({
|
|
207126
207126
|
id: "freemarker2.tag-angle.interpolation-dollar",
|
|
207127
207127
|
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
|
|
207128
207128
|
loader: () => {
|
|
207129
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207129
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationDollar);
|
|
207130
207130
|
}
|
|
207131
207131
|
});
|
|
207132
207132
|
registerLanguage({
|
|
207133
207133
|
id: "freemarker2.tag-bracket.interpolation-dollar",
|
|
207134
207134
|
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
|
|
207135
207135
|
loader: () => {
|
|
207136
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207136
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationDollar);
|
|
207137
207137
|
}
|
|
207138
207138
|
});
|
|
207139
207139
|
registerLanguage({
|
|
207140
207140
|
id: "freemarker2.tag-angle.interpolation-bracket",
|
|
207141
207141
|
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
|
|
207142
207142
|
loader: () => {
|
|
207143
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207143
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationBracket);
|
|
207144
207144
|
}
|
|
207145
207145
|
});
|
|
207146
207146
|
registerLanguage({
|
|
207147
207147
|
id: "freemarker2.tag-bracket.interpolation-bracket",
|
|
207148
207148
|
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
|
|
207149
207149
|
loader: () => {
|
|
207150
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207150
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationBracket);
|
|
207151
207151
|
}
|
|
207152
207152
|
});
|
|
207153
207153
|
registerLanguage({
|
|
207154
207154
|
id: "freemarker2.tag-auto.interpolation-dollar",
|
|
207155
207155
|
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
|
|
207156
207156
|
loader: () => {
|
|
207157
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207157
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
207158
207158
|
}
|
|
207159
207159
|
});
|
|
207160
207160
|
registerLanguage({
|
|
207161
207161
|
id: "freemarker2.tag-auto.interpolation-bracket",
|
|
207162
207162
|
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
|
|
207163
207163
|
loader: () => {
|
|
207164
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207164
|
+
return __vitePreload(() => import("./freemarker2-BXSW9BAX.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationBracket);
|
|
207165
207165
|
}
|
|
207166
207166
|
});
|
|
207167
207167
|
registerLanguage({
|
|
@@ -207182,7 +207182,7 @@ registerLanguage({
|
|
|
207182
207182
|
extensions: [".handlebars", ".hbs"],
|
|
207183
207183
|
aliases: ["Handlebars", "handlebars", "hbs"],
|
|
207184
207184
|
mimetypes: ["text/x-handlebars-template"],
|
|
207185
|
-
loader: () => __vitePreload(() => import("./handlebars-
|
|
207185
|
+
loader: () => __vitePreload(() => import("./handlebars-BYUZ1IOs.js"), true ? [] : void 0, import.meta.url)
|
|
207186
207186
|
});
|
|
207187
207187
|
registerLanguage({
|
|
207188
207188
|
id: "hcl",
|
|
@@ -207195,7 +207195,7 @@ registerLanguage({
|
|
|
207195
207195
|
extensions: [".html", ".htm", ".shtml", ".xhtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm"],
|
|
207196
207196
|
aliases: ["HTML", "htm", "html", "xhtml"],
|
|
207197
207197
|
mimetypes: ["text/html", "text/x-jshtm", "text/template", "text/ng-template"],
|
|
207198
|
-
loader: () => __vitePreload(() => import("./html-
|
|
207198
|
+
loader: () => __vitePreload(() => import("./html-DPocQM4t.js"), true ? [] : void 0, import.meta.url)
|
|
207199
207199
|
});
|
|
207200
207200
|
registerLanguage({
|
|
207201
207201
|
id: "ini",
|
|
@@ -207218,7 +207218,7 @@ registerLanguage({
|
|
|
207218
207218
|
filenames: ["jakefile"],
|
|
207219
207219
|
aliases: ["JavaScript", "javascript", "js"],
|
|
207220
207220
|
mimetypes: ["text/javascript"],
|
|
207221
|
-
loader: () => __vitePreload(() => import("./javascript-
|
|
207221
|
+
loader: () => __vitePreload(() => import("./javascript-_HVGB-lj.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
|
|
207222
207222
|
});
|
|
207223
207223
|
registerLanguage({
|
|
207224
207224
|
id: "julia",
|
|
@@ -207257,7 +207257,7 @@ registerLanguage({
|
|
|
207257
207257
|
extensions: [".liquid", ".html.liquid"],
|
|
207258
207258
|
aliases: ["Liquid", "liquid"],
|
|
207259
207259
|
mimetypes: ["application/liquid"],
|
|
207260
|
-
loader: () => __vitePreload(() => import("./liquid-
|
|
207260
|
+
loader: () => __vitePreload(() => import("./liquid-B7izKdqo.js"), true ? [] : void 0, import.meta.url)
|
|
207261
207261
|
});
|
|
207262
207262
|
registerLanguage({
|
|
207263
207263
|
id: "m3",
|
|
@@ -207275,7 +207275,7 @@ registerLanguage({
|
|
|
207275
207275
|
id: "mdx",
|
|
207276
207276
|
extensions: [".mdx"],
|
|
207277
207277
|
aliases: ["MDX", "mdx"],
|
|
207278
|
-
loader: () => __vitePreload(() => import("./mdx-
|
|
207278
|
+
loader: () => __vitePreload(() => import("./mdx-CmvUeYLw.js"), true ? [] : void 0, import.meta.url)
|
|
207279
207279
|
});
|
|
207280
207280
|
registerLanguage({
|
|
207281
207281
|
id: "mips",
|
|
@@ -207374,7 +207374,7 @@ registerLanguage({
|
|
|
207374
207374
|
extensions: [".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi"],
|
|
207375
207375
|
aliases: ["Python", "py"],
|
|
207376
207376
|
firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
|
|
207377
|
-
loader: () => __vitePreload(() => import("./python-
|
|
207377
|
+
loader: () => __vitePreload(() => import("./python-DJqYTFoi.js"), true ? [] : void 0, import.meta.url)
|
|
207378
207378
|
});
|
|
207379
207379
|
registerLanguage({
|
|
207380
207380
|
id: "qsharp",
|
|
@@ -207393,7 +207393,7 @@ registerLanguage({
|
|
|
207393
207393
|
extensions: [".cshtml"],
|
|
207394
207394
|
aliases: ["Razor", "razor"],
|
|
207395
207395
|
mimetypes: ["text/x-cshtml"],
|
|
207396
|
-
loader: () => __vitePreload(() => import("./razor-
|
|
207396
|
+
loader: () => __vitePreload(() => import("./razor-CGEA5nUK.js"), true ? [] : void 0, import.meta.url)
|
|
207397
207397
|
});
|
|
207398
207398
|
registerLanguage({
|
|
207399
207399
|
id: "redis",
|
|
@@ -207526,7 +207526,7 @@ registerLanguage({
|
|
|
207526
207526
|
aliases: ["TypeScript", "ts", "typescript"],
|
|
207527
207527
|
mimetypes: ["text/typescript"],
|
|
207528
207528
|
loader: () => {
|
|
207529
|
-
return __vitePreload(() => import("./typescript-
|
|
207529
|
+
return __vitePreload(() => import("./typescript-CIn-DSfY.js"), true ? [] : void 0, import.meta.url);
|
|
207530
207530
|
}
|
|
207531
207531
|
});
|
|
207532
207532
|
registerLanguage({
|
|
@@ -207571,14 +207571,14 @@ registerLanguage({
|
|
|
207571
207571
|
firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
|
|
207572
207572
|
aliases: ["XML", "xml"],
|
|
207573
207573
|
mimetypes: ["text/xml", "application/xml", "application/xaml+xml", "application/xml-dtd"],
|
|
207574
|
-
loader: () => __vitePreload(() => import("./xml-
|
|
207574
|
+
loader: () => __vitePreload(() => import("./xml-C5t3U2jS.js"), true ? [] : void 0, import.meta.url)
|
|
207575
207575
|
});
|
|
207576
207576
|
registerLanguage({
|
|
207577
207577
|
id: "yaml",
|
|
207578
207578
|
extensions: [".yaml", ".yml"],
|
|
207579
207579
|
aliases: ["YAML", "yaml", "YML", "yml"],
|
|
207580
207580
|
mimetypes: ["application/x-yaml", "text/x-yaml"],
|
|
207581
|
-
loader: () => __vitePreload(() => import("./yaml-
|
|
207581
|
+
loader: () => __vitePreload(() => import("./yaml-n-Jb6xf1.js"), true ? [] : void 0, import.meta.url)
|
|
207582
207582
|
});
|
|
207583
207583
|
var __defProp = Object.defineProperty;
|
|
207584
207584
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -211067,6 +211067,31 @@ function EditorPanel({ cwd: cwd2 }) {
|
|
|
211067
211067
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "editor-placeholder", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Select a file to edit" }) }) })
|
|
211068
211068
|
] });
|
|
211069
211069
|
}
|
|
211070
|
+
function AgentPicker({ agents, cwd: cwd2, onSelect, onChangeCwd }) {
|
|
211071
|
+
const displayPath = cwd2.replace(/^\/Users\/[^/]+/, "~");
|
|
211072
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "agent-picker-overlay", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "agent-picker-modal", children: [
|
|
211073
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "agent-picker-brand", children: "ctlsurf" }),
|
|
211074
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "agent-picker-cwd", onClick: onChangeCwd, title: "Click to change directory", children: [
|
|
211075
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "agent-picker-cwd-icon", children: "📂" }),
|
|
211076
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "agent-picker-cwd-path", children: displayPath }),
|
|
211077
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "agent-picker-cwd-change", children: "change" })
|
|
211078
|
+
] }),
|
|
211079
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "agent-picker-title", children: "SELECT AGENT" }),
|
|
211080
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "agent-picker-list", children: agents.map((a) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
211081
|
+
"button",
|
|
211082
|
+
{
|
|
211083
|
+
className: "agent-picker-item",
|
|
211084
|
+
onClick: () => onSelect(a),
|
|
211085
|
+
children: [
|
|
211086
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "agent-picker-name", children: a.name }),
|
|
211087
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "agent-picker-desc", children: a.description })
|
|
211088
|
+
]
|
|
211089
|
+
},
|
|
211090
|
+
a.id
|
|
211091
|
+
)) }),
|
|
211092
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "agent-picker-hint", children: "Select an agent to start" })
|
|
211093
|
+
] }) });
|
|
211094
|
+
}
|
|
211070
211095
|
function removePane(node, paneId) {
|
|
211071
211096
|
if (node.type === "leaf") {
|
|
211072
211097
|
return node.paneId === paneId ? null : node;
|
|
@@ -211579,11 +211604,10 @@ const DEFAULT_LAYOUT = {
|
|
|
211579
211604
|
type: "split",
|
|
211580
211605
|
direction: "horizontal",
|
|
211581
211606
|
children: [
|
|
211582
|
-
{ type: "leaf", paneId: "editor" },
|
|
211583
211607
|
{ type: "leaf", paneId: "terminal" },
|
|
211584
211608
|
{ type: "leaf", paneId: "ctlsurf" }
|
|
211585
211609
|
],
|
|
211586
|
-
sizes: [
|
|
211610
|
+
sizes: [50, 50]
|
|
211587
211611
|
};
|
|
211588
211612
|
const ALL_PANE_IDS = ["editor", "terminal", "ctlsurf"];
|
|
211589
211613
|
function App() {
|
|
@@ -211597,14 +211621,16 @@ function App() {
|
|
|
211597
211621
|
const [wsStatus, setWsStatus] = reactExports.useState("disconnected");
|
|
211598
211622
|
const [cwd2, setCwd] = reactExports.useState(null);
|
|
211599
211623
|
const visiblePaneIds = findPaneIds(layout2);
|
|
211624
|
+
const [showAgentPicker, setShowAgentPicker] = reactExports.useState(true);
|
|
211600
211625
|
reactExports.useEffect(() => {
|
|
211601
211626
|
async function init2() {
|
|
211602
211627
|
const list2 = await window.worker.listAgents();
|
|
211603
|
-
const defaultAgent = await window.worker.getDefaultAgent();
|
|
211604
211628
|
setAgents(list2);
|
|
211605
|
-
setSelectedAgent(defaultAgent);
|
|
211606
211629
|
const status2 = await window.worker.getWorkerStatus();
|
|
211607
211630
|
setWsStatus(status2);
|
|
211631
|
+
const initialCwd = await window.worker.getCwd().catch(() => window.worker.getHomePath());
|
|
211632
|
+
setCwd(initialCwd);
|
|
211633
|
+
cwdRef.current = initialCwd;
|
|
211608
211634
|
}
|
|
211609
211635
|
init2();
|
|
211610
211636
|
}, []);
|
|
@@ -211729,6 +211755,18 @@ function App() {
|
|
|
211729
211755
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "titlebar-title", children: "ctlsurf-worker" }),
|
|
211730
211756
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "titlebar-controls", children: [
|
|
211731
211757
|
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "titlebar-btn", onClick: () => setShowSettings(true), title: "Settings", children: "Settings" }),
|
|
211758
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "titlebar-separator" }),
|
|
211759
|
+
agents.map((a) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
211760
|
+
"button",
|
|
211761
|
+
{
|
|
211762
|
+
className: `titlebar-agent-btn ${selectedAgent?.id === a.id ? "active" : ""}`,
|
|
211763
|
+
onClick: () => handleAgentChange(a.id),
|
|
211764
|
+
title: a.description,
|
|
211765
|
+
children: a.name
|
|
211766
|
+
},
|
|
211767
|
+
a.id
|
|
211768
|
+
)),
|
|
211769
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "titlebar-separator" }),
|
|
211732
211770
|
ALL_PANE_IDS.map((id) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
211733
211771
|
"button",
|
|
211734
211772
|
{
|
|
@@ -211738,15 +211776,7 @@ function App() {
|
|
|
211738
211776
|
children: id === "editor" ? "Editor" : id === "terminal" ? "Terminal" : "ctlsurf"
|
|
211739
211777
|
},
|
|
211740
211778
|
id
|
|
211741
|
-
))
|
|
211742
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
211743
|
-
"select",
|
|
211744
|
-
{
|
|
211745
|
-
value: selectedAgent?.id || "",
|
|
211746
|
-
onChange: (e) => handleAgentChange(e.target.value),
|
|
211747
|
-
children: agents.map((a) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: a.id, children: a.name }, a.id))
|
|
211748
|
-
}
|
|
211749
|
-
)
|
|
211779
|
+
))
|
|
211750
211780
|
] })
|
|
211751
211781
|
] }),
|
|
211752
211782
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "main-content", children: visiblePaneIds.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "multi-split-empty", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "All panes hidden. Use the titlebar buttons to show a pane." }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -211759,7 +211789,25 @@ function App() {
|
|
|
211759
211789
|
}
|
|
211760
211790
|
) }),
|
|
211761
211791
|
/* @__PURE__ */ jsxRuntimeExports.jsx(StatusBar, { wsStatus, cwd: cwd2, onChangeCwd: handleChangeCwd }),
|
|
211762
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, { open: showSettings, onClose: () => setShowSettings(false) })
|
|
211792
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, { open: showSettings, onClose: () => setShowSettings(false) }),
|
|
211793
|
+
showAgentPicker && agents.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
211794
|
+
AgentPicker,
|
|
211795
|
+
{
|
|
211796
|
+
agents,
|
|
211797
|
+
cwd: cwd2 || "",
|
|
211798
|
+
onSelect: (agent) => {
|
|
211799
|
+
setSelectedAgent(agent);
|
|
211800
|
+
setShowAgentPicker(false);
|
|
211801
|
+
},
|
|
211802
|
+
onChangeCwd: async () => {
|
|
211803
|
+
const newCwd = await window.worker.browseCwd();
|
|
211804
|
+
if (newCwd) {
|
|
211805
|
+
setCwd(newCwd);
|
|
211806
|
+
cwdRef.current = newCwd;
|
|
211807
|
+
}
|
|
211808
|
+
}
|
|
211809
|
+
}
|
|
211810
|
+
)
|
|
211763
211811
|
] });
|
|
211764
211812
|
}
|
|
211765
211813
|
ReactDOM.createRoot(document.getElementById("root")).render(
|
|
@@ -7468,6 +7468,36 @@ html, body, #root {
|
|
|
7468
7468
|
background: #1f2335;
|
|
7469
7469
|
}
|
|
7470
7470
|
|
|
7471
|
+
.titlebar-separator {
|
|
7472
|
+
width: 1px;
|
|
7473
|
+
height: 16px;
|
|
7474
|
+
background: #3b3d57;
|
|
7475
|
+
margin: 0 4px;
|
|
7476
|
+
}
|
|
7477
|
+
|
|
7478
|
+
.titlebar-agent-btn {
|
|
7479
|
+
background: #2a2b3d;
|
|
7480
|
+
color: #565f89;
|
|
7481
|
+
border: 1px solid #3b3d57;
|
|
7482
|
+
border-radius: 4px;
|
|
7483
|
+
padding: 2px 12px;
|
|
7484
|
+
font-size: 11px;
|
|
7485
|
+
cursor: pointer;
|
|
7486
|
+
transition: all 0.15s;
|
|
7487
|
+
}
|
|
7488
|
+
|
|
7489
|
+
.titlebar-agent-btn:hover {
|
|
7490
|
+
color: #a9b1d6;
|
|
7491
|
+
border-color: #565f89;
|
|
7492
|
+
}
|
|
7493
|
+
|
|
7494
|
+
.titlebar-agent-btn.active {
|
|
7495
|
+
color: #1a1b26;
|
|
7496
|
+
background: #7aa2f7;
|
|
7497
|
+
border-color: #7aa2f7;
|
|
7498
|
+
font-weight: 600;
|
|
7499
|
+
}
|
|
7500
|
+
|
|
7471
7501
|
/* Main content area */
|
|
7472
7502
|
.main-content {
|
|
7473
7503
|
flex: 1;
|
|
@@ -7916,6 +7946,122 @@ html, body, #root {
|
|
|
7916
7946
|
font-size: 13px;
|
|
7917
7947
|
}
|
|
7918
7948
|
|
|
7949
|
+
/* Agent picker modal */
|
|
7950
|
+
.agent-picker-overlay {
|
|
7951
|
+
position: fixed;
|
|
7952
|
+
inset: 0;
|
|
7953
|
+
background: rgba(0, 0, 0, 0.7);
|
|
7954
|
+
display: flex;
|
|
7955
|
+
align-items: center;
|
|
7956
|
+
justify-content: center;
|
|
7957
|
+
z-index: 200;
|
|
7958
|
+
}
|
|
7959
|
+
|
|
7960
|
+
.agent-picker-modal {
|
|
7961
|
+
background: #1f2335;
|
|
7962
|
+
border: 1px solid #3b3d57;
|
|
7963
|
+
border-radius: 12px;
|
|
7964
|
+
padding: 32px 40px;
|
|
7965
|
+
min-width: 360px;
|
|
7966
|
+
text-align: center;
|
|
7967
|
+
}
|
|
7968
|
+
|
|
7969
|
+
.agent-picker-brand {
|
|
7970
|
+
font-size: 22px;
|
|
7971
|
+
font-weight: 700;
|
|
7972
|
+
color: #7aa2f7;
|
|
7973
|
+
margin-bottom: 20px;
|
|
7974
|
+
letter-spacing: 0.5px;
|
|
7975
|
+
}
|
|
7976
|
+
|
|
7977
|
+
.agent-picker-cwd {
|
|
7978
|
+
display: flex;
|
|
7979
|
+
align-items: center;
|
|
7980
|
+
justify-content: center;
|
|
7981
|
+
gap: 8px;
|
|
7982
|
+
padding: 10px 16px;
|
|
7983
|
+
margin-bottom: 20px;
|
|
7984
|
+
background: #16161e;
|
|
7985
|
+
border: 1px solid #2a2b3d;
|
|
7986
|
+
border-radius: 8px;
|
|
7987
|
+
cursor: pointer;
|
|
7988
|
+
transition: border-color 0.15s;
|
|
7989
|
+
}
|
|
7990
|
+
|
|
7991
|
+
.agent-picker-cwd:hover {
|
|
7992
|
+
border-color: #7aa2f7;
|
|
7993
|
+
}
|
|
7994
|
+
|
|
7995
|
+
.agent-picker-cwd-icon {
|
|
7996
|
+
font-size: 14px;
|
|
7997
|
+
}
|
|
7998
|
+
|
|
7999
|
+
.agent-picker-cwd-path {
|
|
8000
|
+
font-family: 'JetBrains Mono', 'Fira Code', monospace;
|
|
8001
|
+
font-size: 12px;
|
|
8002
|
+
color: #a9b1d6;
|
|
8003
|
+
flex: 1;
|
|
8004
|
+
text-align: left;
|
|
8005
|
+
overflow: hidden;
|
|
8006
|
+
text-overflow: ellipsis;
|
|
8007
|
+
white-space: nowrap;
|
|
8008
|
+
}
|
|
8009
|
+
|
|
8010
|
+
.agent-picker-cwd-change {
|
|
8011
|
+
font-size: 11px;
|
|
8012
|
+
color: #7aa2f7;
|
|
8013
|
+
flex-shrink: 0;
|
|
8014
|
+
}
|
|
8015
|
+
|
|
8016
|
+
.agent-picker-title {
|
|
8017
|
+
font-size: 11px;
|
|
8018
|
+
color: #565f89;
|
|
8019
|
+
margin-bottom: 12px;
|
|
8020
|
+
text-transform: uppercase;
|
|
8021
|
+
letter-spacing: 1px;
|
|
8022
|
+
}
|
|
8023
|
+
|
|
8024
|
+
.agent-picker-list {
|
|
8025
|
+
display: flex;
|
|
8026
|
+
flex-direction: column;
|
|
8027
|
+
gap: 8px;
|
|
8028
|
+
}
|
|
8029
|
+
|
|
8030
|
+
.agent-picker-item {
|
|
8031
|
+
display: flex;
|
|
8032
|
+
align-items: center;
|
|
8033
|
+
justify-content: space-between;
|
|
8034
|
+
padding: 14px 18px;
|
|
8035
|
+
background: #16161e;
|
|
8036
|
+
border: 1px solid #2a2b3d;
|
|
8037
|
+
border-radius: 8px;
|
|
8038
|
+
cursor: pointer;
|
|
8039
|
+
transition: all 0.15s;
|
|
8040
|
+
text-align: left;
|
|
8041
|
+
}
|
|
8042
|
+
|
|
8043
|
+
.agent-picker-item:hover {
|
|
8044
|
+
border-color: #7aa2f7;
|
|
8045
|
+
background: #1a1b2e;
|
|
8046
|
+
}
|
|
8047
|
+
|
|
8048
|
+
.agent-picker-name {
|
|
8049
|
+
font-size: 14px;
|
|
8050
|
+
font-weight: 600;
|
|
8051
|
+
color: #c0caf5;
|
|
8052
|
+
}
|
|
8053
|
+
|
|
8054
|
+
.agent-picker-desc {
|
|
8055
|
+
font-size: 11px;
|
|
8056
|
+
color: #565f89;
|
|
8057
|
+
}
|
|
8058
|
+
|
|
8059
|
+
.agent-picker-hint {
|
|
8060
|
+
margin-top: 20px;
|
|
8061
|
+
font-size: 11px;
|
|
8062
|
+
color: #414868;
|
|
8063
|
+
}
|
|
8064
|
+
|
|
7919
8065
|
/* Settings dialog */
|
|
7920
8066
|
.settings-overlay {
|
|
7921
8067
|
position: fixed;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { conf as conf$1, language as language$1 } from "./typescript-
|
|
2
|
-
import "./index-
|
|
1
|
+
import { conf as conf$1, language as language$1 } from "./typescript-CIn-DSfY.js";
|
|
2
|
+
import "./index-Bml7oDn9.js";
|
|
3
3
|
const conf = conf$1;
|
|
4
4
|
const language = {
|
|
5
5
|
// Set defaultToken to invalid to see what you do not tokenize yet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages, e as editor } from "./index-
|
|
2
|
-
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-
|
|
3
|
-
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages, e as editor } from "./index-Bml7oDn9.js";
|
|
2
|
+
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-DzxH499X.js";
|
|
3
|
+
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-DzxH499X.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
package/out/renderer/assets/{lspLanguageFeatures-DSDH7BnA.js → lspLanguageFeatures-DzxH499X.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-
|
|
1
|
+
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-Bml7oDn9.js";
|
|
2
2
|
var DocumentUri;
|
|
3
3
|
(function(DocumentUri2) {
|
|
4
4
|
function is(value) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createWebWorker, e as editor, U as Uri, a as MarkerTag, M as MarkerSeverity, l as languages, t as typescriptDefaults, R as Range } from "./index-
|
|
1
|
+
import { c as createWebWorker, e as editor, U as Uri, a as MarkerTag, M as MarkerSeverity, l as languages, t as typescriptDefaults, R as Range } from "./index-Bml7oDn9.js";
|
|
2
2
|
class WorkerManager {
|
|
3
3
|
constructor(_modeId, _defaults) {
|
|
4
4
|
this._modeId = _modeId;
|
package/out/renderer/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>ctlsurf-worker</title>
|
|
7
|
-
<script type="module" crossorigin src="./assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-Bml7oDn9.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DK9wLFFm.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phenx-inc/ctlsurf",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Agent-agnostic terminal and desktop app for ctlsurf — run Claude Code, Codex, or any coding agent with live session logging and remote control",
|
|
5
5
|
"main": "out/main/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
],
|
|
20
20
|
"scripts": {
|
|
21
21
|
"dev": "electron-vite dev",
|
|
22
|
-
"dev:terminal": "esbuild src/main/headless.ts --bundle --platform=node --target=node18 --format=esm --outfile=out/headless/index.mjs --external:node-pty --sourcemap && node out/headless/index.mjs",
|
|
22
|
+
"dev:terminal": "esbuild src/main/headless.ts --bundle --platform=node --target=node18 --format=esm --outfile=out/headless/index.mjs --external:node-pty --external:ws --sourcemap && node out/headless/index.mjs",
|
|
23
23
|
"build": "electron-vite build && npm run build:headless",
|
|
24
|
-
"build:headless": "esbuild src/main/headless.ts --bundle --platform=node --target=node18 --format=esm --outfile=out/headless/index.mjs --external:node-pty --sourcemap",
|
|
24
|
+
"build:headless": "esbuild src/main/headless.ts --bundle --platform=node --target=node18 --format=esm --outfile=out/headless/index.mjs --external:node-pty --external:ws --sourcemap",
|
|
25
25
|
"prepublishOnly": "npm run build",
|
|
26
26
|
"preview": "electron-vite preview",
|
|
27
27
|
"package": "electron-builder",
|
|
@@ -50,13 +50,15 @@
|
|
|
50
50
|
"electron-store": "^10.0.0",
|
|
51
51
|
"esbuild": "^0.27.4",
|
|
52
52
|
"monaco-editor": "^0.55.1",
|
|
53
|
-
"node-pty": "^1.0.0"
|
|
53
|
+
"node-pty": "^1.0.0",
|
|
54
|
+
"ws": "^8.20.0"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
57
|
"@electron/rebuild": "^4.0.3",
|
|
57
58
|
"@types/node": "^22.15.0",
|
|
58
59
|
"@types/react": "^19.1.0",
|
|
59
60
|
"@types/react-dom": "^19.1.0",
|
|
61
|
+
"@types/ws": "^8.18.1",
|
|
60
62
|
"@vitejs/plugin-react": "^4.5.2",
|
|
61
63
|
"electron": "^35.0.0",
|
|
62
64
|
"electron-builder": "^25.1.8",
|