agent-working-memory 0.9.1 → 0.11.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 (80) hide show
  1. package/README.md +89 -19
  2. package/dist/adapters/common.d.ts.map +1 -1
  3. package/dist/adapters/common.js +5 -1
  4. package/dist/adapters/common.js.map +1 -1
  5. package/dist/api/routes.d.ts.map +1 -1
  6. package/dist/api/routes.js +2 -1
  7. package/dist/api/routes.js.map +1 -1
  8. package/dist/cli/migrate.js +29 -29
  9. package/dist/cli.js +405 -224
  10. package/dist/cli.js.map +1 -1
  11. package/dist/coordination/circuit-breaker.js +23 -23
  12. package/dist/core/salience.d.ts.map +1 -1
  13. package/dist/core/salience.js +10 -1
  14. package/dist/core/salience.js.map +1 -1
  15. package/dist/core/write-pipeline.d.ts.map +1 -1
  16. package/dist/core/write-pipeline.js +5 -1
  17. package/dist/core/write-pipeline.js.map +1 -1
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/mcp.js +50 -3
  21. package/dist/mcp.js.map +1 -1
  22. package/dist/onboard/index.d.ts +68 -0
  23. package/dist/onboard/index.d.ts.map +1 -0
  24. package/dist/onboard/index.js +265 -0
  25. package/dist/onboard/index.js.map +1 -0
  26. package/dist/storage/factory.d.ts +1 -1
  27. package/dist/storage/factory.d.ts.map +1 -1
  28. package/dist/storage/factory.js +16 -2
  29. package/dist/storage/factory.js.map +1 -1
  30. package/dist/storage/pglite-schema.js +143 -143
  31. package/dist/storage/pglite.d.ts.map +1 -1
  32. package/dist/storage/pglite.js +8 -0
  33. package/dist/storage/pglite.js.map +1 -1
  34. package/dist/storage/postgres.d.ts +228 -0
  35. package/dist/storage/postgres.d.ts.map +1 -0
  36. package/dist/storage/postgres.js +1221 -0
  37. package/dist/storage/postgres.js.map +1 -0
  38. package/dist/version.d.ts +2 -0
  39. package/dist/version.d.ts.map +1 -0
  40. package/dist/version.js +27 -0
  41. package/dist/version.js.map +1 -0
  42. package/package.json +11 -1
  43. package/src/adapters/common.ts +5 -1
  44. package/src/api/index.ts +3 -3
  45. package/src/api/routes.ts +2 -1
  46. package/src/cli/migrate.ts +307 -307
  47. package/src/cli.ts +342 -273
  48. package/src/coordination/circuit-breaker.ts +83 -83
  49. package/src/coordination/failure-modes.ts +50 -50
  50. package/src/core/decay.ts +63 -63
  51. package/src/core/embeddings.ts +110 -110
  52. package/src/core/index.ts +5 -5
  53. package/src/core/logger.ts +36 -36
  54. package/src/core/ml-worker-entry.ts +194 -194
  55. package/src/core/ml-worker.ts +281 -281
  56. package/src/core/query-expander.ts +122 -122
  57. package/src/core/reranker.ts +119 -119
  58. package/src/core/salience.ts +10 -1
  59. package/src/core/write-pipeline.ts +5 -1
  60. package/src/engine/confidence.ts +120 -120
  61. package/src/engine/consolidation-scheduler.ts +242 -242
  62. package/src/engine/eval.ts +102 -102
  63. package/src/engine/eviction.ts +101 -101
  64. package/src/engine/index.ts +8 -8
  65. package/src/engine/retraction.ts +366 -366
  66. package/src/engine/staging.ts +74 -74
  67. package/src/index.ts +2 -1
  68. package/src/mcp.ts +62 -3
  69. package/src/onboard/index.ts +298 -0
  70. package/src/storage/factory.ts +15 -3
  71. package/src/storage/index.ts +3 -3
  72. package/src/storage/pglite-schema.ts +166 -166
  73. package/src/storage/pglite.ts +9 -0
  74. package/src/storage/postgres.ts +1475 -0
  75. package/src/storage/store.ts +80 -80
  76. package/src/types/agent.ts +67 -67
  77. package/src/types/checkpoint.ts +46 -46
  78. package/src/types/eval.ts +100 -100
  79. package/src/types/index.ts +6 -6
  80. package/src/version.ts +26 -0
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Postgres-server-backed EngramStore (AWM 0.8.x — real-server backend for scale).
3
+ *
4
+ * A near-clone of the PGlite adapter (pglite.ts) over node-postgres (`pg`) +
5
+ * pgvector. Same SQL surface and the same `pglite-schema.ts` DDL — PGlite IS
6
+ * Postgres compiled to WASM, so the schema, placeholders ($1…), and row shapes
7
+ * are identical; only the driver and connection lifecycle differ. Selected via
8
+ * `AWM_STORE_BACKEND=postgres`, connection from `AWM_DATABASE_URL`.
9
+ *
10
+ * Driver differences handled here (vs. the embedded single-connection PGlite):
11
+ * - `pg.Pool` instead of an embedded WASM instance.
12
+ * - `ivfflat.probes` is a per-SESSION GUC; it's persisted once as a
13
+ * per-DATABASE default during bootstrap (before the pool opens), so every
14
+ * pooled connection inherits it at startup with no per-connection query.
15
+ * - Transactions must run on ONE client. `withTransaction` checks out a
16
+ * dedicated client and binds it to an AsyncLocalStorage scope; `this.q()`
17
+ * routes to that client only for queries issued inside the transaction's
18
+ * async context (so `fn()`'s store calls join the tx), else to the pool.
19
+ * Mirrors PGlite's single-connection serialization without sending unrelated
20
+ * concurrent queries to the tx client.
21
+ * - int8/numeric are coerced to JS numbers (pg returns them as strings by
22
+ * default) to match PGlite's number-returning behavior.
23
+ *
24
+ * The full IEngramStore contract is implemented as async methods, identical to
25
+ * the PGlite adapter.
26
+ */
27
+ import type { Engram, EngramCreate, EngramStage, Association, AssociationType, SearchQuery, ActivationEvent, StagingEvent, Episode, TaskStatus, TaskPriority, MemoryClass, ConsciousState, CheckpointRow } from '../types/index.js';
28
+ export declare class PostgresEngramStore {
29
+ private pool;
30
+ /**
31
+ * The transaction's dedicated client, scoped to the withTransaction() callback's
32
+ * async context. q() reads it via getStore() so ONLY queries issued from inside
33
+ * the transaction route to that client — background callers (the activation-flush
34
+ * timer, an overlapping recall) keep using the pool. A pg client serves one query
35
+ * at a time, so without this scoping a background query could collide with the
36
+ * in-flight tx query ("client is already executing a query"). PGlite sidestepped
37
+ * this by queuing on its single connection; the pool path needs explicit scoping.
38
+ */
39
+ private readonly txCtx;
40
+ private readyPromise;
41
+ private activationEventBuffer;
42
+ private activationFlushTimer;
43
+ private static readonly ACTIVATION_FLUSH_INTERVAL_MS;
44
+ private static readonly ACTIVATION_FLUSH_BATCH_SIZE;
45
+ /**
46
+ * @param connectionString Postgres URL (postgres://user:pass@host:port/db).
47
+ * Falls back to AWM_DATABASE_URL, then a localhost default. The PGlite
48
+ * adapter takes a directory path here; this one takes a connection string —
49
+ * that's the only constructor-signature difference.
50
+ */
51
+ constructor(connectionString?: string);
52
+ private init;
53
+ /**
54
+ * Single funnel for every data query. Routes to the tx client bound in the
55
+ * `txCtx` AsyncLocalStorage scope when called inside a withTransaction() callback
56
+ * (so inner store calls join the tx), else to the pool. Returns the same `{ rows }`
57
+ * shape the PGlite adapter relies on.
58
+ */
59
+ private q;
60
+ ready(): Promise<void>;
61
+ close(): Promise<void>;
62
+ /**
63
+ * Flush queued activation events as a single multi-row INSERT.
64
+ * Idempotent — safe to call when the buffer is empty.
65
+ */
66
+ private flushActivationEvents;
67
+ /**
68
+ * Async-aware transaction wrapper that matches IEngramStore.withTransaction.
69
+ *
70
+ * Checks out ONE dedicated client and binds it to the `txCtx` AsyncLocalStorage
71
+ * scope for the duration of `fn`, so every regular store method `fn` calls — they
72
+ * all funnel through `this.q()`, which reads `txCtx.getStore()` — routes to that
73
+ * same client and joins the transaction (a Pool would otherwise hand each query a
74
+ * different connection). Mirrors PGlite's single-connection serialization. Not
75
+ * re-entrant (no nested BEGIN), same as the PGlite adapter.
76
+ */
77
+ withTransaction<T>(fn: () => Promise<T>): Promise<T>;
78
+ createEngram(input: EngramCreate & {
79
+ id?: string;
80
+ }): Promise<Engram>;
81
+ getEngram(id: string): Promise<Engram | null>;
82
+ getEngramsByAgent(agentId: string, stage?: EngramStage, includeRetracted?: boolean): Promise<Engram[]>;
83
+ getEngramsByAgentSlim(agentId: string, stage?: EngramStage, includeRetracted?: boolean): Promise<Array<{
84
+ id: string;
85
+ concept: string;
86
+ embedding: number[] | null;
87
+ }>>;
88
+ getEngramsByAgentsSlim(agentIds: string[], stage?: EngramStage, includeRetracted?: boolean): Promise<Array<{
89
+ id: string;
90
+ concept: string;
91
+ embedding: number[] | null;
92
+ }>>;
93
+ getEngramsByIds(ids: string[]): Promise<Engram[]>;
94
+ getEngramsByAgents(agentIds: string[], stage?: EngramStage, includeRetracted?: boolean): Promise<Engram[]>;
95
+ getWorkspaceAgentIds(agentId: string, workspace: string): Promise<string[]>;
96
+ touchEngram(id: string): Promise<void>;
97
+ updateStage(id: string, stage: EngramStage): Promise<void>;
98
+ /**
99
+ * Replace an engram's content. Used by the fade phase of consolidation
100
+ * (Paper 1: storage degradation) to coarsen un-recalled memories.
101
+ * The FTS trigger (BEFORE INSERT OR UPDATE OF concept, content, tags)
102
+ * automatically refreshes the tsvector index with the new content.
103
+ */
104
+ updateContent(id: string, content: string): Promise<void>;
105
+ updateConfidence(id: string, confidence: number): Promise<void>;
106
+ updateEmbedding(id: string, embedding: number[], modelId?: string): Promise<void>;
107
+ retractEngram(id: string, retractedBy: string | null): Promise<void>;
108
+ deleteEngram(id: string): Promise<void>;
109
+ /**
110
+ * Time warp - shift all timestamps backward by ms milliseconds.
111
+ * Used for testing decay-dependent behavior.
112
+ */
113
+ timeWarp(agentId: string, ms: number): Promise<number>;
114
+ getLatestEngram(agentId: string, excludeId?: string): Promise<Engram | null>;
115
+ searchByVector(agentId: string, vec: number[], limit?: number): Promise<Array<{
116
+ engram: Engram;
117
+ distance: number;
118
+ }>>;
119
+ searchBM25(agentId: string, query: string, limit?: number): Promise<Engram[]>;
120
+ searchBM25WithRank(agentId: string, query: string, limit?: number): Promise<Array<{
121
+ engram: Engram;
122
+ bm25Score: number;
123
+ }>>;
124
+ searchBM25WithRankMultiAgent(agentIds: string[], query: string, limit?: number): Promise<Array<{
125
+ engram: Engram;
126
+ bm25Score: number;
127
+ }>>;
128
+ /** Deterministic search (no vector or BM25 ranking — for diagnostic / structural queries). */
129
+ search(query: SearchQuery): Promise<Engram[]>;
130
+ updateTaskStatus(id: string, status: TaskStatus): Promise<void>;
131
+ updateTaskPriority(id: string, priority: TaskPriority): Promise<void>;
132
+ updateBlockedBy(id: string, blockedBy: string | null): Promise<void>;
133
+ getTasks(agentId: string, status?: TaskStatus): Promise<Engram[]>;
134
+ getNextTask(agentId: string): Promise<Engram | null>;
135
+ supersedeEngram(oldId: string, newId: string): Promise<void>;
136
+ findActiveMatchByConcept(agentId: string, concept: string, requiredTags?: string[]): Promise<Engram | null>;
137
+ isSuperseded(id: string): Promise<boolean>;
138
+ updateMemoryClass(id: string, memoryClass: MemoryClass): Promise<void>;
139
+ updateTags(id: string, tags: string[]): Promise<void>;
140
+ upsertAssociation(fromId: string, toId: string, weight: number, type?: AssociationType, confidence?: number): Promise<Association>;
141
+ getAssociation(fromId: string, toId: string): Promise<Association | null>;
142
+ getAssociationsFor(engramId: string): Promise<Association[]>;
143
+ getAssociationStatsForBatch(engramIds: string[]): Promise<Map<string, {
144
+ count: number;
145
+ sumWeight: number;
146
+ }>>;
147
+ getAssociationsForBatch(engramIds: string[]): Promise<Map<string, Association[]>>;
148
+ getOutgoingAssociations(engramId: string): Promise<Association[]>;
149
+ countAssociationsFor(engramId: string): Promise<number>;
150
+ getWeakestAssociation(engramId: string): Promise<Association | null>;
151
+ deleteAssociation(id: string): Promise<void>;
152
+ getAllAssociations(agentId: string): Promise<Association[]>;
153
+ getEvictionCandidates(agentId: string, limit: number): Promise<Engram[]>;
154
+ getActiveCount(agentId: string): Promise<number>;
155
+ getStagingCount(agentId: string): Promise<number>;
156
+ getExpiredStaging(): Promise<Engram[]>;
157
+ logActivationEvent(event: ActivationEvent): Promise<void>;
158
+ logStagingEvent(event: StagingEvent): Promise<void>;
159
+ logRetrievalFeedback(activationEventId: string | null, engramId: string, useful: boolean, context: string): Promise<void>;
160
+ getRetrievalPrecision(agentId: string, windowHours?: number): Promise<number>;
161
+ getStagingMetrics(agentId: string): Promise<{
162
+ promoted: number;
163
+ discarded: number;
164
+ expired: number;
165
+ }>;
166
+ getActivationStats(agentId: string, windowHours?: number): Promise<{
167
+ count: number;
168
+ avgLatencyMs: number;
169
+ p95LatencyMs: number;
170
+ }>;
171
+ getConsolidatedCount(agentId: string): Promise<number>;
172
+ createEpisode(input: {
173
+ agentId: string;
174
+ label: string;
175
+ embedding?: number[];
176
+ }): Promise<Episode>;
177
+ getEpisode(id: string): Promise<Episode | null>;
178
+ getEpisodesByAgent(agentId: string): Promise<Episode[]>;
179
+ getActiveEpisode(agentId: string, windowMs?: number): Promise<Episode | null>;
180
+ addEngramToEpisode(engramId: string, episodeId: string): Promise<void>;
181
+ getEngramsByEpisode(episodeId: string): Promise<Engram[]>;
182
+ updateEpisodeEmbedding(id: string, embedding: number[]): Promise<void>;
183
+ getEpisodeCount(agentId: string): Promise<number>;
184
+ findEngramsByTags(agentId: string, tags: string[], excludeIds?: Set<string>): Promise<Engram[]>;
185
+ updateAutoCheckpointWrite(agentId: string, engramId: string): Promise<void>;
186
+ updateAutoCheckpointRecall(agentId: string, context: string, engramIds: string[]): Promise<void>;
187
+ touchActivity(agentId: string): Promise<void>;
188
+ saveCheckpoint(agentId: string, state: ConsciousState): Promise<void>;
189
+ getCheckpoint(agentId: string): Promise<CheckpointRow | null>;
190
+ markConsolidation(agentId: string, mini: boolean): Promise<void>;
191
+ getActiveAgents(): Promise<Array<{
192
+ agentId: string;
193
+ lastActivityAt: Date;
194
+ writeCount: number;
195
+ recallCount: number;
196
+ lastConsolidationAt: Date | null;
197
+ }>>;
198
+ getConsolidationCycleCount(agentId: string): Promise<number>;
199
+ getLatestByTag(opts: {
200
+ agentId: string;
201
+ tagKeyPrefix: string;
202
+ scopeTagsAll?: string[];
203
+ retracted?: boolean;
204
+ sortBy?: 'createdAt' | 'sequence';
205
+ limit?: number;
206
+ }): Promise<Engram[]>;
207
+ getTopBy(opts: {
208
+ agentId: string;
209
+ sortField: string;
210
+ order: 'asc' | 'desc';
211
+ filterTagsAll?: string[];
212
+ filterTagsAny?: string[];
213
+ filterTagsNone?: string[];
214
+ limit?: number;
215
+ retracted?: boolean;
216
+ }): Promise<Engram[]>;
217
+ /**
218
+ * Allocate the next sequence number for an agent (a soft ordering aid, not a
219
+ * hard uniqueness guarantee). Runs the read inside withTransaction() to mirror
220
+ * the PGlite adapter, but note the caller's INSERT happens AFTER this returns —
221
+ * so two concurrent allocations can read the same MAX and collide. This
222
+ * read-then-external-insert window is identical in the PGlite/SQLite paths; if a
223
+ * hard guarantee is ever needed, switch to `SELECT … FOR UPDATE` or a DB sequence.
224
+ */
225
+ allocateNextSequence(agentId: string): Promise<number>;
226
+ }
227
+ export declare const POSTGRES_DIMENSIONS: number;
228
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/storage/postgres.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,KAAK,EACV,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAC/D,WAAW,EAAE,eAAe,EAAE,YAAY,EAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAC9C,cAAc,EAAE,aAAa,EAC9B,MAAM,mBAAmB,CAAC;AAqI3B,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAQ;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,YAAY,CAAgB;IAMpC,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,oBAAoB,CAA+C;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAS;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAO;IAE1D;;;;;OAKG;gBACS,gBAAgB,CAAC,EAAE,MAAM;YAKvB,IAAI;IAyDlB;;;;;OAKG;IACH,OAAO,CAAC,CAAC;IAIH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;OAGG;YACW,qBAAqB;IA6BnC;;;;;;;;;OASG;IACG,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBpD,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmDpE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO7C,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAc7G,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,WAAW,EACnB,gBAAgB,GAAE,OAAe,GAChC,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAiBxE,sBAAsB,CAC1B,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,CAAC,EAAE,WAAW,EACnB,gBAAgB,GAAE,OAAe,GAChC,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAmBxE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUjD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAejH,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsB3E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE;;;;;OAKG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAetD,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB5E,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAmBxH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjF,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAsB7H,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAmBhJ,8FAA8F;IACxF,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0D7C,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBjE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBpD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,wBAAwB,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBnB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,iBAAiB,CACrB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC5C,IAAI,GAAE,eAA2B,EAAE,UAAU,GAAE,MAAY,GAC1D,OAAO,CAAC,WAAW,CAAC;IAmBjB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IASzE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAS5D,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAuB5G,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IA0BjF,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IASjE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASvD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IASpE,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAe3D,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcxE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAShD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASjD,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAetC,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzH,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBjF,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBrG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBrI,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAatD,aAAa,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAchG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAM/C,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASvD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAUvF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASzD,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAajD,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB/F,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3E,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAerE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA0B7D,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAYvJ,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5D,cAAc,CAAC,IAAI,EAAE;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA4Bf,QAAQ,CAAC,IAAI,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2CrB;;;;;;;OAOG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAW7D;AAED,eAAO,MAAM,mBAAmB,QAA2B,CAAC"}