@agentmeshhq/agent 0.1.7 → 0.1.8

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 (49) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/context.test.d.ts +1 -0
  3. package/dist/__tests__/context.test.js +353 -0
  4. package/dist/__tests__/context.test.js.map +1 -0
  5. package/dist/cli/context.d.ts +4 -0
  6. package/dist/cli/context.js +190 -0
  7. package/dist/cli/context.js.map +1 -0
  8. package/dist/cli/index.js +17 -0
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/start.d.ts +1 -0
  11. package/dist/cli/start.js +10 -5
  12. package/dist/cli/start.js.map +1 -1
  13. package/dist/context/handoff.d.ts +48 -0
  14. package/dist/context/handoff.js +88 -0
  15. package/dist/context/handoff.js.map +1 -0
  16. package/dist/context/index.d.ts +7 -0
  17. package/dist/context/index.js +8 -0
  18. package/dist/context/index.js.map +1 -0
  19. package/dist/context/schema.d.ts +82 -0
  20. package/dist/context/schema.js +33 -0
  21. package/dist/context/schema.js.map +1 -0
  22. package/dist/context/storage.d.ts +49 -0
  23. package/dist/context/storage.js +172 -0
  24. package/dist/context/storage.js.map +1 -0
  25. package/dist/core/daemon.d.ts +7 -0
  26. package/dist/core/daemon.js +53 -2
  27. package/dist/core/daemon.js.map +1 -1
  28. package/dist/core/heartbeat.d.ts +6 -0
  29. package/dist/core/heartbeat.js +8 -0
  30. package/dist/core/heartbeat.js.map +1 -1
  31. package/dist/core/injector.d.ts +9 -0
  32. package/dist/core/injector.js +55 -3
  33. package/dist/core/injector.js.map +1 -1
  34. package/dist/core/tmux.d.ts +13 -0
  35. package/dist/core/tmux.js +62 -0
  36. package/dist/core/tmux.js.map +1 -1
  37. package/package.json +11 -11
  38. package/src/__tests__/context.test.ts +464 -0
  39. package/src/cli/context.ts +232 -0
  40. package/src/cli/index.ts +17 -0
  41. package/src/cli/start.ts +11 -9
  42. package/src/context/handoff.ts +122 -0
  43. package/src/context/index.ts +8 -0
  44. package/src/context/schema.ts +111 -0
  45. package/src/context/storage.ts +197 -0
  46. package/src/core/daemon.ts +59 -1
  47. package/src/core/heartbeat.ts +13 -0
  48. package/src/core/injector.ts +74 -30
  49. package/src/core/tmux.ts +75 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 therajushahi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,353 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+ import { extractHandoffContext, formatHandoffContextSummary, parseHandoffContext, serializeHandoffContext, } from "../context/handoff.js";
