@tryglen/cli 0.42.0 → 0.42.2
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/_generated/contract/zod.gen.js +16 -15
- package/dist/_generated/contract/zod.gen.js.map +1 -1
- package/dist/clients/glen-api/glen-api.js +24 -27
- package/dist/clients/glen-api/glen-api.js.map +1 -1
- package/dist/clients/npm/update.js +5 -10
- package/dist/clients/npm/update.js.map +1 -1
- package/dist/commands/_utils/fails-until-fixed.js +7 -0
- package/dist/commands/_utils/fails-until-fixed.js.map +1 -0
- package/dist/commands/doctor/index.js +2 -1
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/import/index.js +21 -20
- package/dist/commands/import/index.js.map +1 -1
- package/dist/commands/ingest/index.js +54 -42
- package/dist/commands/ingest/index.js.map +1 -1
- package/dist/commands/install/_utils/finish-install.js +3 -2
- package/dist/commands/install/_utils/finish-install.js.map +1 -1
- package/dist/commands/login/index.js +2 -1
- package/dist/commands/login/index.js.map +1 -1
- package/dist/commands/org/_utils/fetch-orgs.js +2 -1
- package/dist/commands/org/_utils/fetch-orgs.js.map +1 -1
- package/dist/commands/pr-link/index.js +2 -1
- package/dist/commands/pr-link/index.js.map +1 -1
- package/dist/commands/session-start/index.js +5 -5
- package/dist/commands/session-start/index.js.map +1 -1
- package/dist/commands/set-mode/index.js +2 -1
- package/dist/commands/set-mode/index.js.map +1 -1
- package/dist/commands/status/index.js +7 -4
- package/dist/commands/status/index.js.map +1 -1
- package/dist/commands/suggestions/index.js +2 -1
- package/dist/commands/suggestions/index.js.map +1 -1
- package/dist/core/errors/fixes.js +8 -0
- package/dist/core/errors/fixes.js.map +1 -0
- package/dist/core/state/import-job.js +4 -0
- package/dist/core/state/import-job.js.map +1 -1
- package/dist/core/state/session-memo.js +92 -0
- package/dist/core/state/session-memo.js.map +1 -0
- package/dist/core/state/state.js +5 -2
- package/dist/core/state/state.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/ingest/_utils/ingest-failure-memo.js +0 -57
- package/dist/commands/ingest/_utils/ingest-failure-memo.js.map +0 -1
- package/dist/core/state/paused-line.js +0 -3
- package/dist/core/state/paused-line.js.map +0 -1
- package/dist/core/state/state-line-memo.js +0 -52
- package/dist/core/state/state-line-memo.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cliErr } from "../../core/errors/cli-error.js";
|
|
2
|
+
import { fixes } from "../../core/errors/fixes.js";
|
|
2
3
|
import { config } from "../../clients/glen-api/config.js";
|
|
3
4
|
import { credentials } from "../../core/state/credentials.js";
|
|
4
5
|
import { isEphemeralSession } from "../../core/state/ephemeral-session.js";
|
|
@@ -12,9 +13,8 @@ import { hookProfile } from "../../core/run/hook-profile.js";
|
|
|
12
13
|
import { ok } from "../../core/errors/result.js";
|
|
13
14
|
import { sessionMap } from "../../core/state/session-map.js";
|
|
14
15
|
import { spawnSelfDetached } from "../../core/system/spawn-self.js";
|
|
15
|
-
import {
|
|
16
|
+
import { sessionMemo } from "../../core/state/session-memo.js";
|
|
16
17
|
import { formatStateLine } from "../../core/state/state-line.js";
|
|
17
|
-
import { pausedLine } from "../../core/state/paused-line.js";
|
|
18
18
|
import { glenState } from "../../core/state/state.js";
|
|
19
19
|
import { recordEvent } from "../../core/telemetry/record-event.js";
|
|
20
20
|
import { noteIfErr } from "../../core/telemetry/note-if-err.js";
|
|
@@ -26,7 +26,7 @@ const readEvent = async (agent) => {
|
|
|
26
26
|
code: "session_start.invalid_event",
|
|
27
27
|
what: "the SessionStart event on stdin is not a JSON object",
|
|
28
28
|
cause,
|
|
29
|
-
remedy:
|
|
29
|
+
remedy: fixes.updatePlugin,
|
|
30
30
|
}));
|
|
31
31
|
noteIfErr(read);
|
|
32
32
|
return read.ok ? read.value : null;
|
|
@@ -47,7 +47,7 @@ const systemMessageFor = (state) => state?.mode === "off"
|
|
|
47
47
|
: state?.mode === "incognito"
|
|
48
48
|
? "glen: incognito is ON. Nothing will be recorded. Run `glen on` to resume."
|
|
49
49
|
: state?.recordingPaused
|
|
50
|
-
?
|
|
50
|
+
? state.recordingPaused.message
|
|
51
51
|
: state?.mode === "silent"
|
|
52
52
|
? "glen: silent (recording to team memory, surfacing nothing). Run `glen on` to resume."
|
|
53
53
|
: undefined;
|
|
@@ -94,7 +94,7 @@ const sessionStart = sessionStartOptions.handle(async ({ agent }) => {
|
|
|
94
94
|
: `${formatStateLine(state) ?? NO_ORG_HINT}\n${PROVENANCE_NOTE}\n\n${REVIEW_LINK_INSTRUCTION}${teamMemoryBlock ? `\n\n${teamMemoryBlock}` : ""}`;
|
|
95
95
|
const seededLine = creds && state ? formatStateLine(state) : null;
|
|
96
96
|
if (sessionId && seededLine)
|
|
97
|
-
noteIfErr(await rememberStateLine(sessionId, seededLine));
|
|
97
|
+
noteIfErr(await sessionMemo.rememberStateLine(sessionId, seededLine));
|
|
98
98
|
const systemMessage = systemMessageFor(state);
|
|
99
99
|
if (sessionStartContext === "flat") {
|
|
100
100
|
const healthy = Boolean(creds && state && state.mode !== "off" && state.mode !== "silent");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/session-start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAe,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/session-start/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cliErr } from "../../core/errors/cli-error.js";
|
|
2
|
+
import { fixes } from "../../core/errors/fixes.js";
|
|
2
3
|
import { callGlen } from "../../clients/glen-api/glen-api.js";
|
|
3
4
|
import { out } from "../../core/terminal/out.js";
|
|
4
5
|
import { err, mapErr, ok } from "../../core/errors/result.js";
|
|
@@ -15,7 +16,7 @@ const setMode = async (mode) => {
|
|
|
15
16
|
return err(cliErr("Auth", {
|
|
16
17
|
code: "mode.no_active_org",
|
|
17
18
|
what: "no active organization",
|
|
18
|
-
remedy:
|
|
19
|
+
remedy: `${fixes.orgSwitch} (or ${fixes.login}) first`,
|
|
19
20
|
}));
|
|
20
21
|
const pushed = mapErr(await callGlen("setRecording", { mode }), (e) => ({ ...e, what: `${e.what} (mode unchanged)` }));
|
|
21
22
|
if (!pushed.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/set-mode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAe,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,YAAY,GAA6B;IAC7C,EAAE,EAAE,iEAAiE;IACrE,GAAG,EAAE,mGAAmG;IACxG,SAAS,EACP,wMAAwM;IAC1M,MAAM,EACJ,+JAA+J;CAClK,CAAC;AAGF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAc,EAAmC,EAAE;IACxE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO;QACV,OAAO,GAAG,CACR,MAAM,CAAC,MAAM,EAAE;YACb,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/set-mode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAe,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,YAAY,GAA6B;IAC7C,EAAE,EAAE,iEAAiE;IACrE,GAAG,EAAE,mGAAmG;IACxG,SAAS,EACP,wMAAwM;IAC1M,MAAM,EACJ,+JAA+J;CAClK,CAAC;AAGF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAc,EAAmC,EAAE;IACxE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO;QACV,OAAO,GAAG,CACR,MAAM,CAAC,MAAM,EAAE;YACb,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,QAAQ,KAAK,CAAC,KAAK,SAAS;SACvD,CAAC,CACH,CAAC;IACJ,MAAM,MAAM,GAAG,MAAM,CACnB,MAAM,QAAQ,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,EACxC,CAAC,CAAC,EAAY,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAChE,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;QACnB,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;QAClC,GAAG,OAAO;QACV,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;KACtC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { fixes } from "../../core/errors/fixes.js";
|
|
1
2
|
import { config } from "../../clients/glen-api/config.js";
|
|
2
3
|
import { credentials } from "../../core/state/credentials.js";
|
|
3
4
|
import { out } from "../../core/terminal/out.js";
|
|
@@ -9,8 +10,10 @@ const printPlan = async () => {
|
|
|
9
10
|
const { callGlen } = await import("../../clients/glen-api/glen-api.js");
|
|
10
11
|
const plan = await callGlen("planStatus", {}, { timeoutMs: STATUS_TIMEOUT_MS });
|
|
11
12
|
if (!plan.ok) {
|
|
12
|
-
if (plan.error.
|
|
13
|
-
out.info(`plan: none. ${plan.error.remedy}`, {
|
|
13
|
+
if (plan.error.httpStatus === 402)
|
|
14
|
+
out.info(`plan: none. ${plan.error.what} ${plan.error.remedy}`, {
|
|
15
|
+
indent: 1,
|
|
16
|
+
});
|
|
14
17
|
else
|
|
15
18
|
out.warn(plan.error);
|
|
16
19
|
return;
|
|
@@ -43,9 +46,9 @@ const status = async () => {
|
|
|
43
46
|
out.info("org: none", { indent: 1 });
|
|
44
47
|
}
|
|
45
48
|
if (!creds)
|
|
46
|
-
out.hint(
|
|
49
|
+
out.hint(`${fixes.login} to connect`);
|
|
47
50
|
else if (!state)
|
|
48
|
-
out.hint(
|
|
51
|
+
out.hint(`${fixes.orgSwitch} to pick an organization`);
|
|
49
52
|
return ok(undefined);
|
|
50
53
|
};
|
|
51
54
|
export { status };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAe,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,YAAY,EACZ,EAAE,EACF,EAAE,SAAS,EAAE,iBAAiB,EAAE,CACjC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cliErr } from "../../core/errors/cli-error.js";
|
|
2
|
+
import { fixes } from "../../core/errors/fixes.js";
|
|
2
3
|
import { callGlen } from "../../clients/glen-api/glen-api.js";
|
|
3
4
|
import { out } from "../../core/terminal/out.js";
|
|
4
5
|
import { err, mapErr, ok } from "../../core/errors/result.js";
|
|
@@ -24,7 +25,7 @@ const suggestions = suggestionsOptions.handle(async ({ kind, state: stateArg })
|
|
|
24
25
|
return err(cliErr("Auth", {
|
|
25
26
|
code: "suggestions.no_active_org",
|
|
26
27
|
what: "no active organization",
|
|
27
|
-
remedy:
|
|
28
|
+
remedy: `${fixes.orgSwitch} (or ${fixes.login}) first`,
|
|
28
29
|
}));
|
|
29
30
|
const res = mapErr(await callGlen("setSuggestions", { [KINDS[kind]]: stateArg === "on" }), (e) => ({ ...e, what: `${e.what} (nothing changed)` }));
|
|
30
31
|
if (!res.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/suggestions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAe,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,KAAK,GAAG;IACZ,cAAc,EAAE,eAAe;IAC/B,WAAW,EAAE,UAAU;CACf,CAAC;AAEX,MAAM,aAAa,GAGf;IACF,cAAc,EAAE;QACd,EAAE,EAAE,8EAA8E;QAClF,GAAG,EAAE,kIAAkI;KACxI;IACD,WAAW,EAAE;QACX,EAAE,EAAE,uFAAuF;QAC3F,GAAG,EAAE,kIAAkI;KACxI;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAmC,EAAE;IACnE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,KAAK;QACR,OAAO,GAAG,CACR,MAAM,CAAC,MAAM,EAAE;YACb,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/suggestions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAe,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,KAAK,GAAG;IACZ,cAAc,EAAE,eAAe;IAC/B,WAAW,EAAE,UAAU;CACf,CAAC;AAEX,MAAM,aAAa,GAGf;IACF,cAAc,EAAE;QACd,EAAE,EAAE,8EAA8E;QAClF,GAAG,EAAE,kIAAkI;KACxI;IACD,WAAW,EAAE;QACX,EAAE,EAAE,uFAAuF;QAC3F,GAAG,EAAE,kIAAkI;KACxI;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAmC,EAAE;IACnE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,KAAK;QACR,OAAO,GAAG,CACR,MAAM,CAAC,MAAM,EAAE;YACb,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,QAAQ,KAAK,CAAC,KAAK,SAAS;SACvD,CAAC,CACH,CAAC;IAEJ,MAAM,GAAG,GAAG,MAAM,CAChB,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC,EACtE,CAAC,CAAC,EAAY,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC,CACjE,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IACxB,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CACF,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const fixes = {
|
|
2
|
+
login: "run `glen login`",
|
|
3
|
+
orgSwitch: "run `glen org switch`",
|
|
4
|
+
update: "run `glen update` (or `npm i -g @tryglen/cli@latest`)",
|
|
5
|
+
updatePlugin: "update glen and the agent's glen plugin (`glen update`)",
|
|
6
|
+
};
|
|
7
|
+
export { fixes };
|
|
8
|
+
//# sourceMappingURL=fixes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixes.js","sourceRoot":"","sources":["../../../src/core/errors/fixes.ts"],"names":[],"mappings":"AACA,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,uBAAuB;IAClC,MAAM,EAAE,uDAAuD;IAC/D,YAAY,EAAE,yDAAyD;CAC/D,CAAC;AAEX,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -14,6 +14,8 @@ const jobOf = (value) => {
|
|
|
14
14
|
const id = field(value, "id");
|
|
15
15
|
const status = field(value, "status");
|
|
16
16
|
const stoppedBy = field(value, "stoppedBy");
|
|
17
|
+
const stoppedWhat = field(value, "stoppedWhat");
|
|
18
|
+
const stoppedRemedy = field(value, "stoppedRemedy");
|
|
17
19
|
const startedAt = numberAt(value, "startedAt");
|
|
18
20
|
const updatedAt = numberAt(value, "updatedAt");
|
|
19
21
|
const conversations = numberAt(value, "conversations");
|
|
@@ -44,6 +46,8 @@ const jobOf = (value) => {
|
|
|
44
46
|
existing,
|
|
45
47
|
failedConversations,
|
|
46
48
|
...(typeof stoppedBy === "string" ? { stoppedBy } : {}),
|
|
49
|
+
...(typeof stoppedWhat === "string" ? { stoppedWhat } : {}),
|
|
50
|
+
...(typeof stoppedRemedy === "string" ? { stoppedRemedy } : {}),
|
|
47
51
|
};
|
|
48
52
|
};
|
|
49
53
|
const read = async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-job.js","sourceRoot":"","sources":["../../../src/core/state/import-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAe,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"import-job.js","sourceRoot":"","sources":["../../../src/core/state/import-job.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { files } from "../system/files.js";
|
|
3
|
+
import { field } from "../json/json-field.js";
|
|
4
|
+
import { parseJson } from "../json/parse-json.js";
|
|
5
|
+
import { mapErr, ok } from "../errors/result.js";
|
|
6
|
+
import { glenState } from "./state.js";
|
|
7
|
+
const MAX_SESSIONS = 200;
|
|
8
|
+
const MAX_AGE_MS = 48 * 60 * 60 * 1000;
|
|
9
|
+
const memoPath = () => join(dirname(glenState.path()), "state-line-memo.json");
|
|
10
|
+
const entryOf = (value) => {
|
|
11
|
+
const updatedAt = field(value, "updatedAt");
|
|
12
|
+
if (typeof updatedAt !== "number")
|
|
13
|
+
return null;
|
|
14
|
+
const line = field(value, "line");
|
|
15
|
+
const notices = field(value, "notices");
|
|
16
|
+
const failures = field(value, "failures");
|
|
17
|
+
return {
|
|
18
|
+
updatedAt,
|
|
19
|
+
...(typeof line === "string" ? { line } : {}),
|
|
20
|
+
...(Array.isArray(notices)
|
|
21
|
+
? {
|
|
22
|
+
notices: notices.filter((n) => typeof n === "string"),
|
|
23
|
+
}
|
|
24
|
+
: {}),
|
|
25
|
+
...(typeof failures === "number" ? { failures } : {}),
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const readMemo = async () => {
|
|
29
|
+
const raw = await files.readTextIfExists(memoPath());
|
|
30
|
+
if (!raw.ok || raw.value === null)
|
|
31
|
+
return {};
|
|
32
|
+
const parsed = parseJson(raw.value);
|
|
33
|
+
if (!parsed.ok || typeof parsed.value !== "object" || parsed.value === null)
|
|
34
|
+
return {};
|
|
35
|
+
return Object.fromEntries(Object.entries(parsed.value).flatMap(([id, v]) => {
|
|
36
|
+
const entry = entryOf(v);
|
|
37
|
+
return entry ? [[id, entry]] : [];
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
const saveEntry = async (memo, sessionId, entry) => {
|
|
41
|
+
const now = Date.now();
|
|
42
|
+
const entries = Object.entries({
|
|
43
|
+
...memo,
|
|
44
|
+
[sessionId]: { ...entry, updatedAt: now },
|
|
45
|
+
})
|
|
46
|
+
.filter(([, e]) => now - e.updatedAt < MAX_AGE_MS)
|
|
47
|
+
.sort(([idA, a], [idB, b]) => b.updatedAt - a.updatedAt || (idA > idB ? -1 : idA < idB ? 1 : 0))
|
|
48
|
+
.slice(0, MAX_SESSIONS);
|
|
49
|
+
return mapErr(await files.writeAtomic(memoPath(), JSON.stringify(Object.fromEntries(entries))), (f) => files.toError(f, {
|
|
50
|
+
code: "session_memo.write_failed",
|
|
51
|
+
what: "could not save what glen already showed this session",
|
|
52
|
+
remedy: "check ownership of ~/.glen (e.g. `sudo chown -R $USER ~/.glen`)",
|
|
53
|
+
}));
|
|
54
|
+
};
|
|
55
|
+
const rememberStateLine = async (sessionId, line) => {
|
|
56
|
+
const memo = await readMemo();
|
|
57
|
+
const entry = memo[sessionId];
|
|
58
|
+
if (entry?.line === line)
|
|
59
|
+
return ok(false);
|
|
60
|
+
const saved = await saveEntry(memo, sessionId, { ...entry, line });
|
|
61
|
+
return saved.ok ? ok(true) : saved;
|
|
62
|
+
};
|
|
63
|
+
const rememberNotice = async (sessionId, notice) => {
|
|
64
|
+
const memo = await readMemo();
|
|
65
|
+
const entry = memo[sessionId];
|
|
66
|
+
const notices = entry?.notices ?? [];
|
|
67
|
+
if (notices.includes(notice))
|
|
68
|
+
return ok(false);
|
|
69
|
+
const saved = await saveEntry(memo, sessionId, {
|
|
70
|
+
...entry,
|
|
71
|
+
notices: [...notices, notice],
|
|
72
|
+
});
|
|
73
|
+
return saved.ok ? ok(true) : saved;
|
|
74
|
+
};
|
|
75
|
+
const recordCaptureOutcome = async (sessionId, outcome) => {
|
|
76
|
+
const memo = await readMemo();
|
|
77
|
+
const { failures = 0, ...rest } = memo[sessionId] ?? {};
|
|
78
|
+
if (outcome === "success") {
|
|
79
|
+
if (failures === 0)
|
|
80
|
+
return ok(false);
|
|
81
|
+
const cleared = await saveEntry(memo, sessionId, rest);
|
|
82
|
+
return cleared.ok ? ok(false) : cleared;
|
|
83
|
+
}
|
|
84
|
+
const saved = await saveEntry(memo, sessionId, {
|
|
85
|
+
...rest,
|
|
86
|
+
failures: failures + 1,
|
|
87
|
+
});
|
|
88
|
+
return saved.ok ? ok(failures + 1 === 2) : saved;
|
|
89
|
+
};
|
|
90
|
+
const sessionMemo = { rememberStateLine, rememberNotice, recordCaptureOutcome };
|
|
91
|
+
export { sessionMemo };
|
|
92
|
+
//# sourceMappingURL=session-memo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-memo.js","sourceRoot":"","sources":["../../../src/core/state/session-memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAe,MAAM,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAGvC,MAAM,QAAQ,GAAG,GAAW,EAAE,CAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAE1D,MAAM,OAAO,GAAG,CAAC,KAAc,EAAgB,EAAE;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC1C,OAAO;QACL,SAAS;QACT,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACxB,CAAC,CAAC;gBACE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;aACnE;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;IACzC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;QACzE,OAAO,EAAE,CAAC;IACZ,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAoB,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,KAAK,EACrB,IAAU,EACV,SAAiB,EACjB,KAA+B,EACE,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,GAAG,IAAI;QACP,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE;KAC1C,CAAC;SACC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC;SACjD,IAAI,CACH,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE;SACA,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1B,OAAO,MAAM,CACX,MAAM,KAAK,CAAC,WAAW,CACrB,QAAQ,EAAE,EACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAC5C,EACD,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE;QACf,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE,sDAAsD;QAC5D,MAAM,EACJ,iEAAiE;KACpE,CAAC,CACL,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,iBAAiB,GAAG,KAAK,EAC7B,SAAiB,EACjB,IAAY,EACwB,EAAE;IACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AAGF,MAAM,cAAc,GAAG,KAAK,EAC1B,SAAiB,EACjB,MAAc,EACsB,EAAE;IACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE;QAC7C,GAAG,KAAK;QACR,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AAGF,MAAM,oBAAoB,GAAG,KAAK,EAChC,SAAiB,EACjB,OAA8B,EACM,EAAE;IACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE;QAC7C,GAAG,IAAI;QACP,QAAQ,EAAE,QAAQ,GAAG,CAAC;KACvB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/core/state/state.js
CHANGED
|
@@ -15,8 +15,11 @@ const parseRecordingPaused = (value) => {
|
|
|
15
15
|
return null;
|
|
16
16
|
const limit = field(value, "limit");
|
|
17
17
|
const upgradeUrl = field(value, "upgradeUrl");
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const message = field(value, "message");
|
|
19
|
+
return typeof limit === "number" &&
|
|
20
|
+
typeof upgradeUrl === "string" &&
|
|
21
|
+
typeof message === "string"
|
|
22
|
+
? { limit, upgradeUrl, message }
|
|
20
23
|
: undefined;
|
|
21
24
|
};
|
|
22
25
|
const parseState = (value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAe,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAG5D,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,GAAG,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;AAE1D,MAAM,MAAM,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzE,MAAM,GAAG,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9E,MAAM,2BAA2B,GAAG,CAAC,KAAc,EAAE,EAAE,CACrD,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAE,IAAc,CAAC;AAGhF,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAE,EAAE;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryglen/cli",
|
|
3
|
-
"version": "0.42.
|
|
3
|
+
"version": "0.42.2",
|
|
4
4
|
"description": "Glen CLI — memory for coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"node": ">=20"
|
|
41
41
|
},
|
|
42
42
|
"license": "MIT",
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "068951b080910f0f8818d01d521a62aac8bd396c"
|
|
44
44
|
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { dirname, join } from "node:path";
|
|
2
|
-
import { files } from "../../../core/system/files.js";
|
|
3
|
-
import { field } from "../../../core/json/json-field.js";
|
|
4
|
-
import { parseJson } from "../../../core/json/parse-json.js";
|
|
5
|
-
import { mapErr, ok } from "../../../core/errors/result.js";
|
|
6
|
-
import { glenState } from "../../../core/state/state.js";
|
|
7
|
-
const MAX_SESSIONS = 200;
|
|
8
|
-
const MAX_AGE_MS = 48 * 60 * 60 * 1000;
|
|
9
|
-
const memoPath = () => join(dirname(glenState.path()), "ingest-failure-memo.json");
|
|
10
|
-
const entryOf = (value) => {
|
|
11
|
-
const count = field(value, "count");
|
|
12
|
-
const updatedAt = field(value, "updatedAt");
|
|
13
|
-
return typeof count === "number" && typeof updatedAt === "number"
|
|
14
|
-
? { count, updatedAt }
|
|
15
|
-
: null;
|
|
16
|
-
};
|
|
17
|
-
const readMemo = async () => {
|
|
18
|
-
const raw = await files.readTextIfExists(memoPath());
|
|
19
|
-
if (!raw.ok || raw.value === null)
|
|
20
|
-
return {};
|
|
21
|
-
const parsed = parseJson(raw.value);
|
|
22
|
-
if (!parsed.ok || typeof parsed.value !== "object" || parsed.value === null)
|
|
23
|
-
return {};
|
|
24
|
-
return Object.fromEntries(Object.entries(parsed.value).flatMap(([id, v]) => {
|
|
25
|
-
const entry = entryOf(v);
|
|
26
|
-
return entry ? [[id, entry]] : [];
|
|
27
|
-
}));
|
|
28
|
-
};
|
|
29
|
-
const writeMemo = async (memo) => {
|
|
30
|
-
const now = Date.now();
|
|
31
|
-
const entries = Object.entries(memo)
|
|
32
|
-
.filter(([, entry]) => now - entry.updatedAt < MAX_AGE_MS)
|
|
33
|
-
.sort(([idA, a], [idB, b]) => b.updatedAt - a.updatedAt || (idA > idB ? -1 : idA < idB ? 1 : 0))
|
|
34
|
-
.slice(0, MAX_SESSIONS);
|
|
35
|
-
return mapErr(await files.writeAtomic(memoPath(), JSON.stringify(Object.fromEntries(entries))), (f) => files.toError(f, {
|
|
36
|
-
code: "ingest.failure_memo_write_failed",
|
|
37
|
-
what: "could not save glen's capture-failure count",
|
|
38
|
-
remedy: "check ownership of ~/.glen (e.g. `sudo chown -R $USER ~/.glen`)",
|
|
39
|
-
}));
|
|
40
|
-
};
|
|
41
|
-
const recordIngestCaptureOutcome = async (sessionId, outcome) => {
|
|
42
|
-
const memo = await readMemo();
|
|
43
|
-
if (outcome === "success") {
|
|
44
|
-
if (!(sessionId in memo))
|
|
45
|
-
return ok(false);
|
|
46
|
-
const cleared = await writeMemo(Object.fromEntries(Object.entries(memo).filter(([id]) => id !== sessionId)));
|
|
47
|
-
return cleared.ok ? ok(false) : cleared;
|
|
48
|
-
}
|
|
49
|
-
const count = (memo[sessionId]?.count ?? 0) + 1;
|
|
50
|
-
const saved = await writeMemo({
|
|
51
|
-
...memo,
|
|
52
|
-
[sessionId]: { count, updatedAt: Date.now() },
|
|
53
|
-
});
|
|
54
|
-
return saved.ok ? ok(count === 2) : saved;
|
|
55
|
-
};
|
|
56
|
-
export { recordIngestCaptureOutcome };
|
|
57
|
-
//# sourceMappingURL=ingest-failure-memo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-failure-memo.js","sourceRoot":"","sources":["../../../../src/commands/ingest/_utils/ingest-failure-memo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paused-line.js","sourceRoot":"","sources":["../../../src/core/state/paused-line.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,MAA6C,EAAU,EAAE,CAC3E,4DAA4D,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2BAA2B,MAAM,CAAC,UAAU,EAAE,CAAC;AAEjJ,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { dirname, join } from "node:path";
|
|
2
|
-
import { files } from "../system/files.js";
|
|
3
|
-
import { field } from "../json/json-field.js";
|
|
4
|
-
import { parseJson } from "../json/parse-json.js";
|
|
5
|
-
import { mapErr, ok } from "../errors/result.js";
|
|
6
|
-
import { glenState } from "./state.js";
|
|
7
|
-
const MAX_SESSIONS = 200;
|
|
8
|
-
const MAX_AGE_MS = 48 * 60 * 60 * 1000;
|
|
9
|
-
const memoPath = () => join(dirname(glenState.path()), "state-line-memo.json");
|
|
10
|
-
const entryOf = (value) => {
|
|
11
|
-
const line = field(value, "line");
|
|
12
|
-
const updatedAt = field(value, "updatedAt");
|
|
13
|
-
return typeof line === "string" && typeof updatedAt === "number"
|
|
14
|
-
? { line, updatedAt }
|
|
15
|
-
: null;
|
|
16
|
-
};
|
|
17
|
-
const readMemo = async () => {
|
|
18
|
-
const raw = await files.readTextIfExists(memoPath());
|
|
19
|
-
if (!raw.ok || raw.value === null)
|
|
20
|
-
return {};
|
|
21
|
-
const parsed = parseJson(raw.value);
|
|
22
|
-
if (!parsed.ok || typeof parsed.value !== "object" || parsed.value === null)
|
|
23
|
-
return {};
|
|
24
|
-
return Object.fromEntries(Object.entries(parsed.value).flatMap(([id, v]) => {
|
|
25
|
-
const entry = entryOf(v);
|
|
26
|
-
return entry ? [[id, entry]] : [];
|
|
27
|
-
}));
|
|
28
|
-
};
|
|
29
|
-
const writeMemo = async (memo) => {
|
|
30
|
-
const now = Date.now();
|
|
31
|
-
const entries = Object.entries(memo)
|
|
32
|
-
.filter(([, e]) => now - e.updatedAt < MAX_AGE_MS)
|
|
33
|
-
.sort(([idA, a], [idB, b]) => b.updatedAt - a.updatedAt || (idA > idB ? -1 : idA < idB ? 1 : 0))
|
|
34
|
-
.slice(0, MAX_SESSIONS);
|
|
35
|
-
return mapErr(await files.writeAtomic(memoPath(), JSON.stringify(Object.fromEntries(entries))), (f) => files.toError(f, {
|
|
36
|
-
code: "state_line_memo.write_failed",
|
|
37
|
-
what: "could not save which glen status line this session last showed",
|
|
38
|
-
remedy: "check ownership of ~/.glen (e.g. `sudo chown -R $USER ~/.glen`)",
|
|
39
|
-
}));
|
|
40
|
-
};
|
|
41
|
-
const rememberStateLine = async (sessionId, line) => {
|
|
42
|
-
const memo = await readMemo();
|
|
43
|
-
if (memo[sessionId]?.line === line)
|
|
44
|
-
return ok(false);
|
|
45
|
-
const saved = await writeMemo({
|
|
46
|
-
...memo,
|
|
47
|
-
[sessionId]: { line, updatedAt: Date.now() },
|
|
48
|
-
});
|
|
49
|
-
return saved.ok ? ok(true) : saved;
|
|
50
|
-
};
|
|
51
|
-
export { rememberStateLine };
|
|
52
|
-
//# sourceMappingURL=state-line-memo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-line-memo.js","sourceRoot":"","sources":["../../../src/core/state/state-line-memo.ts"],"names":[],"mappings":"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"}
|