claude-code-workflow 6.1.4 → 6.2.2

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 (437) hide show
  1. package/.claude/CLAUDE.md +10 -0
  2. package/.claude/agents/action-planning-agent.md +857 -778
  3. package/.claude/agents/cli-execution-agent.md +266 -269
  4. package/.claude/agents/cli-explore-agent.md +2 -2
  5. package/.claude/agents/cli-lite-planning-agent.md +142 -92
  6. package/.claude/agents/cli-planning-agent.md +4 -4
  7. package/.claude/agents/code-developer.md +7 -6
  8. package/.claude/agents/conceptual-planning-agent.md +2 -2
  9. package/.claude/agents/context-search-agent.md +31 -32
  10. package/.claude/agents/doc-generator.md +4 -4
  11. package/.claude/agents/memory-bridge.md +93 -93
  12. package/.claude/agents/test-context-search-agent.md +8 -7
  13. package/.claude/agents/test-fix-agent.md +7 -6
  14. package/.claude/commands/clean.md +516 -0
  15. package/.claude/commands/memory/compact.md +383 -0
  16. package/.claude/commands/memory/docs-full-cli.md +471 -471
  17. package/.claude/commands/memory/docs-related-cli.md +386 -386
  18. package/.claude/commands/memory/docs.md +615 -615
  19. package/.claude/commands/memory/load.md +5 -5
  20. package/.claude/commands/memory/tech-research-rules.md +310 -0
  21. package/.claude/commands/memory/update-full.md +332 -332
  22. package/.claude/commands/memory/workflow-skill-memory.md +4 -4
  23. package/.claude/commands/task/create.md +151 -151
  24. package/.claude/commands/version.md +254 -254
  25. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -585
  26. package/.claude/commands/workflow/brainstorm/artifacts.md +1 -0
  27. package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -443
  28. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
  29. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
  30. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
  31. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
  32. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  33. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -387
  34. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
  35. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
  36. package/.claude/commands/workflow/debug.md +321 -0
  37. package/.claude/commands/workflow/execute.md +13 -0
  38. package/.claude/commands/workflow/init.md +165 -164
  39. package/.claude/commands/workflow/lite-execute.md +119 -13
  40. package/.claude/commands/workflow/lite-fix.md +623 -621
  41. package/.claude/commands/workflow/lite-plan.md +610 -592
  42. package/.claude/commands/workflow/plan.md +5 -5
  43. package/.claude/commands/workflow/review-module-cycle.md +2 -0
  44. package/.claude/commands/workflow/review-session-cycle.md +2 -0
  45. package/.claude/commands/workflow/review.md +297 -291
  46. package/.claude/commands/workflow/session/complete.md +153 -500
  47. package/.claude/commands/workflow/session/list.md +95 -95
  48. package/.claude/commands/workflow/session/resume.md +60 -60
  49. package/.claude/commands/workflow/session/start.md +199 -199
  50. package/.claude/commands/workflow/tdd-plan.md +3 -3
  51. package/.claude/commands/workflow/tdd-verify.md +23 -9
  52. package/.claude/commands/workflow/test-cycle-execute.md +2 -0
  53. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  54. package/.claude/commands/workflow/tools/conflict-resolution.md +104 -18
  55. package/.claude/commands/workflow/tools/context-gather.md +436 -434
  56. package/.claude/commands/workflow/tools/task-generate-agent.md +490 -291
  57. package/.claude/commands/workflow/tools/task-generate-tdd.md +18 -10
  58. package/.claude/commands/workflow/tools/test-concept-enhanced.md +2 -1
  59. package/.claude/commands/workflow/tools/test-context-gather.md +1 -0
  60. package/.claude/commands/workflow/tools/test-task-generate.md +1 -0
  61. package/.claude/commands/workflow/ui-design/import-from-code.md +9 -6
  62. package/.claude/skills/command-guide/SKILL.md +5 -5
  63. package/.claude/skills/command-guide/index/all-commands.json +1 -1
  64. package/.claude/skills/command-guide/index/by-category.json +1 -1
  65. package/.claude/skills/command-guide/index/by-use-case.json +1 -1
  66. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -778
  67. package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +266 -269
  68. package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +2 -2
  69. package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +142 -92
  70. package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +4 -4
  71. package/.claude/skills/command-guide/reference/agents/code-developer.md +7 -6
  72. package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +2 -2
  73. package/.claude/skills/command-guide/reference/agents/context-search-agent.md +31 -32
  74. package/.claude/skills/command-guide/reference/agents/doc-generator.md +4 -4
  75. package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
  76. package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +8 -7
  77. package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +7 -6
  78. package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
  79. package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
  80. package/.claude/skills/command-guide/reference/commands/memory/docs.md +17 -16
  81. package/.claude/skills/command-guide/reference/commands/memory/load.md +5 -5
  82. package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +194 -357
  83. package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
  84. package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +4 -4
  85. package/.claude/skills/command-guide/reference/commands/task/create.md +151 -151
  86. package/.claude/skills/command-guide/reference/commands/version.md +254 -254
  87. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -585
  88. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -443
  89. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -220
  90. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -200
  91. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -200
  92. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -200
  93. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  94. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -387
  95. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -221
  96. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -221
  97. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +25 -20
  98. package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -164
  99. package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -686
  100. package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -621
  101. package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -592
  102. package/.claude/skills/command-guide/reference/commands/workflow/plan.md +5 -5
  103. package/.claude/skills/command-guide/reference/commands/workflow/review.md +25 -18
  104. package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -500
  105. package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +45 -27
  106. package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +35 -19
  107. package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +90 -33
  108. package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +3 -3
  109. package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +23 -9
  110. package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -699
  111. package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +103 -17
  112. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
  113. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -291
  114. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +17 -10
  115. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +1 -1
  116. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +6 -6
  117. package/.claude/workflows/chinese-response.md +38 -0
  118. package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
  119. package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
  120. package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
  121. package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
  122. package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
  123. package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
  124. package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
  125. package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -131
  126. package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +5 -9
  127. package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +5 -9
  128. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
  129. package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
  130. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
  131. package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
  132. package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +25 -0
  133. package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +25 -0
  134. package/.claude/workflows/cli-tools-usage.md +526 -0
  135. package/{CLAUDE.md → .claude/workflows/coding-philosophy.md} +24 -45
  136. package/.claude/workflows/context-tools.md +84 -0
  137. package/.claude/workflows/file-modification.md +64 -0
  138. package/.claude/workflows/tool-strategy.md +216 -79
  139. package/.claude/workflows/windows-platform.md +16 -0
  140. package/.claude/workflows/workflow-architecture.md +942 -942
  141. package/.codex/AGENTS.md +63 -330
  142. package/.codex/prompts/debug.md +318 -0
  143. package/.codex/prompts/execute.md +273 -0
  144. package/.codex/prompts/lite-execute.md +164 -0
  145. package/.codex/prompts/lite-plan.md +469 -0
  146. package/.codex/prompts.zip +0 -0
  147. package/.gemini/GEMINI.md +25 -164
  148. package/.qwen/QWEN.md +0 -139
  149. package/README.md +29 -9
  150. package/ccw/README.md +30 -6
  151. package/ccw/bin/ccw-mcp.js +7 -0
  152. package/ccw/bin/ccw.js +9 -9
  153. package/ccw/package.json +65 -47
  154. package/ccw/src/.workflow/.cli-history/history.db +0 -0
  155. package/ccw/src/.workflow/.cli-history/history.db-shm +0 -0
  156. package/ccw/src/.workflow/.cli-history/history.db-wal +0 -0
  157. package/ccw/src/cli.ts +244 -0
  158. package/ccw/src/commands/cli.ts +740 -0
  159. package/ccw/src/commands/core-memory.ts +770 -0
  160. package/ccw/src/commands/hook.ts +315 -0
  161. package/ccw/src/commands/install.ts +519 -0
  162. package/ccw/src/commands/{list.js → list.ts} +1 -1
  163. package/ccw/src/commands/memory.ts +1090 -0
  164. package/ccw/src/commands/{serve.js → serve.ts} +14 -5
  165. package/ccw/src/commands/session-path-resolver.ts +372 -0
  166. package/ccw/src/commands/session.ts +1141 -0
  167. package/ccw/src/commands/{stop.js → stop.ts} +16 -6
  168. package/ccw/src/commands/tool.ts +201 -0
  169. package/ccw/src/commands/{uninstall.js → uninstall.ts} +89 -40
  170. package/ccw/src/commands/{upgrade.js → upgrade.ts} +68 -23
  171. package/ccw/src/commands/{view.js → view.ts} +22 -8
  172. package/ccw/src/config/storage-paths.ts +670 -0
  173. package/ccw/src/core/cache-manager.ts +294 -0
  174. package/ccw/src/core/claude-freshness.ts +319 -0
  175. package/ccw/src/core/core-memory-store.ts +1528 -0
  176. package/ccw/src/core/{dashboard-generator-patch.js → dashboard-generator-patch.ts} +18 -0
  177. package/ccw/src/core/{dashboard-generator.js → dashboard-generator.ts} +69 -12
  178. package/ccw/src/core/data-aggregator.ts +584 -0
  179. package/ccw/src/core/history-importer.ts +625 -0
  180. package/ccw/src/core/{lite-scanner.js → lite-scanner-complete.ts} +162 -66
  181. package/ccw/src/core/lite-scanner.ts +469 -0
  182. package/ccw/src/core/{manifest.js → manifest.ts} +104 -34
  183. package/ccw/src/core/memory-embedder-bridge.ts +262 -0
  184. package/ccw/src/core/memory-store.ts +978 -0
  185. package/ccw/src/core/routes/ccw-routes.ts +96 -0
  186. package/ccw/src/core/routes/claude-routes.ts +1183 -0
  187. package/ccw/src/core/routes/cli-routes.ts +561 -0
  188. package/ccw/src/core/routes/codexlens-routes.ts +806 -0
  189. package/ccw/src/core/routes/core-memory-routes.ts +605 -0
  190. package/ccw/src/core/routes/files-routes.ts +428 -0
  191. package/ccw/src/core/routes/graph-routes.md +164 -0
  192. package/ccw/src/core/routes/graph-routes.ts +626 -0
  193. package/ccw/src/core/routes/help-routes.ts +308 -0
  194. package/ccw/src/core/routes/hooks-routes.ts +405 -0
  195. package/ccw/src/core/routes/mcp-routes.ts +1271 -0
  196. package/ccw/src/core/routes/mcp-routes.ts.backup +550 -0
  197. package/ccw/src/core/routes/mcp-templates-db.ts +268 -0
  198. package/ccw/src/core/routes/memory-routes.ts +1206 -0
  199. package/ccw/src/core/routes/rules-routes.ts +526 -0
  200. package/ccw/src/core/routes/session-routes.ts +467 -0
  201. package/ccw/src/core/routes/skills-routes.ts +599 -0
  202. package/ccw/src/core/routes/status-routes.ts +57 -0
  203. package/ccw/src/core/routes/system-routes.ts +427 -0
  204. package/ccw/src/core/server.ts +431 -0
  205. package/ccw/src/core/session-clustering-service.ts +1258 -0
  206. package/ccw/src/core/session-scanner.ts +283 -0
  207. package/ccw/src/core/websocket.ts +190 -0
  208. package/ccw/src/{index.js → index.ts} +1 -0
  209. package/ccw/src/mcp-server/index.ts +186 -0
  210. package/ccw/src/templates/assets/css/github-dark.min.css +10 -0
  211. package/ccw/src/templates/assets/css/github.min.css +10 -0
  212. package/ccw/src/templates/assets/js/cytoscape.min.js +32 -0
  213. package/ccw/src/templates/assets/js/d3.min.js +2 -0
  214. package/ccw/src/templates/assets/js/highlight.min.js +1244 -0
  215. package/ccw/src/templates/assets/js/lucide.min.js +12 -0
  216. package/ccw/src/templates/assets/js/marked.min.js +69 -0
  217. package/ccw/src/templates/assets/js/tailwind.js +83 -0
  218. package/ccw/src/templates/dashboard-css/01-base.css +11 -0
  219. package/ccw/src/templates/dashboard-css/02-session.css +22 -0
  220. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +10 -0
  221. package/ccw/src/templates/dashboard-css/06-cards.css +10 -4
  222. package/ccw/src/templates/dashboard-css/07-managers.css +1178 -7
  223. package/ccw/src/templates/dashboard-css/09-explorer.css +23 -12
  224. package/ccw/src/templates/dashboard-css/10-cli-status.css +337 -0
  225. package/ccw/src/templates/dashboard-css/11-cli-history.css +271 -0
  226. package/ccw/src/templates/dashboard-css/12-cli-legacy.css +796 -0
  227. package/ccw/src/templates/dashboard-css/13-cli-ccw.css +199 -0
  228. package/ccw/src/templates/dashboard-css/14-cli-modals.css +258 -0
  229. package/ccw/src/templates/dashboard-css/15-cli-endpoints.css +305 -0
  230. package/ccw/src/templates/dashboard-css/16-cli-session.css +241 -0
  231. package/ccw/src/templates/dashboard-css/17-cli-conversation.css +283 -0
  232. package/ccw/src/templates/dashboard-css/18-cli-settings.css +160 -0
  233. package/ccw/src/templates/dashboard-css/19-cli-native-session.css +496 -0
  234. package/ccw/src/templates/dashboard-css/20-cli-taskqueue.css +188 -0
  235. package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +310 -0
  236. package/ccw/src/templates/dashboard-css/22-cli-semantic.css +240 -0
  237. package/ccw/src/templates/dashboard-css/23-memory.css +2390 -0
  238. package/ccw/src/templates/dashboard-css/24-prompt-history.css +1089 -0
  239. package/ccw/src/templates/dashboard-css/25-skills-rules.css +326 -0
  240. package/ccw/src/templates/dashboard-css/26-claude-manager.css +908 -0
  241. package/ccw/src/templates/dashboard-css/27-graph-explorer.css +1678 -0
  242. package/ccw/src/templates/dashboard-css/28-mcp-manager.css +748 -0
  243. package/ccw/src/templates/dashboard-css/29-help.css +264 -0
  244. package/ccw/src/templates/dashboard-css/30-core-memory.css +1700 -0
  245. package/ccw/src/templates/dashboard-js/api.js +162 -142
  246. package/ccw/src/templates/dashboard-js/components/carousel.js +4 -4
  247. package/ccw/src/templates/dashboard-js/components/cli-history.js +876 -0
  248. package/ccw/src/templates/dashboard-js/components/cli-status.js +978 -0
  249. package/ccw/src/templates/dashboard-js/components/global-notifications.js +508 -219
  250. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1277 -282
  251. package/ccw/src/templates/dashboard-js/components/index-manager.js +302 -0
  252. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +718 -27
  253. package/ccw/src/templates/dashboard-js/components/modals.js +66 -0
  254. package/ccw/src/templates/dashboard-js/components/navigation.js +80 -12
  255. package/ccw/src/templates/dashboard-js/components/notifications.js +758 -194
  256. package/ccw/src/templates/dashboard-js/components/storage-manager.js +478 -0
  257. package/ccw/src/templates/dashboard-js/components/tabs-other.js +157 -6
  258. package/ccw/src/templates/dashboard-js/components/task-queue-sidebar.js +716 -0
  259. package/ccw/src/templates/dashboard-js/help-i18n.js +272 -0
  260. package/ccw/src/templates/dashboard-js/i18n.js +2807 -0
  261. package/ccw/src/templates/dashboard-js/main.js +15 -0
  262. package/ccw/src/templates/dashboard-js/state.js +243 -42
  263. package/ccw/src/templates/dashboard-js/utils.js +47 -1
  264. package/ccw/src/templates/dashboard-js/views/claude-manager.js +912 -0
  265. package/ccw/src/templates/dashboard-js/views/cli-manager.js +2272 -0
  266. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +964 -0
  267. package/ccw/src/templates/dashboard-js/views/core-memory-clusters.js +503 -0
  268. package/ccw/src/templates/dashboard-js/views/core-memory.js +782 -0
  269. package/ccw/src/templates/dashboard-js/views/explorer.js +888 -852
  270. package/ccw/src/templates/dashboard-js/views/graph-explorer.js +1157 -0
  271. package/ccw/src/templates/dashboard-js/views/help.js +856 -0
  272. package/ccw/src/templates/dashboard-js/views/history.js +337 -0
  273. package/ccw/src/templates/dashboard-js/views/home.js +61 -15
  274. package/ccw/src/templates/dashboard-js/views/hook-manager.js +311 -43
  275. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +204 -28
  276. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +2187 -411
  277. package/ccw/src/templates/dashboard-js/views/mcp-manager.js.backup +1729 -0
  278. package/ccw/src/templates/dashboard-js/views/mcp-manager.js.new +928 -0
  279. package/ccw/src/templates/dashboard-js/views/memory.js +1221 -0
  280. package/ccw/src/templates/dashboard-js/views/prompt-history.js +713 -0
  281. package/ccw/src/templates/dashboard-js/views/rules-manager.js +828 -0
  282. package/ccw/src/templates/dashboard-js/views/session-detail.js +54 -53
  283. package/ccw/src/templates/dashboard-js/views/skills-manager.js +819 -0
  284. package/ccw/src/templates/dashboard.html +185 -85
  285. package/ccw/src/templates/hooks-config-example.json +60 -0
  286. package/ccw/src/tools/classify-folders.ts +245 -0
  287. package/ccw/src/tools/cli-config-manager.ts +268 -0
  288. package/ccw/src/tools/cli-executor.ts +2014 -0
  289. package/ccw/src/tools/cli-history-store.ts +1195 -0
  290. package/ccw/src/tools/codex-lens.ts +1141 -0
  291. package/ccw/src/tools/{convert-tokens-to-css.js → convert-tokens-to-css.ts} +73 -23
  292. package/ccw/src/tools/core-memory.ts +444 -0
  293. package/ccw/src/tools/detect-changed-modules.ts +325 -0
  294. package/ccw/src/tools/{discover-design-files.js → discover-design-files.ts} +74 -24
  295. package/ccw/src/tools/edit-file.ts +568 -0
  296. package/ccw/src/tools/{generate-module-docs.js → generate-module-docs.ts} +207 -185
  297. package/ccw/src/tools/{get-modules-by-depth.js → get-modules-by-depth.ts} +120 -79
  298. package/ccw/src/tools/index.ts +370 -0
  299. package/ccw/src/tools/native-session-discovery.ts +795 -0
  300. package/ccw/src/tools/notifier.ts +129 -0
  301. package/ccw/src/tools/read-file.ts +410 -0
  302. package/ccw/src/tools/resume-strategy.ts +345 -0
  303. package/ccw/src/tools/session-content-parser.ts +619 -0
  304. package/ccw/src/tools/session-manager.ts +1026 -0
  305. package/ccw/src/tools/smart-context.ts +228 -0
  306. package/ccw/src/tools/smart-search.ts +2065 -0
  307. package/ccw/src/tools/smart-search.ts.backup +1233 -0
  308. package/ccw/src/tools/storage-manager.ts +455 -0
  309. package/ccw/src/tools/write-file.ts +222 -0
  310. package/ccw/src/types/config.ts +11 -0
  311. package/ccw/src/types/index.ts +3 -0
  312. package/ccw/src/types/session.ts +25 -0
  313. package/ccw/src/types/tool.ts +41 -0
  314. package/ccw/src/utils/{browser-launcher.js → browser-launcher.ts} +10 -8
  315. package/ccw/src/utils/file-utils.ts +48 -0
  316. package/ccw/src/utils/{path-resolver.js → path-resolver.ts} +114 -78
  317. package/ccw/src/utils/path-validator.ts +153 -0
  318. package/ccw/src/utils/{ui.js → ui.ts} +32 -25
  319. package/codex-lens/pyproject.toml +48 -0
  320. package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
  321. package/codex-lens/src/codexlens/__init__.py +28 -0
  322. package/codex-lens/src/codexlens/__main__.py +14 -0
  323. package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
  324. package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
  325. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  326. package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
  327. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  328. package/codex-lens/src/codexlens/cli/__init__.py +27 -0
  329. package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  330. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  331. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  332. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  334. package/codex-lens/src/codexlens/cli/commands.py +1931 -0
  335. package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
  336. package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
  337. package/codex-lens/src/codexlens/cli/output.py +124 -0
  338. package/codex-lens/src/codexlens/config.py +201 -0
  339. package/codex-lens/src/codexlens/entities.py +121 -0
  340. package/codex-lens/src/codexlens/errors.py +55 -0
  341. package/codex-lens/src/codexlens/indexing/README.md +77 -0
  342. package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
  343. package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
  346. package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
  347. package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
  353. package/codex-lens/src/codexlens/parsers/factory.py +256 -0
  354. package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
  355. package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
  356. package/codex-lens/src/codexlens/search/__init__.py +15 -0
  357. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  358. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  359. package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
  360. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  361. package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
  362. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  363. package/codex-lens/src/codexlens/search/chain_search.py +647 -0
  364. package/codex-lens/src/codexlens/search/enrichment.py +150 -0
  365. package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
  366. package/codex-lens/src/codexlens/search/query_parser.py +242 -0
  367. package/codex-lens/src/codexlens/search/ranking.py +274 -0
  368. package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
  369. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
  371. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  372. package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
  373. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
  376. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
  378. package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
  379. package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
  380. package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
  381. package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
  382. package/codex-lens/src/codexlens/storage/__init__.py +29 -0
  383. package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
  384. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  385. package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
  387. package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
  388. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  389. package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
  393. package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
  394. package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
  395. package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
  396. package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
  397. package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
  400. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  402. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
  404. package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
  405. package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
  406. package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
  407. package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
  408. package/codex-lens/src/codexlens/storage/registry.py +670 -0
  409. package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
  410. package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
  411. package/package.json +4 -1
  412. package/.claude/commands/memory/tech-research.md +0 -477
  413. package/.claude/scripts/classify-folders.sh +0 -39
  414. package/.claude/scripts/convert_tokens_to_css.sh +0 -229
  415. package/.claude/scripts/detect_changed_modules.sh +0 -161
  416. package/.claude/scripts/discover-design-files.sh +0 -87
  417. package/.claude/scripts/extract-animations.js +0 -243
  418. package/.claude/scripts/extract-computed-styles.js +0 -118
  419. package/.claude/scripts/extract-layout-structure.js +0 -411
  420. package/.claude/scripts/generate_module_docs.sh +0 -717
  421. package/.claude/scripts/get_modules_by_depth.sh +0 -170
  422. package/.claude/scripts/ui-generate-preview.sh +0 -395
  423. package/.claude/scripts/ui-instantiate-prototypes.sh +0 -815
  424. package/.claude/scripts/update_module_claude.sh +0 -337
  425. package/.claude/workflows/context-search-strategy.md +0 -77
  426. package/.claude/workflows/intelligent-tools-strategy.md +0 -662
  427. package/ccw/src/cli.js +0 -119
  428. package/ccw/src/commands/install.js +0 -324
  429. package/ccw/src/commands/tool.js +0 -138
  430. package/ccw/src/core/data-aggregator.js +0 -409
  431. package/ccw/src/core/server.js +0 -2063
  432. package/ccw/src/core/session-scanner.js +0 -235
  433. package/ccw/src/tools/classify-folders.js +0 -204
  434. package/ccw/src/tools/detect-changed-modules.js +0 -288
  435. package/ccw/src/tools/edit-file.js +0 -266
  436. package/ccw/src/tools/index.js +0 -176
  437. package/ccw/src/utils/file-utils.js +0 -48
