aiwf 0.3.5 → 0.3.7

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/.aiwf/00_PROJECT_MANIFEST.md +29 -16
  2. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/M03_milestone_meta.md +55 -0
  3. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/SPECS_AIWF_Simplified_Plan.md +221 -0
  4. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_M02_sprint_meta.md +0 -1
  5. package/.aiwf/test-results-s02.json +5 -5
  6. package/.claude/commands/aiwf/aiwf_add_task_to_sprint.md +283 -0
  7. package/.claude/commands/aiwf/aiwf_install_git_hooks.md +63 -0
  8. package/.claude/commands/aiwf/aiwf_link_feature_branch.md +43 -0
  9. package/.claude/commands/aiwf/aiwf_link_feature_commit.md +46 -0
  10. package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_create_testcase.md +561 -0
  11. package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_testcase.md +561 -0
  12. package/package.json +1 -1
  13. package/src/cli/index.js +17 -2
  14. package/src/commands/create-project.js +10 -7
  15. package/src/commands/sprint-task.js +262 -0
  16. package/src/lib/file-downloader.js +194 -33
  17. package/src/lib/installer.js +52 -15
  18. package/tests/integration/test-persona-system/.aiwf/metrics/metrics.json +833 -0
  19. package/tests/unit/sprint-task.test.js +172 -0
  20. package/.aiwf/sessions/session_1752877859489_1t7n2fhdb.json +0 -7
  21. package/.aiwf/sessions/session_1752877859515_cwdv211ry.json +0 -7
  22. package/.aiwf/sessions/session_1752877860664_huziadmbo.json +0 -7
  23. package/.aiwf/sessions/session_1752877860666_kyr5u1np6.json +0 -7
  24. package/.aiwf/sessions/session_1752877861848_9yinepw3t.json +0 -7
  25. package/.aiwf/sessions/session_1752877861874_y32sputuc.json +0 -7
  26. package/.aiwf/sessions/session_1752877862685_ivxbl5rhz.json +0 -7
  27. package/.aiwf/sessions/session_1752877862820_wnq4glvxi.json +0 -7
  28. package/.aiwf/sessions/session_1752877864632_3ebnpaelb.json +0 -7
  29. package/.aiwf/sessions/session_1752877864879_b9zgjcb7d.json +0 -7
  30. package/.aiwf/sessions/session_1752877865533_x14m1vodi.json +0 -7
  31. package/.aiwf/sessions/session_1752877865562_gkoh19n7d.json +0 -7
  32. package/.aiwf/sessions/session_1752877866333_wp8qpdcoh.json +0 -7
  33. package/.aiwf/sessions/session_1752877866509_dawntfpab.json +0 -7
  34. package/.aiwf/sessions/session_1752877866890_plc5vfucl.json +0 -7
  35. package/.aiwf/sessions/session_1752877866895_ga8hmq3oi.json +0 -7
  36. package/.aiwf/sessions/session_1752877867761_ayjp4v5f5.json +0 -7
  37. package/.aiwf/sessions/session_1752877867892_lfz6jy252.json +0 -7
  38. package/.aiwf/sessions/session_1752877868139_7bqd9ubli.json +0 -7
  39. package/.aiwf/sessions/session_1752877868162_zq3ofjbsh.json +0 -7
  40. package/.aiwf/sessions/session_1752877869054_7rlgm9jt6.json +0 -7
  41. package/.aiwf/sessions/session_1752877869477_ax3nhbxzr.json +0 -7
  42. package/.aiwf/sessions/session_1752877870095_6hgp4vl1e.json +0 -7
  43. package/.aiwf/sessions/session_1752877870381_qfcrdg4li.json +0 -7
  44. package/.aiwf/sessions/session_1752877871895_pgd5vllhz.json +0 -7
  45. package/.aiwf/sessions/session_1752877872199_jbhv2g2da.json +0 -7
  46. package/.aiwf/sessions/session_1752877872680_x04wpffu6.json +0 -7
  47. package/.aiwf/sessions/session_1752877872895_3y4vbeauo.json +0 -7
  48. package/.aiwf/sessions/session_1752877873178_3maolzc6b.json +0 -7
  49. package/.aiwf/sessions/session_1752877873180_ytm83j07f.json +0 -7
  50. package/.aiwf/sessions/session_1752877874217_dp56c9t42.json +0 -7
  51. package/.aiwf/sessions/session_1752877874415_epwp1g1og.json +0 -7
  52. package/.aiwf/sessions/session_1752877874454_heicyuryb.json +0 -7
  53. package/.aiwf/sessions/session_1752877874869_1c2illeu5.json +0 -7
  54. package/.aiwf/sessions/session_1752877874879_k1vo4vxyx.json +0 -7
  55. package/.aiwf/sessions/session_1752877874913_bwgyiz9bp.json +0 -7
  56. package/.aiwf/sessions/session_1752877876218_44807kztz.json +0 -7
  57. package/.aiwf/sessions/session_1752877876515_qkhjv5kpw.json +0 -7
  58. package/.aiwf/sessions/session_1752877876543_p605aud1m.json +0 -7
  59. package/.aiwf/sessions/session_1752877876819_l65w7ifck.json +0 -7
  60. package/.aiwf/sessions/session_1752877876867_xrhzss4we.json +0 -7
  61. package/.aiwf/sessions/session_1752877876872_u7aso54qb.json +0 -7
  62. package/.aiwf/sessions/session_1752877877705_telnfg4o6.json +0 -7
  63. package/.aiwf/sessions/session_1752877878285_6s45im2ib.json +0 -7
  64. package/.aiwf/sessions/session_1752877878506_v0dvguqhz.json +0 -7
  65. package/.aiwf/sessions/session_1752877878581_3ri3yc66a.json +0 -7
  66. package/.aiwf/sessions/session_1752877878756_a82x9s2pd.json +0 -7
  67. package/.aiwf/sessions/session_1752877878886_20pjsfour.json +0 -7
  68. package/.aiwf/sessions/session_1752877880266_fm1ydjw0g.json +0 -7
  69. package/.aiwf/sessions/session_1752877881149_xbat4z03d.json +0 -7
  70. package/.aiwf/sessions/session_1752877881551_qy5sic9qs.json +0 -7
  71. package/.aiwf/sessions/session_1752877881554_24ugd96wu.json +0 -7
  72. package/.aiwf/sessions/session_1752877881797_e9mm25uh0.json +0 -7
  73. package/.aiwf/sessions/session_1752877881822_bxvjj8c9g.json +0 -7
  74. package/.aiwf/sessions/session_1752877881890_jv7l6jve3.json +0 -7
  75. package/.aiwf/sessions/session_1752877881991_f0qugdtcq.json +0 -7
  76. package/.aiwf/sessions/session_1752877883387_0bvw9rvnx.json +0 -7
  77. package/.aiwf/sessions/session_1752877883820_q6g2md2up.json +0 -7
  78. package/.aiwf/sessions/session_1752877884393_sqr7trvjl.json +0 -7
  79. package/.aiwf/sessions/session_1752877884500_whtypmzlf.json +0 -7
  80. package/.aiwf/sessions/session_1752877884645_y9mvvxli1.json +0 -7
  81. package/.aiwf/sessions/session_1752877884733_hk46eenel.json +0 -7
  82. package/.aiwf/sessions/session_1752877884738_c62j6214r.json +0 -7
  83. package/.aiwf/sessions/session_1752877884771_temhxehoz.json +0 -7
  84. package/.aiwf/sessions/session_1752877885643_6v5fcktc7.json +0 -7
  85. package/.aiwf/sessions/session_1752877886426_ee8di2fqh.json +0 -7
  86. package/.aiwf/sessions/session_1752877886549_3xj6tdoew.json +0 -7
  87. package/.aiwf/sessions/session_1752877886604_aj80yyfco.json +0 -7
  88. package/.aiwf/sessions/session_1752877886702_2b8841vyg.json +0 -7
  89. package/.aiwf/sessions/session_1752877886712_ntqc8b8bz.json +0 -7
  90. package/.aiwf/sessions/session_1752877886968_946m8tbw6.json +0 -7
  91. package/.aiwf/sessions/session_1752877887008_wg6zfg8dn.json +0 -7
  92. package/.aiwf/sessions/session_1752877888479_ciiu2qiqs.json +0 -7
  93. package/.aiwf/sessions/session_1752877889330_ravg8l66k.json +0 -7
  94. package/.aiwf/sessions/session_1752877889542_7zepkhjkc.json +0 -7
  95. package/.aiwf/sessions/session_1752877889638_ev4htqiu0.json +0 -7
  96. package/.aiwf/sessions/session_1752877889956_szphy2qma.json +0 -7
  97. package/.aiwf/sessions/session_1752877890220_o6aaa57tt.json +0 -7
  98. package/.aiwf/sessions/session_1752877890527_v2loy5vu1.json +0 -7
  99. package/.aiwf/sessions/session_1752877890572_cwq8fiuma.json +0 -7
  100. package/.aiwf/sessions/session_1752877892200_sgcwq1alt.json +0 -7
  101. package/.aiwf/sessions/session_1752877892268_v8kexpbc5.json +0 -7
  102. package/.aiwf/sessions/session_1752877892384_1gbbgrp4y.json +0 -7
  103. package/.aiwf/sessions/session_1752877893568_9p2n5p31a.json +0 -7
  104. package/.aiwf/sessions/session_1752877893727_un34a5tvp.json +0 -7
  105. package/.aiwf/sessions/session_1752877893778_01j79sw9i.json +0 -7
  106. package/.aiwf/sessions/session_1752877894053_jrhba6wko.json +0 -7
  107. package/.aiwf/sessions/session_1752877894082_x3bghawox.json +0 -7
  108. package/.aiwf/sessions/session_1752877894500_iytiav2ku.json +0 -7
  109. package/.aiwf/sessions/session_1752877894667_ucn0gc2ge.json +0 -7
  110. package/test-token-system.js +0 -88
  111. package/tests/temp_invalid_json/invalid.json +0 -1
  112. /package/{.aiwf/templates → templates}/README.md +0 -0
  113. /package/{.aiwf/templates → templates}/api-server/config.json +0 -0
  114. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/config.json +0 -0
  115. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/feature-ledger.json +0 -0
  116. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/personas/backend-engineer.json +0 -0
  117. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/scripts/cli.js +0 -0
  118. /package/{.aiwf/templates → templates}/api-server/template/.env.example +0 -0
  119. /package/{.aiwf/templates → templates}/api-server/template/.eslintrc.json +0 -0
  120. /package/{.aiwf/templates → templates}/api-server/template/README.md +0 -0
  121. /package/{.aiwf/templates → templates}/api-server/template/jest.config.js +0 -0
  122. /package/{.aiwf/templates → templates}/api-server/template/nodemon.json +0 -0
  123. /package/{.aiwf/templates → templates}/api-server/template/package.json +0 -0
  124. /package/{.aiwf/templates → templates}/api-server/template/src/app.ts +0 -0
  125. /package/{.aiwf/templates → templates}/api-server/template/src/config/swagger.ts +0 -0
  126. /package/{.aiwf/templates → templates}/api-server/template/src/controllers/aiwfController.ts +0 -0
  127. /package/{.aiwf/templates → templates}/api-server/template/src/controllers/authController.ts +0 -0
  128. /package/{.aiwf/templates → templates}/api-server/template/src/controllers/statusController.ts +0 -0
  129. /package/{.aiwf/templates → templates}/api-server/template/src/index.ts +0 -0
  130. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/aiwfMiddleware.ts +0 -0
  131. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/authMiddleware.ts +0 -0
  132. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/errorHandler.ts +0 -0
  133. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/notFoundHandler.ts +0 -0
  134. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/requestLogger.ts +0 -0
  135. /package/{.aiwf/templates → templates}/api-server/template/src/routes/aiwf.ts +0 -0
  136. /package/{.aiwf/templates → templates}/api-server/template/src/routes/index.ts +0 -0
  137. /package/{.aiwf/templates → templates}/api-server/template/src/routes/v1/index.ts +0 -0
  138. /package/{.aiwf/templates → templates}/api-server/template/src/utils/logger.ts +0 -0
  139. /package/{.aiwf/templates → templates}/api-server/template/tests/app.test.ts +0 -0
  140. /package/{.aiwf/templates → templates}/api-server/template/tsconfig.json +0 -0
  141. /package/{.aiwf/templates → templates}/npm-library/config.json +0 -0
  142. /package/{.aiwf/templates → templates}/npm-library/template/LICENSE +0 -0
  143. /package/{.aiwf/templates → templates}/npm-library/template/README.md +0 -0
  144. /package/{.aiwf/templates → templates}/npm-library/template/package.json +0 -0
  145. /package/{.aiwf/templates → templates}/web-app/config.json +0 -0
  146. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/config.json +0 -0
  147. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/feature-ledger.json +0 -0
  148. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/personas/fullstack-developer.json +0 -0
  149. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/scripts/cli.js +0 -0
  150. /package/{.aiwf/templates → templates}/web-app/template/.eslintrc.cjs +0 -0
  151. /package/{.aiwf/templates → templates}/web-app/template/README.md +0 -0
  152. /package/{.aiwf/templates → templates}/web-app/template/index.html +0 -0
  153. /package/{.aiwf/templates → templates}/web-app/template/package.json +0 -0
  154. /package/{.aiwf/templates → templates}/web-app/template/postcss.config.js +0 -0
  155. /package/{.aiwf/templates → templates}/web-app/template/public/vite.svg +0 -0
  156. /package/{.aiwf/templates → templates}/web-app/template/src/App.tsx +0 -0
  157. /package/{.aiwf/templates → templates}/web-app/template/src/components/Layout.tsx +0 -0
  158. /package/{.aiwf/templates → templates}/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -0
  159. /package/{.aiwf/templates → templates}/web-app/template/src/components/aiwf/FeatureLedger.tsx +0 -0
  160. /package/{.aiwf/templates → templates}/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -0
  161. /package/{.aiwf/templates → templates}/web-app/template/src/index.css +0 -0
  162. /package/{.aiwf/templates → templates}/web-app/template/src/main.tsx +0 -0
  163. /package/{.aiwf/templates → templates}/web-app/template/src/pages/AiwfDashboard.tsx +0 -0
  164. /package/{.aiwf/templates → templates}/web-app/template/src/pages/HomePage.tsx +0 -0
  165. /package/{.aiwf/templates → templates}/web-app/template/src/pages/NotFound.tsx +0 -0
  166. /package/{.aiwf/templates → templates}/web-app/template/src/stores/aiwfStore.ts +0 -0
  167. /package/{.aiwf/templates → templates}/web-app/template/src/types/global.d.ts +0 -0
  168. /package/{.aiwf/templates → templates}/web-app/template/src/vite-env.d.ts +0 -0
  169. /package/{.aiwf/templates → templates}/web-app/template/tailwind.config.js +0 -0
  170. /package/{.aiwf/templates → templates}/web-app/template/tsconfig.json +0 -0
  171. /package/{.aiwf/templates → templates}/web-app/template/tsconfig.node.json +0 -0
  172. /package/{.aiwf/templates → templates}/web-app/template/vite.config.ts +0 -0
