abmind 0.2.5 → 0.2.7-alpha.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.
Files changed (177) hide show
  1. package/SUPPORTED-SURFACE.md +20 -2
  2. package/dist/cli/abmind-hook-recall.js +17 -40
  3. package/dist/cli/abmind-hook-recall.js.map +1 -1
  4. package/dist/cli/abmind-hook-store.js +10 -31
  5. package/dist/cli/abmind-hook-store.js.map +1 -1
  6. package/dist/cli/abmind-hook-wakeup.js +17 -3
  7. package/dist/cli/abmind-hook-wakeup.js.map +1 -1
  8. package/dist/cli/abmind-install.js +19 -19
  9. package/dist/cli/abmind-install.js.map +1 -1
  10. package/dist/cli/abmind-restore.js +10 -0
  11. package/dist/cli/abmind-restore.js.map +1 -1
  12. package/dist/cli/abmind-sleep.d.ts +9 -5
  13. package/dist/cli/abmind-sleep.d.ts.map +1 -1
  14. package/dist/cli/abmind-sleep.js +61 -14
  15. package/dist/cli/abmind-sleep.js.map +1 -1
  16. package/dist/cli/hook-lifecycle-adapter.d.ts +11 -0
  17. package/dist/cli/hook-lifecycle-adapter.d.ts.map +1 -0
  18. package/dist/cli/hook-lifecycle-adapter.js +33 -0
  19. package/dist/cli/hook-lifecycle-adapter.js.map +1 -0
  20. package/dist/src/context-engine.d.ts +13 -3
  21. package/dist/src/context-engine.d.ts.map +1 -1
  22. package/dist/src/context-engine.js +22 -5
  23. package/dist/src/context-engine.js.map +1 -1
  24. package/dist/src/context-orchestrator.d.ts +20 -2
  25. package/dist/src/context-orchestrator.d.ts.map +1 -1
  26. package/dist/src/context-orchestrator.js +11 -3
  27. package/dist/src/context-orchestrator.js.map +1 -1
  28. package/dist/src/context-tier-renderer.d.ts +8 -1
  29. package/dist/src/context-tier-renderer.d.ts.map +1 -1
  30. package/dist/src/context-tier-renderer.js +7 -2
  31. package/dist/src/context-tier-renderer.js.map +1 -1
  32. package/dist/src/ensure-initialized.d.ts +5 -0
  33. package/dist/src/ensure-initialized.d.ts.map +1 -1
  34. package/dist/src/ensure-initialized.js +19 -28
  35. package/dist/src/ensure-initialized.js.map +1 -1
  36. package/dist/src/fts-utils.d.ts +47 -0
  37. package/dist/src/fts-utils.d.ts.map +1 -0
  38. package/dist/src/fts-utils.js +65 -0
  39. package/dist/src/fts-utils.js.map +1 -0
  40. package/dist/src/host-integration/identity.d.ts +10 -0
  41. package/dist/src/host-integration/identity.d.ts.map +1 -0
  42. package/dist/src/host-integration/identity.js +66 -0
  43. package/dist/src/host-integration/identity.js.map +1 -0
  44. package/dist/src/host-integration/index.d.ts +5 -0
  45. package/dist/src/host-integration/index.d.ts.map +1 -0
  46. package/dist/src/host-integration/index.js +4 -0
  47. package/dist/src/host-integration/index.js.map +1 -0
  48. package/dist/src/host-integration/lifecycle.d.ts +14 -0
  49. package/dist/src/host-integration/lifecycle.d.ts.map +1 -0
  50. package/dist/src/host-integration/lifecycle.js +192 -0
  51. package/dist/src/host-integration/lifecycle.js.map +1 -0
  52. package/dist/src/host-integration/render.d.ts +5 -0
  53. package/dist/src/host-integration/render.d.ts.map +1 -0
  54. package/dist/src/host-integration/render.js +20 -0
  55. package/dist/src/host-integration/render.js.map +1 -0
  56. package/dist/src/host-integration/types.d.ts +107 -0
  57. package/dist/src/host-integration/types.d.ts.map +1 -0
  58. package/dist/src/host-integration/types.js +2 -0
  59. package/dist/src/host-integration/types.js.map +1 -0
  60. package/dist/src/imemory-system.d.ts +1 -1
  61. package/dist/src/imemory-system.d.ts.map +1 -1
  62. package/dist/src/index.d.ts +6 -4
  63. package/dist/src/index.d.ts.map +1 -1
  64. package/dist/src/index.js +3 -1
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/maintenance-service.d.ts +11 -0
  67. package/dist/src/maintenance-service.d.ts.map +1 -1
  68. package/dist/src/maintenance-service.js +43 -0
  69. package/dist/src/maintenance-service.js.map +1 -1
  70. package/dist/src/memory-index.d.ts +0 -16
  71. package/dist/src/memory-index.d.ts.map +1 -1
  72. package/dist/src/memory-index.js +1 -60
  73. package/dist/src/memory-index.js.map +1 -1
  74. package/dist/src/memory-manager.d.ts +6 -2
  75. package/dist/src/memory-manager.d.ts.map +1 -1
  76. package/dist/src/memory-manager.js +9 -5
  77. package/dist/src/memory-manager.js.map +1 -1
  78. package/dist/src/message-store.d.ts +15 -3
  79. package/dist/src/message-store.d.ts.map +1 -1
  80. package/dist/src/message-store.js +28 -9
  81. package/dist/src/message-store.js.map +1 -1
  82. package/dist/src/openclaw-plugin/index.d.ts.map +1 -1
  83. package/dist/src/openclaw-plugin/index.js +3 -2
  84. package/dist/src/openclaw-plugin/index.js.map +1 -1
  85. package/dist/src/pi-plugin/abtars-client.d.ts +22 -0
  86. package/dist/src/pi-plugin/abtars-client.d.ts.map +1 -0
  87. package/dist/src/pi-plugin/abtars-client.js +153 -0
  88. package/dist/src/pi-plugin/abtars-client.js.map +1 -0
  89. package/dist/src/pi-plugin/abtars-tools.d.ts +8 -0
  90. package/dist/src/pi-plugin/abtars-tools.d.ts.map +1 -0
  91. package/dist/src/pi-plugin/abtars-tools.js +317 -0
  92. package/dist/src/pi-plugin/abtars-tools.js.map +1 -0
  93. package/dist/src/pi-plugin/identity.d.ts +8 -0
  94. package/dist/src/pi-plugin/identity.d.ts.map +1 -0
  95. package/dist/src/pi-plugin/identity.js +37 -0
  96. package/dist/src/pi-plugin/identity.js.map +1 -0
  97. package/dist/src/pi-plugin/index.d.ts +3 -0
  98. package/dist/src/pi-plugin/index.d.ts.map +1 -0
  99. package/dist/src/pi-plugin/index.js +139 -0
  100. package/dist/src/pi-plugin/index.js.map +1 -0
  101. package/dist/src/pi-plugin/messages.d.ts +4 -0
  102. package/dist/src/pi-plugin/messages.d.ts.map +1 -0
  103. package/dist/src/pi-plugin/messages.js +36 -0
  104. package/dist/src/pi-plugin/messages.js.map +1 -0
  105. package/dist/src/pi-plugin/pi-types.d.ts +126 -0
  106. package/dist/src/pi-plugin/pi-types.d.ts.map +1 -0
  107. package/dist/src/pi-plugin/pi-types.js +15 -0
  108. package/dist/src/pi-plugin/pi-types.js.map +1 -0
  109. package/dist/src/pi-plugin/runtime.d.ts +21 -0
  110. package/dist/src/pi-plugin/runtime.d.ts.map +1 -0
  111. package/dist/src/pi-plugin/runtime.js +60 -0
  112. package/dist/src/pi-plugin/runtime.js.map +1 -0
  113. package/dist/src/pi-plugin/tools.d.ts +11 -0
  114. package/dist/src/pi-plugin/tools.d.ts.map +1 -0
  115. package/dist/src/pi-plugin/tools.js +136 -0
  116. package/dist/src/pi-plugin/tools.js.map +1 -0
  117. package/dist/src/recall-boosts.d.ts +15 -0
  118. package/dist/src/recall-boosts.d.ts.map +1 -0
  119. package/dist/src/recall-boosts.js +159 -0
  120. package/dist/src/recall-boosts.js.map +1 -0
  121. package/dist/src/recall-engine.d.ts +0 -2
  122. package/dist/src/recall-engine.d.ts.map +1 -1
  123. package/dist/src/recall-engine.js +1 -151
  124. package/dist/src/recall-engine.js.map +1 -1
  125. package/dist/src/reconcile.d.ts +2 -0
  126. package/dist/src/reconcile.d.ts.map +1 -1
  127. package/dist/src/reconcile.js +21 -4
  128. package/dist/src/reconcile.js.map +1 -1
  129. package/dist/src/session-context.d.ts +1 -0
  130. package/dist/src/session-context.d.ts.map +1 -1
  131. package/dist/src/session-context.js +42 -23
  132. package/dist/src/session-context.js.map +1 -1
  133. package/dist/src/sleep/audit.d.ts +6 -0
  134. package/dist/src/sleep/audit.d.ts.map +1 -1
  135. package/dist/src/sleep/audit.js +6 -8
  136. package/dist/src/sleep/audit.js.map +1 -1
  137. package/dist/src/sleep/basic.d.ts +1 -1
  138. package/dist/src/sleep/basic.d.ts.map +1 -1
  139. package/dist/src/sleep/basic.js +5 -2
  140. package/dist/src/sleep/basic.js.map +1 -1
  141. package/dist/src/sleep/catchup.d.ts +17 -0
  142. package/dist/src/sleep/catchup.d.ts.map +1 -0
  143. package/dist/src/sleep/catchup.js +141 -0
  144. package/dist/src/sleep/catchup.js.map +1 -0
  145. package/dist/src/sleep/contracts.d.ts +112 -0
  146. package/dist/src/sleep/contracts.d.ts.map +1 -0
  147. package/dist/src/sleep/contracts.js +25 -0
  148. package/dist/src/sleep/contracts.js.map +1 -0
  149. package/dist/src/sleep/llm-budget.d.ts +49 -0
  150. package/dist/src/sleep/llm-budget.d.ts.map +1 -0
  151. package/dist/src/sleep/llm-budget.js +106 -0
  152. package/dist/src/sleep/llm-budget.js.map +1 -0
  153. package/dist/src/sleep/locks.d.ts +9 -5
  154. package/dist/src/sleep/locks.d.ts.map +1 -1
  155. package/dist/src/sleep/locks.js +8 -11
  156. package/dist/src/sleep/locks.js.map +1 -1
  157. package/dist/src/sleep/orchestrator.d.ts +20 -86
  158. package/dist/src/sleep/orchestrator.d.ts.map +1 -1
  159. package/dist/src/sleep/orchestrator.js +291 -755
  160. package/dist/src/sleep/orchestrator.js.map +1 -1
  161. package/dist/src/sleep/state.d.ts +15 -18
  162. package/dist/src/sleep/state.d.ts.map +1 -1
  163. package/dist/src/sleep/state.js +24 -19
  164. package/dist/src/sleep/state.js.map +1 -1
  165. package/dist/src/sleep/test-harness.d.ts +3 -1
  166. package/dist/src/sleep/test-harness.d.ts.map +1 -1
  167. package/dist/src/sleep/test-harness.js +3 -2
  168. package/dist/src/sleep/test-harness.js.map +1 -1
  169. package/dist/src/soul-seeder.d.ts +36 -0
  170. package/dist/src/soul-seeder.d.ts.map +1 -0
  171. package/dist/src/soul-seeder.js +69 -0
  172. package/dist/src/soul-seeder.js.map +1 -0
  173. package/dist/src/wake-up-builder.d.ts +3 -1
  174. package/dist/src/wake-up-builder.d.ts.map +1 -1
  175. package/dist/src/wake-up-builder.js +29 -5
  176. package/dist/src/wake-up-builder.js.map +1 -1
  177. package/package.json +20 -2
