claude-code-workflow 6.2.2 → 6.2.4

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 (346) hide show
  1. package/ccw/dist/cli.d.ts +2 -0
  2. package/ccw/dist/cli.d.ts.map +1 -0
  3. package/ccw/dist/cli.js +219 -0
  4. package/ccw/dist/cli.js.map +1 -0
  5. package/ccw/dist/commands/cli.d.ts +32 -0
  6. package/ccw/dist/commands/cli.d.ts.map +1 -0
  7. package/ccw/dist/commands/cli.js +619 -0
  8. package/ccw/dist/commands/cli.js.map +1 -0
  9. package/ccw/dist/commands/core-memory.d.ts +32 -0
  10. package/ccw/dist/commands/core-memory.d.ts.map +1 -0
  11. package/ccw/dist/commands/core-memory.js +640 -0
  12. package/ccw/dist/commands/core-memory.js.map +1 -0
  13. package/ccw/dist/commands/hook.d.ts +16 -0
  14. package/ccw/dist/commands/hook.d.ts.map +1 -0
  15. package/ccw/dist/commands/hook.js +276 -0
  16. package/ccw/dist/commands/hook.js.map +1 -0
  17. package/ccw/dist/commands/install.d.ts +12 -0
  18. package/ccw/dist/commands/install.d.ts.map +1 -0
  19. package/ccw/dist/commands/install.js +443 -0
  20. package/ccw/dist/commands/install.js.map +1 -0
  21. package/ccw/dist/commands/list.d.ts +5 -0
  22. package/ccw/dist/commands/list.d.ts.map +1 -0
  23. package/ccw/dist/commands/list.js +32 -0
  24. package/ccw/dist/commands/list.js.map +1 -0
  25. package/ccw/dist/commands/memory.d.ts +57 -0
  26. package/ccw/dist/commands/memory.d.ts.map +1 -0
  27. package/ccw/dist/commands/memory.js +890 -0
  28. package/ccw/dist/commands/memory.js.map +1 -0
  29. package/ccw/dist/commands/serve.d.ts +12 -0
  30. package/ccw/dist/commands/serve.d.ts.map +1 -0
  31. package/ccw/dist/commands/serve.js +63 -0
  32. package/ccw/dist/commands/serve.js.map +1 -0
  33. package/ccw/dist/commands/session-path-resolver.d.ts +45 -0
  34. package/ccw/dist/commands/session-path-resolver.d.ts.map +1 -0
  35. package/ccw/dist/commands/session-path-resolver.js +302 -0
  36. package/ccw/dist/commands/session-path-resolver.js.map +1 -0
  37. package/ccw/dist/commands/session.d.ts +12 -0
  38. package/ccw/dist/commands/session.d.ts.map +1 -0
  39. package/ccw/dist/commands/session.js +954 -0
  40. package/ccw/dist/commands/session.js.map +1 -0
  41. package/ccw/dist/commands/stop.d.ts +11 -0
  42. package/ccw/dist/commands/stop.d.ts.map +1 -0
  43. package/ccw/dist/commands/stop.js +96 -0
  44. package/ccw/dist/commands/stop.js.map +1 -0
  45. package/ccw/dist/commands/tool.d.ts +29 -0
  46. package/ccw/dist/commands/tool.d.ts.map +1 -0
  47. package/ccw/dist/commands/tool.js +173 -0
  48. package/ccw/dist/commands/tool.js.map +1 -0
  49. package/ccw/dist/commands/uninstall.d.ts +9 -0
  50. package/ccw/dist/commands/uninstall.d.ts.map +1 -0
  51. package/ccw/dist/commands/uninstall.js +239 -0
  52. package/ccw/dist/commands/uninstall.js.map +1 -0
  53. package/ccw/dist/commands/upgrade.d.ts +10 -0
  54. package/ccw/dist/commands/upgrade.d.ts.map +1 -0
  55. package/ccw/dist/commands/upgrade.js +288 -0
  56. package/ccw/dist/commands/upgrade.js.map +1 -0
  57. package/ccw/dist/commands/view.d.ts +14 -0
  58. package/ccw/dist/commands/view.d.ts.map +1 -0
  59. package/ccw/dist/commands/view.js +100 -0
  60. package/ccw/dist/commands/view.js.map +1 -0
  61. package/ccw/dist/config/storage-paths.d.ts +184 -0
  62. package/ccw/dist/config/storage-paths.d.ts.map +1 -0
  63. package/ccw/dist/config/storage-paths.js +536 -0
  64. package/ccw/dist/config/storage-paths.js.map +1 -0
  65. package/ccw/dist/core/cache-manager.d.ts +80 -0
  66. package/ccw/dist/core/cache-manager.d.ts.map +1 -0
  67. package/ccw/dist/core/cache-manager.js +260 -0
  68. package/ccw/dist/core/cache-manager.js.map +1 -0
  69. package/ccw/dist/core/claude-freshness.d.ts +53 -0
  70. package/ccw/dist/core/claude-freshness.d.ts.map +1 -0
  71. package/ccw/dist/core/claude-freshness.js +232 -0
  72. package/ccw/dist/core/claude-freshness.js.map +1 -0
  73. package/ccw/dist/core/core-memory-store.d.ts +320 -0
  74. package/ccw/dist/core/core-memory-store.d.ts.map +1 -0
  75. package/ccw/dist/core/core-memory-store.js +1177 -0
  76. package/ccw/dist/core/core-memory-store.js.map +1 -0
  77. package/ccw/dist/core/dashboard-generator-patch.d.ts +2 -0
  78. package/ccw/dist/core/dashboard-generator-patch.d.ts.map +1 -0
  79. package/ccw/dist/core/dashboard-generator-patch.js +48 -0
  80. package/ccw/dist/core/dashboard-generator-patch.js.map +1 -0
  81. package/ccw/dist/core/dashboard-generator.d.ts +8 -0
  82. package/ccw/dist/core/dashboard-generator.d.ts.map +1 -0
  83. package/ccw/dist/core/dashboard-generator.js +695 -0
  84. package/ccw/dist/core/dashboard-generator.js.map +1 -0
  85. package/ccw/dist/core/data-aggregator.d.ts +145 -0
  86. package/ccw/dist/core/data-aggregator.d.ts.map +1 -0
  87. package/ccw/dist/core/data-aggregator.js +416 -0
  88. package/ccw/dist/core/data-aggregator.js.map +1 -0
  89. package/ccw/dist/core/history-importer.d.ts +102 -0
  90. package/ccw/dist/core/history-importer.d.ts.map +1 -0
  91. package/ccw/dist/core/history-importer.js +493 -0
  92. package/ccw/dist/core/history-importer.js.map +1 -0
  93. package/ccw/dist/core/lite-scanner-complete.d.ts +81 -0
  94. package/ccw/dist/core/lite-scanner-complete.d.ts.map +1 -0
  95. package/ccw/dist/core/lite-scanner-complete.js +368 -0
  96. package/ccw/dist/core/lite-scanner-complete.js.map +1 -0
  97. package/ccw/dist/core/lite-scanner.d.ts +81 -0
  98. package/ccw/dist/core/lite-scanner.d.ts.map +1 -0
  99. package/ccw/dist/core/lite-scanner.js +368 -0
  100. package/ccw/dist/core/lite-scanner.js.map +1 -0
  101. package/ccw/dist/core/manifest.d.ts +88 -0
  102. package/ccw/dist/core/manifest.d.ts.map +1 -0
  103. package/ccw/dist/core/manifest.js +214 -0
  104. package/ccw/dist/core/manifest.js.map +1 -0
  105. package/ccw/dist/core/memory-embedder-bridge.d.ts +83 -0
  106. package/ccw/dist/core/memory-embedder-bridge.d.ts.map +1 -0
  107. package/ccw/dist/core/memory-embedder-bridge.js +181 -0
  108. package/ccw/dist/core/memory-embedder-bridge.js.map +1 -0
  109. package/ccw/dist/core/memory-store.d.ts +249 -0
  110. package/ccw/dist/core/memory-store.d.ts.map +1 -0
  111. package/ccw/dist/core/memory-store.js +781 -0
  112. package/ccw/dist/core/memory-store.js.map +1 -0
  113. package/ccw/dist/core/routes/ccw-routes.d.ts +20 -0
  114. package/ccw/dist/core/routes/ccw-routes.d.ts.map +1 -0
  115. package/ccw/dist/core/routes/ccw-routes.js +70 -0
  116. package/ccw/dist/core/routes/ccw-routes.js.map +1 -0
  117. package/ccw/dist/core/routes/claude-routes.d.ts +19 -0
  118. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -0
  119. package/ccw/dist/core/routes/claude-routes.js +1017 -0
  120. package/ccw/dist/core/routes/claude-routes.js.map +1 -0
  121. package/ccw/dist/core/routes/cli-routes.d.ts +20 -0
  122. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -0
  123. package/ccw/dist/core/routes/cli-routes.js +468 -0
  124. package/ccw/dist/core/routes/cli-routes.js.map +1 -0
  125. package/ccw/dist/core/routes/codexlens-routes.d.ts +20 -0
  126. package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -0
  127. package/ccw/dist/core/routes/codexlens-routes.js +754 -0
  128. package/ccw/dist/core/routes/codexlens-routes.js.map +1 -0
  129. package/ccw/dist/core/routes/core-memory-routes.d.ts +21 -0
  130. package/ccw/dist/core/routes/core-memory-routes.d.ts.map +1 -0
  131. package/ccw/dist/core/routes/core-memory-routes.js +520 -0
  132. package/ccw/dist/core/routes/core-memory-routes.js.map +1 -0
  133. package/ccw/dist/core/routes/files-routes.d.ts +20 -0
  134. package/ccw/dist/core/routes/files-routes.d.ts.map +1 -0
  135. package/ccw/dist/core/routes/files-routes.js +374 -0
  136. package/ccw/dist/core/routes/files-routes.js.map +1 -0
  137. package/ccw/dist/core/routes/graph-routes.d.ts +20 -0
  138. package/ccw/dist/core/routes/graph-routes.d.ts.map +1 -0
  139. package/ccw/dist/core/routes/graph-routes.js +517 -0
  140. package/ccw/dist/core/routes/graph-routes.js.map +1 -0
  141. package/ccw/dist/core/routes/help-routes.d.ts +20 -0
  142. package/ccw/dist/core/routes/help-routes.d.ts.map +1 -0
  143. package/ccw/dist/core/routes/help-routes.js +250 -0
  144. package/ccw/dist/core/routes/help-routes.js.map +1 -0
  145. package/ccw/dist/core/routes/hooks-routes.d.ts +21 -0
  146. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -0
  147. package/ccw/dist/core/routes/hooks-routes.js +346 -0
  148. package/ccw/dist/core/routes/hooks-routes.js.map +1 -0
  149. package/ccw/dist/core/routes/mcp-routes.d.ts +20 -0
  150. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -0
  151. package/ccw/dist/core/routes/mcp-routes.js +1129 -0
  152. package/ccw/dist/core/routes/mcp-routes.js.map +1 -0
  153. package/ccw/dist/core/routes/mcp-templates-db.d.ts +54 -0
  154. package/ccw/dist/core/routes/mcp-templates-db.d.ts.map +1 -0
  155. package/ccw/dist/core/routes/mcp-templates-db.js +226 -0
  156. package/ccw/dist/core/routes/mcp-templates-db.js.map +1 -0
  157. package/ccw/dist/core/routes/memory-routes.d.ts +21 -0
  158. package/ccw/dist/core/routes/memory-routes.d.ts.map +1 -0
  159. package/ccw/dist/core/routes/memory-routes.js +1095 -0
  160. package/ccw/dist/core/routes/memory-routes.js.map +1 -0
  161. package/ccw/dist/core/routes/rules-routes.d.ts +20 -0
  162. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -0
  163. package/ccw/dist/core/routes/rules-routes.js +442 -0
  164. package/ccw/dist/core/routes/rules-routes.js.map +1 -0
  165. package/ccw/dist/core/routes/session-routes.d.ts +20 -0
  166. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -0
  167. package/ccw/dist/core/routes/session-routes.js +423 -0
  168. package/ccw/dist/core/routes/session-routes.js.map +1 -0
  169. package/ccw/dist/core/routes/skills-routes.d.ts +20 -0
  170. package/ccw/dist/core/routes/skills-routes.d.ts.map +1 -0
  171. package/ccw/dist/core/routes/skills-routes.js +533 -0
  172. package/ccw/dist/core/routes/skills-routes.js.map +1 -0
  173. package/ccw/dist/core/routes/status-routes.d.ts +20 -0
  174. package/ccw/dist/core/routes/status-routes.d.ts.map +1 -0
  175. package/ccw/dist/core/routes/status-routes.js +38 -0
  176. package/ccw/dist/core/routes/status-routes.js.map +1 -0
  177. package/ccw/dist/core/routes/system-routes.d.ts +22 -0
  178. package/ccw/dist/core/routes/system-routes.d.ts.map +1 -0
  179. package/ccw/dist/core/routes/system-routes.js +354 -0
  180. package/ccw/dist/core/routes/system-routes.js.map +1 -0
  181. package/ccw/dist/core/server.d.ts +17 -0
  182. package/ccw/dist/core/server.d.ts.map +1 -0
  183. package/ccw/dist/core/server.js +386 -0
  184. package/ccw/dist/core/server.js.map +1 -0
  185. package/ccw/dist/core/session-clustering-service.d.ts +153 -0
  186. package/ccw/dist/core/session-clustering-service.d.ts.map +1 -0
  187. package/ccw/dist/core/session-clustering-service.js +1065 -0
  188. package/ccw/dist/core/session-clustering-service.js.map +1 -0
  189. package/ccw/dist/core/session-scanner.d.ts +32 -0
  190. package/ccw/dist/core/session-scanner.d.ts.map +1 -0
  191. package/ccw/dist/core/session-scanner.js +253 -0
  192. package/ccw/dist/core/session-scanner.js.map +1 -0
  193. package/ccw/dist/core/websocket.d.ts +23 -0
  194. package/ccw/dist/core/websocket.d.ts.map +1 -0
  195. package/ccw/dist/core/websocket.js +168 -0
  196. package/ccw/dist/core/websocket.js.map +1 -0
  197. package/ccw/dist/index.d.ts +10 -0
  198. package/ccw/dist/index.d.ts.map +1 -0
  199. package/ccw/dist/index.js +10 -0
  200. package/ccw/dist/index.js.map +1 -0
  201. package/ccw/dist/mcp-server/index.d.ts +7 -0
  202. package/ccw/dist/mcp-server/index.d.ts.map +1 -0
  203. package/ccw/dist/mcp-server/index.js +157 -0
  204. package/ccw/dist/mcp-server/index.js.map +1 -0
  205. package/ccw/dist/tools/classify-folders.d.ts +26 -0
  206. package/ccw/dist/tools/classify-folders.d.ts.map +1 -0
  207. package/ccw/dist/tools/classify-folders.js +201 -0
  208. package/ccw/dist/tools/classify-folders.js.map +1 -0
  209. package/ccw/dist/tools/cli-config-manager.d.ts +62 -0
  210. package/ccw/dist/tools/cli-config-manager.d.ts.map +1 -0
  211. package/ccw/dist/tools/cli-config-manager.js +221 -0
  212. package/ccw/dist/tools/cli-config-manager.js.map +1 -0
  213. package/ccw/dist/tools/cli-executor.d.ts +373 -0
  214. package/ccw/dist/tools/cli-executor.d.ts.map +1 -0
  215. package/ccw/dist/tools/cli-executor.js +1625 -0
  216. package/ccw/dist/tools/cli-executor.js.map +1 -0
  217. package/ccw/dist/tools/cli-history-store.d.ts +330 -0
  218. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -0
  219. package/ccw/dist/tools/cli-history-store.js +916 -0
  220. package/ccw/dist/tools/cli-history-store.js.map +1 -0
  221. package/ccw/dist/tools/codex-lens.d.ts +118 -0
  222. package/ccw/dist/tools/codex-lens.d.ts.map +1 -0
  223. package/ccw/dist/tools/codex-lens.js +962 -0
  224. package/ccw/dist/tools/codex-lens.js.map +1 -0
  225. package/ccw/dist/tools/convert-tokens-to-css.d.ts +14 -0
  226. package/ccw/dist/tools/convert-tokens-to-css.d.ts.map +1 -0
  227. package/ccw/dist/tools/convert-tokens-to-css.js +244 -0
  228. package/ccw/dist/tools/convert-tokens-to-css.js.map +1 -0
  229. package/ccw/dist/tools/core-memory.d.ts +66 -0
  230. package/ccw/dist/tools/core-memory.d.ts.map +1 -0
  231. package/ccw/dist/tools/core-memory.js +324 -0
  232. package/ccw/dist/tools/core-memory.js.map +1 -0
  233. package/ccw/dist/tools/detect-changed-modules.d.ts +24 -0
  234. package/ccw/dist/tools/detect-changed-modules.d.ts.map +1 -0
  235. package/ccw/dist/tools/detect-changed-modules.js +277 -0
  236. package/ccw/dist/tools/detect-changed-modules.js.map +1 -0
  237. package/ccw/dist/tools/discover-design-files.d.ts +36 -0
  238. package/ccw/dist/tools/discover-design-files.d.ts.map +1 -0
  239. package/ccw/dist/tools/discover-design-files.js +147 -0
  240. package/ccw/dist/tools/discover-design-files.js.map +1 -0
  241. package/ccw/dist/tools/edit-file.d.ts +28 -0
  242. package/ccw/dist/tools/edit-file.d.ts.map +1 -0
  243. package/ccw/dist/tools/edit-file.js +479 -0
  244. package/ccw/dist/tools/edit-file.js.map +1 -0
  245. package/ccw/dist/tools/generate-module-docs.d.ts +22 -0
  246. package/ccw/dist/tools/generate-module-docs.d.ts.map +1 -0
  247. package/ccw/dist/tools/generate-module-docs.js +379 -0
  248. package/ccw/dist/tools/generate-module-docs.js.map +1 -0
  249. package/ccw/dist/tools/get-modules-by-depth.d.ts +15 -0
  250. package/ccw/dist/tools/get-modules-by-depth.d.ts.map +1 -0
  251. package/ccw/dist/tools/get-modules-by-depth.js +296 -0
  252. package/ccw/dist/tools/get-modules-by-depth.js.map +1 -0
  253. package/ccw/dist/tools/index.d.ts +55 -0
  254. package/ccw/dist/tools/index.d.ts.map +1 -0
  255. package/ccw/dist/tools/index.js +304 -0
  256. package/ccw/dist/tools/index.js.map +1 -0
  257. package/ccw/dist/tools/native-session-discovery.d.ts +97 -0
  258. package/ccw/dist/tools/native-session-discovery.d.ts.map +1 -0
  259. package/ccw/dist/tools/native-session-discovery.js +700 -0
  260. package/ccw/dist/tools/native-session-discovery.js.map +1 -0
  261. package/ccw/dist/tools/notifier.d.ts +50 -0
  262. package/ccw/dist/tools/notifier.d.ts.map +1 -0
  263. package/ccw/dist/tools/notifier.js +90 -0
  264. package/ccw/dist/tools/notifier.js.map +1 -0
  265. package/ccw/dist/tools/read-file.d.ts +32 -0
  266. package/ccw/dist/tools/read-file.d.ts.map +1 -0
  267. package/ccw/dist/tools/read-file.js +329 -0
  268. package/ccw/dist/tools/read-file.js.map +1 -0
  269. package/ccw/dist/tools/resume-strategy.d.ts +48 -0
  270. package/ccw/dist/tools/resume-strategy.d.ts.map +1 -0
  271. package/ccw/dist/tools/resume-strategy.js +248 -0
  272. package/ccw/dist/tools/resume-strategy.js.map +1 -0
  273. package/ccw/dist/tools/session-content-parser.d.ts +58 -0
  274. package/ccw/dist/tools/session-content-parser.d.ts.map +1 -0
  275. package/ccw/dist/tools/session-content-parser.js +420 -0
  276. package/ccw/dist/tools/session-content-parser.js.map +1 -0
  277. package/ccw/dist/tools/session-manager.d.ts +9 -0
  278. package/ccw/dist/tools/session-manager.d.ts.map +1 -0
  279. package/ccw/dist/tools/session-manager.js +834 -0
  280. package/ccw/dist/tools/session-manager.js.map +1 -0
  281. package/ccw/dist/tools/smart-context.d.ts +35 -0
  282. package/ccw/dist/tools/smart-context.d.ts.map +1 -0
  283. package/ccw/dist/tools/smart-context.js +182 -0
  284. package/ccw/dist/tools/smart-context.js.map +1 -0
  285. package/ccw/dist/tools/smart-search.d.ts +105 -0
  286. package/ccw/dist/tools/smart-search.d.ts.map +1 -0
  287. package/ccw/dist/tools/smart-search.js +1753 -0
  288. package/ccw/dist/tools/smart-search.js.map +1 -0
  289. package/ccw/dist/tools/storage-manager.d.ts +114 -0
  290. package/ccw/dist/tools/storage-manager.d.ts.map +1 -0
  291. package/ccw/dist/tools/storage-manager.js +392 -0
  292. package/ccw/dist/tools/storage-manager.js.map +1 -0
  293. package/ccw/dist/tools/ui-generate-preview.d.ts +39 -0
  294. package/ccw/dist/tools/ui-generate-preview.d.ts.map +1 -0
  295. package/ccw/dist/tools/ui-generate-preview.js +300 -0
  296. package/ccw/dist/tools/ui-generate-preview.js.map +1 -0
  297. package/ccw/dist/tools/ui-instantiate-prototypes.d.ts +75 -0
  298. package/ccw/dist/tools/ui-instantiate-prototypes.d.ts.map +1 -0
  299. package/ccw/dist/tools/ui-instantiate-prototypes.js +256 -0
  300. package/ccw/dist/tools/ui-instantiate-prototypes.js.map +1 -0
  301. package/ccw/dist/tools/update-module-claude.d.ts +80 -0
  302. package/ccw/dist/tools/update-module-claude.d.ts.map +1 -0
  303. package/ccw/dist/tools/update-module-claude.js +351 -0
  304. package/ccw/dist/tools/update-module-claude.js.map +1 -0
  305. package/ccw/dist/tools/write-file.d.ts +19 -0
  306. package/ccw/dist/tools/write-file.d.ts.map +1 -0
  307. package/ccw/dist/tools/write-file.js +193 -0
  308. package/ccw/dist/tools/write-file.js.map +1 -0
  309. package/ccw/dist/types/config.d.ts +11 -0
  310. package/ccw/dist/types/config.d.ts.map +1 -0
  311. package/ccw/dist/types/config.js +2 -0
  312. package/ccw/dist/types/config.js.map +1 -0
  313. package/ccw/dist/types/index.d.ts +4 -0
  314. package/ccw/dist/types/index.d.ts.map +1 -0
  315. package/ccw/dist/types/index.js +4 -0
  316. package/ccw/dist/types/index.js.map +1 -0
  317. package/ccw/dist/types/session.d.ts +20 -0
  318. package/ccw/dist/types/session.d.ts.map +1 -0
  319. package/ccw/dist/types/session.js +2 -0
  320. package/ccw/dist/types/session.js.map +1 -0
  321. package/ccw/dist/types/tool.d.ts +36 -0
  322. package/ccw/dist/types/tool.d.ts.map +1 -0
  323. package/ccw/dist/types/tool.js +11 -0
  324. package/ccw/dist/types/tool.js.map +1 -0
  325. package/ccw/dist/utils/browser-launcher.d.ts +13 -0
  326. package/ccw/dist/utils/browser-launcher.d.ts.map +1 -0
  327. package/ccw/dist/utils/browser-launcher.js +60 -0
  328. package/ccw/dist/utils/browser-launcher.js.map +1 -0
  329. package/ccw/dist/utils/file-utils.d.ts +25 -0
  330. package/ccw/dist/utils/file-utils.d.ts.map +1 -0
  331. package/ccw/dist/utils/file-utils.js +48 -0
  332. package/ccw/dist/utils/file-utils.js.map +1 -0
  333. package/ccw/dist/utils/path-resolver.d.ts +80 -0
  334. package/ccw/dist/utils/path-resolver.d.ts.map +1 -0
  335. package/ccw/dist/utils/path-resolver.js +260 -0
  336. package/ccw/dist/utils/path-resolver.js.map +1 -0
  337. package/ccw/dist/utils/path-validator.d.ts +49 -0
  338. package/ccw/dist/utils/path-validator.d.ts.map +1 -0
  339. package/ccw/dist/utils/path-validator.js +123 -0
  340. package/ccw/dist/utils/path-validator.js.map +1 -0
  341. package/ccw/dist/utils/ui.d.ts +62 -0
  342. package/ccw/dist/utils/ui.d.ts.map +1 -0
  343. package/ccw/dist/utils/ui.js +129 -0
  344. package/ccw/dist/utils/ui.js.map +1 -0
  345. package/ccw/package.json +1 -1
  346. package/package.json +5 -2