@@ -0,0 +1,172 @@
1
+ /**
2
+ * 스프린트 태스크 관리 테스트
3
+ */
4
+
5
+ import { jest } from '@jest/globals';
6
+ import { addTaskToSprint } from '../../src/commands/sprint-task.js';
7
+
8
+ // Manual mocks
9
+ const mockFs = {
10
+ access: jest.fn(),
11
+ readdir: jest.fn(),
12
+ readFile: jest.fn(),
13
+ writeFile: jest.fn()
14
+ };
15
+
16
+ // Mock the fs/promises module
17
+ jest.unstable_mockModule('fs/promises', () => mockFs);
18
+
19
+ describe('Sprint Task Management', () => {
20
+ const mockProjectRoot = '/test/project';
21
+ const mockSprintPath = '/test/project/.aiwf/03_SPRINTS/S03_M02_test_sprint';
22
+
23
+ beforeEach(() => {
24
+ jest.clearAllMocks();
25
+
26
+ // Mock console methods
27
+ global.console.log = jest.fn();
28
+ global.console.warn = jest.fn();
29
+ global.console.error = jest.fn();
30
+ });
31
+
32
+ describe('addTaskToSprint', () => {
33
+ it('should successfully add a task to an existing sprint', async () => {
34
+ // Mock file system operations
35
+ mockFs.access.mockResolvedValue();
36
+ mockFs.readdir
37
+ .mockResolvedValueOnce(['.aiwf']) // Project root check
38
+ .mockResolvedValueOnce(['S01_M01_sprint1', 'S03_M02_test_sprint']) // Sprint directory
39
+ .mockResolvedValueOnce(['T01_S03_existing_task.md', 'S03_sprint_meta.md']); // Sprint contents
40
+
41
+ mockFs.readFile.mockResolvedValueOnce(`# S03 Sprint Meta
42
+ ## 태스크 목록
43
+ - [ ] T01: Existing Task - 상태: pending
44
+ `);
45
+
46
+ mockFs.writeFile.mockResolvedValue();
47
+
48
+ // Execute
49
+ const result = await addTaskToSprint('S03', 'New Test Task');
50
+
51
+ // Verify
52
+ expect(result.success).toBe(true);
53
+ expect(result.taskNumber).toBe('T02');
54
+ expect(mockFs.writeFile).toHaveBeenCalledTimes(3); // Task file, sprint meta, manifest
55
+ });
56
+
57
+ it('should handle first task in sprint correctly', async () => {
58
+ // Mock empty sprint
59
+ mockFs.access.mockResolvedValue();
60
+ mockFs.readdir
61
+ .mockResolvedValueOnce(['.aiwf'])
62
+ .mockResolvedValueOnce(['S03_M02_test_sprint'])
63
+ .mockResolvedValueOnce(['S03_sprint_meta.md']); // No task files
64
+
65
+ mockFs.readFile.mockResolvedValueOnce(`# S03 Sprint Meta
66
+ ## 개요
67
+ Test sprint
68
+ `);
69
+
70
+ mockFs.writeFile.mockResolvedValue();
71
+
72
+ const result = await addTaskToSprint('S03', 'First Task');
73
+
74
+ expect(result.taskNumber).toBe('T01');
75
+ });
76
+
77
+ it('should throw error when sprint does not exist', async () => {
78
+ mockFs.access.mockResolvedValue();
79
+ mockFs.readdir
80
+ .mockResolvedValueOnce(['.aiwf'])
81
+ .mockResolvedValueOnce(['S01_M01_sprint1']); // S03 not found
82
+
83
+ await expect(addTaskToSprint('S03', 'Test Task'))
84
+ .rejects.toThrow('스프린트 S03를 찾을 수 없습니다.');
85
+ });
86
+
87
+ it('should sanitize task title for filename', async () => {
88
+ mockFs.access.mockResolvedValue();
89
+ mockFs.readdir
90
+ .mockResolvedValueOnce(['.aiwf'])
91
+ .mockResolvedValueOnce(['S03_M02_test_sprint'])
92
+ .mockResolvedValueOnce([]);
93
+
94
+ mockFs.readFile.mockResolvedValueOnce('# Sprint Meta');
95
+ mockFs.writeFile.mockResolvedValue();
96
+
97
+ await addTaskToSprint('S03', 'Task with Special!@# Characters');
98
+
99
+ // Check that the filename was sanitized
100
+ const writeCall = mockFs.writeFile.mock.calls[0];
101
+ const filePath = writeCall[0];
102
+ expect(filePath).toMatch(/T01_S03_task_with_special_characters\.md$/);
103
+ });
104
+ });
105
+
106
+ describe('Error Handling', () => {
107
+ it('should handle missing .aiwf directory', async () => {
108
+ mockFs.access.mockRejectedValue(new Error('Not found'));
109
+
110
+ await expect(addTaskToSprint('S03', 'Test'))
111
+ .rejects.toThrow('.aiwf 디렉토리를 찾을 수 없습니다');
112
+ });
113
+
114
+ it('should warn when sprint meta file is missing', async () => {
115
+ mockFs.access.mockResolvedValue();
116
+ mockFs.readdir
117
+ .mockResolvedValueOnce(['.aiwf'])
118
+ .mockResolvedValueOnce(['S03_M02_test_sprint'])
119
+ .mockResolvedValueOnce([]); // No meta file
120
+
121
+ mockFs.writeFile.mockResolvedValue();
122
+
123
+ await addTaskToSprint('S03', 'Test Task');
124
+
125
+ expect(console.warn).toHaveBeenCalledWith(
126
+ expect.stringContaining('스프린트 메타 파일을 찾을 수 없습니다')
127
+ );
128
+ });
129
+ });
130
+
131
+ describe('Task Numbering', () => {
132
+ it('should correctly determine next task number', async () => {
133
+ mockFs.access.mockResolvedValue();
134
+ mockFs.readdir
135
+ .mockResolvedValueOnce(['.aiwf'])
136
+ .mockResolvedValueOnce(['S03_M02_test_sprint'])
137
+ .mockResolvedValueOnce([
138
+ 'T01_S03_task1.md',
139
+ 'T03_S03_task3.md',
140
+ 'T10_S03_task10.md',
141
+ 'S03_sprint_meta.md'
142
+ ]);
143
+
144
+ mockFs.readFile.mockResolvedValueOnce('# Sprint Meta');
145
+ mockFs.writeFile.mockResolvedValue();
146
+
147
+ const result = await addTaskToSprint('S03', 'Next Task');
148
+
149
+ expect(result.taskNumber).toBe('T11'); // Next after T10
150
+ });
151
+
152
+ it('should handle non-standard task filenames', async () => {
153
+ mockFs.access.mockResolvedValue();
154
+ mockFs.readdir
155
+ .mockResolvedValueOnce(['.aiwf'])
156
+ .mockResolvedValueOnce(['S03_M02_test_sprint'])
157
+ .mockResolvedValueOnce([
158
+ 'T01_S03_task1.md',
159
+ 'random_file.txt',
160
+ 'TX05_not_a_task.md',
161
+ 'S03_sprint_meta.md'
162
+ ]);
163
+
164
+ mockFs.readFile.mockResolvedValueOnce('# Sprint Meta');
165
+ mockFs.writeFile.mockResolvedValue();
166
+
167
+ const result = await addTaskToSprint('S03', 'Next Task');
168
+
169
+ expect(result.taskNumber).toBe('T02'); // Only counts valid task files
170
+ });
171
+ });
172
+ });
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877859489_1t7n2fhdb",
3
- "startTime": 1752877859682,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877860038
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877859515_cwdv211ry",
3
- "startTime": 1752877859723,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877860072
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877860664_huziadmbo",
3
- "startTime": 1752877860827,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877861242
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877860666_kyr5u1np6",
3
- "startTime": 1752877860794,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877861170
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877861848_9yinepw3t",
3
- "startTime": 1752877861938,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877862113
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877861874_y32sputuc",
3
- "startTime": 1752877861961,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877862128
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877862685_ivxbl5rhz",
3
- "startTime": 1752877862849,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877863321
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877862820_wnq4glvxi",
3
- "startTime": 1752877863124,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877863639
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877864632_3ebnpaelb",
3
- "startTime": 1752877864892,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877865546
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877864879_b9zgjcb7d",
3
- "startTime": 1752877865285,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877865792
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877865533_x14m1vodi",
3
- "startTime": 1752877865799,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877866153
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877865562_gkoh19n7d",
3
- "startTime": 1752877865800,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877866170
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877866333_wp8qpdcoh",
3
- "startTime": 1752877866503,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877866868
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877866509_dawntfpab",
3
- "startTime": 1752877866691,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877866974
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877866890_plc5vfucl",
3
- "startTime": 1752877867006,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877867528
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877866895_ga8hmq3oi",
3
- "startTime": 1752877867056,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877867543
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877867761_ayjp4v5f5",
3
- "startTime": 1752877867884,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877868144
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877867892_lfz6jy252",
3
- "startTime": 1752877868008,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877868250
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877868139_7bqd9ubli",
3
- "startTime": 1752877868251,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877868607
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877868162_zq3ofjbsh",
3
- "startTime": 1752877868266,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877868580
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877869054_7rlgm9jt6",
3
- "startTime": 1752877869499,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877870410
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877869477_ax3nhbxzr",
3
- "startTime": 1752877869959,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877870762
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877870095_6hgp4vl1e",
3
- "startTime": 1752877870445,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877871061
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877870381_qfcrdg4li",
3
- "startTime": 1752877870679,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877871258
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877871895_pgd5vllhz",
3
- "startTime": 1752877872189,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877873019
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877872199_jbhv2g2da",
3
- "startTime": 1752877872652,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877873581
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877872680_x04wpffu6",
3
- "startTime": 1752877873063,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877873807
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877872895_3y4vbeauo",
3
- "startTime": 1752877873352,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877874001
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877873178_3maolzc6b",
3
- "startTime": 1752877873649,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877874069
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877873180_ytm83j07f",
3
- "startTime": 1752877873614,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877874011
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877874217_dp56c9t42",
3
- "startTime": 1752877874377,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877874727
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877874415_epwp1g1og",
3
- "startTime": 1752877874546,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877875195
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877874454_heicyuryb",
3
- "startTime": 1752877874586,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877875204
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877874869_1c2illeu5",
3
- "startTime": 1752877875128,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877875792
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877874879_k1vo4vxyx",
3
- "startTime": 1752877875140,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877875703
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877874913_bwgyiz9bp",
3
- "startTime": 1752877875151,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877875713
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877876218_44807kztz",
3
- "startTime": 1752877876418,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877876777
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877876515_qkhjv5kpw",
3
- "startTime": 1752877876716,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877877068
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877876543_p605aud1m",
3
- "startTime": 1752877876727,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877877088
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877876819_l65w7ifck",
3
- "startTime": 1752877877021,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877877399
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877876867_xrhzss4we",
3
- "startTime": 1752877877035,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877877464
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877876872_u7aso54qb",
3
- "startTime": 1752877877038,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877877467
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877877705_telnfg4o6",
3
- "startTime": 1752877878015,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877878523
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877878285_6s45im2ib",
3
- "startTime": 1752877878567,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877879248
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877878506_v0dvguqhz",
3
- "startTime": 1752877878695,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877879578
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877878581_3ri3yc66a",
3
- "startTime": 1752877878964,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877879579
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877878756_a82x9s2pd",
3
- "startTime": 1752877879087,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877880003
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877878886_20pjsfour",
3
- "startTime": 1752877879239,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877879968
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877880266_fm1ydjw0g",
3
- "startTime": 1752877880620,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877881555
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877881149_xbat4z03d",
3
- "startTime": 1752877881523,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877882397
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877881551_qy5sic9qs",
3
- "startTime": 1752877881910,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877882832
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877881554_24ugd96wu",
3
- "startTime": 1752877882001,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877882776
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "sessionId": "session_1752877881797_e9mm25uh0",
3
- "startTime": 1752877882268,
4
- "totalTokens": 0,
5
- "commands": [],
6
- "lastUpdated": 1752877883184
7
- }