@@ -0,0 +1,1700 @@
1
+ /* ============================================
2
+ Core Memory Styles
3
+ ============================================ */
4
+
5
+ /* Modal Base Styles */
6
+ .modal-overlay {
7
+ position: fixed;
8
+ top: 0;
9
+ left: 0;
10
+ right: 0;
11
+ bottom: 0;
12
+ background: rgba(0, 0, 0, 0.6);
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ z-index: 1000;
17
+ animation: fadeIn 0.2s ease-out;
18
+ backdrop-filter: blur(2px);
19
+ }
20
+
21
+ @keyframes fadeIn {
22
+ from { opacity: 0; }
23
+ to { opacity: 1; }
24
+ }
25
+
26
+ .modal-content {
27
+ background: hsl(var(--card));
28
+ border: 1px solid hsl(var(--border));
29
+ border-radius: 12px;
30
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
31
+ max-height: 90vh;
32
+ display: flex;
33
+ flex-direction: column;
34
+ animation: slideUpModal 0.3s ease-out;
35
+ overflow: hidden;
36
+ }
37
+
38
+ @keyframes slideUpModal {
39
+ from {
40
+ opacity: 0;
41
+ transform: translateY(20px) scale(0.95);
42
+ }
43
+ to {
44
+ opacity: 1;
45
+ transform: translateY(0) scale(1);
46
+ }
47
+ }
48
+
49
+ .modal-header {
50
+ display: flex;
51
+ justify-content: space-between;
52
+ align-items: center;
53
+ padding: 1.25rem 1.5rem;
54
+ border-bottom: 1px solid hsl(var(--border));
55
+ }
56
+
57
+ .modal-header h2 {
58
+ font-size: 1.25rem;
59
+ font-weight: 600;
60
+ color: hsl(var(--foreground));
61
+ margin: 0;
62
+ }
63
+
64
+ .modal-close {
65
+ background: none;
66
+ border: none;
67
+ padding: 0.5rem;
68
+ cursor: pointer;
69
+ color: hsl(var(--muted-foreground));
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ border-radius: 6px;
74
+ transition: all 0.2s;
75
+ }
76
+
77
+ .modal-close:hover {
78
+ background: hsl(var(--hover));
79
+ color: hsl(var(--foreground));
80
+ }
81
+
82
+ .modal-close i {
83
+ width: 20px;
84
+ height: 20px;
85
+ }
86
+
87
+ .modal-body {
88
+ flex: 1;
89
+ overflow-y: auto;
90
+ padding: 1.5rem;
91
+ }
92
+
93
+ .modal-footer {
94
+ display: flex;
95
+ justify-content: flex-end;
96
+ gap: 0.75rem;
97
+ padding: 1.25rem 1.5rem;
98
+ border-top: 1px solid hsl(var(--border));
99
+ }
100
+
101
+ .core-memory-container {
102
+ padding: 1.5rem;
103
+ }
104
+
105
+ /* Tab Navigation */
106
+ .core-memory-tabs {
107
+ display: flex;
108
+ justify-content: space-between;
109
+ align-items: center;
110
+ margin-bottom: 1.5rem;
111
+ flex-wrap: wrap;
112
+ gap: 1rem;
113
+ border-bottom: 1px solid hsl(var(--border));
114
+ padding-bottom: 1rem;
115
+ }
116
+
117
+ .tab-nav {
118
+ display: flex;
119
+ gap: 0;
120
+ background: hsl(var(--muted) / 0.5);
121
+ border-radius: 8px;
122
+ padding: 4px;
123
+ }
124
+
125
+ .tab-btn {
126
+ display: flex;
127
+ align-items: center;
128
+ gap: 0.5rem;
129
+ padding: 0.625rem 1.25rem;
130
+ border: none;
131
+ background: transparent;
132
+ color: hsl(var(--muted-foreground));
133
+ font-size: 0.9375rem;
134
+ font-weight: 500;
135
+ cursor: pointer;
136
+ border-radius: 6px;
137
+ transition: all 0.2s ease;
138
+ }
139
+
140
+ .tab-btn i {
141
+ width: 18px;
142
+ height: 18px;
143
+ }
144
+
145
+ .tab-btn:hover {
146
+ color: hsl(var(--foreground));
147
+ }
148
+
149
+ .tab-btn.active {
150
+ background: hsl(var(--card));
151
+ color: hsl(var(--primary));
152
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
153
+ }
154
+
155
+ .tab-actions {
156
+ display: flex;
157
+ gap: 0.75rem;
158
+ flex-wrap: wrap;
159
+ }
160
+
161
+ .cm-tab-panel {
162
+ animation: fadeIn 0.2s ease-out;
163
+ }
164
+
165
+ .cm-tab-panel .memory-stats {
166
+ margin-bottom: 1rem;
167
+ }
168
+
169
+ .core-memory-header {
170
+ display: flex;
171
+ justify-content: space-between;
172
+ align-items: center;
173
+ margin-bottom: 1.5rem;
174
+ flex-wrap: wrap;
175
+ gap: 1rem;
176
+ }
177
+
178
+ .header-actions {
179
+ display: flex;
180
+ gap: 0.75rem;
181
+ flex-wrap: wrap;
182
+ }
183
+
184
+ .memory-stats {
185
+ display: flex;
186
+ gap: 1.5rem;
187
+ }
188
+
189
+ .stat-item {
190
+ display: flex;
191
+ flex-direction: column;
192
+ align-items: center;
193
+ }
194
+
195
+ .stat-label {
196
+ font-size: 0.875rem;
197
+ color: hsl(var(--muted-foreground));
198
+ margin-bottom: 0.25rem;
199
+ }
200
+
201
+ .stat-value {
202
+ font-size: 1.5rem;
203
+ font-weight: 600;
204
+ color: hsl(var(--foreground));
205
+ }
206
+
207
+ /* Memories Grid */
208
+ .memories-grid {
209
+ display: grid;
210
+ grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
211
+ gap: 1.25rem;
212
+ }
213
+
214
+ @media (max-width: 768px) {
215
+ .memories-grid {
216
+ grid-template-columns: 1fr;
217
+ }
218
+ }
219
+
220
+ /* Memory Card */
221
+ .memory-card {
222
+ background: hsl(var(--card));
223
+ border: 1px solid hsl(var(--border));
224
+ border-radius: 8px;
225
+ padding: 1.25rem;
226
+ transition: all 0.2s ease;
227
+ cursor: pointer;
228
+ /* Fixed card dimensions */
229
+ display: flex;
230
+ flex-direction: column;
231
+ height: 280px;
232
+ min-height: 280px;
233
+ max-height: 280px;
234
+ }
235
+
236
+ .memory-card:hover {
237
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
238
+ transform: translateY(-2px);
239
+ }
240
+
241
+ .memory-card.archived {
242
+ opacity: 0.7;
243
+ border-style: dashed;
244
+ }
245
+
246
+ .memory-card-header {
247
+ display: flex;
248
+ justify-content: space-between;
249
+ align-items: center;
250
+ margin-bottom: 0.75rem;
251
+ flex-shrink: 0;
252
+ }
253
+
254
+ .memory-id {
255
+ display: flex;
256
+ align-items: center;
257
+ gap: 0.5rem;
258
+ font-size: 0.875rem;
259
+ color: hsl(var(--foreground));
260
+ font-weight: 600;
261
+ flex-wrap: wrap;
262
+ }
263
+
264
+ .memory-id i {
265
+ width: 16px;
266
+ height: 16px;
267
+ }
268
+
269
+ .memory-id i[data-lucide="star"] {
270
+ color: hsl(38 92% 50%);
271
+ }
272
+
273
+ .memory-actions {
274
+ display: flex;
275
+ gap: 0.5rem;
276
+ }
277
+
278
+ .icon-btn {
279
+ background: none;
280
+ border: none;
281
+ padding: 0.25rem;
282
+ cursor: pointer;
283
+ color: hsl(var(--muted-foreground));
284
+ transition: color 0.2s;
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ }
289
+
290
+ .icon-btn:hover {
291
+ color: hsl(var(--foreground));
292
+ }
293
+
294
+ .icon-btn.danger:hover {
295
+ color: hsl(var(--destructive));
296
+ }
297
+
298
+ .icon-btn.favorite-active {
299
+ color: hsl(38 92% 50%);
300
+ }
301
+
302
+ .icon-btn.favorite-active:hover {
303
+ color: hsl(38 92% 40%);
304
+ }
305
+
306
+ .icon-btn i {
307
+ width: 18px;
308
+ height: 18px;
309
+ }
310
+
311
+ /* Copy ID Button */
312
+ .copy-id-btn {
313
+ background: none;
314
+ border: none;
315
+ padding: 0.125rem 0.25rem;
316
+ cursor: pointer;
317
+ color: hsl(var(--muted-foreground));
318
+ transition: color 0.2s;
319
+ display: inline-flex;
320
+ align-items: center;
321
+ justify-content: center;
322
+ margin-left: 0.25rem;
323
+ border-radius: 4px;
324
+ }
325
+
326
+ .copy-id-btn:hover {
327
+ color: hsl(var(--primary));
328
+ background: hsl(var(--muted));
329
+ }
330
+
331
+ .copy-id-btn i {
332
+ width: 14px;
333
+ height: 14px;
334
+ }
335
+
336
+ .copy-id-btn.copied {
337
+ color: hsl(var(--success, 142 76% 36%));
338
+ }
339
+
340
+ /* Memory Content */
341
+ .memory-content {
342
+ flex: 1;
343
+ min-height: 0;
344
+ overflow: hidden;
345
+ margin-bottom: 0.75rem;
346
+ }
347
+
348
+ .memory-summary,
349
+ .memory-preview {
350
+ font-size: 0.875rem;
351
+ line-height: 1.5;
352
+ color: hsl(var(--muted-foreground));
353
+ /* Fixed height with ellipsis */
354
+ display: -webkit-box;
355
+ -webkit-line-clamp: 4;
356
+ -webkit-box-orient: vertical;
357
+ overflow: hidden;
358
+ text-overflow: ellipsis;
359
+ max-height: 6em;
360
+ }
361
+
362
+ .memory-summary {
363
+ color: hsl(var(--foreground));
364
+ }
365
+
366
+ /* Memory Tags */
367
+ .memory-tags {
368
+ display: flex;
369
+ flex-wrap: wrap;
370
+ gap: 0.375rem;
371
+ margin-bottom: 0.5rem;
372
+ flex-shrink: 0;
373
+ max-height: 2rem;
374
+ overflow: hidden;
375
+ }
376
+
377
+ .tag {
378
+ padding: 0.25rem 0.75rem;
379
+ background: hsl(var(--accent));
380
+ color: hsl(var(--primary));
381
+ border-radius: 4px;
382
+ font-size: 0.75rem;
383
+ font-weight: 500;
384
+ }
385
+
386
+ /* Memory Footer - Fixed at bottom */
387
+ .memory-footer {
388
+ display: flex;
389
+ flex-direction: column;
390
+ gap: 0.5rem;
391
+ padding-top: 0.75rem;
392
+ border-top: 1px solid hsl(var(--border));
393
+ margin-top: auto;
394
+ }
395
+
396
+ .memory-meta {
397
+ display: flex;
398
+ gap: 1rem;
399
+ font-size: 0.8125rem;
400
+ color: hsl(var(--muted-foreground));
401
+ flex-wrap: wrap;
402
+ }
403
+
404
+ .memory-meta span {
405
+ display: flex;
406
+ align-items: center;
407
+ gap: 0.375rem;
408
+ }
409
+
410
+ .memory-meta i {
411
+ width: 14px;
412
+ height: 14px;
413
+ }
414
+
415
+ .memory-features {
416
+ display: flex;
417
+ gap: 0.5rem;
418
+ flex-wrap: wrap;
419
+ }
420
+
421
+ .feature-btn {
422
+ padding: 0.375rem 0.75rem;
423
+ background: hsl(var(--muted));
424
+ border: 1px solid hsl(var(--border));
425
+ border-radius: 4px;
426
+ font-size: 0.8125rem;
427
+ cursor: pointer;
428
+ transition: all 0.2s;
429
+ display: flex;
430
+ align-items: center;
431
+ gap: 0.375rem;
432
+ color: hsl(var(--foreground));
433
+ }
434
+
435
+ .feature-btn:hover {
436
+ background: hsl(var(--hover));
437
+ border-color: hsl(var(--primary));
438
+ }
439
+
440
+ .feature-btn i {
441
+ width: 14px;
442
+ height: 14px;
443
+ }
444
+
445
+ /* Badges */
446
+ .badge {
447
+ padding: 0.25rem 0.5rem;
448
+ border-radius: 4px;
449
+ font-size: 0.75rem;
450
+ font-weight: 500;
451
+ }
452
+
453
+ .badge-archived {
454
+ background: var(--warning-bg, #fef3c7);
455
+ color: var(--warning-color, #92400e);
456
+ }
457
+
458
+ .badge-priority-high {
459
+ background: var(--danger-bg, #fee2e2);
460
+ color: var(--danger-color, #991b1b);
461
+ }
462
+
463
+ .badge-priority-low {
464
+ background: var(--info-bg, #dbeafe);
465
+ color: var(--info-color, #1e3a8a);
466
+ }
467
+
468
+ .badge-current {
469
+ background: var(--success-bg, #d1fae5);
470
+ color: var(--success-color, #065f46);
471
+ }
472
+
473
+ /* Modal Styles */
474
+ .memory-modal {
475
+ max-width: 700px;
476
+ width: 100%;
477
+ }
478
+
479
+ .memory-detail-modal {
480
+ max-width: 900px;
481
+ width: 100%;
482
+ }
483
+
484
+ .form-group {
485
+ margin-bottom: 1.25rem;
486
+ }
487
+
488
+ .form-group label {
489
+ display: block;
490
+ font-weight: 500;
491
+ margin-bottom: 0.5rem;
492
+ color: hsl(var(--foreground));
493
+ }
494
+
495
+ .form-group textarea,
496
+ .form-group input[type="text"] {
497
+ width: 100%;
498
+ padding: 0.75rem;
499
+ border: 1px solid hsl(var(--border));
500
+ border-radius: 6px;
501
+ background: hsl(var(--background));
502
+ color: hsl(var(--foreground));
503
+ font-family: inherit;
504
+ font-size: 0.9375rem;
505
+ resize: vertical;
506
+ }
507
+
508
+ .form-group textarea:focus,
509
+ .form-group input[type="text"]:focus {
510
+ outline: none;
511
+ border-color: hsl(var(--primary));
512
+ box-shadow: 0 0 0 3px hsl(var(--primary) / 0.1);
513
+ }
514
+
515
+ /* Memory Detail Content */
516
+ .memory-detail-content {
517
+ display: flex;
518
+ flex-direction: column;
519
+ gap: 1.5rem;
520
+ }
521
+
522
+ .detail-section h3 {
523
+ font-size: 1rem;
524
+ font-weight: 600;
525
+ margin-bottom: 0.75rem;
526
+ color: hsl(var(--foreground));
527
+ }
528
+
529
+ .detail-text {
530
+ font-size: 0.9375rem;
531
+ line-height: 1.6;
532
+ color: hsl(var(--foreground));
533
+ white-space: pre-wrap;
534
+ }
535
+
536
+ .detail-code {
537
+ background: hsl(var(--muted));
538
+ border: 1px solid hsl(var(--border));
539
+ border-radius: 6px;
540
+ padding: 1rem;
541
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
542
+ font-size: 0.875rem;
543
+ line-height: 1.5;
544
+ overflow-x: auto;
545
+ white-space: pre-wrap;
546
+ word-wrap: break-word;
547
+ }
548
+
549
+ /* Knowledge Graph Styles */
550
+ .knowledge-graph {
551
+ display: flex;
552
+ flex-direction: column;
553
+ gap: 1.5rem;
554
+ }
555
+
556
+ .graph-section h3 {
557
+ font-size: 1rem;
558
+ font-weight: 600;
559
+ margin-bottom: 0.75rem;
560
+ color: hsl(var(--foreground));
561
+ }
562
+
563
+ .entities-list,
564
+ .relationships-list {
565
+ display: flex;
566
+ flex-direction: column;
567
+ gap: 0.75rem;
568
+ }
569
+
570
+ .entity-item {
571
+ padding: 0.75rem;
572
+ background: hsl(var(--muted));
573
+ border: 1px solid hsl(var(--border));
574
+ border-radius: 6px;
575
+ display: flex;
576
+ justify-content: space-between;
577
+ align-items: center;
578
+ }
579
+
580
+ .entity-name {
581
+ font-weight: 500;
582
+ color: hsl(var(--foreground));
583
+ }
584
+
585
+ .entity-type {
586
+ padding: 0.25rem 0.5rem;
587
+ background: hsl(var(--accent));
588
+ color: hsl(var(--primary));
589
+ border-radius: 4px;
590
+ font-size: 0.75rem;
591
+ }
592
+
593
+ .relationship-item {
594
+ padding: 0.75rem;
595
+ background: hsl(var(--muted));
596
+ border: 1px solid hsl(var(--border));
597
+ border-radius: 6px;
598
+ display: flex;
599
+ align-items: center;
600
+ gap: 0.75rem;
601
+ }
602
+
603
+ .rel-source,
604
+ .rel-target {
605
+ flex: 1;
606
+ font-weight: 500;
607
+ color: hsl(var(--foreground));
608
+ }
609
+
610
+ .rel-type {
611
+ padding: 0.25rem 0.5rem;
612
+ background: hsl(var(--info) / 0.15);
613
+ color: hsl(var(--info));
614
+ border-radius: 4px;
615
+ font-size: 0.75rem;
616
+ white-space: nowrap;
617
+ }
618
+
619
+ /* Evolution Timeline */
620
+ .evolution-timeline {
621
+ display: flex;
622
+ flex-direction: column;
623
+ gap: 1rem;
624
+ }
625
+
626
+ .evolution-version {
627
+ padding: 1rem;
628
+ background: hsl(var(--muted));
629
+ border: 1px solid hsl(var(--border));
630
+ border-left: 3px solid hsl(var(--primary));
631
+ border-radius: 6px;
632
+ }
633
+
634
+ .version-header {
635
+ display: flex;
636
+ justify-content: space-between;
637
+ align-items: center;
638
+ margin-bottom: 0.5rem;
639
+ }
640
+
641
+ .version-number {
642
+ font-weight: 600;
643
+ color: hsl(var(--primary));
644
+ }
645
+
646
+ .version-date {
647
+ font-size: 0.8125rem;
648
+ color: hsl(var(--muted-foreground));
649
+ }
650
+
651
+ .version-reason {
652
+ font-size: 0.875rem;
653
+ color: hsl(var(--foreground));
654
+ margin-top: 0.5rem;
655
+ }
656
+
657
+ /* Empty State */
658
+ .empty-state {
659
+ text-align: center;
660
+ padding: 3rem 1rem;
661
+ color: hsl(var(--muted-foreground));
662
+ }
663
+
664
+ .empty-state i {
665
+ width: 48px;
666
+ height: 48px;
667
+ margin-bottom: 1rem;
668
+ opacity: 0.5;
669
+ }
670
+
671
+ .empty-state p {
672
+ font-size: 0.9375rem;
673
+ }
674
+
675
+ .empty-text {
676
+ color: hsl(var(--muted-foreground));
677
+ font-style: italic;
678
+ }
679
+
680
+ /* Notification Animations */
681
+ @keyframes slideInRight {
682
+ from {
683
+ opacity: 0;
684
+ transform: translateX(100px);
685
+ }
686
+ to {
687
+ opacity: 1;
688
+ transform: translateX(0);
689
+ }
690
+ }
691
+
692
+ @keyframes slideOutRight {
693
+ from {
694
+ opacity: 1;
695
+ transform: translateX(0);
696
+ }
697
+ to {
698
+ opacity: 0;
699
+ transform: translateX(100px);
700
+ }
701
+ }
702
+
703
+ /* ============================================
704
+ Knowledge Graph D3 Visualization Styles
705
+ ============================================ */
706
+
707
+ .knowledge-graph-container {
708
+ width: 100%;
709
+ min-height: 400px;
710
+ background: hsl(var(--muted) / 0.3);
711
+ border: 1px solid hsl(var(--border));
712
+ border-radius: 8px;
713
+ overflow: hidden;
714
+ }
715
+
716
+ .knowledge-graph-svg {
717
+ display: block;
718
+ width: 100%;
719
+ height: 100%;
720
+ }
721
+
722
+ .graph-content {
723
+ cursor: grab;
724
+ }
725
+
726
+ .graph-content:active {
727
+ cursor: grabbing;
728
+ }
729
+
730
+ .graph-edge {
731
+ stroke: hsl(var(--muted-foreground));
732
+ stroke-width: 1.5;
733
+ stroke-opacity: 0.6;
734
+ fill: none;
735
+ }
736
+
737
+ .graph-node {
738
+ cursor: pointer;
739
+ transition: all 0.2s ease;
740
+ }
741
+
742
+ .graph-node:hover {
743
+ filter: brightness(1.2);
744
+ stroke-width: 3;
745
+ }
746
+
747
+ .graph-label {
748
+ font-size: 11px;
749
+ fill: hsl(var(--foreground));
750
+ pointer-events: none;
751
+ user-select: none;
752
+ }
753
+
754
+ .graph-node-group.file .graph-node { fill: #3b82f6; }
755
+ .graph-node-group.function .graph-node { fill: #10b981; }
756
+ .graph-node-group.module .graph-node { fill: #8b5cf6; }
757
+ .graph-node-group.class .graph-node { fill: #f59e0b; }
758
+ .graph-node-group.entity .graph-node { fill: #6b7280; }
759
+
760
+ .graph-error,
761
+ .graph-empty-state {
762
+ display: flex;
763
+ flex-direction: column;
764
+ align-items: center;
765
+ justify-content: center;
766
+ min-height: 300px;
767
+ color: hsl(var(--muted-foreground));
768
+ text-align: center;
769
+ padding: 2rem;
770
+ }
771
+
772
+ .graph-error i,
773
+ .graph-empty-state i {
774
+ width: 48px;
775
+ height: 48px;
776
+ margin-bottom: 1rem;
777
+ opacity: 0.5;
778
+ }
779
+
780
+ .graph-error p,
781
+ .graph-empty-state p {
782
+ font-size: 0.9375rem;
783
+ margin: 0;
784
+ }
785
+
786
+ /* ============================================
787
+ Evolution Version Card Styles
788
+ ============================================ */
789
+
790
+ .version-card {
791
+ background: hsl(var(--card));
792
+ border: 1px solid hsl(var(--border));
793
+ border-left: 3px solid hsl(var(--primary));
794
+ border-radius: 8px;
795
+ padding: 1rem;
796
+ transition: all 0.2s ease;
797
+ }
798
+
799
+ .version-card:hover {
800
+ box-shadow: 0 2px 8px hsl(var(--foreground) / 0.08);
801
+ }
802
+
803
+ .version-card .version-header {
804
+ display: flex;
805
+ justify-content: space-between;
806
+ align-items: center;
807
+ margin-bottom: 0.75rem;
808
+ }
809
+
810
+ .version-card .version-info {
811
+ display: flex;
812
+ align-items: center;
813
+ gap: 0.75rem;
814
+ flex-wrap: wrap;
815
+ }
816
+
817
+ .version-card .version-number {
818
+ font-size: 0.875rem;
819
+ font-weight: 700;
820
+ color: hsl(var(--primary));
821
+ padding: 0.25rem 0.5rem;
822
+ background: hsl(var(--primary) / 0.1);
823
+ border-radius: 4px;
824
+ }
825
+
826
+ .version-card .version-date {
827
+ font-size: 0.8125rem;
828
+ color: hsl(var(--muted-foreground));
829
+ }
830
+
831
+ .version-content-preview {
832
+ font-size: 0.875rem;
833
+ line-height: 1.5;
834
+ color: hsl(var(--muted-foreground));
835
+ background: hsl(var(--muted) / 0.5);
836
+ padding: 0.75rem;
837
+ border-radius: 6px;
838
+ margin-bottom: 0.75rem;
839
+ white-space: pre-wrap;
840
+ word-break: break-word;
841
+ }
842
+
843
+ .version-diff-stats {
844
+ display: flex;
845
+ flex-wrap: wrap;
846
+ gap: 0.75rem;
847
+ margin-bottom: 0.75rem;
848
+ }
849
+
850
+ .diff-stat {
851
+ display: flex;
852
+ align-items: center;
853
+ gap: 0.375rem;
854
+ font-size: 0.75rem;
855
+ font-weight: 500;
856
+ padding: 0.25rem 0.625rem;
857
+ border-radius: 4px;
858
+ }
859
+
860
+ .diff-stat i {
861
+ width: 12px;
862
+ height: 12px;
863
+ }
864
+
865
+ .diff-stat.diff-added {
866
+ background: hsl(142 76% 36% / 0.15);
867
+ color: hsl(142 76% 30%);
868
+ }
869
+
870
+ .diff-stat.diff-modified {
871
+ background: hsl(38 92% 50% / 0.15);
872
+ color: hsl(38 92% 40%);
873
+ }
874
+
875
+ .diff-stat.diff-deleted {
876
+ background: hsl(0 84% 60% / 0.15);
877
+ color: hsl(0 84% 45%);
878
+ }
879
+
880
+ .version-card .version-reason {
881
+ font-size: 0.8125rem;
882
+ color: hsl(var(--foreground));
883
+ padding-top: 0.75rem;
884
+ border-top: 1px solid hsl(var(--border));
885
+ margin-top: 0;
886
+ }
887
+
888
+ .version-card .version-reason strong {
889
+ color: hsl(var(--muted-foreground));
890
+ font-weight: 600;
891
+ }
892
+
893
+ .evolution-empty-state {
894
+ display: flex;
895
+ flex-direction: column;
896
+ align-items: center;
897
+ justify-content: center;
898
+ min-height: 200px;
899
+ color: hsl(var(--muted-foreground));
900
+ text-align: center;
901
+ padding: 2rem;
902
+ }
903
+
904
+ .evolution-empty-state i {
905
+ width: 48px;
906
+ height: 48px;
907
+ margin-bottom: 1rem;
908
+ opacity: 0.5;
909
+ }
910
+
911
+ .evolution-empty-state p {
912
+ font-size: 0.9375rem;
913
+ margin: 0;
914
+ }
915
+
916
+ /* Relations Detail Styles */
917
+ .relations-detail h4 {
918
+ font-size: 1rem;
919
+ font-weight: 600;
920
+ margin-bottom: 1rem;
921
+ color: hsl(var(--foreground));
922
+ }
923
+
924
+ .clusters-list {
925
+ display: flex;
926
+ flex-direction: column;
927
+ gap: 1rem;
928
+ }
929
+
930
+ .relation-cluster-item {
931
+ padding: 1rem;
932
+ background: hsl(var(--muted) / 0.3);
933
+ border: 1px solid hsl(var(--border));
934
+ border-radius: 8px;
935
+ }
936
+
937
+ .relation-cluster-header {
938
+ display: flex;
939
+ align-items: center;
940
+ gap: 0.5rem;
941
+ margin-bottom: 0.75rem;
942
+ }
943
+
944
+ .relation-cluster-header i {
945
+ width: 18px;
946
+ height: 18px;
947
+ color: hsl(var(--primary));
948
+ }
949
+
950
+ .relation-cluster-header .cluster-name {
951
+ font-weight: 600;
952
+ color: hsl(var(--foreground));
953
+ }
954
+
955
+ .cluster-relations-list {
956
+ display: flex;
957
+ flex-wrap: wrap;
958
+ align-items: center;
959
+ gap: 0.5rem;
960
+ padding-top: 0.75rem;
961
+ border-top: 1px solid hsl(var(--border));
962
+ }
963
+
964
+ .relations-label {
965
+ font-size: 0.8125rem;
966
+ color: hsl(var(--muted-foreground));
967
+ }
968
+
969
+ .relation-tag {
970
+ display: inline-flex;
971
+ align-items: center;
972
+ gap: 0.375rem;
973
+ padding: 0.25rem 0.625rem;
974
+ background: hsl(var(--accent));
975
+ border-radius: 4px;
976
+ font-size: 0.8125rem;
977
+ }
978
+
979
+ .relation-tag i {
980
+ width: 12px;
981
+ height: 12px;
982
+ color: hsl(var(--muted-foreground));
983
+ }
984
+
985
+ .relation-tag .relation-type {
986
+ font-size: 0.6875rem;
987
+ padding: 0.125rem 0.375rem;
988
+ background: hsl(var(--primary) / 0.15);
989
+ color: hsl(var(--primary));
990
+ border-radius: 3px;
991
+ margin-left: 0.25rem;
992
+ }
993
+
994
+ .text-muted {
995
+ color: hsl(var(--muted-foreground));
996
+ font-size: 0.875rem;
997
+ }
998
+
999
+ /* Dark Mode Adjustments */
1000
+ [data-theme="dark"] .memory-card {
1001
+ background: #1e293b;
1002
+ border-color: #334155;
1003
+ }
1004
+
1005
+ [data-theme="dark"] .memory-card:hover {
1006
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1007
+ }
1008
+
1009
+ [data-theme="dark"] .detail-code {
1010
+ background: #0f172a;
1011
+ border-color: #334155;
1012
+ }
1013
+
1014
+ [data-theme="dark"] .entity-item,
1015
+ [data-theme="dark"] .relationship-item,
1016
+ [data-theme="dark"] .evolution-version {
1017
+ background: #1e293b;
1018
+ border-color: #334155;
1019
+ }
1020
+
1021
+ [data-theme="dark"] .knowledge-graph-container {
1022
+ background: #0f172a;
1023
+ border-color: #334155;
1024
+ }
1025
+
1026
+ [data-theme="dark"] .graph-label {
1027
+ fill: #e2e8f0;
1028
+ }
1029
+
1030
+ [data-theme="dark"] .graph-edge {
1031
+ stroke: #64748b;
1032
+ }
1033
+
1034
+ [data-theme="dark"] .version-card {
1035
+ background: #1e293b;
1036
+ border-color: #334155;
1037
+ }
1038
+
1039
+ [data-theme="dark"] .version-content-preview {
1040
+ background: #0f172a;
1041
+ }
1042
+
1043
+ /* ============================================
1044
+ Session Clustering Styles
1045
+ ============================================ */
1046
+
1047
+ .clusters-container {
1048
+ margin-top: 0;
1049
+ height: calc(100vh - 200px);
1050
+ min-height: 500px;
1051
+ }
1052
+
1053
+ .clusters-layout {
1054
+ display: grid;
1055
+ grid-template-columns: 320px 1fr;
1056
+ gap: 1.5rem;
1057
+ height: 100%;
1058
+ }
1059
+
1060
+ @media (max-width: 900px) {
1061
+ .clusters-layout {
1062
+ grid-template-columns: 1fr;
1063
+ }
1064
+ }
1065
+
1066
+ /* Clusters Sidebar */
1067
+ .clusters-sidebar {
1068
+ background: hsl(var(--card));
1069
+ border: 1px solid hsl(var(--border));
1070
+ border-radius: 8px;
1071
+ display: flex;
1072
+ flex-direction: column;
1073
+ overflow: hidden;
1074
+ }
1075
+
1076
+ .clusters-sidebar-header {
1077
+ display: flex;
1078
+ justify-content: space-between;
1079
+ align-items: center;
1080
+ padding: 1rem;
1081
+ border-bottom: 1px solid hsl(var(--border));
1082
+ background: hsl(var(--muted) / 0.3);
1083
+ }
1084
+
1085
+ .clusters-sidebar-header h4 {
1086
+ margin: 0;
1087
+ font-size: 0.9375rem;
1088
+ font-weight: 600;
1089
+ color: hsl(var(--foreground));
1090
+ }
1091
+
1092
+ .cluster-list {
1093
+ flex: 1;
1094
+ overflow-y: auto;
1095
+ padding: 0.5rem;
1096
+ }
1097
+
1098
+ /* Cluster Item */
1099
+ .cluster-item {
1100
+ display: flex;
1101
+ align-items: flex-start;
1102
+ gap: 0.75rem;
1103
+ padding: 0.875rem;
1104
+ border-radius: 6px;
1105
+ cursor: pointer;
1106
+ transition: all 0.2s ease;
1107
+ margin-bottom: 0.5rem;
1108
+ border: 1px solid transparent;
1109
+ }
1110
+
1111
+ .cluster-item:hover {
1112
+ background: hsl(var(--muted) / 0.5);
1113
+ }
1114
+
1115
+ .cluster-item.active {
1116
+ background: hsl(var(--primary) / 0.1);
1117
+ border-color: hsl(var(--primary) / 0.3);
1118
+ }
1119
+
1120
+ .cluster-icon {
1121
+ flex-shrink: 0;
1122
+ width: 36px;
1123
+ height: 36px;
1124
+ display: flex;
1125
+ align-items: center;
1126
+ justify-content: center;
1127
+ background: hsl(var(--muted));
1128
+ border-radius: 6px;
1129
+ color: hsl(var(--muted-foreground));
1130
+ }
1131
+
1132
+ .cluster-icon i {
1133
+ width: 18px;
1134
+ height: 18px;
1135
+ }
1136
+
1137
+ .cluster-item.active .cluster-icon {
1138
+ background: hsl(var(--primary) / 0.15);
1139
+ color: hsl(var(--primary));
1140
+ }
1141
+
1142
+ .cluster-info {
1143
+ flex: 1;
1144
+ min-width: 0;
1145
+ }
1146
+
1147
+ .cluster-name {
1148
+ font-weight: 500;
1149
+ font-size: 0.9375rem;
1150
+ color: hsl(var(--foreground));
1151
+ margin-bottom: 0.25rem;
1152
+ white-space: nowrap;
1153
+ overflow: hidden;
1154
+ text-overflow: ellipsis;
1155
+ }
1156
+
1157
+ .cluster-meta {
1158
+ display: flex;
1159
+ gap: 0.75rem;
1160
+ font-size: 0.75rem;
1161
+ color: hsl(var(--muted-foreground));
1162
+ }
1163
+
1164
+ /* Cluster Status Badges */
1165
+ .badge-active {
1166
+ background: hsl(142 76% 36% / 0.15);
1167
+ color: hsl(142 76% 36%);
1168
+ }
1169
+
1170
+ .badge-archived {
1171
+ background: hsl(var(--muted));
1172
+ color: hsl(var(--muted-foreground));
1173
+ }
1174
+
1175
+ .badge-pending {
1176
+ background: hsl(38 92% 50% / 0.15);
1177
+ color: hsl(38 92% 40%);
1178
+ }
1179
+
1180
+ /* Clusters Detail Panel */
1181
+ .clusters-detail {
1182
+ background: hsl(var(--card));
1183
+ border: 1px solid hsl(var(--border));
1184
+ border-radius: 8px;
1185
+ overflow: hidden;
1186
+ display: flex;
1187
+ flex-direction: column;
1188
+ }
1189
+
1190
+ .cluster-detail-content {
1191
+ padding: 1.5rem;
1192
+ flex: 1;
1193
+ overflow-y: auto;
1194
+ min-height: 0; /* Enable flexbox scrolling */
1195
+ }
1196
+
1197
+ .cluster-detail-content .empty-state {
1198
+ display: flex;
1199
+ flex-direction: column;
1200
+ align-items: center;
1201
+ justify-content: center;
1202
+ height: 100%;
1203
+ min-height: 300px;
1204
+ }
1205
+
1206
+ /* Cluster Detail View */
1207
+ .cluster-detail {
1208
+ display: flex;
1209
+ flex-direction: column;
1210
+ gap: 1.5rem;
1211
+ }
1212
+
1213
+ .cluster-header {
1214
+ display: flex;
1215
+ justify-content: space-between;
1216
+ align-items: center;
1217
+ }
1218
+
1219
+ .cluster-header h3 {
1220
+ margin: 0;
1221
+ font-size: 1.25rem;
1222
+ font-weight: 600;
1223
+ color: hsl(var(--foreground));
1224
+ }
1225
+
1226
+ .cluster-actions {
1227
+ display: flex;
1228
+ gap: 0.5rem;
1229
+ }
1230
+
1231
+ .cluster-description {
1232
+ color: hsl(var(--muted-foreground));
1233
+ font-size: 0.9375rem;
1234
+ line-height: 1.6;
1235
+ margin: 0;
1236
+ }
1237
+
1238
+ .cluster-intent {
1239
+ padding: 0.75rem 1rem;
1240
+ background: hsl(var(--muted) / 0.5);
1241
+ border-radius: 6px;
1242
+ font-size: 0.875rem;
1243
+ color: hsl(var(--foreground));
1244
+ }
1245
+
1246
+ .cluster-intent strong {
1247
+ color: hsl(var(--primary));
1248
+ }
1249
+
1250
+ /* Cluster Sections */
1251
+ .cluster-timeline,
1252
+ .cluster-relations {
1253
+ padding-top: 1rem;
1254
+ border-top: 1px solid hsl(var(--border));
1255
+ }
1256
+
1257
+ .cluster-timeline h4,
1258
+ .cluster-relations h4 {
1259
+ display: flex;
1260
+ align-items: center;
1261
+ gap: 0.5rem;
1262
+ margin: 0 0 1rem 0;
1263
+ font-size: 1rem;
1264
+ font-weight: 600;
1265
+ color: hsl(var(--foreground));
1266
+ }
1267
+
1268
+ .cluster-timeline h4 i,
1269
+ .cluster-relations h4 i {
1270
+ width: 18px;
1271
+ height: 18px;
1272
+ color: hsl(var(--primary));
1273
+ }
1274
+
1275
+ /* Session Timeline */
1276
+ .timeline {
1277
+ display: flex;
1278
+ flex-direction: column;
1279
+ gap: 1rem;
1280
+ max-width: 100%;
1281
+ }
1282
+
1283
+ /* Override conflicting timeline-item styles from other CSS files */
1284
+ .cluster-timeline .timeline .timeline-item {
1285
+ display: flex;
1286
+ gap: 1rem;
1287
+ position: relative;
1288
+ /* Reset card-like appearance from other CSS */
1289
+ background: transparent;
1290
+ border: none;
1291
+ border-radius: 0;
1292
+ padding: 0;
1293
+ margin-bottom: 0;
1294
+ /* Remove height constraints */
1295
+ min-height: auto;
1296
+ max-height: none;
1297
+ overflow: visible;
1298
+ cursor: default;
1299
+ }
1300
+
1301
+ .cluster-timeline .timeline .timeline-item::before {
1302
+ content: '';
1303
+ position: absolute;
1304
+ left: 0.6875rem;
1305
+ top: 2rem;
1306
+ bottom: -1rem;
1307
+ width: 2px;
1308
+ background: hsl(var(--border));
1309
+ }
1310
+
1311
+ .cluster-timeline .timeline .timeline-item:last-child::before {
1312
+ display: none;
1313
+ }
1314
+
1315
+ .timeline-marker {
1316
+ flex-shrink: 0;
1317
+ width: 1.5rem;
1318
+ height: 1.5rem;
1319
+ display: flex;
1320
+ align-items: center;
1321
+ justify-content: center;
1322
+ z-index: 1;
1323
+ }
1324
+
1325
+ .timeline-number {
1326
+ width: 1.5rem;
1327
+ height: 1.5rem;
1328
+ display: flex;
1329
+ align-items: center;
1330
+ justify-content: center;
1331
+ background: hsl(var(--primary));
1332
+ color: white;
1333
+ border-radius: 50%;
1334
+ font-size: 0.75rem;
1335
+ font-weight: 600;
1336
+ }
1337
+
1338
+ .timeline-content {
1339
+ flex: 1;
1340
+ background: hsl(var(--card));
1341
+ border: 1px solid hsl(var(--border));
1342
+ border-radius: 8px;
1343
+ padding: 1rem;
1344
+ transition: all 0.2s ease;
1345
+ cursor: pointer;
1346
+ }
1347
+
1348
+ .timeline-content:hover {
1349
+ border-color: hsl(var(--primary) / 0.3);
1350
+ box-shadow: 0 2px 8px hsl(var(--foreground) / 0.05);
1351
+ }
1352
+
1353
+ .timeline-content.expanded {
1354
+ border-color: hsl(var(--primary) / 0.5);
1355
+ background: hsl(var(--primary) / 0.02);
1356
+ }
1357
+
1358
+ .timeline-header {
1359
+ display: flex;
1360
+ align-items: center;
1361
+ justify-content: space-between;
1362
+ gap: 0.5rem;
1363
+ margin-bottom: 0.75rem;
1364
+ padding-bottom: 0.75rem;
1365
+ border-bottom: 1px solid hsl(var(--border));
1366
+ }
1367
+
1368
+ .session-id {
1369
+ font-family: 'Monaco', 'Menlo', monospace;
1370
+ font-size: 0.75rem;
1371
+ color: hsl(var(--muted-foreground));
1372
+ background: hsl(var(--muted));
1373
+ padding: 0.25rem 0.5rem;
1374
+ border-radius: 4px;
1375
+ }
1376
+
1377
+ /* Session Type Badges */
1378
+ .badge-core_memory {
1379
+ background: hsl(260 70% 50% / 0.15);
1380
+ color: hsl(260 70% 50%);
1381
+ }
1382
+
1383
+ .badge-workflow {
1384
+ background: hsl(200 80% 50% / 0.15);
1385
+ color: hsl(200 80% 45%);
1386
+ }
1387
+
1388
+ .badge-cli_history {
1389
+ background: hsl(30 80% 50% / 0.15);
1390
+ color: hsl(30 80% 40%);
1391
+ }
1392
+
1393
+ .session-title {
1394
+ font-weight: 600;
1395
+ font-size: 0.9375rem;
1396
+ color: hsl(var(--foreground));
1397
+ line-height: 1.4;
1398
+ margin-bottom: 0.5rem;
1399
+ }
1400
+
1401
+ .session-summary {
1402
+ font-size: 0.875rem;
1403
+ color: hsl(var(--muted-foreground));
1404
+ line-height: 1.5;
1405
+ margin-bottom: 0.5rem;
1406
+ }
1407
+
1408
+ .session-tokens {
1409
+ display: inline-flex;
1410
+ align-items: center;
1411
+ gap: 0.375rem;
1412
+ font-size: 0.75rem;
1413
+ color: hsl(var(--muted-foreground));
1414
+ padding: 0.25rem 0.5rem;
1415
+ background: hsl(var(--muted));
1416
+ border-radius: 4px;
1417
+ margin-bottom: 0.75rem;
1418
+ }
1419
+
1420
+ .session-tokens i {
1421
+ width: 12px;
1422
+ height: 12px;
1423
+ }
1424
+
1425
+ /* Expandable timeline card - DEPRECATED, use clickable instead */
1426
+ .timeline-content.expandable {
1427
+ position: relative;
1428
+ }
1429
+
1430
+ /* Clickable timeline card */
1431
+ .timeline-content.clickable {
1432
+ position: relative;
1433
+ }
1434
+
1435
+ .timeline-content.clickable:hover {
1436
+ border-color: hsl(var(--primary) / 0.5);
1437
+ background: hsl(var(--primary) / 0.02);
1438
+ }
1439
+
1440
+ .timeline-content.clickable:active {
1441
+ transform: scale(0.995);
1442
+ }
1443
+
1444
+ /* Timeline card footer with preview hint */
1445
+ .timeline-card-footer {
1446
+ display: flex;
1447
+ justify-content: space-between;
1448
+ align-items: center;
1449
+ margin-top: 0.75rem;
1450
+ padding-top: 0.75rem;
1451
+ border-top: 1px solid hsl(var(--border));
1452
+ }
1453
+
1454
+ .preview-hint {
1455
+ display: inline-flex;
1456
+ align-items: center;
1457
+ gap: 0.375rem;
1458
+ font-size: 0.75rem;
1459
+ color: hsl(var(--muted-foreground));
1460
+ transition: color 0.2s;
1461
+ }
1462
+
1463
+ .preview-hint i {
1464
+ width: 14px;
1465
+ height: 14px;
1466
+ }
1467
+
1468
+ .timeline-content:hover .preview-hint {
1469
+ color: hsl(var(--primary));
1470
+ }
1471
+
1472
+ /* CSS Arrow for expand hint - DEPRECATED */
1473
+ .expand-arrow {
1474
+ display: flex;
1475
+ justify-content: center;
1476
+ padding: 0.75rem 0 0.25rem;
1477
+ opacity: 0.5;
1478
+ transition: opacity 0.2s;
1479
+ }
1480
+
1481
+ .timeline-content:hover .expand-arrow {
1482
+ opacity: 1;
1483
+ }
1484
+
1485
+ .expand-arrow::after {
1486
+ content: '';
1487
+ width: 10px;
1488
+ height: 10px;
1489
+ border-right: 2px solid hsl(var(--primary));
1490
+ border-bottom: 2px solid hsl(var(--primary));
1491
+ transform: rotate(45deg);
1492
+ transition: transform 0.2s ease;
1493
+ }
1494
+
1495
+ .timeline-content.expanded .expand-arrow::after {
1496
+ transform: rotate(-135deg) translateY(3px);
1497
+ }
1498
+
1499
+ /* Expanded detail section */
1500
+ .session-detail-expand {
1501
+ display: none;
1502
+ margin-top: 1rem;
1503
+ padding-top: 1rem;
1504
+ border-top: 1px solid hsl(var(--border));
1505
+ animation: fadeIn 0.2s ease-out;
1506
+ }
1507
+
1508
+ .timeline-content.expanded .session-detail-expand {
1509
+ display: block;
1510
+ }
1511
+
1512
+ .full-summary {
1513
+ font-size: 0.875rem;
1514
+ color: hsl(var(--foreground));
1515
+ line-height: 1.6;
1516
+ white-space: pre-wrap;
1517
+ word-break: break-word;
1518
+ margin-bottom: 1rem;
1519
+ padding: 0.75rem;
1520
+ background: hsl(var(--muted) / 0.3);
1521
+ border-radius: 6px;
1522
+ }
1523
+
1524
+ .session-detail-expand .session-tokens {
1525
+ font-size: 0.75rem;
1526
+ color: hsl(var(--muted-foreground));
1527
+ margin-bottom: 1rem;
1528
+ }
1529
+
1530
+ .timeline-actions {
1531
+ display: flex;
1532
+ gap: 0.5rem;
1533
+ padding-top: 0.75rem;
1534
+ border-top: 1px solid hsl(var(--border));
1535
+ }
1536
+
1537
+ .btn-xs {
1538
+ padding: 0.375rem 0.75rem;
1539
+ font-size: 0.75rem;
1540
+ display: inline-flex;
1541
+ align-items: center;
1542
+ gap: 0.375rem;
1543
+ border-radius: 4px;
1544
+ cursor: pointer;
1545
+ transition: all 0.2s;
1546
+ }
1547
+
1548
+ .btn-xs i {
1549
+ width: 14px;
1550
+ height: 14px;
1551
+ }
1552
+
1553
+ .btn-ghost {
1554
+ background: transparent;
1555
+ border: 1px solid hsl(var(--border));
1556
+ color: hsl(var(--muted-foreground));
1557
+ }
1558
+
1559
+ .btn-ghost:hover {
1560
+ background: hsl(var(--muted));
1561
+ color: hsl(var(--foreground));
1562
+ border-color: hsl(var(--muted-foreground));
1563
+ }
1564
+
1565
+ .btn-ghost.btn-danger:hover {
1566
+ background: hsl(var(--destructive) / 0.1);
1567
+ color: hsl(var(--destructive));
1568
+ border-color: hsl(var(--destructive) / 0.3);
1569
+ }
1570
+
1571
+ /* Relations List */
1572
+ .relations-list {
1573
+ display: flex;
1574
+ flex-direction: column;
1575
+ gap: 0.5rem;
1576
+ }
1577
+
1578
+ .relation-item {
1579
+ display: flex;
1580
+ align-items: center;
1581
+ gap: 0.75rem;
1582
+ padding: 0.625rem 0.875rem;
1583
+ background: hsl(var(--muted) / 0.3);
1584
+ border: 1px solid hsl(var(--border));
1585
+ border-radius: 6px;
1586
+ font-size: 0.875rem;
1587
+ }
1588
+
1589
+ .relation-item i {
1590
+ width: 14px;
1591
+ height: 14px;
1592
+ color: hsl(var(--muted-foreground));
1593
+ }
1594
+
1595
+ .relation-type {
1596
+ padding: 0.125rem 0.5rem;
1597
+ background: hsl(var(--primary) / 0.1);
1598
+ color: hsl(var(--primary));
1599
+ border-radius: 3px;
1600
+ font-size: 0.75rem;
1601
+ font-weight: 500;
1602
+ }
1603
+
1604
+ .relation-item a {
1605
+ color: hsl(var(--primary));
1606
+ text-decoration: none;
1607
+ }
1608
+
1609
+ .relation-item a:hover {
1610
+ text-decoration: underline;
1611
+ }
1612
+
1613
+ /* Dark Mode for Clusters */
1614
+ [data-theme="dark"] .clusters-sidebar,
1615
+ [data-theme="dark"] .clusters-detail {
1616
+ background: #1e293b;
1617
+ border-color: #334155;
1618
+ }
1619
+
1620
+ [data-theme="dark"] .tab-nav {
1621
+ background: rgba(51, 65, 85, 0.5);
1622
+ }
1623
+
1624
+ [data-theme="dark"] .tab-btn.active {
1625
+ background: #1e293b;
1626
+ }
1627
+
1628
+ [data-theme="dark"] .clusters-sidebar-header {
1629
+ background: rgba(15, 23, 42, 0.5);
1630
+ border-color: #334155;
1631
+ }
1632
+
1633
+ [data-theme="dark"] .cluster-item:hover {
1634
+ background: rgba(51, 65, 85, 0.5);
1635
+ }
1636
+
1637
+ [data-theme="dark"] .cluster-item.active {
1638
+ background: rgba(59, 130, 246, 0.15);
1639
+ border-color: rgba(59, 130, 246, 0.3);
1640
+ }
1641
+
1642
+ [data-theme="dark"] .timeline-content,
1643
+ [data-theme="dark"] .cluster-intent,
1644
+ [data-theme="dark"] .relation-item {
1645
+ background: rgba(15, 23, 42, 0.5);
1646
+ border-color: #334155;
1647
+ }
1648
+
1649
+ /* Embedding Hint Styles */
1650
+ .embedding-hint {
1651
+ display: flex;
1652
+ align-items: center;
1653
+ gap: 8px;
1654
+ padding: 10px 12px;
1655
+ margin-bottom: 12px;
1656
+ border-radius: 8px;
1657
+ font-size: 12px;
1658
+ line-height: 1.4;
1659
+ }
1660
+
1661
+ .embedding-hint i {
1662
+ flex-shrink: 0;
1663
+ width: 16px;
1664
+ height: 16px;
1665
+ }
1666
+
1667
+ .embedding-hint.warning {
1668
+ background: rgba(245, 158, 11, 0.1);
1669
+ border: 1px solid rgba(245, 158, 11, 0.3);
1670
+ color: #d97706;
1671
+ }
1672
+
1673
+ .embedding-hint.info {
1674
+ background: rgba(59, 130, 246, 0.1);
1675
+ border: 1px solid rgba(59, 130, 246, 0.3);
1676
+ color: #3b82f6;
1677
+ }
1678
+
1679
+ .embedding-hint .hint-link {
1680
+ margin-left: auto;
1681
+ color: inherit;
1682
+ text-decoration: underline;
1683
+ white-space: nowrap;
1684
+ }
1685
+
1686
+ .embedding-hint .btn-xs {
1687
+ margin-left: auto;
1688
+ padding: 4px 8px;
1689
+ font-size: 11px;
1690
+ }
1691
+
1692
+ [data-theme="dark"] .embedding-hint.warning {
1693
+ background: rgba(245, 158, 11, 0.15);
1694
+ color: #fbbf24;
1695
+ }
1696
+
1697
+ [data-theme="dark"] .embedding-hint.info {
1698
+ background: rgba(59, 130, 246, 0.15);
1699
+ color: #60a5fa;
1700
+ }