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.
- package/.claude-plugin/marketplace.json +21 -10
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +182 -136
- package/bin/postinstall.js +102 -0
- package/commands/assist-setup.md +57 -21
- package/package.json +3 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.html +1 -1
- package/web/.next/server/app/assist-resources.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/auth.html +1 -1
- package/web/.next/server/app/auth.rsc +1 -1
- package/web/.next/server/app/auth.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
- package/web/.next/server/app/console.html +1 -1
- package/web/.next/server/app/console.rsc +1 -1
- package/web/.next/server/app/console.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/console.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.html +1 -1
- package/web/.next/server/app/knowledge.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.html +1 -1
- package/web/.next/server/app/lan-blocked.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/lan-blocked/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/lan-blocked.segment.rsc +1 -1
- package/web/.next/server/app/machines.html +1 -1
- package/web/.next/server/app/machines.rsc +1 -1
- package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.html +1 -1
- package/web/.next/server/app/process-dashboard.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/projects.html +1 -1
- package/web/.next/server/app/projects.rsc +1 -1
- package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/search.html +1 -1
- package/web/.next/server/app/search.rsc +1 -1
- package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.html +1 -1
- package/web/.next/server/app/session-dashboard.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/sessions.html +1 -1
- package/web/.next/server/app/sessions.rsc +1 -1
- package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/settings.html +1 -1
- package/web/.next/server/app/settings.rsc +2 -2
- package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/skills.html +1 -1
- package/web/.next/server/app/skills.rsc +1 -1
- package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/tasks.html +1 -1
- package/web/.next/server/app/tasks.rsc +1 -1
- package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.html +1 -1
- package/web/.next/server/app/terminal-dashboard.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__dd1a4bb8._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__dd1a4bb8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js +1 -1
- package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js.map +1 -1
- package/web/.next/server/pages/404.html +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.html +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.html +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.html +1 -1
- package/web/.next/standalone/web/.next/server/app/console.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console.segments/console.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.html +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.html +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/lan-blocked/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/lan-blocked.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.html +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/machines.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.html +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.html +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.html +1 -1
- package/web/.next/standalone/web/.next/server/app/search.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/search.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.html +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.html +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/sessions.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.html +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.html +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.html +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.html +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__dd1a4bb8._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(dashboard)_settings_page_tsx_229c549c._.js +1 -1
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/static/chunks/53f0ab7395cf9933.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/commands/run.md +0 -106
- package/commands/sessions.md +0 -102
- package/commands/summary.md +0 -192
- package/web/.next/static/chunks/1e86b4dd7fddd3da.js +0 -1
- /package/web/.next/static/{x6yc3QzLpWEIHLjl0LtF_ → 8VBn81pH9AODVXRze6zeu}/_buildManifest.js +0 -0
- /package/web/.next/static/{x6yc3QzLpWEIHLjl0LtF_ → 8VBn81pH9AODVXRze6zeu}/_clientMiddlewareManifest.json +0 -0
- /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": "
|
|
5
|
-
"owner": {
|
|
6
|
-
|
|
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.
|
|
26
|
+
"version": "0.1.70",
|
|
16
27
|
"source": "./",
|
|
17
|
-
"description": "
|
|
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
|
}
|
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
|
|
47
|
+
Real-time execution tracking via REST API.
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
123
|
-
-
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
102
|
+
## Install
|
|
166
103
|
|
|
167
|
-
|
|
104
|
+
### Quick start
|
|
168
105
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
|
|
112
|
+
**Open a new Claude Code session** and type `/sessions` to verify.
|
|
181
113
|
|
|
182
|
-
### Plugin
|
|
114
|
+
### Plugin marketplace
|
|
183
115
|
|
|
184
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
199
|
-
|
|
200
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
286
|
-
[RUN] anti-kelly-system
|
|
287
|
-
two-track-dashboard
|
|
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
|
|
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 /
|
|
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
|
|
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
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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
|
|
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');
|