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.
Files changed (172) hide show
  1. package/assets/skills/memax-memory/SKILL.md +48 -29
  2. package/dist/commands/agent-configs.d.ts +41 -0
  3. package/dist/commands/agent-configs.d.ts.map +1 -0
  4. package/dist/commands/agent-configs.js +1290 -0
  5. package/dist/commands/agent-configs.js.map +1 -0
  6. package/dist/commands/agent-configs.test.d.ts +2 -0
  7. package/dist/commands/agent-configs.test.d.ts.map +1 -0
  8. package/dist/commands/agent-configs.test.js +122 -0
  9. package/dist/commands/agent-configs.test.js.map +1 -0
  10. package/dist/commands/agent-sessions.d.ts +74 -0
  11. package/dist/commands/agent-sessions.d.ts.map +1 -0
  12. package/dist/commands/agent-sessions.js +1513 -0
  13. package/dist/commands/agent-sessions.js.map +1 -0
  14. package/dist/commands/agent-sessions.test.d.ts +2 -0
  15. package/dist/commands/agent-sessions.test.d.ts.map +1 -0
  16. package/dist/commands/agent-sessions.test.js +255 -0
  17. package/dist/commands/agent-sessions.test.js.map +1 -0
  18. package/dist/commands/agents.d.ts +3 -0
  19. package/dist/commands/agents.d.ts.map +1 -0
  20. package/dist/commands/agents.js +36 -0
  21. package/dist/commands/agents.js.map +1 -0
  22. package/dist/commands/ask.d.ts +15 -0
  23. package/dist/commands/ask.d.ts.map +1 -0
  24. package/dist/commands/ask.js +483 -0
  25. package/dist/commands/ask.js.map +1 -0
  26. package/dist/commands/auth.d.ts +7 -1
  27. package/dist/commands/auth.d.ts.map +1 -1
  28. package/dist/commands/auth.js +98 -10
  29. package/dist/commands/auth.js.map +1 -1
  30. package/dist/commands/capture.d.ts +2 -0
  31. package/dist/commands/capture.d.ts.map +1 -1
  32. package/dist/commands/capture.js +15 -7
  33. package/dist/commands/capture.js.map +1 -1
  34. package/dist/commands/config.d.ts +2 -0
  35. package/dist/commands/config.d.ts.map +1 -1
  36. package/dist/commands/config.js +13 -0
  37. package/dist/commands/config.js.map +1 -1
  38. package/dist/commands/delete.d.ts +2 -0
  39. package/dist/commands/delete.d.ts.map +1 -1
  40. package/dist/commands/delete.js +13 -4
  41. package/dist/commands/delete.js.map +1 -1
  42. package/dist/commands/dreams.d.ts +22 -0
  43. package/dist/commands/dreams.d.ts.map +1 -0
  44. package/dist/commands/dreams.js +251 -0
  45. package/dist/commands/dreams.js.map +1 -0
  46. package/dist/commands/dreams.test.d.ts +2 -0
  47. package/dist/commands/dreams.test.d.ts.map +1 -0
  48. package/dist/commands/dreams.test.js +39 -0
  49. package/dist/commands/dreams.test.js.map +1 -0
  50. package/dist/commands/hook.d.ts +2 -0
  51. package/dist/commands/hook.d.ts.map +1 -1
  52. package/dist/commands/hook.js +25 -103
  53. package/dist/commands/hook.js.map +1 -1
  54. package/dist/commands/hub.d.ts +34 -1
  55. package/dist/commands/hub.d.ts.map +1 -1
  56. package/dist/commands/hub.js +307 -12
  57. package/dist/commands/hub.js.map +1 -1
  58. package/dist/commands/hub.test.d.ts +2 -0
  59. package/dist/commands/hub.test.d.ts.map +1 -0
  60. package/dist/commands/hub.test.js +62 -0
  61. package/dist/commands/hub.test.js.map +1 -0
  62. package/dist/commands/import.d.ts +13 -0
  63. package/dist/commands/import.d.ts.map +1 -0
  64. package/dist/commands/import.js +257 -0
  65. package/dist/commands/import.js.map +1 -0
  66. package/dist/commands/import.test.d.ts +2 -0
  67. package/dist/commands/import.test.d.ts.map +1 -0
  68. package/dist/commands/import.test.js +11 -0
  69. package/dist/commands/import.test.js.map +1 -0
  70. package/dist/commands/list.d.ts +7 -1
  71. package/dist/commands/list.d.ts.map +1 -1
  72. package/dist/commands/list.js +109 -32
  73. package/dist/commands/list.js.map +1 -1
  74. package/dist/commands/list.test.d.ts +2 -0
  75. package/dist/commands/list.test.d.ts.map +1 -0
  76. package/dist/commands/list.test.js +20 -0
  77. package/dist/commands/list.test.js.map +1 -0
  78. package/dist/commands/login.d.ts +7 -1
  79. package/dist/commands/login.d.ts.map +1 -1
  80. package/dist/commands/login.js +65 -24
  81. package/dist/commands/login.js.map +1 -1
  82. package/dist/commands/mcp.d.ts.map +1 -1
  83. package/dist/commands/mcp.js +291 -71
  84. package/dist/commands/mcp.js.map +1 -1
  85. package/dist/commands/push.d.ts +5 -1
  86. package/dist/commands/push.d.ts.map +1 -1
  87. package/dist/commands/push.js +39 -13
  88. package/dist/commands/push.js.map +1 -1
  89. package/dist/commands/recall.d.ts +10 -1
  90. package/dist/commands/recall.d.ts.map +1 -1
  91. package/dist/commands/recall.js +225 -44
  92. package/dist/commands/recall.js.map +1 -1
  93. package/dist/commands/recall.test.d.ts +2 -0
  94. package/dist/commands/recall.test.d.ts.map +1 -0
  95. package/dist/commands/recall.test.js +31 -0
  96. package/dist/commands/recall.test.js.map +1 -0
  97. package/dist/commands/setup-hooks.d.ts +7 -6
  98. package/dist/commands/setup-hooks.d.ts.map +1 -1
  99. package/dist/commands/setup-hooks.js +39 -30
  100. package/dist/commands/setup-hooks.js.map +1 -1
  101. package/dist/commands/setup-instructions.js +1 -1
  102. package/dist/commands/setup-mcp.d.ts +28 -2
  103. package/dist/commands/setup-mcp.d.ts.map +1 -1
  104. package/dist/commands/setup-mcp.js +194 -56
  105. package/dist/commands/setup-mcp.js.map +1 -1
  106. package/dist/commands/setup-types.d.ts +13 -0
  107. package/dist/commands/setup-types.d.ts.map +1 -1
  108. package/dist/commands/setup-types.js +10 -10
  109. package/dist/commands/setup-types.js.map +1 -1
  110. package/dist/commands/setup.d.ts +7 -0
  111. package/dist/commands/setup.d.ts.map +1 -1
  112. package/dist/commands/setup.js +170 -34
  113. package/dist/commands/setup.js.map +1 -1
  114. package/dist/commands/show.d.ts +5 -1
  115. package/dist/commands/show.d.ts.map +1 -1
  116. package/dist/commands/show.js +31 -9
  117. package/dist/commands/show.js.map +1 -1
  118. package/dist/commands/topic.d.ts +32 -0
  119. package/dist/commands/topic.d.ts.map +1 -0
  120. package/dist/commands/topic.js +265 -0
  121. package/dist/commands/topic.js.map +1 -0
  122. package/dist/commands/topic.test.d.ts +2 -0
  123. package/dist/commands/topic.test.d.ts.map +1 -0
  124. package/dist/commands/topic.test.js +114 -0
  125. package/dist/commands/topic.test.js.map +1 -0
  126. package/dist/index.js +35 -158
  127. package/dist/index.js.map +1 -1
  128. package/dist/lib/client.d.ts +10 -0
  129. package/dist/lib/client.d.ts.map +1 -0
  130. package/dist/lib/client.js +104 -0
  131. package/dist/lib/client.js.map +1 -0
  132. package/dist/lib/client.test.d.ts +2 -0
  133. package/dist/lib/client.test.d.ts.map +1 -0
  134. package/dist/lib/client.test.js +44 -0
  135. package/dist/lib/client.test.js.map +1 -0
  136. package/dist/lib/config.d.ts +43 -0
  137. package/dist/lib/config.d.ts.map +1 -1
  138. package/dist/lib/config.js +72 -1
  139. package/dist/lib/config.js.map +1 -1
  140. package/dist/lib/credentials.d.ts +3 -0
  141. package/dist/lib/credentials.d.ts.map +1 -1
  142. package/dist/lib/credentials.js +24 -2
  143. package/dist/lib/credentials.js.map +1 -1
  144. package/dist/lib/hubs.d.ts +7 -0
  145. package/dist/lib/hubs.d.ts.map +1 -0
  146. package/dist/lib/hubs.js +33 -0
  147. package/dist/lib/hubs.js.map +1 -0
  148. package/dist/lib/hubs.test.d.ts +2 -0
  149. package/dist/lib/hubs.test.d.ts.map +1 -0
  150. package/dist/lib/hubs.test.js +58 -0
  151. package/dist/lib/hubs.test.js.map +1 -0
  152. package/dist/lib/project-context.d.ts +52 -1
  153. package/dist/lib/project-context.d.ts.map +1 -1
  154. package/dist/lib/project-context.js +197 -30
  155. package/dist/lib/project-context.js.map +1 -1
  156. package/dist/lib/project-context.test.d.ts +2 -0
  157. package/dist/lib/project-context.test.d.ts.map +1 -0
  158. package/dist/lib/project-context.test.js +75 -0
  159. package/dist/lib/project-context.test.js.map +1 -0
  160. package/dist/lib/trash.d.ts +6 -0
  161. package/dist/lib/trash.d.ts.map +1 -0
  162. package/dist/lib/trash.js +28 -0
  163. package/dist/lib/trash.js.map +1 -0
  164. package/package.json +13 -13
  165. package/dist/commands/sync.d.ts +0 -14
  166. package/dist/commands/sync.d.ts.map +0 -1
  167. package/dist/commands/sync.js +0 -623
  168. package/dist/commands/sync.js.map +0 -1
  169. package/dist/lib/api.d.ts +0 -6
  170. package/dist/lib/api.d.ts.map +0 -1
  171. package/dist/lib/api.js +0 -150
  172. 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, memax_search, memax_forget). 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.
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 | Purpose |
15
- | --------------- | ----------------------------------------------------- |
16
- | `memax_recall` | Semantic search — find memories relevant to a query |
17
- | `memax_push` | Save a new memory |
18
- | `memax_get` | Read the full content of a specific memory by ID |
19
- | `memax_search` | Browse/list memories by category |
20
- | `memax_forget` | Delete a memory by ID |
21
- | `memax_capture` | Extract and save key decisions from a session summary |
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 `memax_search` to browse a category.
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 as soon as something important is decided or discovered don't batch
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
- - When in doubt, push it. A slightly redundant memory is better than a lost insight. Memax handles merging and deduplication on the server side, so don't worry about conflicts or overlap with existing memories.
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
- ## Categories
102
+ ## Classification
100
103
 
101
- Memax organizes memories into categories. Use them when pushing to keep things browsable:
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
- | Category | What goes here | Example |
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
- When pushing, set the category if you know it. If unsure, omit it — the server auto-classifies via LLM.
108
+ - "Architecture decision from today's auth review"
109
+ - "Runbook for staging deploy recovery"
110
+ - "Personal preference about code review style"
113
111
 
114
- When searching, `memax_recall` does semantic search across all categories, so you don't need to filter by category when reading just when writing.
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 → memax_recall(topic from first message)
150
- Cue detected → memax_recall(specific query) → memax_get(id) if needed
151
- Important info memax_push(clear, self-contained summary with rationale)
152
- User says forget memax_forget(id)
153
- Outdated memory Just push the new version, Memax handles merging
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"}