abmind 0.2.5 → 0.2.6
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/src/fts-utils.d.ts +47 -0
- package/dist/src/fts-utils.d.ts.map +1 -0
- package/dist/src/fts-utils.js +65 -0
- package/dist/src/fts-utils.js.map +1 -0
- package/dist/src/memory-index.d.ts +0 -16
- package/dist/src/memory-index.d.ts.map +1 -1
- package/dist/src/memory-index.js +1 -60
- package/dist/src/memory-index.js.map +1 -1
- package/dist/src/recall-boosts.d.ts +15 -0
- package/dist/src/recall-boosts.d.ts.map +1 -0
- package/dist/src/recall-boosts.js +159 -0
- package/dist/src/recall-boosts.js.map +1 -0
- package/dist/src/recall-engine.d.ts +0 -2
- package/dist/src/recall-engine.d.ts.map +1 -1
- package/dist/src/recall-engine.js +1 -151
- package/dist/src/recall-engine.js.map +1 -1
- package/dist/src/sleep/audit.d.ts +6 -0
- package/dist/src/sleep/audit.d.ts.map +1 -1
- package/dist/src/sleep/audit.js +6 -8
- package/dist/src/sleep/audit.js.map +1 -1
- package/dist/src/sleep/catchup.d.ts +19 -0
- package/dist/src/sleep/catchup.d.ts.map +1 -0
- package/dist/src/sleep/catchup.js +159 -0
- package/dist/src/sleep/catchup.js.map +1 -0
- package/dist/src/sleep/llm-budget.d.ts +29 -0
- package/dist/src/sleep/llm-budget.d.ts.map +1 -0
- package/dist/src/sleep/llm-budget.js +92 -0
- package/dist/src/sleep/llm-budget.js.map +1 -0
- package/dist/src/sleep/locks.d.ts +9 -5
- package/dist/src/sleep/locks.d.ts.map +1 -1
- package/dist/src/sleep/locks.js +8 -11
- package/dist/src/sleep/locks.js.map +1 -1
- package/dist/src/sleep/orchestrator.d.ts +4 -20
- package/dist/src/sleep/orchestrator.d.ts.map +1 -1
- package/dist/src/sleep/orchestrator.js +12 -492
- package/dist/src/sleep/orchestrator.js.map +1 -1
- package/dist/src/sleep/state.d.ts +26 -17
- package/dist/src/sleep/state.d.ts.map +1 -1
- package/dist/src/sleep/state.js +58 -20
- package/dist/src/sleep/state.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sleep/llm-budget.ts — LLM call budget tracking and retry-with-transport-backoff.
|
|
3
|
+
* Extracted from orchestrator.ts (#1229). Carries the full transport-aware
|
|
4
|
+
* sendWithRetry from #1279.
|
|
5
|
+
*/
|
|
6
|
+
import { getAbmindEnv } from "../env-schema.js";
|
|
7
|
+
import { logWarn, logError, logInfo } from "../mem-logger.js";
|
|
8
|
+
import { LLMUnavailableError } from "../sleep-pipeline.js";
|
|
9
|
+
import { writeStateFile } from "./state.js";
|
|
10
|
+
const TAG = "abmind-sleep";
|
|
11
|
+
export const MAX_RETRIES = 3;
|
|
12
|
+
export const TRANSPORT_MAX_RETRIES = 6;
|
|
13
|
+
export const DEFAULT_TRANSPORT_RETRY_WINDOW_MS = 8 * 60_000; // 8 minutes
|
|
14
|
+
/** Thrown by sendWithRetry when runtime.complete() throws on every attempt within the retry window.
|
|
15
|
+
* Extends LLMUnavailableError so buildDailySummary and extractFromDaily rethrow it naturally
|
|
16
|
+
* (those functions check instanceof LLMUnavailableError to propagate errors up). */
|
|
17
|
+
export class ModelUnavailableError extends LLMUnavailableError {
|
|
18
|
+
constructor(stepName) {
|
|
19
|
+
super(`Model unavailable for step "${stepName}" after retry window`);
|
|
20
|
+
this.name = "ModelUnavailableError";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Budget tracker — shared across all sendWithRetry calls in a sleep cycle. */
|
|
24
|
+
export class LlmBudget {
|
|
25
|
+
state;
|
|
26
|
+
statePath;
|
|
27
|
+
exhausted = false;
|
|
28
|
+
constructor(state, statePath) {
|
|
29
|
+
this.state = state;
|
|
30
|
+
this.statePath = statePath;
|
|
31
|
+
}
|
|
32
|
+
/** Increment counter, return false if budget exhausted. */
|
|
33
|
+
consume() {
|
|
34
|
+
this.state.llmCalls = (this.state.llmCalls ?? 0) + 1;
|
|
35
|
+
writeStateFile(this.statePath, this.state);
|
|
36
|
+
if (this.state.llmCalls > getAbmindEnv().sleepMaxLlmCalls) {
|
|
37
|
+
this.exhausted = true;
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
get calls() { return this.state.llmCalls ?? 0; }
|
|
43
|
+
}
|
|
44
|
+
export async function sendWithRetry(runtime, prompt, stepName, _verbose, budget, delayMs = 6000, transportBackoffMs = (n) => Math.min(30_000 * Math.pow(2, n - 1), 120_000), transportRetryWindowMs = DEFAULT_TRANSPORT_RETRY_WINDOW_MS, nowFn = Date.now) {
|
|
45
|
+
const deadline = nowFn() + transportRetryWindowMs;
|
|
46
|
+
let emptyAttempts = 0;
|
|
47
|
+
let transportAttempts = 0;
|
|
48
|
+
// Budget-exhaustion pre-check: if we are already over the cap, bail immediately.
|
|
49
|
+
// This mirrors the old pre-loop consume() guard without burning a call.
|
|
50
|
+
if (budget?.exhausted) {
|
|
51
|
+
logWarn(TAG, `[BUDGET] LLM call limit (${getAbmindEnv().sleepMaxLlmCalls}) reached at step ${stepName} — suspending`);
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
while (true) {
|
|
55
|
+
try {
|
|
56
|
+
const result = await runtime.complete(prompt);
|
|
57
|
+
// Real call reached the model — count it now (success OR empty, never a throw).
|
|
58
|
+
if (budget && !budget.consume()) {
|
|
59
|
+
logWarn(TAG, `[BUDGET] LLM call limit (${getAbmindEnv().sleepMaxLlmCalls}) reached at step ${stepName} — suspending`);
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
if (!result || !result.trim()) {
|
|
63
|
+
emptyAttempts++;
|
|
64
|
+
logWarn(TAG, `Step ${stepName} attempt ${emptyAttempts}/${MAX_RETRIES} returned empty response`);
|
|
65
|
+
if (emptyAttempts >= MAX_RETRIES) {
|
|
66
|
+
logError(TAG, `Step ${stepName} failed after ${MAX_RETRIES} attempts (empty), skipping`);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
if (delayMs > 0)
|
|
70
|
+
await new Promise(r => setTimeout(r, delayMs));
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
// Transport failure — model unreachable. Do NOT consume budget (no tokens used).
|
|
77
|
+
transportAttempts++;
|
|
78
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
79
|
+
const backoff = transportBackoffMs(transportAttempts);
|
|
80
|
+
const timeRemaining = deadline - nowFn();
|
|
81
|
+
logWarn(TAG, `Step ${stepName} transport fail (${transportAttempts}/${TRANSPORT_MAX_RETRIES}): ${msg}`);
|
|
82
|
+
if (transportAttempts >= TRANSPORT_MAX_RETRIES || timeRemaining <= backoff) {
|
|
83
|
+
logError(TAG, `Step ${stepName} — model unavailable after ${transportAttempts} attempt(s), ${Math.round(transportRetryWindowMs / 60_000)}min window exhausted`);
|
|
84
|
+
throw new ModelUnavailableError(stepName);
|
|
85
|
+
}
|
|
86
|
+
logInfo(TAG, `[SLEEP] Model unreachable — waiting ${Math.round(backoff / 1000)}s before retry (step ${stepName})`);
|
|
87
|
+
if (backoff > 0)
|
|
88
|
+
await new Promise(r => setTimeout(r, backoff));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=llm-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-budget.js","sourceRoot":"","sources":["../../../src/sleep/llm-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sleep/locks.ts — Lock-file discovery and date-string helpers.
|
|
3
|
+
* Extracted from orchestrator.ts (#1229).
|
|
4
|
+
*/
|
|
1
5
|
import type { SleepState } from "./state.js";
|
|
2
|
-
/** Format a timestamp as YYYYMMDD (for lock file names). */
|
|
3
|
-
export declare function toDateStr(ts: number): string;
|
|
4
|
-
/** Format a timestamp as YYYY-MM-DD (for daily file paths). */
|
|
5
|
-
export declare function toIsoDate(ts: number): string;
|
|
6
6
|
export interface PreviousLock {
|
|
7
7
|
path: string;
|
|
8
8
|
dateStr: string;
|
|
9
9
|
state: SleepState;
|
|
10
10
|
ageDays: number;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
/** Format a timestamp as YYYYMMDD (for lock file names). */
|
|
13
|
+
export declare function toDateStr(ts: number): string;
|
|
14
|
+
/** Format a timestamp as YYYY-MM-DD (for daily file paths). */
|
|
15
|
+
export declare function toIsoDate(ts: number): string;
|
|
13
16
|
export declare function dateStrToMs(ds: string): number;
|
|
14
17
|
export declare function dateStrToFormatted(ds: string): string;
|
|
18
|
+
export declare function scanPreviousLocks(sleepDir: string, todayStr: string): PreviousLock[];
|
|
15
19
|
//# sourceMappingURL=locks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../../src/sleep/locks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../../src/sleep/locks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAapF"}
|
package/dist/src/sleep/locks.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* sleep/locks.ts —
|
|
3
|
-
*
|
|
4
|
-
* Extracted from orchestrator.ts (#1229 / #208 Stage 2). Pure data helpers
|
|
5
|
-
* (date formatting/parsing) plus scanPreviousLocks, which reads persisted sleep
|
|
6
|
-
* lock files via state.ts. Depends only on state.ts — no edge into orchestrator.
|
|
2
|
+
* sleep/locks.ts — Lock-file discovery and date-string helpers.
|
|
3
|
+
* Extracted from orchestrator.ts (#1229).
|
|
7
4
|
*/
|
|
8
5
|
import { existsSync, readdirSync } from "node:fs";
|
|
9
6
|
import { join } from "node:path";
|
|
@@ -18,6 +15,12 @@ export function toIsoDate(ts) {
|
|
|
18
15
|
const d = new Date(ts);
|
|
19
16
|
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
|
|
20
17
|
}
|
|
18
|
+
export function dateStrToMs(ds) {
|
|
19
|
+
return new Date(`${ds.slice(0, 4)}-${ds.slice(4, 6)}-${ds.slice(6, 8)}T00:00:00`).getTime();
|
|
20
|
+
}
|
|
21
|
+
export function dateStrToFormatted(ds) {
|
|
22
|
+
return `${ds.slice(0, 4)}-${ds.slice(4, 6)}-${ds.slice(6, 8)}`;
|
|
23
|
+
}
|
|
21
24
|
export function scanPreviousLocks(sleepDir, todayStr) {
|
|
22
25
|
if (!existsSync(sleepDir))
|
|
23
26
|
return [];
|
|
@@ -36,10 +39,4 @@ export function scanPreviousLocks(sleepDir, todayStr) {
|
|
|
36
39
|
}
|
|
37
40
|
return locks.sort((a, b) => b.dateStr.localeCompare(a.dateStr)); // newest first
|
|
38
41
|
}
|
|
39
|
-
export function dateStrToMs(ds) {
|
|
40
|
-
return new Date(`${ds.slice(0, 4)}-${ds.slice(4, 6)}-${ds.slice(6, 8)}T00:00:00`).getTime();
|
|
41
|
-
}
|
|
42
|
-
export function dateStrToFormatted(ds) {
|
|
43
|
-
return `${ds.slice(0, 4)}-${ds.slice(4, 6)}-${ds.slice(6, 8)}`;
|
|
44
|
-
}
|
|
45
42
|
//# sourceMappingURL=locks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/sleep/locks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/sleep/locks.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
* --verbose Detailed logging at each orchestration step
|
|
15
15
|
* --force Run housekeeping even if no messages since last sleep
|
|
16
16
|
*/
|
|
17
|
-
import { LLMUnavailableError } from "../sleep-pipeline.js";
|
|
18
17
|
import type { SleepRuntime } from "./runtime.js";
|
|
19
18
|
import { type Level } from "./levels.js";
|
|
19
|
+
import type { SleepStepEvent } from "./state.js";
|
|
20
20
|
/** Steps whose failure blocks watermark advance. Public so tests can derive reject targets. */
|
|
21
|
-
export
|
|
21
|
+
export { ESSENTIAL_STEPS } from "./catchup.js";
|
|
22
22
|
/** Thrown by runSleepCycle when memory layer fails to initialize. */
|
|
23
23
|
export declare class SleepInitError extends Error {
|
|
24
24
|
constructor(message: string);
|
|
@@ -29,18 +29,7 @@ export declare class SleepTimeoutError extends Error {
|
|
|
29
29
|
}
|
|
30
30
|
/** Step-lifecycle event fired by the orchestrator at each step boundary (#895).
|
|
31
31
|
* Best-effort — a throwing handler must never break memory consolidation. */
|
|
32
|
-
export
|
|
33
|
-
/** Step name, e.g. "extract-memories". */
|
|
34
|
-
name: string;
|
|
35
|
-
/** Source filename, e.g. "03-extract-memories.md". */
|
|
36
|
-
filename: string;
|
|
37
|
-
/** 1-based step index within the run. */
|
|
38
|
-
index: number;
|
|
39
|
-
/** Total steps in this run (loaded from loadSleepSteps() at cycle start). */
|
|
40
|
-
total: number;
|
|
41
|
-
/** "start" fired before the step runs, "done"/"skipped"/"failed" on resolution. */
|
|
42
|
-
phase: "start" | "done" | "skipped" | "failed";
|
|
43
|
-
}
|
|
32
|
+
export type { SleepStepEvent } from "./state.js";
|
|
44
33
|
/** Options for runSleepCycle. All optional — defaults preserve current main() behavior. */
|
|
45
34
|
export interface RunOpts {
|
|
46
35
|
flags?: RawArgs;
|
|
@@ -83,12 +72,7 @@ export type RawArgs = {
|
|
|
83
72
|
force: boolean;
|
|
84
73
|
};
|
|
85
74
|
export declare function parseArgs(argv: string[]): RawArgs;
|
|
86
|
-
/**
|
|
87
|
-
* Extends LLMUnavailableError so buildDailySummary and extractFromDaily rethrow it naturally
|
|
88
|
-
* (those functions check instanceof LLMUnavailableError to propagate errors up). */
|
|
89
|
-
export declare class ModelUnavailableError extends LLMUnavailableError {
|
|
90
|
-
constructor(stepName: string);
|
|
91
|
-
}
|
|
75
|
+
/** LLM call entry for sleep steps — caller provides the runtime via RunOpts. */
|
|
92
76
|
/**
|
|
93
77
|
* Run the full sleep cycle. Extracted from main() for testability (#175).
|
|
94
78
|
* - Deterministic time injection via opts.now for decision sites
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/sleep/orchestrator.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/sleep/orchestrator.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAiBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,KAAK,EAA6B,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAiE,cAAc,EAAE,MAAM,YAAY,CAAC;AAWhH,+FAA+F;AAE/F,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,qEAAqE;AACrE,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAC5B;AAED,qFAAqF;AACrF,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAC5B;AAED;8EAC8E;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,2FAA2F;AAC3F,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iHAAiH;IACjH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,SAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+GAA+G;IAC/G,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,4FAA4F;IAC5F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mDAAmD;IACnD,oBAAoB,CAAC,EAAE,OAAO,CAAC,OAAO,qBAAqB,EAAE,YAAY,CAAC,CAAC;IAC3E;mEAC+D;IAC/D,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACrC;8EAC0E;IAC1E,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACpD;AAED,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,MAAM,OAAO,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAmBjD;AAID,gFAAgF;AAMhF;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA2sBrE"}
|