lm-assist 0.1.64 → 0.1.66

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 (443) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +138 -135
  4. package/bin/lm-assist.js +0 -0
  5. package/commands/run.md +106 -0
  6. package/commands/sessions.md +87 -0
  7. package/commands/summary.md +131 -0
  8. package/core/dist/agent-session-store.d.ts +9 -1
  9. package/core/dist/agent-session-store.d.ts.map +1 -1
  10. package/core/dist/agent-session-store.js +30 -0
  11. package/core/dist/agent-session-store.js.map +1 -1
  12. package/core/dist/api/agent-api.d.ts +3 -0
  13. package/core/dist/api/agent-api.d.ts.map +1 -1
  14. package/core/dist/api/agent-api.js +51 -4
  15. package/core/dist/api/agent-api.js.map +1 -1
  16. package/core/dist/api/sessions-api.d.ts.map +1 -1
  17. package/core/dist/api/sessions-api.js +13 -1
  18. package/core/dist/api/sessions-api.js.map +1 -1
  19. package/core/dist/cli.js +32 -18
  20. package/core/dist/cli.js.map +1 -1
  21. package/core/dist/detached-runner.d.ts +57 -0
  22. package/core/dist/detached-runner.d.ts.map +1 -0
  23. package/core/dist/detached-runner.js +625 -0
  24. package/core/dist/detached-runner.js.map +1 -0
  25. package/core/dist/learning-store.d.ts +83 -0
  26. package/core/dist/learning-store.d.ts.map +1 -0
  27. package/core/dist/learning-store.js +206 -0
  28. package/core/dist/learning-store.js.map +1 -0
  29. package/core/dist/project-settings.d.ts +2 -0
  30. package/core/dist/project-settings.d.ts.map +1 -1
  31. package/core/dist/project-settings.js +3 -0
  32. package/core/dist/project-settings.js.map +1 -1
  33. package/core/dist/project-summary-store.d.ts +47 -0
  34. package/core/dist/project-summary-store.d.ts.map +1 -0
  35. package/core/dist/project-summary-store.js +108 -0
  36. package/core/dist/project-summary-store.js.map +1 -0
  37. package/core/dist/projects-service.d.ts +6 -0
  38. package/core/dist/projects-service.d.ts.map +1 -1
  39. package/core/dist/projects-service.js +3 -0
  40. package/core/dist/projects-service.js.map +1 -1
  41. package/core/dist/prompt-queue-store.d.ts +107 -0
  42. package/core/dist/prompt-queue-store.d.ts.map +1 -0
  43. package/core/dist/prompt-queue-store.js +215 -0
  44. package/core/dist/prompt-queue-store.js.map +1 -0
  45. package/core/dist/routes/core/knowledge-settings.routes.d.ts.map +1 -1
  46. package/core/dist/routes/core/knowledge-settings.routes.js +3 -0
  47. package/core/dist/routes/core/knowledge-settings.routes.js.map +1 -1
  48. package/core/dist/routes/core/knowledge.routes.d.ts.map +1 -1
  49. package/core/dist/routes/core/knowledge.routes.js +16 -0
  50. package/core/dist/routes/core/knowledge.routes.js.map +1 -1
  51. package/core/dist/routes/core/project-settings.routes.d.ts +1 -1
  52. package/core/dist/routes/core/project-settings.routes.d.ts.map +1 -1
  53. package/core/dist/routes/core/project-settings.routes.js +31 -1
  54. package/core/dist/routes/core/project-settings.routes.js.map +1 -1
  55. package/core/dist/routes/core/sessions.routes.d.ts.map +1 -1
  56. package/core/dist/routes/core/sessions.routes.js +357 -0
  57. package/core/dist/routes/core/sessions.routes.js.map +1 -1
  58. package/core/dist/routes/core/vector.routes.d.ts.map +1 -1
  59. package/core/dist/routes/core/vector.routes.js +6 -0
  60. package/core/dist/routes/core/vector.routes.js.map +1 -1
  61. package/core/dist/session-cache.d.ts +6 -0
  62. package/core/dist/session-cache.d.ts.map +1 -1
  63. package/core/dist/session-cache.js +80 -0
  64. package/core/dist/session-cache.js.map +1 -1
  65. package/core/dist/session-summary-store.d.ts +68 -0
  66. package/core/dist/session-summary-store.d.ts.map +1 -0
  67. package/core/dist/session-summary-store.js +175 -0
  68. package/core/dist/session-summary-store.js.map +1 -0
  69. package/core/dist/vector/embedder.d.ts +2 -0
  70. package/core/dist/vector/embedder.d.ts.map +1 -1
  71. package/core/dist/vector/embedder.js +17 -0
  72. package/core/dist/vector/embedder.js.map +1 -1
  73. package/core/dist/vector/vector-store.d.ts +2 -0
  74. package/core/dist/vector/vector-store.d.ts.map +1 -1
  75. package/core/dist/vector/vector-store.js +8 -0
  76. package/core/dist/vector/vector-store.js.map +1 -1
  77. package/core/hooks/statusline-worktree.js +26 -0
  78. package/package.json +1 -1
  79. package/web/.next/BUILD_ID +1 -1
  80. package/web/.next/build-manifest.json +2 -2
  81. package/web/.next/fallback-build-manifest.json +2 -2
  82. package/web/.next/server/app/(dashboard)/assist-resources/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/(dashboard)/knowledge/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(dashboard)/machines/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/(dashboard)/process-dashboard/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/(dashboard)/search/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/session-dashboard/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/(dashboard)/tasks/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/terminal-dashboard/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/_global-error.html +2 -2
  95. package/web/.next/server/app/_global-error.rsc +1 -1
  96. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  97. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  98. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  99. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  100. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  101. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/_not-found.html +1 -1
  103. package/web/.next/server/app/_not-found.rsc +4 -4
  104. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  105. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  106. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  107. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  108. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  109. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  110. package/web/.next/server/app/assist-resources.html +1 -1
  111. package/web/.next/server/app/assist-resources.rsc +6 -6
  112. package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +2 -2
  113. package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources.segment.rsc +1 -1
  114. package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  115. package/web/.next/server/app/assist-resources.segments/_full.segment.rsc +6 -6
  116. package/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
  117. package/web/.next/server/app/assist-resources.segments/_index.segment.rsc +4 -4
  118. package/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
  119. package/web/.next/server/app/auth/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/auth.html +1 -1
  121. package/web/.next/server/app/auth.rsc +5 -5
  122. package/web/.next/server/app/auth.segments/_full.segment.rsc +5 -5
  123. package/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
  124. package/web/.next/server/app/auth.segments/_index.segment.rsc +4 -4
  125. package/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
  126. package/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +2 -2
  127. package/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
  128. package/web/.next/server/app/console/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/console.html +1 -1
  130. package/web/.next/server/app/console.rsc +5 -5
  131. package/web/.next/server/app/console.segments/_full.segment.rsc +5 -5
  132. package/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
  133. package/web/.next/server/app/console.segments/_index.segment.rsc +4 -4
  134. package/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
  135. package/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +2 -2
  136. package/web/.next/server/app/console.segments/console.segment.rsc +1 -1
  137. package/web/.next/server/app/knowledge.html +1 -1
  138. package/web/.next/server/app/knowledge.rsc +6 -6
  139. package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +2 -2
  140. package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
  141. package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  142. package/web/.next/server/app/knowledge.segments/_full.segment.rsc +6 -6
  143. package/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
  144. package/web/.next/server/app/knowledge.segments/_index.segment.rsc +4 -4
  145. package/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
  146. package/web/.next/server/app/lan-blocked/page_client-reference-manifest.js +1 -1
  147. package/web/.next/server/app/lan-blocked.html +1 -1
  148. package/web/.next/server/app/lan-blocked.rsc +5 -5
  149. package/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +5 -5
  150. package/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
  151. package/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +4 -4
  152. package/web/.next/server/app/lan-blocked.segments/_tree.segment.rsc +1 -1
  153. package/web/.next/server/app/lan-blocked.segments/lan-blocked/__PAGE__.segment.rsc +2 -2
  154. package/web/.next/server/app/lan-blocked.segments/lan-blocked.segment.rsc +1 -1
  155. package/web/.next/server/app/machines.html +1 -1
  156. package/web/.next/server/app/machines.rsc +6 -6
  157. package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +2 -2
  158. package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
  159. package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  160. package/web/.next/server/app/machines.segments/_full.segment.rsc +6 -6
  161. package/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
  162. package/web/.next/server/app/machines.segments/_index.segment.rsc +4 -4
  163. package/web/.next/server/app/machines.segments/_tree.segment.rsc +1 -1
  164. package/web/.next/server/app/process-dashboard.html +1 -1
  165. package/web/.next/server/app/process-dashboard.rsc +6 -6
  166. package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +2 -2
  167. package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard.segment.rsc +1 -1
  168. package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  169. package/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +6 -6
  170. package/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
  171. package/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +4 -4
  172. package/web/.next/server/app/process-dashboard.segments/_tree.segment.rsc +1 -1
  173. package/web/.next/server/app/projects.html +1 -1
  174. package/web/.next/server/app/projects.rsc +6 -6
  175. package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +2 -2
  176. package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
  177. package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  178. package/web/.next/server/app/projects.segments/_full.segment.rsc +6 -6
  179. package/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  180. package/web/.next/server/app/projects.segments/_index.segment.rsc +4 -4
  181. package/web/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  182. package/web/.next/server/app/search.html +1 -1
  183. package/web/.next/server/app/search.rsc +6 -6
  184. package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +2 -2
  185. package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
  186. package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  187. package/web/.next/server/app/search.segments/_full.segment.rsc +6 -6
  188. package/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
  189. package/web/.next/server/app/search.segments/_index.segment.rsc +4 -4
  190. package/web/.next/server/app/search.segments/_tree.segment.rsc +1 -1
  191. package/web/.next/server/app/session-dashboard.html +1 -1
  192. package/web/.next/server/app/session-dashboard.rsc +6 -6
  193. package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +2 -2
  194. package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard.segment.rsc +1 -1
  195. package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +6 -6
  197. package/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
  198. package/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +4 -4
  199. package/web/.next/server/app/session-dashboard.segments/_tree.segment.rsc +1 -1
  200. package/web/.next/server/app/sessions.html +1 -1
  201. package/web/.next/server/app/sessions.rsc +6 -6
  202. package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +2 -2
  203. package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
  204. package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  205. package/web/.next/server/app/sessions.segments/_full.segment.rsc +6 -6
  206. package/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
  207. package/web/.next/server/app/sessions.segments/_index.segment.rsc +4 -4
  208. package/web/.next/server/app/sessions.segments/_tree.segment.rsc +1 -1
  209. package/web/.next/server/app/settings.html +1 -1
  210. package/web/.next/server/app/settings.rsc +6 -6
  211. package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  212. package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  213. package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  214. package/web/.next/server/app/settings.segments/_full.segment.rsc +6 -6
  215. package/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  216. package/web/.next/server/app/settings.segments/_index.segment.rsc +4 -4
  217. package/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  218. package/web/.next/server/app/skills.html +1 -1
  219. package/web/.next/server/app/skills.rsc +6 -6
  220. package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +2 -2
  221. package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
  222. package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  223. package/web/.next/server/app/skills.segments/_full.segment.rsc +6 -6
  224. package/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  225. package/web/.next/server/app/skills.segments/_index.segment.rsc +4 -4
  226. package/web/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
  227. package/web/.next/server/app/tasks.html +1 -1
  228. package/web/.next/server/app/tasks.rsc +6 -6
  229. package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +2 -2
  230. package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
  231. package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  232. package/web/.next/server/app/tasks.segments/_full.segment.rsc +6 -6
  233. package/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  234. package/web/.next/server/app/tasks.segments/_index.segment.rsc +4 -4
  235. package/web/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  236. package/web/.next/server/app/terminal-dashboard.html +1 -1
  237. package/web/.next/server/app/terminal-dashboard.rsc +6 -6
  238. package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +2 -2
  239. package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard.segment.rsc +1 -1
  240. package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  241. package/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +6 -6
  242. package/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
  243. package/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +4 -4
  244. package/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__b2689499._.js +1 -1
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__b2689499._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_session-dashboard_page_tsx_b154ddfc._.js +1 -1
  248. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_session-dashboard_page_tsx_b154ddfc._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_sessions_page_tsx_a4b86be9._.js +1 -1
  250. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_sessions_page_tsx_a4b86be9._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js +1 -1
  252. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/web_src_lib_api-client_ts_05c71051._.js +1 -1
  254. package/web/.next/server/chunks/ssr/web_src_lib_api-client_ts_05c71051._.js.map +1 -1
  255. package/web/.next/server/pages/404.html +1 -1
  256. package/web/.next/server/pages/500.html +2 -2
  257. package/web/.next/standalone/web/.next/BUILD_ID +1 -1
  258. package/web/.next/standalone/web/.next/build-manifest.json +2 -2
  259. package/web/.next/standalone/web/.next/server/app/(dashboard)/assist-resources/page_client-reference-manifest.js +1 -1
  260. package/web/.next/standalone/web/.next/server/app/(dashboard)/knowledge/page_client-reference-manifest.js +1 -1
  261. package/web/.next/standalone/web/.next/server/app/(dashboard)/machines/page_client-reference-manifest.js +1 -1
  262. package/web/.next/standalone/web/.next/server/app/(dashboard)/process-dashboard/page_client-reference-manifest.js +1 -1
  263. package/web/.next/standalone/web/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  264. package/web/.next/standalone/web/.next/server/app/(dashboard)/search/page_client-reference-manifest.js +1 -1
  265. package/web/.next/standalone/web/.next/server/app/(dashboard)/session-dashboard/page_client-reference-manifest.js +1 -1
  266. package/web/.next/standalone/web/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
  267. package/web/.next/standalone/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  268. package/web/.next/standalone/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  269. package/web/.next/standalone/web/.next/server/app/(dashboard)/tasks/page_client-reference-manifest.js +1 -1
  270. package/web/.next/standalone/web/.next/server/app/(dashboard)/terminal-dashboard/page_client-reference-manifest.js +1 -1
  271. package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
  272. package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
  273. package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  274. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  275. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  276. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  277. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  278. package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  279. package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
  280. package/web/.next/standalone/web/.next/server/app/_not-found.rsc +4 -4
  281. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  282. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  283. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  284. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  285. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  286. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  287. package/web/.next/standalone/web/.next/server/app/assist-resources.html +1 -1
  288. package/web/.next/standalone/web/.next/server/app/assist-resources.rsc +6 -6
  289. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +2 -2
  290. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources.segment.rsc +1 -1
  291. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  292. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_full.segment.rsc +6 -6
  293. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
  294. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_index.segment.rsc +4 -4
  295. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
  296. package/web/.next/standalone/web/.next/server/app/auth/page_client-reference-manifest.js +1 -1
  297. package/web/.next/standalone/web/.next/server/app/auth.html +1 -1
  298. package/web/.next/standalone/web/.next/server/app/auth.rsc +5 -5
  299. package/web/.next/standalone/web/.next/server/app/auth.segments/_full.segment.rsc +5 -5
  300. package/web/.next/standalone/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
  301. package/web/.next/standalone/web/.next/server/app/auth.segments/_index.segment.rsc +4 -4
  302. package/web/.next/standalone/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
  303. package/web/.next/standalone/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +2 -2
  304. package/web/.next/standalone/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
  305. package/web/.next/standalone/web/.next/server/app/console/page_client-reference-manifest.js +1 -1
  306. package/web/.next/standalone/web/.next/server/app/console.html +1 -1
  307. package/web/.next/standalone/web/.next/server/app/console.rsc +5 -5
  308. package/web/.next/standalone/web/.next/server/app/console.segments/_full.segment.rsc +5 -5
  309. package/web/.next/standalone/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
  310. package/web/.next/standalone/web/.next/server/app/console.segments/_index.segment.rsc +4 -4
  311. package/web/.next/standalone/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
  312. package/web/.next/standalone/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +2 -2
  313. package/web/.next/standalone/web/.next/server/app/console.segments/console.segment.rsc +1 -1
  314. package/web/.next/standalone/web/.next/server/app/knowledge.html +1 -1
  315. package/web/.next/standalone/web/.next/server/app/knowledge.rsc +6 -6
  316. package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +2 -2
  317. package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
  318. package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  319. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_full.segment.rsc +6 -6
  320. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
  321. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_index.segment.rsc +4 -4
  322. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
  323. package/web/.next/standalone/web/.next/server/app/lan-blocked/page_client-reference-manifest.js +1 -1
  324. package/web/.next/standalone/web/.next/server/app/lan-blocked.html +1 -1
  325. package/web/.next/standalone/web/.next/server/app/lan-blocked.rsc +5 -5
  326. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +5 -5
  327. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
  328. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +4 -4
  329. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_tree.segment.rsc +1 -1
  330. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/lan-blocked/__PAGE__.segment.rsc +2 -2
  331. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/lan-blocked.segment.rsc +1 -1
  332. package/web/.next/standalone/web/.next/server/app/machines.html +1 -1
  333. package/web/.next/standalone/web/.next/server/app/machines.rsc +6 -6
  334. package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +2 -2
  335. package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
  336. package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  337. package/web/.next/standalone/web/.next/server/app/machines.segments/_full.segment.rsc +6 -6
  338. package/web/.next/standalone/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
  339. package/web/.next/standalone/web/.next/server/app/machines.segments/_index.segment.rsc +4 -4
  340. package/web/.next/standalone/web/.next/server/app/machines.segments/_tree.segment.rsc +1 -1
  341. package/web/.next/standalone/web/.next/server/app/process-dashboard.html +1 -1
  342. package/web/.next/standalone/web/.next/server/app/process-dashboard.rsc +6 -6
  343. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +2 -2
  344. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard.segment.rsc +1 -1
  345. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  346. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +6 -6
  347. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
  348. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +4 -4
  349. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_tree.segment.rsc +1 -1
  350. package/web/.next/standalone/web/.next/server/app/projects.html +1 -1
  351. package/web/.next/standalone/web/.next/server/app/projects.rsc +6 -6
  352. package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +2 -2
  353. package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
  354. package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  355. package/web/.next/standalone/web/.next/server/app/projects.segments/_full.segment.rsc +6 -6
  356. package/web/.next/standalone/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  357. package/web/.next/standalone/web/.next/server/app/projects.segments/_index.segment.rsc +4 -4
  358. package/web/.next/standalone/web/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  359. package/web/.next/standalone/web/.next/server/app/search.html +1 -1
  360. package/web/.next/standalone/web/.next/server/app/search.rsc +6 -6
  361. package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +2 -2
  362. package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
  363. package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  364. package/web/.next/standalone/web/.next/server/app/search.segments/_full.segment.rsc +6 -6
  365. package/web/.next/standalone/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
  366. package/web/.next/standalone/web/.next/server/app/search.segments/_index.segment.rsc +4 -4
  367. package/web/.next/standalone/web/.next/server/app/search.segments/_tree.segment.rsc +1 -1
  368. package/web/.next/standalone/web/.next/server/app/session-dashboard.html +1 -1
  369. package/web/.next/standalone/web/.next/server/app/session-dashboard.rsc +6 -6
  370. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +2 -2
  371. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard.segment.rsc +1 -1
  372. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  373. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +6 -6
  374. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
  375. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +4 -4
  376. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_tree.segment.rsc +1 -1
  377. package/web/.next/standalone/web/.next/server/app/sessions.html +1 -1
  378. package/web/.next/standalone/web/.next/server/app/sessions.rsc +6 -6
  379. package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +2 -2
  380. package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
  381. package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  382. package/web/.next/standalone/web/.next/server/app/sessions.segments/_full.segment.rsc +6 -6
  383. package/web/.next/standalone/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
  384. package/web/.next/standalone/web/.next/server/app/sessions.segments/_index.segment.rsc +4 -4
  385. package/web/.next/standalone/web/.next/server/app/sessions.segments/_tree.segment.rsc +1 -1
  386. package/web/.next/standalone/web/.next/server/app/settings.html +1 -1
  387. package/web/.next/standalone/web/.next/server/app/settings.rsc +6 -6
  388. package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  389. package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  390. package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  391. package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +6 -6
  392. package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  393. package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +4 -4
  394. package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  395. package/web/.next/standalone/web/.next/server/app/skills.html +1 -1
  396. package/web/.next/standalone/web/.next/server/app/skills.rsc +6 -6
  397. package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +2 -2
  398. package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
  399. package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  400. package/web/.next/standalone/web/.next/server/app/skills.segments/_full.segment.rsc +6 -6
  401. package/web/.next/standalone/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  402. package/web/.next/standalone/web/.next/server/app/skills.segments/_index.segment.rsc +4 -4
  403. package/web/.next/standalone/web/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
  404. package/web/.next/standalone/web/.next/server/app/tasks.html +1 -1
  405. package/web/.next/standalone/web/.next/server/app/tasks.rsc +6 -6
  406. package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +2 -2
  407. package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
  408. package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  409. package/web/.next/standalone/web/.next/server/app/tasks.segments/_full.segment.rsc +6 -6
  410. package/web/.next/standalone/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  411. package/web/.next/standalone/web/.next/server/app/tasks.segments/_index.segment.rsc +4 -4
  412. package/web/.next/standalone/web/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  413. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.html +1 -1
  414. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.rsc +6 -6
  415. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +2 -2
  416. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard.segment.rsc +1 -1
  417. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  418. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +6 -6
  419. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
  420. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +4 -4
  421. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
  422. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__b2689499._.js +1 -1
  423. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(dashboard)_session-dashboard_page_tsx_b154ddfc._.js +1 -1
  424. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(dashboard)_sessions_page_tsx_a4b86be9._.js +1 -1
  425. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js +1 -1
  426. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_lib_api-client_ts_05c71051._.js +1 -1
  427. package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
  428. package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
  429. package/web/.next/static/chunks/1e86b4dd7fddd3da.js +1 -0
  430. package/web/.next/static/chunks/5937d0a7953952c1.js +1 -0
  431. package/web/.next/static/chunks/7e98fe3eef4fb4b2.js +2 -0
  432. package/web/.next/static/chunks/caf4f6e3f7bd8d7b.js +1 -0
  433. package/web/.next/static/chunks/d0ba26dc2e7b6503.js +1 -0
  434. package/web/.next/trace +1 -1
  435. package/web/.next/trace-build +1 -1
  436. package/web/.next/static/chunks/2b797c854eca072c.js +0 -1
  437. package/web/.next/static/chunks/7a29f0dfd963cffc.js +0 -2
  438. package/web/.next/static/chunks/8a3cbd218373f849.js +0 -1
  439. package/web/.next/static/chunks/c97796410bdb8bb9.js +0 -1
  440. package/web/.next/static/chunks/d019311db3907071.js +0 -1
  441. /package/web/.next/static/{NExu_smoV2Kb7tSWP09gh → Zx5sHPa3X0Xd4H0apvz9y}/_buildManifest.js +0 -0
  442. /package/web/.next/static/{NExu_smoV2Kb7tSWP09gh → Zx5sHPa3X0Xd4H0apvz9y}/_clientMiddlewareManifest.json +0 -0
  443. /package/web/.next/static/{NExu_smoV2Kb7tSWP09gh → Zx5sHPa3X0Xd4H0apvz9y}/_ssgManifest.js +0 -0
