memax-cli 0.1.0-alpha.17 → 0.1.0-alpha.1890
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/skills/memax-memory/SKILL.md +48 -29
- package/dist/commands/agent-configs.d.ts +41 -0
- package/dist/commands/agent-configs.d.ts.map +1 -0
- package/dist/commands/agent-configs.js +1290 -0
- package/dist/commands/agent-configs.js.map +1 -0
- package/dist/commands/agent-configs.test.d.ts +2 -0
- package/dist/commands/agent-configs.test.d.ts.map +1 -0
- package/dist/commands/agent-configs.test.js +122 -0
- package/dist/commands/agent-configs.test.js.map +1 -0
- package/dist/commands/agent-sessions.d.ts +74 -0
- package/dist/commands/agent-sessions.d.ts.map +1 -0
- package/dist/commands/agent-sessions.js +1513 -0
- package/dist/commands/agent-sessions.js.map +1 -0
- package/dist/commands/agent-sessions.test.d.ts +2 -0
- package/dist/commands/agent-sessions.test.d.ts.map +1 -0
- package/dist/commands/agent-sessions.test.js +255 -0
- package/dist/commands/agent-sessions.test.js.map +1 -0
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +36 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/ask.d.ts +15 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +483 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/auth.d.ts +7 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +98 -10
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/capture.d.ts +2 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +15 -7
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +13 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/delete.d.ts +2 -0
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +13 -4
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/dreams.d.ts +22 -0
- package/dist/commands/dreams.d.ts.map +1 -0
- package/dist/commands/dreams.js +251 -0
- package/dist/commands/dreams.js.map +1 -0
- package/dist/commands/dreams.test.d.ts +2 -0
- package/dist/commands/dreams.test.d.ts.map +1 -0
- package/dist/commands/dreams.test.js +39 -0
- package/dist/commands/dreams.test.js.map +1 -0
- package/dist/commands/hook.d.ts +2 -0
- package/dist/commands/hook.d.ts.map +1 -1
- package/dist/commands/hook.js +25 -103
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/hub.d.ts +34 -1
- package/dist/commands/hub.d.ts.map +1 -1
- package/dist/commands/hub.js +307 -12
- package/dist/commands/hub.js.map +1 -1
- package/dist/commands/hub.test.d.ts +2 -0
- package/dist/commands/hub.test.d.ts.map +1 -0
- package/dist/commands/hub.test.js +62 -0
- package/dist/commands/hub.test.js.map +1 -0
- package/dist/commands/import.d.ts +13 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +257 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/import.test.d.ts +2 -0
- package/dist/commands/import.test.d.ts.map +1 -0
- package/dist/commands/import.test.js +11 -0
- package/dist/commands/import.test.js.map +1 -0
- package/dist/commands/list.d.ts +7 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +109 -32
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/list.test.d.ts +2 -0
- package/dist/commands/list.test.d.ts.map +1 -0
- package/dist/commands/list.test.js +20 -0
- package/dist/commands/list.test.js.map +1 -0
- package/dist/commands/login.d.ts +7 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +65 -24
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +291 -71
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/push.d.ts +5 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +39 -13
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/recall.d.ts +10 -1
- package/dist/commands/recall.d.ts.map +1 -1
- package/dist/commands/recall.js +225 -44
- package/dist/commands/recall.js.map +1 -1
- package/dist/commands/recall.test.d.ts +2 -0
- package/dist/commands/recall.test.d.ts.map +1 -0
- package/dist/commands/recall.test.js +31 -0
- package/dist/commands/recall.test.js.map +1 -0
- package/dist/commands/setup-hooks.d.ts +7 -6
- package/dist/commands/setup-hooks.d.ts.map +1 -1
- package/dist/commands/setup-hooks.js +39 -30
- package/dist/commands/setup-hooks.js.map +1 -1
- package/dist/commands/setup-instructions.js +1 -1
- package/dist/commands/setup-mcp.d.ts +28 -2
- package/dist/commands/setup-mcp.d.ts.map +1 -1
- package/dist/commands/setup-mcp.js +194 -56
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/commands/setup-types.d.ts +13 -0
- package/dist/commands/setup-types.d.ts.map +1 -1
- package/dist/commands/setup-types.js +10 -10
- package/dist/commands/setup-types.js.map +1 -1
- package/dist/commands/setup.d.ts +7 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +170 -34
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/show.d.ts +5 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +31 -9
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/topic.d.ts +32 -0
- package/dist/commands/topic.d.ts.map +1 -0
- package/dist/commands/topic.js +265 -0
- package/dist/commands/topic.js.map +1 -0
- package/dist/commands/topic.test.d.ts +2 -0
- package/dist/commands/topic.test.d.ts.map +1 -0
- package/dist/commands/topic.test.js +114 -0
- package/dist/commands/topic.test.js.map +1 -0
- package/dist/index.js +35 -158
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts +10 -0
- package/dist/lib/client.d.ts.map +1 -0
- package/dist/lib/client.js +104 -0
- package/dist/lib/client.js.map +1 -0
- package/dist/lib/client.test.d.ts +2 -0
- package/dist/lib/client.test.d.ts.map +1 -0
- package/dist/lib/client.test.js +44 -0
- package/dist/lib/client.test.js.map +1 -0
- package/dist/lib/config.d.ts +43 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +72 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/credentials.d.ts +3 -0
- package/dist/lib/credentials.d.ts.map +1 -1
- package/dist/lib/credentials.js +24 -2
- package/dist/lib/credentials.js.map +1 -1
- package/dist/lib/hubs.d.ts +7 -0
- package/dist/lib/hubs.d.ts.map +1 -0
- package/dist/lib/hubs.js +33 -0
- package/dist/lib/hubs.js.map +1 -0
- package/dist/lib/hubs.test.d.ts +2 -0
- package/dist/lib/hubs.test.d.ts.map +1 -0
- package/dist/lib/hubs.test.js +58 -0
- package/dist/lib/hubs.test.js.map +1 -0
- package/dist/lib/project-context.d.ts +52 -1
- package/dist/lib/project-context.d.ts.map +1 -1
- package/dist/lib/project-context.js +197 -30
- package/dist/lib/project-context.js.map +1 -1
- package/dist/lib/project-context.test.d.ts +2 -0
- package/dist/lib/project-context.test.d.ts.map +1 -0
- package/dist/lib/project-context.test.js +75 -0
- package/dist/lib/project-context.test.js.map +1 -0
- package/dist/lib/trash.d.ts +6 -0
- package/dist/lib/trash.d.ts.map +1 -0
- package/dist/lib/trash.js +28 -0
- package/dist/lib/trash.js.map +1 -0
- package/package.json +13 -13
- package/dist/commands/sync.d.ts +0 -14
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -623
- package/dist/commands/sync.js.map +0 -1
- package/dist/lib/api.d.ts +0 -6
- package/dist/lib/api.d.ts.map +0 -1
- package/dist/lib/api.js +0 -150
- package/dist/lib/api.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memax-memory
|
|
3
|
-
description: Persistent memory layer using Memax. Gives Claude the ability to recall past context and store new learnings across sessions via the Memax MCP tools (memax_recall, memax_push, memax_get,
|
|
3
|
+
description: Persistent memory layer using Memax. Gives Claude the ability to recall past context and store new learnings across sessions via the Memax MCP tools (memax_recall, memax_push, memax_get, memax_list, memax_forget, memax_capture, memax_topics, memax_hubs, memax_hub_members). Use this skill at the START of every conversation to do a light context check, and throughout the session whenever the user references past decisions, project context, architecture, or conventions — or whenever Claude discovers something worth remembering for future sessions. Also trigger when the user explicitly asks to remember or forget something, or when working on a project where prior context would prevent redundant questions. If Memax MCP tools are available, this skill applies.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Memax Memory — Persistent Context for Claude
|
|
@@ -11,14 +11,17 @@ Your job is to use it proactively. Don't wait for the user to say "check Memax"
|
|
|
11
11
|
|
|
12
12
|
## Tools
|
|
13
13
|
|
|
14
|
-
| Tool
|
|
15
|
-
|
|
|
16
|
-
| `memax_recall`
|
|
17
|
-
| `memax_push`
|
|
18
|
-
| `memax_get`
|
|
19
|
-
| `
|
|
20
|
-
| `memax_forget`
|
|
21
|
-
| `memax_capture`
|
|
14
|
+
| Tool | Purpose |
|
|
15
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
16
|
+
| `memax_recall` | Semantic search — find memories relevant to a natural language query across all accessible hubs |
|
|
17
|
+
| `memax_push` | Save a new memory — supports `hub_id` to target a specific hub, `hub_reason` (required for team hubs), and automatic classification for retrieval |
|
|
18
|
+
| `memax_get` | Read the full content of a specific memory by ID |
|
|
19
|
+
| `memax_list` | Browse/list memories with pagination and sorting |
|
|
20
|
+
| `memax_forget` | Delete a memory by ID |
|
|
21
|
+
| `memax_capture` | Extract and save key decisions, learnings from a session summary |
|
|
22
|
+
| `memax_topics` | Browse the topic tree, or list memories within a specific topic |
|
|
23
|
+
| `memax_hubs` | List hubs the user can access (IDs, slugs, roles, memory counts) |
|
|
24
|
+
| `memax_hub_members` | List members of a specific hub |
|
|
22
25
|
|
|
23
26
|
## When to recall (read)
|
|
24
27
|
|
|
@@ -39,7 +42,7 @@ Go deeper when you notice:
|
|
|
39
42
|
- Architecture or convention questions: "how do we handle X," "what's our pattern for Y"
|
|
40
43
|
- The user correcting you on something that suggests prior context exists
|
|
41
44
|
|
|
42
|
-
For deeper recall, chain multiple calls: `memax_recall` to find relevant memories, then `memax_get` on specific IDs to read full details, or `
|
|
45
|
+
For deeper recall, chain multiple calls: `memax_recall` to find relevant memories, then `memax_get` on specific IDs to read full details, `memax_list` to browse recent memories, or `memax_topics` to explore the user's knowledge tree and find memories organized by topic.
|
|
43
46
|
|
|
44
47
|
### Don't over-recall
|
|
45
48
|
|
|
@@ -85,10 +88,10 @@ Include the _why_ behind decisions — rationale is the most valuable thing to r
|
|
|
85
88
|
|
|
86
89
|
### Push cadence
|
|
87
90
|
|
|
88
|
-
- Push
|
|
91
|
+
- Push when you reach a durable decision, solve a non-obvious problem, or learn something worth keeping across sessions
|
|
89
92
|
- If a conversation is heavy on decisions (e.g., architecture planning), you might push 3-5 memories
|
|
90
93
|
- For a routine task, zero pushes is fine — not every session produces lasting knowledge
|
|
91
|
-
-
|
|
94
|
+
- Routine progress and mid-task notes don't need to be pushed — save the signal, skip the noise. Memax handles deduplication on the server side, so don't worry about overlap with existing memories.
|
|
92
95
|
|
|
93
96
|
## Handling outdated information
|
|
94
97
|
|
|
@@ -96,22 +99,34 @@ If you recall a memory that looks outdated or contradicts what you're learning i
|
|
|
96
99
|
|
|
97
100
|
The exception: if the user explicitly asks you to delete something ("forget that we use Redis" or "remove the old deployment notes"), use `memax_forget` to honor the request.
|
|
98
101
|
|
|
99
|
-
##
|
|
102
|
+
## Classification
|
|
100
103
|
|
|
101
|
-
Memax
|
|
104
|
+
Memax classifies memories automatically using invisible retrieval axes. Do not pass taxonomy labels when pushing. Instead, write clear, self-contained content and use `hint` when extra context would help the server understand the memory.
|
|
102
105
|
|
|
103
|
-
|
|
104
|
-
| ----------- | ------------------------------------------------------ | -------------------------------------------- |
|
|
105
|
-
| `core` | Fundamental architecture, tech stack, core patterns | "API uses stdlib net/http, not Gin" |
|
|
106
|
-
| `process` | Workflows, deployment steps, development practices | "Deploy to Fly.io requires fly.toml rename" |
|
|
107
|
-
| `decisions` | Key choices with rationale (ADR-style) | "Chose River over BullMQ because..." |
|
|
108
|
-
| `reference` | Useful lookup info, configurations, external resources | "Neon connection pooling limit: 100" |
|
|
109
|
-
| `daily` | Working notes, debugging sessions, ephemeral context | "Auth timeout was caused by Neon cold start" |
|
|
110
|
-
| `personal` | User preferences, coding style, workflow habits | "User prefers terse responses, no summaries" |
|
|
106
|
+
Good hints are short and plain-language:
|
|
111
107
|
|
|
112
|
-
|
|
108
|
+
- "Architecture decision from today's auth review"
|
|
109
|
+
- "Runbook for staging deploy recovery"
|
|
110
|
+
- "Personal preference about code review style"
|
|
113
111
|
|
|
114
|
-
|
|
112
|
+
Use topics, tags, pins, and explicit forget/delete actions for user-facing organization and corrections. Retrieval searches across every hub the token can access, with active hub context used as a ranking boost rather than a hard boundary.
|
|
113
|
+
|
|
114
|
+
## Topics
|
|
115
|
+
|
|
116
|
+
Memax automatically organizes memories into a topic tree based on content. Use `memax_topics` to:
|
|
117
|
+
|
|
118
|
+
- **Browse the full tree** (no arguments) — returns all topics with memory counts, useful for understanding what the user's knowledge base covers
|
|
119
|
+
- **Drill into a topic** (pass `topic_id`) — returns the memories within that topic
|
|
120
|
+
|
|
121
|
+
Topics are great for structured exploration: "what do I know about deployment?" → browse topics → drill into the relevant one. This complements `memax_recall` (semantic search) with a more navigable, hierarchical view.
|
|
122
|
+
|
|
123
|
+
## Hubs
|
|
124
|
+
|
|
125
|
+
Users can have multiple hubs — a personal hub and shared team hubs. Use `memax_hubs` to list what's available. When pushing memories, you can optionally target a specific hub with `hub_id` and provide `hub_reason` to explain why the memory belongs there.
|
|
126
|
+
|
|
127
|
+
- `memax_recall` searches across **all accessible hubs** by default — no need to specify a hub for reading
|
|
128
|
+
- `memax_push` without `hub_id` saves to the user's personal hub
|
|
129
|
+
- `memax_hub_members` shows who has access to a given hub — useful when the user asks about team knowledge or shared context
|
|
115
130
|
|
|
116
131
|
## Behavior across environments
|
|
117
132
|
|
|
@@ -146,9 +161,13 @@ Don't push a "session summary" — push the individual insights that would be us
|
|
|
146
161
|
## Quick reference
|
|
147
162
|
|
|
148
163
|
```
|
|
149
|
-
Session start
|
|
150
|
-
Cue detected
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
164
|
+
Session start → memax_recall(topic from first message)
|
|
165
|
+
Cue detected → memax_recall(specific query) → memax_get(id) if needed
|
|
166
|
+
Browse structure → memax_topics() → memax_topics(topic_id) to drill in
|
|
167
|
+
Browse recent → memax_list(limit, cursor) with pagination
|
|
168
|
+
Check hubs → memax_hubs() → memax_hub_members(hub_id)
|
|
169
|
+
Important info → memax_push(clear, self-contained summary with rationale)
|
|
170
|
+
Team knowledge → memax_push(content, hub_id, hub_reason) to target a shared hub
|
|
171
|
+
User says forget → memax_forget(id)
|
|
172
|
+
Outdated memory → Just push the new version, Memax handles merging
|
|
154
173
|
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { type ProjectScope } from "../lib/project-context.js";
|
|
3
|
+
import type { Scope } from "memax-sdk";
|
|
4
|
+
export declare function syncAgentMemoryCommand(options?: SyncAgentOptions): Promise<void>;
|
|
5
|
+
export declare function listAgentConfigsCommand(): Promise<void>;
|
|
6
|
+
export declare function listDeletedAgentConfigsCommand(): Promise<void>;
|
|
7
|
+
export declare function restoreDeletedAgentConfigsCommand(): Promise<void>;
|
|
8
|
+
interface AgentConfigPlacement {
|
|
9
|
+
kind: "present" | "restorable" | "different_project" | "unresolved";
|
|
10
|
+
path?: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
}
|
|
13
|
+
interface ClassifyAgentConfigPlacementOptions extends ResolveAgentConfigWritePathOptions {
|
|
14
|
+
localByKey?: Map<string, AgentConfigLocation>;
|
|
15
|
+
}
|
|
16
|
+
export declare function classifyAgentConfigPlacement(agent: string, filePath: string, scope: Scope, options?: ClassifyAgentConfigPlacementOptions): AgentConfigPlacement;
|
|
17
|
+
export declare function doctorAgentConfigsCommand(): Promise<void>;
|
|
18
|
+
export declare function registerAgentConfigCommands(agentsCmd: Command): void;
|
|
19
|
+
export declare function deleteAgentConfigsCommand(): Promise<void>;
|
|
20
|
+
interface AgentConfigLocation {
|
|
21
|
+
agent: string;
|
|
22
|
+
label: string;
|
|
23
|
+
path: string;
|
|
24
|
+
filePath: string;
|
|
25
|
+
scope: Scope;
|
|
26
|
+
}
|
|
27
|
+
interface ResolveAgentConfigWritePathOptions {
|
|
28
|
+
cwd?: string;
|
|
29
|
+
home?: string;
|
|
30
|
+
currentProjectScope?: ProjectScope;
|
|
31
|
+
findClaudeProjectDir?: (scope: Scope) => string | null;
|
|
32
|
+
}
|
|
33
|
+
export declare function resolveAgentConfigWritePath(agent: string, filePath: string, scope: Scope, options?: ResolveAgentConfigWritePathOptions): string | null;
|
|
34
|
+
interface SyncAgentOptions {
|
|
35
|
+
push?: boolean;
|
|
36
|
+
pull?: boolean;
|
|
37
|
+
/** Skip conflicts silently (used by setup — conflicts can be resolved later via `memax agents sync`). */
|
|
38
|
+
skipConflicts?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=agent-configs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-configs.d.ts","sourceRoot":"","sources":["../../src/commands/agent-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAe,KAAK,EAAkB,MAAM,WAAW,CAAC;AAEpE,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwD7D;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCpE;AAED,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CAgHvE;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,mBAAmB,GAAG,YAAY,CAAC;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mCAAoC,SAAQ,kCAAkC;IACtF,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mCAAwC,GAChD,oBAAoB,CAkCtB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiK/D;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAsCpE;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsP/D;AAcD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,UAAU,kCAAkC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC;CACxD;AAiDD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,kCAAuC,GAC/C,MAAM,GAAG,IAAI,CA4Gf;AAkQD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yGAAyG;IACzG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
|