@phenx-inc/ctlsurf 0.13.1 → 0.13.5
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/LICENSE +22 -0
- package/out/headless/index.mjs +9 -23
- package/out/headless/index.mjs.map +3 -3
- package/out/main/index.js +17 -22
- package/out/preload/index.js +1 -0
- package/out/renderer/assets/{cssMode-KhYyY-BM.js → cssMode-CAEObGNt.js} +3 -3
- package/out/renderer/assets/{freemarker2-BFsSgcWk.js → freemarker2-D63hnnDq.js} +1 -1
- package/out/renderer/assets/{handlebars-Be6_aBsm.js → handlebars-UYo_IYpi.js} +1 -1
- package/out/renderer/assets/{html-G8mvsyfc.js → html-2dvYDi3g.js} +1 -1
- package/out/renderer/assets/{htmlMode-Cfd5VCjw.js → htmlMode-B6fxDDPF.js} +3 -3
- package/out/renderer/assets/{index-Bi_MjBqs.css → index-BEekQe3-.css} +116 -0
- package/out/renderer/assets/{index-MqgBcJzy.js → index-CMb4AqkZ.js} +552 -411
- package/out/renderer/assets/{javascript-XyDWi6dC.js → javascript-8RyFDDdk.js} +2 -2
- package/out/renderer/assets/{jsonMode-DZT5gBVW.js → jsonMode-CqspkWCb.js} +3 -3
- package/out/renderer/assets/{liquid-BuajCNJ9.js → liquid-DaEnAsYY.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-BYkg2Yc-.js → lspLanguageFeatures-Czkp5sZb.js} +1 -1
- package/out/renderer/assets/{mdx-D0Qx2GMS.js → mdx-Q-qSZsFg.js} +1 -1
- package/out/renderer/assets/{python-ChncNy6S.js → python-Sw0S0BJV.js} +1 -1
- package/out/renderer/assets/{razor-C6MUtfaS.js → razor-C7zQmabz.js} +1 -1
- package/out/renderer/assets/{tsMode-C2aMdzdU.js → tsMode-BWdOxk6v.js} +1 -1
- package/out/renderer/assets/{typescript-CB71AtAT.js → typescript-BrdIiKZf.js} +1 -1
- package/out/renderer/assets/{xml-tHS1Ec9w.js → xml-DbKLNPOq.js} +1 -1
- package/out/renderer/assets/{yaml-CZcp5ueF.js → yaml-ehupJBsZ.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/package.json +2 -2
- package/src/main/bridge.ts +3 -2
- package/src/main/headless.ts +9 -13
- package/src/main/index.ts +6 -0
- package/src/main/pty.ts +2 -5
- package/src/main/ticketStore.ts +2 -1
- package/src/main/timeTracker.ts +4 -1
- package/src/main/transcripts.ts +3 -2
- package/src/preload/index.ts +2 -0
- package/src/renderer/App.tsx +1 -0
- package/src/renderer/components/SettingsDialog.tsx +13 -0
- package/src/renderer/components/SpeakControls.tsx +5 -0
- package/src/renderer/components/TerminalPanel.tsx +151 -30
- package/src/renderer/lib/speech.ts +2 -1
- package/src/renderer/styles.css +116 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright © 2026 Phenx, Inc. All rights reserved.
|
|
2
|
+
|
|
3
|
+
This software, including its source code, design, and documentation
|
|
4
|
+
(the "Software"), is the confidential and proprietary property of
|
|
5
|
+
Phenx, Inc. ("Phenx").
|
|
6
|
+
|
|
7
|
+
No license or right to use, copy, modify, merge, publish, distribute,
|
|
8
|
+
sublicense, sell, reverse engineer, decompile, or create derivative works
|
|
9
|
+
of the Software, in whole or in part, is granted except under a separate
|
|
10
|
+
written agreement signed by Phenx. Unauthorized use, reproduction, or
|
|
11
|
+
distribution is strictly prohibited and may result in civil and criminal
|
|
12
|
+
penalties.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
17
|
+
PHENX BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM OR
|
|
18
|
+
IN CONNECTION WITH THE SOFTWARE OR ITS USE.
|
|
19
|
+
|
|
20
|
+
Third-party components distributed with the Software are licensed under
|
|
21
|
+
their own terms by their respective authors; those licenses continue to
|
|
22
|
+
apply to those components.
|
package/out/headless/index.mjs
CHANGED
|
@@ -5471,7 +5471,7 @@ var require_package = __commonJS({
|
|
|
5471
5471
|
"package.json"(exports, module) {
|
|
5472
5472
|
module.exports = {
|
|
5473
5473
|
name: "@phenx-inc/ctlsurf",
|
|
5474
|
-
version: "0.13.
|
|
5474
|
+
version: "0.13.5",
|
|
5475
5475
|
description: "Agent-agnostic terminal and desktop app for ctlsurf \u2014 run Claude Code, Codex, or any coding agent with live session logging and remote control",
|
|
5476
5476
|
main: "out/main/index.js",
|
|
5477
5477
|
bin: {
|
|
@@ -5509,7 +5509,7 @@ var require_package = __commonJS({
|
|
|
5509
5509
|
"node-pty",
|
|
5510
5510
|
"xterm"
|
|
5511
5511
|
],
|
|
5512
|
-
license: "
|
|
5512
|
+
license: "SEE LICENSE IN LICENSE",
|
|
5513
5513
|
engines: {
|
|
5514
5514
|
node: ">=18"
|
|
5515
5515
|
},
|
|
@@ -5578,10 +5578,7 @@ var PtyManager = class {
|
|
|
5578
5578
|
constructor(agent, cwd) {
|
|
5579
5579
|
const shell = agent.command;
|
|
5580
5580
|
const args = agent.args || [];
|
|
5581
|
-
|
|
5582
|
-
console.log(`[pty] Spawning: ${shell} ${args.join(" ")} in ${cwd}`);
|
|
5583
|
-
} catch {
|
|
5584
|
-
}
|
|
5581
|
+
log(`[pty] Spawning: ${shell} ${args.join(" ")} in ${cwd}`);
|
|
5585
5582
|
this.process = pty.spawn(shell, args, {
|
|
5586
5583
|
name: "xterm-256color",
|
|
5587
5584
|
cwd,
|
|
@@ -5847,7 +5844,7 @@ var ConversationBridge = class {
|
|
|
5847
5844
|
this.inputBuffer = "";
|
|
5848
5845
|
this.terminalCapture.reset();
|
|
5849
5846
|
this.sessionActive = true;
|
|
5850
|
-
|
|
5847
|
+
log("[bridge] Session started");
|
|
5851
5848
|
}
|
|
5852
5849
|
feedOutput(data) {
|
|
5853
5850
|
if (!this.sessionActive || !this.loggingEnabled) return;
|
|
@@ -5927,7 +5924,7 @@ var ConversationBridge = class {
|
|
|
5927
5924
|
this.sessionActive = false;
|
|
5928
5925
|
this.inputBuffer = "";
|
|
5929
5926
|
this.outputBuffer = "";
|
|
5930
|
-
|
|
5927
|
+
log("[bridge] Session ended");
|
|
5931
5928
|
}
|
|
5932
5929
|
};
|
|
5933
5930
|
var DEFAULT_COLS = 80;
|
|
@@ -6141,7 +6138,7 @@ var TranscriptTailer = class {
|
|
|
6141
6138
|
this.sinceMs = Date.now();
|
|
6142
6139
|
this.files.clear();
|
|
6143
6140
|
this.pollTimer = setInterval(() => this.poll(), POLL_INTERVAL_MS);
|
|
6144
|
-
|
|
6141
|
+
log(`[transcripts] Tailing ${this.agentId} transcripts for ${this.cwd}`);
|
|
6145
6142
|
}
|
|
6146
6143
|
stop() {
|
|
6147
6144
|
if (!this.pollTimer) return;
|
|
@@ -6149,7 +6146,7 @@ var TranscriptTailer = class {
|
|
|
6149
6146
|
this.pollTimer = null;
|
|
6150
6147
|
this.poll();
|
|
6151
6148
|
this.files.clear();
|
|
6152
|
-
|
|
6149
|
+
log("[transcripts] Stopped");
|
|
6153
6150
|
}
|
|
6154
6151
|
poll() {
|
|
6155
6152
|
try {
|
|
@@ -6952,10 +6949,7 @@ function isSameLocalDay(a, b) {
|
|
|
6952
6949
|
return da.getFullYear() === db.getFullYear() && da.getMonth() === db.getMonth() && da.getDate() === db.getDate();
|
|
6953
6950
|
}
|
|
6954
6951
|
function log2(...args) {
|
|
6955
|
-
|
|
6956
|
-
console.log("[time-tracker]", ...args);
|
|
6957
|
-
} catch {
|
|
6958
|
-
}
|
|
6952
|
+
log("[time-tracker]", ...args);
|
|
6959
6953
|
}
|
|
6960
6954
|
function findPageByTitle(pages, title) {
|
|
6961
6955
|
for (const p of pages) {
|
|
@@ -7244,10 +7238,7 @@ var COLUMNS2 = [
|
|
|
7244
7238
|
{ name: "Created", type: "date" }
|
|
7245
7239
|
];
|
|
7246
7240
|
function log3(...args) {
|
|
7247
|
-
|
|
7248
|
-
console.log("[ticket-store]", ...args);
|
|
7249
|
-
} catch {
|
|
7250
|
-
}
|
|
7241
|
+
log("[ticket-store]", ...args);
|
|
7251
7242
|
}
|
|
7252
7243
|
function findPageByTitle2(pages, title) {
|
|
7253
7244
|
for (const p of pages) {
|
|
@@ -8581,8 +8572,6 @@ async function main() {
|
|
|
8581
8572
|
orchestrator.writePty(HEADLESS_TAB, "hello\r");
|
|
8582
8573
|
}, 1e3);
|
|
8583
8574
|
}
|
|
8584
|
-
const SCROLL_UP_RE = /\x1b\[<64;\d+;\d+M/;
|
|
8585
|
-
const SCROLL_DOWN_RE = /\x1b\[<65;\d+;\d+M/;
|
|
8586
8575
|
if (process.stdin.isTTY) {
|
|
8587
8576
|
process.stdin.setRawMode(true);
|
|
8588
8577
|
process.stdin.resume();
|
|
@@ -8592,9 +8581,6 @@ async function main() {
|
|
|
8592
8581
|
shutdown();
|
|
8593
8582
|
return;
|
|
8594
8583
|
}
|
|
8595
|
-
if (SCROLL_UP_RE.test(str) || SCROLL_DOWN_RE.test(str)) {
|
|
8596
|
-
return;
|
|
8597
|
-
}
|
|
8598
8584
|
orchestrator.writePty(HEADLESS_TAB, str);
|
|
8599
8585
|
});
|
|
8600
8586
|
}
|