5
+ import { CONTEXT_VERSION, createEmptyContext } from "../context/schema.js";
6
+ import { deleteContext, exportContext, getContextPath, importContext, listContexts, loadContext, loadOrCreateContext, saveContext, updateContext, } from "../context/storage.js";
7
+ // Mock fs module
8
+ vi.mock("node:fs");
9
+ const mockFs = vi.mocked(fs);
10
+ describe("Context Schema", () => {
11
+ describe("createEmptyContext", () => {
12
+ it("creates context with correct version", () => {
13
+ const context = createEmptyContext("agent-123", "test-agent");
14
+ expect(context.version).toBe(CONTEXT_VERSION);
15
+ });
16
+ it("creates context with agent info", () => {
17
+ const context = createEmptyContext("agent-123", "test-agent");
18
+ expect(context.agentId).toBe("agent-123");
19
+ expect(context.agentName).toBe("test-agent");
20
+ });
21
+ it("creates context with empty conversation", () => {
22
+ const context = createEmptyContext("agent-123", "test-agent");
23
+ expect(context.conversation.messageCount).toBe(0);
24
+ expect(context.conversation.topics).toEqual([]);
25
+ expect(context.conversation.accomplishments).toEqual([]);
26
+ expect(context.conversation.recentMessages).toEqual([]);
27
+ });
28
+ it("creates context with working state", () => {
29
+ const context = createEmptyContext("agent-123", "test-agent");
30
+ expect(context.workingState.workdir).toBe(process.cwd());
31
+ expect(context.workingState.recentFiles).toEqual([]);
32
+ expect(context.workingState.openFiles).toEqual([]);
33
+ });
34
+ it("creates context with empty tasks", () => {
35
+ const context = createEmptyContext("agent-123", "test-agent");
36
+ expect(context.tasks.tasks).toEqual([]);
37
+ expect(context.tasks.currentGoal).toBeUndefined();
38
+ });
39
+ });
40
+ });
41
+ describe("Context Storage", () => {
42
+ const testAgentId = "test-agent-123";
43
+ const testContext = {
44
+ version: CONTEXT_VERSION,
45
+ agentId: testAgentId,
46
+ agentName: "test-agent",
47
+ savedAt: "2026-02-24T10:00:00.000Z",
48
+ conversation: {
49
+ messageCount: 5,
50
+ topics: ["testing", "context"],
51
+ accomplishments: ["wrote tests"],
52
+ recentMessages: [],
53
+ },
54
+ workingState: {
55
+ workdir: "/home/user/project",
56
+ recentFiles: ["file1.ts", "file2.ts"],
57
+ openFiles: ["file1.ts"],
58
+ gitBranch: "main",
59
+ },
60
+ tasks: {
61
+ tasks: [{ content: "test task", status: "in_progress", priority: "high" }],
62
+ currentGoal: "implement context",
63
+ },
64
+ custom: { key: "value" },
65
+ };
66
+ beforeEach(() => {
67
+ vi.clearAllMocks();
68
+ mockFs.existsSync.mockReturnValue(true);
69
+ });
70
+ afterEach(() => {
71
+ vi.resetAllMocks();
72
+ });
73
+ describe("getContextPath", () => {
74
+ it("returns correct path for agent ID", () => {
75
+ const contextPath = getContextPath("agent-123");
76
+ expect(contextPath).toContain("agent-123.json");
77
+ expect(contextPath).toContain(".agentmesh/context");
78
+ });
79
+ });
80
+ describe("saveContext", () => {
81
+ it("creates context directory if needed", () => {
82
+ mockFs.existsSync.mockReturnValue(false);
83
+ mockFs.mkdirSync.mockReturnValue(undefined);
84
+ mockFs.writeFileSync.mockReturnValue(undefined);
85
+ saveContext(testContext);
86
+ expect(mockFs.mkdirSync).toHaveBeenCalledWith(expect.stringContaining(".agentmesh/context"), {
87
+ recursive: true,
88
+ });
89
+ });
90
+ it("writes context to file", () => {
91
+ mockFs.writeFileSync.mockReturnValue(undefined);
92
+ saveContext(testContext);
93
+ expect(mockFs.writeFileSync).toHaveBeenCalledWith(expect.stringContaining(`${testAgentId}.json`), expect.any(String));
94
+ });
95
+ it("updates savedAt timestamp", () => {
96
+ mockFs.writeFileSync.mockReturnValue(undefined);
97
+ const before = new Date().toISOString();
98
+ saveContext(testContext);
99
+ const writtenData = JSON.parse(mockFs.writeFileSync.mock.calls[0][1]);
100
+ expect(new Date(writtenData.savedAt).getTime()).toBeGreaterThanOrEqual(new Date(before).getTime());
101
+ });
102
+ });
103
+ describe("loadContext", () => {
104
+ it("returns null if file does not exist", () => {
105
+ mockFs.existsSync.mockReturnValue(false);
106
+ const result = loadContext("nonexistent");
107
+ expect(result).toBeNull();
108
+ });
109
+ it("loads and parses context file", () => {
110
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
111
+ const result = loadContext(testAgentId);
112
+ expect(result).toEqual(testContext);
113
+ });
114
+ it("returns null for version mismatch", () => {
115
+ const oldContext = { ...testContext, version: 0 };
116
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(oldContext));
117
+ const result = loadContext(testAgentId);
118
+ expect(result).toBeNull();
119
+ });
120
+ it("returns null for invalid JSON", () => {
121
+ mockFs.readFileSync.mockReturnValue("invalid json");
122
+ const result = loadContext(testAgentId);
123
+ expect(result).toBeNull();
124
+ });
125
+ });
126
+ describe("loadOrCreateContext", () => {
127
+ it("returns existing context if found", () => {
128
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
129
+ const result = loadOrCreateContext(testAgentId, "test-agent");
130
+ expect(result).toEqual(testContext);
131
+ });
132
+ it("creates new context if not found", () => {
133
+ mockFs.existsSync.mockReturnValue(false);
134
+ const result = loadOrCreateContext("new-agent", "new-name");
135
+ expect(result.agentId).toBe("new-agent");
136
+ expect(result.agentName).toBe("new-name");
137
+ expect(result.version).toBe(CONTEXT_VERSION);
138
+ });
139
+ });
140
+ describe("deleteContext", () => {
141
+ it("deletes context file if exists", () => {
142
+ mockFs.unlinkSync.mockReturnValue(undefined);
143
+ const result = deleteContext(testAgentId);
144
+ expect(result).toBe(true);
145
+ expect(mockFs.unlinkSync).toHaveBeenCalled();
146
+ });
147
+ it("returns false if file does not exist", () => {
148
+ mockFs.existsSync.mockReturnValue(false);
149
+ const result = deleteContext("nonexistent");
150
+ expect(result).toBe(false);
151
+ });
152
+ });
153
+ describe("listContexts", () => {
154
+ it("returns list of saved contexts", () => {
155
+ mockFs.readdirSync.mockReturnValue(["agent1.json", "agent2.json"]);
156
+ mockFs.readFileSync.mockImplementation((filePath) => {
157
+ const id = path.basename(filePath, ".json");
158
+ return JSON.stringify({
159
+ ...testContext,
160
+ agentId: id,
161
+ savedAt: id === "agent1" ? "2026-02-24T11:00:00.000Z" : "2026-02-24T10:00:00.000Z",
162
+ });
163
+ });
164
+ const result = listContexts();
165
+ expect(result).toHaveLength(2);
166
+ expect(result[0].agentId).toBe("agent1"); // More recent first
167
+ });
168
+ it("filters non-json files", () => {
169
+ mockFs.readdirSync.mockReturnValue([
170
+ "agent1.json",
171
+ "readme.md",
172
+ ".gitkeep",
173
+ ]);
174
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
175
+ const result = listContexts();
176
+ expect(result).toHaveLength(1);
177
+ });
178
+ });
179
+ describe("updateContext", () => {
180
+ it("updates context fields", () => {
181
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
182
+ mockFs.writeFileSync.mockReturnValue(undefined);
183
+ const result = updateContext(testAgentId, {
184
+ conversation: {
185
+ ...testContext.conversation,
186
+ messageCount: 10,
187
+ },
188
+ });
189
+ expect(result?.conversation.messageCount).toBe(10);
190
+ });
191
+ it("returns null if context not found", () => {
192
+ mockFs.existsSync.mockReturnValue(false);
193
+ const result = updateContext("nonexistent", {});
194
+ expect(result).toBeNull();
195
+ });
196
+ it("preserves version and agentId", () => {
197
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
198
+ mockFs.writeFileSync.mockReturnValue(undefined);
199
+ const result = updateContext(testAgentId, {
200
+ agentName: "new-name",
201
+ });
202
+ expect(result?.version).toBe(CONTEXT_VERSION);
203
+ expect(result?.agentId).toBe(testAgentId);
204
+ });
205
+ });
206
+ describe("exportContext", () => {
207
+ it("exports context to file", () => {
208
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
209
+ mockFs.writeFileSync.mockReturnValue(undefined);
210
+ const result = exportContext(testAgentId, "/tmp/export.json");
211
+ expect(result).toBe(true);
212
+ expect(mockFs.writeFileSync).toHaveBeenCalledWith("/tmp/export.json", expect.any(String));
213
+ });
214
+ it("returns false if context not found", () => {
215
+ mockFs.existsSync.mockReturnValue(false);
216
+ const result = exportContext("nonexistent", "/tmp/export.json");
217
+ expect(result).toBe(false);
218
+ });
219
+ });
220
+ describe("importContext", () => {
221
+ it("imports context from file", () => {
222
+ mockFs.readFileSync.mockReturnValue(JSON.stringify(testContext));
223
+ mockFs.writeFileSync.mockReturnValue(undefined);
224
+ const result = importContext("/tmp/import.json");
225
+ expect(result).not.toBeNull();
226
+ expect(result?.agentId).toBe(testAgentId);
227
+ });
228
+ it("returns null if file not found", () => {
229
+ mockFs.existsSync.mockReturnValue(false);
230
+ const result = importContext("/tmp/nonexistent.json");
231
+ expect(result).toBeNull();
232
+ });
233
+ it("returns null for invalid context", () => {
234
+ mockFs.readFileSync.mockReturnValue(JSON.stringify({ invalid: "context" }));
235
+ const result = importContext("/tmp/invalid.json");
236
+ expect(result).toBeNull();
237
+ });
238
+ });
239
+ });
240
+ describe("Handoff Context", () => {
241
+ const testContext = {
242
+ version: CONTEXT_VERSION,
243
+ agentId: "test-agent-123",
244
+ agentName: "test-agent",
245
+ savedAt: "2026-02-24T10:00:00.000Z",
246
+ conversation: {
247
+ messageCount: 5,
248
+ topics: ["testing", "context", "handoff"],
249
+ accomplishments: ["wrote tests", "added feature"],
250
+ recentMessages: [],
251
+ },
252
+ workingState: {
253
+ workdir: "/home/user/project",
254
+ recentFiles: ["file1.ts", "file2.ts"],
255
+ openFiles: ["file1.ts"],
256
+ gitBranch: "feature/context",
257
+ },
258
+ tasks: {
259
+ tasks: [
260
+ { content: "task in progress", status: "in_progress", priority: "high" },
261
+ { content: "pending task", status: "pending", priority: "medium" },
262
+ { content: "completed task", status: "completed", priority: "low" },
263
+ ],
264
+ currentGoal: "implement context persistence",
265
+ },
266
+ custom: { key: "value" },
267
+ };
268
+ describe("extractHandoffContext", () => {
269
+ it("extracts workdir and git branch", () => {
270
+ const handoff = extractHandoffContext(testContext);
271
+ expect(handoff.workdir).toBe("/home/user/project");
272
+ expect(handoff.gitBranch).toBe("feature/context");
273
+ });
274
+ it("extracts current goal", () => {
275
+ const handoff = extractHandoffContext(testContext);
276
+ expect(handoff.currentGoal).toBe("implement context persistence");
277
+ });
278
+ it("only includes active tasks", () => {
279
+ const handoff = extractHandoffContext(testContext);
280
+ expect(handoff.activeTasks).toHaveLength(2);
281
+ expect(handoff.activeTasks[0].content).toBe("task in progress");
282
+ expect(handoff.activeTasks[1].content).toBe("pending task");
283
+ });
284
+ it("includes recent accomplishments", () => {
285
+ const handoff = extractHandoffContext(testContext);
286
+ expect(handoff.recentAccomplishments).toContain("wrote tests");
287
+ });
288
+ it("includes topics", () => {
289
+ const handoff = extractHandoffContext(testContext);
290
+ expect(handoff.topics).toContain("testing");
291
+ });
292
+ it("includes custom context if present", () => {
293
+ const handoff = extractHandoffContext(testContext);
294
+ expect(handoff.custom).toEqual({ key: "value" });
295
+ });
296
+ });
297
+ describe("serializeHandoffContext", () => {
298
+ it("serializes to JSON string", () => {
299
+ const handoff = extractHandoffContext(testContext);
300
+ const serialized = serializeHandoffContext(handoff);
301
+ expect(typeof serialized).toBe("string");
302
+ expect(JSON.parse(serialized)).toEqual(handoff);
303
+ });
304
+ });
305
+ describe("parseHandoffContext", () => {
306
+ it("parses valid JSON", () => {
307
+ const handoff = extractHandoffContext(testContext);
308
+ const serialized = serializeHandoffContext(handoff);
309
+ const parsed = parseHandoffContext(serialized);
310
+ expect(parsed).toEqual(handoff);
311
+ });
312
+ it("returns null for invalid JSON", () => {
313
+ const parsed = parseHandoffContext("invalid json");
314
+ expect(parsed).toBeNull();
315
+ });
316
+ });
317
+ describe("formatHandoffContextSummary", () => {
318
+ it("formats workdir", () => {
319
+ const handoff = extractHandoffContext(testContext);
320
+ const summary = formatHandoffContextSummary(handoff);
321
+ expect(summary).toContain("Working directory: /home/user/project");
322
+ });
323
+ it("formats git branch", () => {
324
+ const handoff = extractHandoffContext(testContext);
325
+ const summary = formatHandoffContextSummary(handoff);
326
+ expect(summary).toContain("Git branch: feature/context");
327
+ });
328
+ it("formats current goal", () => {
329
+ const handoff = extractHandoffContext(testContext);
330
+ const summary = formatHandoffContextSummary(handoff);
331
+ expect(summary).toContain("Current goal: implement context persistence");
332
+ });
333
+ it("formats active tasks", () => {
334
+ const handoff = extractHandoffContext(testContext);
335
+ const summary = formatHandoffContextSummary(handoff);
336
+ expect(summary).toContain("Active tasks:");
337
+ expect(summary).toContain("> task in progress");
338
+ expect(summary).toContain("- pending task");
339
+ });
340
+ it("formats accomplishments", () => {
341
+ const handoff = extractHandoffContext(testContext);
342
+ const summary = formatHandoffContextSummary(handoff);
343
+ expect(summary).toContain("Recent accomplishments:");
344
+ expect(summary).toContain("- wrote tests");
345
+ });
346
+ it("formats topics", () => {
347
+ const handoff = extractHandoffContext(testContext);
348
+ const summary = formatHandoffContextSummary(handoff);
349
+ expect(summary).toContain("Topics:");
350
+ });
351
+ });
352
+ });
353
+ //# sourceMappingURL=context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../src/__tests__/context.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAqB,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,iBAAiB;AACjB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,WAAW,GAAG,gBAAgB,CAAC;IACrC,MAAM,WAAW,GAAiB;QAChC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,WAAW;QACpB,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE;YACZ,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAC9B,eAAe,EAAE,CAAC,aAAa,CAAC;YAChC,cAAc,EAAE,EAAE;SACnB;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,oBAAoB;YAC7B,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YACrC,SAAS,EAAE,CAAC,UAAU,CAAC;YACvB,SAAS,EAAE,MAAM;SAClB;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1E,WAAW,EAAE,mBAAmB;SACjC;QACD,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;KACzB,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhD,WAAW,CAAC,WAAW,CAAC,CAAC;YAEzB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE;gBAC3F,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhD,WAAW,CAAC,WAAW,CAAC,CAAC;YAEzB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAC/C,MAAM,CAAC,gBAAgB,CAAC,GAAG,WAAW,OAAO,CAAC,EAC9C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAExC,WAAW,CAAC,WAAW,CAAC,CAAC;YAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;YAChF,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,sBAAsB,CACpE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,UAAU,GAAG,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAEhE,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAE5D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,aAAa,CAE/D,CAAC,CAAC;YACH,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAkB,EAAE,OAAO,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,GAAG,WAAW;oBACd,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B;iBACnF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAE9B,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;gBACjC,aAAa;gBACb,WAAW;gBACX,UAAU;aACqC,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAE9B,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE;gBACxC,YAAY,EAAE;oBACZ,GAAG,WAAW,CAAC,YAAY;oBAC3B,YAAY,EAAE,EAAE;iBACjB;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE;gBACxC,SAAS,EAAE,UAAU;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAEjD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAC;YAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAE5E,MAAM,MAAM,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,WAAW,GAAiB;QAChC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,gBAAgB;QACzB,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE;YACZ,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzC,eAAe,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;YACjD,cAAc,EAAE,EAAE;SACnB;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,oBAAoB;YAC7B,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;YACrC,SAAS,EAAE,CAAC,UAAU,CAAC;YACvB,SAAS,EAAE,iBAAiB;SAC7B;QACD,KAAK,EAAE;YACL,KAAK,EAAE;gBACL,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACxE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBAClE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;aACpE;YACD,WAAW,EAAE,+BAA+B;SAC7C;QACD,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;KACzB,CAAC;IAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACxB,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface ContextOptions {
2
+ output?: string;
3
+ }
4
+ export declare function contextCmd(action: string, nameOrPath?: string, options?: ContextOptions): Promise<void>;
@@ -0,0 +1,190 @@
1
+ import pc from "picocolors";
2
+ import { getAgentState, loadState } from "../config/loader.js";
3
+ import { CONTEXT_DIR, deleteContext, exportContext, importContext, listContexts, loadContext, } from "../context/index.js";
4
+ export async function contextCmd(action, nameOrPath, options) {
5
+ switch (action) {
6
+ case "show":
7
+ await showContext(nameOrPath);
8
+ break;
9
+ case "clear":
10
+ await clearContext(nameOrPath);
11
+ break;
12
+ case "export":
13
+ await exportContextCmd(nameOrPath, options?.output);
14
+ break;
15
+ case "import":
16
+ await importContextCmd(nameOrPath);
17
+ break;
18
+ case "list":
19
+ case "ls":
20
+ await listContextsCmd();
21
+ break;
22
+ case "path":
23
+ console.log(CONTEXT_DIR);
24
+ break;
25
+ default:
26
+ console.log(pc.red(`Unknown action: ${action}`));
27
+ console.log("Available actions: show, clear, export, import, list, path");
28
+ process.exit(1);
29
+ }
30
+ }
31
+ async function showContext(name) {
32
+ const agentId = await resolveAgentId(name);
33
+ if (!agentId) {
34
+ return;
35
+ }
36
+ const context = loadContext(agentId);
37
+ if (!context) {
38
+ console.log(pc.yellow(`No saved context found for agent.`));
39
+ return;
40
+ }
41
+ console.log(pc.bold(`Context for ${context.agentName} (${context.agentId}):`));
42
+ console.log(pc.dim(`Saved at: ${new Date(context.savedAt).toLocaleString()}`));
43
+ console.log();
44
+ // Working state
45
+ console.log(pc.bold("Working State:"));
46
+ console.log(` Directory: ${context.workingState.workdir}`);
47
+ if (context.workingState.gitBranch) {
48
+ console.log(` Git branch: ${context.workingState.gitBranch}`);
49
+ }
50
+ if (context.workingState.recentFiles.length > 0) {
51
+ console.log(` Recent files: ${context.workingState.recentFiles.slice(0, 5).join(", ")}`);
52
+ }
53
+ console.log();
54
+ // Tasks
55
+ const activeTasks = context.tasks.tasks.filter((t) => t.status === "in_progress" || t.status === "pending");
56
+ if (activeTasks.length > 0 || context.tasks.currentGoal) {
57
+ console.log(pc.bold("Tasks:"));
58
+ if (context.tasks.currentGoal) {
59
+ console.log(` Goal: ${context.tasks.currentGoal}`);
60
+ }
61
+ for (const task of activeTasks) {
62
+ const icon = task.status === "in_progress" ? pc.yellow(">") : pc.dim("-");
63
+ const priority = task.priority === "high" ? pc.red(`[${task.priority}]`) : pc.dim(`[${task.priority}]`);
64
+ console.log(` ${icon} ${task.content} ${priority}`);
65
+ }
66
+ console.log();
67
+ }
68
+ // Conversation
69
+ if (context.conversation.topics.length > 0 || context.conversation.accomplishments.length > 0) {
70
+ console.log(pc.bold("Conversation:"));
71
+ if (context.conversation.topics.length > 0) {
72
+ console.log(` Topics: ${context.conversation.topics.join(", ")}`);
73
+ }
74
+ if (context.conversation.accomplishments.length > 0) {
75
+ console.log(" Accomplishments:");
76
+ for (const acc of context.conversation.accomplishments.slice(0, 5)) {
77
+ console.log(` - ${acc}`);
78
+ }
79
+ }
80
+ console.log();
81
+ }
82
+ // Custom context
83
+ if (Object.keys(context.custom).length > 0) {
84
+ console.log(pc.bold("Custom Context:"));
85
+ console.log(JSON.stringify(context.custom, null, 2));
86
+ }
87
+ }
88
+ async function clearContext(name) {
89
+ const agentId = await resolveAgentId(name);
90
+ if (!agentId) {
91
+ return;
92
+ }
93
+ const deleted = deleteContext(agentId);
94
+ if (deleted) {
95
+ console.log(pc.green(`Context cleared for agent.`));
96
+ }
97
+ else {
98
+ console.log(pc.yellow(`No context found to clear.`));
99
+ }
100
+ }
101
+ async function exportContextCmd(name, outputPath) {
102
+ const agentId = await resolveAgentId(name);
103
+ if (!agentId) {
104
+ return;
105
+ }
106
+ const context = loadContext(agentId);
107
+ if (!context) {
108
+ console.log(pc.yellow(`No saved context found for agent.`));
109
+ return;
110
+ }
111
+ const output = outputPath || `${context.agentName}-context.json`;
112
+ const success = exportContext(agentId, output);
113
+ if (success) {
114
+ console.log(pc.green(`Context exported to: ${output}`));
115
+ }
116
+ else {
117
+ console.log(pc.red(`Failed to export context.`));
118
+ process.exit(1);
119
+ }
120
+ }
121
+ async function importContextCmd(inputPath) {
122
+ if (!inputPath) {
123
+ console.log(pc.red("Please specify a file path to import."));
124
+ console.log("Usage: agentmesh context import <file>");
125
+ process.exit(1);
126
+ }
127
+ const context = importContext(inputPath);
128
+ if (context) {
129
+ console.log(pc.green(`Context imported for agent: ${context.agentName} (${context.agentId})`));
130
+ }
131
+ else {
132
+ console.log(pc.red(`Failed to import context from: ${inputPath}`));
133
+ process.exit(1);
134
+ }
135
+ }
136
+ async function listContextsCmd() {
137
+ const contexts = listContexts();
138
+ if (contexts.length === 0) {
139
+ console.log(pc.yellow("No saved contexts found."));
140
+ return;
141
+ }
142
+ console.log(pc.bold("Saved Contexts:"));
143
+ console.log();
144
+ for (const ctx of contexts) {
145
+ const context = loadContext(ctx.agentId);
146
+ if (!context)
147
+ continue;
148
+ console.log(` ${pc.cyan(context.agentName)} (${pc.dim(ctx.agentId.slice(0, 8))}...)`);
149
+ console.log(` Saved: ${new Date(ctx.savedAt).toLocaleString()}`);
150
+ if (context.tasks.currentGoal) {
151
+ console.log(` Goal: ${context.tasks.currentGoal}`);
152
+ }
153
+ console.log();
154
+ }
155
+ }
156
+ async function resolveAgentId(name) {
157
+ // If no name provided, try to get from environment
158
+ if (!name) {
159
+ const envAgentId = process.env.AGENTMESH_AGENT_ID;
160
+ if (envAgentId) {
161
+ return envAgentId;
162
+ }
163
+ // Try to find single running agent
164
+ const state = loadState();
165
+ if (state.agents.length === 1) {
166
+ return state.agents[0].agentId;
167
+ }
168
+ if (state.agents.length === 0) {
169
+ console.log(pc.yellow("No running agents found."));
170
+ console.log("Usage: agentmesh context show <name>");
171
+ return null;
172
+ }
173
+ console.log(pc.yellow("Multiple agents running. Please specify a name."));
174
+ console.log("Usage: agentmesh context show <name>");
175
+ return null;
176
+ }
177
+ // Try to find by name
178
+ const agentState = getAgentState(name);
179
+ if (agentState) {
180
+ return agentState.agentId;
181
+ }
182
+ // Maybe it's already an agent ID
183
+ const context = loadContext(name);
184
+ if (context) {
185
+ return name;
186
+ }
187
+ console.log(pc.red(`Agent not found: ${name}`));
188
+ return null;
189
+ }
190
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -4,6 +4,7 @@ import { Command } from "commander";
4
4
  import pc from "picocolors";