@@ -1 +1 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/sleep/basic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/sleep/basic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * sleep/catchup.ts — Catch-up orchestration for incomplete previous-day sleep cycles.
3
+ */
4
+ import type { SleepStep } from "../sleep-pipeline.js";
5
+ import type { SleepRuntime, SleepEvent } from "./contracts.js";
6
+ import type { SleepDataAccess } from "../sleep-data-access.js";
7
+ import type { SleepState } from "./state.js";
8
+ import type { PreviousLock } from "./locks.js";
9
+ import type { LlmBudget } from "./llm-budget.js";
10
+ /** Steps whose failure blocks watermark advance. Public so tests can derive reject targets. */
11
+ export declare const ESSENTIAL_STEPS: ReadonlySet<string>;
12
+ export declare const CATCHUP_MAX_AGE_DAYS = 3;
13
+ export declare function failedEssentials(state: SleepState): string[];
14
+ export declare function runCatchUp(locks: PreviousLock[], sleepData: SleepDataAccess, memoryConfig: {
15
+ memoryDir: string;
16
+ }, steps: SleepStep[], runtime: SleepRuntime, runId: string, signal: AbortSignal, budget?: LlmBudget, retryDelayMs?: number, onEvent?: (event: SleepEvent) => void): Promise<void>;
17
+ //# sourceMappingURL=catchup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catchup.d.ts","sourceRoot":"","sources":["../../../src/sleep/catchup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,+FAA+F;AAC/F,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAAmE,CAAC;AACpH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,CAS5D;AAMD,wBAAsB,UAAU,CAC9B,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EACnC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,SAAS,EAClB,YAAY,SAAO,EACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GACpC,OAAO,CAAC,IAAI,CAAC,CAwGf"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * sleep/catchup.ts — Catch-up orchestration for incomplete previous-day sleep cycles.
3
+ */
4
+ import { existsSync, unlinkSync } from "node:fs";
5
+ import { join, basename } from "node:path";
6
+ import { getAbmindEnv } from "../env-schema.js";
7
+ import { buildDailySummary, writeDailyFile, LLMUnavailableError, extractFromDaily } from "../sleep-pipeline.js";
8
+ import { logInfo, logWarn, logError } from "../mem-logger.js";
9
+ import { emitSleepEvent } from "./contracts.js";
10
+ import { writeStateFile } from "./state.js";
11
+ import { dateStrToMs, dateStrToFormatted } from "./locks.js";
12
+ import { sendToRuntime } from "./llm-budget.js";
13
+ const TAG = "abmind-sleep";
14
+ /** Steps whose failure blocks watermark advance. Public so tests can derive reject targets. */
15
+ export const ESSENTIAL_STEPS = new Set(["daily-summary", "extract-memories", "retrospective"]);
16
+ export const CATCHUP_MAX_AGE_DAYS = 3;
17
+ export function failedEssentials(state) {
18
+ const failed = [];
19
+ for (const name of ESSENTIAL_STEPS) {
20
+ const s = state.steps[name];
21
+ if (!s || s.status === "failed" || s.status === "timeout" || s.status === "pending") {
22
+ failed.push(name);
23
+ }
24
+ }
25
+ return failed;
26
+ }
27
+ function stepSummary(id, status, durationMs) {
28
+ return { id, status, essential: true, attempts: 1, durationMs };
29
+ }
30
+ export async function runCatchUp(locks, sleepData, memoryConfig, steps, runtime, runId, signal, budget, retryDelayMs = 6000, onEvent) {
31
+ for (const lock of locks) {
32
+ if (signal.aborted)
33
+ return;
34
+ if (lock.ageDays > CATCHUP_MAX_AGE_DAYS) {
35
+ logError(TAG, `[CATCH-UP] Abandoning stale lock ${basename(lock.path)} — ${lock.ageDays} days old, data unrecoverable`);
36
+ unlinkSync(lock.path);
37
+ continue;
38
+ }
39
+ const needed = failedEssentials(lock.state);
40
+ if (needed.length === 0) {
41
+ logInfo(TAG, `[CATCH-UP] Cleaning up completed lock ${basename(lock.path)}`);
42
+ unlinkSync(lock.path);
43
+ continue;
44
+ }
45
+ logInfo(TAG, `[CATCH-UP] ${basename(lock.path)} — recovering: ${needed.join(", ")}`);
46
+ // 04a — daily summary with date-range
47
+ if (needed.includes("daily-summary")) {
48
+ const start = Date.now();
49
+ let summary = null;
50
+ try {
51
+ const ctxWindow = getAbmindEnv().sleepCtxWindow;
52
+ const userId = sleepData.getPrimaryUserId();
53
+ const dayStart = dateStrToMs(lock.dateStr);
54
+ const dayEnd = dayStart + 86400000;
55
+ summary = await buildDailySummary(sleepData.getDb(), (p) => sendToRuntime(runtime, p, "catch-up-daily-summary", runId, signal, budget, retryDelayMs).then(r => { if (r === null)
56
+ throw new LLMUnavailableError(); return r; }), {
57
+ ctxWindow, memoryDir: memoryConfig.memoryDir, userId, watermarkTs: 0,
58
+ dateRange: { startTs: dayStart, endTs: dayEnd },
59
+ });
60
+ if (summary) {
61
+ writeDailyFile(memoryConfig.memoryDir, dateStrToFormatted(lock.dateStr), summary);
62
+ lock.state.steps["daily-summary"] = { status: "ok", essential: true, duration: Math.round((Date.now() - start) / 100) / 10 };
63
+ }
64
+ else {
65
+ lock.state.steps["daily-summary"] = { status: "skipped", essential: true };
66
+ }
67
+ logInfo(TAG, `[CATCH-UP] ✓ daily-summary for ${lock.dateStr} (${((Date.now() - start) / 1000).toFixed(1)}s)`);
68
+ emitSleepEvent(onEvent, { type: summary ? "step_completed" : "step_skipped", runId, step: stepSummary("daily-summary", summary ? "completed" : "skipped", Date.now() - start) });
69
+ }
70
+ catch (err) {
71
+ logWarn(TAG, `[CATCH-UP] ✗ daily-summary for ${lock.dateStr}: ${err instanceof Error ? err.message : String(err)}`);
72
+ lock.state.steps["daily-summary"] = { status: "failed", essential: true, duration: Math.round((Date.now() - start) / 100) / 10 };
73
+ emitSleepEvent(onEvent, { type: "step_failed", runId, step: stepSummary("daily-summary", "failed", Date.now() - start) });
74
+ }
75
+ writeStateFile(lock.path, lock.state);
76
+ }
77
+ if (signal.aborted)
78
+ return;
79
+ // 04b — extract memories from daily (needs daily file to exist)
80
+ if (needed.includes("extract-memories")) {
81
+ const dailyPath = join(memoryConfig.memoryDir, "daily", `daily_${dateStrToFormatted(lock.dateStr)}.md`);
82
+ if (!existsSync(dailyPath)) {
83
+ logInfo(TAG, `[CATCH-UP] ⏭ extract-memories — no daily file for ${lock.dateStr}`);
84
+ lock.state.steps["extract-memories"] = { status: "skipped", essential: true };
85
+ emitSleepEvent(onEvent, { type: "step_skipped", runId, step: stepSummary("extract-memories", "skipped") });
86
+ }
87
+ else {
88
+ const start = Date.now();
89
+ try {
90
+ const userId = sleepData.getPrimaryUserId();
91
+ const result = await extractFromDaily(dailyPath, userId, (p) => sendToRuntime(runtime, p, "catch-up-extract-memories", runId, signal, budget, retryDelayMs).then(r => { if (r === null)
92
+ throw new LLMUnavailableError(); return r; }));
93
+ lock.state.steps["extract-memories"] = { status: "ok", essential: true, duration: Math.round((Date.now() - start) / 100) / 10 };
94
+ logInfo(TAG, `[CATCH-UP] ✓ extract-memories for ${lock.dateStr} (${((Date.now() - start) / 1000).toFixed(1)}s) — ${result.slice(0, 80)}`);
95
+ emitSleepEvent(onEvent, { type: "step_completed", runId, step: stepSummary("extract-memories", "completed", Date.now() - start) });
96
+ }
97
+ catch (err) {
98
+ logWarn(TAG, `[CATCH-UP] ✗ extract-memories for ${lock.dateStr}: ${err instanceof Error ? err.message : String(err)}`);
99
+ lock.state.steps["extract-memories"] = { status: "failed", essential: true, duration: Math.round((Date.now() - start) / 100) / 10 };
100
+ emitSleepEvent(onEvent, { type: "step_failed", runId, step: stepSummary("extract-memories", "failed", Date.now() - start) });
101
+ }
102
+ }
103
+ writeStateFile(lock.path, lock.state);
104
+ }
105
+ if (signal.aborted)
106
+ return;
107
+ // Prompt-driven essentials (retrospective)
108
+ for (const stepName of ["retrospective"]) {
109
+ if (!needed.includes(stepName))
110
+ continue;
111
+ const step = steps.find(s => s.name === stepName);
112
+ if (!step) {
113
+ logWarn(TAG, `[CATCH-UP] Step file not found: ${stepName}`);
114
+ continue;
115
+ }
116
+ const start = Date.now();
117
+ const response = await sendToRuntime(runtime, step.rawPrompt, `catch-up-${stepName}`, runId, signal, budget, retryDelayMs);
118
+ if (response) {
119
+ lock.state.steps[stepName] = { status: "ok", essential: true, duration: Math.round((Date.now() - start) / 100) / 10 };
120
+ logInfo(TAG, `[CATCH-UP] ✓ ${stepName} (${((Date.now() - start) / 1000).toFixed(1)}s)`);
121
+ emitSleepEvent(onEvent, { type: "step_completed", runId, step: stepSummary(stepName, "completed", Date.now() - start) });
122
+ }
123
+ else {
124
+ lock.state.steps[stepName] = { status: "failed", essential: true, duration: Math.round((Date.now() - start) / 100) / 10 };
125
+ logWarn(TAG, `[CATCH-UP] ✗ ${stepName}`);
126
+ emitSleepEvent(onEvent, { type: "step_failed", runId, step: stepSummary(stepName, "failed", Date.now() - start) });
127
+ }
128
+ writeStateFile(lock.path, lock.state);
129
+ }
130
+ // Final check
131
+ const stillFailing = failedEssentials(lock.state);
132
+ if (stillFailing.length === 0) {
133
+ logInfo(TAG, `[CATCH-UP] ✅ ${basename(lock.path)} — all essentials recovered, lock deleted`);
134
+ unlinkSync(lock.path);
135
+ }
136
+ else {
137
+ logWarn(TAG, `[CATCH-UP] ${basename(lock.path)} — still failing: ${stillFailing.join(", ")} (failing ${lock.ageDays} day(s))`);
138
+ }
139
+ }
140
+ }
141
+ //# sourceMappingURL=catchup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catchup.js","sourceRoot":"","sources":["../../../src/sleep/catchup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * sleep/contracts.ts — host-neutral public contract for the abmind sleep
3
+ * engine (#1353).
4
+ *
5
+ * abmind owns memory-domain maintenance: step ordering, shared variables,
6
+ * budget, checkpoints, resume/catch-up, watermark, and the final domain
7
+ * result. An embedding host (abtars, OpenClaw, Hermes, the standalone CLI)
8
+ * owns scheduling, authenticated/manual admission, model/provider transport,
9
+ * agent/session lifecycle, and delivery. This file is the seam between them.
10
+ *
11
+ * These types are exported from the package root and listed in
12
+ * SUPPORTED-SURFACE.md. Internal state-file shapes (SleepState, StepResult,
13
+ * lock-file JSON) remain private — a host must never read them directly.
14
+ */
15
+ import type { Level } from "./levels.js";
16
+ import type { MemoryConfig } from "../memory-config.js";
17
+ /** One model-completion request for a single sleep step.
18
+ * `signal` combines the caller's cancellation with the configured wall-clock
19
+ * timeout — hosts must pass it through to their own transport/abort logic. */
20
+ export interface SleepCompletionRequest {
21
+ prompt: string;
22
+ stepId: string;
23
+ runId: string;
24
+ signal: AbortSignal;
25
+ }
26
+ /** Host-injected model runtime. One method: send a prompt, get text back.
27
+ * Reject on transport failure — abmind does not operate a provider retry
28
+ * loop; a rejection maps directly to abmind's own essential-step/suspend
29
+ * policy. Hosts own their own provider retry/fallback before rejecting. */
30
+ export interface SleepRuntime {
31
+ complete(request: SleepCompletionRequest): Promise<string>;
32
+ }
33
+ /** "manual" runs (e.g. an explicit "/sleep now") still run housekeeping even
34
+ * with zero new messages since the last cycle — matching the historical
35
+ * --force behavior. "scheduled" and "resume" respect the no-work guard. */
36
+ export type SleepRunMode = "scheduled" | "manual" | "resume";
37
+ export interface SleepRunOptions {
38
+ runtime: SleepRuntime;
39
+ mode?: SleepRunMode;
40
+ level?: Level;
41
+ /** Caller-supplied cancellation — combined internally with the wall-clock timeout. */
42
+ signal?: AbortSignal;
43
+ /** Discard prior state and start with a clean budget. Used by manual "now" runs. */
44
+ fresh?: boolean;
45
+ /** Best-effort lifecycle observer. A throwing handler never alters the run. */
46
+ onEvent?: (event: SleepEvent) => void;
47
+ now?: () => number;
48
+ timeoutMs?: number;
49
+ memoryConfigOverride?: Partial<MemoryConfig>;
50
+ /** Internal test seam — delay between bounded domain retries (empty/invalid
51
+ * response). Not part of the documented public contract; defaults to 6000ms. */
52
+ domainRetryDelayMs?: number;
53
+ /** Internal test seam — inter-step backoff after a non-essential step
54
+ * failure, keyed by consecutive-failure count. Not part of the documented
55
+ * public contract; defaults to [10,30,60]s capped. */
56
+ betweenStepBackoffMs?: (consecutiveFailures: number) => number;
57
+ }
58
+ export type SleepTerminalStatus = "completed" | "no_work" | "partial" | "failed" | "cancelled" | "already_running";
59
+ export interface SleepStepSummary {
60
+ id: string;
61
+ status: "completed" | "skipped" | "failed" | "timeout";
62
+ essential: boolean;
63
+ attempts: number;
64
+ durationMs?: number;
65
+ }
66
+ export interface SleepRunResult {
67
+ runId: string;
68
+ status: SleepTerminalStatus;
69
+ startedAt: number;
70
+ finishedAt: number;
71
+ llmCalls: number;
72
+ steps: readonly SleepStepSummary[];
73
+ essentialFailures: readonly string[];
74
+ resumable: boolean;
75
+ watermarkAdvanced: boolean;
76
+ report: string;
77
+ }
78
+ /** Neutral lifecycle events. Bounded metadata only — never prompts or raw
79
+ * model responses. Exactly one `cycle_finished` is attempted for every run
80
+ * that emitted `cycle_started`. */
81
+ export type SleepEvent = {
82
+ type: "cycle_started";
83
+ runId: string;
84
+ totalSteps: number;
85
+ resumed: boolean;
86
+ } | {
87
+ type: "step_started";
88
+ runId: string;
89
+ stepId: string;
90
+ index: number;
91
+ total: number;
92
+ } | {
93
+ type: "step_completed";
94
+ runId: string;
95
+ step: SleepStepSummary;
96
+ } | {
97
+ type: "step_skipped";
98
+ runId: string;
99
+ step: SleepStepSummary;
100
+ } | {
101
+ type: "step_failed";
102
+ runId: string;
103
+ step: SleepStepSummary;
104
+ } | {
105
+ type: "cycle_finished";
106
+ runId: string;
107
+ result: SleepRunResult;
108
+ };
109
+ /** Best-effort event dispatch — an observer that throws must never alter the
110
+ * memory transaction, ordering, or final result (#1353 constraint 5). */
111
+ export declare function emitSleepEvent(handler: ((event: SleepEvent) => void) | undefined, event: SleepEvent): void;
112
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/sleep/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * sleep/contracts.ts — host-neutral public contract for the abmind sleep
3
+ * engine (#1353).
4
+ *
5
+ * abmind owns memory-domain maintenance: step ordering, shared variables,
6
+ * budget, checkpoints, resume/catch-up, watermark, and the final domain
7
+ * result. An embedding host (abtars, OpenClaw, Hermes, the standalone CLI)
8
+ * owns scheduling, authenticated/manual admission, model/provider transport,
9
+ * agent/session lifecycle, and delivery. This file is the seam between them.
10
+ *
11
+ * These types are exported from the package root and listed in
12
+ * SUPPORTED-SURFACE.md. Internal state-file shapes (SleepState, StepResult,
13
+ * lock-file JSON) remain private — a host must never read them directly.
14
+ */
15
+ /** Best-effort event dispatch — an observer that throws must never alter the
16
+ * memory transaction, ordering, or final result (#1353 constraint 5). */
17
+ export function emitSleepEvent(handler, event) {
18
+ if (!handler)
19
+ return;
20
+ try {
21
+ handler(event);
22
+ }
23
+ catch { /* host display only — never fail the cycle */ }
24
+ }
25
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/sleep/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA4FH;0EAC0E;AAC1E,MAAM,UAAU,cAAc,CAAC,OAAkD,EAAE,KAAiB;IAClG,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,8CAA8C,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * sleep/llm-budget.ts — LLM call budget tracking and bounded domain retry.
3
+ *
4
+ * #1353: transport retry/backoff is a host responsibility, not abmind's.
5
+ * `SleepRuntime.complete()` is one host-supervised model operation — if it
6
+ * rejects, the host has already exhausted its own provider retry/fallback
7
+ * policy. Abmind records a transport-unavailable step outcome and follows
8
+ * its existing essential-step stop/suspend rules; it does not sleep and
9
+ * retry the provider itself.
10
+ *
11
+ * The bounded retry that remains here is a DOMAIN retry: a structurally
12
+ * empty or invalid *successful* response is retried a small number of times
13
+ * because another model call is semantically meaningful (the model may
14
+ * simply produce a better answer next time). Every model-reaching attempt —
15
+ * retried or not — is charged to the LLM budget.
16
+ */
17
+ import { LLMUnavailableError } from "../sleep-pipeline.js";
18
+ import type { SleepRuntime } from "./contracts.js";
19
+ import type { SleepState } from "./state.js";
20
+ /** Bounded retries for an empty/invalid domain response. Not a transport retry. */
21
+ export declare const MAX_DOMAIN_RETRIES = 3;
22
+ /** Thrown when the host's `runtime.complete()` rejects — a transport failure,
23
+ * not a domain one. Extends LLMUnavailableError so buildDailySummary/
24
+ * extractFromDaily propagate it naturally (they check instanceof
25
+ * LLMUnavailableError to bubble errors up to the orchestrator). */
26
+ export declare class TransportUnavailableError extends LLMUnavailableError {
27
+ constructor(stepId: string, cause?: unknown);
28
+ }
29
+ /** Budget tracker — shared across all completion calls in a sleep cycle. */
30
+ export declare class LlmBudget {
31
+ private state;
32
+ private readonly statePath;
33
+ exhausted: boolean;
34
+ constructor(state: SleepState, statePath: string);
35
+ /** Increment counter, return false if budget exhausted. */
36
+ consume(): boolean;
37
+ get calls(): number;
38
+ }
39
+ /**
40
+ * Send one prompt through the host runtime with bounded domain retry for
41
+ * empty/invalid responses. A runtime rejection is NOT retried here — it
42
+ * propagates immediately as TransportUnavailableError so the orchestrator
43
+ * can apply its own essential-step stop/suspend policy.
44
+ *
45
+ * Returns null if the budget is already exhausted, or after MAX_DOMAIN_RETRIES
46
+ * consecutive empty responses.
47
+ */
48
+ export declare function sendToRuntime(runtime: SleepRuntime, prompt: string, stepId: string, runId: string, signal: AbortSignal, budget?: LlmBudget, delayMs?: number): Promise<string | null>;
49
+ //# sourceMappingURL=llm-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-budget.d.ts","sourceRoot":"","sources":["../../../src/sleep/llm-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;oEAGoE;AACpE,qBAAa,yBAA0B,SAAQ,mBAAmB;gBACpD,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK5C;AAED,4EAA4E;AAC5E,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,SAAS,UAAS;gBAEN,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM;IAKhD,2DAA2D;IAC3D,OAAO,IAAI,OAAO;IAUlB,IAAI,KAAK,IAAI,MAAM,CAAqC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,SAAS,EAClB,OAAO,SAAO,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCxB"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * sleep/llm-budget.ts — LLM call budget tracking and bounded domain retry.
3
+ *
4
+ * #1353: transport retry/backoff is a host responsibility, not abmind's.
5
+ * `SleepRuntime.complete()` is one host-supervised model operation — if it
6
+ * rejects, the host has already exhausted its own provider retry/fallback
7
+ * policy. Abmind records a transport-unavailable step outcome and follows
8
+ * its existing essential-step stop/suspend rules; it does not sleep and
9
+ * retry the provider itself.
10
+ *
11
+ * The bounded retry that remains here is a DOMAIN retry: a structurally
12
+ * empty or invalid *successful* response is retried a small number of times
13
+ * because another model call is semantically meaningful (the model may
14
+ * simply produce a better answer next time). Every model-reaching attempt —
15
+ * retried or not — is charged to the LLM budget.
16
+ */
17
+ import { getAbmindEnv } from "../env-schema.js";
18
+ import { logWarn, logError } from "../mem-logger.js";
19
+ import { LLMUnavailableError } from "../sleep-pipeline.js";
20
+ import { writeStateFile } from "./state.js";
21
+ const TAG = "abmind-sleep";
22
+ /** Bounded retries for an empty/invalid domain response. Not a transport retry. */
23
+ export const MAX_DOMAIN_RETRIES = 3;
24
+ /** Thrown when the host's `runtime.complete()` rejects — a transport failure,
25
+ * not a domain one. Extends LLMUnavailableError so buildDailySummary/
26
+ * extractFromDaily propagate it naturally (they check instanceof
27
+ * LLMUnavailableError to bubble errors up to the orchestrator). */
28
+ export class TransportUnavailableError extends LLMUnavailableError {
29
+ constructor(stepId, cause) {
30
+ const msg = cause instanceof Error ? cause.message : String(cause);
31
+ super(`Runtime rejected for step "${stepId}": ${msg}`);
32
+ this.name = "TransportUnavailableError";
33
+ }
34
+ }
35
+ /** Budget tracker — shared across all completion calls in a sleep cycle. */
36
+ export class LlmBudget {
37
+ state;
38
+ statePath;
39
+ exhausted = false;
40
+ constructor(state, statePath) {
41
+ this.state = state;
42
+ this.statePath = statePath;
43
+ }
44
+ /** Increment counter, return false if budget exhausted. */
45
+ consume() {
46
+ this.state.llmCalls = (this.state.llmCalls ?? 0) + 1;
47
+ writeStateFile(this.statePath, this.state);
48
+ if (this.state.llmCalls > getAbmindEnv().sleepMaxLlmCalls) {
49
+ this.exhausted = true;
50
+ return false;
51
+ }
52
+ return true;
53
+ }
54
+ get calls() { return this.state.llmCalls ?? 0; }
55
+ }
56
+ /**
57
+ * Send one prompt through the host runtime with bounded domain retry for
58
+ * empty/invalid responses. A runtime rejection is NOT retried here — it
59
+ * propagates immediately as TransportUnavailableError so the orchestrator
60
+ * can apply its own essential-step stop/suspend policy.
61
+ *
62
+ * Returns null if the budget is already exhausted, or after MAX_DOMAIN_RETRIES
63
+ * consecutive empty responses.
64
+ */
65
+ export async function sendToRuntime(runtime, prompt, stepId, runId, signal, budget, delayMs = 6000) {
66
+ if (budget?.exhausted) {
67
+ logWarn(TAG, `[BUDGET] LLM call limit (${getAbmindEnv().sleepMaxLlmCalls}) reached at step ${stepId} — suspending`);
68
+ return null;
69
+ }
70
+ let emptyAttempts = 0;
71
+ while (true) {
72
+ if (signal.aborted)
73
+ return null;
74
+ const request = { prompt, stepId, runId, signal };
75
+ let result;
76
+ try {
77
+ result = await runtime.complete(request);
78
+ }
79
+ catch (err) {
80
+ // Transport failure — model unreachable via the host's own transport.
81
+ // No abmind-side backoff/retry window: the host has already exhausted
82
+ // its provider policy. Surface immediately.
83
+ throw new TransportUnavailableError(stepId, err);
84
+ }
85
+ // Real call reached the model — count it now (success OR empty, never a throw).
86
+ if (budget && !budget.consume()) {
87
+ logWarn(TAG, `[BUDGET] LLM call limit (${getAbmindEnv().sleepMaxLlmCalls}) reached at step ${stepId} — suspending`);
88
+ return null;
89
+ }
90
+ if (!result || !result.trim()) {
91
+ emptyAttempts++;
92
+ logWarn(TAG, `Step ${stepId} attempt ${emptyAttempts}/${MAX_DOMAIN_RETRIES} returned empty response`);
93
+ if (emptyAttempts >= MAX_DOMAIN_RETRIES) {
94
+ logError(TAG, `Step ${stepId} failed after ${MAX_DOMAIN_RETRIES} attempts (empty), skipping`);
95
+ return null;
96
+ }
97
+ if (signal.aborted)
98
+ return null;
99
+ if (delayMs > 0)
100
+ await new Promise(r => setTimeout(r, delayMs));
101
+ continue;
102
+ }
103
+ return result;
104
+ }
105
+ }
106
+ //# 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
- export declare function scanPreviousLocks(sleepDir: string, todayStr: string): PreviousLock[];
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":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,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,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,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAapF;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD"}
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"}
@@ -1,9 +1,6 @@
1
1
  /**
2
- * sleep/locks.ts — date helpers + previous-lock scanning.
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":"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"}
1
+ {"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/sleep/locks.ts"],"names":[],"mappings":"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"}