@duetso/agent 0.1.135 → 0.1.136

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 (40) hide show
  1. package/README.md +2 -0
  2. package/dist/package.json +1 -1
  3. package/dist/src/cli/help.d.ts +1 -0
  4. package/dist/src/cli/help.d.ts.map +1 -1
  5. package/dist/src/cli/help.js +32 -0
  6. package/dist/src/cli/help.js.map +1 -1
  7. package/dist/src/cli/memory-reflect.d.ts +13 -0
  8. package/dist/src/cli/memory-reflect.d.ts.map +1 -0
  9. package/dist/src/cli/memory-reflect.js +165 -0
  10. package/dist/src/cli/memory-reflect.js.map +1 -0
  11. package/dist/src/cli/memory.d.ts.map +1 -1
  12. package/dist/src/cli/memory.js +8 -0
  13. package/dist/src/cli/memory.js.map +1 -1
  14. package/dist/src/cli.d.ts +1 -0
  15. package/dist/src/cli.d.ts.map +1 -1
  16. package/dist/src/cli.js +1 -0
  17. package/dist/src/cli.js.map +1 -1
  18. package/dist/src/index.d.ts +1 -0
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +1 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/memory/observational.d.ts +187 -0
  23. package/dist/src/memory/observational.d.ts.map +1 -1
  24. package/dist/src/memory/observational.js +248 -5
  25. package/dist/src/memory/observational.js.map +1 -1
  26. package/dist/src/memory/storage.d.ts +16 -0
  27. package/dist/src/memory/storage.d.ts.map +1 -1
  28. package/dist/src/memory/storage.js +44 -0
  29. package/dist/src/memory/storage.js.map +1 -1
  30. package/dist/src/turn-runner/state-compaction.d.ts +49 -0
  31. package/dist/src/turn-runner/state-compaction.d.ts.map +1 -0
  32. package/dist/src/turn-runner/state-compaction.js +75 -0
  33. package/dist/src/turn-runner/state-compaction.js.map +1 -0
  34. package/dist/src/turn-runner/turn-runner.d.ts +8 -0
  35. package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
  36. package/dist/src/turn-runner/turn-runner.js +30 -1
  37. package/dist/src/turn-runner/turn-runner.js.map +1 -1
  38. package/dist/src/types/config.d.ts +19 -0
  39. package/dist/src/types/config.d.ts.map +1 -1
  40. package/package.json +1 -1
package/README.md CHANGED
@@ -485,6 +485,8 @@ Observational memory thresholds (tuned for modern 200k-token windows):
485
485
  - Raw-tail retention keeps about `30_000` exact message tokens after context replacement activates.
486
486
  - Observation context is injected as reminder messages; replacing raw context with observations/reflections is the compaction path.
487
487
 
488
+ As a final safety net for on-disk state, `TurnRunner` also caps the size of every `TurnState` that leaves the runner via `snapshotState` — every emitted event, terminal payload, and `getState()` return is trimmed before persistence sees it. Eviction drops the oldest agent messages first while keeping tool-call/result pairs intact, so `state.json` cannot grow unbounded even if memory compaction has already run many times. This is on by default at a 100 MB ceiling; override or disable via `autoStateCompaction` on `TurnRunnerConfig` (`true` → default ceiling, `{ maxBytes }` → custom, `false` → off).
489
+
488
490
  </details>
489
491
 
490
492
  ## Skills
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duetso/agent",
3
- "version": "0.1.135",
3
+ "version": "0.1.136",
4
4
  "description": "An opinionated full-stack agent turn runner with native memories, interrupts, and multi-agent orchestration",
