@tryglen/cli 0.24.10 → 0.26.1
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/README.md +55 -28
- package/dist/_utils/cli-error.d.ts +1 -0
- package/dist/_utils/cli-error.js.map +1 -1
- package/dist/_utils/config.d.ts +7 -0
- package/dist/_utils/config.js +7 -0
- package/dist/_utils/config.js.map +1 -1
- package/dist/_utils/parse-cursor-db.js +2 -0
- package/dist/_utils/parse-cursor-db.js.map +1 -1
- package/dist/_utils/refresh-control-state.d.ts +3 -0
- package/dist/_utils/refresh-control-state.js +24 -0
- package/dist/_utils/refresh-control-state.js.map +1 -0
- package/dist/_utils/sync-mode-from-server.d.ts +1 -2
- package/dist/_utils/sync-mode-from-server.js +28 -13
- package/dist/_utils/sync-mode-from-server.js.map +1 -1
- package/dist/bin.js +10 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/ingest.js +8 -4
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/org.js +51 -4
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/session-start.js +5 -1
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/set-mode.d.ts +3 -4
- package/dist/commands/set-mode.js +20 -15
- package/dist/commands/set-mode.js.map +1 -1
- package/dist/commands/takeover/_utils/agent-paths.d.ts +6 -0
- package/dist/commands/takeover/_utils/agent-paths.js +23 -0
- package/dist/commands/takeover/_utils/agent-paths.js.map +1 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.d.ts +5 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js +63 -0
- package/dist/commands/takeover/_utils/archive-codex-desktop-thread.js.map +1 -0
- package/dist/commands/takeover/_utils/canonical-digest.d.ts +5 -0
- package/dist/commands/takeover/_utils/canonical-digest.js +4 -0
- package/dist/commands/takeover/_utils/canonical-digest.js.map +1 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.d.ts +16 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js +102 -0
- package/dist/commands/takeover/_utils/codex-desktop-recovery.js.map +1 -0
- package/dist/commands/takeover/_utils/context-fit.d.ts +18 -0
- package/dist/commands/takeover/_utils/context-fit.js +30 -0
- package/dist/commands/takeover/_utils/context-fit.js.map +1 -0
- package/dist/commands/takeover/_utils/cursor-store.d.ts +49 -0
- package/dist/commands/takeover/_utils/cursor-store.js +359 -0
- package/dist/commands/takeover/_utils/cursor-store.js.map +1 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.d.ts +14 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +293 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js.map +1 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.d.ts +4 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.js +40 -0
- package/dist/commands/takeover/_utils/launch-desktop-url.js.map +1 -0
- package/dist/commands/takeover/_utils/native-file.d.ts +14 -0
- package/dist/commands/takeover/_utils/native-file.js +105 -0
- package/dist/commands/takeover/_utils/native-file.js.map +1 -0
- package/dist/commands/takeover/_utils/probe-agent.d.ts +20 -0
- package/dist/commands/takeover/_utils/probe-agent.js +37 -0
- package/dist/commands/takeover/_utils/probe-agent.js.map +1 -0
- package/dist/commands/takeover/_utils/provenance-context.d.ts +7 -0
- package/dist/commands/takeover/_utils/provenance-context.js +12 -0
- package/dist/commands/takeover/_utils/provenance-context.js.map +1 -0
- package/dist/commands/takeover/_utils/staged-session.d.ts +64 -0
- package/dist/commands/takeover/_utils/staged-session.js +30 -0
- package/dist/commands/takeover/_utils/staged-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.d.ts +47 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.js +24 -0
- package/dist/commands/takeover/_utils/write-claude-desktop-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-claude-session.d.ts +53 -0
- package/dist/commands/takeover/_utils/write-claude-session.js +132 -0
- package/dist/commands/takeover/_utils/write-claude-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.d.ts +96 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js +272 -0
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-session.d.ts +52 -0
- package/dist/commands/takeover/_utils/write-codex-session.js +117 -0
- package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-cursor-session.d.ts +57 -0
- package/dist/commands/takeover/_utils/write-cursor-session.js +174 -0
- package/dist/commands/takeover/_utils/write-cursor-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-pi-session.d.ts +52 -0
- package/dist/commands/takeover/_utils/write-pi-session.js +173 -0
- package/dist/commands/takeover/_utils/write-pi-session.js.map +1 -0
- package/dist/commands/takeover/index.d.ts +21 -0
- package/dist/commands/takeover/index.js +201 -0
- package/dist/commands/takeover/index.js.map +1 -0
- package/dist/commands/takeover/takeover.schema.d.ts +24 -0
- package/dist/commands/takeover/takeover.schema.js +66 -0
- package/dist/commands/takeover/takeover.schema.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/org.js
CHANGED
|
@@ -7,6 +7,31 @@ import { httpJson, networkRemedy } from "../_utils/http.js";
|
|
|
7
7
|
import { err, ok } from "../_utils/result.js";
|
|
8
8
|
import { readState, statePath, writeState } from "../_utils/state.js";
|
|
9
9
|
import { cliVersion } from "../_utils/version.js";
|
|
10
|
+
const postSwitchAudit = async (url, key, state, body) => {
|
|
11
|
+
const response = await httpJson(url, {
|
|
12
|
+
method: "POST",
|
|
13
|
+
headers: {
|
|
14
|
+
"content-type": "application/json",
|
|
15
|
+
...buildGlenHeaders({ key, state, version: cliVersion }),
|
|
16
|
+
},
|
|
17
|
+
body: JSON.stringify(body),
|
|
18
|
+
timeoutMs: config.setRecordingTimeoutMs,
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok)
|
|
21
|
+
return err(cliErr({
|
|
22
|
+
what: "could not log the organization switch — organization unchanged",
|
|
23
|
+
why: response.error.detail,
|
|
24
|
+
remedy: networkRemedy(response.error),
|
|
25
|
+
}));
|
|
26
|
+
if (!response.value.isOk)
|
|
27
|
+
return err(cliErr({
|
|
28
|
+
what: "could not log the organization switch — organization unchanged",
|
|
29
|
+
why: response.value.rawText.slice(0, 200) ||
|
|
30
|
+
`HTTP ${response.value.status}`,
|
|
31
|
+
remedy: "try again in a minute",
|
|
32
|
+
}));
|
|
33
|
+
return ok(response.value.json);
|
|
34
|
+
};
|
|
10
35
|
const fetchOrgs = async () => {
|
|
11
36
|
const creds = await readCredentials();
|
|
12
37
|
if (!creds)
|
|
@@ -47,20 +72,42 @@ const fetchOrgs = async () => {
|
|
|
47
72
|
return ok(orgs);
|
|
48
73
|
};
|
|
49
74
|
const applySwitch = async (target) => {
|
|
75
|
+
const credentials = await readCredentials();
|
|
76
|
+
if (!credentials)
|
|
77
|
+
return err(cliErr({ what: "not connected", remedy: "run `glen login` first" }));
|
|
50
78
|
const current = await readState();
|
|
51
|
-
const
|
|
79
|
+
const next = {
|
|
52
80
|
activeOrgId: target.orgId,
|
|
53
81
|
activeOrgSlug: target.slug,
|
|
54
82
|
activeOrgName: target.name,
|
|
55
|
-
// Switching org preserves the current recording mode (on/off/incognito).
|
|
56
83
|
mode: current?.mode ?? "on",
|
|
57
|
-
|
|
58
|
-
|
|
84
|
+
...(current?.modeUpdatedAt ? { modeUpdatedAt: current.modeUpdatedAt } : {}),
|
|
85
|
+
};
|
|
86
|
+
const started = await postSwitchAudit(config.beginOrgSwitchUrl, credentials.key, next, { previousOrgId: current?.activeOrgId ?? null });
|
|
87
|
+
if (!started.ok)
|
|
88
|
+
return started;
|
|
89
|
+
const eventId = started.value?.id;
|
|
90
|
+
if (typeof eventId !== "string")
|
|
59
91
|
return err(cliErr({
|
|
92
|
+
what: "could not log the organization switch — organization unchanged",
|
|
93
|
+
remedy: "run `glen update` and retry",
|
|
94
|
+
}));
|
|
95
|
+
const w = await writeState(next);
|
|
96
|
+
if (!w.ok)
|
|
97
|
+
return postSwitchAudit(config.finishOrgSwitchUrl, credentials.key, next, {
|
|
98
|
+
eventId,
|
|
99
|
+
outcome: "failed",
|
|
100
|
+
}).then(() => err(cliErr({
|
|
60
101
|
what: "could not save org selection",
|
|
61
102
|
why: causeOf(w.error),
|
|
62
103
|
path: statePath(),
|
|
63
104
|
remedy: "check ownership of ~/.glen (e.g. `sudo chown -R $USER ~/.glen`) and retry",
|
|
105
|
+
})));
|
|
106
|
+
const finished = await postSwitchAudit(config.finishOrgSwitchUrl, credentials.key, next, { eventId, outcome: "applied" });
|
|
107
|
+
if (!finished.ok)
|
|
108
|
+
return err(cliErr({
|
|
109
|
+
what: "organization changed, but its audit log could not be completed",
|
|
110
|
+
remedy: "retry `glen org switch` to confirm the selection",
|
|
64
111
|
}));
|
|
65
112
|
process.stdout.write(`🏔️ Active organization is now ${target.name} (${target.slug}).\n`);
|
|
66
113
|
return ok(undefined);
|
package/dist/commands/org.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,SAAS,GAAG,KAAK,IAAsC,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK;QACR,OAAO,GAAG,CACR,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CACpE,CAAC;IACJ,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;QAC7C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACpE;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC,iBAAiB;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,sBAAsB;YAC5B,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;YACrB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;SACjC,CAAC,CACH,CAAC;IACJ,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG;QACtD,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,oCAAoC;YAC1C,MAAM,EAAE,+BAA+B;SACxC,CAAC,CACH,CAAC;IACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;QACjB,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,sBAAsB,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;YAC9C,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;YAClE,MAAM,EACJ,0EAA0E;SAC7E,CAAC,CACH,CAAC;IACJ,MAAM,IAAI,GAAI,GAAG,CAAC,KAAK,CAAC,IAAgC,EAAE,IAAI,CAAC;IAC/D,IAAI,CAAC,IAAI;QACP,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,0CAA0C;SACnD,CAAC,CACH,CAAC;IACJ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAW,EAAmC,EAAE;IACzE,MAAM,
|
|
1
|
+
{"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import { config } from "../_utils/config.js";
|
|
3
3
|
import { readCredentials } from "../_utils/credentials.js";
|
|
4
4
|
import { isEphemeralSession } from "../_utils/ephemeral-session.js";
|
|
5
|
+
import { refreshControlState } from "../_utils/refresh-control-state.js";
|
|
5
6
|
import { recordSession } from "../_utils/session-map.js";
|
|
6
7
|
import { rememberStateLine } from "../_utils/state-line-memo.js";
|
|
7
8
|
import { formatStateLine } from "../_utils/state-line.js";
|
|
@@ -86,10 +87,13 @@ const sessionStart = async (agent) => {
|
|
|
86
87
|
const cwd = typeof event?.cwd === "string" ? event.cwd : process.cwd();
|
|
87
88
|
await recordSession(cwd, sessionId);
|
|
88
89
|
}
|
|
89
|
-
const [credentials,
|
|
90
|
+
const [credentials, localState] = await Promise.all([
|
|
90
91
|
readCredentials(),
|
|
91
92
|
readState(),
|
|
92
93
|
]);
|
|
94
|
+
const state = credentials && localState
|
|
95
|
+
? await refreshControlState(credentials.key, localState)
|
|
96
|
+
: localState;
|
|
93
97
|
const noOrgHint = "[glen] no org selected — ask the user whether to set up glen, then use the setup skill.";
|
|
94
98
|
const reviewLinkInstruction = `When you share a GitHub pull request URL, also surface its Glen review link (${config.baseUrl}/review/<owner>/<repo>/<number>) so the team can open the PR in Glen's reviewer.`;
|
|
95
99
|
// Self-identifying provenance: if these lines ever surface somewhere
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,9 @@ import { type Result } from "../_utils/result.js";
|
|
|
3
3
|
import { type GlenMode } from "../_utils/state.js";
|
|
4
4
|
/**
|
|
5
5
|
* Set the recording/injection mode. Shared by `glen on|off|incognito|silent`.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* success
|
|
9
|
-
* injecting entirely) and never touches the server preference.
|
|
6
|
+
* Every mode sets the account-wide server preference FIRST (the source of
|
|
7
|
+
* truth, enforced server-side) and mirrors the accepted state locally only on
|
|
8
|
+
* success.
|
|
10
9
|
*/
|
|
11
10
|
declare const setMode: (mode: GlenMode) => Promise<Result<void, CliError>>;
|
|
12
11
|
export { setMode };
|
|
@@ -9,7 +9,7 @@ import { handle426AndReexec } from "../_utils/update.js";
|
|
|
9
9
|
import { cliVersion } from "../_utils/version.js";
|
|
10
10
|
const confirmation = {
|
|
11
11
|
on: "🏔️ glen is ON — injecting context and recording (account-wide).\n",
|
|
12
|
-
off: "🏔️ glen is OFF — nothing is injected or recorded on
|
|
12
|
+
off: "🏔️ glen is OFF — nothing is injected or recorded on any machine or agent until you run `glen on`.\n",
|
|
13
13
|
incognito: "🏔️ Incognito ON — glen keeps recalling but records nothing, on every machine and agent, until you run `glen on`.\n",
|
|
14
14
|
silent: "🏔️ Silent ON — glen keeps recording but surfaces nothing (no recall, no suggestions, no search results), on every machine and agent, until you run `glen on`.\n",
|
|
15
15
|
};
|
|
@@ -29,10 +29,7 @@ const pushServerPreference = async (state, mode) => {
|
|
|
29
29
|
"content-type": "application/json",
|
|
30
30
|
...buildGlenHeaders({ key: creds.key, state, version: cliVersion }),
|
|
31
31
|
},
|
|
32
|
-
body: JSON.stringify({
|
|
33
|
-
incognito: mode === "incognito",
|
|
34
|
-
silent: mode === "silent",
|
|
35
|
-
}),
|
|
32
|
+
body: JSON.stringify({ mode }),
|
|
36
33
|
timeoutMs: config.setRecordingTimeoutMs,
|
|
37
34
|
});
|
|
38
35
|
if (!res.ok)
|
|
@@ -61,14 +58,22 @@ const pushServerPreference = async (state, mode) => {
|
|
|
61
58
|
remedy: "try again in a minute — if it persists, check https://tryglen.com/status",
|
|
62
59
|
}));
|
|
63
60
|
const d = res.value.json;
|
|
64
|
-
|
|
61
|
+
const acceptedMode = d?.mode === "on" ||
|
|
62
|
+
d?.mode === "off" ||
|
|
63
|
+
d?.mode === "incognito" ||
|
|
64
|
+
d?.mode === "silent"
|
|
65
|
+
? d.mode
|
|
66
|
+
: mode;
|
|
67
|
+
return ok({
|
|
68
|
+
mode: acceptedMode,
|
|
69
|
+
updatedAt: typeof d?.updatedAt === "string" ? d.updatedAt : null,
|
|
70
|
+
});
|
|
65
71
|
};
|
|
66
72
|
/**
|
|
67
73
|
* Set the recording/injection mode. Shared by `glen on|off|incognito|silent`.
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* success
|
|
71
|
-
* injecting entirely) and never touches the server preference.
|
|
74
|
+
* Every mode sets the account-wide server preference FIRST (the source of
|
|
75
|
+
* truth, enforced server-side) and mirrors the accepted state locally only on
|
|
76
|
+
* success.
|
|
72
77
|
*/
|
|
73
78
|
const setMode = async (mode) => {
|
|
74
79
|
const current = await readState();
|
|
@@ -77,14 +82,14 @@ const setMode = async (mode) => {
|
|
|
77
82
|
what: "no active organization",
|
|
78
83
|
remedy: "run `glen org switch` (or `glen login`) first",
|
|
79
84
|
}));
|
|
80
|
-
const pushed =
|
|
81
|
-
if (
|
|
85
|
+
const pushed = await pushServerPreference(current, mode);
|
|
86
|
+
if (!pushed.ok)
|
|
82
87
|
return pushed;
|
|
83
88
|
const w = await writeState({
|
|
84
89
|
...current,
|
|
85
|
-
mode,
|
|
86
|
-
...(pushed
|
|
87
|
-
? { modeUpdatedAt: pushed.value }
|
|
90
|
+
mode: pushed.value.mode,
|
|
91
|
+
...(pushed.value.updatedAt !== null
|
|
92
|
+
? { modeUpdatedAt: pushed.value.updatedAt }
|
|
88
93
|
: {}),
|
|
89
94
|
});
|
|
90
95
|
if (!w.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-mode.js","sourceRoot":"","sources":["../../src/commands/set-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAGL,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,YAAY,GAA6B;IAC7C,EAAE,EAAE,oEAAoE;IACxE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"set-mode.js","sourceRoot":"","sources":["../../src/commands/set-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const projectKey = (workspace) => workspace.replaceAll("/", "-").replace(/[^A-Za-z0-9._-]/g, "-");
|
|
4
|
+
const agentPaths = {
|
|
5
|
+
claude(workspace, sessionId) {
|
|
6
|
+
const root = process.env.GLEN_CLAUDE_HOME ?? join(homedir(), ".claude");
|
|
7
|
+
return join(root, "projects", projectKey(workspace), `${sessionId}.jsonl`);
|
|
8
|
+
},
|
|
9
|
+
codex(sessionId, date = new Date()) {
|
|
10
|
+
const root = process.env.GLEN_CODEX_HOME ?? join(homedir(), ".codex");
|
|
11
|
+
const day = date.toISOString().slice(0, 10);
|
|
12
|
+
const timestamp = date.toISOString().replace(/[:.]/g, "-");
|
|
13
|
+
return join(root, "sessions", day.slice(0, 4), day.slice(5, 7), day.slice(8, 10), `rollout-${timestamp}-${sessionId}.jsonl`);
|
|
14
|
+
},
|
|
15
|
+
pi(workspace, sessionId, date = new Date()) {
|
|
16
|
+
const root = process.env.GLEN_PI_HOME ?? join(homedir(), ".pi", "agent");
|
|
17
|
+
const sessionRoot = process.env.PI_CODING_AGENT_SESSION_DIR;
|
|
18
|
+
const timestamp = date.toISOString().replace(/[:.]/g, "-");
|
|
19
|
+
return join(sessionRoot ?? join(root, "sessions"), projectKey(workspace), `${timestamp}_${sessionId}.jsonl`);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export { agentPaths };
|
|
23
|
+
//# sourceMappingURL=agent-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-paths.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/agent-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC/C,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAElE,MAAM,UAAU,GAAG;IACjB,MAAM,CAAC,SAAiB,EAAE,SAAiB;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,CAAC,SAAiB,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CACT,IAAI,EACJ,UAAU,EACV,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,WAAW,SAAS,IAAI,SAAS,QAAQ,CAC1C,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,SAAiB,EAAE,SAAiB,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CACT,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EACrC,UAAU,CAAC,SAAS,CAAC,EACrB,GAAG,SAAS,IAAI,SAAS,QAAQ,CAClC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { cliVersion } from "../../../_utils/version.js";
|
|
3
|
+
const CLEANUP_TIMEOUT_MS = 5_000;
|
|
4
|
+
const archiveCodexDesktopThread = (input) => new Promise((resolve) => {
|
|
5
|
+
const child = spawn(input.binary, ["app-server"], {
|
|
6
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
7
|
+
});
|
|
8
|
+
const state = { buffer: "", finished: false };
|
|
9
|
+
const finish = (archived = false) => {
|
|
10
|
+
if (state.finished)
|
|
11
|
+
return;
|
|
12
|
+
state.finished = true;
|
|
13
|
+
clearTimeout(timer);
|
|
14
|
+
child.kill();
|
|
15
|
+
resolve(archived);
|
|
16
|
+
};
|
|
17
|
+
const write = (message) => {
|
|
18
|
+
if (state.finished)
|
|
19
|
+
return;
|
|
20
|
+
child.stdin.write(`${JSON.stringify({ jsonrpc: "2.0", ...message })}\n`);
|
|
21
|
+
};
|
|
22
|
+
const timer = setTimeout(finish, CLEANUP_TIMEOUT_MS);
|
|
23
|
+
child.on("error", () => finish(false));
|
|
24
|
+
child.on("close", () => finish(false));
|
|
25
|
+
child.stdin.on("error", () => finish(false));
|
|
26
|
+
child.stdout.on("data", (chunk) => {
|
|
27
|
+
state.buffer += chunk.toString();
|
|
28
|
+
const lines = state.buffer.split("\n");
|
|
29
|
+
state.buffer = lines.pop() ?? "";
|
|
30
|
+
for (const line of lines) {
|
|
31
|
+
if (!line.trim())
|
|
32
|
+
continue;
|
|
33
|
+
const message = (() => {
|
|
34
|
+
try {
|
|
35
|
+
return JSON.parse(line);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
})();
|
|
41
|
+
if (message?.id === 1) {
|
|
42
|
+
write({ method: "initialized", params: {} });
|
|
43
|
+
write({
|
|
44
|
+
id: 2,
|
|
45
|
+
method: "thread/archive",
|
|
46
|
+
params: { threadId: input.threadId },
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
if (message?.id === 2)
|
|
50
|
+
finish(message.error === undefined);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
queueMicrotask(() => write({
|
|
54
|
+
id: 1,
|
|
55
|
+
method: "initialize",
|
|
56
|
+
params: {
|
|
57
|
+
clientInfo: { name: "glen", title: "Glen CLI", version: cliVersion },
|
|
58
|
+
capabilities: { experimentalApi: true },
|
|
59
|
+
},
|
|
60
|
+
}));
|
|
61
|
+
});
|
|
62
|
+
export { archiveCodexDesktopThread };
|
|
63
|
+
//# sourceMappingURL=archive-codex-desktop-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-codex-desktop-thread.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/archive-codex-desktop-thread.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-digest.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/canonical-digest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,eAAe,GAAG,CACtB,QAAsD,EAC9C,EAAE,CACV,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type CliError } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { type Result } from "../../../_utils/result.js";
|
|
3
|
+
declare const codexDesktopRecovery: {
|
|
4
|
+
load(takeoverId: string): Promise<Result<{
|
|
5
|
+
takeoverId: string;
|
|
6
|
+
canonicalDigest: string;
|
|
7
|
+
destinationSessionId: string;
|
|
8
|
+
} | null, CliError>>;
|
|
9
|
+
save(record: {
|
|
10
|
+
readonly takeoverId: string;
|
|
11
|
+
readonly canonicalDigest: string;
|
|
12
|
+
readonly destinationSessionId: string;
|
|
13
|
+
}): Promise<Result<typeof record, CliError>>;
|
|
14
|
+
clear(takeoverId: string, expectedDestinationSessionId: string): Promise<Result<void, CliError>>;
|
|
15
|
+
};
|
|
16
|
+
export { codexDesktopRecovery };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { link, mkdir, readFile, rm, unlink, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { causeOf, cliErr } from "../../../_utils/cli-error.js";
|
|
5
|
+
import { err, fromPromise, ok } from "../../../_utils/result.js";
|
|
6
|
+
import { statePath } from "../../../_utils/state.js";
|
|
7
|
+
const pathFor = (takeoverId) => join(dirname(statePath()), "takeover-recovery", `${encodeURIComponent(takeoverId)}.json`);
|
|
8
|
+
const codexDesktopRecovery = {
|
|
9
|
+
async load(takeoverId) {
|
|
10
|
+
const path = pathFor(takeoverId);
|
|
11
|
+
const raw = await fromPromise(readFile(path, "utf8"));
|
|
12
|
+
if (!raw.ok) {
|
|
13
|
+
if (raw.error.code === "ENOENT")
|
|
14
|
+
return ok(null);
|
|
15
|
+
return err(cliErr({
|
|
16
|
+
what: "could not read the saved Codex Desktop takeover",
|
|
17
|
+
why: causeOf(raw.error),
|
|
18
|
+
path,
|
|
19
|
+
remedy: "fix the reported file permissions, then retry",
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
const parsed = await fromPromise(new Promise((resolve) => resolve(JSON.parse(raw.value))));
|
|
23
|
+
if (!parsed.ok)
|
|
24
|
+
return err(cliErr({
|
|
25
|
+
what: "the saved Codex Desktop takeover is invalid",
|
|
26
|
+
why: causeOf(parsed.error),
|
|
27
|
+
path,
|
|
28
|
+
remedy: "remove the reported recovery file, then retry",
|
|
29
|
+
}));
|
|
30
|
+
const value = parsed.value;
|
|
31
|
+
if (!value ||
|
|
32
|
+
value.takeoverId !== takeoverId ||
|
|
33
|
+
typeof value.canonicalDigest !== "string" ||
|
|
34
|
+
typeof value.destinationSessionId !== "string")
|
|
35
|
+
return err(cliErr({
|
|
36
|
+
what: "the saved Codex Desktop takeover is invalid",
|
|
37
|
+
path,
|
|
38
|
+
remedy: "remove the reported recovery file, then retry",
|
|
39
|
+
}));
|
|
40
|
+
return ok({
|
|
41
|
+
takeoverId,
|
|
42
|
+
canonicalDigest: value.canonicalDigest,
|
|
43
|
+
destinationSessionId: value.destinationSessionId,
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
async save(record) {
|
|
47
|
+
const path = pathFor(record.takeoverId);
|
|
48
|
+
const made = await fromPromise(mkdir(dirname(path), { recursive: true, mode: 0o700 }));
|
|
49
|
+
if (!made.ok)
|
|
50
|
+
return err(cliErr({
|
|
51
|
+
what: "could not create Codex Desktop takeover recovery storage",
|
|
52
|
+
why: causeOf(made.error),
|
|
53
|
+
path: dirname(path),
|
|
54
|
+
remedy: "fix the reported directory permissions, then retry",
|
|
55
|
+
}));
|
|
56
|
+
const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
|
|
57
|
+
const written = await fromPromise(writeFile(temporary, JSON.stringify(record), { mode: 0o600 }));
|
|
58
|
+
if (!written.ok)
|
|
59
|
+
return err(cliErr({
|
|
60
|
+
what: "could not save Codex Desktop takeover recovery",
|
|
61
|
+
why: causeOf(written.error),
|
|
62
|
+
path: temporary,
|
|
63
|
+
remedy: "check disk space and permissions, then retry",
|
|
64
|
+
}));
|
|
65
|
+
const claimed = await fromPromise(link(temporary, path));
|
|
66
|
+
await rm(temporary, { force: true });
|
|
67
|
+
if (claimed.ok)
|
|
68
|
+
return ok(record);
|
|
69
|
+
const existing = await codexDesktopRecovery.load(record.takeoverId);
|
|
70
|
+
if (!existing.ok)
|
|
71
|
+
return existing;
|
|
72
|
+
if (existing.value)
|
|
73
|
+
return ok(existing.value);
|
|
74
|
+
return err(cliErr({
|
|
75
|
+
what: "could not claim Codex Desktop takeover recovery",
|
|
76
|
+
why: causeOf(claimed.error),
|
|
77
|
+
path,
|
|
78
|
+
remedy: "fix the reported directory permissions, then retry",
|
|
79
|
+
}));
|
|
80
|
+
},
|
|
81
|
+
async clear(takeoverId, expectedDestinationSessionId) {
|
|
82
|
+
const path = pathFor(takeoverId);
|
|
83
|
+
const existing = await codexDesktopRecovery.load(takeoverId);
|
|
84
|
+
if (!existing.ok)
|
|
85
|
+
return existing;
|
|
86
|
+
if (!existing.value ||
|
|
87
|
+
existing.value.destinationSessionId !== expectedDestinationSessionId)
|
|
88
|
+
return ok(undefined);
|
|
89
|
+
const removed = await fromPromise(unlink(path));
|
|
90
|
+
if (!removed.ok &&
|
|
91
|
+
removed.error.code !== "ENOENT")
|
|
92
|
+
return err(cliErr({
|
|
93
|
+
what: "could not clear Codex Desktop takeover recovery",
|
|
94
|
+
why: causeOf(removed.error),
|
|
95
|
+
path,
|
|
96
|
+
remedy: "remove the reported recovery file manually",
|
|
97
|
+
}));
|
|
98
|
+
return ok(undefined);
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
export { codexDesktopRecovery };
|
|
102
|
+
//# sourceMappingURL=codex-desktop-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-desktop-recovery.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/codex-desktop-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CliError } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { type Result } from "../../../_utils/result.js";
|
|
3
|
+
declare const contextFit: (input: {
|
|
4
|
+
readonly messages: readonly {
|
|
5
|
+
role: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}[];
|
|
8
|
+
readonly model: string;
|
|
9
|
+
readonly version: string;
|
|
10
|
+
readonly contextWindowTokens: number;
|
|
11
|
+
readonly startupReserveTokens: number;
|
|
12
|
+
readonly responseReserveTokens: number;
|
|
13
|
+
}) => Result<{
|
|
14
|
+
transcriptTokenUpperBound: number;
|
|
15
|
+
totalRequiredTokens: number;
|
|
16
|
+
availableTokens: number;
|
|
17
|
+
}, CliError>;
|
|
18
|
+
export { contextFit };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { cliErr } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { err, ok } from "../../../_utils/result.js";
|
|
3
|
+
const contextFit = (input) => {
|
|
4
|
+
if (input.model.trim() === "" ||
|
|
5
|
+
input.version.trim() === "" ||
|
|
6
|
+
!Number.isSafeInteger(input.contextWindowTokens) ||
|
|
7
|
+
input.contextWindowTokens <= 0)
|
|
8
|
+
return err(cliErr({
|
|
9
|
+
what: "cannot prove this transcript fits the target session",
|
|
10
|
+
why: "the target agent reported an unknown model, version, or context window",
|
|
11
|
+
remedy: "update the target agent and Glen, then retry; no session was created",
|
|
12
|
+
}));
|
|
13
|
+
const transcriptTokenUpperBound = Buffer.byteLength(JSON.stringify(input.messages), "utf8");
|
|
14
|
+
const totalRequiredTokens = transcriptTokenUpperBound +
|
|
15
|
+
input.startupReserveTokens +
|
|
16
|
+
input.responseReserveTokens;
|
|
17
|
+
if (totalRequiredTokens > input.contextWindowTokens)
|
|
18
|
+
return err(cliErr({
|
|
19
|
+
what: "the entire transcript does not fit in the target session",
|
|
20
|
+
why: `required ${totalRequiredTokens} tokens by the conservative UTF-8 bound; available ${input.contextWindowTokens}; startup reserve ${input.startupReserveTokens}; response reserve ${input.responseReserveTokens}`,
|
|
21
|
+
remedy: "use a target model with a larger context window; Glen did not truncate anything and did not create a session",
|
|
22
|
+
}));
|
|
23
|
+
return ok({
|
|
24
|
+
transcriptTokenUpperBound,
|
|
25
|
+
totalRequiredTokens,
|
|
26
|
+
availableTokens: input.contextWindowTokens,
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
export { contextFit };
|
|
30
|
+
//# sourceMappingURL=context-fit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-fit.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/context-fit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,UAAU,GAAG,CAAC,KAOnB,EAOC,EAAE;IACF,IACE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAC3B,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAChD,KAAK,CAAC,mBAAmB,IAAI,CAAC;QAE9B,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,sDAAsD;YAC5D,GAAG,EAAE,wEAAwE;YAC7E,MAAM,EACJ,sEAAsE;SACzE,CAAC,CACH,CAAC;IAEJ,MAAM,yBAAyB,GAAG,MAAM,CAAC,UAAU,CACjD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,MAAM,CACP,CAAC;IACF,MAAM,mBAAmB,GACvB,yBAAyB;QACzB,KAAK,CAAC,oBAAoB;QAC1B,KAAK,CAAC,qBAAqB,CAAC;IAC9B,IAAI,mBAAmB,GAAG,KAAK,CAAC,mBAAmB;QACjD,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,0DAA0D;YAChE,GAAG,EAAE,YAAY,mBAAmB,sDAAsD,KAAK,CAAC,mBAAmB,qBAAqB,KAAK,CAAC,oBAAoB,sBAAsB,KAAK,CAAC,qBAAqB,EAAE;YACrN,MAAM,EACJ,8GAA8G;SACjH,CAAC,CACH,CAAC;IAEJ,OAAO,EAAE,CAAC;QACR,yBAAyB;QACzB,mBAAmB;QACnB,eAAe,EAAE,KAAK,CAAC,mBAAmB;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type CliError } from "../../../_utils/cli-error.js";
|
|
2
|
+
import { type Result } from "../../../_utils/result.js";
|
|
3
|
+
type SqliteStatement = {
|
|
4
|
+
all: (...params: unknown[]) => Record<string, unknown>[];
|
|
5
|
+
get: (...params: unknown[]) => Record<string, unknown> | undefined;
|
|
6
|
+
run: (...params: unknown[]) => unknown;
|
|
7
|
+
};
|
|
8
|
+
type SqliteDb = {
|
|
9
|
+
exec: (sql: string) => void;
|
|
10
|
+
prepare: (sql: string) => SqliteStatement;
|
|
11
|
+
close: () => void;
|
|
12
|
+
};
|
|
13
|
+
declare const mutate: (db: SqliteDb, input: {
|
|
14
|
+
readonly sessionId: string;
|
|
15
|
+
readonly workspaceId: string;
|
|
16
|
+
readonly composer: string;
|
|
17
|
+
readonly header: string;
|
|
18
|
+
readonly bubbles: readonly {
|
|
19
|
+
key: string;
|
|
20
|
+
value: string;
|
|
21
|
+
}[];
|
|
22
|
+
readonly workspaceIndex: string;
|
|
23
|
+
readonly now: number;
|
|
24
|
+
}) => void;
|
|
25
|
+
declare const cursorStore: {
|
|
26
|
+
locate(workspace: string): Promise<Result<{
|
|
27
|
+
globalDb: string;
|
|
28
|
+
workspaceDb: string;
|
|
29
|
+
workspaceId: string;
|
|
30
|
+
}, CliError>>;
|
|
31
|
+
probe(paths: {
|
|
32
|
+
globalDb: string;
|
|
33
|
+
workspaceDb: string;
|
|
34
|
+
}): Promise<Result<void, CliError>>;
|
|
35
|
+
stage(paths: {
|
|
36
|
+
globalDb: string;
|
|
37
|
+
workspaceDb: string;
|
|
38
|
+
}, input: Parameters<typeof mutate>[1]): Promise<Result<{
|
|
39
|
+
path: string;
|
|
40
|
+
}, CliError>>;
|
|
41
|
+
install(paths: {
|
|
42
|
+
globalDb: string;
|
|
43
|
+
workspaceDb: string;
|
|
44
|
+
}, stagedDirectory: string, sessionId: string): Promise<Result<{
|
|
45
|
+
backups: readonly string[];
|
|
46
|
+
}, CliError>>;
|
|
47
|
+
cleanup(path: string): Promise<void>;
|
|
48
|
+
};
|
|
49
|
+
export { cursorStore };
|