5
5
  import { attach } from "./attach.js";
6
6
  import { configCmd } from "./config.js";
7
+ import { contextCmd } from "./context.js";
7
8
  import { init } from "./init.js";
8
9
  import { list } from "./list.js";
9
10
  import { logs } from "./logs.js";
@@ -41,6 +42,7 @@ program
41
42
  .option("-w, --workdir <path>", "Working directory")
42
43
  .option("-m, --model <model>", "Model identifier")
43
44
  .option("-f, --foreground", "Run in foreground (blocking)")
45
+ .option("--no-context", "Start fresh without restoring previous context")
44
46
  .action(async (options) => {
45
47
  try {
46
48
  await start(options);
@@ -185,5 +187,20 @@ program
185
187
  process.exit(1);
186
188
  }
187
189
  });
190
+ program
191
+ .command("context")
192
+ .description("Manage agent context persistence")
193
+ .argument("[action]", "Action: show (default), clear, export, import, list, path")
194
+ .argument("[name]", "Agent name or file path (for import)")
195
+ .option("-o, --output <path>", "Output file path (for export)")
196
+ .action(async (action, name, options) => {
197
+ try {
198
+ await contextCmd(action || "show", name, options);
199
+ }
200
+ catch (error) {
201
+ console.error(pc.red(error.message));
202
+ process.exit(1);
203
+ }
204
+ });
188
205
  program.parse();
189
206
  //# sourceMappingURL=index.js.map