lm-assist 0.1.69 → 0.1.70

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 (327) hide show
  1. package/.claude-plugin/marketplace.json +21 -10
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +182 -136
  4. package/bin/postinstall.js +102 -0
  5. package/commands/assist-setup.md +57 -21
  6. package/package.json +3 -2
  7. package/web/.next/BUILD_ID +1 -1
  8. package/web/.next/build-manifest.json +2 -2
  9. package/web/.next/fallback-build-manifest.json +2 -2
  10. package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  11. package/web/.next/server/app/_global-error.html +2 -2
  12. package/web/.next/server/app/_global-error.rsc +1 -1
  13. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  14. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/web/.next/server/app/_not-found.html +1 -1
  19. package/web/.next/server/app/_not-found.rsc +1 -1
  20. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  21. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  23. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  26. package/web/.next/server/app/assist-resources.html +1 -1
  27. package/web/.next/server/app/assist-resources.rsc +1 -1
  28. package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +1 -1
  29. package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources.segment.rsc +1 -1
  30. package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  31. package/web/.next/server/app/assist-resources.segments/_full.segment.rsc +1 -1
  32. package/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
  33. package/web/.next/server/app/assist-resources.segments/_index.segment.rsc +1 -1
  34. package/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
  35. package/web/.next/server/app/auth.html +1 -1
  36. package/web/.next/server/app/auth.rsc +1 -1
  37. package/web/.next/server/app/auth.segments/_full.segment.rsc +1 -1
  38. package/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
  39. package/web/.next/server/app/auth.segments/_index.segment.rsc +1 -1
  40. package/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
  41. package/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +1 -1
  42. package/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
  43. package/web/.next/server/app/console.html +1 -1
  44. package/web/.next/server/app/console.rsc +1 -1
  45. package/web/.next/server/app/console.segments/_full.segment.rsc +1 -1
  46. package/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
  47. package/web/.next/server/app/console.segments/_index.segment.rsc +1 -1
  48. package/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
  49. package/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +1 -1
  50. package/web/.next/server/app/console.segments/console.segment.rsc +1 -1
  51. package/web/.next/server/app/knowledge.html +1 -1
  52. package/web/.next/server/app/knowledge.rsc +1 -1
  53. package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +1 -1
  54. package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
  55. package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  56. package/web/.next/server/app/knowledge.segments/_full.segment.rsc +1 -1
  57. package/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
  58. package/web/.next/server/app/knowledge.segments/_index.segment.rsc +1 -1
  59. package/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
  60. package/web/.next/server/app/lan-blocked.html +1 -1
  61. package/web/.next/server/app/lan-blocked.rsc +1 -1
  62. package/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +1 -1
  63. package/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
  64. package/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +1 -1
  65. package/web/.next/server/app/lan-blocked.segments/_tree.segment.rsc +1 -1
  66. package/web/.next/server/app/lan-blocked.segments/lan-blocked/__PAGE__.segment.rsc +1 -1
  67. package/web/.next/server/app/lan-blocked.segments/lan-blocked.segment.rsc +1 -1
  68. package/web/.next/server/app/machines.html +1 -1
  69. package/web/.next/server/app/machines.rsc +1 -1
  70. package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +1 -1
  71. package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
  72. package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  73. package/web/.next/server/app/machines.segments/_full.segment.rsc +1 -1
  74. package/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
  75. package/web/.next/server/app/machines.segments/_index.segment.rsc +1 -1
  76. package/web/.next/server/app/machines.segments/_tree.segment.rsc +1 -1
  77. package/web/.next/server/app/process-dashboard.html +1 -1
  78. package/web/.next/server/app/process-dashboard.rsc +1 -1
  79. package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +1 -1
  80. package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard.segment.rsc +1 -1
  81. package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  82. package/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +1 -1
  83. package/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
  84. package/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +1 -1
  85. package/web/.next/server/app/process-dashboard.segments/_tree.segment.rsc +1 -1
  86. package/web/.next/server/app/projects.html +1 -1
  87. package/web/.next/server/app/projects.rsc +1 -1
  88. package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +1 -1
  89. package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
  90. package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  91. package/web/.next/server/app/projects.segments/_full.segment.rsc +1 -1
  92. package/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  93. package/web/.next/server/app/projects.segments/_index.segment.rsc +1 -1
  94. package/web/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  95. package/web/.next/server/app/search.html +1 -1
  96. package/web/.next/server/app/search.rsc +1 -1
  97. package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +1 -1
  98. package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
  99. package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  100. package/web/.next/server/app/search.segments/_full.segment.rsc +1 -1
  101. package/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
  102. package/web/.next/server/app/search.segments/_index.segment.rsc +1 -1
  103. package/web/.next/server/app/search.segments/_tree.segment.rsc +1 -1
  104. package/web/.next/server/app/session-dashboard.html +1 -1
  105. package/web/.next/server/app/session-dashboard.rsc +1 -1
  106. package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +1 -1
  107. package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard.segment.rsc +1 -1
  108. package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  109. package/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +1 -1
  110. package/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
  111. package/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +1 -1
  112. package/web/.next/server/app/session-dashboard.segments/_tree.segment.rsc +1 -1
  113. package/web/.next/server/app/sessions.html +1 -1
  114. package/web/.next/server/app/sessions.rsc +1 -1
  115. package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +1 -1
  116. package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
  117. package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  118. package/web/.next/server/app/sessions.segments/_full.segment.rsc +1 -1
  119. package/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
  120. package/web/.next/server/app/sessions.segments/_index.segment.rsc +1 -1
  121. package/web/.next/server/app/sessions.segments/_tree.segment.rsc +1 -1
  122. package/web/.next/server/app/settings.html +1 -1
  123. package/web/.next/server/app/settings.rsc +2 -2
  124. package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  125. package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  126. package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  127. package/web/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  128. package/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  129. package/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  130. package/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  131. package/web/.next/server/app/skills.html +1 -1
  132. package/web/.next/server/app/skills.rsc +1 -1
  133. package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +1 -1
  134. package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
  135. package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  136. package/web/.next/server/app/skills.segments/_full.segment.rsc +1 -1
  137. package/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  138. package/web/.next/server/app/skills.segments/_index.segment.rsc +1 -1
  139. package/web/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
  140. package/web/.next/server/app/tasks.html +1 -1
  141. package/web/.next/server/app/tasks.rsc +1 -1
  142. package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +1 -1
  143. package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
  144. package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  145. package/web/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  146. package/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  147. package/web/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  148. package/web/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  149. package/web/.next/server/app/terminal-dashboard.html +1 -1
  150. package/web/.next/server/app/terminal-dashboard.rsc +1 -1
  151. package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +1 -1
  152. package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard.segment.rsc +1 -1
  153. package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  154. package/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +1 -1
  155. package/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
  156. package/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +1 -1
  157. package/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
  158. package/web/.next/server/chunks/[root-of-the-server]__dd1a4bb8._.js +1 -1
  159. package/web/.next/server/chunks/[root-of-the-server]__dd1a4bb8._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js +1 -1
  161. package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js.map +1 -1
  162. package/web/.next/server/pages/404.html +1 -1
  163. package/web/.next/server/pages/500.html +2 -2
  164. package/web/.next/standalone/web/.next/BUILD_ID +1 -1
  165. package/web/.next/standalone/web/.next/build-manifest.json +2 -2
  166. package/web/.next/standalone/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  167. package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
  168. package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
  169. package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  170. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  171. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  172. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  173. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  174. package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
  175. package/web/.next/standalone/web/.next/server/app/_not-found.rsc +1 -1
  176. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  177. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  178. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  179. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  180. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  181. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  182. package/web/.next/standalone/web/.next/server/app/assist-resources.html +1 -1
  183. package/web/.next/standalone/web/.next/server/app/assist-resources.rsc +1 -1
  184. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +1 -1
  185. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources.segment.rsc +1 -1
  186. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  187. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_full.segment.rsc +1 -1
  188. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
  189. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_index.segment.rsc +1 -1
  190. package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
  191. package/web/.next/standalone/web/.next/server/app/auth.html +1 -1
  192. package/web/.next/standalone/web/.next/server/app/auth.rsc +1 -1
  193. package/web/.next/standalone/web/.next/server/app/auth.segments/_full.segment.rsc +1 -1
  194. package/web/.next/standalone/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
  195. package/web/.next/standalone/web/.next/server/app/auth.segments/_index.segment.rsc +1 -1
  196. package/web/.next/standalone/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
  197. package/web/.next/standalone/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +1 -1
  198. package/web/.next/standalone/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
  199. package/web/.next/standalone/web/.next/server/app/console.html +1 -1
  200. package/web/.next/standalone/web/.next/server/app/console.rsc +1 -1
  201. package/web/.next/standalone/web/.next/server/app/console.segments/_full.segment.rsc +1 -1
  202. package/web/.next/standalone/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
  203. package/web/.next/standalone/web/.next/server/app/console.segments/_index.segment.rsc +1 -1
  204. package/web/.next/standalone/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
  205. package/web/.next/standalone/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +1 -1
  206. package/web/.next/standalone/web/.next/server/app/console.segments/console.segment.rsc +1 -1
  207. package/web/.next/standalone/web/.next/server/app/knowledge.html +1 -1
  208. package/web/.next/standalone/web/.next/server/app/knowledge.rsc +1 -1
  209. package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +1 -1
  210. package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
  211. package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  212. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_full.segment.rsc +1 -1
  213. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
  214. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_index.segment.rsc +1 -1
  215. package/web/.next/standalone/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
  216. package/web/.next/standalone/web/.next/server/app/lan-blocked.html +1 -1
  217. package/web/.next/standalone/web/.next/server/app/lan-blocked.rsc +1 -1
  218. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +1 -1
  219. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
  220. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +1 -1
  221. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_tree.segment.rsc +1 -1
  222. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/lan-blocked/__PAGE__.segment.rsc +1 -1
  223. package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/lan-blocked.segment.rsc +1 -1
  224. package/web/.next/standalone/web/.next/server/app/machines.html +1 -1
  225. package/web/.next/standalone/web/.next/server/app/machines.rsc +1 -1
  226. package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +1 -1
  227. package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
  228. package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  229. package/web/.next/standalone/web/.next/server/app/machines.segments/_full.segment.rsc +1 -1
  230. package/web/.next/standalone/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
  231. package/web/.next/standalone/web/.next/server/app/machines.segments/_index.segment.rsc +1 -1
  232. package/web/.next/standalone/web/.next/server/app/machines.segments/_tree.segment.rsc +1 -1
  233. package/web/.next/standalone/web/.next/server/app/process-dashboard.html +1 -1
  234. package/web/.next/standalone/web/.next/server/app/process-dashboard.rsc +1 -1
  235. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +1 -1
  236. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard.segment.rsc +1 -1
  237. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  238. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +1 -1
  239. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
  240. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +1 -1
  241. package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_tree.segment.rsc +1 -1
  242. package/web/.next/standalone/web/.next/server/app/projects.html +1 -1
  243. package/web/.next/standalone/web/.next/server/app/projects.rsc +1 -1
  244. package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +1 -1
  245. package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
  246. package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  247. package/web/.next/standalone/web/.next/server/app/projects.segments/_full.segment.rsc +1 -1
  248. package/web/.next/standalone/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  249. package/web/.next/standalone/web/.next/server/app/projects.segments/_index.segment.rsc +1 -1
  250. package/web/.next/standalone/web/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
  251. package/web/.next/standalone/web/.next/server/app/search.html +1 -1
  252. package/web/.next/standalone/web/.next/server/app/search.rsc +1 -1
  253. package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +1 -1
  254. package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
  255. package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  256. package/web/.next/standalone/web/.next/server/app/search.segments/_full.segment.rsc +1 -1
  257. package/web/.next/standalone/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
  258. package/web/.next/standalone/web/.next/server/app/search.segments/_index.segment.rsc +1 -1
  259. package/web/.next/standalone/web/.next/server/app/search.segments/_tree.segment.rsc +1 -1
  260. package/web/.next/standalone/web/.next/server/app/session-dashboard.html +1 -1
  261. package/web/.next/standalone/web/.next/server/app/session-dashboard.rsc +1 -1
  262. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +1 -1
  263. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard.segment.rsc +1 -1
  264. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  265. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +1 -1
  266. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
  267. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +1 -1
  268. package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_tree.segment.rsc +1 -1
  269. package/web/.next/standalone/web/.next/server/app/sessions.html +1 -1
  270. package/web/.next/standalone/web/.next/server/app/sessions.rsc +1 -1
  271. package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +1 -1
  272. package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
  273. package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  274. package/web/.next/standalone/web/.next/server/app/sessions.segments/_full.segment.rsc +1 -1
  275. package/web/.next/standalone/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
  276. package/web/.next/standalone/web/.next/server/app/sessions.segments/_index.segment.rsc +1 -1
  277. package/web/.next/standalone/web/.next/server/app/sessions.segments/_tree.segment.rsc +1 -1
  278. package/web/.next/standalone/web/.next/server/app/settings.html +1 -1
  279. package/web/.next/standalone/web/.next/server/app/settings.rsc +2 -2
  280. package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  281. package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  282. package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  283. package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  284. package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  285. package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  286. package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  287. package/web/.next/standalone/web/.next/server/app/skills.html +1 -1
  288. package/web/.next/standalone/web/.next/server/app/skills.rsc +1 -1
  289. package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +1 -1
  290. package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
  291. package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  292. package/web/.next/standalone/web/.next/server/app/skills.segments/_full.segment.rsc +1 -1
  293. package/web/.next/standalone/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  294. package/web/.next/standalone/web/.next/server/app/skills.segments/_index.segment.rsc +1 -1
  295. package/web/.next/standalone/web/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
  296. package/web/.next/standalone/web/.next/server/app/tasks.html +1 -1
  297. package/web/.next/standalone/web/.next/server/app/tasks.rsc +1 -1
  298. package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +1 -1
  299. package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
  300. package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  301. package/web/.next/standalone/web/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  302. package/web/.next/standalone/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  303. package/web/.next/standalone/web/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  304. package/web/.next/standalone/web/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  305. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.html +1 -1
  306. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.rsc +1 -1
  307. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +1 -1
  308. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard.segment.rsc +1 -1
  309. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  310. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +1 -1
  311. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
  312. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +1 -1
  313. package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
  314. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__dd1a4bb8._.js +1 -1
  315. package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js +1 -1
  316. package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
  317. package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
  318. package/web/.next/static/chunks/53f0ab7395cf9933.js +1 -0
  319. package/web/.next/trace +1 -1
  320. package/web/.next/trace-build +1 -1
  321. package/commands/run.md +0 -106
  322. package/commands/sessions.md +0 -102
  323. package/commands/summary.md +0 -192
  324. package/web/.next/static/chunks/1e86b4dd7fddd3da.js +0 -1
  325. /package/web/.next/static/{x6yc3QzLpWEIHLjl0LtF_ → 8VBn81pH9AODVXRze6zeu}/_buildManifest.js +0 -0
  326. /package/web/.next/static/{x6yc3QzLpWEIHLjl0LtF_ → 8VBn81pH9AODVXRze6zeu}/_clientMiddlewareManifest.json +0 -0
  327. /package/web/.next/static/{x6yc3QzLpWEIHLjl0LtF_ → 8VBn81pH9AODVXRze6zeu}/_ssgManifest.js +0 -0
