@paradow/ledge 0.10.0 → 0.12.0
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/cli/{attach-2DEXQEC2.js → attach-UWADG6NX.js} +9 -9
- package/dist/cli/{bridge-ZOHP53DV.js → bridge-53ZTDSST.js} +1 -1
- package/dist/cli/chunk-A7YEHYLY.js +105 -0
- package/dist/cli/{who-WVYFPCII.js → chunk-FRGNPUDO.js} +3 -3
- package/dist/cli/chunk-HJTBQQIQ.js +6 -0
- package/dist/cli/{chunk-OHKQKXYM.js → chunk-QAEH5TJB.js} +73 -2
- package/dist/cli/{chunk-JOCNCNRP.js → chunk-VY45MACP.js} +394 -338
- package/dist/cli/{chunk-GMKS55KF.js → chunk-X34LPKG7.js} +16 -3
- package/dist/cli/{chunk-Q7RCYJ4X.js → chunk-XIO4OIHR.js} +1 -1
- package/dist/cli/{chunk-TC3XJUJA.js → chunk-XXFUYME7.js} +9 -1
- package/dist/cli/{chunk-TO4XO2ML.js → chunk-ZEHTNFPV.js} +4 -3
- package/dist/cli/{chunk-IC5RHOX6.js → chunk-ZNRXLDSH.js} +9 -9
- package/dist/cli/{daemon-RI47DJDX.js → daemon-Z7Z2R35O.js} +326 -91
- package/dist/cli/{hook-W46IWB7I.js → hook-OLZ2I4GM.js} +49 -8
- package/dist/cli/index.js +19 -12
- package/dist/cli/{launch-S6XFRSZA.js → launch-ZGICGFVU.js} +5 -5
- package/dist/cli/send-VV25P46X.js +14 -0
- package/dist/cli/{setup-7AEH5DC3.js → setup-TULNBDFB.js} +2 -2
- package/dist/cli/{status-QOXWNLLF.js → status-LLITXNOW.js} +2 -2
- package/dist/cli/{uninstall-7U7ENKOS.js → uninstall-OFSLCP4T.js} +2 -2
- package/dist/cli/{version-SO5OMPGD.js → version-XX2MWLAL.js} +1 -1
- package/dist/cli/who-K6VK7EXV.js +11 -0
- package/package.json +1 -1
- package/dist/cli/chunk-XOPH7YDV.js +0 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
pickName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VY45MACP.js";
|
|
4
4
|
import {
|
|
5
5
|
paths
|
|
6
6
|
} from "./chunk-FGOFRWIB.js";
|
|
@@ -143,9 +143,22 @@ function claudeSessionId(tool, args) {
|
|
|
143
143
|
function exitFile(id) {
|
|
144
144
|
return join2(paths().dir, `exit-${id}`);
|
|
145
145
|
}
|
|
146
|
+
var PARENT_AGENT_VARS = [
|
|
147
|
+
"CLAUDECODE",
|
|
148
|
+
"CLAUDE_CODE_CHILD_SESSION",
|
|
149
|
+
"CLAUDE_CODE_SESSION_ID",
|
|
150
|
+
"CLAUDE_CODE_SESSION_ATTENDED",
|
|
151
|
+
"CLAUDE_CODE_ENTRYPOINT",
|
|
152
|
+
"CLAUDE_CODE_EXECPATH",
|
|
153
|
+
"CLAUDE_CODE_MESSAGING_SOCKET",
|
|
154
|
+
"CLAUDE_CODE_MESSAGING_TOKEN",
|
|
155
|
+
"CLAUDE_PID",
|
|
156
|
+
"CLAUDE_EFFORT"
|
|
157
|
+
];
|
|
158
|
+
var PARENT_AGENT = new Set(PARENT_AGENT_VARS);
|
|
146
159
|
function agentEnv(base, extra) {
|
|
147
160
|
const env = {};
|
|
148
|
-
for (const [k, v] of Object.entries(base)) if (v !== void 0 && k !== "TMUX" && !k.startsWith("TMUX_")) env[k] = v;
|
|
161
|
+
for (const [k, v] of Object.entries(base)) if (v !== void 0 && k !== "TMUX" && !k.startsWith("TMUX_") && !PARENT_AGENT.has(k)) env[k] = v;
|
|
149
162
|
return { ...env, ...extra };
|
|
150
163
|
}
|
|
151
164
|
async function spawnSession(opts) {
|
|
@@ -163,7 +176,7 @@ async function spawnSession(opts) {
|
|
|
163
176
|
const env = opts.env ?? process.env;
|
|
164
177
|
const transcriptPath = agentSessionId ? claudeTranscriptPath(opts.cwd, agentSessionId, env) : void 0;
|
|
165
178
|
const command = opts.recordExit ? ["sh", "-c", '"$@"; echo $? > "$0"', exitFile(id), ...agent] : agent;
|
|
166
|
-
await opts.tmux.newSession({ name: tmuxSession, cwd: opts.cwd, env: agentEnv(env, { LEDGE_SESSION: id, LEDGE_NAME: name, ...opts.tool === "codex" ? { [CODEX_ENV_VAR]: id } : {} }), command });
|
|
179
|
+
await opts.tmux.newSession({ name: tmuxSession, cwd: opts.cwd, env: agentEnv(env, { LEDGE_SESSION: id, LEDGE_NAME: name, ...opts.tool === "codex" ? { [CODEX_ENV_VAR]: id } : {} }), unset: PARENT_AGENT_VARS, command });
|
|
167
180
|
const at = now();
|
|
168
181
|
return { id, name, tool: opts.tool, cwd: opts.cwd, project, title: `${name} \xB7 ${project}`, tmuxSession, state: "starting", helpers: [], startedAt: at, lastActivityAt: at, source: "launcher", ...agentSessionId ? { agentSessionId } : {}, ...transcriptPath ? { transcriptPath } : {} };
|
|
169
182
|
}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
|
+
MESSAGE_MAX,
|
|
2
3
|
PROTOCOL_PORT,
|
|
4
|
+
SUMMARY_MAX,
|
|
3
5
|
parseServerMessage,
|
|
4
6
|
readDaemonToken
|
|
5
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VY45MACP.js";
|
|
6
8
|
|
|
7
9
|
// src/client.ts
|
|
8
10
|
import WebSocket from "ws";
|
|
11
|
+
async function sendMessageAndAwaitAck(client, msg, timeoutMs) {
|
|
12
|
+
if (msg.text.length > MESSAGE_MAX) return { type: "message.ack", rid: msg.rid, outcome: "refused", reason: `message trop long (${msg.text.length} caract\xE8res, ${MESSAGE_MAX} au plus)` };
|
|
13
|
+
client.send(msg.summary && msg.summary.length > SUMMARY_MAX ? { ...msg, summary: msg.summary.slice(0, SUMMARY_MAX) } : msg);
|
|
14
|
+
return client.next("message.ack", timeoutMs);
|
|
15
|
+
}
|
|
9
16
|
var DaemonRefusedError = class extends Error {
|
|
10
17
|
};
|
|
11
18
|
function connect(opts = {}) {
|
|
@@ -82,6 +89,7 @@ function connect(opts = {}) {
|
|
|
82
89
|
}
|
|
83
90
|
|
|
84
91
|
export {
|
|
92
|
+
sendMessageAndAwaitAck,
|
|
85
93
|
DaemonRefusedError,
|
|
86
94
|
connect
|
|
87
95
|
};
|
|
@@ -30,8 +30,9 @@ function realTmux(socket = "ledge", opts = {}) {
|
|
|
30
30
|
const base = () => ["-L", socket, "-f", paths().tmuxConf];
|
|
31
31
|
const t = (args, env) => run([...base(), ...args], env);
|
|
32
32
|
return {
|
|
33
|
-
async newSession({ name, cwd, env, command }) {
|
|
33
|
+
async newSession({ name, cwd, env, unset = [], command }) {
|
|
34
34
|
const envArgs = Object.entries(env).flatMap(([k, v]) => ["-e", `${k}=${v}`]);
|
|
35
|
+
if (unset.length) command = ["env", ...unset.flatMap((v) => ["-u", v]), ...command];
|
|
35
36
|
const clientEnv = env.PATH === void 0 ? void 0 : { ...process.env, PATH: env.PATH };
|
|
36
37
|
const args = [...base(), "new-session", "-d", "-s", name, "-c", cwd, "-x", "200", "-y", "50", ...envArgs, "--", ...command];
|
|
37
38
|
const serverUp = (await t(["list-sessions"])).code === 0;
|
|
@@ -80,8 +81,8 @@ function realTmux(socket = "ledge", opts = {}) {
|
|
|
80
81
|
async killSession(name) {
|
|
81
82
|
await t(["kill-session", "-t", `=${name}`]);
|
|
82
83
|
},
|
|
83
|
-
attachArgs(name) {
|
|
84
|
-
return [...base(), "attach-session", "-t", `=${name}`];
|
|
84
|
+
attachArgs(name, opts2) {
|
|
85
|
+
return [...base(), "attach-session", ...opts2?.readOnly ? ["-r"] : [], "-t", `=${name}`];
|
|
85
86
|
}
|
|
86
87
|
};
|
|
87
88
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DaemonRefusedError,
|
|
3
|
+
connect
|
|
4
|
+
} from "./chunk-XXFUYME7.js";
|
|
1
5
|
import {
|
|
2
6
|
exitFile,
|
|
3
7
|
spawnSession
|
|
4
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-X34LPKG7.js";
|
|
9
|
+
import {
|
|
10
|
+
PROTOCOL_PORT
|
|
11
|
+
} from "./chunk-VY45MACP.js";
|
|
5
12
|
import {
|
|
6
13
|
realTmux
|
|
7
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ZEHTNFPV.js";
|
|
8
15
|
import {
|
|
9
16
|
log
|
|
10
17
|
} from "./chunk-YUSY3E47.js";
|
|
11
|
-
import {
|
|
12
|
-
DaemonRefusedError,
|
|
13
|
-
connect
|
|
14
|
-
} from "./chunk-TC3XJUJA.js";
|
|
15
|
-
import {
|
|
16
|
-
PROTOCOL_PORT
|
|
17
|
-
} from "./chunk-JOCNCNRP.js";
|
|
18
18
|
import {
|
|
19
19
|
ensureLedgeDir
|
|
20
20
|
} from "./chunk-FGOFRWIB.js";
|