lm-assist 0.1.65 → 0.1.67
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 +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +246 -124
- package/commands/run.md +106 -0
- package/commands/sessions.md +102 -0
- package/commands/summary.md +192 -0
- package/core/dist/agent-session-store.d.ts.map +1 -1
- package/core/dist/agent-session-store.js +2 -0
- package/core/dist/agent-session-store.js.map +1 -1
- package/core/dist/api/sessions-api.d.ts.map +1 -1
- package/core/dist/api/sessions-api.js +5 -1
- package/core/dist/api/sessions-api.js.map +1 -1
- package/core/dist/learning-store.d.ts +83 -0
- package/core/dist/learning-store.d.ts.map +1 -0
- package/core/dist/learning-store.js +206 -0
- package/core/dist/learning-store.js.map +1 -0
- package/core/dist/project-summary-store.d.ts +47 -0
- package/core/dist/project-summary-store.d.ts.map +1 -0
- package/core/dist/project-summary-store.js +108 -0
- package/core/dist/project-summary-store.js.map +1 -0
- package/core/dist/projects-service.d.ts +2 -0
- package/core/dist/projects-service.d.ts.map +1 -1
- package/core/dist/projects-service.js +1 -0
- package/core/dist/projects-service.js.map +1 -1
- package/core/dist/prompt-queue-store.d.ts +107 -0
- package/core/dist/prompt-queue-store.d.ts.map +1 -0
- package/core/dist/prompt-queue-store.js +215 -0
- package/core/dist/prompt-queue-store.js.map +1 -0
- package/core/dist/routes/core/sessions.routes.d.ts.map +1 -1
- package/core/dist/routes/core/sessions.routes.js +357 -0
- package/core/dist/routes/core/sessions.routes.js.map +1 -1
- package/core/dist/session-cache.d.ts +2 -0
- package/core/dist/session-cache.d.ts.map +1 -1
- package/core/dist/session-cache.js +72 -0
- package/core/dist/session-cache.js.map +1 -1
- package/core/dist/session-summary-store.d.ts +68 -0
- package/core/dist/session-summary-store.d.ts.map +1 -0
- package/core/dist/session-summary-store.js +175 -0
- package/core/dist/session-summary-store.js.map +1 -0
- package/package.json +1 -1
- 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)/assist-resources/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/knowledge/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/machines/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/process-dashboard/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/search/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/session-dashboard/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/tasks/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/terminal-dashboard/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/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/server/app/_not-found.rsc +4 -4
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/server/app/assist-resources.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/assist-resources.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/assist-resources.segments/_index.segment.rsc +4 -4
- package/web/.next/server/app/assist-resources.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/auth/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/auth.html +1 -1
- package/web/.next/server/app/auth.rsc +5 -5
- package/web/.next/server/app/auth.segments/_full.segment.rsc +5 -5
- package/web/.next/server/app/auth.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/_index.segment.rsc +4 -4
- package/web/.next/server/app/auth.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/auth.segments/auth/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
- package/web/.next/server/app/console/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/console.html +1 -1
- package/web/.next/server/app/console.rsc +5 -5
- package/web/.next/server/app/console.segments/_full.segment.rsc +5 -5
- package/web/.next/server/app/console.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/_index.segment.rsc +4 -4
- package/web/.next/server/app/console.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/console.segments/console/__PAGE__.segment.rsc +2 -2
- 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 +6 -6
- package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/knowledge.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/knowledge.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/knowledge.segments/_index.segment.rsc +4 -4
- package/web/.next/server/app/knowledge.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/lan-blocked.html +1 -1
- package/web/.next/server/app/lan-blocked.rsc +5 -5
- package/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +5 -5
- package/web/.next/server/app/lan-blocked.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/lan-blocked.segments/_index.segment.rsc +4 -4
- 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 +2 -2
- 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 +6 -6
- package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/machines.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/machines.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/machines.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/process-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/process-dashboard.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/projects.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/projects.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/search.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/search.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/search.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/session-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/session-dashboard.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/sessions.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/sessions.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- 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 +2 -2
- package/web/.next/server/app/settings.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/settings.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/skills.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/skills.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/web/.next/server/app/tasks.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/tasks.segments/_index.segment.rsc +4 -4
- 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 +6 -6
- package/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +6 -6
- package/web/.next/server/app/terminal-dashboard.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/terminal-dashboard.segments/_index.segment.rsc +4 -4
- package/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b2689499._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b2689499._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_sessions_page_tsx_a4b86be9._.js +1 -1
- package/web/.next/server/chunks/ssr/web_src_app_(dashboard)_sessions_page_tsx_a4b86be9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_src_lib_api-client_ts_05c71051._.js +1 -1
- package/web/.next/server/chunks/ssr/web_src_lib_api-client_ts_05c71051._.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)/assist-resources/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/knowledge/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/machines/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/process-dashboard/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/search/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/session-dashboard/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
- 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/(dashboard)/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/tasks/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/(dashboard)/terminal-dashboard/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/page_client-reference-manifest.js +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 +4 -4
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/!KGRhc2hib2FyZCk/assist-resources/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/assist-resources.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.html +1 -1
- package/web/.next/standalone/web/.next/server/app/auth.rsc +5 -5
- package/web/.next/standalone/web/.next/server/app/auth.segments/_full.segment.rsc +5 -5
- 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 +4 -4
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/auth.segments/auth.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/console/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/console.html +1 -1
- package/web/.next/standalone/web/.next/server/app/console.rsc +5 -5
- package/web/.next/standalone/web/.next/server/app/console.segments/_full.segment.rsc +5 -5
- 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 +4 -4
- 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 +2 -2
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/!KGRhc2hib2FyZCk/knowledge/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/knowledge.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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/page_client-reference-manifest.js +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 +5 -5
- package/web/.next/standalone/web/.next/server/app/lan-blocked.segments/_full.segment.rsc +5 -5
- 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 +4 -4
- 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 +2 -2
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/machines.segments/!KGRhc2hib2FyZCk/machines/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/machines.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/!KGRhc2hib2FyZCk/process-dashboard/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/process-dashboard.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/projects.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/search.segments/!KGRhc2hib2FyZCk/search/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/search.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/!KGRhc2hib2FyZCk/session-dashboard/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/session-dashboard.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/sessions.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/skills.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/tasks.segments/!KGRhc2hib2FyZCk/tasks/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/tasks.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- 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 +6 -6
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/!KGRhc2hib2FyZCk/terminal-dashboard/__PAGE__.segment.rsc +2 -2
- 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 +2 -2
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- package/web/.next/standalone/web/.next/server/app/terminal-dashboard.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__b2689499._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(dashboard)_sessions_page_tsx_a4b86be9._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_lib_api-client_ts_05c71051._.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/{b8379a13740bc858.js → 5937d0a7953952c1.js} +1 -1
- package/web/.next/static/chunks/caf4f6e3f7bd8d7b.js +1 -0
- package/web/.next/static/chunks/d0ba26dc2e7b6503.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/static/chunks/9127cc01f27e1bf2.js +0 -1
- package/web/.next/static/chunks/a17be113b31451a8.js +0 -1
- /package/web/.next/static/{T_gGCGNawIXlcJA_WZ2bH → KmCZSVL96On-DixrWoKE4}/_buildManifest.js +0 -0
- /package/web/.next/static/{T_gGCGNawIXlcJA_WZ2bH → KmCZSVL96On-DixrWoKE4}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{T_gGCGNawIXlcJA_WZ2bH → KmCZSVL96On-DixrWoKE4}/_ssgManifest.js +0 -0
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
14
14
|
"name": "lm-assist",
|
|
15
|
-
"version": "0.1.
|
|
15
|
+
"version": "0.1.67",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "Auto-build knowledge from Claude Code sessions and inject it as context. Inspect sessions with deep views into agents, tasks, teams, plans, and tool calls. Access and control all Claude Code terminals from any device via web browser. Includes MCP server (search, detail, feedback), context-injection hook, and 6 slash commands.",
|
|
18
18
|
"category": "productivity",
|
package/README.md
CHANGED
|
@@ -1,59 +1,83 @@
|
|
|
1
1
|
# lm-assist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## The Observability Platform for Claude Code & Agent SDK
|
|
4
|
+
|
|
5
|
+
Monitor, debug, and control AI coding agents with full session visibility, real-time execution tracking, and 155+ REST API endpoints.
|
|
4
6
|
|
|
5
7
|
[](https://discord.gg/xb2BNnk4)
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
- **Monitor** — real-time execution tracking, per-model cost & token breakdown, SSE event stream
|
|
10
|
+
- **Debug** — 15 insight views per session: Chat, Thinking, Agents, Plans, Team, DAG, Files, Git & more
|
|
11
|
+
- **Control** — web terminal from any browser, start/abort agents via API, remote access from anywhere
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
<a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/architecture-observability.svg"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/architecture-observability.svg" alt="lm-assist Architecture — Observability Platform for Claude Code & Agent SDK" width="700"></a>
|
|
14
|
+
|
|
15
|
+
### Install
|
|
10
16
|
|
|
11
17
|
```
|
|
12
18
|
/plugin marketplace add langmartai/lm-assist
|
|
13
|
-
|
|
14
19
|
/plugin install lm-assist@langmartai
|
|
15
20
|
```
|
|
16
21
|
|
|
17
|
-
Then **open a new Claude Code session** and run
|
|
22
|
+
Then **open a new Claude Code session** and run `/assist-setup`.
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
> **Read:** [Inside Claude Code: The Session File Format and How to Inspect It](https://databunny.medium.com/inside-claude-code-the-session-file-format-and-how-to-inspect-it-b9998e66d56b) — technical breakdown of the JSONL session format, message types, subagent trees, and how lm-assist surfaces it all.
|
|
25
|
+
|
|
26
|
+
---
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
- **MCP server** — `search`, `detail`, `feedback` tools available in Claude Code
|
|
25
|
-
- **Context hook** — injects relevant knowledge into each prompt
|
|
26
|
-
- **Slash commands** — 6 commands for managing lm-assist
|
|
28
|
+
## Why lm-assist
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
Claude Code and the Agent SDK have no built-in dashboard. You get a terminal or logs. When you're running multiple agents, debugging a failed execution, or tracking costs across a fleet of machines — you need full visibility into every session, every subagent, every tool call, every token spent.
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
| Without lm-assist | With lm-assist |
|
|
33
|
+
|-------------------|---------------|
|
|
34
|
+
| Scroll through terminal output | 15 specialized views per session |
|
|
35
|
+
| No cost visibility | Per-model token & cost breakdown |
|
|
36
|
+
| Can't see what agents are doing | Real-time execution dashboard |
|
|
37
|
+
| No way to inspect subagent trees | Full DAG visualization |
|
|
38
|
+
| Terminal-only access | Web UI from any device, anywhere |
|
|
39
|
+
| Agent SDK runs are black boxes | Same session inspection as CLI |
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
---
|
|
33
42
|
|
|
34
|
-
|
|
43
|
+
## Three Pillars
|
|
35
44
|
|
|
36
|
-
|
|
45
|
+
### 1. Monitor
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
Real-time execution dashboard with live session tracking, cost analytics, and multi-machine fleet management.
|
|
39
48
|
|
|
40
|
-
|
|
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>
|
|
41
50
|
|
|
42
|
-
|
|
51
|
+
> *Browse all sessions with human-readable names, live status, per-model cost breakdown — from any browser, anywhere*
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
- Session list with human-readable slug names, live status, and running process detection
|
|
54
|
+
- Per-session and per-project cost tracking — total cost in gold at a glance
|
|
55
|
+
- Per-model token breakdown (input, output, cache read, cache creation) in Meta tab
|
|
56
|
+
- SSE event stream for real-time updates
|
|
57
|
+
- Multi-machine fleet dashboard via LangMart Hub
|
|
45
58
|
|
|
46
|
-
|
|
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%.
|
|
47
60
|
|
|
48
|
-
|
|
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
|
+
```
|
|
49
64
|
|
|
50
|
-
|
|
65
|
+
**Key endpoints:** `GET /monitor/executions` · `GET /stream` · `GET /sessions` · `GET /projects/sessions`
|
|
51
66
|
|
|
52
|
-
|
|
67
|
+
### 2. Debug
|
|
53
68
|
|
|
54
|
-
|
|
69
|
+
15 specialized views per session. Trace any decision through conversation flow, extended thinking, subagent hierarchy, tool calls, file changes, and git operations.
|
|
55
70
|
|
|
56
|
-
>
|
|
71
|
+
<table>
|
|
72
|
+
<tr>
|
|
73
|
+
<td><a href="https://langmart.ai/images/assist/agent-tree.png"><img src="https://langmart.ai/images/assist/agent-tree.png" alt="Agent Tree" width="340"></a><br><sub>Subagent hierarchy</sub></td>
|
|
74
|
+
<td><a href="https://langmart.ai/images/assist/plan-view.png"><img src="https://langmart.ai/images/assist/plan-view.png" alt="Plan View" width="340"></a><br><sub>Plan mode tracking</sub></td>
|
|
75
|
+
</tr>
|
|
76
|
+
<tr>
|
|
77
|
+
<td><a href="https://langmart.ai/images/assist/task-kanban.png"><img src="https://langmart.ai/images/assist/task-kanban.png" alt="Task Kanban" width="340"></a><br><sub>Task kanban board</sub></td>
|
|
78
|
+
<td><a href="https://langmart.ai/images/assist/team-view.png"><img src="https://langmart.ai/images/assist/team-view.png" alt="Team View" width="340"></a><br><sub>Multi-agent team coordination</sub></td>
|
|
79
|
+
</tr>
|
|
80
|
+
</table>
|
|
57
81
|
|
|
58
82
|
<details>
|
|
59
83
|
<summary><strong>All 15 tabs at a glance</strong></summary>
|
|
@@ -64,72 +88,83 @@ Every session gets a full breakdown across **15 specialized tabs** — Chat, Thi
|
|
|
64
88
|
| **Thinking** | Claude's extended thinking / chain-of-thought |
|
|
65
89
|
| **Agents** | Subagent tree — Explore, Plan, Bash, and custom agents |
|
|
66
90
|
| **Skills** | Skill invocation timeline with chain flow, span attribution, and deep trace |
|
|
67
|
-
| **Commands** | Slash command invocations
|
|
68
|
-
| **Tasks** |
|
|
91
|
+
| **Commands** | Slash command invocations with args and timing |
|
|
92
|
+
| **Tasks** | Task lists with dependency tracking |
|
|
69
93
|
| **Plans** | Plan mode entries with approval status |
|
|
70
|
-
| **Team** | Team/swarm coordination (
|
|
94
|
+
| **Team** | Team/swarm coordination (multi-agent teams) |
|
|
71
95
|
| **Files** | All files read, written, or edited during the session |
|
|
72
96
|
| **Git** | Commits, pushes, and diffs from the session |
|
|
73
97
|
| **Console** | Terminal output and process management |
|
|
74
98
|
| **Summary** | AI-generated session summary |
|
|
75
|
-
| **Meta** | Session metadata — timing, model, token usage |
|
|
99
|
+
| **Meta** | Session metadata — slug, timing, model, token usage |
|
|
76
100
|
| **JSON** | Raw session JSONL data |
|
|
77
101
|
| **DB** | Internal cache and index data |
|
|
78
102
|
|
|
79
103
|
</details>
|
|
80
104
|
|
|
81
|
-
|
|
105
|
+
- Session DAG visualization (message graph + cross-session subagent/team graph)
|
|
106
|
+
- Fork tracking and branch visualization
|
|
107
|
+
- Tool call traces with full inputs and results
|
|
108
|
+
|
|
109
|
+
**Key endpoints:** `GET /sessions/:id` · `GET /sessions/:id/dag` · `GET /sessions/:id/subagents` · `GET /sessions/:id/conversation`
|
|
82
110
|
|
|
83
|
-
|
|
111
|
+
### 3. Control
|
|
84
112
|
|
|
85
|
-
|
|
113
|
+
Full runtime management API. Start, stop, and monitor agent executions from any device. Web terminal access to running Claude Code sessions.
|
|
86
114
|
|
|
87
|
-
|
|
115
|
+
<a href="https://langmart.ai/images/assist/session-terminal.png"><img src="https://langmart.ai/images/assist/session-terminal.png" alt="Web Terminal — control Claude Code from any browser" width="700"></a>
|
|
88
116
|
|
|
89
|
-
|
|
90
|
-
1. **Generate** — Analyzes your sessions and extracts reusable knowledge (patterns, decisions, debugging insights)
|
|
91
|
-
2. **Search** — Indexed with BM25 + vector similarity for fast retrieval
|
|
92
|
-
3. **Inject** — On every prompt, the context-injection hook finds relevant knowledge and injects it as context
|
|
93
|
-
4. **MCP tools** — Claude Code can also actively search and retrieve knowledge using `search`, `detail`, and `feedback` tools
|
|
117
|
+
> *Live terminal access to running Claude Code sessions — from any browser, anywhere*
|
|
94
118
|
|
|
95
|
-
|
|
119
|
+
- Start and abort agent executions via REST API
|
|
120
|
+
- Web terminal (ttyd) from any browser — control Claude Code remotely
|
|
121
|
+
- SDK runner for programmatic headless execution
|
|
122
|
+
- Session cache warm/clear for performance tuning
|
|
123
|
+
- Remote access via LangMart Hub — no VPN or port forwarding needed
|
|
96
124
|
|
|
97
|
-
|
|
125
|
+
**Key endpoints:** `POST /monitor/abort/:executionId` · `POST /ttyd/start` · `POST /agent/execute` · `POST /hub/connect`
|
|
98
126
|
|
|
99
127
|
### Settings
|
|
100
128
|
|
|
101
129
|
<a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/settings.png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshots/preview/settings.png" alt="Settings" width="700"></a>
|
|
102
130
|
|
|
103
|
-
> *Settings —
|
|
131
|
+
> *Settings — connection status, Claude Code config, knowledge kill switch, and more*
|
|
104
132
|
|
|
105
133
|
### Mobile & Tablet Support
|
|
106
134
|
|
|
107
|
-
The web UI is fully responsive.
|
|
135
|
+
The web UI is fully responsive. Monitor sessions, debug agents, and control terminals from your phone or tablet.
|
|
108
136
|
|
|
109
137
|
<table>
|
|
110
138
|
<tr>
|
|
111
139
|
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-terminal%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-terminal%20(mobile).png" alt="Terminal on mobile" width="180"></a><br><sub>Live Terminal</sub></td>
|
|
112
140
|
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-detail-chat%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/session-detail-chat%20(mobile).png" alt="Session detail on mobile" width="180"></a><br><sub>Session Detail</sub></td>
|
|
113
141
|
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/task-kanban%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/task-kanban%20(mobile).png" alt="Task kanban on mobile" width="180"></a><br><sub>Task Kanban</sub></td>
|
|
114
|
-
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-list%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-list%20(mobile).png" alt="Knowledge list on mobile" width="180"></a><br><sub>Knowledge Base</sub></td>
|
|
115
|
-
</tr>
|
|
116
|
-
<tr>
|
|
117
|
-
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-detail-full%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/knowledge-detail-full%20(mobile).png" alt="Knowledge detail on mobile" width="180"></a><br><sub>Knowledge Detail</sub></td>
|
|
118
|
-
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/context-hook-logs%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/context-hook-logs%20(mobile).png" alt="Context hook logs on mobile" width="180"></a><br><sub>Context Injection Logs</sub></td>
|
|
119
142
|
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-connection%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-connection%20(mobile).png" alt="Settings on mobile" width="180"></a><br><sub>Settings</sub></td>
|
|
120
|
-
<td align="center"><a href="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-claude-code%20(mobile).png"><img src="https://raw.githubusercontent.com/langmartai/lm-assist/main/docs/screenshot/settings-claude-code%20(mobile).png" alt="Claude Code settings on mobile" width="180"></a><br><sub>Claude Code Config</sub></td>
|
|
121
143
|
</tr>
|
|
122
144
|
</table>
|
|
123
145
|
|
|
124
|
-
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Data Sources
|
|
149
|
+
|
|
150
|
+
lm-assist reads the same JSONL session files regardless of how they were created:
|
|
151
|
+
|
|
152
|
+
| Source | What It Produces | lm-assist Coverage |
|
|
153
|
+
|--------|-----------------|-------------------|
|
|
154
|
+
| **Claude Code CLI** | Interactive sessions with subagents, teams, worktrees | Full parsing — all message types, tool calls, metadata |
|
|
155
|
+
| **Agent SDK** (Python/TypeScript) | Programmatic agent executions | Same JSONL format — full session inspection |
|
|
156
|
+
| **Headless mode** (`claude -p`) | Background/CI runs | Detected via process status store |
|
|
157
|
+
| **Running processes** | Live PID, tmux, terminal state | Real-time monitoring with zero polling overhead |
|
|
158
|
+
|
|
159
|
+
---
|
|
125
160
|
|
|
126
|
-
|
|
161
|
+
## Knowledge (Optional)
|
|
127
162
|
|
|
128
|
-
|
|
163
|
+
lm-assist includes an optional knowledge subsystem that auto-extracts reusable knowledge from your sessions and injects it into future prompts via MCP tools and a context hook. Enable or disable it at runtime from Settings — the kill switch unloads the embedder and vector store to save ~100MB of memory.
|
|
129
164
|
|
|
130
|
-
|
|
165
|
+
> **Read:** [Your Claude Sessions Are Gold: Stop Paying Twice for the Same Knowledge](https://databunny.medium.com/your-claude-sessions-are-gold-stop-paying-twice-for-the-same-knowledge-7632ac6ddb88)
|
|
131
166
|
|
|
132
|
-
|
|
167
|
+
When enabled, any MCP-compatible IDE can access the knowledge base:
|
|
133
168
|
|
|
134
169
|
| IDE | MCP Config |
|
|
135
170
|
|-----|-----------|
|
|
@@ -139,9 +174,6 @@ One-click activation from the Settings page:
|
|
|
139
174
|
| **Windsurf** | `~/.windsurf/mcp.json` |
|
|
140
175
|
| **Codex CLI** (OpenAI) | `~/.codex/config.toml` |
|
|
141
176
|
| **Gemini CLI** (Google) | `~/.gemini/settings.json` |
|
|
142
|
-
| **Google Antigravity** | `~/.gemini/antigravity/settings.json` |
|
|
143
|
-
|
|
144
|
-
All IDEs get access to the same 3 MCP tools (`search`, `detail`, `feedback`) and the same knowledge base. Generate knowledge once in Claude Code, use it everywhere.
|
|
145
177
|
|
|
146
178
|
---
|
|
147
179
|
|
|
@@ -153,12 +185,17 @@ All IDEs get access to the same 3 MCP tools (`search`, `detail`, `feedback`) and
|
|
|
153
185
|
curl -fsSL https://raw.githubusercontent.com/langmartai/lm-assist/main/install.sh | bash
|
|
154
186
|
```
|
|
155
187
|
|
|
156
|
-
|
|
188
|
+
Then **open a new Claude Code session** and run `/assist-setup`.
|
|
157
189
|
|
|
158
|
-
|
|
159
|
-
|
|
190
|
+
### Install via npm
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
npm install -g lm-assist
|
|
194
|
+
lm-assist start
|
|
160
195
|
```
|
|
161
196
|
|
|
197
|
+
Then in Claude Code, run `/assist-setup`.
|
|
198
|
+
|
|
162
199
|
### Install from source
|
|
163
200
|
|
|
164
201
|
```bash
|
|
@@ -168,105 +205,185 @@ npm install && npm run build
|
|
|
168
205
|
./core.sh start
|
|
169
206
|
```
|
|
170
207
|
|
|
171
|
-
Then in Claude Code, run `/plugin install .`
|
|
208
|
+
Then in Claude Code, run `/plugin install .` and `/assist-setup`.
|
|
172
209
|
|
|
173
|
-
###
|
|
210
|
+
### What gets installed
|
|
211
|
+
|
|
212
|
+
| Component | Auto-installed | Purpose |
|
|
213
|
+
|-----------|---------------|---------|
|
|
214
|
+
| Core API + Web UI | Yes (via npm/source) | 155+ endpoint REST API + Next.js dashboard |
|
|
215
|
+
| MCP server | Yes (via plugin) | `search`, `detail`, `feedback` tools |
|
|
216
|
+
| Context hook | Yes (via plugin) | Knowledge injection (optional) |
|
|
217
|
+
| Slash commands | Yes (via plugin) | 6 `/assist-*` commands |
|
|
218
|
+
| Skills | Yes (via plugin) | `observe` (auto-triggered observability) + `route` (cross-project routing) |
|
|
219
|
+
| Slash commands | Yes (via plugin) | 9 commands: `/sessions`, `/summary`, `/run` + 6 `/assist-*` |
|
|
220
|
+
| Statusline | Optional | Git branch, context %, rate limits, process stats |
|
|
221
|
+
|
|
222
|
+
## Services
|
|
223
|
+
|
|
224
|
+
| Service | Port | Description |
|
|
225
|
+
|---------|------|-------------|
|
|
226
|
+
| Core API | 3100 | REST API — sessions, monitor, agents, tasks, knowledge |
|
|
227
|
+
| Web UI | 3848 | Next.js dashboard — 15 insight tabs, terminal, settings |
|
|
174
228
|
|
|
175
229
|
```bash
|
|
176
|
-
|
|
177
|
-
lm-assist
|
|
230
|
+
lm-assist start # Start both services
|
|
231
|
+
lm-assist stop # Stop all services
|
|
232
|
+
lm-assist status # Health check + process info
|
|
233
|
+
lm-assist upgrade # Upgrade to latest version
|
|
178
234
|
```
|
|
179
235
|
|
|
180
|
-
|
|
236
|
+
## Skills & Commands
|
|
181
237
|
|
|
182
|
-
|
|
238
|
+
lm-assist ships with **2 auto-triggered skills** and **9 slash commands** that work inside Claude Code.
|
|
183
239
|
|
|
184
|
-
|
|
185
|
-
|-----------|-------------------------|---------|
|
|
186
|
-
| MCP server | Yes | `search`, `detail`, `feedback` tools in Claude Code |
|
|
187
|
-
| Context hook (Node.js) | Yes | Injects relevant knowledge into each prompt |
|
|
188
|
-
| Slash commands | Yes | 6 `/assist-*` commands |
|
|
189
|
-
| Statusline | No (optional) | Git branch, context %, process stats in status bar |
|
|
240
|
+
### Skills (auto-triggered)
|
|
190
241
|
|
|
191
|
-
|
|
242
|
+
Skills activate automatically when Claude detects relevant intent — no slash command needed.
|
|
192
243
|
|
|
193
|
-
|
|
244
|
+
| Skill | Triggers on | What it does |
|
|
245
|
+
|-------|------------|--------------|
|
|
246
|
+
| **observe** | "what's running?", "session costs", "show subagents", "run this on project X" | Full observability — monitor sessions, debug agents, control executions, manage summaries |
|
|
247
|
+
| **route** | Prompt mentions another project's features or codebase | Cross-project routing — evaluates whether to stay, resume, fork, queue, or start new |
|
|
194
248
|
|
|
195
|
-
|
|
249
|
+
### Commands
|
|
196
250
|
|
|
197
251
|
| Command | Description |
|
|
198
252
|
|---------|-------------|
|
|
253
|
+
| `/sessions` | Session list with costs, turns, running status |
|
|
254
|
+
| `/summary` | Summarize current session, generate display name, record learning |
|
|
255
|
+
| `/run <prompt>` | Execute an agent with pre-flight checks |
|
|
199
256
|
| `/assist` | Open the web UI in your browser |
|
|
200
257
|
| `/assist-status` | Show status of all components |
|
|
201
258
|
| `/assist-setup` | Start services and verify integrations |
|
|
202
|
-
| `/assist-search
|
|
259
|
+
| `/assist-search` | Search the knowledge base |
|
|
203
260
|
| `/assist-logs` | View context-inject hook logs |
|
|
204
261
|
| `/assist-mcp-logs` | View MCP tool call logs |
|
|
205
262
|
|
|
206
|
-
|
|
263
|
+
### Use Cases with Examples
|
|
207
264
|
|
|
208
|
-
|
|
265
|
+
**"What sessions are running and how much have they cost?"**
|
|
266
|
+
```
|
|
267
|
+
> /sessions
|
|
268
|
+
Sessions (3 running, 415 total)
|
|
269
|
+
───────────────────────────────────────────────────────────────────────
|
|
270
|
+
Status Name Project Model Cost Turns
|
|
271
|
+
───────────────────────────────────────────────────────────────────────
|
|
272
|
+
[RUN] observability-platform-build lm-assist opus $307.66 1462
|
|
273
|
+
[RUN] trade-delta-analysis lm-unified-trade opus $153.20 822
|
|
274
|
+
[RUN] anti-kelly-system lm-unified-trade opus $35.49 433
|
|
275
|
+
two-track-dashboard lm-unified-trade opus $107.43 516
|
|
276
|
+
skill-validation-test lm-assist opus $0.63 11
|
|
277
|
+
───────────────────────────────────────────────────────────────────────
|
|
278
|
+
Total cost: $604.41
|
|
279
|
+
```
|
|
209
280
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
281
|
+
**"Summarize what this session has been doing"**
|
|
282
|
+
```
|
|
283
|
+
> /summary
|
|
284
|
+
Session Summary
|
|
285
|
+
═══════════════
|
|
286
|
+
Name: observability-platform-build
|
|
287
|
+
Project: lm-assist
|
|
288
|
+
Turns: 1462 | Cost: $307.66
|
|
289
|
+
Status: in progress
|
|
290
|
+
|
|
291
|
+
What this session is about:
|
|
292
|
+
Building the lm-assist observability platform — session summaries,
|
|
293
|
+
cross-project routing, prompt queue, auto-learning.
|
|
294
|
+
|
|
295
|
+
What was accomplished:
|
|
296
|
+
• Session slug/customTitle parsing from Claude Code JSONL
|
|
297
|
+
• Knowledge system kill switch (saves ~100MB)
|
|
298
|
+
• Observability skill + routing skill + 3 new commands
|
|
299
|
+
• Persistent session summaries with delta tracking
|
|
300
|
+
• Universal prompt queue with source/target context
|
|
301
|
+
• Auto-learning signals that evolve routing over time
|
|
302
|
+
```
|
|
215
303
|
|
|
216
|
-
|
|
304
|
+
**"Fix the delta analysis bug in the trading pipeline"**
|
|
217
305
|
|
|
218
|
-
|
|
219
|
-
curl -X POST http://localhost:3100/claude-code/mcp/install
|
|
306
|
+
The route skill auto-detects this belongs to another project:
|
|
220
307
|
```
|
|
308
|
+
This task appears to belong to lm-unified-trade, not the current project.
|
|
221
309
|
|
|
222
|
-
|
|
310
|
+
Relevant session found: trade-delta-analysis
|
|
311
|
+
Summary: Implemented delta analysis mode for /trade-analyze command...
|
|
312
|
+
Status: idle (not running)
|
|
223
313
|
|
|
224
|
-
|
|
314
|
+
Recommendation: RESUME
|
|
315
|
+
Reason: This session built all existing delta modes and knows the spec,
|
|
316
|
+
flag table, and pre-launch copy patterns.
|
|
225
317
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
| Core API | 3100 | REST API — sessions, knowledge, tasks |
|
|
229
|
-
| Web UI | 3848 | Next.js dashboard — accessible from any device on your network |
|
|
318
|
+
To resume: claude --resume 36a30ba6-4bd1-4587-8bb3-c1d21a2ab616
|
|
319
|
+
```
|
|
230
320
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
321
|
+
**"Run a security review on this project"**
|
|
322
|
+
```
|
|
323
|
+
> /run review all API endpoints for security vulnerabilities
|
|
324
|
+
Checking running executions... OK: none running.
|
|
325
|
+
|
|
326
|
+
Execution started: agent-1774468578687-1p2cnh
|
|
327
|
+
Session: nifty-wishing-boole
|
|
328
|
+
Status: running
|
|
329
|
+
Monitor with: /sessions
|
|
330
|
+
Web UI: http://localhost:3848
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**"What's the cost breakdown by project?"**
|
|
334
|
+
|
|
335
|
+
The observe skill activates:
|
|
336
|
+
```
|
|
337
|
+
Project costs:
|
|
338
|
+
lm-assist $308.29 (80 sessions)
|
|
339
|
+
lm-unified-trade $892.15 (440 sessions)
|
|
340
|
+
LangMartDesign $45.20 (12 sessions)
|
|
341
|
+
tier-agent $23.50 (15 sessions)
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Session Intelligence
|
|
345
|
+
|
|
346
|
+
lm-assist learns from every interaction to route prompts smarter over time:
|
|
347
|
+
|
|
348
|
+
- **Session summaries** — LLM-generated descriptions stored with delta tracking. Updated incrementally as sessions grow.
|
|
349
|
+
- **Project summaries** — Comprehensive reference generated by agents that explore each project's CLAUDE.md, scripts, configs, and codebase.
|
|
350
|
+
- **Prompt queue** — When a session is busy, new work is queued with full context (original intent, formatted prompt, routing reason, context hint).
|
|
351
|
+
- **Auto-learning** — Keywords, commands, and routing patterns accumulate with frequency counts. After a few interactions, routing skips deep scans entirely.
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
Learning context for lm-unified-trade:
|
|
355
|
+
Frequently mentioned: delta analysis(3x), anti-kelly(2x), regime analysis(1x)
|
|
356
|
+
Areas worked in: analysis pipeline(1x)
|
|
357
|
+
Routing patterns: delta analysis → trade-delta-analysis session
|
|
238
358
|
```
|
|
239
359
|
|
|
360
|
+
## Key API Endpoints
|
|
361
|
+
|
|
362
|
+
| Category | Endpoints | Highlights |
|
|
363
|
+
|----------|-----------|------------|
|
|
364
|
+
| **Sessions** | 27 | List, detail, delta fetch, batch-check, conversation, subagents, forks, DAG |
|
|
365
|
+
| **Monitor** | 6 | Running executions, summary, abort, SSE stream |
|
|
366
|
+
| **Projects** | 12 | List projects, sessions per project, git info, worktree detection, costs |
|
|
367
|
+
| **Terminal** | 13 | ttyd start/stop/status, WebSocket proxy, tmux attach |
|
|
368
|
+
| **Tasks** | 22 | Task lists, aggregated tasks, ready tasks, dependency tracking |
|
|
369
|
+
| **Summaries** | 10 | Session summaries, project summaries, needs-update check |
|
|
370
|
+
| **Queue** | 10 | Prompt queue with source/target, priority, dispatch/complete lifecycle |
|
|
371
|
+
| **Learning** | 4 | Record signals, query by project, learning context generation |
|
|
372
|
+
| **Search** | 4 | Session content search, recent sessions, vector search |
|
|
373
|
+
| **Skills** | 9 | Skills analytics, chains, traces, per-session breakdown |
|
|
374
|
+
| **Knowledge** | 21 | List, search, generate, review (optional — can be disabled) |
|
|
375
|
+
|
|
376
|
+
All endpoints support `ifModifiedSince` for efficient polling. Session data supports three indexing dimensions: `lineIndex` (JSONL position), `turnIndex` (conversation turn), and `userPromptIndex` (user message count).
|
|
377
|
+
|
|
240
378
|
## Configuration
|
|
241
379
|
|
|
242
|
-
No API key
|
|
380
|
+
No API key needed — lm-assist works entirely with your local Claude Code session data. Optionally copy `.env.example` to `.env`:
|
|
243
381
|
|
|
244
382
|
```bash
|
|
245
383
|
API_PORT=3100 # Core API port (default: 3100)
|
|
246
384
|
WEB_PORT=3848 # Web UI port (default: 3848)
|
|
247
385
|
```
|
|
248
386
|
|
|
249
|
-
## Project Structure
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
lm-assist/
|
|
253
|
-
├── core/ ← Backend API (TypeScript)
|
|
254
|
-
│ ├── src/
|
|
255
|
-
│ │ ├── mcp-server/ ← MCP server (search, detail, feedback tools)
|
|
256
|
-
│ │ ├── routes/core/ ← REST API routes (155 endpoints)
|
|
257
|
-
│ │ ├── knowledge/ ← Knowledge generation pipeline
|
|
258
|
-
│ │ └── vector/ ← Embeddings + vector store
|
|
259
|
-
│ └── hooks/ ← Claude Code hook scripts (Node.js, cross-platform)
|
|
260
|
-
├── web/ ← Web UI (Next.js, React 19)
|
|
261
|
-
├── commands/ ← Slash command definitions
|
|
262
|
-
├── hooks/ ← Plugin hook registration
|
|
263
|
-
├── docs/screenshots/ ← Product screenshots
|
|
264
|
-
├── .claude-plugin/ ← Claude Code plugin metadata
|
|
265
|
-
├── .mcp.json ← MCP server auto-registration
|
|
266
|
-
├── core.sh ← Service manager
|
|
267
|
-
└── bin/lm-assist.js ← CLI entry point
|
|
268
|
-
```
|
|
269
|
-
|
|
270
387
|
## Platform Support
|
|
271
388
|
|
|
272
389
|
| Platform | Support | Notes |
|
|
@@ -274,9 +391,14 @@ lm-assist/
|
|
|
274
391
|
| Linux | Full | All features including web terminal |
|
|
275
392
|
| macOS | Full | All features including web terminal |
|
|
276
393
|
| Windows | Partial | Everything except console/terminal access (ttyd not available) |
|
|
277
|
-
| Mobile / Tablet | Web UI |
|
|
394
|
+
| Mobile / Tablet | Web UI | Monitor, debug, and control from any device on your network |
|
|
395
|
+
|
|
396
|
+
## Who It's For
|
|
278
397
|
|
|
279
|
-
|
|
398
|
+
- **Solo developers** using Claude Code — see what's happening across all your sessions
|
|
399
|
+
- **Teams building with Agent SDK** — observability for your agent pipelines
|
|
400
|
+
- **DevOps managing agent fleets** — multi-machine dashboard, cost tracking, process management
|
|
401
|
+
- **AI product builders** — debug agent behavior with 15 insight views
|
|
280
402
|
|
|
281
403
|
## Changelog
|
|
282
404
|
|