@@ -1,20 +1,31 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
3
  "name": "langmartai",
4
- "description": "LM Assistobservability platform for Claude Code and Agent SDK",
5
- "owner": {
6
- "name": "langmartai"
7
- },
8
- "metadata": {
9
- "description": "Plugins by langmartai",
10
- "homepage": "https://github.com/langmartai/lm-assist"
11
- },
4
+ "description": "Claude Code plugins multi-session management, web dashboard, and observability platform",
5
+ "owner": { "name": "langmartai" },
6
+ "metadata": { "description": "Plugins by langmartai", "homepage": "https://github.com/langmartai/lm-assist" },
12
7
  "plugins": [
8
+ {
9
+ "name": "claude-code-multisession",
10
+ "version": "0.1.1",
11
+ "source": { "source": "url", "url": "https://github.com/langmartai/claude-code-multisession.git", "sha": "b2053c2a7b02f37d9a030e2bf954549d14414572" },
12
+ "description": "One prompt to control all your Claude Code sessions. Monitor costs, debug agents, route work across projects, queue prompts, auto-learn routing.",
13
+ "category": "productivity",
14
+ "homepage": "https://github.com/langmartai/claude-code-multisession"
15
+ },
16
+ {
17
+ "name": "claude-code-webui",
18
+ "version": "0.1.1",
19
+ "source": { "source": "url", "url": "https://github.com/langmartai/claude-code-webui.git", "sha": "89e2efe1bcfc3b0ebd038a481a9ed21fe48e86c3" },
20
+ "description": "Web dashboard for Claude Code. Browse sessions with 15 insight views, debug subagent trees, control terminals from any browser.",
21
+ "category": "productivity",
22
+ "homepage": "https://github.com/langmartai/claude-code-webui"
23
+ },
13
24
  {
14
25
  "name": "lm-assist",
15
- "version": "0.1.69",
26
+ "version": "0.1.70",
16
27
  "source": "./",
17
- "description": "Monitor, debug, and control AI coding agents. Skills for session intelligence (observe, route), commands (/sessions, /summary, /run), 15 insight views per session, web terminal, project/session summaries, cross-project routing, prompt queue, auto-learning. Optional: MCP knowledge tools, context-injection hook.",
28
+ "description": "Observability platform for Claude Code and Agent SDK. 155+ API endpoints, 15 insight views, web terminal, session/project summaries, prompt queue, auto-learning.",
18
29
  "category": "productivity",
19
30
  "homepage": "https://github.com/langmartai/lm-assist"
20
31
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lm-assist",
3
- "version": "0.1.69",
3
+ "version": "0.1.70",
4
4
  "description": "Observability platform for Claude Code and Agent SDK — monitor, debug, and control AI coding agents",
5
5
  "author": {
6
6
  "name": "langmartai"
package/README.md CHANGED
@@ -44,104 +44,43 @@ Claude Code and the Agent SDK have no built-in dashboard. You get a terminal or
44
44
 
45
45
  ### 1. Monitor
46
46
 
47
- Real-time execution dashboard with live session tracking, cost analytics, and multi-machine fleet management.
47
+ Real-time execution tracking via REST API.
48
48
 
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>
50
-
51
- > *Browse all sessions with human-readable names, live status, per-model cost breakdown — from any browser, anywhere*
52
-
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
49
+ - Session list with slug names, live status, running process detection
50
+ - Per-session and per-project cost tracking with per-model token breakdown
51
+ - SSE event stream for real-time updates (`GET /stream`)
57
52
  - Multi-machine fleet dashboard via LangMart Hub
58
-
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%.
60
-
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
- ```
53
+ - Statusline: context %, rate limits (5h/7d), cost, RAM, PID
64
54
 
65
55
  **Key endpoints:** `GET /monitor/executions` · `GET /stream` · `GET /sessions` · `GET /projects/sessions`
66
56
 
67
57
  ### 2. Debug
68
58
 
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>
81
-
82
- <details>
83
- <summary><strong>All 15 tabs at a glance</strong></summary>
84
-
85
- | Tab | What You See |
86
- |-----|-------------|
87
- | **Chat** | Full conversation with syntax-highlighted code blocks |
88
- | **Thinking** | Claude's extended thinking / chain-of-thought |
89
- | **Agents** | Subagent tree — Explore, Plan, Bash, and custom agents |
90
- | **Skills** | Skill invocation timeline with chain flow, span attribution, and deep trace |
91
- | **Commands** | Slash command invocations with args and timing |
92
- | **Tasks** | Task lists with dependency tracking |
93
- | **Plans** | Plan mode entries with approval status |
94
- | **Team** | Team/swarm coordination (multi-agent teams) |
95
- | **Files** | All files read, written, or edited during the session |
96
- | **Git** | Commits, pushes, and diffs from the session |
97
- | **Console** | Terminal output and process management |
98
- | **Summary** | AI-generated session summary |
99
- | **Meta** | Session metadata — slug, timing, model, token usage |
100
- | **JSON** | Raw session JSONL data |
101
- | **DB** | Internal cache and index data |
102
-
103
- </details>
104
-
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
59
+ 15 data dimensions per session, all accessible via API.
60
+
61
+ - Conversation, thinking blocks, tool calls, subagent hierarchy, DAG
62
+ - File changes, git operations, plans, tasks, team coordination
63
+ - Fork tracking, session summaries, skill traces
108
64
 
109
65
  **Key endpoints:** `GET /sessions/:id` · `GET /sessions/:id/dag` · `GET /sessions/:id/subagents` · `GET /sessions/:id/conversation`
110
66
 
111
67
  ### 3. Control
112
68
 
113
- Full runtime management API. Start, stop, and monitor agent executions from any device. Web terminal access to running Claude Code sessions.
114
-
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>
69
+ Full runtime management API.
116
70
 
117
- > *Live terminal access to running Claude Code sessions — from any browser, anywhere*
118
-
119
- - Start and abort agent executions via REST API
120
- - Web terminal (ttyd) from any browser — control Claude Code remotely
71
+ - Start and abort agent executions
121
72
  - 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
73
+ - Session cache warm/clear
74
+ - Web terminal (ttyd) from any browser
75
+ - Remote access via LangMart Hub
124
76
 
125
77
  **Key endpoints:** `POST /monitor/abort/:executionId` · `POST /ttyd/start` · `POST /agent/execute` · `POST /hub/connect`
126
78
 
127
- ### Settings
128
-
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>
79
+ ### Web Dashboard
130
80
 
131
- > *Settings connection status, Claude Code config, knowledge kill switch, and more*
81
+ See [claude-code-webui](https://github.com/langmartai/claude-code-webui) for the full web dashboard with 15 insight tabs, web terminal, task kanban, and mobile support.
132
82
 
133
- ### Mobile & Tablet Support
134
-
135
- The web UI is fully responsive. Monitor sessions, debug agents, and control terminals from your phone or tablet.
136
-
137
- <table>
138
- <tr>
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>
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>
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>
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>
143
- </tr>
144
- </table>
83
+ <a href="https://langmart.ai/images/assist/session-browser.png"><img src="https://langmart.ai/images/assist/session-browser.png" alt="Session Browser" width="700"></a>
145
84
 
146
85
  ---
147
86
 
@@ -158,55 +97,57 @@ lm-assist reads the same JSONL session files regardless of how they were created
158
97
 
159
98
  ---
160
99
 
161
- ## Knowledge (Off by Default)
162
-
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. **Disabled by default** to save ~100MB of memory. Enable it in Settings > Data Loading, then run `/assist-setup` to register the MCP server and context hook.
100
+ ---
164
101
 
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)
102
+ ## Install
166
103
 
167
- When enabled, any MCP-compatible IDE can access the knowledge base:
104
+ ### Quick start
168
105
 
169
- | IDE | MCP Config |
170
- |-----|-----------|
171
- | **Claude Code** | Auto-registered via plugin install |
172
- | **VS Code** (Copilot) | `settings.json` — MCP server entry |
173
- | **Cursor** | `.cursor/mcp.json` |
174
- | **Windsurf** | `~/.windsurf/mcp.json` |
175
- | **Codex CLI** (OpenAI) | `~/.codex/config.toml` |
176
- | **Gemini CLI** (Google) | `~/.gemini/settings.json` |
106
+ ```bash
107
+ npm install -g lm-assist
108
+ ```
177
109
 
178
- ---
110
+ The postinstall script automatically starts services, installs the statusline, and installs the [Claude Code Multisession](https://github.com/langmartai/claude-code-multisession) plugin.
179
111
 
180
- ## Install
112
+ **Open a new Claude Code session** and type `/sessions` to verify.
181
113
 
182
- ### Plugin install (recommended)
114
+ ### Plugin marketplace
183
115
 
184
- In Claude Code, run:
116
+ Add the marketplace once — then install any combination of plugins:
185
117
 
186
118
  ```
187
119
  /plugin marketplace add langmartai/lm-assist
188
-
189
- /plugin install lm-assist@langmartai
190
120
  ```
191
121
 
192
- Then **open a new Claude Code session** and run `/assist-setup`.
193
-
194
- This registers skills, commands, MCP tools, and hooks automatically.
195
-
196
- ### Install via npm (for the API + Web services)
122
+ Three packages work together:
197
123
 
198
- ```bash
199
- npm install -g lm-assist
200
- lm-assist start
124
+ ```
125
+ ┌─────────────────────────────────────────────────────────┐
126
+ │ claude-code-multisession (Claude Code plugin) │
127
+ │ Skills: observe, route │
128
+ │ Commands: /projects /sessions /summary /run │
129
+ ├─────────────────────────────────────────────────────────┤
130
+ │ claude-code-webui (Claude Code plugin) │
131
+ │ Skill: dashboard │
132
+ │ Commands: /web /web-sessions /web-tasks │
133
+ ├─────────────────────────────────────────────────────────┤
134
+ │ lm-assist (npm package) │
135
+ │ Foundation: 155+ API endpoints, Next.js web dashboard, │
136
+ │ session engine, cost tracking, statusline │
137
+ │ Commands: /assist /assist-setup /assist-status ... │
138
+ └─────────────────────────────────────────────────────────┘
201
139
  ```
202
140
 
203
- Then in Claude Code, install the plugin as above.
141
+ **lm-assist** is the foundation the API server and web dashboard that powers everything. The plugins add skills and commands on top.
204
142
 
205
- ### One-line install (clone + build + plugin)
143
+ | Install command | Layer | What you get |
144
+ |----------------|-------|-------------|
145
+ | `npm install -g lm-assist` | Foundation | API server (:3100), web dashboard (:3848), statusline, 155+ endpoints |
146
+ | `/plugin install claude-code-multisession@langmartai` | Skills | observe + route skills, `/projects` `/sessions` `/summary` `/run` |
147
+ | `/plugin install claude-code-webui@langmartai` | Web access | dashboard skill, `/web` `/web-sessions` `/web-tasks` |
148
+ | `/plugin install lm-assist@langmartai` | Setup & diagnostics | `/assist-setup` `/assist-status` `/assist-search` `/assist-logs` |
206
149
 
207
- ```bash
208
- curl -fsSL https://raw.githubusercontent.com/langmartai/lm-assist/main/install.sh | bash
209
- ```
150
+ Install all three for the full experience, or pick what you need.
210
151
 
211
152
  ### Install from source
212
153
 
@@ -217,19 +158,7 @@ npm install && npm run build
217
158
  ./core.sh start
218
159
  ```
219
160
 
220
- Then in Claude Code, run `/plugin install .` to register from source.
221
-
222
- ### What gets installed
223
-
224
- | Component | Auto-installed | Purpose |
225
- |-----------|---------------|---------|
226
- | Skills | Yes (via plugin) | `observe` (session intelligence) + `route` (cross-project routing) |
227
- | Commands | Yes (via plugin) | `/sessions`, `/summary`, `/run` + 6 `/assist-*` commands |
228
- | Core API + Web UI | Yes (via npm/source) | 155+ endpoint REST API + Next.js dashboard |
229
- | MCP server | Optional (via `/assist-setup`) | `search`, `detail`, `feedback` knowledge tools |
230
- | Context hook | Optional (via `/assist-setup`) | Knowledge injection into prompts |
231
- | Knowledge system | Off by default | Enable in Settings > Data Loading. Saves ~100MB when disabled |
232
- | Statusline | Optional (via `/assist-setup --statusline`) | Git branch, context %, rate limits, cost, process stats |
161
+ Then in Claude Code: `/plugin install .`
233
162
 
234
163
  ## Services
235
164
 
@@ -247,9 +176,9 @@ lm-assist upgrade # Upgrade to latest version
247
176
 
248
177
  ## Skills & Commands
249
178
 
250
- lm-assist ships with **2 auto-triggered skills** and **9 slash commands** that work inside Claude Code.
179
+ Skills and commands are provided by the [Claude Code Multisession](https://github.com/langmartai/claude-code-multisession) plugin installed automatically via `/assist-setup`.
251
180
 
252
- ### Skills (auto-triggered)
181
+ ### Skills (auto-triggered via Claude Code Multisession)
253
182
 
254
183
  Skills activate automatically when Claude detects relevant intent — no slash command needed.
255
184
 
@@ -282,9 +211,9 @@ Sessions (3 running, 415 total)
282
211
  Status Name Project Model Cost Turns
283
212
  ───────────────────────────────────────────────────────────────────────
284
213
  [RUN] observability-platform-build lm-assist opus $307.66 1462
285
- [RUN] trade-delta-analysis lm-unified-trade opus $153.20 822
286
- [RUN] anti-kelly-system lm-unified-trade opus $35.49 433
287
- two-track-dashboard lm-unified-trade opus $107.43 516
214
+ [RUN] trade-delta-analysis my-trading-app opus $153.20 822
215
+ [RUN] anti-kelly-system my-trading-app opus $35.49 433
216
+ two-track-dashboard my-trading-app opus $107.43 516
288
217
  skill-validation-test lm-assist opus $0.63 11
289
218
  ───────────────────────────────────────────────────────────────────────
290
219
  Total cost: $604.41
@@ -317,17 +246,17 @@ What was accomplished:
317
246
 
318
247
  The route skill auto-detects this belongs to another project:
319
248
  ```
320
- This task appears to belong to lm-unified-trade, not the current project.
249
+ This task appears to belong to my-trading-app, not the current project.
321
250
 
322
251
  Relevant session found: trade-delta-analysis
323
- Summary: Implemented delta analysis mode for /trade-analyze command...
252
+ Summary: Implemented delta analysis mode for /analyze command...
324
253
  Status: idle (not running)
325
254
 
326
255
  Recommendation: RESUME
327
256
  Reason: This session built all existing delta modes and knows the spec,
328
257
  flag table, and pre-launch copy patterns.
329
258
 
330
- To resume: claude --resume 36a30ba6-4bd1-4587-8bb3-c1d21a2ab616
259
+ To resume: claude --resume def67890-session-id
331
260
  ```
332
261
 
333
262
  **"Run a security review on this project"**
@@ -348,9 +277,9 @@ The observe skill activates:
348
277
  ```
349
278
  Project costs:
350
279
  lm-assist $308.29 (80 sessions)
351
- lm-unified-trade $892.15 (440 sessions)
352
- LangMartDesign $45.20 (12 sessions)
353
- tier-agent $23.50 (15 sessions)
280
+ my-trading-app $892.15 (440 sessions)
281
+ my-web-platform $45.20 (12 sessions)
282
+ my-agent-framework $23.50 (15 sessions)
354
283
  ```
355
284
 
356
285
  ### Session Intelligence
@@ -363,12 +292,123 @@ lm-assist learns from every interaction to route prompts smarter over time:
363
292
  - **Auto-learning** — Keywords, commands, and routing patterns accumulate with frequency counts. After a few interactions, routing skips deep scans entirely.
364
293
 
365
294
  ```
366
- Learning context for lm-unified-trade:
295
+ Learning context for my-trading-app:
367
296
  Frequently mentioned: delta analysis(3x), anti-kelly(2x), regime analysis(1x)
368
297
  Areas worked in: analysis pipeline(1x)
369
298
  Routing patterns: delta analysis → trade-delta-analysis session
370
299
  ```
371
300
 
301
+ ### Multi-Project Concurrent Development
302
+
303
+ lm-assist shines when you're working across multiple projects simultaneously. The routing skill, session summaries, and prompt queue work together to keep context organized.
304
+
305
+ **Scenario: You're building lm-assist while also maintaining a trading platform and a web gateway.**
306
+
307
+ **1. Start your day — see everything at a glance:**
308
+ ```
309
+ > /sessions
310
+ Sessions (5 running, 547 total)
311
+ ───────────────────────────────────────────────────────────────────
312
+ Status Name Project Model Cost Turns
313
+ ───────────────────────────────────────────────────────────────────
314
+ [RUN] observability-platform-build lm-assist opus $355.84 1573
315
+ [RUN] trade-delta-analysis my-trading-app opus $153.20 843
316
+ [RUN] anti-kelly-system my-trading-app opus $35.49 433
317
+ two-track-dashboard my-trading-app opus $107.43 516
318
+ gateway-ssl-upgrade my-web-platform opus $12.30 85
319
+ ───────────────────────────────────────────────────────────────────
320
+ Total cost: $664.26
321
+ ```
322
+
323
+ **2. You're in lm-assist and say "fix the regime analysis stale data bug"**
324
+
325
+ The route skill detects this belongs to another project:
326
+ ```
327
+ This task belongs to my-trading-app (regime analysis is part of the trading pipeline).
328
+
329
+ Relevant session: trade-delta-analysis
330
+ Summary: Implemented delta analysis mode for /analyze. Knows all delta
331
+ patterns, flag tables, and pre-launch copy rules.
332
+ Status: running (T:843, $153.20)
333
+
334
+ Recommendation: QUEUE (session is running)
335
+ Queued as high priority. Will process when current work completes.
336
+
337
+ Queue for trade-delta-analysis (2 pending):
338
+ [high] fix the regime analysis stale data bug
339
+ [normal] add S/R interaction delta mode
340
+ ```
341
+
342
+ **3. Back in lm-assist, you say "add error handling to the learning store"**
343
+
344
+ The route skill checks the current session summary:
345
+ ```
346
+ STAY — "learning store" matches current session work (observability-platform-build).
347
+ The session summary mentions auto-learning, learning signals, and learning store.
348
+ ```
349
+ No routing. Work continues in the current session.
350
+
351
+ **4. You say "the gateway SSL cert is expiring, renew it on SG"**
352
+
353
+ The route skill identifies this as a simple remote operation:
354
+ ```
355
+ This involves my-web-platform (gateway) on the SG server.
356
+ But it's a simple operations task — can handle from here via SSH.
357
+
358
+ Running: ssh user@prod-server 'sudo certbot renew'
359
+ ```
360
+ No project switch needed.
361
+
362
+ **5. You say "deploy the trading dashboard changes to production"**
363
+
364
+ Route skill identifies the target:
365
+ ```
366
+ This belongs to my-trading-app (trading dashboard).
367
+
368
+ Relevant session: two-track-dashboard (completed, 516 turns)
369
+ Summary: Built two-track cross-product trading dashboard with spread
370
+ and cross-product opportunity tables.
371
+
372
+ Recommendation: RESUME
373
+ Reason: This session built the dashboard and knows the deployment process.
374
+
375
+ To resume: claude --resume abc12345-session-id
376
+ ```
377
+
378
+ **6. End of day — summarize what happened:**
379
+ ```
380
+ > /summary
381
+ Session Summary: observability-platform-build
382
+ Today: added error handling to learning store, fixed 3 bugs,
383
+ queued 2 tasks for trade-delta-analysis, deployed gateway cert.
384
+
385
+ > /sessions my-trading-app
386
+ trade-delta-analysis: processed 2 queued prompts (regime fix, S/R delta)
387
+ two-track-dashboard: deployed to production
388
+ anti-kelly-system: idle since yesterday
389
+ ```
390
+
391
+ **Key patterns for multi-project work:**
392
+
393
+ | Situation | What happens |
394
+ |-----------|-------------|
395
+ | Task for current project | Route skill says STAY — no context switch |
396
+ | Task for another project, relevant session running | QUEUE — prompt waits, processes when session is free |
397
+ | Task for another project, session idle | RESUME — switch to that session with full context |
398
+ | Simple cross-project operation (ssh, curl, read) | Handle locally — no project switch |
399
+ | Task for unknown project | Route skill asks for clarification |
400
+ | Same task mentioned again | Learning signals shortcut the routing — instant match |
401
+
402
+ **How learning makes it faster over time:**
403
+
404
+ First time: "fix delta analysis" → scan all project summaries → find my-trading-app → 4 API calls
405
+
406
+ After learning: "fix delta analysis" → signal says `delta analysis(5x) → my-trading-app` → 1 API call
407
+
408
+ The more you work across projects, the smarter routing gets. Keywords, commands, and routing patterns accumulate automatically.
409
+
410
+ ---
411
+
372
412
  ## Key API Endpoints
373
413
 
374
414
  | Category | Endpoints | Highlights |
@@ -421,6 +461,12 @@ See [CHANGELOG.md](CHANGELOG.md) for version history and release notes.
421
461
  - Node.js >= 18
422
462
  - Claude Code (for slash commands and MCP integration)
423
463
 
464
+ ## Related
465
+
466
+ - [claude-code-multisession](https://github.com/langmartai/claude-code-multisession) — Skills plugin: cross-project session routing, `/projects`, `/sessions`, `/summary`, `/run`
467
+ - [claude-code-webui](https://github.com/langmartai/claude-code-webui) — Web dashboard plugin: 15 insight tabs, web terminal, `/web`, `/web-sessions`, `/web-tasks`
468
+ - [Knowledge system](https://databunny.medium.com/your-claude-sessions-are-gold-stop-paying-twice-for-the-same-knowledge-7632ac6ddb88) — Optional: auto-extract knowledge from sessions, MCP tools, context injection. Off by default, enable in Settings > Data Loading
469
+
424
470
  ## License
425
471
 
426
472
  [AGPL-3.0-or-later](LICENSE)
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Post-install script for lm-assist npm package.
4
+ *
5
+ * Runs after `npm install -g lm-assist`. Auto-starts services
6
+ * and installs statusline if Claude Code is available.
7
+ *
8
+ * All steps are best-effort — failures are logged but don't block install.
9
+ */
10
+
11
+ const { execFileSync } = require('child_process');
12
+ const path = require('path');
13
+ const fs = require('fs');
14
+
15
+ const GREEN = '\x1b[32m';
16
+ const YELLOW = '\x1b[33m';
17
+ const DIM = '\x1b[2m';
18
+ const RESET = '\x1b[0m';
19
+
20
+ function log(msg) { console.log(`${GREEN}[lm-assist]${RESET} ${msg}`); }
21
+ function warn(msg) { console.log(`${YELLOW}[lm-assist]${RESET} ${msg}`); }
22
+ function dim(msg) { console.log(`${DIM}[lm-assist] ${msg}${RESET}`); }
23
+
24
+ // Only run for global installs (not when building from source)
25
+ const isGlobal = __dirname.includes('node_modules');
26
+ if (!isGlobal) {
27
+ dim('Source install detected — skipping postinstall auto-setup');
28
+ process.exit(0);
29
+ }
30
+
31
+ log('Post-install setup...');
32
+
33
+ // 1. Start services (non-blocking, best effort)
34
+ try {
35
+ const cliPath = path.join(__dirname, 'lm-assist.js');
36
+ if (fs.existsSync(cliPath)) {
37
+ execFileSync('node', [cliPath, 'start'], {
38
+ stdio: 'pipe',
39
+ timeout: 30000,
40
+ });
41
+ log('Services started (API :3100, Web :3848)');
42
+ }
43
+ } catch {
44
+ dim('Services may already be running or will start on next `lm-assist start`');
45
+ }
46
+
47
+ // 2. Install statusline (if API is running)
48
+ try {
49
+ const http = require('http');
50
+ const req = http.request(
51
+ { hostname: '127.0.0.1', port: 3100, path: '/claude-code/statusline/install', method: 'POST', timeout: 5000 },
52
+ (res) => {
53
+ let data = '';
54
+ res.on('data', c => data += c);
55
+ res.on('end', () => {
56
+ try {
57
+ const d = JSON.parse(data);
58
+ if (d.success) log('Statusline installed');
59
+ else dim('Statusline: ' + (d.error || 'skipped'));
60
+ } catch {
61
+ dim('Statusline: API not ready yet');
62
+ }
63
+ });
64
+ }
65
+ );
66
+ req.on('error', () => dim('Statusline: API not running yet — install via /assist-setup'));
67
+ req.on('timeout', () => { req.destroy(); });
68
+ req.end();
69
+ } catch {
70
+ dim('Statusline: will install on next /assist-setup');
71
+ }
72
+
73
+ // 3. Check if claude-code-multisession plugin is installed
74
+ try {
75
+ const result = execFileSync('claude', ['plugin', 'list'], {
76
+ encoding: 'utf-8',
77
+ timeout: 10000,
78
+ stdio: ['pipe', 'pipe', 'pipe'],
79
+ });
80
+ if (!result.includes('claude-code-multisession')) {
81
+ log('Installing claude-code-multisession plugin (skills + commands)...');
82
+ try {
83
+ execFileSync('claude', ['plugin', 'marketplace', 'add', 'langmartai/lm-assist'], {
84
+ stdio: 'pipe', timeout: 30000,
85
+ });
86
+ } catch { /* marketplace may already exist */ }
87
+ try {
88
+ execFileSync('claude', ['plugin', 'install', 'claude-code-multisession@langmartai'], {
89
+ stdio: 'pipe', timeout: 60000,
90
+ });
91
+ log('claude-code-multisession plugin installed');
92
+ } catch {
93
+ warn('Could not auto-install claude-code-multisession. Run in Claude Code: /plugin install claude-code-multisession@langmartai');
94
+ }
95
+ } else {
96
+ dim('claude-code-multisession plugin already installed');
97
+ }
98
+ } catch {
99
+ dim('Claude Code CLI not found — install claude-code-multisession plugin manually in Claude Code');
100
+ }
101
+
102
+ log('Setup complete. Open a new Claude Code session and try /sessions');