5
5
  "keywords": [
6
6
  "agent",
@@ -10,6 +10,7 @@ export declare function printLoginHelp(): void;
10
10
  export declare function printEnvHelp(): void;
11
11
  export declare function printSkillsHelp(): void;
12
12
  export declare function printMemoryHelp(): void;
13
+ export declare function printMemoryReflectHelp(): void;
13
14
  export declare function printSendFeedbackHelp(): void;
14
15
  export declare function printUpgradeHelp(packageName: string): void;
15
16
  //# sourceMappingURL=help.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAoFtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CA0BrC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAsBnC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAqBtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAsBtC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAa1D"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAoFtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CA0BrC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAsBnC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAqBtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAsBtC;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CA+B7C;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAa1D"}
@@ -186,6 +186,38 @@ KEYS
186
186
  q / Esc Quit
187
187
  `);
188
188
  }
189
+ export function printMemoryReflectHelp() {
190
+ console.log(`
191
+ duet memory reflect — Condense old global observations into reflection rows
192
+
193
+ USAGE
194
+ duet memory reflect [--db <path>] [--dry-run] [--min-age-days <n>]
195
+ [--target-tokens <n>] [--model <name>]
196
+ [--effective-context <tokens>] [--wait <seconds>]
197
+
198
+ DESCRIPTION
199
+ Walks the durable memory store and folds raw observations older than
200
+ --min-age-days (default 3) into one reflection row per batch. Existing
201
+ reflection rows and fresh observations (younger than the cutoff) are
202
+ preserved verbatim so resumed sessions keep their recent local memory
203
+ intact. Batches are packed up to one reflection trigger's worth of
204
+ tokens, sequenced chronologically across sessions for cross-session
205
+ dedup. Use --dry-run to preview without writing.
206
+
207
+ OPTIONS
208
+ --db <path> Memory database path (default: ~/.duet/memory.db)
209
+ --dry-run Print the reflected log without writing it back
210
+ --min-age-days <n> Skip observations newer than this many days
211
+ (default: 3)
212
+ --target-tokens <n> Override the reflected log token budget per batch
213
+ --model <name> Memory model used for reflection (default: env / CLI default)
214
+ --effective-context <n> Effective context window used to derive memory budgets
215
+ (default: 200000)
216
+ --wait <seconds> Seconds to wait for the cross-process open-lock
217
+ (default: 30; 0 fails immediately)
218
+ -h, --help Show this help
219
+ `);
220
+ }
189
221
  export function printSendFeedbackHelp() {
190
222
  console.log(`
191
223
  duet send-feedback — Send free-form markdown feedback to the Duet team
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;gDAmBkC,WAAW;;;;;;;;;;;;;gHAaqD,+BAA+B;;;;;oFAK3D,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CxG,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;wEAW0D,qBAAqB;;;;;;;;;;;;;CAa5F,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;yDAa2C,qBAAqB;;;;;;IAM1E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;CAoBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,CAAC,GAAG,CAAC;oCACsB,WAAW;;;;;;;;;;CAU9C,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;gDAmBkC,WAAW;;;;;;;;;;;;;gHAaqD,+BAA+B;;;;;oFAK3D,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CxG,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;wEAW0D,qBAAqB;;;;;;;;;;;;;CAa5F,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;yDAa2C,qBAAqB;;;;;;IAM1E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;CAoBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,CAAC,GAAG,CAAC;oCACsB,WAAW;;;;;;;;;;CAU9C,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ interface ReflectCommandIO {
2
+ stdout: NodeJS.WritableStream;
3
+ stderr: NodeJS.WritableStream;
4
+ }
5
+ /**
6
+ * Run `duet memory reflect` — read every observation in the durable store,
7
+ * condense them through the reflector, and replace the entire pool with one
8
+ * reflection row. Intended as a manual prune tool; the session-scoped
9
+ * reflection that runs automatically during turns is unaffected.
10
+ */
11
+ export declare function runMemoryReflectCommand(args: string[], io?: ReflectCommandIO): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=memory-reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-reflect.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-reflect.ts"],"names":[],"mappings":"AA0BA,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,gBAAqE,GACxE,OAAO,CAAC,IAAI,CAAC,CAsFf"}
@@ -0,0 +1,165 @@
1
+ import { runMigrations } from "../memory/migrations.js";
2
+ import { DEFAULT_EFFECTIVE_CONTEXT, DEFAULT_GLOBAL_REFLECT_MIN_AGE_DAYS, reflectAllObservations, resolveObservationalMemorySettings, } from "../memory/observational.js";
3
+ import { MemoryLockTimeoutError } from "../memory/pglite.js";
4
+ import { MemorySession } from "../memory/session.js";
5
+ import { readAllObservations } from "../memory/storage.js";
6
+ import { DEFAULT_CLI_MEMORY_MODEL } from "../model-resolution/resolver.js";
7
+ import { DEFAULT_MEMORY_DB_PATH } from "../session/session-manager.js";
8
+ import { printMemoryReflectHelp } from "./help.js";
9
+ import { fail, resolveUserPath } from "./shared.js";
10
+ import { installShutdownHandlers } from "./shutdown.js";
11
+ /**
12
+ * Run `duet memory reflect` — read every observation in the durable store,
13
+ * condense them through the reflector, and replace the entire pool with one
14
+ * reflection row. Intended as a manual prune tool; the session-scoped
15
+ * reflection that runs automatically during turns is unaffected.
16
+ */
17
+ export async function runMemoryReflectCommand(args, io = { stdout: process.stdout, stderr: process.stderr }) {
18
+ const options = parseArgs(args);
19
+ if (!options)
20
+ return;
21
+ const session = new MemorySession({
22
+ path: options.dbPath,
23
+ openOptions: {
24
+ init: async (db) => {
25
+ await runMigrations(db);
26
+ },
27
+ },
28
+ ...(options.waitBudgetMs !== undefined ? { waitBudgetMs: options.waitBudgetMs } : {}),
29
+ idleCloseMs: 60_000,
30
+ });
31
+ const removeShutdownHandlers = installShutdownHandlers(() => session.dispose());
32
+ try {
33
+ // Eager probe so corruption / lock errors surface before the model call.
34
+ await session.withDb(async () => { });
35
+ const snapshot = await readAllObservations(session);
36
+ if (snapshot.observations.length === 0) {
37
+ io.stdout.write(`No observations to reflect at ${options.dbPath}\n`);
38
+ return;
39
+ }
40
+ const settings = resolveObservationalMemorySettings(options.effectiveContext);
41
+ const targetTokens = options.targetTokens ?? settings.reflection.bufferActivation;
42
+ const minAgeMs = options.minAgeDays * 24 * 60 * 60 * 1000;
43
+ io.stdout.write(`Reflecting ${snapshot.observations.length} observations (~${snapshot.estimatedObservationTokens} tokens) ` +
44
+ `older than ${options.minAgeDays} day(s) into <= ${targetTokens} tokens per batch using ${options.model}` +
45
+ (options.dryRun ? " [dry-run]" : "") +
46
+ "\n");
47
+ const result = await reflectAllObservations({
48
+ session,
49
+ snapshot,
50
+ settings,
51
+ model: options.model,
52
+ targetTokens,
53
+ minAgeMs,
54
+ dryRun: options.dryRun,
55
+ });
56
+ if (!result) {
57
+ io.stdout.write("Nothing to reflect.\n");
58
+ return;
59
+ }
60
+ if (result.reflections.length === 0) {
61
+ io.stdout.write(`\nNothing eligible: ${result.preserved.length} observation(s) preserved (too fresh or already reflections).\n`);
62
+ return;
63
+ }
64
+ for (let index = 0; index < result.reflections.length; index++) {
65
+ const reflection = result.reflections[index];
66
+ io.stdout.write(`\n--- Reflected batch ${index + 1}/${result.reflections.length} ---\n`);
67
+ io.stdout.write(`${reflection.content.trim()}\n`);
68
+ io.stdout.write("--- end ---\n");
69
+ }
70
+ if (result.written) {
71
+ io.stdout.write(`\nReplaced ${result.eligible.length} eligible observation(s) with ${result.reflections.length} reflection row(s); ` +
72
+ `${result.preserved.length} preserved verbatim.\n`);
73
+ }
74
+ else {
75
+ io.stdout.write(`\nDry-run: ${result.before.length} observation(s) left untouched (would have folded ${result.eligible.length} into ${result.reflections.length}).\n`);
76
+ }
77
+ }
78
+ catch (error) {
79
+ if (error instanceof MemoryLockTimeoutError) {
80
+ fail(`Memory database at ${error.dataDir} is still locked by duet pid ${error.holderPid} after ${error.budgetMs / 1000}s. Stop that process (or pass --wait <seconds> to wait longer) and retry.`);
81
+ }
82
+ throw error;
83
+ }
84
+ finally {
85
+ removeShutdownHandlers();
86
+ await session.dispose();
87
+ }
88
+ }
89
+ function parseArgs(args) {
90
+ let dbPath = DEFAULT_MEMORY_DB_PATH;
91
+ let dryRun = false;
92
+ let targetTokens;
93
+ let model = process.env.DUET_MEMORY_MODEL ?? DEFAULT_CLI_MEMORY_MODEL;
94
+ let effectiveContext = DEFAULT_EFFECTIVE_CONTEXT;
95
+ let waitBudgetMs;
96
+ let minAgeDays = DEFAULT_GLOBAL_REFLECT_MIN_AGE_DAYS;
97
+ for (let i = 0; i < args.length; i++) {
98
+ const arg = args[i];
99
+ switch (arg) {
100
+ case "--db":
101
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
102
+ fail(`Missing value for ${arg}`);
103
+ dbPath = resolveUserPath(args[++i]);
104
+ break;
105
+ case "--dry-run":
106
+ dryRun = true;
107
+ break;
108
+ case "--target-tokens": {
109
+ const raw = args[++i];
110
+ const n = Number(raw);
111
+ if (!Number.isFinite(n) || n <= 0)
112
+ fail(`Invalid --target-tokens value: ${raw} (expected positive number)`);
113
+ targetTokens = Math.floor(n);
114
+ break;
115
+ }
116
+ case "--model":
117
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
118
+ fail(`Missing value for ${arg}`);
119
+ model = args[++i];
120
+ break;
121
+ case "--effective-context": {
122
+ const raw = args[++i];
123
+ const n = Number(raw);
124
+ if (!Number.isFinite(n) || n <= 0)
125
+ fail(`Invalid --effective-context value: ${raw} (expected positive number)`);
126
+ effectiveContext = Math.floor(n);
127
+ break;
128
+ }
129
+ case "--wait": {
130
+ const raw = args[++i];
131
+ const seconds = Number(raw);
132
+ if (!Number.isFinite(seconds) || seconds < 0) {
133
+ fail(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
134
+ }
135
+ waitBudgetMs = Math.round(seconds * 1000);
136
+ break;
137
+ }
138
+ case "--min-age-days": {
139
+ const raw = args[++i];
140
+ const n = Number(raw);
141
+ if (!Number.isFinite(n) || n < 0) {
142
+ fail(`Invalid --min-age-days value: ${raw} (expected non-negative number)`);
143
+ }
144
+ minAgeDays = n;
145
+ break;
146
+ }
147
+ case "--help":
148
+ case "-h":
149
+ printMemoryReflectHelp();
150
+ return undefined;
151
+ default:
152
+ fail(`Unknown reflect option: ${arg}`);
153
+ }
154
+ }
155
+ return {
156
+ dbPath,
157
+ dryRun,
158
+ ...(targetTokens !== undefined ? { targetTokens } : {}),
159
+ model,
160
+ effectiveContext,
161
+ ...(waitBudgetMs !== undefined ? { waitBudgetMs } : {}),
162
+ minAgeDays,
163
+ };
164
+ }
165
+ //# sourceMappingURL=memory-reflect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-reflect.js","sourceRoot":"","sources":["../../../src/cli/memory-reflect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDpE"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DpE"}
@@ -2,6 +2,7 @@ import { MemoryLockTimeoutError } from "../memory/pglite.js";
2
2
  import { DEFAULT_MEMORY_DB_PATH } from "../session/session-manager.js";
3
3
  import { printMemoryHelp } from "./help.js";
4
4
  import { MemoryDb } from "./memory-db.js";
5
+ import { runMemoryReflectCommand } from "./memory-reflect.js";
5
6
  import { runMemoryTui } from "./memory-tui.js";
6
7
  import { fail, resolveUserPath } from "./shared.js";
7
8
  import { installShutdownHandlers } from "./shutdown.js";
@@ -13,6 +14,13 @@ import { installShutdownHandlers } from "./shutdown.js";
13
14
  * propagate to the next session immediately.
14
15
  */
15
16
  export async function runMemoryCommand(args) {
17
+ // Route `duet memory reflect ...` to the cross-session reflect command.
18
+ // Kept as a subcommand under `memory` so the existing TUI entry stays
19
+ // the bare `duet memory` invocation.
20
+ if (args[0] === "reflect") {
21
+ await runMemoryReflectCommand(args.slice(1));
22
+ return;
23
+ }
16
24
  let dbPath = DEFAULT_MEMORY_DB_PATH;
17
25
  // Wait budget for the cross-process open-lock, in seconds. Defaults to the shared
18
26
  // `DEFAULT_OPEN_LOCK_WAIT_BUDGET_MS` (30s) inside `MemoryDb.open`; `--wait 0` opts out
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"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"}
package/dist/src/cli.d.ts CHANGED
@@ -21,6 +21,7 @@ export type { LoginCommandIO } from "./cli/login.js";
21
21
  export { runSkillsCommand } from "./cli/skills.js";
22
22
  export { runUpgradeCommand } from "./cli/upgrade.js";
23
23
  export { runMemoryCommand } from "./cli/memory.js";
24
+ export { runMemoryReflectCommand } from "./cli/memory-reflect.js";
24
25
  export { runSendFeedbackCommand } from "./cli/send-feedback.js";
25
26
  export type { SendFeedbackCommandIO } from "./cli/send-feedback.js";
26
27
  export { cliEnvFilePaths, defaultDuetEnvFilePath, fileExists, formatEnvEntries, loadCliEnvFiles, parseResumeHistoryMessages, resolveUserPath, shellQuote, } from "./cli/shared.js";
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAkBH,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAkBH,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/src/cli.js CHANGED
@@ -29,6 +29,7 @@ export { runLoginCommand } from "./cli/login.js";
29
29
  export { runSkillsCommand } from "./cli/skills.js";
30
30
  export { runUpgradeCommand } from "./cli/upgrade.js";
31
31
  export { runMemoryCommand } from "./cli/memory.js";
32
+ export { runMemoryReflectCommand } from "./cli/memory-reflect.js";
32
33
  export { runSendFeedbackCommand } from "./cli/send-feedback.js";
33
34
  export { cliEnvFilePaths, defaultDuetEnvFilePath, fileExists, formatEnvEntries, loadCliEnvFiles, parseResumeHistoryMessages, resolveUserPath, shellQuote, } from "./cli/shared.js";
34
35
  export { detectPackageManagerFromContext, globalUpgradeCommand } from "./cli/package-manager.js";
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export * from "./types/protocol.js";
13
13
  export * from "./turn-runner/turn-runner.js";
14
14
  export * from "./session/session.js";
15
15
  export * from "./session/session-manager.js";
16
+ export * from "./turn-runner/state-compaction.js";
16
17
  export * from "./guardrails/semantic.js";
17
18
  export * from "./guardrails/pattern.js";
18
19
  export * from "./guardrails/firewall.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
package/dist/src/index.js CHANGED
@@ -13,6 +13,7 @@ export * from "./types/protocol.js";
13
13
  export * from "./turn-runner/turn-runner.js";
14
14
  export * from "./session/session.js";
15
15
  export * from "./session/session-manager.js";
16
+ export * from "./turn-runner/state-compaction.js";
16
17
  export * from "./guardrails/semantic.js";
17
18
  export * from "./guardrails/pattern.js";
18
19
  export * from "./guardrails/firewall.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
@@ -3,6 +3,7 @@ import type { Model, Usage } from "@earendil-works/pi-ai";
3
3
  import { type WireGuardHorizon } from "../turn-runner/wire-shaping.js";
4
4
  import type { MemoryContextCache } from "./store.js";
5
5
  import type { MemorySession } from "./session.js";
6
+ import { type SessionObservationsSnapshot } from "./storage.js";
6
7
  import type { Observation, ObservationalMemoryActivityEvent, ObservationalMemorySettings, ObservationalMemorySettingsInput } from "../types/memory.js";
7
8
  import { type RawMemoryMessage } from "./observational-prompts.js";
8
9
  /**
@@ -224,6 +225,192 @@ export declare function optimizeObservationsForContext(observations: string): st
224
225
  * message list whether or not the transform has run.
225
226
  */
226
227
  export declare function stripObservationalContextMessages(messages: AgentMessage[]): AgentMessage[];
228
+ /**
229
+ * Sentinel session id used by `reflectAllObservations` to stamp the
230
+ * reflection rows produced from the cross-session pool. Lets the
231
+ * loader/UI distinguish a global prune-reflection from a per-session one
232
+ * without needing a new column.
233
+ */
234
+ export declare const GLOBAL_REFLECTION_SESSION_ID = "__global_reflection__";
235
+ /**
236
+ * Default minimum age, in days, that a raw observation must reach before
237
+ * the global reflect prune (`duet memory reflect`) is allowed to fold it
238
+ * into a reflection row and delete the original.
239
+ *
240
+ * --- Why a min-age gate exists (read before changing) -----------------
241
+ *
242
+ * The global prune *deletes* the eligible source rows after condensing
243
+ * them. If a long-lived session is later resumed and finds its own local
244
+ * observation rows wiped, the runner's `getUnobservedMessageTail` loses
245
+ * its observation-group range markers — so the next observer call treats
246
+ * the entire session tail as unobserved and re-observes only the newest
247
+ * `FIXED_OBSERVER_BUDGETS.maxTranscriptTokens` (~35k tokens) of raw
248
+ * messages. Everything older than that newest slice is silently dropped
249
+ * by `trimMessagesToTranscriptBudget`, which walks newest→oldest. For
250
+ * sessions that had accumulated rich local condensation, that older
251
+ * content is genuinely lost: the actor's wire eviction horizon already
252
+ * shaped those messages off-wire, so they cannot be re-observed from the
253
+ * raw tail. The global reflection row preserves cross-session themes,
254
+ * but not the session-specific specifics.
255
+ *
256
+ * 3 days is the line where the cost-of-loss flips. After ~3 days a human
257
+ * no longer remembers session specifics anyway, only the higher-level
258
+ * shape — which is what the reflection row captures. Up to 3 days, the
259
+ * specifics still matter for resume continuity, so we hold those rows
260
+ * untouched.
261
+ *
262
+ * --- Alternatives considered and rejected (May 2026) ------------------
263
+ *
264
+ * 1. *Append-only with high-water-mark watermark.* Never delete; just
265
+ * keep appending reflection rows tagged `global-prune`. Recall
266
+ * ranks them above raw rows via `reflectionBias`. Pro: zero risk of
267
+ * resume info loss. Con: the pool grows unbounded over time and we
268
+ * still pay retrieval cost over every stale raw row that the
269
+ * reflection already supersedes. Rejected because the user
270
+ * explicitly wanted the pool to stay small.
271
+ *
272
+ * 2. *Per-session reflect+replace, batched by `session_id`.* Preserves
273
+ * attribution. Rejected because the whole point of the global
274
+ * prune is *cross-session* dedup; grouping by session forfeits
275
+ * that. Used only by the in-session reflector
276
+ * (`reflectObservations`).
277
+ *
278
+ * 3. *Reflect on existing reflections too.* Pro: keeps total row count
279
+ * bounded across many reflect runs. Rejected because reflections
280
+ * of reflections collapse already-condensed text into vaguer text,
281
+ * losing specificity each pass. The current shape preserves rows
282
+ * where `kind === "reflection"` (skipped as input and skipped from
283
+ * the deletion set), so older reflections accumulate but never
284
+ * degrade. A separate `duet memory compact` can later GC stale
285
+ * reflections by `lastUsedAt`.
286
+ *
287
+ * 4. *Smaller min-age (e.g. 1 day) for faster pruning.* Rejected
288
+ * because typical bursty work patterns (a 2-day investigation, a
289
+ * multi-day refactor) would lose mid-thread specifics exactly when
290
+ * a resume is most likely to need them.
291
+ */
292
+ export declare const DEFAULT_GLOBAL_REFLECT_MIN_AGE_DAYS = 3;
293
+ export declare const DEFAULT_GLOBAL_REFLECT_MIN_AGE_MS: number;
294
+ export interface ReflectAllOptions {
295
+ session: MemorySession;
296
+ /**
297
+ * The snapshot to reflect. Callers (the CLI) read the pool once so they
298
+ * can also print stats before the model call; passing the snapshot in
299
+ * avoids a redundant second `SELECT` inside this function.
300
+ */
301
+ snapshot: SessionObservationsSnapshot;
302
+ settings: ObservationalMemorySettings;
303
+ model: string;
304
+ /**
305
+ * Override the target token budget for the reflected log produced by
306
+ * each batch's reflector call. Defaults to
307
+ * `settings.reflection.bufferActivation` so each batch behaves the
308
+ * same way an in-session reflection does: condense to roughly the
309
+ * half-trigger budget, leaving headroom before the next reflection.
310
+ */
311
+ targetTokens?: number;
312
+ /**
313
+ * Maximum input tokens packed into a single reflector batch. Defaults
314
+ * to `settings.reflection.observationTokens` — the same trigger the
315
+ * in-session reflector uses, so each global-prune batch is the size
316
+ * of one natural reflection round. Multiple batches fire sequentially
317
+ * when the eligible pool is larger; cross-session dedup still works
318
+ * because batches are packed in chronological order, not grouped by
319
+ * `sessionId`.
320
+ */
321
+ batchTokens?: number;
322
+ /**
323
+ * Minimum age, in milliseconds, before a non-reflection row is
324
+ * eligible for prune. Defaults to {@link DEFAULT_GLOBAL_REFLECT_MIN_AGE_MS}.
325
+ * See the {@link DEFAULT_GLOBAL_REFLECT_MIN_AGE_DAYS} doc for the
326
+ * tradeoffs behind this default.
327
+ */
328
+ minAgeMs?: number;
329
+ /**
330
+ * Override of "now" for eligibility comparison. Defaults to
331
+ * `Date.now()`. Tests pin this so the cutoff is deterministic.
332
+ */
333
+ now?: number;
334
+ /**
335
+ * When true, do not write the reflected rows back. The function still
336
+ * runs the reflector model(s) and returns the result so callers can
337
+ * preview the prune (`duet memory reflect --dry-run`).
338
+ */
339
+ dryRun?: boolean;
340
+ onUsage?: (usage: Usage) => void;
341
+ }
342
+ export interface ReflectAllResult {
343
+ /** Observations as they existed before the reflect call. */
344
+ before: Observation[];
345
+ /**
346
+ * Rows preserved verbatim — either too fresh (younger than
347
+ * `minAgeMs`) or already reflection rows. These are written back
348
+ * untouched.
349
+ */
350
+ preserved: Observation[];
351
+ /**
352
+ * Raw observation rows that were eligible for condensation and were
353
+ * folded into one of `reflections`. When `written` is true, these
354
+ * rows have been deleted from the durable store.
355
+ */
356
+ eligible: Observation[];
357
+ /** One reflection row per batch processed. Empty if nothing was eligible. */
358
+ reflections: Observation[];
359
+ /** Whether the pool was rewritten (false on dryRun or when reflections is empty). */
360
+ written: boolean;
361
+ }
362
+ /** Pure-plan output of {@link planReflectionBatches}. */
363
+ export interface ReflectionBatch {
364
+ observations: Observation[];
365
+ estimatedTokens: number;
366
+ }
367
+ export interface PlanReflectionBatchesOptions {
368
+ /** Observations older than this (`createdAt <= cutoff`) are eligible. */
369
+ cutoff: number;
370
+ /** Maximum content tokens packed into a single batch. */
371
+ batchTokens: number;
372
+ }
373
+ /**
374
+ * Partition a snapshot into rows preserved verbatim vs eligible batches
375
+ * fed to the reflector. Pure function — no I/O, no model calls — so the
376
+ * batching/eligibility rules can be unit-tested without docker/LLM.
377
+ *
378
+ * Rules:
379
+ * - `kind === "reflection"` rows are always preserved (we never
380
+ * reflect on reflections; see option 3 in the
381
+ * {@link DEFAULT_GLOBAL_REFLECT_MIN_AGE_DAYS} comment).
382
+ * - Non-reflection rows with `createdAt > cutoff` are preserved (too
383
+ * fresh; resume-info-loss risk too high).
384
+ * - Everything else is eligible. Eligible rows are sorted by
385
+ * `createdAt` ascending and greedily packed into batches whose
386
+ * total `estimateTokens(content)` stays ≤ `batchTokens`. A single
387
+ * oversize row is allowed to occupy its own batch so we never drop
388
+ * rows just because they exceed the cap on their own.
389
+ */
390
+ export declare function planReflectionBatches(observations: readonly Observation[], options: PlanReflectionBatchesOptions): {
391
+ preserved: Observation[];
392
+ batches: ReflectionBatch[];
393
+ };
394
+ /**
395
+ * Cross-session reflect: condense each eligible batch of raw
396
+ * observations through the reflector and replace the eligible rows
397
+ * with one reflection row per batch. Preserved rows (fresh
398
+ * observations and existing reflections) survive verbatim. Used by
399
+ * `duet memory reflect` to prune the global memory store.
400
+ *
401
+ * Unlike `reflectObservations`, this can touch rows across all
402
+ * sessions — the caller is asking for a global prune, not a
403
+ * per-session compaction. See {@link DEFAULT_GLOBAL_REFLECT_MIN_AGE_DAYS}
404
+ * for the resume-info-loss tradeoffs that motivated the min-age gate
405
+ * and the "never reflect on reflections" rule.
406
+ *
407
+ * Returns `undefined` only when there is nothing eligible *and* nothing
408
+ * preserved (empty store). When the store has only fresh/reflection
409
+ * rows, returns a result with empty `eligible`/`reflections` and
410
+ * `written: false` so callers can report "nothing to prune" without
411
+ * conflating it with an empty store.
412
+ */
413
+ export declare function reflectAllObservations(options: ReflectAllOptions): Promise<ReflectAllResult | undefined>;
227
414
  export declare function enforceObservationTokenBudget(options: {
228
415
  text: string;
229
416
  targetTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"observational.d.ts","sourceRoot":"","sources":["../../../src/memory/observational.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observational.d.ts","sourceRoot":"","sources":["../../../src/memory/observational.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAgB,KAAK,EAAe,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAIrF,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAML,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,WAAW,EAEX,gCAAgC,EAChC,2BAA2B,EAC3B,gCAAgC,EACjC,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAYL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB;IAC/B,iDAAiD;;IAEjD,2DAA2D;;IAE3D,yCAAyC;;CAEjC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;IACjC;;;;;;;;;;;;;;OAcG;;IAEH;;;;;;;;;;;OAWG;;IAEH;;;;OAIG;;CAEK,CAAC;AAeX,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,uBAAuB,EAAE,MAAM,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,UAAU,EAAE;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,oBAAoB,CAqBlF;AAMD,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AA0DD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8C;gBAE7D,MAAM,EAAE,wBAAwB;IAkB5C,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IAYxC,aAAa,IAAI,MAAM,EAAE;CAG1B;AAED,MAAM,WAAW,oCAAoC;IACnD,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;;;;OASG;IACH,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,gCAAgC;IAC/C;;;;;OAKG;IACH,OAAO,EAAE,aAAa,CAAC;IACvB,2GAA2G;IAC3G,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,MAAM,EACxB,KAAK,CAAC,EAAE,gCAAgC,GACvC,2BAA2B,CAwB7B;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAwB/F;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,oCAAoC,IAIjF,UAAU,YAAY,EAAE,KAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmEjE;AAoCD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,+BAA+B,CAAC,CAkF1C;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAS3E;AAoCD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAE1F;AAqKD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,mCAAmC,IAAI,CAAC;AACrD,eAAO,MAAM,iCAAiC,QACa,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,QAAQ,EAAE,2BAA2B,CAAC;IACtC,QAAQ,EAAE,2BAA2B,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB;;;;OAIG;IACH,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,6EAA6E;IAC7E,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,OAAO,EAAE,4BAA4B,GACpC;IAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,CAoC1D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAyDvC;AAgKD,wBAAsB,6BAA6B,CAAC,OAAO,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD,GAAG,OAAO,CAAC,MAAM,CAAC,CAclB;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAY3F;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,gBAAgB,EAAE,MAAM,GACvB,gBAAgB,EAAE,CAmBpB;AAqBD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,WAAW,EAAE,GAC1B,gBAAgB,EAAE,CAMpB;AA0BD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAI/E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAgBrF;AAuOD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAWrE;AAcD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}