@jungjaehoon/mama-os 0.47.0 → 0.48.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 (86) hide show
  1. package/dist/agent/agent-loop.d.ts.map +1 -1
  2. package/dist/agent/agent-loop.js +9 -11
  3. package/dist/agent/agent-loop.js.map +1 -1
  4. package/dist/agent/code-act/constants.d.ts +4 -1
  5. package/dist/agent/code-act/constants.d.ts.map +1 -1
  6. package/dist/agent/code-act/constants.js +34 -97
  7. package/dist/agent/code-act/constants.js.map +1 -1
  8. package/dist/agent/code-act/host-bridge.d.ts +2 -1
  9. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  10. package/dist/agent/code-act/host-bridge.js +227 -29
  11. package/dist/agent/code-act/host-bridge.js.map +1 -1
  12. package/dist/agent/code-act/sandbox.d.ts +1 -0
  13. package/dist/agent/code-act/sandbox.d.ts.map +1 -1
  14. package/dist/agent/code-act/sandbox.js +33 -6
  15. package/dist/agent/code-act/sandbox.js.map +1 -1
  16. package/dist/agent/code-act/tool-catalog.d.ts +28 -0
  17. package/dist/agent/code-act/tool-catalog.d.ts.map +1 -0
  18. package/dist/agent/code-act/tool-catalog.js +146 -0
  19. package/dist/agent/code-act/tool-catalog.js.map +1 -0
  20. package/dist/agent/code-act/tool-policy.d.ts +2 -1
  21. package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
  22. package/dist/agent/code-act/tool-policy.js +2 -1
  23. package/dist/agent/code-act/tool-policy.js.map +1 -1
  24. package/dist/agent/code-act/type-definition-generator.d.ts +6 -0
  25. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  26. package/dist/agent/code-act/type-definition-generator.js +40 -21
  27. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  28. package/dist/agent/gateway-tool-executor.d.ts +6 -0
  29. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  30. package/dist/agent/gateway-tool-executor.js +102 -58
  31. package/dist/agent/gateway-tool-executor.js.map +1 -1
  32. package/dist/agent/gateway-tools.md +7 -7
  33. package/dist/agent/tool-registry.d.ts.map +1 -1
  34. package/dist/agent/tool-registry.js +22 -13
  35. package/dist/agent/tool-registry.js.map +1 -1
  36. package/dist/api/graph-api-types.d.ts +3 -0
  37. package/dist/api/graph-api-types.d.ts.map +1 -1
  38. package/dist/cli/commands/start.d.ts.map +1 -1
  39. package/dist/cli/commands/start.js +7 -0
  40. package/dist/cli/commands/start.js.map +1 -1
  41. package/dist/cli/runtime/code-act-executor.d.ts.map +1 -1
  42. package/dist/cli/runtime/code-act-executor.js +5 -0
  43. package/dist/cli/runtime/code-act-executor.js.map +1 -1
  44. package/dist/connectors/kagemusha/query-tools.d.ts +57 -0
  45. package/dist/connectors/kagemusha/query-tools.d.ts.map +1 -1
  46. package/dist/connectors/kagemusha/query-tools.js +247 -0
  47. package/dist/connectors/kagemusha/query-tools.js.map +1 -1
  48. package/dist/connectors/private-connector-policy.d.ts +32 -6
  49. package/dist/connectors/private-connector-policy.d.ts.map +1 -1
  50. package/dist/connectors/private-connector-policy.js +40 -5
  51. package/dist/connectors/private-connector-policy.js.map +1 -1
  52. package/dist/connectors/trello/query-tools.d.ts +148 -16
  53. package/dist/connectors/trello/query-tools.d.ts.map +1 -1
  54. package/dist/connectors/trello/query-tools.js +453 -65
  55. package/dist/connectors/trello/query-tools.js.map +1 -1
  56. package/dist/mcp/code-act-api-client.d.ts +1 -0
  57. package/dist/mcp/code-act-api-client.d.ts.map +1 -1
  58. package/dist/mcp/code-act-api-client.js.map +1 -1
  59. package/dist/mcp/code-act-server.js +8 -6
  60. package/dist/mcp/code-act-server.js.map +1 -1
  61. package/dist/mcp/code-act-terminal-transport.d.ts +2 -0
  62. package/dist/mcp/code-act-terminal-transport.d.ts.map +1 -1
  63. package/dist/mcp/code-act-terminal-transport.js +18 -6
  64. package/dist/mcp/code-act-terminal-transport.js.map +1 -1
  65. package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
  66. package/dist/multi-agent/agent-process-manager.js +1 -5
  67. package/dist/multi-agent/agent-process-manager.js.map +1 -1
  68. package/dist/operator/board-read-views.d.ts +49 -0
  69. package/dist/operator/board-read-views.d.ts.map +1 -0
  70. package/dist/operator/board-read-views.js +207 -0
  71. package/dist/operator/board-read-views.js.map +1 -0
  72. package/dist/operator/task-ledger.d.ts +85 -0
  73. package/dist/operator/task-ledger.d.ts.map +1 -1
  74. package/dist/operator/task-ledger.js +128 -0
  75. package/dist/operator/task-ledger.js.map +1 -1
  76. package/dist/operator/task-list-views.d.ts +91 -0
  77. package/dist/operator/task-list-views.d.ts.map +1 -0
  78. package/dist/operator/task-list-views.js +483 -0
  79. package/dist/operator/task-list-views.js.map +1 -0
  80. package/dist/operator/workorder-consumer.js +1 -1
  81. package/dist/operator/workorder-consumer.js.map +1 -1
  82. package/dist/sqlite.d.ts +7 -0
  83. package/dist/sqlite.d.ts.map +1 -1
  84. package/dist/sqlite.js +8 -0
  85. package/dist/sqlite.js.map +1 -1
  86. package/package.json +2 -1
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * Progressive board_read views (Task B, parent-fix P3/P5).
4
+ *
5
+ * The default read is descriptors only - each slot's name, updatedAt and stored
6
+ * HTML length in Unicode code points - never the full HTML. To read a slot the
7
+ * caller names it and a format: `text` extracts the slot's text with a real
8
+ * non-executing HTML parser (block/list/table breaks preserved, entities decoded,
9
+ * script/style bodies dropped - markup is never executed or fetched) and `html`
10
+ * returns the stored markup verbatim. Either way the content is paged by Unicode
11
+ * code points with offset/limit and total/nextOffset, and every selected read
12
+ * carries a readVersion bound to (slot, format, content): a continuation (offset
13
+ * > 0) must echo it, so a document that changes between chunks is caught rather
14
+ * than silently mixed. The default deliberately does not invent a summary.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.readBoardView = readBoardView;
18
+ exports.validateContinuationVersion = validateContinuationVersion;
19
+ const node_crypto_1 = require("node:crypto");
20
+ const htmlparser2_1 = require("htmlparser2");
21
+ const CONTENT_DEFAULT_LIMIT = 1000;
22
+ const CONTENT_MAX_LIMIT = 4000;
23
+ const FORMATS = ['text', 'html'];
24
+ function readBoardView(rawInput, slots) {
25
+ const input = asObject(rawInput, 'board_read');
26
+ if (input.slot === undefined) {
27
+ return { success: true, slots: describeSlots(slots) };
28
+ }
29
+ if (typeof input.slot !== 'string' || input.slot.trim().length === 0) {
30
+ throw new Error('board_read slot must be a slot name; omit slot for the descriptor list.');
31
+ }
32
+ const slot = input.slot;
33
+ const entry = Object.prototype.hasOwnProperty.call(slots, slot) ? slots[slot] : undefined;
34
+ if (!entry) {
35
+ throw new Error(`board_read unknown slot '${slot}'; call board_read with no slot to list available slots.`);
36
+ }
37
+ const format = parseFormat(input.format);
38
+ const offset = parseNonNegativeInt(input.offset, 'offset');
39
+ const limit = parseBoundedInt(input.limit, 'limit', CONTENT_DEFAULT_LIMIT, CONTENT_MAX_LIMIT);
40
+ // Normalize once: a missing html (despite the nominal type) is an empty slot,
41
+ // not a throw. The same normalized value backs both the representation and the
42
+ // content version, so a text read, an html read and readVersion all agree.
43
+ const html = entry.html ?? '';
44
+ const representation = format === 'html' ? html : extractText(html);
45
+ const readVersion = contentVersion(slot, format, html);
46
+ // Continuation must be pinned: a document that changed between chunks would
47
+ // otherwise splice two versions at a raw offset. Page 1 (offset 0) issues the
48
+ // version; every later page must echo the one it was handed.
49
+ validateContinuationVersion(input.readVersion, readVersion, offset, 'board_read');
50
+ const points = Array.from(representation);
51
+ const total = points.length;
52
+ const start = Math.min(offset, total);
53
+ const slice = points.slice(start, start + limit);
54
+ const end = start + slice.length;
55
+ const nextOffset = end < total ? end : null;
56
+ return {
57
+ success: true,
58
+ slot,
59
+ format,
60
+ content: slice.join(''),
61
+ offset,
62
+ limit,
63
+ total,
64
+ nextOffset,
65
+ complete: nextOffset === null,
66
+ readVersion,
67
+ };
68
+ }
69
+ function describeSlots(slots) {
70
+ return Object.entries(slots).map(([name, value]) => ({
71
+ name,
72
+ updatedAt: value.updatedAt ?? null,
73
+ htmlLength: Array.from(value.html ?? '').length,
74
+ }));
75
+ }
76
+ function contentVersion(slot, format, html) {
77
+ return (0, node_crypto_1.createHash)('sha256')
78
+ .update(`${slot}\0${format}\0${html}`)
79
+ .digest('base64url')
80
+ .slice(0, 22);
81
+ }
82
+ /** Block-level tags whose boundary is a line break in the extracted text. */
83
+ const BLOCK_TAGS = new Set([
84
+ 'p',
85
+ 'div',
86
+ 'section',
87
+ 'article',
88
+ 'header',
89
+ 'footer',
90
+ 'aside',
91
+ 'nav',
92
+ 'main',
93
+ 'figure',
94
+ 'figcaption',
95
+ 'blockquote',
96
+ 'pre',
97
+ 'ul',
98
+ 'ol',
99
+ 'li',
100
+ 'dl',
101
+ 'dt',
102
+ 'dd',
103
+ 'table',
104
+ 'thead',
105
+ 'tbody',
106
+ 'tfoot',
107
+ 'tr',
108
+ 'h1',
109
+ 'h2',
110
+ 'h3',
111
+ 'h4',
112
+ 'h5',
113
+ 'h6',
114
+ 'hr',
115
+ ]);
116
+ const CELL_TAGS = new Set(['td', 'th']);
117
+ /**
118
+ * Remove markup with a real non-executing parser. Script and style bodies are
119
+ * display-irrelevant and dropped; block/list/table boundaries become line breaks
120
+ * and cells are tab-separated; entities (named and numeric) are decoded by the
121
+ * tokenizer. No DOM tree, no evaluation, no fetch - the parser only tokenizes.
122
+ */
123
+ function extractText(html) {
124
+ const parts = [];
125
+ let skipDepth = 0;
126
+ const parser = new htmlparser2_1.Parser({
127
+ onopentag(name) {
128
+ if (name === 'script' || name === 'style') {
129
+ skipDepth += 1;
130
+ }
131
+ else if (name === 'br') {
132
+ parts.push('\n');
133
+ }
134
+ else if (BLOCK_TAGS.has(name)) {
135
+ parts.push('\n');
136
+ }
137
+ },
138
+ ontext(text) {
139
+ if (skipDepth === 0)
140
+ parts.push(text);
141
+ },
142
+ onclosetag(name) {
143
+ if (name === 'script' || name === 'style') {
144
+ if (skipDepth > 0)
145
+ skipDepth -= 1;
146
+ }
147
+ else if (CELL_TAGS.has(name)) {
148
+ parts.push('\t');
149
+ }
150
+ else if (BLOCK_TAGS.has(name)) {
151
+ parts.push('\n');
152
+ }
153
+ },
154
+ }, { decodeEntities: true });
155
+ parser.write(html);
156
+ parser.end();
157
+ return normalizeText(parts.join(''));
158
+ }
159
+ /** Collapse runs of blank lines and trailing cell tabs; keep intentional breaks. */
160
+ function normalizeText(text) {
161
+ return text
162
+ .replace(/[ \t]+\n/g, '\n')
163
+ .replace(/\n{3,}/g, '\n\n')
164
+ .replace(/\t+\n/g, '\n')
165
+ .trim();
166
+ }
167
+ function validateContinuationVersion(supplied, current, offset, tool) {
168
+ if (offset > 0 && supplied === undefined) {
169
+ throw new Error(`${tool} continuation (offset > 0) requires the readVersion from the previous page; restart from offset 0.`);
170
+ }
171
+ if (supplied !== undefined && supplied !== current) {
172
+ throw new Error(`${tool} content changed since this readVersion was issued; restart the read from offset 0.`);
173
+ }
174
+ }
175
+ function parseFormat(value) {
176
+ if (value === undefined)
177
+ return 'text';
178
+ if (typeof value !== 'string' || !FORMATS.includes(value)) {
179
+ throw new Error(`board_read format must be one of ${FORMATS.join('|')}.`);
180
+ }
181
+ return value;
182
+ }
183
+ function parseNonNegativeInt(value, field) {
184
+ if (value === undefined)
185
+ return 0;
186
+ if (!Number.isInteger(value) || value < 0) {
187
+ throw new Error(`board_read ${field} must be a non-negative integer.`);
188
+ }
189
+ return value;
190
+ }
191
+ function parseBoundedInt(value, field, fallback, max) {
192
+ if (value === undefined)
193
+ return fallback;
194
+ if (!Number.isInteger(value) || value < 1 || value > max) {
195
+ throw new Error(`board_read ${field} must be an integer from 1 to ${max}.`);
196
+ }
197
+ return value;
198
+ }
199
+ function asObject(value, name) {
200
+ if (value === undefined)
201
+ return {};
202
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
203
+ throw new Error(`${name} input must be an object.`);
204
+ }
205
+ return value;
206
+ }
207
+ //# sourceMappingURL=board-read-views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-read-views.js","sourceRoot":"","sources":["../../src/operator/board-read-views.ts"],"names":[],"mappings":"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"}
@@ -256,6 +256,17 @@ export interface ListTasksFilter {
256
256
  includeTerminal?: boolean;
257
257
  channel?: string;
258
258
  search?: string;
259
+ /** Exact assignee match (progressive overview/items filter). */
260
+ assignee?: string;
261
+ /** Exact priority match (progressive overview/items filter). */
262
+ priority?: TaskPriority;
263
+ /** Exact due_at strictly before this epoch ms. Date-only-deadline rows (no due_at)
264
+ * are NOT matched: an exact-time filter never invents a clock for a date-only row. */
265
+ dueBeforeMs?: number;
266
+ /** Exact due_at at or after this epoch ms. Same date-only exclusion as dueBeforeMs. */
267
+ dueAfterMs?: number;
268
+ /** updated_at at or after this epoch ms. */
269
+ updatedSinceMs?: number;
259
270
  limit?: number;
260
271
  /** 'deadline_priority' = deadline asc NULLS LAST, then high>normal>low, then id. */
261
272
  order?: 'deadline_priority' | 'updated';
@@ -280,6 +291,43 @@ export interface ListTasksPage {
280
291
  /** Cursor for the next page, or null when this page ends the set. */
281
292
  nextCursor: string | null;
282
293
  }
294
+ /**
295
+ * Aggregate counts over the SAME owner predicate a page would return, plus the
296
+ * due buckets derived from the identical temporal classification `items` uses,
297
+ * under one captured `now`. Every facet partitions `total`, so a caller can add
298
+ * up any facet and check it against the number it drew the page from.
299
+ */
300
+ export interface OverviewResult {
301
+ total: number;
302
+ /** Snapshot instant (ms) captured once for every bucket in this result. */
303
+ observedAt: number;
304
+ /** Conservative change signature; a cursor pinned to it is rejected after any owner write. */
305
+ readVersion: string;
306
+ status: Record<string, number>;
307
+ priority: Record<string, number>;
308
+ /** An unassigned source_channel is reported as a real null `channel`, not the string "null". */
309
+ channels: Array<{
310
+ channel: string | null;
311
+ count: number;
312
+ }>;
313
+ /** null assignee (unassigned) is reported with assignee: null. */
314
+ assignees: Array<{
315
+ assignee: string | null;
316
+ count: number;
317
+ }>;
318
+ /**
319
+ * Partition of `total` by temporal disposition under `observedAt`:
320
+ * missing = no due_at and no deadline; overdue/upcoming from the same
321
+ * deriveTemporalState `items` uses (date_due counts as upcoming); closed =
322
+ * done/cancelled. The four sum to `total`.
323
+ */
324
+ due: {
325
+ missing: number;
326
+ overdue: number;
327
+ upcoming: number;
328
+ closed: number;
329
+ };
330
+ }
283
331
  export declare class TaskLedger implements TaskSource {
284
332
  private db;
285
333
  private now;
@@ -317,6 +365,43 @@ export declare class TaskLedger implements TaskSource {
317
365
  * read that quietly lost items.
318
366
  */
319
367
  listPage(filter?: ListTasksPageFilter): ListTasksPage;
368
+ /**
369
+ * One `listPage`, with the read generation and observation instant captured
370
+ * in the SAME synchronous call so total/rows/version cannot straddle a write
371
+ * from this process. The progressive `items` view pins its cursor to this
372
+ * readVersion and restarts if a later page observes a different one.
373
+ */
374
+ itemsPage(filter?: ListTasksPageFilter): ListTasksPage & {
375
+ readVersion: string;
376
+ observedAt: number;
377
+ };
378
+ /** The ledger's clock (injected in tests); progressive views stamp observedAt with it. */
379
+ nowMs(): number;
380
+ /**
381
+ * Run a read-only body inside a single DEFERRED transaction so every statement
382
+ * shares one snapshot. better-sqlite3 nests via SAVEPOINT, so this is safe even
383
+ * if a caller is already inside a transaction.
384
+ */
385
+ private readSnapshot;
386
+ /**
387
+ * A conservative change signature for the whole owner board, derived from
388
+ * existing columns - no snapshot table. COUNT catches inserts/deletes,
389
+ * SUM(revision) catches every owner update (each bumps revision), MAX(id)
390
+ * catches inserts, MAX(updated_at) is a coarse tie-breaker. It is NOT an
391
+ * immutable snapshot id: it only lets a paged read reject its own cursor once
392
+ * ANY owner row has changed, so a "whole board" claim never spans a write.
393
+ * System workorder churn is deliberately excluded (kind='owner').
394
+ */
395
+ readGeneration(): string;
396
+ /**
397
+ * Aggregate counts over the same owner predicate `listPage` filters by. Facets
398
+ * come from SQL GROUP BY (each partitions total); due buckets are computed in
399
+ * one JS pass over minimal rows using the SAME deriveTemporalState `items`
400
+ * uses, so an overview bucket and an item's temporal_state never disagree.
401
+ * readGeneration is captured in the same synchronous call as the counts.
402
+ */
403
+ overview(filter?: ListTasksFilter): OverviewResult;
404
+ private overviewInSnapshot;
320
405
  /** Internal bounded page for temporal reconciliation; excludes rows that can never be candidates. */
321
406
  listTemporalScanPage(input: {
322
407
  limit: number;
@@ -1 +1 @@
1
- {"version":3,"file":"task-ledger.d.ts","sourceRoot":"","sources":["../../src/operator/task-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,+BAA+B,EAC/B,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,aAAa,yFAUhB,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe,oCAAqC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAe5D,eAAO,MAAM,UAAU,8BAA+B,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,eAAe,yEAMlB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAQrD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,gFAAgF;IAChF,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+FAA+F;AAC/F,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,wFAAwF;IACxF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iGAAiG;IACjG,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,CAAC;IACnE;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,aAAa,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,6BAA6B,GACrC,QAAQ,GACR,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,6BAA6B,CAAC;IAC3C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,wBAAwB,CAAC;IACrC,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,wBAAwB,CAAC;IACrC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,WAAW,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/F;IACE,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACD;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,oEAAoE;AACpE,MAAM,MAAM,0BAA0B,GAClC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,WAAW,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACxD;IAAE,WAAW,EAAE,SAAS,CAAC;IAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAClE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,iFAAiF;IACjF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,KAAK,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAqID,qBAAa,UAAW,YAAW,UAAU;IAC3C,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,cAAc,EAAE,OAAO,GAAE,iBAAsB;IAS/D,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IA8BpB,+EAA+E;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CA2BN;IAKnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAMsD;IAEzF;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA0ErB,mEAAmE;IACnE,QAAQ,IAAI,YAAY,EAAE;IAI1B,oBAAoB,IAAI,MAAM;IAc9B,IAAI,CAAC,MAAM,GAAE,eAAoB,GAAG,UAAU,EAAE;IAiBhD;gGAC4F;IAC5F,OAAO,CAAC,kBAAkB;IAqB1B;;wFAEoF;IACpF,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,SAAS;IAkBxB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,GAAE,mBAAwB,GAAG,aAAa;IAkDzD,qGAAqG;IACrG,oBAAoB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,EAAE;IAqB7E,+EAA+E;IAC/E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAKtC,2EAA2E;IAC3E,OAAO,CAAC,UAAU;IAOlB,oFAAoF;IACpF,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAuB9D;;;;OAIG;IACH,oCAAoC,CAClC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC;QACD,SAAS,EAAE,cAAc,CAAC;QAC1B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACtD,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;KACtD;IAqFD,gCAAgC,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IActF;;;;OAIG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,SAAS,GAAG,WAAW,GAC5B,gBAAgB,GAAG,kBAAkB;IA6BxC;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,0BAA0B;IA2C3E,4BAA4B,CAC1B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;KAC3B,EACD,MAAM,EAAE,YAAY,GACnB,sBAAsB;IAsGzB,8BAA8B,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;KAC3B,EACD,MAAM,EAAE,YAAY,GACnB,wBAAwB;IAkH3B,2BAA2B,CACzB,WAAW,EAAE,MAAM,GAClB,sBAAsB,GAAG,wBAAwB,GAAG,IAAI;IAgF3D,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,sBAAsB;IA6C9B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,GAAE,YAAiB,GAAG,UAAU;IAkKrE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,gBAAgB;IA6BxB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,GAAE,YAAiB,GAAG,UAAU;IAajF;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAiDnC,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,mCAAmC;IA4K3C,OAAO,CAAC,kCAAkC;IA0C1C,OAAO,CAAC,yCAAyC;IA6BjD,OAAO,CAAC,kDAAkD;IAuB1D;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAerB;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,eAAe;IAU/D,6EAA6E;IAC7E,yBAAyB,CACvB,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,EAC5C,cAAc,EAAE,MAAM,GACrB,eAAe,GAAG,IAAI;IAWzB;;;;;;;;OAQG;IACH,yBAAyB,IAAI;QAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI;IAqBR;;;;;;;OAOG;IACH,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,eAAe;IAgEvB,yBAAyB,CACvB,KAAK,EAAE,8BAA8B,GACpC,+BAA+B;IAkJlC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAgC7E,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB;IAI/D,+BAA+B,CAAC,eAAe,EAAE,mBAAmB,GAAG,mBAAmB;IAM1F;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,GAAE,WAAgB,GAAG,YAAY,EAAE;IAIpD,oFAAoF;IACpF,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOpD,oFAAoF;IACpF,gBAAgB,CAAC,KAAK,EAAE;QACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI;IAgBR,yFAAyF;IACzF,mBAAmB,CAAC,KAAK,EAAE;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;KAC9C,GAAG,IAAI;IAkBR,wFAAwF;IACxF,gBAAgB,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;QAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,IAAI;IAkBR;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;QAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,IAAI;IAkBR;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,SAAI,GAAG,MAAM,EAAE;IA4BnE,+DAA+D;IAC/D,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,cAAc;IAI3E,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAoDlE;;;;;OAKG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB;IA6H/D,mBAAmB,CACjB,eAAe,EAAE,mBAAmB,EACpC,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,2BAA2B,EACrC,GAAG,GAAE,MAAmB,GACvB,qBAAqB;IAmOxB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAqB5E,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAoBjE,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,UAAO,GAChB,yBAAyB;IAqD5B,OAAO,CAAC,0CAA0C;IAuBlD,2FAA2F;IAC3F,+BAA+B,IAAI,MAAM;IA4BzC,gFAAgF;IAChF,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAsB/C,+EAA+E;IAC/E,wBAAwB,IAAI,eAAe,EAAE;IA4D7C,OAAO,CAAC,qCAAqC;IA6B7C,OAAO,CAAC,qCAAqC;IAiB7C,4BAA4B,CAC1B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI;IAWP,OAAO,CAAC,+BAA+B;IAgCvC;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,2BAA2B;IAgDnC,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,+BAA+B;IAuEvC,OAAO,CAAC,4BAA4B;IAkBpC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;IACH,kBAAkB,IAAI,eAAe,GAAG,IAAI;IAgC5C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IA6BtE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAInC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/C,sBAAsB,IAAI,MAAM;IAWhC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM;IAoBjD,0BAA0B,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAc1E,kFAAkF;IAClF,eAAe,IAAI,eAAe,EAAE;IAWpC;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,GAAG,MAAM;IAmBzE,wFAAwF;IACxF,cAAc,IAAI,KAAK,CAAC;QACtB,QAAQ,EAAE,aAAa,CAAC;QACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;IAiCF,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,cAAc;IAmCtB,yFAAyF;IACzF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IAO7D,OAAO,CAAC,kBAAkB;IAO1B,+EAA+E;IAC/E,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAUtC"}
1
+ {"version":3,"file":"task-ledger.d.ts","sourceRoot":"","sources":["../../src/operator/task-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,+BAA+B,EAC/B,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,aAAa,yFAUhB,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe,oCAAqC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAe5D,eAAO,MAAM,UAAU,8BAA+B,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,eAAe,yEAMlB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,eAAe,CAAC;AAQrD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,gFAAgF;IAChF,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+FAA+F;AAC/F,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,wFAAwF;IACxF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iGAAiG;IACjG,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,CAAC;IACnE;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,aAAa,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,6BAA6B,GACrC,QAAQ,GACR,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,6BAA6B,CAAC;IAC3C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,wBAAwB,CAAC;IACrC,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,wBAAwB,CAAC;IACrC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,WAAW,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/F;IACE,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACD;IAAE,WAAW,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,oEAAoE;AACpE,MAAM,MAAM,0BAA0B,GAClC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,WAAW,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACxD;IAAE,WAAW,EAAE,SAAS,CAAC;IAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAClE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,iFAAiF;IACjF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;2FACuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,KAAK,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gGAAgG;IAChG,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,kEAAkE;IAClE,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAqID,qBAAa,UAAW,YAAW,UAAU;IAC3C,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,cAAc,EAAE,OAAO,GAAE,iBAAsB;IAS/D,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IA8BpB,+EAA+E;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CA2BN;IAKnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAMsD;IAEzF;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA0ErB,mEAAmE;IACnE,QAAQ,IAAI,YAAY,EAAE;IAI1B,oBAAoB,IAAI,MAAM;IAc9B,IAAI,CAAC,MAAM,GAAE,eAAoB,GAAG,UAAU,EAAE;IAiBhD;gGAC4F;IAC5F,OAAO,CAAC,kBAAkB;IAyC1B;;wFAEoF;IACpF,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,SAAS;IAkBxB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,GAAE,mBAAwB,GAAG,aAAa;IAkDzD;;;;;OAKG;IACH,SAAS,CAAC,MAAM,GAAE,mBAAwB,GAAG,aAAa,GAAG;QAC3D,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB;IAaD,0FAA0F;IAC1F,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;;;OAQG;IACH,cAAc,IAAI,MAAM;IAcxB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,GAAE,eAAoB,GAAG,cAAc;IAItD,OAAO,CAAC,kBAAkB;IA8D1B,qGAAqG;IACrG,oBAAoB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,EAAE;IAqB7E,+EAA+E;IAC/E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAKtC,2EAA2E;IAC3E,OAAO,CAAC,UAAU;IAOlB,oFAAoF;IACpF,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAuB9D;;;;OAIG;IACH,oCAAoC,CAClC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC;QACD,SAAS,EAAE,cAAc,CAAC;QAC1B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACtD,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;KACtD;IAqFD,gCAAgC,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IActF;;;;OAIG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,SAAS,GAAG,WAAW,GAC5B,gBAAgB,GAAG,kBAAkB;IA6BxC;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,0BAA0B;IA2C3E,4BAA4B,CAC1B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;KAC3B,EACD,MAAM,EAAE,YAAY,GACnB,sBAAsB;IAsGzB,8BAA8B,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;KAC3B,EACD,MAAM,EAAE,YAAY,GACnB,wBAAwB;IAkH3B,2BAA2B,CACzB,WAAW,EAAE,MAAM,GAClB,sBAAsB,GAAG,wBAAwB,GAAG,IAAI;IAgF3D,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,sBAAsB;IA6C9B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,GAAE,YAAiB,GAAG,UAAU;IAkKrE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,gBAAgB;IA6BxB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,GAAE,YAAiB,GAAG,UAAU;IAajF;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAiDnC,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,mCAAmC;IA4K3C,OAAO,CAAC,kCAAkC;IA0C1C,OAAO,CAAC,yCAAyC;IA6BjD,OAAO,CAAC,kDAAkD;IAuB1D;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAerB;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,eAAe;IAU/D,6EAA6E;IAC7E,yBAAyB,CACvB,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,EAC5C,cAAc,EAAE,MAAM,GACrB,eAAe,GAAG,IAAI;IAWzB;;;;;;;;OAQG;IACH,yBAAyB,IAAI;QAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI;IAqBR;;;;;;;OAOG;IACH,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,eAAe;IAgEvB,yBAAyB,CACvB,KAAK,EAAE,8BAA8B,GACpC,+BAA+B;IAkJlC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAgC7E,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB;IAI/D,+BAA+B,CAAC,eAAe,EAAE,mBAAmB,GAAG,mBAAmB;IAM1F;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,GAAE,WAAgB,GAAG,YAAY,EAAE;IAIpD,oFAAoF;IACpF,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOpD,oFAAoF;IACpF,gBAAgB,CAAC,KAAK,EAAE;QACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI;IAgBR,yFAAyF;IACzF,mBAAmB,CAAC,KAAK,EAAE;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;KAC9C,GAAG,IAAI;IAkBR,wFAAwF;IACxF,gBAAgB,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;QAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,IAAI;IAkBR;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;QAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,IAAI;IAkBR;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,SAAI,GAAG,MAAM,EAAE;IA4BnE,+DAA+D;IAC/D,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,cAAc;IAI3E,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAoDlE;;;;;OAKG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB;IA6H/D,mBAAmB,CACjB,eAAe,EAAE,mBAAmB,EACpC,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,2BAA2B,EACrC,GAAG,GAAE,MAAmB,GACvB,qBAAqB;IAmOxB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAqB5E,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAoBjE,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,UAAO,GAChB,yBAAyB;IAqD5B,OAAO,CAAC,0CAA0C;IAuBlD,2FAA2F;IAC3F,+BAA+B,IAAI,MAAM;IA4BzC,gFAAgF;IAChF,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAsB/C,+EAA+E;IAC/E,wBAAwB,IAAI,eAAe,EAAE;IA4D7C,OAAO,CAAC,qCAAqC;IA6B7C,OAAO,CAAC,qCAAqC;IAiB7C,4BAA4B,CAC1B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,oBAAoB,CAAC,EAAE,MAAM,GAC5B,IAAI;IAWP,OAAO,CAAC,+BAA+B;IAgCvC;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,2BAA2B;IAgDnC,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,+BAA+B;IAuEvC,OAAO,CAAC,4BAA4B;IAkBpC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;IACH,kBAAkB,IAAI,eAAe,GAAG,IAAI;IAgC5C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IA6BtE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAInC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/C,sBAAsB,IAAI,MAAM;IAWhC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM;IAoBjD,0BAA0B,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAc1E,kFAAkF;IAClF,eAAe,IAAI,eAAe,EAAE;IAWpC;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,GAAG,MAAM;IAmBzE,wFAAwF;IACxF,cAAc,IAAI,KAAK,CAAC;QACtB,QAAQ,EAAE,aAAa,CAAC;QACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;IAiCF,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,cAAc;IAmCtB,yFAAyF;IACzF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IAO7D,OAAO,CAAC,kBAAkB;IAO1B,+EAA+E;IAC/E,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAUtC"}
@@ -357,6 +357,26 @@ class TaskLedger {
357
357
  const like = `%${filter.search}%`;
358
358
  params.push(like, like, like);
359
359
  }
360
+ if (filter.assignee !== undefined) {
361
+ where.push('assignee = ?');
362
+ params.push(filter.assignee);
363
+ }
364
+ if (filter.priority !== undefined) {
365
+ where.push('priority = ?');
366
+ params.push(filter.priority);
367
+ }
368
+ if (filter.dueBeforeMs !== undefined) {
369
+ where.push('due_at IS NOT NULL AND due_at < ?');
370
+ params.push(filter.dueBeforeMs);
371
+ }
372
+ if (filter.dueAfterMs !== undefined) {
373
+ where.push('due_at IS NOT NULL AND due_at >= ?');
374
+ params.push(filter.dueAfterMs);
375
+ }
376
+ if (filter.updatedSinceMs !== undefined) {
377
+ where.push('updated_at >= ?');
378
+ params.push(filter.updatedSinceMs);
379
+ }
360
380
  return { where, params };
361
381
  }
362
382
  /** ORDER BY for both list() and listPage(); the trailing id makes it a TOTAL order,
@@ -432,6 +452,114 @@ class TaskLedger {
432
452
  nextCursor: hasMore && last ? encodeListCursor(TaskLedger.cursorFor(last, order)) : null,
433
453
  };
434
454
  }
455
+ /**
456
+ * One `listPage`, with the read generation and observation instant captured
457
+ * in the SAME synchronous call so total/rows/version cannot straddle a write
458
+ * from this process. The progressive `items` view pins its cursor to this
459
+ * readVersion and restarts if a later page observes a different one.
460
+ */
461
+ itemsPage(filter = {}) {
462
+ // One DEFERRED read transaction: the generation, the total and the rows all
463
+ // read the SAME SQLite snapshot, so another connection committing between the
464
+ // statements cannot make the returned readVersion disagree with the page it
465
+ // describes. Synchronous JS alone is not a cross-connection snapshot.
466
+ return this.readSnapshot(() => {
467
+ const observedAt = this.now();
468
+ const readVersion = this.readGeneration();
469
+ const page = this.listPage(filter);
470
+ return { ...page, readVersion, observedAt };
471
+ });
472
+ }
473
+ /** The ledger's clock (injected in tests); progressive views stamp observedAt with it. */
474
+ nowMs() {
475
+ return this.now();
476
+ }
477
+ /**
478
+ * Run a read-only body inside a single DEFERRED transaction so every statement
479
+ * shares one snapshot. better-sqlite3 nests via SAVEPOINT, so this is safe even
480
+ * if a caller is already inside a transaction.
481
+ */
482
+ readSnapshot(body) {
483
+ const runner = this.db.transaction(body);
484
+ return runner();
485
+ }
486
+ /**
487
+ * A conservative change signature for the whole owner board, derived from
488
+ * existing columns - no snapshot table. COUNT catches inserts/deletes,
489
+ * SUM(revision) catches every owner update (each bumps revision), MAX(id)
490
+ * catches inserts, MAX(updated_at) is a coarse tie-breaker. It is NOT an
491
+ * immutable snapshot id: it only lets a paged read reject its own cursor once
492
+ * ANY owner row has changed, so a "whole board" claim never spans a write.
493
+ * System workorder churn is deliberately excluded (kind='owner').
494
+ */
495
+ readGeneration() {
496
+ const row = this.db
497
+ .prepare(`SELECT COUNT(*) AS c, COALESCE(SUM(revision), 0) AS r,
498
+ COALESCE(MAX(id), 0) AS m, COALESCE(MAX(updated_at), 0) AS u
499
+ FROM operator_tasks WHERE kind = 'owner'`)
500
+ .get();
501
+ return (0, node_crypto_1.createHash)('sha256')
502
+ .update(`${row.c}:${row.r}:${row.m}:${row.u}`)
503
+ .digest('base64url')
504
+ .slice(0, 22);
505
+ }
506
+ /**
507
+ * Aggregate counts over the same owner predicate `listPage` filters by. Facets
508
+ * come from SQL GROUP BY (each partitions total); due buckets are computed in
509
+ * one JS pass over minimal rows using the SAME deriveTemporalState `items`
510
+ * uses, so an overview bucket and an item's temporal_state never disagree.
511
+ * readGeneration is captured in the same synchronous call as the counts.
512
+ */
513
+ overview(filter = {}) {
514
+ return this.readSnapshot(() => this.overviewInSnapshot(filter));
515
+ }
516
+ overviewInSnapshot(filter) {
517
+ // One captured time for every derived due bucket; one snapshot for every count.
518
+ const now = this.now();
519
+ const readVersion = this.readGeneration();
520
+ const { where, params } = this.buildListPredicate(filter);
521
+ const whereSql = where.join(' AND ');
522
+ const groupBy = (column) => this.db
523
+ .prepare(`SELECT ${column} AS key, COUNT(*) AS count FROM operator_tasks
524
+ WHERE ${whereSql} GROUP BY ${column}`)
525
+ .all(...params);
526
+ const total = this.db
527
+ .prepare(`SELECT COUNT(*) AS total FROM operator_tasks WHERE ${whereSql}`)
528
+ .get(...params).total;
529
+ const status = {};
530
+ for (const row of groupBy('status'))
531
+ status[String(row.key)] = row.count;
532
+ const priority = {};
533
+ for (const row of groupBy('priority'))
534
+ priority[String(row.key)] = row.count;
535
+ const channels = groupBy('source_channel').map((row) => ({
536
+ channel: row.key,
537
+ count: row.count,
538
+ }));
539
+ const assignees = groupBy('assignee').map((row) => ({ assignee: row.key, count: row.count }));
540
+ const due = { missing: 0, overdue: 0, upcoming: 0, closed: 0 };
541
+ const rows = this.db
542
+ .prepare(`SELECT status, due_at, deadline, deadline_offset_minutes
543
+ FROM operator_tasks WHERE ${whereSql}`)
544
+ .all(...params);
545
+ for (const row of rows) {
546
+ const state = (0, task_temporal_js_1.deriveTemporalState)({
547
+ status: row.status,
548
+ dueAt: row.due_at,
549
+ deadlineIso: row.deadline,
550
+ deadlineOffsetMinutes: row.deadline_offset_minutes,
551
+ }, now, this.timeZone);
552
+ if (state === 'closed')
553
+ due.closed += 1;
554
+ else if (state === 'unscheduled')
555
+ due.missing += 1;
556
+ else if (state === 'exact_overdue' || state === 'date_overdue')
557
+ due.overdue += 1;
558
+ else
559
+ due.upcoming += 1;
560
+ }
561
+ return { total, observedAt: now, readVersion, status, priority, channels, assignees, due };
562
+ }
435
563
  /** Internal bounded page for temporal reconciliation; excludes rows that can never be candidates. */
436
564
  listTemporalScanPage(input) {
437
565
  const rawLimit = Number(input.limit);