@paradow/ledge 0.26.0 → 0.27.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/{action-SCMMRWYI.js → action-7SJJTIEA.js} +4 -4
- package/dist/cli/{attach-EFIN5VU6.js → attach-V7UPHVB2.js} +8 -8
- package/dist/cli/{bridge-QT5X6TWJ.js → bridge-JK3PMG7T.js} +1 -1
- package/dist/cli/{chunk-L3GYGJRE.js → chunk-2N7PSP7C.js} +3 -3
- package/dist/cli/{chunk-QRD74KPO.js → chunk-37G5F75H.js} +27 -4
- package/dist/cli/{chunk-NYGLT5G2.js → chunk-7GIUG73R.js} +1 -1
- package/dist/cli/{chunk-TYNRKZFE.js → chunk-7JRQCKBP.js} +2 -2
- package/dist/cli/{chunk-JHUIHBC7.js → chunk-7OGFH6KJ.js} +2 -2
- package/dist/cli/{chunk-PTY4LXTG.js → chunk-ADAGKOFO.js} +1 -1
- package/dist/cli/{chunk-2V2OJR2N.js → chunk-CVHX7GUB.js} +77 -18
- package/dist/cli/chunk-HMTOPOJG.js +6 -0
- package/dist/cli/{chunk-SYXW4YB6.js → chunk-IGAGJVRZ.js} +3 -3
- package/dist/cli/{chunk-WYVMCF2K.js → chunk-ISNHG5SJ.js} +5 -5
- package/dist/cli/{chunk-6F6JTPMC.js → chunk-RA3OIXEQ.js} +2 -2
- package/dist/cli/{chunk-5PTC732E.js → chunk-TOSPL5H2.js} +3 -3
- package/dist/cli/{chunk-II6VRGLU.js → chunk-UPKJO3BZ.js} +1 -1
- package/dist/cli/{chunk-HCTXTN2X.js → chunk-YLN3VOGV.js} +2 -2
- package/dist/cli/{daemon-U6NA6PVD.js → daemon-YUPB5NUG.js} +34 -15
- package/dist/cli/{decide-XOUTZT3S.js → decide-HFI2WQXI.js} +3 -3
- package/dist/cli/{handover-6CQKUZJV.js → handover-GKORMXZ2.js} +4 -4
- package/dist/cli/{hook-ZIJACTCF.js → hook-TJJEFV54.js} +9 -9
- package/dist/cli/index.js +16 -16
- package/dist/cli/{launch-QWPA2P66.js → launch-QKQZZSIM.js} +8 -8
- package/dist/cli/{send-T5IOOVGX.js → send-RI7JOO5K.js} +4 -4
- package/dist/cli/{status-EZPFE5CL.js → status-RQRS26S2.js} +2 -2
- package/dist/cli/{task-B2QVGHDF.js → task-U2XHBUKW.js} +4 -4
- package/dist/cli/{team-V6VPO3CB.js → team-NFC4XEIA.js} +6 -6
- package/dist/cli/{tui-MM64KSQ2.js → tui-UWR7SDYF.js} +8 -8
- package/dist/cli/{version-SK4VC4AE.js → version-YYNMMWKJ.js} +1 -1
- package/dist/cli/{who-XXZUCJPD.js → who-WW6IL4KD.js} +3 -3
- package/package.json +1 -1
- package/dist/cli/chunk-3PLC745L.js +0 -6
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
resultLine,
|
|
9
9
|
runClose,
|
|
10
10
|
runOnClient
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-IGAGJVRZ.js";
|
|
12
|
+
import "./chunk-ADAGKOFO.js";
|
|
13
|
+
import "./chunk-7GIUG73R.js";
|
|
14
|
+
import "./chunk-37G5F75H.js";
|
|
15
15
|
import "./chunk-HOOHS3MX.js";
|
|
16
16
|
import "./chunk-U67V476Y.js";
|
|
17
17
|
export {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
attachEnv
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-ISNHG5SJ.js";
|
|
4
|
+
import "./chunk-CVHX7GUB.js";
|
|
5
5
|
import "./chunk-OLLQBK6N.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-YLN3VOGV.js";
|
|
7
|
+
import "./chunk-7JRQCKBP.js";
|
|
8
|
+
import "./chunk-UPKJO3BZ.js";
|
|
9
|
+
import "./chunk-ADAGKOFO.js";
|
|
10
10
|
import {
|
|
11
11
|
connect
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7GIUG73R.js";
|
|
13
13
|
import {
|
|
14
14
|
PROTOCOL_PORT,
|
|
15
15
|
backendOf
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-37G5F75H.js";
|
|
17
17
|
import {
|
|
18
18
|
realTmux
|
|
19
19
|
} from "./chunk-NLL2EQJ2.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CODEX_HOOK_VAR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADAGKOFO.js";
|
|
4
4
|
import {
|
|
5
5
|
connect
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7GIUG73R.js";
|
|
7
7
|
import {
|
|
8
8
|
BRIEF_MAX
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-37G5F75H.js";
|
|
10
10
|
|
|
11
11
|
// src/cli/handover.ts
|
|
12
12
|
import { randomUUID } from "crypto";
|
|
@@ -1960,7 +1960,7 @@ var AssertionSchema = z26.object({
|
|
|
1960
1960
|
signature: B64U2.max(1024)
|
|
1961
1961
|
});
|
|
1962
1962
|
var TeamsDigestSchema = z26.string().regex(/^[0-9a-f]{64}$/);
|
|
1963
|
-
var ConfirmPurposeSchema = z26.enum(["register", "decide", "launch", "close", "act", "define", "team"]);
|
|
1963
|
+
var ConfirmPurposeSchema = z26.enum(["register", "decide", "launch", "close", "act", "define", "team", "pc"]);
|
|
1964
1964
|
var PhoneChatStepSchema = ChatStepSchema.pick({ kind: true, id: true, name: true }).strict();
|
|
1965
1965
|
var PhoneChatProposalSchema = z26.object({
|
|
1966
1966
|
project: z26.string().max(80),
|
|
@@ -2077,6 +2077,8 @@ var sessionId = z26.string().min(1).max(100);
|
|
|
2077
2077
|
var PhoneExpectSchema = PendingSchema.pick({ kind: true, text: true }).extend({ key: z26.string().min(1).max(64) });
|
|
2078
2078
|
var CardRowsSchema = z26.array(z26.number().int().min(0).max(MAX_PROPOSALS - 1)).min(1).max(MAX_PROPOSALS).refine((r) => new Set(r).size === r.length, "a row twice");
|
|
2079
2079
|
var teamsOp = { op: OperationIdSchema, assertion: AssertionSchema.optional() };
|
|
2080
|
+
var PcActionSchema = z26.enum(["update", "restart"]);
|
|
2081
|
+
var pcSubject = (action, version) => action === "update" ? `update@${version ?? ""}` : "restart";
|
|
2080
2082
|
var teamsScope = { scope: DefinitionScopeSchema, project: z26.string().min(1).max(80).optional() };
|
|
2081
2083
|
var PhoneClientMessageSchema = z26.discriminatedUnion("type", [
|
|
2082
2084
|
z26.object({ type: z26.literal("snapshot.request") }),
|
|
@@ -2094,7 +2096,10 @@ var PhoneClientMessageSchema = z26.discriminatedUnion("type", [
|
|
|
2094
2096
|
expect: PhoneExpectSchema.optional(),
|
|
2095
2097
|
qid: OperationIdSchema.optional(),
|
|
2096
2098
|
/** sha256 of the `define` or `team` operation the challenge is for (`teamsDigest`). */
|
|
2097
|
-
digest: TeamsDigestSchema.optional()
|
|
2099
|
+
digest: TeamsDigestSchema.optional(),
|
|
2100
|
+
/** A `pc` challenge: what it is for, and for an update the version it covers. */
|
|
2101
|
+
action: PcActionSchema.optional(),
|
|
2102
|
+
version: z26.string().regex(SEMVER).optional()
|
|
2098
2103
|
}),
|
|
2099
2104
|
z26.object({ type: z26.literal("credential.register"), op: OperationIdSchema, credential: CredentialSchema }),
|
|
2100
2105
|
z26.object({
|
|
@@ -2181,13 +2186,25 @@ var PhoneClientMessageSchema = z26.discriminatedUnion("type", [
|
|
|
2181
2186
|
z26.object({ type: z26.literal("team.launch"), ...teamsOp, project: z26.string().min(1).max(80), name: TeamNameSchema, seats: PhoneSeatsSchema, template: z26.string().min(1).max(64).optional() }).strict(),
|
|
2182
2187
|
z26.object({ type: z26.literal("team.compose"), ...teamsOp, team: TeamIdSchema, seats: PhoneSeatsSchema }).strict(),
|
|
2183
2188
|
z26.object({ type: z26.literal("team.seat"), ...teamsOp, team: TeamIdSchema, role: RoleIdSchema, action: z26.enum(["start", "restart"]) }).strict(),
|
|
2184
|
-
z26.object({ type: z26.literal("team.dissolve"), ...teamsOp, team: TeamIdSchema }).strict()
|
|
2189
|
+
z26.object({ type: z26.literal("team.dissolve"), ...teamsOp, team: TeamIdSchema }).strict(),
|
|
2190
|
+
/** Installs `version` on the PC, then restarts its daemon; the phone asks for its own build's version. Passkey, purpose `pc`. */
|
|
2191
|
+
z26.object({ type: z26.literal("daemon.update"), ...teamsOp, version: z26.string().regex(SEMVER) }).strict(),
|
|
2192
|
+
/** Restarts the PC's daemon without installing anything. Passkey, purpose `pc`. */
|
|
2193
|
+
z26.object({ type: z26.literal("daemon.restart"), ...teamsOp }).strict()
|
|
2185
2194
|
]).superRefine((m, ctx) => {
|
|
2186
2195
|
const issue = "scope" in m ? scopeIssue(m) : null;
|
|
2187
2196
|
if (issue) ctx.addIssue({ code: z26.ZodIssueCode.custom, message: issue, path: ["project"] });
|
|
2188
2197
|
});
|
|
2189
2198
|
var PhoneServerMessageSchema = z26.discriminatedUnion("type", [
|
|
2190
|
-
z26.object({ type: z26.literal("snapshot"), protocol: z26.literal(PHONE_PROTOCOL), sessions: z26.array(PhoneSessionSchema), capabilities: CapabilitiesByToolSchema, daemon: z26.object({
|
|
2199
|
+
z26.object({ type: z26.literal("snapshot"), protocol: z26.literal(PHONE_PROTOCOL), sessions: z26.array(PhoneSessionSchema), capabilities: CapabilitiesByToolSchema, daemon: z26.object({
|
|
2200
|
+
version: z26.string(),
|
|
2201
|
+
name: z26.string().max(40),
|
|
2202
|
+
boot: z26.string().uuid().optional(),
|
|
2203
|
+
teams: z26.literal(true).optional(),
|
|
2204
|
+
/** `update`: the daemon can install a version and restart (npm, systemd); `restart`: it can restart (systemd). */
|
|
2205
|
+
update: z26.literal(true).optional(),
|
|
2206
|
+
restart: z26.literal(true).optional()
|
|
2207
|
+
}), device: z26.object({ confirm: z26.boolean(), push: z26.enum(["on", "off", "stale", "unavailable"]).optional(), chat: z26.literal(true).optional(), contextNear: ContextPrefsSchema.shape.near.optional() }).optional() }),
|
|
2191
2208
|
z26.object({
|
|
2192
2209
|
type: z26.literal("confirm.challenge"),
|
|
2193
2210
|
purpose: ConfirmPurposeSchema,
|
|
@@ -2214,6 +2231,10 @@ var PhoneServerMessageSchema = z26.discriminatedUnion("type", [
|
|
|
2214
2231
|
z26.object({ type: z26.literal("chat.done"), qid: OperationIdSchema, turn: PhoneChatTurnSchema }),
|
|
2215
2232
|
z26.object({ type: z26.literal("chat.error"), qid: OperationIdSchema, code: ChatErrorCodeSchema }),
|
|
2216
2233
|
z26.object({ type: z26.literal("teams.catalog"), catalog: PhoneCatalogSchema }),
|
|
2234
|
+
/** The daemon updating or restarting itself, whoever asked: npm runs, then the service restarts (the link drops right after). */
|
|
2235
|
+
z26.object({ type: z26.literal("daemon.progress"), version: z26.string().max(40), step: z26.enum(["installing", "restarting"]) }),
|
|
2236
|
+
/** Nothing was changed. Never npm's output nor a command: both hold the PC's paths. */
|
|
2237
|
+
z26.object({ type: z26.literal("daemon.failed"), version: z26.string().max(40), reason: UpdateFailureSchema }),
|
|
2217
2238
|
z26.object({ type: z26.literal("teams.role"), role: PhoneRoleSchema }),
|
|
2218
2239
|
/** The live teams, after each snapshot and on every change. */
|
|
2219
2240
|
z26.object({ type: z26.literal("teams"), teams: z26.array(PhoneTeamSchema).max(50) }),
|
|
@@ -2429,6 +2450,7 @@ export {
|
|
|
2429
2450
|
PROTOCOL_PORT,
|
|
2430
2451
|
RefusalCodeSchema,
|
|
2431
2452
|
RecentSchema,
|
|
2453
|
+
SEMVER,
|
|
2432
2454
|
MESSAGE_MAX,
|
|
2433
2455
|
SUMMARY_MAX,
|
|
2434
2456
|
parseClientMessage,
|
|
@@ -2463,6 +2485,7 @@ export {
|
|
|
2463
2485
|
OperationIdSchema,
|
|
2464
2486
|
UNTYPABLE,
|
|
2465
2487
|
CHAT_HISTORY_BUDGET,
|
|
2488
|
+
pcSubject,
|
|
2466
2489
|
PhoneClientMessageSchema,
|
|
2467
2490
|
teamsPurpose,
|
|
2468
2491
|
teamsDigest,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ledgeTitleRest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADAGKOFO.js";
|
|
4
4
|
import {
|
|
5
5
|
cleanTopic,
|
|
6
6
|
isArchived,
|
|
7
7
|
sessionTitle
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-37G5F75H.js";
|
|
9
9
|
|
|
10
10
|
// src/daemon/seat.ts
|
|
11
11
|
function teammates(team, sessions) {
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
templateExists,
|
|
11
11
|
templateId,
|
|
12
12
|
templateText
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-YLN3VOGV.js";
|
|
14
14
|
import {
|
|
15
15
|
NO_ALWAYS,
|
|
16
16
|
NO_NOTE,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
shownCommand,
|
|
40
40
|
teammates,
|
|
41
41
|
withImages
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-7JRQCKBP.js";
|
|
43
43
|
import {
|
|
44
44
|
definitionFiles,
|
|
45
45
|
definitionHash,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
loadRole,
|
|
48
48
|
quoteScalar,
|
|
49
49
|
repoRoot
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-UPKJO3BZ.js";
|
|
51
51
|
import {
|
|
52
52
|
PARENT_AGENT_VARS,
|
|
53
53
|
agentEnv,
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
labelTranscript,
|
|
58
58
|
resumeLabel,
|
|
59
59
|
spawnSession
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-ADAGKOFO.js";
|
|
61
61
|
import {
|
|
62
62
|
ACTIONS,
|
|
63
63
|
ATTACHMENT_ID,
|
|
@@ -95,6 +95,7 @@ import {
|
|
|
95
95
|
RefusalCodeSchema,
|
|
96
96
|
RoleIdSchema,
|
|
97
97
|
RouteResultSchema,
|
|
98
|
+
SEMVER,
|
|
98
99
|
SESSION_KEY_VAR,
|
|
99
100
|
SNAPSHOT_BODY_MAX,
|
|
100
101
|
SshAliasSchema,
|
|
@@ -131,6 +132,7 @@ import {
|
|
|
131
132
|
parseServerMessage,
|
|
132
133
|
parseTaskBlock,
|
|
133
134
|
parseTeamBlock,
|
|
135
|
+
pcSubject,
|
|
134
136
|
pendingKey,
|
|
135
137
|
pickName,
|
|
136
138
|
projectOf,
|
|
@@ -145,7 +147,7 @@ import {
|
|
|
145
147
|
teamsPurpose,
|
|
146
148
|
tokenEquals,
|
|
147
149
|
transmissions
|
|
148
|
-
} from "./chunk-
|
|
150
|
+
} from "./chunk-37G5F75H.js";
|
|
149
151
|
import {
|
|
150
152
|
log
|
|
151
153
|
} from "./chunk-6IYPRUQG.js";
|
|
@@ -2276,12 +2278,12 @@ var RpcError = class extends Error {
|
|
|
2276
2278
|
};
|
|
2277
2279
|
function lineReader(max, onLine, onBad) {
|
|
2278
2280
|
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
2279
|
-
let
|
|
2281
|
+
let parts2 = [];
|
|
2280
2282
|
let size = 0;
|
|
2281
2283
|
let skipping = false;
|
|
2282
2284
|
const flush = () => {
|
|
2283
|
-
const whole =
|
|
2284
|
-
|
|
2285
|
+
const whole = parts2.length === 1 ? parts2[0] : Buffer.concat(parts2);
|
|
2286
|
+
parts2 = [];
|
|
2285
2287
|
size = 0;
|
|
2286
2288
|
let text;
|
|
2287
2289
|
try {
|
|
@@ -2301,10 +2303,10 @@ function lineReader(max, onLine, onBad) {
|
|
|
2301
2303
|
size += end - from;
|
|
2302
2304
|
if (size > max) {
|
|
2303
2305
|
skipping = true;
|
|
2304
|
-
|
|
2306
|
+
parts2 = [];
|
|
2305
2307
|
size = 0;
|
|
2306
2308
|
onBad(`frame over ${max} bytes`);
|
|
2307
|
-
} else if (end > from)
|
|
2309
|
+
} else if (end > from) parts2.push(chunk.subarray(from, end));
|
|
2308
2310
|
}
|
|
2309
2311
|
if (nl === -1) return;
|
|
2310
2312
|
if (skipping) skipping = false;
|
|
@@ -3959,9 +3961,9 @@ function createForge(deps = {}) {
|
|
|
3959
3961
|
index.push(`- ${name}: no repository on this machine`);
|
|
3960
3962
|
return;
|
|
3961
3963
|
}
|
|
3962
|
-
const
|
|
3963
|
-
await writeFile5(join9(ctx.dir, file),
|
|
3964
|
-
const sources =
|
|
3964
|
+
const parts2 = await Promise.all(local.map((r) => section(r.path)));
|
|
3965
|
+
await writeFile5(join9(ctx.dir, file), parts2.flatMap((s) => s.lines).join("\n"));
|
|
3966
|
+
const sources = parts2.flatMap((s) => s.source ? [s.source] : []);
|
|
3965
3967
|
ctx.steps.set(file, { kind: "repo", name, path: sources.join(", ") || file });
|
|
3966
3968
|
index.push(`- ${name}: ${file}`);
|
|
3967
3969
|
}));
|
|
@@ -5061,18 +5063,18 @@ async function readAt(request, path) {
|
|
|
5061
5063
|
if (!stat4.isFile()) return failure(request, "not_file");
|
|
5062
5064
|
if (stat4.size > DOCUMENT_MAX_BYTES) return failure(request, "too_large");
|
|
5063
5065
|
const chunk = Buffer.allocUnsafe(64 * 1024);
|
|
5064
|
-
const
|
|
5066
|
+
const parts2 = [];
|
|
5065
5067
|
let bytes4 = 0;
|
|
5066
5068
|
while (bytes4 <= DOCUMENT_MAX_BYTES) {
|
|
5067
5069
|
const { bytesRead } = await file.read(chunk, 0, Math.min(chunk.length, DOCUMENT_MAX_BYTES + 1 - bytes4), null);
|
|
5068
5070
|
if (!bytesRead) break;
|
|
5069
|
-
|
|
5071
|
+
parts2.push(Buffer.from(chunk.subarray(0, bytesRead)));
|
|
5070
5072
|
bytes4 += bytesRead;
|
|
5071
5073
|
}
|
|
5072
5074
|
if (bytes4 > DOCUMENT_MAX_BYTES) return failure(request, "too_large");
|
|
5073
5075
|
let text;
|
|
5074
5076
|
try {
|
|
5075
|
-
text = new TextDecoder("utf-8", { fatal: true }).decode(Buffer.concat(
|
|
5077
|
+
text = new TextDecoder("utf-8", { fatal: true }).decode(Buffer.concat(parts2, bytes4));
|
|
5076
5078
|
} catch {
|
|
5077
5079
|
return failure(request, "invalid_utf8");
|
|
5078
5080
|
}
|
|
@@ -5674,6 +5676,18 @@ function serveSsh(ws, alias, opts = {}) {
|
|
|
5674
5676
|
// src/mobile/gateway.ts
|
|
5675
5677
|
import { hostname } from "os";
|
|
5676
5678
|
|
|
5679
|
+
// ../ui/src/semver.ts
|
|
5680
|
+
var parts = (v) => v.split("-")[0].split(".").map((n) => Number.parseInt(n, 10) || 0);
|
|
5681
|
+
function compareVersions(a, b2) {
|
|
5682
|
+
const x = parts(a);
|
|
5683
|
+
const y = parts(b2);
|
|
5684
|
+
for (let i = 0; i < 3; i++) {
|
|
5685
|
+
const d = (x[i] ?? 0) - (y[i] ?? 0);
|
|
5686
|
+
if (d) return d > 0 ? 1 : -1;
|
|
5687
|
+
}
|
|
5688
|
+
return a === b2 ? 0 : a.includes("-") ? -1 : b2.includes("-") ? 1 : 0;
|
|
5689
|
+
}
|
|
5690
|
+
|
|
5677
5691
|
// src/mobile/chat.ts
|
|
5678
5692
|
var HISTORY_TURNS = 50;
|
|
5679
5693
|
function errorCode2(message) {
|
|
@@ -6755,7 +6769,7 @@ function createPhoneGateway(deps) {
|
|
|
6755
6769
|
protocol: PHONE_PROTOCOL,
|
|
6756
6770
|
sessions: deps.sessions().filter((s) => !isArchived(s)).map((s) => projected(deviceId, s)),
|
|
6757
6771
|
capabilities: capabilities(),
|
|
6758
|
-
daemon: { version: deps.version, boot: deps.boot, name: clip(hostname(), 40).text },
|
|
6772
|
+
daemon: { version: deps.version, boot: deps.boot, name: clip(hostname(), 40).text, ...teamsOps ? { teams: true } : {}, ...deps.pc?.canUpdate ? { update: true } : {}, ...deps.pc?.canRestart ? { restart: true } : {} },
|
|
6759
6773
|
device: { confirm: deps.credential(deviceId) !== null, push: push2, ...deps.chats ? { chat: true } : {}, ...deps.contextNear ? { contextNear: deps.contextNear() } : {} }
|
|
6760
6774
|
};
|
|
6761
6775
|
};
|
|
@@ -7019,7 +7033,23 @@ function createPhoneGateway(deps) {
|
|
|
7019
7033
|
push: (deviceId, m) => push(deviceId, m),
|
|
7020
7034
|
log: log2
|
|
7021
7035
|
}) : void 0;
|
|
7036
|
+
const pcOperation = (deviceId, msg) => {
|
|
7037
|
+
const pc = deps.pc;
|
|
7038
|
+
const update = msg.type === "daemon.update";
|
|
7039
|
+
if (!pc || !(update ? pc.canUpdate : pc.canRestart)) return { status: "rejected", reason: "unavailable" };
|
|
7040
|
+
if (update && (!SEMVER.test(deps.version) || compareVersions(msg.version, deps.version) <= 0)) return { status: "rejected", reason: "invalid" };
|
|
7041
|
+
const refused = checkAssertion(deviceId, msg.assertion, "pc", update ? pcSubject("update", msg.version) : pcSubject("restart"));
|
|
7042
|
+
if (refused) return refused;
|
|
7043
|
+
const reply = (m) => {
|
|
7044
|
+
if (m.type === "update.failed") push(deviceId, { type: "daemon.failed", version: m.version, reason: m.reason });
|
|
7045
|
+
};
|
|
7046
|
+
log2(`phone: device ${deviceId} asked the daemon to ${update ? `update to ${msg.version}` : "restart"}`);
|
|
7047
|
+
if (update) pc.update(msg.version, reply);
|
|
7048
|
+
else pc.restart(reply);
|
|
7049
|
+
return { status: "applied" };
|
|
7050
|
+
};
|
|
7022
7051
|
const run2 = async (deviceId, msg) => {
|
|
7052
|
+
if (msg.type === "daemon.update" || msg.type === "daemon.restart") return pcOperation(deviceId, msg);
|
|
7023
7053
|
if (isTeamsOperation(msg)) return teamsOps ? teamsOps.run(deviceId, msg) : { status: "rejected", reason: "unavailable" };
|
|
7024
7054
|
if (msg.type === "chat.ignore") return chatIgnore(deviceId, msg);
|
|
7025
7055
|
if (msg.type === "chat.team") return chatTeam(deviceId, msg);
|
|
@@ -7223,6 +7253,15 @@ function createPhoneGateway(deps) {
|
|
|
7223
7253
|
const challenge = deps.challenges.issue({ deviceId, purpose: msg.purpose, subject: msg.digest });
|
|
7224
7254
|
return push(deviceId, { type: "confirm.challenge", purpose: msg.purpose, challenge, rpId: rp.rpId, credentialId: cred.id, expiresInMs: CHALLENGE_TTL_MS, digest: msg.digest });
|
|
7225
7255
|
}
|
|
7256
|
+
if (msg.purpose === "pc") {
|
|
7257
|
+
const pc = deps.pc;
|
|
7258
|
+
if (!pc || !msg.action || msg.action === "update" !== (msg.version !== void 0)) return invalid2();
|
|
7259
|
+
if (!(msg.action === "update" ? pc.canUpdate : pc.canRestart)) return invalid2();
|
|
7260
|
+
const cred = deps.credential(deviceId);
|
|
7261
|
+
if (!cred || cred.rpId !== rp.rpId) return invalid2();
|
|
7262
|
+
const challenge = deps.challenges.issue({ deviceId, purpose: "pc", subject: pcSubject(msg.action, msg.version) });
|
|
7263
|
+
return push(deviceId, { type: "confirm.challenge", purpose: "pc", challenge, rpId: rp.rpId, credentialId: cred.id, expiresInMs: CHALLENGE_TTL_MS });
|
|
7264
|
+
}
|
|
7226
7265
|
const unhandled = msg.purpose;
|
|
7227
7266
|
void unhandled;
|
|
7228
7267
|
return invalid2();
|
|
@@ -7324,6 +7363,13 @@ function createPhoneGateway(deps) {
|
|
|
7324
7363
|
}
|
|
7325
7364
|
return;
|
|
7326
7365
|
}
|
|
7366
|
+
// The daemon updating or restarting itself, whoever asked. Never npm's output nor a command: both hold the PC's paths.
|
|
7367
|
+
case "update.progress":
|
|
7368
|
+
for (const [deviceId, f] of followers) if (f.subscribed) push(deviceId, { type: "daemon.progress", version: m.version, step: m.step });
|
|
7369
|
+
return;
|
|
7370
|
+
case "update.failed":
|
|
7371
|
+
for (const [deviceId, f] of followers) if (f.subscribed) push(deviceId, { type: "daemon.failed", version: m.version, reason: m.reason });
|
|
7372
|
+
return;
|
|
7327
7373
|
case "session.preview":
|
|
7328
7374
|
for (const [deviceId, f] of followers) {
|
|
7329
7375
|
if (f.watching === m.id) push(deviceId, { type: "session.preview", id: m.id, lines: [...m.lines] }, `session.preview:${m.id}`);
|
|
@@ -9060,7 +9106,20 @@ ${now2.prompt}` });
|
|
|
9060
9106
|
projectName: (id) => id ? projects.projects.find((p) => p.id === id)?.name ?? null : null,
|
|
9061
9107
|
// A project's folder is its first local repo: only a project with one can be named by the phone.
|
|
9062
9108
|
projectByName: (name) => projects.projects.find((p) => p.name === name && p.repos.some((r) => r.machine === "local"))?.id ?? null,
|
|
9063
|
-
teamCatalog: true
|
|
9109
|
+
teamCatalog: true,
|
|
9110
|
+
// The phone's « Mettre à jour le PC » and « Redémarrer le daemon »: the updater Desktop's `update.daemon` uses, progress broadcast.
|
|
9111
|
+
...opts.updater && opts.daemon ? {
|
|
9112
|
+
pc: {
|
|
9113
|
+
canUpdate: opts.daemon.install === "npm" && opts.daemon.systemd,
|
|
9114
|
+
canRestart: opts.daemon.systemd,
|
|
9115
|
+
update: (version, reply) => {
|
|
9116
|
+
void opts.updater.update(version, broadcast, reply);
|
|
9117
|
+
},
|
|
9118
|
+
restart: (reply) => {
|
|
9119
|
+
void opts.updater.restart(broadcast, reply);
|
|
9120
|
+
}
|
|
9121
|
+
}
|
|
9122
|
+
} : {}
|
|
9064
9123
|
});
|
|
9065
9124
|
let unsubscribePush;
|
|
9066
9125
|
if (mobile) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CODEX_HOOK_VAR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADAGKOFO.js";
|
|
4
4
|
import {
|
|
5
5
|
connect
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7GIUG73R.js";
|
|
7
7
|
import {
|
|
8
8
|
SESSION_KEY_VAR,
|
|
9
9
|
actionById
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-37G5F75H.js";
|
|
11
11
|
|
|
12
12
|
// src/cli/action.ts
|
|
13
13
|
import { randomUUID } from "crypto";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EFFORT_ARGS,
|
|
3
3
|
MODEL_ARGS
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CVHX7GUB.js";
|
|
5
5
|
import {
|
|
6
6
|
findRole
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UPKJO3BZ.js";
|
|
8
8
|
import {
|
|
9
9
|
exitFile,
|
|
10
10
|
spawnSession
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ADAGKOFO.js";
|
|
12
12
|
import {
|
|
13
13
|
DaemonRefusedError,
|
|
14
14
|
connect
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-7GIUG73R.js";
|
|
16
16
|
import {
|
|
17
17
|
PROTOCOL_PORT,
|
|
18
18
|
autonomyArgs
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-37G5F75H.js";
|
|
20
20
|
import {
|
|
21
21
|
realTmux
|
|
22
22
|
} from "./chunk-NLL2EQJ2.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CODEX_HOOK_VAR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADAGKOFO.js";
|
|
4
4
|
import {
|
|
5
5
|
connect,
|
|
6
6
|
sendMessageAndAwaitAck
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7GIUG73R.js";
|
|
8
8
|
|
|
9
9
|
// src/cli/send.ts
|
|
10
10
|
import { randomUUID } from "crypto";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CODEX_HOOK_VAR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADAGKOFO.js";
|
|
4
4
|
import {
|
|
5
5
|
connect
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7GIUG73R.js";
|
|
7
7
|
import {
|
|
8
8
|
LEDGE_GIVER,
|
|
9
9
|
TASK_TEXT_MAX,
|
|
10
10
|
TASK_TITLE_MAX
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-37G5F75H.js";
|
|
12
12
|
|
|
13
13
|
// src/cli/task.ts
|
|
14
14
|
import { randomUUID } from "crypto";
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
quoteScalar,
|
|
7
7
|
readSmall,
|
|
8
8
|
scalarValue
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UPKJO3BZ.js";
|
|
10
10
|
import {
|
|
11
11
|
SeatsSchema,
|
|
12
12
|
TeamNameSchema
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-37G5F75H.js";
|
|
14
14
|
import {
|
|
15
15
|
log
|
|
16
16
|
} from "./chunk-6IYPRUQG.js";
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
startServer,
|
|
10
10
|
tasksJournal,
|
|
11
11
|
teamsJournal
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CVHX7GUB.js";
|
|
13
13
|
import "./chunk-OLLQBK6N.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-YLN3VOGV.js";
|
|
15
15
|
import {
|
|
16
16
|
QUESTION_TOOLS,
|
|
17
17
|
crossSession,
|
|
@@ -26,11 +26,11 @@ import {
|
|
|
26
26
|
readPeers,
|
|
27
27
|
reduce,
|
|
28
28
|
stripNote
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-7JRQCKBP.js";
|
|
30
|
+
import "./chunk-UPKJO3BZ.js";
|
|
31
31
|
import {
|
|
32
32
|
agentMessages
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-ADAGKOFO.js";
|
|
34
34
|
import {
|
|
35
35
|
DEFAULT_RELAY_URL,
|
|
36
36
|
DevicePollResponseSchema,
|
|
@@ -44,10 +44,10 @@ import {
|
|
|
44
44
|
SealedFrameSchema,
|
|
45
45
|
SessionSchema,
|
|
46
46
|
backendOf
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-37G5F75H.js";
|
|
48
48
|
import {
|
|
49
49
|
LEDGE_VERSION
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-HMTOPOJG.js";
|
|
51
51
|
import {
|
|
52
52
|
SERVICE,
|
|
53
53
|
inDaemonService,
|
|
@@ -799,6 +799,16 @@ var npmEnv = (execPath, env) => ({ ...env, PATH: `${dirname3(execPath)}:${env.PA
|
|
|
799
799
|
function createDaemonUpdater(deps) {
|
|
800
800
|
let busy = false;
|
|
801
801
|
let restarting = false;
|
|
802
|
+
const restartService = async (version, send) => {
|
|
803
|
+
send({ type: "update.progress", version, step: "restarting" });
|
|
804
|
+
await deps.save();
|
|
805
|
+
const code = await deps.restart();
|
|
806
|
+
if (code !== 0) {
|
|
807
|
+
log(`update: systemctl restart failed (${code})`);
|
|
808
|
+
return send({ type: "update.failed", version, reason: "no-systemd", command: RESTART_COMMAND });
|
|
809
|
+
}
|
|
810
|
+
restarting = true;
|
|
811
|
+
};
|
|
802
812
|
return {
|
|
803
813
|
running: () => busy,
|
|
804
814
|
/** `reply` reaches only the asking client: a busy refusal must not fail the flow other overlays are following. */
|
|
@@ -820,20 +830,29 @@ function createDaemonUpdater(deps) {
|
|
|
820
830
|
${r.output}`);
|
|
821
831
|
return send({ type: "update.failed", version, reason: "npm-failed", detail: lastLines(r.output), command: shown });
|
|
822
832
|
}
|
|
823
|
-
|
|
824
|
-
await deps.save();
|
|
825
|
-
const code = await deps.restart();
|
|
826
|
-
if (code !== 0) {
|
|
827
|
-
log(`update: systemctl restart failed (${code})`);
|
|
828
|
-
return send({ type: "update.failed", version, reason: "no-systemd", command: RESTART_COMMAND });
|
|
829
|
-
}
|
|
830
|
-
restarting = true;
|
|
833
|
+
await restartService(version, send);
|
|
831
834
|
} catch (e) {
|
|
832
835
|
log(`update: ${e.stack ?? String(e)}`);
|
|
833
836
|
send({ type: "update.failed", version, reason: "npm-failed", detail: e instanceof Error ? e.message : String(e) });
|
|
834
837
|
} finally {
|
|
835
838
|
if (!restarting) busy = false;
|
|
836
839
|
}
|
|
840
|
+
},
|
|
841
|
+
/** The restart alone, for the phone (spec 2026-10-28 mobile daemon update): the update's guards but npm, then the same restart. */
|
|
842
|
+
async restart(send, reply = send) {
|
|
843
|
+
const version = deps.info().version;
|
|
844
|
+
if (busy) return reply({ type: "update.failed", version, reason: "busy" });
|
|
845
|
+
if (!deps.info().systemd) return send({ type: "update.failed", version, reason: "no-systemd", command: RESTART_COMMAND });
|
|
846
|
+
busy = true;
|
|
847
|
+
try {
|
|
848
|
+
if (await deps.atRisk()) return send({ type: "update.failed", version, reason: "sessions-at-risk" });
|
|
849
|
+
await restartService(version, send);
|
|
850
|
+
} catch (e) {
|
|
851
|
+
log(`restart: ${e.stack ?? String(e)}`);
|
|
852
|
+
send({ type: "update.failed", version, reason: "no-systemd", command: RESTART_COMMAND });
|
|
853
|
+
} finally {
|
|
854
|
+
if (!restarting) busy = false;
|
|
855
|
+
}
|
|
837
856
|
}
|
|
838
857
|
};
|
|
839
858
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CODEX_HOOK_VAR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADAGKOFO.js";
|
|
4
4
|
import {
|
|
5
5
|
connect
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7GIUG73R.js";
|
|
7
7
|
import {
|
|
8
8
|
LEDGE_GIVER,
|
|
9
9
|
TASK_TEXT_MAX
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-37G5F75H.js";
|
|
11
11
|
import "./chunk-HOOHS3MX.js";
|
|
12
12
|
import "./chunk-U67V476Y.js";
|
|
13
13
|
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
handoverArgs,
|
|
4
4
|
handoverOnClient,
|
|
5
5
|
runHandover
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-2N7PSP7C.js";
|
|
7
|
+
import "./chunk-ADAGKOFO.js";
|
|
8
|
+
import "./chunk-7GIUG73R.js";
|
|
9
|
+
import "./chunk-37G5F75H.js";
|
|
10
10
|
import "./chunk-HOOHS3MX.js";
|
|
11
11
|
import "./chunk-U67V476Y.js";
|
|
12
12
|
export {
|
|
@@ -8,36 +8,36 @@ import {
|
|
|
8
8
|
seatContext,
|
|
9
9
|
takeImages,
|
|
10
10
|
teammates
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7JRQCKBP.js";
|
|
12
12
|
import {
|
|
13
13
|
findRole
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UPKJO3BZ.js";
|
|
15
15
|
import {
|
|
16
16
|
parseLedgeCommand,
|
|
17
17
|
readOnClient,
|
|
18
18
|
sendOnClient
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RA3OIXEQ.js";
|
|
20
20
|
import {
|
|
21
21
|
taskOnClient
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-TOSPL5H2.js";
|
|
23
23
|
import {
|
|
24
24
|
handoverOnClient
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-2N7PSP7C.js";
|
|
26
26
|
import {
|
|
27
27
|
CODEX_ENV_VAR,
|
|
28
28
|
CODEX_HOOK_VAR,
|
|
29
29
|
codexPlan
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-ADAGKOFO.js";
|
|
31
31
|
import {
|
|
32
32
|
formatWho
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-7OGFH6KJ.js";
|
|
34
34
|
import {
|
|
35
35
|
connect,
|
|
36
36
|
sendMessageAndAwaitAck
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-7GIUG73R.js";
|
|
38
38
|
import {
|
|
39
39
|
taskClosed
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-37G5F75H.js";
|
|
41
41
|
import {
|
|
42
42
|
log
|
|
43
43
|
} from "./chunk-6IYPRUQG.js";
|
package/dist/cli/index.js
CHANGED
|
@@ -25,7 +25,7 @@ async function hookMain(args) {
|
|
|
25
25
|
try {
|
|
26
26
|
const chunks = [];
|
|
27
27
|
for await (const c of process.stdin) chunks.push(c);
|
|
28
|
-
const { runHook } = await import("./hook-
|
|
28
|
+
const { runHook } = await import("./hook-TJJEFV54.js");
|
|
29
29
|
const out = await runHook(event, Buffer.concat(chunks).toString("utf8"), { tool });
|
|
30
30
|
if (out) process.stdout.write(`${out}
|
|
31
31
|
`);
|
|
@@ -37,7 +37,7 @@ async function main(argv) {
|
|
|
37
37
|
const [cmd, ...rest] = argv;
|
|
38
38
|
switch (cmd) {
|
|
39
39
|
case "daemon": {
|
|
40
|
-
const { startDaemon } = await import("./daemon-
|
|
40
|
+
const { startDaemon } = await import("./daemon-YUPB5NUG.js");
|
|
41
41
|
await startDaemon();
|
|
42
42
|
await new Promise(() => {
|
|
43
43
|
});
|
|
@@ -45,7 +45,7 @@ async function main(argv) {
|
|
|
45
45
|
}
|
|
46
46
|
case "--version":
|
|
47
47
|
case "version": {
|
|
48
|
-
const { LEDGE_VERSION } = await import("./version-
|
|
48
|
+
const { LEDGE_VERSION } = await import("./version-YYNMMWKJ.js");
|
|
49
49
|
console.log(LEDGE_VERSION);
|
|
50
50
|
return 0;
|
|
51
51
|
}
|
|
@@ -66,74 +66,74 @@ async function main(argv) {
|
|
|
66
66
|
return r.ok ? 0 : 1;
|
|
67
67
|
}
|
|
68
68
|
case "status": {
|
|
69
|
-
const { printStatus } = await import("./status-
|
|
69
|
+
const { printStatus } = await import("./status-RQRS26S2.js");
|
|
70
70
|
console.log(await printStatus());
|
|
71
71
|
return 0;
|
|
72
72
|
}
|
|
73
73
|
case "who": {
|
|
74
|
-
const { printWho } = await import("./who-
|
|
74
|
+
const { printWho } = await import("./who-WW6IL4KD.js");
|
|
75
75
|
console.log(await printWho());
|
|
76
76
|
return 0;
|
|
77
77
|
}
|
|
78
78
|
case "send": {
|
|
79
|
-
const { sendMessage } = await import("./send-
|
|
79
|
+
const { sendMessage } = await import("./send-RI7JOO5K.js");
|
|
80
80
|
const r = await sendMessage(rest);
|
|
81
81
|
console.log(r.line);
|
|
82
82
|
return r.code;
|
|
83
83
|
}
|
|
84
84
|
case "read": {
|
|
85
|
-
const { readMessage } = await import("./send-
|
|
85
|
+
const { readMessage } = await import("./send-RI7JOO5K.js");
|
|
86
86
|
const r = await readMessage(rest);
|
|
87
87
|
console.log(r.line);
|
|
88
88
|
return r.code;
|
|
89
89
|
}
|
|
90
90
|
case "task": {
|
|
91
|
-
const { runTask } = await import("./task-
|
|
91
|
+
const { runTask } = await import("./task-U2XHBUKW.js");
|
|
92
92
|
const r = await runTask(rest);
|
|
93
93
|
console.log(r.line);
|
|
94
94
|
return r.code;
|
|
95
95
|
}
|
|
96
96
|
case "decide": {
|
|
97
|
-
const { runDecide } = await import("./decide-
|
|
97
|
+
const { runDecide } = await import("./decide-HFI2WQXI.js");
|
|
98
98
|
const r = await runDecide(rest);
|
|
99
99
|
console.log(r.line);
|
|
100
100
|
return r.code;
|
|
101
101
|
}
|
|
102
102
|
case "handover": {
|
|
103
|
-
const { runHandover } = await import("./handover-
|
|
103
|
+
const { runHandover } = await import("./handover-GKORMXZ2.js");
|
|
104
104
|
const r = await runHandover(rest);
|
|
105
105
|
console.log(r.line);
|
|
106
106
|
return r.code;
|
|
107
107
|
}
|
|
108
108
|
case "close": {
|
|
109
|
-
const { runClose } = await import("./action-
|
|
109
|
+
const { runClose } = await import("./action-7SJJTIEA.js");
|
|
110
110
|
const r = await runClose(rest);
|
|
111
111
|
console.log(r.line);
|
|
112
112
|
return r.code;
|
|
113
113
|
}
|
|
114
114
|
case "team": {
|
|
115
|
-
const { runTeam } = await import("./team-
|
|
115
|
+
const { runTeam } = await import("./team-NFC4XEIA.js");
|
|
116
116
|
const r = await runTeam(rest);
|
|
117
117
|
console.log(r.line);
|
|
118
118
|
return r.code;
|
|
119
119
|
}
|
|
120
120
|
case "tui": {
|
|
121
|
-
const { runTui } = await import("./tui-
|
|
121
|
+
const { runTui } = await import("./tui-UWR7SDYF.js");
|
|
122
122
|
return runTui(rest);
|
|
123
123
|
}
|
|
124
124
|
case "bridge": {
|
|
125
|
-
const { bridge } = await import("./bridge-
|
|
125
|
+
const { bridge } = await import("./bridge-JK3PMG7T.js");
|
|
126
126
|
await bridge();
|
|
127
127
|
return 0;
|
|
128
128
|
}
|
|
129
129
|
case "claude":
|
|
130
130
|
case "codex":
|
|
131
131
|
case "cursor": {
|
|
132
|
-
const { launch } = await import("./launch-
|
|
132
|
+
const { launch } = await import("./launch-QKQZZSIM.js");
|
|
133
133
|
return launch(cmd, rest);
|
|
134
134
|
}
|
|
135
135
|
case "attach": {
|
|
136
|
-
const { attach } = await import("./attach-
|
|
136
|
+
const { attach } = await import("./attach-V7UPHVB2.js");
|
|
137
137
|
return attach(rest.find((a) => !a.startsWith("--")) ?? "", { readOnly: rest.includes("--read-only") });
|
|
138
138
|
}
|
|
139
139
|
default:
|
|
@@ -6,18 +6,18 @@ import {
|
|
|
6
6
|
launch,
|
|
7
7
|
parseLaunchArgs,
|
|
8
8
|
roleArgs
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-ISNHG5SJ.js";
|
|
10
|
+
import "./chunk-CVHX7GUB.js";
|
|
11
11
|
import "./chunk-OLLQBK6N.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-YLN3VOGV.js";
|
|
13
|
+
import "./chunk-7JRQCKBP.js";
|
|
14
|
+
import "./chunk-UPKJO3BZ.js";
|
|
15
15
|
import {
|
|
16
16
|
agentEnv,
|
|
17
17
|
exitFile
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-ADAGKOFO.js";
|
|
19
|
+
import "./chunk-7GIUG73R.js";
|
|
20
|
+
import "./chunk-37G5F75H.js";
|
|
21
21
|
import "./chunk-NLL2EQJ2.js";
|
|
22
22
|
import "./chunk-6IYPRUQG.js";
|
|
23
23
|
import "./chunk-HOOHS3MX.js";
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
readOnClient,
|
|
5
5
|
sendMessage,
|
|
6
6
|
sendOnClient
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-RA3OIXEQ.js";
|
|
8
|
+
import "./chunk-ADAGKOFO.js";
|
|
9
|
+
import "./chunk-7GIUG73R.js";
|
|
10
|
+
import "./chunk-37G5F75H.js";
|
|
11
11
|
import "./chunk-HOOHS3MX.js";
|
|
12
12
|
import "./chunk-U67V476Y.js";
|
|
13
13
|
export {
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
runTask,
|
|
5
5
|
taskArgs,
|
|
6
6
|
taskOnClient
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-TOSPL5H2.js";
|
|
8
|
+
import "./chunk-ADAGKOFO.js";
|
|
9
|
+
import "./chunk-7GIUG73R.js";
|
|
10
|
+
import "./chunk-37G5F75H.js";
|
|
11
11
|
import "./chunk-HOOHS3MX.js";
|
|
12
12
|
import "./chunk-U67V476Y.js";
|
|
13
13
|
export {
|
|
@@ -4,20 +4,20 @@ import {
|
|
|
4
4
|
callerOf,
|
|
5
5
|
resultLine,
|
|
6
6
|
runOnClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IGAGJVRZ.js";
|
|
8
8
|
import {
|
|
9
9
|
listDefinitions
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-YLN3VOGV.js";
|
|
11
|
+
import "./chunk-UPKJO3BZ.js";
|
|
12
|
+
import "./chunk-ADAGKOFO.js";
|
|
13
13
|
import {
|
|
14
14
|
connect
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-7GIUG73R.js";
|
|
16
16
|
import {
|
|
17
17
|
RoleIdSchema,
|
|
18
18
|
SeatsSchema,
|
|
19
19
|
ToolSchema
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-37G5F75H.js";
|
|
21
21
|
import "./chunk-6IYPRUQG.js";
|
|
22
22
|
import "./chunk-HOOHS3MX.js";
|
|
23
23
|
import "./chunk-U67V476Y.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
attachEnv
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ISNHG5SJ.js";
|
|
4
4
|
import {
|
|
5
5
|
imageInfo
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CVHX7GUB.js";
|
|
7
7
|
import {
|
|
8
8
|
MAX_FRAME
|
|
9
9
|
} from "./chunk-OLLQBK6N.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-YLN3VOGV.js";
|
|
11
|
+
import "./chunk-7JRQCKBP.js";
|
|
12
|
+
import "./chunk-UPKJO3BZ.js";
|
|
13
|
+
import "./chunk-ADAGKOFO.js";
|
|
14
|
+
import "./chunk-7GIUG73R.js";
|
|
15
15
|
import {
|
|
16
16
|
ACTION_ERROR_CODES,
|
|
17
17
|
ATTACHMENTS_MAX,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
readDaemonToken,
|
|
44
44
|
taskClosed,
|
|
45
45
|
transmissions
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-37G5F75H.js";
|
|
47
47
|
import "./chunk-NLL2EQJ2.js";
|
|
48
48
|
import "./chunk-6IYPRUQG.js";
|
|
49
49
|
import {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatWho,
|
|
3
3
|
printWho
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-7OGFH6KJ.js";
|
|
5
|
+
import "./chunk-7GIUG73R.js";
|
|
6
|
+
import "./chunk-37G5F75H.js";
|
|
7
7
|
import "./chunk-HOOHS3MX.js";
|
|
8
8
|
import "./chunk-U67V476Y.js";
|
|
9
9
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paradow/ledge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"description": "Follow and answer your WSL agent sessions (Claude Code, Codex, Cursor Agent) from the Ledge island on Windows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": { "ledge": "dist/cli/index.js" },
|