@@ -12,7 +12,7 @@
12
12
  "plugins": [
13
13
  {
14
14
  "name": "lm-assist",
15
- "version": "0.1.64",
15
+ "version": "0.1.66",
16
16
  "source": "./",
17
17
  "description": "Auto-build knowledge from Claude Code sessions and inject it as context. Inspect sessions with deep views into agents, tasks, teams, plans, and tool calls. Access and control all Claude Code terminals from any device via web browser. Includes MCP server (search, detail, feedback), context-injection hook, and 6 slash commands.",
18
18
  "category": "productivity",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lm-assist",
3
- "version": "0.1.64",
3
+ "version": "0.1.66",
4
4
  "description": "Knowledge management, session inspector, and web terminal control for Claude Code",
5
5
  "author": {
6
6
  "name": "langmartai"
package/README.md CHANGED
@@ -1,59 +1,83 @@
1
1
  # lm-assist
2
2
 
3
- Knowledge management, session inspector, and web terminal control for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Auto-build knowledge from your sessions and inject it as context. Inspect agents, tasks, teams, plans, and tool calls. Access and control all Claude Code terminals from any device via browser.
3
+ ## The Observability Platform for Claude Code & Agent SDK
4
+
5
+ Monitor, debug, and control AI coding agents with full session visibility, real-time execution tracking, and 155+ REST API endpoints.
4
6
 
5
7
  [![Discord](https://img.shields.io/discord/1475647234669543558?logo=discord&label=Discord&color=5865F2)](https://discord.gg/xb2BNnk4)
6
8
 
7
- ### Install
9
+ - **Monitor** — real-time execution tracking, per-model cost & token breakdown, SSE event stream
10
+ - **Debug** — 15 insight views per session: Chat, Thinking, Agents, Plans, Team, DAG, Files, Git & more
11
+ - **Control** — web terminal from any browser, start/abort agents via API, remote access from anywhere
8
12
 
9
- In Claude Code, run:
13
+ <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/architecture-observability.svg"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/architecture-observability.svg" alt="lm-assist Architecture — Observability Platform for Claude Code & Agent SDK" width="700"></a>
14
+
15
+ ### Install
10
16
 
11
17
  ```
12
18
  /plugin marketplace add langmartai/lm-assist
13
-
14
19
  /plugin install lm-assist@langmartai
15
20
  ```
16
21
 
17
- Then **open a new Claude Code session** and run:
22
+ Then **open a new Claude Code session** and run `/assist-setup`.
18
23
 
19
- ```
20
- /assist-setup
21
- ```
24
+ > **Read:** [Inside Claude Code: The Session File Format and How to Inspect It](https://databunny.medium.com/inside-claude-code-the-session-file-format-and-how-to-inspect-it-b9998e66d56b) — technical breakdown of the JSONL session format, message types, subagent trees, and how lm-assist surfaces it all.
22
25
 
23
- This automatically registers:
24
- - **MCP server** — `search`, `detail`, `feedback` tools available in Claude Code
25
- - **Context hook** — injects relevant knowledge into each prompt
26
- - **Slash commands** — 6 commands for managing lm-assist
26
+ ---
27
27
 
28
- ### How It Works
28
+ ## Why lm-assist
29
29
 
30
- <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/architecture-diagram.svg"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/architecture-diagram.svg" alt="How lm-assist Worksarchitecture diagram" width="700"></a>
30
+ Claude Code and the Agent SDK have no built-in dashboard. You get a terminal or logs. When you're running multiple agents, debugging a failed execution, or tracking costs across a fleet of machines you need full visibility into every session, every subagent, every tool call, every token spent.
31
31
 
32
- > *Left: Any MCP-compatible IDE (Claude Code, VS Code, Cursor, Codex CLI, Gemini CLI, Antigravity) accesses the knowledge base via MCP. Right: You access the Web UI from localhost, LAN, or langmart.ai for terminal management, session inspection, and more. [Full details →](docs/how-it-works.md)*
32
+ | Without lm-assist | With lm-assist |
33
+ |-------------------|---------------|
34
+ | Scroll through terminal output | 15 specialized views per session |
35
+ | No cost visibility | Per-model token & cost breakdown |
36
+ | Can't see what agents are doing | Real-time execution dashboard |
37
+ | No way to inspect subagent trees | Full DAG visualization |
38
+ | Terminal-only access | Web UI from any device, anywhere |
39
+ | Agent SDK runs are black boxes | Same session inspection as CLI |
33
40
 
34
- > **Read:** [Your Claude Sessions Are Gold: Stop Paying Twice for the Same Knowledge](https://databunny.medium.com/your-claude-sessions-are-gold-stop-paying-twice-for-the-same-knowledge-7632ac6ddb88) — deep dive into session knowledge reuse, CLAUDE.md vs context injection, and token cost savings.
41
+ ---
35
42
 
36
- > **Read:** [Inside Claude Code: The Session File Format and How to Inspect It](https://databunny.medium.com/inside-claude-code-the-session-file-format-and-how-to-inspect-it-b9998e66d56b) — technical breakdown of the JSONL session format, message types, subagent trees, and how lm-assist surfaces it all.
43
+ ## Three Pillars
37
44
 
38
- ---
45
+ ### 1. Monitor
39
46
 
40
- ## Three Core Features
47
+ Real-time execution dashboard with live session tracking, cost analytics, and multi-machine fleet management.
41
48
 
42
- ### 1. Access Your Sessions From Anywhere
49
+ <a href="https://langmart.ai/images/assist/session-browser.png"><img src="https://langmart.ai/images/assist/session-browser.png" alt="Session Browser live sessions with cost and token tracking" width="700"></a>
43
50
 
44
- lm-assist runs a web server on your local network. Open any browser on any device — laptop, tablet, phone — and browse all your Claude Code sessions in real time.
51
+ > *Browse all sessions with human-readable names, live status, per-model cost breakdown from any browser, anywhere*
45
52
 
46
- <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/session-browsing.gif"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/session-browsing.gif" alt="Session Browsing" width="700"></a>
53
+ - Session list with human-readable slug names, live status, and running process detection
54
+ - Per-session and per-project cost tracking — total cost in gold at a glance
55
+ - Per-model token breakdown (input, output, cache read, cache creation) in Meta tab
56
+ - SSE event stream for real-time updates
57
+ - Multi-machine fleet dashboard via LangMart Hub
47
58
 
48
- > *Terminal dashboard with 4 live sessions via langmart.ai, then browse into session detail with rich chat history accessible from any browser, anywhere*
59
+ **Statusline** optional status bar showing context %, rate limits (5h/7d usage with time remaining), session cost, RAM, PID, and uptime. Color-coded: green < 50%, yellow 50-80%, red > 80%.
49
60
 
50
- ### 2. Deep Insight Views
61
+ ```
62
+ wt: no worktrees ctx:42% $12.34 5h:23% 2h14m left 7d:41% ram:565M free:6.1G pid:12345 up:3h22m
63
+ ```
51
64
 
52
- Every session gets a full breakdown across **15 specialized tabs** Chat, Thinking, Agents, Skills, Commands, Tasks, Plans, Team, Files, Git, Console, Summary, Meta, JSON, and DB.
65
+ **Key endpoints:** `GET /monitor/executions` · `GET /stream` · `GET /sessions` · `GET /projects/sessions`
53
66
 
54
- <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/deep-insight-views.gif"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/deep-insight-views.gif" alt="Deep Insight Views" width="700"></a>
67
+ ### 2. Debug
55
68
 
56
- > *Click through Chat, Agents, Plans, Files, Thinking, and Git tabs each surfaces a different dimension of the session*
69
+ 15 specialized views per session. Trace any decision through conversation flow, extended thinking, subagent hierarchy, tool calls, file changes, and git operations.
70
+
71
+ <table>
72
+ <tr>
73
+ <td><a href="https://langmart.ai/images/assist/agent-tree.png"><img src="https://langmart.ai/images/assist/agent-tree.png" alt="Agent Tree" width="340"></a><br><sub>Subagent hierarchy</sub></td>
74
+ <td><a href="https://langmart.ai/images/assist/plan-view.png"><img src="https://langmart.ai/images/assist/plan-view.png" alt="Plan View" width="340"></a><br><sub>Plan mode tracking</sub></td>
75
+ </tr>
76
+ <tr>
77
+ <td><a href="https://langmart.ai/images/assist/task-kanban.png"><img src="https://langmart.ai/images/assist/task-kanban.png" alt="Task Kanban" width="340"></a><br><sub>Task kanban board</sub></td>
78
+ <td><a href="https://langmart.ai/images/assist/team-view.png"><img src="https://langmart.ai/images/assist/team-view.png" alt="Team View" width="340"></a><br><sub>Multi-agent team coordination</sub></td>
79
+ </tr>
80
+ </table>
57
81
 
58
82
  <details>
59
83
  <summary><strong>All 15 tabs at a glance</strong></summary>
@@ -64,72 +88,83 @@ Every session gets a full breakdown across **15 specialized tabs** — Chat, Thi
64
88
  | **Thinking** | Claude's extended thinking / chain-of-thought |
65
89
  | **Agents** | Subagent tree — Explore, Plan, Bash, and custom agents |
66
90
  | **Skills** | Skill invocation timeline with chain flow, span attribution, and deep trace |
67
- | **Commands** | Slash command invocations (e.g., /trade-analyze) with args and timing |
68
- | **Tasks** | Todo lists created during the session |
91
+ | **Commands** | Slash command invocations with args and timing |
92
+ | **Tasks** | Task lists with dependency tracking |
69
93
  | **Plans** | Plan mode entries with approval status |
70
- | **Team** | Team/swarm coordination (Opus 4.6 multi-agent) |
94
+ | **Team** | Team/swarm coordination (multi-agent teams) |
71
95
  | **Files** | All files read, written, or edited during the session |
72
96
  | **Git** | Commits, pushes, and diffs from the session |
73
97
  | **Console** | Terminal output and process management |
74
98
  | **Summary** | AI-generated session summary |
75
- | **Meta** | Session metadata — timing, model, token usage |
99
+ | **Meta** | Session metadata — slug, timing, model, token usage |
76
100
  | **JSON** | Raw session JSONL data |
77
101
  | **DB** | Internal cache and index data |
78
102
 
79
103
  </details>
80
104
 
81
- ### 3. Auto-Built Knowledge Base
105
+ - Session DAG visualization (message graph + cross-session subagent/team graph)
106
+ - Fork tracking and branch visualization
107
+ - Tool call traces with full inputs and results
108
+
109
+ **Key endpoints:** `GET /sessions/:id` · `GET /sessions/:id/dag` · `GET /sessions/:id/subagents` · `GET /sessions/:id/conversation`
82
110
 
83
- lm-assist automatically generates knowledge from your Claude Code sessions, then injects it back into future prompts — giving Claude Code memory of what you've worked on before.
111
+ ### 3. Control
84
112
 
85
- <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/knowledge-base.gif"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/knowledge-base.gif" alt="Knowledge Base" width="700"></a>
113
+ Full runtime management API. Start, stop, and monitor agent executions from any device. Web terminal access to running Claude Code sessions.
86
114
 
87
- > *Browse 667 knowledge entries, expand details with code snippets and file references, inspect context injection logs showing exactly what knowledge gets injected into each prompt*
115
+ <a href="https://langmart.ai/images/assist/session-terminal.png"><img src="https://langmart.ai/images/assist/session-terminal.png" alt="Web Terminal control Claude Code from any browser" width="700"></a>
88
116
 
89
- **How it works:**
90
- 1. **Generate** — Analyzes your sessions and extracts reusable knowledge (patterns, decisions, debugging insights)
91
- 2. **Search** — Indexed with BM25 + vector similarity for fast retrieval
92
- 3. **Inject** — On every prompt, the context-injection hook finds relevant knowledge and injects it as context
93
- 4. **MCP tools** — Claude Code can also actively search and retrieve knowledge using `search`, `detail`, and `feedback` tools
117
+ > *Live terminal access to running Claude Code sessions — from any browser, anywhere*
94
118
 
95
- <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/context-injection-cli.png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/preview/context-injection-cli.png" alt="Context Injection in Claude Code CLI" width="700"></a>
119
+ - Start and abort agent executions via REST API
120
+ - Web terminal (ttyd) from any browser — control Claude Code remotely
121
+ - SDK runner for programmatic headless execution
122
+ - Session cache warm/clear for performance tuning
123
+ - Remote access via LangMart Hub — no VPN or port forwarding needed
96
124
 
97
- > *Claude Code CLI MCP tools search and inject knowledge before Claude responds*
125
+ **Key endpoints:** `POST /monitor/abort/:executionId` · `POST /ttyd/start` · `POST /agent/execute` · `POST /hub/connect`
98
126
 
99
127
  ### Settings
100
128
 
101
129
  <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/settings.png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/preview/settings.png" alt="Settings" width="700"></a>
102
130
 
103
- > *Settings — cloud sign-in, LAN access, connection status, and more*
131
+ > *Settings — connection status, Claude Code config, knowledge kill switch, and more*
104
132
 
105
133
  ### Mobile & Tablet Support
106
134
 
107
- The web UI is fully responsive. Access everything from your phone or tablet — control terminals, browse sessions, review knowledge, and manage tasks on the go.
135
+ The web UI is fully responsive. Monitor sessions, debug agents, and control terminals from your phone or tablet.
108
136
 
109
137
  <table>
110
138
  <tr>
111
139
  <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-terminal%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-terminal%20(mobile).png" alt="Terminal on mobile" width="180"></a><br><sub>Live Terminal</sub></td>
112
140
  <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-detail-chat%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-detail-chat%20(mobile).png" alt="Session detail on mobile" width="180"></a><br><sub>Session Detail</sub></td>
113
141
  <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/task-kanban%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/task-kanban%20(mobile).png" alt="Task kanban on mobile" width="180"></a><br><sub>Task Kanban</sub></td>
114
- <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-list%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-list%20(mobile).png" alt="Knowledge list on mobile" width="180"></a><br><sub>Knowledge Base</sub></td>
115
- </tr>
116
- <tr>
117
- <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-detail-full%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-detail-full%20(mobile).png" alt="Knowledge detail on mobile" width="180"></a><br><sub>Knowledge Detail</sub></td>
118
- <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/context-hook-logs%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/context-hook-logs%20(mobile).png" alt="Context hook logs on mobile" width="180"></a><br><sub>Context Injection Logs</sub></td>
119
142
  <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-connection%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-connection%20(mobile).png" alt="Settings on mobile" width="180"></a><br><sub>Settings</sub></td>
120
- <td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-claude-code%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-claude-code%20(mobile).png" alt="Claude Code settings on mobile" width="180"></a><br><sub>Claude Code Config</sub></td>
121
143
  </tr>
122
144
  </table>
123
145
 
124
- ### Bring Your Knowledge to Every IDE
146
+ ---
147
+
148
+ ## Data Sources
149
+
150
+ lm-assist reads the same JSONL session files regardless of how they were created:
151
+
152
+ | Source | What It Produces | lm-assist Coverage |
153
+ |--------|-----------------|-------------------|
154
+ | **Claude Code CLI** | Interactive sessions with subagents, teams, worktrees | Full parsing — all message types, tool calls, metadata |
155
+ | **Agent SDK** (Python/TypeScript) | Programmatic agent executions | Same JSONL format — full session inspection |
156
+ | **Headless mode** (`claude -p`) | Background/CI runs | Detected via process status store |
157
+ | **Running processes** | Live PID, tmux, terminal state | Real-time monitoring with zero polling overhead |
125
158
 
126
- lm-assist builds knowledge from your Claude Code sessions — but that knowledge isn't locked to Claude Code. Any MCP-compatible IDE can connect to the lm-assist MCP server and access the same knowledge base: search entries, view details, and provide feedback.
159
+ ---
160
+
161
+ ## Knowledge (Optional)
127
162
 
128
- One-click activation from the Settings page:
163
+ lm-assist includes an optional knowledge subsystem that auto-extracts reusable knowledge from your sessions and injects it into future prompts via MCP tools and a context hook. Enable or disable it at runtime from Settings — the kill switch unloads the embedder and vector store to save ~100MB of memory.
129
164
 
130
- <a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-ide-mcp%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-ide-mcp%20(mobile).png" alt="IDE MCP Integration" width="280"></a>
165
+ > **Read:** [Your Claude Sessions Are Gold: Stop Paying Twice for the Same Knowledge](https://databunny.medium.com/your-claude-sessions-are-gold-stop-paying-twice-for-the-same-knowledge-7632ac6ddb88)
131
166
 
132
- **Supported IDEs:**
167
+ When enabled, any MCP-compatible IDE can access the knowledge base:
133
168
 
134
169
  | IDE | MCP Config |
135
170
  |-----|-----------|
@@ -139,9 +174,6 @@ One-click activation from the Settings page:
139
174
  | **Windsurf** | `~/.windsurf/mcp.json` |
140
175
  | **Codex CLI** (OpenAI) | `~/.codex/config.toml` |
141
176
  | **Gemini CLI** (Google) | `~/.gemini/settings.json` |
142
- | **Google Antigravity** | `~/.gemini/antigravity/settings.json` |
143
-
144
- All IDEs get access to the same 3 MCP tools (`search`, `detail`, `feedback`) and the same knowledge base. Generate knowledge once in Claude Code, use it everywhere.
145
177
 
146
178
  ---
147
179
 
@@ -153,12 +185,17 @@ All IDEs get access to the same 3 MCP tools (`search`, `detail`, `feedback`) and
153
185
  curl -fsSL https://raw.githubusercontent.com/langmartai/lm-assist/main/install.sh | bash
154
186
  ```
155
187
 
156
- This clones the repo, builds, adds the marketplace, and installs the plugin. Then **open a new Claude Code session** and run:
188
+ Then **open a new Claude Code session** and run `/assist-setup`.
157
189
 
158
- ```
159
- /assist-setup
190
+ ### Install via npm
191
+
192
+ ```bash
193
+ npm install -g lm-assist
194
+ lm-assist start
160
195
  ```
161
196
 
197
+ Then in Claude Code, run `/assist-setup`.
198
+
162
199
  ### Install from source
163
200
 
164
201
  ```bash
@@ -168,32 +205,48 @@ npm install && npm run build
168
205
  ./core.sh start
169
206
  ```
170
207
 
171
- Then in Claude Code, run `/plugin install .` to register the plugin. **Open a new Claude Code session** and run `/assist-setup`.
208
+ Then in Claude Code, run `/plugin install .` and `/assist-setup`.
172
209
 
173
- ### Install via npm
210
+ ### What gets installed
211
+
212
+ | Component | Auto-installed | Purpose |
213
+ |-----------|---------------|---------|
214
+ | Core API + Web UI | Yes (via npm/source) | 155+ endpoint REST API + Next.js dashboard |
215
+ | MCP server | Yes (via plugin) | `search`, `detail`, `feedback` tools |
216
+ | Context hook | Yes (via plugin) | Knowledge injection (optional) |
217
+ | Slash commands | Yes (via plugin) | 6 `/assist-*` commands |
218
+ | Statusline | Optional | Git branch, context %, rate limits, process stats |
219
+
220
+ ## Services
221
+
222
+ | Service | Port | Description |
223
+ |---------|------|-------------|
224
+ | Core API | 3100 | REST API — sessions, monitor, agents, tasks, knowledge |
225
+ | Web UI | 3848 | Next.js dashboard — 15 insight tabs, terminal, settings |
174
226
 
175
227
  ```bash
176
- npm install -g lm-assist
177
- lm-assist start
228
+ lm-assist start # Start both services
229
+ lm-assist stop # Stop all services
230
+ lm-assist status # Health check + process info
231
+ lm-assist upgrade # Upgrade to latest version
178
232
  ```
179
233
 
180
- Then in Claude Code, run `/assist-setup`.
181
-
182
- ### What gets installed
234
+ ## Key API Endpoints
183
235
 
184
- | Component | Auto-installed by plugin | Purpose |
185
- |-----------|-------------------------|---------|
186
- | MCP server | Yes | `search`, `detail`, `feedback` tools in Claude Code |
187
- | Context hook (Node.js) | Yes | Injects relevant knowledge into each prompt |
188
- | Slash commands | Yes | 6 `/assist-*` commands |
189
- | Statusline | No (optional) | Git branch, context %, process stats in status bar |
236
+ | Category | Endpoints | Highlights |
237
+ |----------|-----------|------------|
238
+ | **Sessions** | 27 | List, detail, delta fetch, batch-check, conversation, subagents, forks, DAG |
239
+ | **Monitor** | 6 | Running executions, summary, abort, SSE stream |
240
+ | **Projects** | 12 | List projects, sessions per project, git info, worktree detection |
241
+ | **Terminal** | 13 | ttyd start/stop/status, WebSocket proxy, tmux attach |
242
+ | **Tasks** | 22 | Task lists, aggregated tasks, ready tasks, dependency tracking |
243
+ | **Knowledge** | 21 | List, search, generate, review (optional — can be disabled) |
244
+ | **Vectors** | 6 | Semantic search, index, reindex (optional) |
190
245
 
191
- The context hook uses Node.js for cross-platform support (Windows, macOS, Linux). The statusline is optional install via `/assist-setup --statusline` or the web UI settings page.
246
+ All endpoints support `ifModifiedSince` for efficient polling. Session data supports three indexing dimensions: `lineIndex` (JSONL position), `turnIndex` (conversation turn), and `userPromptIndex` (user message count).
192
247
 
193
248
  ## Slash Commands
194
249
 
195
- Use these from within any Claude Code session:
196
-
197
250
  | Command | Description |
198
251
  |---------|-------------|
199
252
  | `/assist` | Open the web UI in your browser |
@@ -203,70 +256,15 @@ Use these from within any Claude Code session:
203
256
  | `/assist-logs` | View context-inject hook logs |
204
257
  | `/assist-mcp-logs` | View MCP tool call logs |
205
258
 
206
- ## MCP Server
207
-
208
- The MCP server (`lm-assist`) provides 3 tools that any MCP-compatible IDE can use directly (Claude Code, VS Code, Cursor, Codex CLI, Gemini CLI, Antigravity):
209
-
210
- | Tool | Description |
211
- |------|-------------|
212
- | `search` | Unified search across knowledge and file history |
213
- | `detail` | Progressive disclosure — expand any item by ID (e.g., `K001`, `arch:component`) |
214
- | `feedback` | Flag context as outdated, wrong, irrelevant, or useful |
215
-
216
- When installed as a plugin, the MCP server is registered automatically. For non-plugin installs:
217
-
218
- ```bash
219
- curl -X POST http://localhost:3100/claude-code/mcp/install
220
- ```
221
-
222
- ## Services
223
-
224
- lm-assist runs two services:
225
-
226
- | Service | Port | Description |
227
- |---------|------|-------------|
228
- | Core API | 3100 | REST API — sessions, knowledge, tasks |
229
- | Web UI | 3848 | Next.js dashboard — accessible from any device on your network |
230
-
231
- ```bash
232
- ./core.sh start # Start both services
233
- ./core.sh stop # Stop all services
234
- ./core.sh restart # Restart (auto-rebuilds if TypeScript changed)
235
- ./core.sh status # Health check
236
- ./core.sh logs core # View API logs
237
- ./core.sh logs web # View web logs
238
- ```
239
-
240
259
  ## Configuration
241
260
 
242
- No API key is needed — lm-assist works entirely with your local Claude Code session data. Optionally copy `.env.example` to `.env` to customize ports:
261
+ No API key needed — lm-assist works entirely with your local Claude Code session data. Optionally copy `.env.example` to `.env`:
243
262
 
244
263
  ```bash
245
264
  API_PORT=3100 # Core API port (default: 3100)
246
265
  WEB_PORT=3848 # Web UI port (default: 3848)
247
266
  ```
248
267
 
249
- ## Project Structure
250
-
251
- ```
252
- lm-assist/
253
- ├── core/ ← Backend API (TypeScript)
254
- │ ├── src/
255
- │ │ ├── mcp-server/ ← MCP server (search, detail, feedback tools)
256
- │ │ ├── routes/core/ ← REST API routes (155 endpoints)
257
- │ │ ├── knowledge/ ← Knowledge generation pipeline
258
- │ │ └── vector/ ← Embeddings + vector store
259
- │ └── hooks/ ← Claude Code hook scripts (Node.js, cross-platform)
260
- ├── web/ ← Web UI (Next.js, React 19)
261
- ├── commands/ ← Slash command definitions
262
- ├── hooks/ ← Plugin hook registration
263
- ├── docs/screenshots/ ← Product screenshots
264
- ├── .claude-plugin/ ← Claude Code plugin metadata
265
- ├── .mcp.json ← MCP server auto-registration
266
- ├── core.sh ← Service manager
267
- └── bin/lm-assist.js ← CLI entry point
268
- ```
269
-
270
268
  ## Platform Support
271
269
 
272
270
  | Platform | Support | Notes |
@@ -274,9 +272,14 @@ lm-assist/
274
272
  | Linux | Full | All features including web terminal |
275
273
  | macOS | Full | All features including web terminal |
276
274
  | Windows | Partial | Everything except console/terminal access (ttyd not available) |
277
- | Mobile / Tablet | Web UI | Browse sessions, tasks, knowledge from any device on your network |
275
+ | Mobile / Tablet | Web UI | Monitor, debug, and control from any device on your network |
276
+
277
+ ## Who It's For
278
278
 
279
- The web UI is fully responsiveoptimized for phone, tablet, and desktop viewports.
279
+ - **Solo developers** using Claude Codesee what's happening across all your sessions
280
+ - **Teams building with Agent SDK** — observability for your agent pipelines
281
+ - **DevOps managing agent fleets** — multi-machine dashboard, cost tracking, process management
282
+ - **AI product builders** — debug agent behavior with 15 insight views
280
283
 
281
284
  ## Changelog
282
285
 
package/bin/lm-assist.js CHANGED
File without changes
@@ -0,0 +1,106 @@
1
+ ---
2
+ allowed-tools: Bash
3
+ description: Execute an agent on current or specified project
4
+ ---
5
+
6
+ # /run — Execute Agent
7
+
8
+ Launch an agent execution on the current project or a specified project path.
9
+
10
+ ## Arguments
11
+
12
+ - `$ARGUMENTS`: The prompt/task for the agent to execute
13
+ - `--project /path/to/project`: Optional — override the target project (default: current working directory)
14
+
15
+ ## Steps
16
+
17
+ 1. **Check API health:**
18
+ ```bash
19
+ curl -s --max-time 2 http://localhost:3100/health
20
+ ```
21
+ If not healthy, tell the user to start lm-assist with `lm-assist start` or `/assist-setup`.
22
+
23
+ 2. **Parse arguments:**
24
+ - Extract `--project` value if present, otherwise use the current working directory as `PROJECT_CWD`
25
+ - Everything else is the user's prompt
26
+
27
+ 3. **Check for running executions on the target project:**
28
+ ```bash
29
+ curl -s --max-time 3 http://localhost:3100/monitor/executions | python3 -c "
30
+ import sys,json
31
+ execs = json.load(sys.stdin).get('data',{}).get('executions',[])
32
+ running = [e for e in execs if e.get('isRunning')]
33
+ if running:
34
+ print(f'WARNING: {len(running)} execution(s) already running:')
35
+ for e in running:
36
+ eid = e.get('executionId','')[:12]
37
+ turns = e.get('turnCount',0)
38
+ cost = e.get('costUsd',0)
39
+ elapsed = (e.get('elapsedMs',0) or 0) // 1000
40
+ print(f' {eid} T:{turns} \${cost:.2f} {elapsed}s elapsed')
41
+ print()
42
+ print('Options:')
43
+ print(' - Proceed anyway (runs in parallel)')
44
+ print(' - Abort the running execution first')
45
+ else:
46
+ print('OK: No running executions.')
47
+ "
48
+ ```
49
+
50
+ If executions are running, **ask the user** whether to proceed, abort first, or cancel. Do NOT auto-proceed.
51
+
52
+ 4. **Format the prompt:**
53
+ Take the user's input and expand it into a clear, actionable prompt. Examples:
54
+ - "review auth" → "Review the authentication module for security vulnerabilities, code quality issues, and test coverage gaps. Report findings with severity ratings."
55
+ - "fix the tests" → "Investigate and fix failing tests. Run the test suite, identify failures, analyze root causes, and implement fixes. Verify all tests pass after changes."
56
+ - "add error handling to the API" → "Add comprehensive error handling to all API endpoints. Include input validation, proper HTTP status codes, error response formatting, and logging for debugging."
57
+
58
+ 5. **Execute the agent:**
59
+ ```bash
60
+ curl -s -X POST http://localhost:3100/agent/execute \
61
+ -H 'Content-Type: application/json' \
62
+ -d '{"prompt":"FORMATTED_PROMPT","cwd":"PROJECT_CWD"}' | python3 -c "
63
+ import sys,json
64
+ d = json.load(sys.stdin)
65
+ if d.get('success'):
66
+ data = d.get('data',{})
67
+ eid = data.get('executionId','')
68
+ print(f'Execution started: {eid}')
69
+ else:
70
+ err = d.get('error',{})
71
+ print(f'Failed: {err.get(\"message\",\"unknown error\")}')
72
+ "
73
+ ```
74
+
75
+ 6. **Confirm execution started (wait 3 seconds, then check):**
76
+ ```bash
77
+ sleep 3 && curl -s --max-time 3 http://localhost:3100/monitor/executions | python3 -c "
78
+ import sys,json
79
+ execs = json.load(sys.stdin).get('data',{}).get('executions',[])
80
+ running = [e for e in execs if e.get('isRunning')]
81
+ if running:
82
+ e = running[0]
83
+ eid = e.get('executionId','')[:12]
84
+ status = e.get('status','')
85
+ turns = e.get('turnCount',0)
86
+ print(f'Confirmed running: {eid} status:{status} T:{turns}')
87
+ print(f'Monitor with: /sessions')
88
+ print(f'Or open web UI: http://localhost:3848')
89
+ else:
90
+ print('Execution may still be starting. Check with /sessions.')
91
+ "
92
+ ```
93
+
94
+ ## Output
95
+
96
+ Report the execution status clearly:
97
+ - Execution ID
98
+ - Status (running/queued)
99
+ - How to monitor progress (`/sessions` or web UI URL)
100
+
101
+ If the API is not running, show:
102
+ ```
103
+ lm-assist API is not running.
104
+ Start with: lm-assist start
105
+ Or run: /assist-setup
106
+ ```
@@ -0,0 +1,87 @@
1
+ ---
2
+ allowed-tools: Bash
3
+ description: List recent Claude Code sessions with costs and status
4
+ ---
5
+
6
+ # /sessions — Session List
7
+
8
+ Show recent Claude Code sessions with costs, turns, model, and running status.
9
+
10
+ ## Arguments
11
+
12
+ - No arguments: show sessions across all projects
13
+ - `$ARGUMENTS[0]`: filter by project name (partial match)
14
+
15
+ ## Steps
16
+
17
+ 1. **Check API health:**
18
+ ```bash
19
+ curl -s --max-time 2 http://localhost:3100/health
20
+ ```
21
+ If not healthy, tell the user to start lm-assist with `lm-assist start` or `/assist-setup`.
22
+
23
+ 2. **Fetch sessions:**
24
+ ```bash
25
+ curl -s --max-time 5 http://localhost:3100/projects/sessions | python3 -c "
26
+ import sys,json
27
+ data = json.load(sys.stdin).get('data',{})
28
+ sessions = data.get('sessions',[])
29
+ total = data.get('total', len(sessions))
30
+
31
+ # Filter by project if argument provided
32
+ project_filter = '''$ARGUMENTS[0]'''.strip()
33
+ if project_filter:
34
+ sessions = [s for s in sessions if project_filter.lower() in (s.get('projectPath','') + s.get('projectName','')).lower()]
35
+
36
+ # Separate running from completed
37
+ running = [s for s in sessions if s.get('isRunning')]
38
+ rest = [s for s in sessions if not s.get('isRunning')][:10 - len(running)]
39
+ show = running + rest
40
+
41
+ print(f'Sessions ({len(show)} of {total})')
42
+ if project_filter:
43
+ print(f'Filtered: {project_filter}')
44
+ print('─' * 95)
45
+ fmt = '{:<7} {:<28} {:<18} {:<8} {:>8} {:>6}'
46
+ print(fmt.format('Status', 'Name', 'Project', 'Model', 'Cost', 'Turns'))
47
+ print('─' * 95)
48
+ for s in show:
49
+ status = '[RUN]' if s.get('isRunning') else ''
50
+ name = (s.get('customTitle') or s.get('slug') or s['sessionId'][:12])[:26]
51
+ project = (s.get('projectPath','').split('/')[-1] or '-')[:16]
52
+ model = (s.get('model','') or '-').replace('claude-','').replace('opus-4-6','opus').replace('sonnet-4-6','sonnet')[:7]
53
+ cost = f'\${s[\"totalCostUsd\"]:.2f}' if s.get('totalCostUsd') else '-'
54
+ turns = str(s.get('numTurns','')) or '-'
55
+ print(fmt.format(status, name, project, model, cost, turns))
56
+ "
57
+ ```
58
+
59
+ 3. **Check running executions:**
60
+ ```bash
61
+ curl -s --max-time 3 http://localhost:3100/monitor/executions | python3 -c "
62
+ import sys,json
63
+ execs = json.load(sys.stdin).get('data',{}).get('executions',[])
64
+ running = [e for e in execs if e.get('isRunning')]
65
+ if running:
66
+ print(f'\nRunning Executions ({len(running)}):')
67
+ for e in running:
68
+ eid = e.get('executionId','')[:12]
69
+ turns = e.get('turnCount',0)
70
+ cost = e.get('costUsd',0)
71
+ elapsed = (e.get('elapsedMs',0) or 0) // 1000
72
+ mins = elapsed // 60
73
+ secs = elapsed % 60
74
+ print(f' {eid} T:{turns} \${cost:.2f} {mins}m{secs}s')
75
+ "
76
+ ```
77
+
78
+ ## Output
79
+
80
+ Present the table output from the python script directly. Do NOT reformat as markdown — show it as-is from the terminal output.
81
+
82
+ If the API is not running, show:
83
+ ```
84
+ lm-assist API is not running.
85
+ Start with: lm-assist start
86
+ Or run: /assist-setup
87
+ ```