@@ -0,0 +1,239 @@
1
+ import { existsSync, unlinkSync, rmdirSync, readdirSync, statSync } from 'fs';
2
+ import { join, basename } from 'path';
3
+ import { homedir } from 'os';
4
+ import inquirer from 'inquirer';
5
+ import chalk from 'chalk';
6
+ import { showBanner, createSpinner, info, warning, error, summaryBox, divider } from '../utils/ui.js';
7
+ import { getAllManifests, deleteManifest } from '../core/manifest.js';
8
+ // Global subdirectories that should be protected when Global installation exists
9
+ const GLOBAL_SUBDIRS = ['workflows', 'scripts', 'templates'];
10
+ /**
11
+ * Uninstall command handler
12
+ * @param {Object} options - Command options
13
+ */
14
+ export async function uninstallCommand(options) {
15
+ showBanner();
16
+ console.log(chalk.cyan.bold(' Uninstall Claude Code Workflow\n'));
17
+ // Get all manifests
18
+ const manifests = getAllManifests();
19
+ if (manifests.length === 0) {
20
+ warning('No installations found.');
21
+ info('Nothing to uninstall.');
22
+ return;
23
+ }
24
+ // Display installations
25
+ console.log(chalk.white.bold(' Found installations:\n'));
26
+ manifests.forEach((m, i) => {
27
+ const modeColor = m.installation_mode === 'Global' ? chalk.cyan : chalk.yellow;
28
+ console.log(chalk.white(` ${i + 1}. `) + modeColor.bold(m.installation_mode));
29
+ console.log(chalk.gray(` Path: ${m.installation_path}`));
30
+ console.log(chalk.gray(` Date: ${new Date(m.installation_date).toLocaleDateString()}`));
31
+ console.log(chalk.gray(` Version: ${m.application_version}`));
32
+ console.log(chalk.gray(` Files: ${m.files_count} | Dirs: ${m.directories_count}`));
33
+ console.log('');
34
+ });
35
+ divider();
36
+ // Select installation to uninstall
37
+ let selectedManifest;
38
+ if (manifests.length === 1) {
39
+ const { confirm } = await inquirer.prompt([{
40
+ type: 'confirm',
41
+ name: 'confirm',
42
+ message: `Uninstall ${manifests[0].installation_mode} installation at ${manifests[0].installation_path}?`,
43
+ default: false
44
+ }]);
45
+ if (!confirm) {
46
+ info('Uninstall cancelled');
47
+ return;
48
+ }
49
+ selectedManifest = manifests[0];
50
+ }
51
+ else {
52
+ const choices = manifests.map((m, i) => ({
53
+ name: `${m.installation_mode} - ${m.installation_path}`,
54
+ value: i
55
+ }));
56
+ choices.push({ name: chalk.gray('Cancel'), value: -1 });
57
+ const { selection } = await inquirer.prompt([{
58
+ type: 'list',
59
+ name: 'selection',
60
+ message: 'Select installation to uninstall:',
61
+ choices
62
+ }]);
63
+ if (selection === -1) {
64
+ info('Uninstall cancelled');
65
+ return;
66
+ }
67
+ selectedManifest = manifests[selection];
68
+ // Confirm selection
69
+ const { confirm } = await inquirer.prompt([{
70
+ type: 'confirm',
71
+ name: 'confirm',
72
+ message: `Are you sure you want to uninstall ${selectedManifest.installation_mode} installation?`,
73
+ default: false
74
+ }]);
75
+ if (!confirm) {
76
+ info('Uninstall cancelled');
77
+ return;
78
+ }
79
+ }
80
+ console.log('');
81
+ // Check if this is a Path mode uninstallation and if Global installation exists
82
+ const isPathMode = selectedManifest.installation_mode === 'Path';
83
+ const globalClaudeDir = join(homedir(), '.claude');
84
+ let hasGlobalInstallation = false;
85
+ let skippedFiles = 0;
86
+ if (isPathMode) {
87
+ // Check if any Global installation manifest exists
88
+ const globalManifest = manifests.find(m => m.installation_mode === 'Global');
89
+ if (globalManifest) {
90
+ hasGlobalInstallation = true;
91
+ info('Global installation detected - global files will be preserved');
92
+ console.log('');
93
+ }
94
+ }
95
+ // Perform uninstallation
96
+ const spinner = createSpinner('Removing files...').start();
97
+ let removedFiles = 0;
98
+ let removedDirs = 0;
99
+ let failedFiles = [];
100
+ try {
101
+ // Remove files first (in reverse order to handle nested files)
102
+ const files = [...(selectedManifest.files || [])].reverse();
103
+ for (const fileEntry of files) {
104
+ const filePath = fileEntry.path;
105
+ // For Path mode uninstallation, skip global files if Global installation exists
106
+ if (isPathMode && hasGlobalInstallation) {
107
+ const normalizedPath = filePath.toLowerCase().replace(/\\/g, '/');
108
+ const normalizedGlobalDir = globalClaudeDir.toLowerCase().replace(/\\/g, '/');
109
+ // Check if file is under global .claude directory
110
+ if (normalizedPath.startsWith(normalizedGlobalDir)) {
111
+ // Check if it's in one of the global subdirectories
112
+ const relativePath = normalizedPath.substring(normalizedGlobalDir.length + 1);
113
+ const topDir = relativePath.split('/')[0];
114
+ if (GLOBAL_SUBDIRS.includes(topDir)) {
115
+ skippedFiles++;
116
+ continue;
117
+ }
118
+ }
119
+ }
120
+ spinner.text = `Removing: ${basename(filePath)}`;
121
+ try {
122
+ if (existsSync(filePath)) {
123
+ unlinkSync(filePath);
124
+ removedFiles++;
125
+ }
126
+ }
127
+ catch (err) {
128
+ const error = err;
129
+ failedFiles.push({ path: filePath, error: error.message });
130
+ }
131
+ }
132
+ // Remove directories (in reverse order to remove nested dirs first)
133
+ const directories = [...(selectedManifest.directories || [])].reverse();
134
+ // Sort by path length (deepest first)
135
+ directories.sort((a, b) => b.path.length - a.path.length);
136
+ for (const dirEntry of directories) {
137
+ const dirPath = dirEntry.path;
138
+ spinner.text = `Removing directory: ${basename(dirPath)}`;
139
+ try {
140
+ if (existsSync(dirPath)) {
141
+ // Only remove if empty
142
+ const contents = readdirSync(dirPath);
143
+ if (contents.length === 0) {
144
+ rmdirSync(dirPath);
145
+ removedDirs++;
146
+ }
147
+ }
148
+ }
149
+ catch (err) {
150
+ // Ignore directory removal errors (might not be empty)
151
+ }
152
+ }
153
+ // Try to clean up parent directories if empty
154
+ const installPath = selectedManifest.installation_path;
155
+ for (const dir of ['.claude', '.codex', '.gemini', '.qwen']) {
156
+ const dirPath = join(installPath, dir);
157
+ try {
158
+ if (existsSync(dirPath)) {
159
+ await removeEmptyDirs(dirPath);
160
+ }
161
+ }
162
+ catch {
163
+ // Ignore
164
+ }
165
+ }
166
+ spinner.succeed('Uninstall complete!');
167
+ }
168
+ catch (err) {
169
+ spinner.fail('Uninstall failed');
170
+ const errMsg = err;
171
+ error(errMsg.message);
172
+ return;
173
+ }
174
+ // Delete manifest
175
+ deleteManifest(selectedManifest.manifest_file);
176
+ // Show summary
177
+ console.log('');
178
+ const summaryLines = [];
179
+ if (failedFiles.length > 0) {
180
+ summaryLines.push(chalk.yellow.bold('⚠ Partially Completed'));
181
+ }
182
+ else {
183
+ summaryLines.push(chalk.green.bold('✓ Successfully Uninstalled'));
184
+ }
185
+ summaryLines.push('');
186
+ summaryLines.push(chalk.white(`Files removed: ${chalk.green(removedFiles.toString())}`));
187
+ summaryLines.push(chalk.white(`Directories removed: ${chalk.green(removedDirs.toString())}`));
188
+ if (skippedFiles > 0) {
189
+ summaryLines.push(chalk.white(`Global files preserved: ${chalk.cyan(skippedFiles.toString())}`));
190
+ }
191
+ if (failedFiles.length > 0) {
192
+ summaryLines.push(chalk.white(`Failed: ${chalk.red(failedFiles.length.toString())}`));
193
+ summaryLines.push('');
194
+ summaryLines.push(chalk.gray('Some files could not be removed.'));
195
+ summaryLines.push(chalk.gray('They may be in use or require elevated permissions.'));
196
+ }
197
+ else {
198
+ summaryLines.push('');
199
+ summaryLines.push(chalk.gray('Manifest removed'));
200
+ }
201
+ summaryBox({
202
+ title: ' Uninstall Summary ',
203
+ lines: summaryLines,
204
+ borderColor: failedFiles.length > 0 ? 'yellow' : 'green'
205
+ });
206
+ if (process.env.DEBUG && failedFiles.length > 0) {
207
+ console.log('');
208
+ console.log(chalk.gray('Failed files:'));
209
+ failedFiles.forEach(f => {
210
+ console.log(chalk.red(` ${f.path}: ${f.error}`));
211
+ });
212
+ }
213
+ console.log('');
214
+ }
215
+ /**
216
+ * Recursively remove empty directories
217
+ * @param {string} dirPath - Directory path
218
+ */
219
+ async function removeEmptyDirs(dirPath) {
220
+ if (!existsSync(dirPath))
221
+ return;
222
+ const stat = statSync(dirPath);
223
+ if (!stat.isDirectory())
224
+ return;
225
+ let files = readdirSync(dirPath);
226
+ // Recursively check subdirectories
227
+ for (const file of files) {
228
+ const filePath = join(dirPath, file);
229
+ if (statSync(filePath).isDirectory()) {
230
+ await removeEmptyDirs(filePath);
231
+ }
232
+ }
233
+ // Re-check after processing subdirectories
234
+ files = readdirSync(dirPath);
235
+ if (files.length === 0) {
236
+ rmdirSync(dirPath);
237
+ }
238
+ }
239
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface UpgradeOptions {
2
+ all?: boolean;
3
+ }
4
+ /**
5
+ * Upgrade command handler
6
+ * @param {Object} options - Command options
7
+ */
8
+ export declare function upgradeCommand(options: UpgradeOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAkBA,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA2CD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgK3E"}
@@ -0,0 +1,288 @@
1
+ import { existsSync, readdirSync, statSync, copyFileSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { homedir } from 'os';
4
+ import { fileURLToPath } from 'url';
5
+ import inquirer from 'inquirer';
6
+ import chalk from 'chalk';
7
+ import { showBanner, createSpinner, info, warning, error, summaryBox, divider } from '../utils/ui.js';
8
+ import { getAllManifests, createManifest, addFileEntry, addDirectoryEntry, saveManifest, deleteManifest } from '../core/manifest.js';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+ // Source directories to install
12
+ const SOURCE_DIRS = ['.claude', '.codex', '.gemini', '.qwen'];
13
+ // Subdirectories that should always be installed to global (~/.claude/)
14
+ const GLOBAL_SUBDIRS = ['workflows', 'scripts', 'templates'];
15
+ // Get package root directory (ccw/src/commands -> ccw)
16
+ function getPackageRoot() {
17
+ return join(__dirname, '..', '..');
18
+ }
19
+ // Get source installation directory (parent of ccw)
20
+ function getSourceDir() {
21
+ return join(getPackageRoot(), '..');
22
+ }
23
+ /**
24
+ * Get package version
25
+ * @returns {string} - Version string
26
+ */
27
+ function getVersion() {
28
+ try {
29
+ // First try root package.json (parent of ccw)
30
+ const rootPkgPath = join(getSourceDir(), 'package.json');
31
+ if (existsSync(rootPkgPath)) {
32
+ const pkg = JSON.parse(readFileSync(rootPkgPath, 'utf8'));
33
+ if (pkg.version)
34
+ return pkg.version;
35
+ }
36
+ // Fallback to ccw package.json
37
+ const pkgPath = join(getPackageRoot(), 'package.json');
38
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
39
+ return pkg.version || '1.0.0';
40
+ }
41
+ catch {
42
+ return '1.0.0';
43
+ }
44
+ }
45
+ /**
46
+ * Upgrade command handler
47
+ * @param {Object} options - Command options
48
+ */
49
+ export async function upgradeCommand(options) {
50
+ showBanner();
51
+ console.log(chalk.cyan.bold(' Upgrade Claude Code Workflow\n'));
52
+ const currentVersion = getVersion();
53
+ // Get all manifests
54
+ const manifests = getAllManifests();
55
+ if (manifests.length === 0) {
56
+ warning('No installations found.');
57
+ info('Run "ccw install" to install first.');
58
+ return;
59
+ }
60
+ // Display current installations
61
+ console.log(chalk.white.bold(' Current installations:\n'));
62
+ const upgradeTargets = [];
63
+ for (let i = 0; i < manifests.length; i++) {
64
+ const m = manifests[i];
65
+ const modeColor = m.installation_mode === 'Global' ? chalk.cyan : chalk.yellow;
66
+ // Read installed version
67
+ const versionFile = join(m.installation_path, '.claude', 'version.json');
68
+ let installedVersion = 'unknown';
69
+ if (existsSync(versionFile)) {
70
+ try {
71
+ const versionData = JSON.parse(readFileSync(versionFile, 'utf8'));
72
+ installedVersion = versionData.version || 'unknown';
73
+ }
74
+ catch {
75
+ // Ignore parse errors
76
+ }
77
+ }
78
+ // Check if upgrade needed
79
+ const needsUpgrade = installedVersion !== currentVersion;
80
+ console.log(chalk.white(` ${i + 1}. `) + modeColor.bold(m.installation_mode));
81
+ console.log(chalk.gray(` Path: ${m.installation_path}`));
82
+ console.log(chalk.gray(` Installed: ${installedVersion}`));
83
+ if (needsUpgrade) {
84
+ console.log(chalk.green(` Package: ${currentVersion} `) + chalk.green('← Update available'));
85
+ upgradeTargets.push({ manifest: m, installedVersion, index: i });
86
+ }
87
+ else {
88
+ console.log(chalk.gray(` Up to date ✓`));
89
+ }
90
+ console.log('');
91
+ }
92
+ divider();
93
+ if (upgradeTargets.length === 0) {
94
+ info('All installations are up to date.');
95
+ console.log('');
96
+ info('To upgrade ccw itself, run:');
97
+ console.log(chalk.cyan(' npm update -g ccw'));
98
+ console.log('');
99
+ return;
100
+ }
101
+ // Select which installations to upgrade
102
+ let selectedManifests = [];
103
+ if (options.all) {
104
+ selectedManifests = upgradeTargets.map(t => t.manifest);
105
+ }
106
+ else if (upgradeTargets.length === 1) {
107
+ const target = upgradeTargets[0];
108
+ const { confirm } = await inquirer.prompt([{
109
+ type: 'confirm',
110
+ name: 'confirm',
111
+ message: `Upgrade ${target.manifest.installation_mode} installation (${target.installedVersion} → ${currentVersion})?`,
112
+ default: true
113
+ }]);
114
+ if (!confirm) {
115
+ info('Upgrade cancelled');
116
+ return;
117
+ }
118
+ selectedManifests = [target.manifest];
119
+ }
120
+ else {
121
+ const choices = upgradeTargets.map((t, i) => ({
122
+ name: `${t.manifest.installation_mode} - ${t.manifest.installation_path} (${t.installedVersion} → ${currentVersion})`,
123
+ value: i,
124
+ checked: true
125
+ }));
126
+ const { selections } = await inquirer.prompt([{
127
+ type: 'checkbox',
128
+ name: 'selections',
129
+ message: 'Select installations to upgrade:',
130
+ choices
131
+ }]);
132
+ if (selections.length === 0) {
133
+ info('No installations selected');
134
+ return;
135
+ }
136
+ selectedManifests = selections.map((i) => upgradeTargets[i].manifest);
137
+ }
138
+ // Perform upgrades
139
+ console.log('');
140
+ const results = [];
141
+ const sourceDir = getSourceDir();
142
+ for (const manifest of selectedManifests) {
143
+ const upgradeSpinner = createSpinner(`Upgrading ${manifest.installation_mode} at ${manifest.installation_path}...`).start();
144
+ try {
145
+ const result = await performUpgrade(manifest, sourceDir, currentVersion);
146
+ upgradeSpinner.succeed(`Upgraded ${manifest.installation_mode}: ${result.files} files`);
147
+ results.push({ manifest, success: true, ...result });
148
+ }
149
+ catch (err) {
150
+ const errMsg = err;
151
+ upgradeSpinner.fail(`Failed to upgrade ${manifest.installation_mode}`);
152
+ error(errMsg.message);
153
+ results.push({ manifest, success: false, error: errMsg.message });
154
+ }
155
+ }
156
+ // Show summary
157
+ console.log('');
158
+ const successCount = results.filter(r => r.success).length;
159
+ const failCount = results.filter(r => !r.success).length;
160
+ const summaryLines = [
161
+ successCount === results.length
162
+ ? chalk.green.bold('✓ Upgrade Successful')
163
+ : chalk.yellow.bold('⚠ Upgrade Completed with Issues'),
164
+ '',
165
+ chalk.white(`Version: ${chalk.cyan(currentVersion)}`),
166
+ ''
167
+ ];
168
+ if (successCount > 0) {
169
+ summaryLines.push(chalk.green(`Upgraded: ${successCount} installation(s)`));
170
+ }
171
+ if (failCount > 0) {
172
+ summaryLines.push(chalk.red(`Failed: ${failCount} installation(s)`));
173
+ }
174
+ summaryBox({
175
+ title: ' Upgrade Summary ',
176
+ lines: summaryLines,
177
+ borderColor: failCount > 0 ? 'yellow' : 'green'
178
+ });
179
+ // Show next steps
180
+ console.log('');
181
+ info('Next steps:');
182
+ console.log(chalk.gray(' 1. Restart Claude Code or your IDE'));
183
+ console.log(chalk.gray(' 2. Run: ccw view - to open the workflow dashboard'));
184
+ console.log('');
185
+ }
186
+ /**
187
+ * Perform upgrade for a single installation
188
+ * @param {Object} manifest - Installation manifest
189
+ * @param {string} sourceDir - Source directory
190
+ * @param {string} version - Version string
191
+ * @returns {Promise<Object>} - Upgrade result
192
+ */
193
+ async function performUpgrade(manifest, sourceDir, version) {
194
+ const installPath = manifest.installation_path;
195
+ const mode = manifest.installation_mode;
196
+ // Get available source directories
197
+ const availableDirs = SOURCE_DIRS.filter(dir => existsSync(join(sourceDir, dir)));
198
+ if (availableDirs.length === 0) {
199
+ throw new Error('No source directories found');
200
+ }
201
+ // Create new manifest
202
+ const newManifest = createManifest(mode, installPath);
203
+ let totalFiles = 0;
204
+ let totalDirs = 0;
205
+ // For Path mode, upgrade workflows to global first
206
+ if (mode === 'Path') {
207
+ const globalPath = homedir();
208
+ for (const subdir of GLOBAL_SUBDIRS) {
209
+ const srcWorkflows = join(sourceDir, '.claude', subdir);
210
+ if (existsSync(srcWorkflows)) {
211
+ const destWorkflows = join(globalPath, '.claude', subdir);
212
+ const { files, directories } = await copyDirectory(srcWorkflows, destWorkflows, newManifest);
213
+ totalFiles += files;
214
+ totalDirs += directories;
215
+ }
216
+ }
217
+ }
218
+ // Copy each directory
219
+ for (const dir of availableDirs) {
220
+ const srcPath = join(sourceDir, dir);
221
+ const destPath = join(installPath, dir);
222
+ // For Path mode on .claude, exclude global subdirs (they're already installed to global)
223
+ const excludeDirs = (mode === 'Path' && dir === '.claude') ? GLOBAL_SUBDIRS : [];
224
+ const { files, directories } = await copyDirectory(srcPath, destPath, newManifest, excludeDirs);
225
+ totalFiles += files;
226
+ totalDirs += directories;
227
+ }
228
+ // Update version.json
229
+ const versionPath = join(installPath, '.claude', 'version.json');
230
+ if (existsSync(dirname(versionPath))) {
231
+ const versionData = {
232
+ version: version,
233
+ installedAt: new Date().toISOString(),
234
+ upgradedAt: new Date().toISOString(),
235
+ mode: manifest.installation_mode,
236
+ installer: 'ccw'
237
+ };
238
+ writeFileSync(versionPath, JSON.stringify(versionData, null, 2), 'utf8');
239
+ addFileEntry(newManifest, versionPath);
240
+ totalFiles++;
241
+ }
242
+ // Delete old manifest and save new one
243
+ if (manifest.manifest_file) {
244
+ deleteManifest(manifest.manifest_file);
245
+ }
246
+ saveManifest(newManifest);
247
+ return { files: totalFiles, directories: totalDirs };
248
+ }
249
+ /**
250
+ * Copy directory recursively
251
+ * @param {string} src - Source directory
252
+ * @param {string} dest - Destination directory
253
+ * @param {Object} manifest - Manifest to track files
254
+ * @param {string[]} excludeDirs - Directory names to exclude (optional)
255
+ * @returns {Object} - Count of files and directories
256
+ */
257
+ async function copyDirectory(src, dest, manifest, excludeDirs = []) {
258
+ let files = 0;
259
+ let directories = 0;
260
+ // Create destination directory
261
+ if (!existsSync(dest)) {
262
+ mkdirSync(dest, { recursive: true });
263
+ directories++;
264
+ addDirectoryEntry(manifest, dest);
265
+ }
266
+ const entries = readdirSync(src);
267
+ for (const entry of entries) {
268
+ // Skip excluded directories
269
+ if (excludeDirs.includes(entry)) {
270
+ continue;
271
+ }
272
+ const srcPath = join(src, entry);
273
+ const destPath = join(dest, entry);
274
+ const stat = statSync(srcPath);
275
+ if (stat.isDirectory()) {
276
+ const result = await copyDirectory(srcPath, destPath, manifest);
277
+ files += result.files;
278
+ directories += result.directories;
279
+ }
280
+ else {
281
+ copyFileSync(srcPath, destPath);
282
+ files++;
283
+ addFileEntry(manifest, destPath);
284
+ }
285
+ }
286
+ return { files, directories };
287
+ }
288
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ interface ViewOptions {
2
+ port?: number;
3
+ path?: string;
4
+ browser?: boolean;
5
+ }
6
+ /**
7
+ * View command handler - opens dashboard for current workspace
8
+ * If server is already running, switches workspace and opens browser
9
+ * If not running, starts a new server
10
+ * @param {Object} options - Command options
11
+ */
12
+ export declare function viewCommand(options: ViewOptions): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA+CD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDrE"}