@stackmemoryai/stackmemory 0.3.0 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/README.md +52 -272
  2. package/dist/cli/codex-sm.js +48 -19
  3. package/dist/cli/codex-sm.js.map +2 -2
  4. package/dist/cli/commands/clear.js +191 -0
  5. package/dist/cli/commands/clear.js.map +7 -0
  6. package/dist/cli/commands/config.js +152 -1
  7. package/dist/cli/commands/config.js.map +2 -2
  8. package/dist/cli/commands/dashboard.js +178 -0
  9. package/dist/cli/commands/dashboard.js.map +7 -0
  10. package/dist/cli/commands/handoff.js +125 -8
  11. package/dist/cli/commands/handoff.js.map +2 -2
  12. package/dist/cli/commands/linear-create.js +132 -0
  13. package/dist/cli/commands/linear-create.js.map +7 -0
  14. package/dist/cli/commands/linear-list.js +69 -0
  15. package/dist/cli/commands/linear-list.js.map +7 -0
  16. package/dist/cli/commands/linear-migrate.js +40 -0
  17. package/dist/cli/commands/linear-migrate.js.map +7 -0
  18. package/dist/cli/commands/linear.js +185 -36
  19. package/dist/cli/commands/linear.js.map +2 -2
  20. package/dist/cli/commands/monitor.js +309 -0
  21. package/dist/cli/commands/monitor.js.map +7 -0
  22. package/dist/cli/commands/quality.js +414 -0
  23. package/dist/cli/commands/quality.js.map +7 -0
  24. package/dist/cli/commands/storage.js +275 -0
  25. package/dist/cli/commands/storage.js.map +7 -0
  26. package/dist/cli/commands/tui.js +66 -0
  27. package/dist/cli/commands/tui.js.map +7 -0
  28. package/dist/cli/commands/workflow.js +134 -0
  29. package/dist/cli/commands/workflow.js.map +7 -0
  30. package/dist/cli/index.js +105 -9
  31. package/dist/cli/index.js.map +3 -3
  32. package/dist/core/analytics/team-analytics.js +374 -0
  33. package/dist/core/analytics/team-analytics.js.map +7 -0
  34. package/dist/core/context/context-bridge.js +234 -0
  35. package/dist/core/context/context-bridge.js.map +7 -0
  36. package/dist/core/context/dual-stack-manager.js +850 -0
  37. package/dist/core/context/dual-stack-manager.js.map +7 -0
  38. package/dist/core/context/frame-handoff-manager.js +384 -0
  39. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  40. package/dist/core/context/frame-manager.js +132 -12
  41. package/dist/core/context/frame-manager.js.map +2 -2
  42. package/dist/core/context/permission-manager.js +181 -0
  43. package/dist/core/context/permission-manager.js.map +7 -0
  44. package/dist/core/context/shared-context-layer.js +386 -0
  45. package/dist/core/context/shared-context-layer.js.map +7 -0
  46. package/dist/core/context/stack-merge-resolver.js +600 -0
  47. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  48. package/dist/core/context/validation.js +121 -0
  49. package/dist/core/context/validation.js.map +7 -0
  50. package/dist/core/database/connection-pool.js +266 -175
  51. package/dist/core/database/connection-pool.js.map +2 -2
  52. package/dist/core/database/database-adapter.js +51 -0
  53. package/dist/core/database/database-adapter.js.map +7 -0
  54. package/dist/core/database/migration-manager.js +514 -0
  55. package/dist/core/database/migration-manager.js.map +7 -0
  56. package/dist/core/database/paradedb-adapter.js +970 -0
  57. package/dist/core/database/paradedb-adapter.js.map +7 -0
  58. package/dist/core/database/query-router.js +421 -0
  59. package/dist/core/database/query-router.js.map +7 -0
  60. package/dist/core/database/sqlite-adapter.js +547 -0
  61. package/dist/core/database/sqlite-adapter.js.map +7 -0
  62. package/dist/core/errors/index.js +21 -1
  63. package/dist/core/errors/index.js.map +2 -2
  64. package/dist/core/frame/workflow-templates-stub.js +42 -0
  65. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  66. package/dist/core/frame/workflow-templates.js +276 -0
  67. package/dist/core/frame/workflow-templates.js.map +7 -0
  68. package/dist/core/merge/conflict-detector.js +5 -2
  69. package/dist/core/merge/conflict-detector.js.map +2 -2
  70. package/dist/core/merge/resolution-engine.js +3 -14
  71. package/dist/core/merge/resolution-engine.js.map +2 -2
  72. package/dist/core/merge/stack-diff.js.map +2 -2
  73. package/dist/core/monitoring/logger.js +18 -3
  74. package/dist/core/monitoring/logger.js.map +2 -2
  75. package/dist/core/monitoring/session-monitor.js +296 -0
  76. package/dist/core/monitoring/session-monitor.js.map +7 -0
  77. package/dist/core/retrieval/context-retriever.js +475 -0
  78. package/dist/core/retrieval/context-retriever.js.map +7 -0
  79. package/dist/core/retrieval/graph-retrieval.js +658 -0
  80. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  81. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  82. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  83. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  84. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  85. package/dist/core/session/clear-survival-stub.js +49 -0
  86. package/dist/core/session/clear-survival-stub.js.map +7 -0
  87. package/dist/core/session/clear-survival.js +426 -0
  88. package/dist/core/session/clear-survival.js.map +7 -0
  89. package/dist/core/session/handoff-generator.js +339 -0
  90. package/dist/core/session/handoff-generator.js.map +7 -0
  91. package/dist/core/session/session-manager.js +61 -26
  92. package/dist/core/session/session-manager.js.map +3 -3
  93. package/dist/core/skills/index.js +3 -0
  94. package/dist/core/skills/index.js.map +7 -0
  95. package/dist/core/skills/skill-storage.js +749 -0
  96. package/dist/core/skills/skill-storage.js.map +7 -0
  97. package/dist/core/skills/types.js +189 -0
  98. package/dist/core/skills/types.js.map +7 -0
  99. package/dist/core/storage/railway-optimized-storage.js +550 -0
  100. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  101. package/dist/core/storage/remote-storage.js +456 -0
  102. package/dist/core/storage/remote-storage.js.map +7 -0
  103. package/dist/core/trace/trace-detector.js +136 -5
  104. package/dist/core/trace/trace-detector.js.map +2 -2
  105. package/dist/core/trace/trace-store.js.map +2 -2
  106. package/dist/features/tui/components/analytics-panel.js +136 -0
  107. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  108. package/dist/features/tui/components/frame-visualizer.js +377 -0
  109. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  110. package/dist/features/tui/components/pr-tracker.js +123 -0
  111. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  112. package/dist/features/tui/components/session-monitor.js +286 -0
  113. package/dist/features/tui/components/session-monitor.js.map +7 -0
  114. package/dist/features/tui/components/subagent-fleet.js +388 -0
  115. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  116. package/dist/features/tui/components/task-board.js +475 -0
  117. package/dist/features/tui/components/task-board.js.map +7 -0
  118. package/dist/features/tui/index.js +397 -0
  119. package/dist/features/tui/index.js.map +7 -0
  120. package/dist/features/tui/services/data-service.js +654 -0
  121. package/dist/features/tui/services/data-service.js.map +7 -0
  122. package/dist/features/tui/services/websocket-client.js +149 -0
  123. package/dist/features/tui/services/websocket-client.js.map +7 -0
  124. package/dist/features/tui/terminal-compat.js +205 -0
  125. package/dist/features/tui/terminal-compat.js.map +7 -0
  126. package/dist/features/tui/types.js +1 -0
  127. package/dist/features/tui/types.js.map +7 -0
  128. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  129. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  130. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  131. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  132. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  133. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  134. package/dist/integrations/linear/client.js +22 -4
  135. package/dist/integrations/linear/client.js.map +2 -2
  136. package/dist/integrations/linear/migration.js +299 -0
  137. package/dist/integrations/linear/migration.js.map +7 -0
  138. package/dist/integrations/linear/oauth-server.js +396 -0
  139. package/dist/integrations/linear/oauth-server.js.map +7 -0
  140. package/dist/integrations/linear/rest-client.js +199 -0
  141. package/dist/integrations/linear/rest-client.js.map +7 -0
  142. package/dist/integrations/linear/sync.js +14 -2
  143. package/dist/integrations/linear/sync.js.map +2 -2
  144. package/dist/integrations/linear/webhook-handler.js +200 -0
  145. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  146. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  147. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  148. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  149. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  150. package/dist/integrations/mcp/refactored-server.js +31 -3
  151. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  152. package/dist/integrations/mcp/server.js +25 -7
  153. package/dist/integrations/mcp/server.js.map +2 -2
  154. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  155. package/dist/models/user.model.js +3 -0
  156. package/dist/models/user.model.js.map +2 -2
  157. package/dist/services/context-service.js.map +2 -2
  158. package/dist/utils/formatting.js +58 -0
  159. package/dist/utils/formatting.js.map +7 -0
  160. package/package.json +24 -5
  161. package/dist/cli/__tests__/index.test.js +0 -290
  162. package/dist/cli/__tests__/index.test.js.map +0 -7
  163. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  164. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  165. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  166. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  167. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  168. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  169. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  170. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  171. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  172. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  173. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  174. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  175. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  176. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  177. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  178. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  179. package/dist/core/trace/trace-detector.test.js +0 -401
  180. package/dist/core/trace/trace-detector.test.js.map +0 -7
  181. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  182. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  183. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  184. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  185. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  186. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  187. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  188. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  189. package/dist/scripts/benchmark-performance.d.ts +0 -7
  190. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  191. package/dist/scripts/benchmark-performance.js +0 -44
  192. package/dist/scripts/benchmark-performance.js.map +0 -1
  193. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  194. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  195. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  196. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  197. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  198. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  199. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  200. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  201. package/dist/scripts/initialize.d.ts +0 -6
  202. package/dist/scripts/initialize.d.ts.map +0 -1
  203. package/dist/scripts/initialize.js +0 -93
  204. package/dist/scripts/initialize.js.map +0 -1
  205. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  206. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  207. package/dist/scripts/list-linear-tasks.js +0 -121
  208. package/dist/scripts/list-linear-tasks.js.map +0 -1
  209. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  210. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  211. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  212. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  213. package/dist/scripts/show-linear-summary.d.ts +0 -6
  214. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  215. package/dist/scripts/show-linear-summary.js +0 -120
  216. package/dist/scripts/show-linear-summary.js.map +0 -1
  217. package/dist/scripts/status.d.ts +0 -6
  218. package/dist/scripts/status.d.ts.map +0 -1
  219. package/dist/scripts/status.js +0 -101
  220. package/dist/scripts/status.js.map +0 -1
  221. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  222. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  223. package/dist/src/agents/core/agent-task-manager.js +0 -504
  224. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  225. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  226. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  227. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  228. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  229. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  230. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  231. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  232. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  233. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  234. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  235. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  236. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  237. package/dist/src/cli/auto-detect.d.ts +0 -61
  238. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  239. package/dist/src/cli/auto-detect.js +0 -350
  240. package/dist/src/cli/auto-detect.js.map +0 -1
  241. package/dist/src/cli/browser-test.d.ts +0 -6
  242. package/dist/src/cli/browser-test.d.ts.map +0 -1
  243. package/dist/src/cli/browser-test.js +0 -32
  244. package/dist/src/cli/browser-test.js.map +0 -1
  245. package/dist/src/cli/claude-sm.d.ts +0 -7
  246. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  247. package/dist/src/cli/claude-sm.js +0 -412
  248. package/dist/src/cli/claude-sm.js.map +0 -1
  249. package/dist/src/cli/commands/agent.d.ts +0 -9
  250. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  251. package/dist/src/cli/commands/agent.js +0 -303
  252. package/dist/src/cli/commands/agent.js.map +0 -1
  253. package/dist/src/cli/commands/config.d.ts +0 -6
  254. package/dist/src/cli/commands/config.d.ts.map +0 -1
  255. package/dist/src/cli/commands/config.js +0 -224
  256. package/dist/src/cli/commands/config.js.map +0 -1
  257. package/dist/src/cli/commands/context.d.ts +0 -7
  258. package/dist/src/cli/commands/context.d.ts.map +0 -1
  259. package/dist/src/cli/commands/context.js +0 -365
  260. package/dist/src/cli/commands/context.js.map +0 -1
  261. package/dist/src/cli/commands/handoff.d.ts +0 -6
  262. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  263. package/dist/src/cli/commands/handoff.js +0 -212
  264. package/dist/src/cli/commands/handoff.js.map +0 -1
  265. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  266. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  267. package/dist/src/cli/commands/linear-test.js +0 -123
  268. package/dist/src/cli/commands/linear-test.js.map +0 -1
  269. package/dist/src/cli/commands/linear.d.ts +0 -6
  270. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  271. package/dist/src/cli/commands/linear.js +0 -393
  272. package/dist/src/cli/commands/linear.js.map +0 -1
  273. package/dist/src/cli/commands/log.d.ts +0 -7
  274. package/dist/src/cli/commands/log.d.ts.map +0 -1
  275. package/dist/src/cli/commands/log.js +0 -168
  276. package/dist/src/cli/commands/log.js.map +0 -1
  277. package/dist/src/cli/commands/onboard.d.ts +0 -8
  278. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  279. package/dist/src/cli/commands/onboard.js +0 -363
  280. package/dist/src/cli/commands/onboard.js.map +0 -1
  281. package/dist/src/cli/commands/projects.d.ts +0 -8
  282. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  283. package/dist/src/cli/commands/projects.js +0 -220
  284. package/dist/src/cli/commands/projects.js.map +0 -1
  285. package/dist/src/cli/commands/search.d.ts +0 -7
  286. package/dist/src/cli/commands/search.d.ts.map +0 -1
  287. package/dist/src/cli/commands/search.js +0 -162
  288. package/dist/src/cli/commands/search.js.map +0 -1
  289. package/dist/src/cli/commands/session.d.ts +0 -7
  290. package/dist/src/cli/commands/session.d.ts.map +0 -1
  291. package/dist/src/cli/commands/session.js +0 -222
  292. package/dist/src/cli/commands/session.js.map +0 -1
  293. package/dist/src/cli/commands/tasks.d.ts +0 -7
  294. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  295. package/dist/src/cli/commands/tasks.js +0 -229
  296. package/dist/src/cli/commands/tasks.js.map +0 -1
  297. package/dist/src/cli/commands/webhook.d.ts +0 -3
  298. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  299. package/dist/src/cli/commands/webhook.js +0 -157
  300. package/dist/src/cli/commands/webhook.js.map +0 -1
  301. package/dist/src/cli/commands/worktree.d.ts +0 -8
  302. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  303. package/dist/src/cli/commands/worktree.js +0 -339
  304. package/dist/src/cli/commands/worktree.js.map +0 -1
  305. package/dist/src/cli/index.d.ts +0 -8
  306. package/dist/src/cli/index.d.ts.map +0 -1
  307. package/dist/src/cli/index.js +0 -995
  308. package/dist/src/cli/index.js.map +0 -1
  309. package/dist/src/cli/utils/viewer.d.ts +0 -3
  310. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  311. package/dist/src/cli/utils/viewer.js +0 -91
  312. package/dist/src/cli/utils/viewer.js.map +0 -1
  313. package/dist/src/core/config/config-manager.d.ts +0 -95
  314. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  315. package/dist/src/core/config/config-manager.js +0 -359
  316. package/dist/src/core/config/config-manager.js.map +0 -1
  317. package/dist/src/core/config/types.d.ts +0 -72
  318. package/dist/src/core/config/types.d.ts.map +0 -1
  319. package/dist/src/core/config/types.js +0 -127
  320. package/dist/src/core/config/types.js.map +0 -1
  321. package/dist/src/core/context/auto-context.d.ts +0 -22
  322. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  323. package/dist/src/core/context/auto-context.js +0 -77
  324. package/dist/src/core/context/auto-context.js.map +0 -1
  325. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  326. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  327. package/dist/src/core/context/compaction-handler.js +0 -306
  328. package/dist/src/core/context/compaction-handler.js.map +0 -1
  329. package/dist/src/core/context/frame-database.d.ts +0 -59
  330. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  331. package/dist/src/core/context/frame-database.js +0 -333
  332. package/dist/src/core/context/frame-database.js.map +0 -1
  333. package/dist/src/core/context/frame-digest.d.ts +0 -59
  334. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  335. package/dist/src/core/context/frame-digest.js +0 -264
  336. package/dist/src/core/context/frame-digest.js.map +0 -1
  337. package/dist/src/core/context/frame-manager.d.ts +0 -112
  338. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  339. package/dist/src/core/context/frame-manager.js +0 -600
  340. package/dist/src/core/context/frame-manager.js.map +0 -1
  341. package/dist/src/core/context/frame-stack.d.ts +0 -85
  342. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  343. package/dist/src/core/context/frame-stack.js +0 -287
  344. package/dist/src/core/context/frame-stack.js.map +0 -1
  345. package/dist/src/core/context/frame-types.d.ts +0 -67
  346. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  347. package/dist/src/core/context/frame-types.js +0 -6
  348. package/dist/src/core/context/frame-types.js.map +0 -1
  349. package/dist/src/core/context/index.d.ts +0 -11
  350. package/dist/src/core/context/index.d.ts.map +0 -1
  351. package/dist/src/core/context/index.js +0 -14
  352. package/dist/src/core/context/index.js.map +0 -1
  353. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  354. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  355. package/dist/src/core/context/model-aware-compaction.js +0 -616
  356. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  357. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  358. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  359. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  360. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  361. package/dist/src/core/database/batch-operations.d.ts +0 -118
  362. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  363. package/dist/src/core/database/batch-operations.js +0 -339
  364. package/dist/src/core/database/batch-operations.js.map +0 -1
  365. package/dist/src/core/database/connection-pool.d.ts +0 -79
  366. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  367. package/dist/src/core/database/connection-pool.js +0 -236
  368. package/dist/src/core/database/connection-pool.js.map +0 -1
  369. package/dist/src/core/database/query-cache.d.ts +0 -135
  370. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  371. package/dist/src/core/database/query-cache.js +0 -294
  372. package/dist/src/core/database/query-cache.js.map +0 -1
  373. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  374. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  375. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  376. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  377. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  378. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  379. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  380. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  381. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  382. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  383. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  384. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  385. package/dist/src/core/digest/index.d.ts +0 -9
  386. package/dist/src/core/digest/index.d.ts.map +0 -1
  387. package/dist/src/core/digest/index.js +0 -9
  388. package/dist/src/core/digest/index.js.map +0 -1
  389. package/dist/src/core/digest/types.d.ts +0 -154
  390. package/dist/src/core/digest/types.d.ts.map +0 -1
  391. package/dist/src/core/digest/types.js +0 -18
  392. package/dist/src/core/digest/types.js.map +0 -1
  393. package/dist/src/core/errors/index.d.ts +0 -143
  394. package/dist/src/core/errors/index.d.ts.map +0 -1
  395. package/dist/src/core/errors/index.js +0 -282
  396. package/dist/src/core/errors/index.js.map +0 -1
  397. package/dist/src/core/errors/recovery.d.ts +0 -86
  398. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  399. package/dist/src/core/errors/recovery.js +0 -274
  400. package/dist/src/core/errors/recovery.js.map +0 -1
  401. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  402. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  403. package/dist/src/core/merge/conflict-detector.js +0 -468
  404. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  405. package/dist/src/core/merge/index.d.ts +0 -9
  406. package/dist/src/core/merge/index.d.ts.map +0 -1
  407. package/dist/src/core/merge/index.js +0 -9
  408. package/dist/src/core/merge/index.js.map +0 -1
  409. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  410. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  411. package/dist/src/core/merge/resolution-engine.js +0 -573
  412. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  413. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  414. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  415. package/dist/src/core/merge/stack-diff.js +0 -516
  416. package/dist/src/core/merge/stack-diff.js.map +0 -1
  417. package/dist/src/core/merge/types.d.ts +0 -110
  418. package/dist/src/core/merge/types.d.ts.map +0 -1
  419. package/dist/src/core/merge/types.js +0 -6
  420. package/dist/src/core/merge/types.js.map +0 -1
  421. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  422. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  423. package/dist/src/core/monitoring/error-handler.js +0 -212
  424. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  425. package/dist/src/core/monitoring/logger.d.ts +0 -24
  426. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  427. package/dist/src/core/monitoring/logger.js +0 -126
  428. package/dist/src/core/monitoring/logger.js.map +0 -1
  429. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  430. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  431. package/dist/src/core/monitoring/metrics.js +0 -152
  432. package/dist/src/core/monitoring/metrics.js.map +0 -1
  433. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  434. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  435. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  436. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  437. package/dist/src/core/performance/context-cache.d.ts +0 -109
  438. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  439. package/dist/src/core/performance/context-cache.js +0 -280
  440. package/dist/src/core/performance/context-cache.js.map +0 -1
  441. package/dist/src/core/performance/index.d.ts +0 -3
  442. package/dist/src/core/performance/index.d.ts.map +0 -1
  443. package/dist/src/core/performance/index.js +0 -3
  444. package/dist/src/core/performance/index.js.map +0 -1
  445. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  446. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  447. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  448. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  449. package/dist/src/core/performance/monitor.d.ts +0 -48
  450. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  451. package/dist/src/core/performance/monitor.js +0 -226
  452. package/dist/src/core/performance/monitor.js.map +0 -1
  453. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  454. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  455. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  456. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  457. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  458. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  459. package/dist/src/core/performance/performance-benchmark.js +0 -290
  460. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  461. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  462. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  463. package/dist/src/core/performance/performance-profiler.js +0 -346
  464. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  465. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  466. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  467. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  468. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  469. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  470. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  471. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  472. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  473. package/dist/src/core/projects/project-manager.d.ts +0 -130
  474. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  475. package/dist/src/core/projects/project-manager.js +0 -709
  476. package/dist/src/core/projects/project-manager.js.map +0 -1
  477. package/dist/src/core/query/query-parser.d.ts +0 -109
  478. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  479. package/dist/src/core/query/query-parser.js +0 -415
  480. package/dist/src/core/query/query-parser.js.map +0 -1
  481. package/dist/src/core/query/query-templates.d.ts +0 -44
  482. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  483. package/dist/src/core/query/query-templates.js +0 -326
  484. package/dist/src/core/query/query-templates.js.map +0 -1
  485. package/dist/src/core/retrieval/index.d.ts +0 -8
  486. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  487. package/dist/src/core/retrieval/index.js +0 -8
  488. package/dist/src/core/retrieval/index.js.map +0 -1
  489. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  490. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  491. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  492. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  493. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  494. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  495. package/dist/src/core/retrieval/summary-generator.js +0 -622
  496. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  497. package/dist/src/core/retrieval/types.d.ts +0 -257
  498. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  499. package/dist/src/core/retrieval/types.js +0 -18
  500. package/dist/src/core/retrieval/types.js.map +0 -1
  501. package/dist/src/core/session/index.d.ts +0 -2
  502. package/dist/src/core/session/index.d.ts.map +0 -1
  503. package/dist/src/core/session/index.js +0 -2
  504. package/dist/src/core/session/index.js.map +0 -1
  505. package/dist/src/core/session/session-manager.d.ts +0 -69
  506. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  507. package/dist/src/core/session/session-manager.js +0 -311
  508. package/dist/src/core/session/session-manager.js.map +0 -1
  509. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  510. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  511. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  512. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  513. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  514. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  515. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  516. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  517. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  518. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  519. package/dist/src/core/trace/debug-trace.js +0 -402
  520. package/dist/src/core/trace/debug-trace.js.map +0 -1
  521. package/dist/src/core/trace/error-test.d.ts +0 -6
  522. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  523. package/dist/src/core/trace/error-test.js +0 -128
  524. package/dist/src/core/trace/error-test.js.map +0 -1
  525. package/dist/src/core/trace/index.d.ts +0 -25
  526. package/dist/src/core/trace/index.d.ts.map +0 -1
  527. package/dist/src/core/trace/index.js +0 -121
  528. package/dist/src/core/trace/index.js.map +0 -1
  529. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  530. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  531. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  532. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  533. package/dist/src/core/trace/performance-test.d.ts +0 -6
  534. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  535. package/dist/src/core/trace/performance-test.js +0 -111
  536. package/dist/src/core/trace/performance-test.js.map +0 -1
  537. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  538. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  539. package/dist/src/core/trace/trace-demo.js +0 -154
  540. package/dist/src/core/trace/trace-demo.js.map +0 -1
  541. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  542. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  543. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  544. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  545. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  546. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  547. package/dist/src/core/trace/trace-detector.js +0 -425
  548. package/dist/src/core/trace/trace-detector.js.map +0 -1
  549. package/dist/src/core/trace/trace-store.d.ts +0 -60
  550. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  551. package/dist/src/core/trace/trace-store.js +0 -323
  552. package/dist/src/core/trace/trace-store.js.map +0 -1
  553. package/dist/src/core/trace/types.d.ts +0 -81
  554. package/dist/src/core/trace/types.d.ts.map +0 -1
  555. package/dist/src/core/trace/types.js +0 -70
  556. package/dist/src/core/trace/types.js.map +0 -1
  557. package/dist/src/core/types.d.ts +0 -35
  558. package/dist/src/core/types.d.ts.map +0 -1
  559. package/dist/src/core/types.js +0 -2
  560. package/dist/src/core/types.js.map +0 -1
  561. package/dist/src/core/utils/update-checker.d.ts +0 -38
  562. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  563. package/dist/src/core/utils/update-checker.js +0 -213
  564. package/dist/src/core/utils/update-checker.js.map +0 -1
  565. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  566. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  567. package/dist/src/core/worktree/worktree-manager.js +0 -456
  568. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  569. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  570. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  571. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  572. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  573. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  574. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  575. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  576. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  577. package/dist/src/features/analytics/index.d.ts +0 -12
  578. package/dist/src/features/analytics/index.d.ts.map +0 -1
  579. package/dist/src/features/analytics/index.js +0 -11
  580. package/dist/src/features/analytics/index.js.map +0 -1
  581. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  582. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  583. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  584. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  585. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  586. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  587. package/dist/src/features/analytics/types/metrics.js +0 -2
  588. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  589. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  590. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  591. package/dist/src/features/browser/browser-mcp.js +0 -459
  592. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  593. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  594. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  595. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  596. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  597. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  598. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  599. package/dist/src/features/tasks/task-aware-context.js +0 -412
  600. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  601. package/dist/src/index.d.ts +0 -21
  602. package/dist/src/index.d.ts.map +0 -1
  603. package/dist/src/index.js +0 -9
  604. package/dist/src/index.js.map +0 -1
  605. package/dist/src/integrations/linear/auth.d.ts +0 -99
  606. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  607. package/dist/src/integrations/linear/auth.js +0 -319
  608. package/dist/src/integrations/linear/auth.js.map +0 -1
  609. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  610. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  611. package/dist/src/integrations/linear/auto-sync.js +0 -268
  612. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  613. package/dist/src/integrations/linear/client.d.ts +0 -127
  614. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  615. package/dist/src/integrations/linear/client.js +0 -446
  616. package/dist/src/integrations/linear/client.js.map +0 -1
  617. package/dist/src/integrations/linear/config.d.ts +0 -51
  618. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  619. package/dist/src/integrations/linear/config.js +0 -103
  620. package/dist/src/integrations/linear/config.js.map +0 -1
  621. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  622. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  623. package/dist/src/integrations/linear/sync-manager.js +0 -235
  624. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  625. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  626. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  627. package/dist/src/integrations/linear/sync-service.js +0 -217
  628. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  629. package/dist/src/integrations/linear/sync.d.ts +0 -125
  630. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  631. package/dist/src/integrations/linear/sync.js +0 -563
  632. package/dist/src/integrations/linear/sync.js.map +0 -1
  633. package/dist/src/integrations/linear/types.d.ts +0 -90
  634. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  635. package/dist/src/integrations/linear/types.js +0 -2
  636. package/dist/src/integrations/linear/types.js.map +0 -1
  637. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  638. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  639. package/dist/src/integrations/linear/webhook-server.js +0 -190
  640. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  641. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  642. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  643. package/dist/src/integrations/linear/webhook.js +0 -291
  644. package/dist/src/integrations/linear/webhook.js.map +0 -1
  645. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  646. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  647. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  648. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  649. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  650. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  651. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  652. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  654. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  656. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  658. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  660. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  662. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  663. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  664. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  665. package/dist/src/integrations/mcp/index.d.ts +0 -13
  666. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  667. package/dist/src/integrations/mcp/index.js +0 -17
  668. package/dist/src/integrations/mcp/index.js.map +0 -1
  669. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  670. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  671. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  672. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  673. package/dist/src/integrations/mcp/server.d.ts +0 -54
  674. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  675. package/dist/src/integrations/mcp/server.js +0 -1616
  676. package/dist/src/integrations/mcp/server.js.map +0 -1
  677. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  678. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  679. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  680. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  681. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  682. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  683. package/dist/src/integrations/mcp/trace-test.js +0 -54
  684. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  685. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  686. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  687. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  688. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  689. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  690. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  691. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  692. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  694. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  695. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  696. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  697. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  698. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  699. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  700. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  701. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  702. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  703. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  704. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  705. package/dist/src/models/user.model.d.ts +0 -62
  706. package/dist/src/models/user.model.d.ts.map +0 -1
  707. package/dist/src/models/user.model.js +0 -311
  708. package/dist/src/models/user.model.js.map +0 -1
  709. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  710. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  711. package/dist/src/servers/production/auth-middleware.js +0 -558
  712. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  713. package/dist/src/servers/railway/index.d.ts +0 -7
  714. package/dist/src/servers/railway/index.d.ts.map +0 -1
  715. package/dist/src/servers/railway/index.js +0 -401
  716. package/dist/src/servers/railway/index.js.map +0 -1
  717. package/dist/src/services/config-service.d.ts +0 -44
  718. package/dist/src/services/config-service.d.ts.map +0 -1
  719. package/dist/src/services/config-service.js +0 -61
  720. package/dist/src/services/config-service.js.map +0 -1
  721. package/dist/src/services/context-service.d.ts +0 -17
  722. package/dist/src/services/context-service.d.ts.map +0 -1
  723. package/dist/src/services/context-service.js +0 -173
  724. package/dist/src/services/context-service.js.map +0 -1
  725. package/dist/src/types/task.d.ts +0 -27
  726. package/dist/src/types/task.d.ts.map +0 -1
  727. package/dist/src/types/task.js +0 -2
  728. package/dist/src/types/task.js.map +0 -1
  729. package/dist/src/utils/logger.d.ts +0 -13
  730. package/dist/src/utils/logger.d.ts.map +0 -1
  731. package/dist/src/utils/logger.js +0 -52
  732. package/dist/src/utils/logger.js.map +0 -1
  733. package/dist/src/validation/schemas.d.ts +0 -633
  734. package/dist/src/validation/schemas.d.ts.map +0 -1
  735. package/dist/src/validation/schemas.js +0 -347
  736. package/dist/src/validation/schemas.js.map +0 -1
@@ -0,0 +1,275 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import Database from "better-sqlite3";
5
+ import { join } from "path";
6
+ import { existsSync } from "fs";
7
+ import { RailwayOptimizedStorage } from "../../core/storage/railway-optimized-storage.js";
8
+ import { ConfigManager } from "../../core/config/config-manager.js";
9
+ import { formatBytes, formatDuration } from "../../utils/formatting.js";
10
+ function createStorageCommand() {
11
+ const storage = new Command("storage").description(
12
+ "Manage 3-tier storage system (Redis/Railway/GCS)"
13
+ );
14
+ storage.command("status").description("Show storage tier statistics").option("-v, --verbose", "Show detailed statistics").action(async (options) => {
15
+ const spinner = ora("Loading storage statistics...").start();
16
+ try {
17
+ const dbPath = join(process.cwd(), ".stackmemory", "context.db");
18
+ if (!existsSync(dbPath)) {
19
+ spinner.fail("StackMemory not initialized in this directory");
20
+ process.exit(1);
21
+ }
22
+ const db = new Database(dbPath);
23
+ const configManager = new ConfigManager();
24
+ const storage2 = new RailwayOptimizedStorage(db, configManager);
25
+ const stats = storage2.getStorageStats();
26
+ spinner.succeed("Storage statistics loaded");
27
+ console.log(chalk.blue("\n\u{1F4CA} Storage Tier Distribution:"));
28
+ console.log(chalk.gray("\u2501".repeat(50)));
29
+ for (const tier of stats.byTier) {
30
+ const icon = tier.tier === "hot" ? "\u{1F525}" : tier.tier === "warm" ? "\u2601\uFE0F" : "\u2744\uFE0F";
31
+ const color = tier.tier === "hot" ? chalk.red : tier.tier === "warm" ? chalk.yellow : chalk.cyan;
32
+ console.log(`
33
+ ${icon} ${color(tier.tier.toUpperCase())} Tier:`);
34
+ console.log(` Traces: ${chalk.white(tier.count)}`);
35
+ console.log(` Original Size: ${chalk.white(formatBytes(tier.total_original || 0))}`);
36
+ console.log(` Compressed Size: ${chalk.white(formatBytes(tier.total_compressed || 0))}`);
37
+ console.log(` Compression Ratio: ${chalk.green((tier.avg_compression * 100).toFixed(1) + "%")}`);
38
+ console.log(` Avg Access Count: ${chalk.white(tier.avg_access?.toFixed(1) || "0")}`);
39
+ }
40
+ console.log(chalk.blue("\n\u{1F4C5} Age Distribution:"));
41
+ console.log(chalk.gray("\u2501".repeat(50)));
42
+ for (const age of stats.byAge) {
43
+ const percent = (age.count / stats.totalTraces * 100).toFixed(1);
44
+ const bar = "\u2588".repeat(Math.floor(percent / 2));
45
+ console.log(` ${age.age_group.padEnd(10)} ${bar} ${percent}% (${age.count})`);
46
+ }
47
+ console.log(chalk.blue("\n\u{1F4C8} Summary:"));
48
+ console.log(chalk.gray("\u2501".repeat(50)));
49
+ console.log(` Total Traces: ${chalk.white(stats.totalTraces)}`);
50
+ console.log(` Total Size: ${chalk.white(formatBytes(stats.totalSize))}`);
51
+ console.log(` Compressed Size: ${chalk.white(formatBytes(stats.compressedSize))}`);
52
+ const compressionRatio = ((1 - stats.compressedSize / stats.totalSize) * 100).toFixed(1);
53
+ console.log(` Overall Compression: ${chalk.green(compressionRatio + "%")}`);
54
+ const costEstimate = calculateStorageCost(stats);
55
+ console.log(chalk.blue("\n\u{1F4B0} Estimated Monthly Cost:"));
56
+ console.log(chalk.gray("\u2501".repeat(50)));
57
+ console.log(` Redis (Hot): ${chalk.green("$0.00")} (included with Railway)`);
58
+ console.log(` Railway Buckets (Warm): ${chalk.yellow(costEstimate.railway)}`);
59
+ console.log(` GCS Coldline (Cold): ${chalk.cyan(costEstimate.gcs)}`);
60
+ console.log(` Total: ${chalk.white(costEstimate.total)}`);
61
+ if (options.verbose) {
62
+ const recentMigrations = db.prepare(`
63
+ SELECT trace_id, tier, migrated_at, score
64
+ FROM storage_tiers
65
+ WHERE migrated_at > ?
66
+ ORDER BY migrated_at DESC
67
+ LIMIT 10
68
+ `).all(Date.now() - 24 * 60 * 60 * 1e3);
69
+ if (recentMigrations.length > 0) {
70
+ console.log(chalk.blue("\n\u{1F504} Recent Migrations (last 24h):"));
71
+ console.log(chalk.gray("\u2501".repeat(50)));
72
+ for (const m of recentMigrations) {
73
+ const time = new Date(m.migrated_at).toLocaleTimeString();
74
+ console.log(` ${time} - ${m.trace_id.substring(0, 8)}... \u2192 ${m.tier} (score: ${m.score.toFixed(2)})`);
75
+ }
76
+ }
77
+ }
78
+ db.close();
79
+ } catch (error) {
80
+ spinner.fail("Failed to load storage statistics");
81
+ console.error(error);
82
+ process.exit(1);
83
+ }
84
+ });
85
+ storage.command("migrate").description("Migrate traces between storage tiers").option("--dry-run", "Show what would be migrated without doing it").option("--force", "Force migration regardless of age").action(async (options) => {
86
+ const spinner = ora("Checking for traces to migrate...").start();
87
+ try {
88
+ const dbPath = join(process.cwd(), ".stackmemory", "context.db");
89
+ const db = new Database(dbPath);
90
+ const configManager = new ConfigManager();
91
+ const storage2 = new RailwayOptimizedStorage(db, configManager);
92
+ if (options.dryRun) {
93
+ const candidates = db.prepare(`
94
+ SELECT trace_id, tier, created_at, score,
95
+ (? - created_at) / 3600000 as age_hours
96
+ FROM storage_tiers
97
+ WHERE tier != 'cold'
98
+ ORDER BY created_at ASC
99
+ `).all(Date.now());
100
+ const toMigrate = {
101
+ hotToWarm: candidates.filter(
102
+ (c) => c.tier === "hot" && c.age_hours > 24
103
+ ),
104
+ warmToCold: candidates.filter(
105
+ (c) => c.tier === "warm" && c.age_hours > 720
106
+ )
107
+ };
108
+ spinner.info("Dry run - no changes will be made");
109
+ console.log(chalk.blue("\n\u{1F504} Migration Plan:"));
110
+ console.log(chalk.gray("\u2501".repeat(50)));
111
+ if (toMigrate.hotToWarm.length > 0) {
112
+ console.log(chalk.red(`
113
+ \u{1F525} \u2192 \u2601\uFE0F Hot to Warm: ${toMigrate.hotToWarm.length} traces`));
114
+ for (const t of toMigrate.hotToWarm.slice(0, 5)) {
115
+ console.log(` \u2022 ${t.trace_id.substring(0, 8)}... (${t.age_hours.toFixed(0)}h old, score: ${t.score.toFixed(2)})`);
116
+ }
117
+ if (toMigrate.hotToWarm.length > 5) {
118
+ console.log(` ... and ${toMigrate.hotToWarm.length - 5} more`);
119
+ }
120
+ }
121
+ if (toMigrate.warmToCold.length > 0) {
122
+ console.log(chalk.yellow(`
123
+ \u2601\uFE0F \u2192 \u2744\uFE0F Warm to Cold: ${toMigrate.warmToCold.length} traces`));
124
+ for (const t of toMigrate.warmToCold.slice(0, 5)) {
125
+ const ageDays = Math.floor(t.age_hours / 24);
126
+ console.log(` \u2022 ${t.trace_id.substring(0, 8)}... (${ageDays}d old, score: ${t.score.toFixed(2)})`);
127
+ }
128
+ if (toMigrate.warmToCold.length > 5) {
129
+ console.log(` ... and ${toMigrate.warmToCold.length - 5} more`);
130
+ }
131
+ }
132
+ if (toMigrate.hotToWarm.length === 0 && toMigrate.warmToCold.length === 0) {
133
+ console.log(chalk.green("\u2713 No traces need migration"));
134
+ }
135
+ } else {
136
+ spinner.text = "Migrating traces between tiers...";
137
+ const results = await storage2.migrateTiers();
138
+ spinner.succeed("Migration completed");
139
+ console.log(chalk.blue("\n\u2705 Migration Results:"));
140
+ console.log(chalk.gray("\u2501".repeat(50)));
141
+ console.log(` Hot \u2192 Warm: ${chalk.yellow(results.hotToWarm)} traces`);
142
+ console.log(` Warm \u2192 Cold: ${chalk.cyan(results.warmToCold)} traces`);
143
+ if (results.errors.length > 0) {
144
+ console.log(chalk.red(`
145
+ \u274C Errors (${results.errors.length}):`));
146
+ for (const error of results.errors.slice(0, 5)) {
147
+ console.log(` \u2022 ${error}`);
148
+ }
149
+ }
150
+ }
151
+ db.close();
152
+ } catch (error) {
153
+ spinner.fail("Migration failed");
154
+ console.error(error);
155
+ process.exit(1);
156
+ }
157
+ });
158
+ storage.command("cleanup").description("Clean up old traces from cold storage").option("--days <number>", "Remove traces older than N days", parseInt, 90).option("--dry-run", "Show what would be removed without doing it").action(async (options) => {
159
+ const spinner = ora("Analyzing storage for cleanup...").start();
160
+ try {
161
+ const dbPath = join(process.cwd(), ".stackmemory", "context.db");
162
+ const db = new Database(dbPath);
163
+ const configManager = new ConfigManager();
164
+ const storage2 = new RailwayOptimizedStorage(db, configManager);
165
+ const cutoff = Date.now() - options.days * 24 * 60 * 60 * 1e3;
166
+ if (options.dryRun) {
167
+ const toRemove = db.prepare(`
168
+ SELECT COUNT(*) as count, SUM(compressed_size) as size
169
+ FROM storage_tiers
170
+ WHERE tier = 'cold' AND created_at < ? AND access_count = 0
171
+ `).get(cutoff);
172
+ spinner.info("Dry run - no traces will be removed");
173
+ console.log(chalk.blue("\n\u{1F9F9} Cleanup Analysis:"));
174
+ console.log(chalk.gray("\u2501".repeat(50)));
175
+ console.log(` Traces to remove: ${chalk.red(toRemove.count || 0)}`);
176
+ console.log(` Space to free: ${chalk.yellow(formatBytes(toRemove.size || 0))}`);
177
+ console.log(` Criteria: > ${options.days} days old with 0 access`);
178
+ } else {
179
+ const removed = await storage2.cleanup();
180
+ spinner.succeed(`Cleanup completed - removed ${removed} traces`);
181
+ }
182
+ db.close();
183
+ } catch (error) {
184
+ spinner.fail("Cleanup failed");
185
+ console.error(error);
186
+ process.exit(1);
187
+ }
188
+ });
189
+ storage.command("retrieve <traceId>").description("Retrieve a trace from any storage tier").action(async (traceId) => {
190
+ const spinner = ora(`Retrieving trace ${traceId}...`).start();
191
+ try {
192
+ const dbPath = join(process.cwd(), ".stackmemory", "context.db");
193
+ const db = new Database(dbPath);
194
+ const configManager = new ConfigManager();
195
+ const storage2 = new RailwayOptimizedStorage(db, configManager);
196
+ const trace = await storage2.retrieveTrace(traceId);
197
+ if (!trace) {
198
+ spinner.fail(`Trace ${traceId} not found`);
199
+ process.exit(1);
200
+ }
201
+ spinner.succeed("Trace retrieved");
202
+ console.log(chalk.blue("\n\u{1F4E6} Trace Details:"));
203
+ console.log(chalk.gray("\u2501".repeat(50)));
204
+ console.log(` ID: ${chalk.cyan(trace.id)}`);
205
+ console.log(` Type: ${chalk.yellow(trace.type)}`);
206
+ console.log(` Score: ${chalk.green(trace.score.toFixed(3))}`);
207
+ console.log(` Summary: ${trace.summary}`);
208
+ console.log(` Tools: ${trace.tools?.length || trace.toolSummary?.count || 0}`);
209
+ const metadata = trace.metadata;
210
+ if (metadata) {
211
+ console.log(chalk.blue("\n\u{1F4CB} Metadata:"));
212
+ console.log(` Start: ${new Date(metadata.startTime).toLocaleString()}`);
213
+ console.log(` Duration: ${formatDuration(metadata.endTime - metadata.startTime)}`);
214
+ console.log(` Files: ${metadata.filesModified?.length || metadata.filesModified || 0}`);
215
+ console.log(` Errors: ${metadata.errorsEncountered?.length || metadata.errorsCount || 0}`);
216
+ }
217
+ const location = db.prepare(
218
+ "SELECT tier, location, access_count FROM storage_tiers WHERE trace_id = ?"
219
+ ).get(traceId);
220
+ if (location) {
221
+ const tierIcon = location.tier === "hot" ? "\u{1F525}" : location.tier === "warm" ? "\u2601\uFE0F" : "\u2744\uFE0F";
222
+ console.log(chalk.blue("\n\u{1F4BE} Storage:"));
223
+ console.log(` Tier: ${tierIcon} ${location.tier}`);
224
+ console.log(` Access Count: ${location.access_count}`);
225
+ }
226
+ db.close();
227
+ } catch (error) {
228
+ spinner.fail("Failed to retrieve trace");
229
+ console.error(error);
230
+ process.exit(1);
231
+ }
232
+ });
233
+ storage.command("config").description("Show storage configuration").action(async () => {
234
+ console.log(chalk.blue("\n\u2699\uFE0F Storage Configuration:"));
235
+ console.log(chalk.gray("\u2501".repeat(50)));
236
+ console.log(chalk.red("\n\u{1F525} Hot Tier (Redis):"));
237
+ console.log(` URL: ${process.env.REDIS_URL ? chalk.green("Configured") : chalk.yellow("Not configured")}`);
238
+ console.log(` TTL: 24 hours`);
239
+ console.log(` Max Memory: 100MB`);
240
+ console.log(chalk.yellow("\n\u2601\uFE0F Warm Tier (Railway Buckets):"));
241
+ console.log(` Endpoint: ${process.env.RAILWAY_BUCKET_ENDPOINT || "Not configured"}`);
242
+ console.log(` Bucket: ${process.env.RAILWAY_BUCKET_NAME || "stackmemory-warm"}`);
243
+ console.log(` Access Key: ${process.env.RAILWAY_BUCKET_ACCESS_KEY ? chalk.green("Set") : chalk.yellow("Not set")}`);
244
+ console.log(` Retention: 30 days`);
245
+ console.log(chalk.cyan("\n\u2744\uFE0F Cold Tier (GCS):"));
246
+ console.log(` Project: ${process.env.GCP_PROJECT_ID || "Not configured"}`);
247
+ console.log(` Bucket: ${process.env.GCS_BUCKET || "stackmemory-cold"}`);
248
+ console.log(` Key File: ${process.env.GCP_KEY_FILE ? chalk.green("Set") : chalk.yellow("Not set")}`);
249
+ console.log(` Storage Class: Coldline`);
250
+ console.log(` Retention: Infinite`);
251
+ console.log(chalk.blue("\n\u{1F4CA} Migration Thresholds:"));
252
+ console.log(` Hot \u2192 Warm: After 24 hours`);
253
+ console.log(` Warm \u2192 Cold: After 30 days`);
254
+ console.log(` Low Score Migration: < 0.4 score`);
255
+ });
256
+ return storage;
257
+ }
258
+ function calculateStorageCost(stats) {
259
+ const warmTier = stats.byTier.find((t) => t.tier === "warm");
260
+ const coldTier = stats.byTier.find((t) => t.tier === "cold");
261
+ const warmGB = (warmTier?.total_compressed || 0) / (1024 * 1024 * 1024);
262
+ const coldGB = (coldTier?.total_compressed || 0) / (1024 * 1024 * 1024);
263
+ const railwayCost = warmGB * 0.02;
264
+ const gcsCost = coldGB * 4e-3;
265
+ const totalCost = railwayCost + gcsCost;
266
+ return {
267
+ railway: `$${railwayCost.toFixed(2)}`,
268
+ gcs: `$${gcsCost.toFixed(2)}`,
269
+ total: `$${totalCost.toFixed(2)}`
270
+ };
271
+ }
272
+ export {
273
+ createStorageCommand
274
+ };
275
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cli/commands/storage.ts"],
4
+ "sourcesContent": ["/**\n * Storage management commands for StackMemory\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport Database from 'better-sqlite3';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\nimport { RailwayOptimizedStorage } from '../../core/storage/railway-optimized-storage.js';\nimport { ConfigManager } from '../../core/config/config-manager.js';\nimport { formatBytes, formatDuration } from '../../utils/formatting.js';\n\nexport function createStorageCommand(): Command {\n const storage = new Command('storage').description(\n 'Manage 3-tier storage system (Redis/Railway/GCS)'\n );\n\n storage\n .command('status')\n .description('Show storage tier statistics')\n .option('-v, --verbose', 'Show detailed statistics')\n .action(async (options) => {\n const spinner = ora('Loading storage statistics...').start();\n \n try {\n const dbPath = join(process.cwd(), '.stackmemory', 'context.db');\n if (!existsSync(dbPath)) {\n spinner.fail('StackMemory not initialized in this directory');\n process.exit(1);\n }\n \n const db = new Database(dbPath);\n const configManager = new ConfigManager();\n const storage = new RailwayOptimizedStorage(db, configManager);\n \n const stats = storage.getStorageStats();\n spinner.succeed('Storage statistics loaded');\n \n console.log(chalk.blue('\\n\uD83D\uDCCA Storage Tier Distribution:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n \n // Tier statistics\n for (const tier of stats.byTier) {\n const icon = tier.tier === 'hot' ? '\uD83D\uDD25' : tier.tier === 'warm' ? '\u2601\uFE0F' : '\u2744\uFE0F';\n const color = tier.tier === 'hot' ? chalk.red : tier.tier === 'warm' ? chalk.yellow : chalk.cyan;\n \n console.log(`\\n${icon} ${color(tier.tier.toUpperCase())} Tier:`);\n console.log(` Traces: ${chalk.white(tier.count)}`);\n console.log(` Original Size: ${chalk.white(formatBytes(tier.total_original || 0))}`);\n console.log(` Compressed Size: ${chalk.white(formatBytes(tier.total_compressed || 0))}`);\n console.log(` Compression Ratio: ${chalk.green((tier.avg_compression * 100).toFixed(1) + '%')}`);\n console.log(` Avg Access Count: ${chalk.white(tier.avg_access?.toFixed(1) || '0')}`);\n }\n \n // Age distribution\n console.log(chalk.blue('\\n\uD83D\uDCC5 Age Distribution:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n for (const age of stats.byAge) {\n const percent = (age.count / stats.totalTraces * 100).toFixed(1);\n const bar = '\u2588'.repeat(Math.floor(percent / 2));\n console.log(` ${age.age_group.padEnd(10)} ${bar} ${percent}% (${age.count})`);\n }\n \n // Summary\n console.log(chalk.blue('\\n\uD83D\uDCC8 Summary:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n console.log(` Total Traces: ${chalk.white(stats.totalTraces)}`);\n console.log(` Total Size: ${chalk.white(formatBytes(stats.totalSize))}`);\n console.log(` Compressed Size: ${chalk.white(formatBytes(stats.compressedSize))}`);\n \n const compressionRatio = ((1 - stats.compressedSize / stats.totalSize) * 100).toFixed(1);\n console.log(` Overall Compression: ${chalk.green(compressionRatio + '%')}`);\n \n // Cost estimation\n const costEstimate = calculateStorageCost(stats);\n console.log(chalk.blue('\\n\uD83D\uDCB0 Estimated Monthly Cost:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n console.log(` Redis (Hot): ${chalk.green('$0.00')} (included with Railway)`);\n console.log(` Railway Buckets (Warm): ${chalk.yellow(costEstimate.railway)}`);\n console.log(` GCS Coldline (Cold): ${chalk.cyan(costEstimate.gcs)}`);\n console.log(` Total: ${chalk.white(costEstimate.total)}`);\n \n if (options.verbose) {\n // Show recent migrations\n const recentMigrations = db.prepare(`\n SELECT trace_id, tier, migrated_at, score\n FROM storage_tiers\n WHERE migrated_at > ?\n ORDER BY migrated_at DESC\n LIMIT 10\n `).all(Date.now() - 24 * 60 * 60 * 1000) as any[];\n \n if (recentMigrations.length > 0) {\n console.log(chalk.blue('\\n\uD83D\uDD04 Recent Migrations (last 24h):'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n for (const m of recentMigrations) {\n const time = new Date(m.migrated_at).toLocaleTimeString();\n console.log(` ${time} - ${m.trace_id.substring(0, 8)}... \u2192 ${m.tier} (score: ${m.score.toFixed(2)})`);\n }\n }\n }\n \n db.close();\n \n } catch (error) {\n spinner.fail('Failed to load storage statistics');\n console.error(error);\n process.exit(1);\n }\n });\n\n storage\n .command('migrate')\n .description('Migrate traces between storage tiers')\n .option('--dry-run', 'Show what would be migrated without doing it')\n .option('--force', 'Force migration regardless of age')\n .action(async (options) => {\n const spinner = ora('Checking for traces to migrate...').start();\n \n try {\n const dbPath = join(process.cwd(), '.stackmemory', 'context.db');\n const db = new Database(dbPath);\n const configManager = new ConfigManager();\n const storage = new RailwayOptimizedStorage(db, configManager);\n \n if (options.dryRun) {\n // Analyze what would be migrated\n const candidates = db.prepare(`\n SELECT trace_id, tier, created_at, score,\n (? - created_at) / 3600000 as age_hours\n FROM storage_tiers\n WHERE tier != 'cold'\n ORDER BY created_at ASC\n `).all(Date.now()) as any[];\n \n const toMigrate = {\n hotToWarm: candidates.filter((c: any) => \n c.tier === 'hot' && c.age_hours > 24\n ),\n warmToCold: candidates.filter((c: any) => \n c.tier === 'warm' && c.age_hours > 720\n ),\n };\n \n spinner.info('Dry run - no changes will be made');\n \n console.log(chalk.blue('\\n\uD83D\uDD04 Migration Plan:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n \n if (toMigrate.hotToWarm.length > 0) {\n console.log(chalk.red(`\\n\uD83D\uDD25 \u2192 \u2601\uFE0F Hot to Warm: ${toMigrate.hotToWarm.length} traces`));\n for (const t of toMigrate.hotToWarm.slice(0, 5)) {\n console.log(` \u2022 ${t.trace_id.substring(0, 8)}... (${t.age_hours.toFixed(0)}h old, score: ${t.score.toFixed(2)})`);\n }\n if (toMigrate.hotToWarm.length > 5) {\n console.log(` ... and ${toMigrate.hotToWarm.length - 5} more`);\n }\n }\n \n if (toMigrate.warmToCold.length > 0) {\n console.log(chalk.yellow(`\\n\u2601\uFE0F \u2192 \u2744\uFE0F Warm to Cold: ${toMigrate.warmToCold.length} traces`));\n for (const t of toMigrate.warmToCold.slice(0, 5)) {\n const ageDays = Math.floor(t.age_hours / 24);\n console.log(` \u2022 ${t.trace_id.substring(0, 8)}... (${ageDays}d old, score: ${t.score.toFixed(2)})`);\n }\n if (toMigrate.warmToCold.length > 5) {\n console.log(` ... and ${toMigrate.warmToCold.length - 5} more`);\n }\n }\n \n if (toMigrate.hotToWarm.length === 0 && toMigrate.warmToCold.length === 0) {\n console.log(chalk.green('\u2713 No traces need migration'));\n }\n \n } else {\n // Perform actual migration\n spinner.text = 'Migrating traces between tiers...';\n const results = await storage.migrateTiers();\n \n spinner.succeed('Migration completed');\n \n console.log(chalk.blue('\\n\u2705 Migration Results:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n console.log(` Hot \u2192 Warm: ${chalk.yellow(results.hotToWarm)} traces`);\n console.log(` Warm \u2192 Cold: ${chalk.cyan(results.warmToCold)} traces`);\n \n if (results.errors.length > 0) {\n console.log(chalk.red(`\\n\u274C Errors (${results.errors.length}):`));\n for (const error of results.errors.slice(0, 5)) {\n console.log(` \u2022 ${error}`);\n }\n }\n }\n \n db.close();\n \n } catch (error) {\n spinner.fail('Migration failed');\n console.error(error);\n process.exit(1);\n }\n });\n\n storage\n .command('cleanup')\n .description('Clean up old traces from cold storage')\n .option('--days <number>', 'Remove traces older than N days', parseInt, 90)\n .option('--dry-run', 'Show what would be removed without doing it')\n .action(async (options) => {\n const spinner = ora('Analyzing storage for cleanup...').start();\n \n try {\n const dbPath = join(process.cwd(), '.stackmemory', 'context.db');\n const db = new Database(dbPath);\n const configManager = new ConfigManager();\n const storage = new RailwayOptimizedStorage(db, configManager);\n \n const cutoff = Date.now() - (options.days * 24 * 60 * 60 * 1000);\n \n if (options.dryRun) {\n const toRemove = db.prepare(`\n SELECT COUNT(*) as count, SUM(compressed_size) as size\n FROM storage_tiers\n WHERE tier = 'cold' AND created_at < ? AND access_count = 0\n `).get(cutoff) as any;\n \n spinner.info('Dry run - no traces will be removed');\n \n console.log(chalk.blue('\\n\uD83E\uDDF9 Cleanup Analysis:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n console.log(` Traces to remove: ${chalk.red(toRemove.count || 0)}`);\n console.log(` Space to free: ${chalk.yellow(formatBytes(toRemove.size || 0))}`);\n console.log(` Criteria: > ${options.days} days old with 0 access`);\n \n } else {\n const removed = await storage.cleanup();\n spinner.succeed(`Cleanup completed - removed ${removed} traces`);\n }\n \n db.close();\n \n } catch (error) {\n spinner.fail('Cleanup failed');\n console.error(error);\n process.exit(1);\n }\n });\n\n storage\n .command('retrieve <traceId>')\n .description('Retrieve a trace from any storage tier')\n .action(async (traceId) => {\n const spinner = ora(`Retrieving trace ${traceId}...`).start();\n \n try {\n const dbPath = join(process.cwd(), '.stackmemory', 'context.db');\n const db = new Database(dbPath);\n const configManager = new ConfigManager();\n const storage = new RailwayOptimizedStorage(db, configManager);\n \n const trace = await storage.retrieveTrace(traceId);\n \n if (!trace) {\n spinner.fail(`Trace ${traceId} not found`);\n process.exit(1);\n }\n \n spinner.succeed('Trace retrieved');\n \n console.log(chalk.blue('\\n\uD83D\uDCE6 Trace Details:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n console.log(` ID: ${chalk.cyan(trace.id)}`);\n console.log(` Type: ${chalk.yellow(trace.type)}`);\n console.log(` Score: ${chalk.green(trace.score.toFixed(3))}`);\n console.log(` Summary: ${trace.summary}`);\n console.log(` Tools: ${trace.tools?.length || trace.toolSummary?.count || 0}`);\n \n const metadata = trace.metadata;\n if (metadata) {\n console.log(chalk.blue('\\n\uD83D\uDCCB Metadata:'));\n console.log(` Start: ${new Date(metadata.startTime).toLocaleString()}`);\n console.log(` Duration: ${formatDuration(metadata.endTime - metadata.startTime)}`);\n console.log(` Files: ${metadata.filesModified?.length || metadata.filesModified || 0}`);\n console.log(` Errors: ${metadata.errorsEncountered?.length || metadata.errorsCount || 0}`);\n }\n \n // Show storage location\n const location = db.prepare(\n 'SELECT tier, location, access_count FROM storage_tiers WHERE trace_id = ?'\n ).get(traceId) as any;\n \n if (location) {\n const tierIcon = location.tier === 'hot' ? '\uD83D\uDD25' : \n location.tier === 'warm' ? '\u2601\uFE0F' : '\u2744\uFE0F';\n console.log(chalk.blue('\\n\uD83D\uDCBE Storage:'));\n console.log(` Tier: ${tierIcon} ${location.tier}`);\n console.log(` Access Count: ${location.access_count}`);\n }\n \n db.close();\n \n } catch (error) {\n spinner.fail('Failed to retrieve trace');\n console.error(error);\n process.exit(1);\n }\n });\n\n storage\n .command('config')\n .description('Show storage configuration')\n .action(async () => {\n console.log(chalk.blue('\\n\u2699\uFE0F Storage Configuration:'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n \n console.log(chalk.red('\\n\uD83D\uDD25 Hot Tier (Redis):'));\n console.log(` URL: ${process.env.REDIS_URL ? chalk.green('Configured') : chalk.yellow('Not configured')}`);\n console.log(` TTL: 24 hours`);\n console.log(` Max Memory: 100MB`);\n \n console.log(chalk.yellow('\\n\u2601\uFE0F Warm Tier (Railway Buckets):'));\n console.log(` Endpoint: ${process.env.RAILWAY_BUCKET_ENDPOINT || 'Not configured'}`);\n console.log(` Bucket: ${process.env.RAILWAY_BUCKET_NAME || 'stackmemory-warm'}`);\n console.log(` Access Key: ${process.env.RAILWAY_BUCKET_ACCESS_KEY ? chalk.green('Set') : chalk.yellow('Not set')}`);\n console.log(` Retention: 30 days`);\n \n console.log(chalk.cyan('\\n\u2744\uFE0F Cold Tier (GCS):'));\n console.log(` Project: ${process.env.GCP_PROJECT_ID || 'Not configured'}`);\n console.log(` Bucket: ${process.env.GCS_BUCKET || 'stackmemory-cold'}`);\n console.log(` Key File: ${process.env.GCP_KEY_FILE ? chalk.green('Set') : chalk.yellow('Not set')}`);\n console.log(` Storage Class: Coldline`);\n console.log(` Retention: Infinite`);\n \n console.log(chalk.blue('\\n\uD83D\uDCCA Migration Thresholds:'));\n console.log(` Hot \u2192 Warm: After 24 hours`);\n console.log(` Warm \u2192 Cold: After 30 days`);\n console.log(` Low Score Migration: < 0.4 score`);\n });\n\n return storage;\n}\n\n/**\n * Calculate storage cost estimates\n */\nfunction calculateStorageCost(stats: any): { railway: string; gcs: string; total: string } {\n // Find warm and cold tier sizes\n const warmTier = stats.byTier.find((t: any) => t.tier === 'warm');\n const coldTier = stats.byTier.find((t: any) => t.tier === 'cold');\n \n const warmGB = (warmTier?.total_compressed || 0) / (1024 * 1024 * 1024);\n const coldGB = (coldTier?.total_compressed || 0) / (1024 * 1024 * 1024);\n \n // Railway Buckets: ~$0.02/GB (estimate)\n const railwayCost = warmGB * 0.02;\n \n // GCS Coldline: $0.004/GB\n const gcsCost = coldGB * 0.004;\n \n const totalCost = railwayCost + gcsCost;\n \n return {\n railway: `$${railwayCost.toFixed(2)}`,\n gcs: `$${gcsCost.toFixed(2)}`,\n total: `$${totalCost.toFixed(2)}`,\n };\n}"],
5
+ "mappings": "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",
6
+ "names": ["storage"]
7
+ }
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from "child_process";
3
+ import { fileURLToPath } from "url";
4
+ import { dirname, join } from "path";
5
+ import chalk from "chalk";
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ const tuiCommand = {
9
+ command: "tui",
10
+ describe: "Launch interactive TUI monitoring dashboard",
11
+ builder: (yargs) => {
12
+ return yargs.option("server", {
13
+ alias: "s",
14
+ type: "boolean",
15
+ description: "Start WebSocket server for real-time updates",
16
+ default: false
17
+ }).option("ws-url", {
18
+ alias: "w",
19
+ type: "string",
20
+ description: "WebSocket server URL",
21
+ default: "ws://localhost:8080"
22
+ }).option("refresh", {
23
+ alias: "r",
24
+ type: "number",
25
+ description: "Auto-refresh interval in milliseconds",
26
+ default: 2e3
27
+ });
28
+ },
29
+ handler: async (argv) => {
30
+ console.log(chalk.cyan("\u{1F680} Launching StackMemory TUI Dashboard..."));
31
+ process.env.STACKMEMORY_WS_URL = argv.wsUrl;
32
+ const scriptPath = join(__dirname, "../../../scripts/start-tui.sh");
33
+ const args = [];
34
+ if (argv.server) {
35
+ args.push("--with-server");
36
+ }
37
+ const tui = spawn("bash", [scriptPath, ...args], {
38
+ stdio: "inherit",
39
+ env: {
40
+ ...process.env,
41
+ STACKMEMORY_WS_URL: argv.wsUrl
42
+ }
43
+ });
44
+ tui.on("error", (error) => {
45
+ console.error(chalk.red("Failed to launch TUI:"), error);
46
+ process.exit(1);
47
+ });
48
+ tui.on("exit", (code) => {
49
+ if (code !== 0) {
50
+ console.error(chalk.red(`TUI exited with code ${code}`));
51
+ process.exit(code || 1);
52
+ }
53
+ });
54
+ }
55
+ };
56
+ if (require.main === module) {
57
+ tuiCommand.handler({
58
+ server: process.argv.includes("--server"),
59
+ wsUrl: process.env.STACKMEMORY_WS_URL || "ws://localhost:8080",
60
+ refresh: 2e3
61
+ });
62
+ }
63
+ export {
64
+ tuiCommand
65
+ };
66
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cli/commands/tui.ts"],
4
+ "sourcesContent": ["#!/usr/bin/env node\n/**\n * TUI Command - Launch interactive monitoring dashboard\n */\n\nimport { spawn } from 'child_process';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\nimport chalk from 'chalk';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nexport const tuiCommand = {\n command: 'tui',\n describe: 'Launch interactive TUI monitoring dashboard',\n builder: (yargs: any) => {\n return yargs\n .option('server', {\n alias: 's',\n type: 'boolean',\n description: 'Start WebSocket server for real-time updates',\n default: false\n })\n .option('ws-url', {\n alias: 'w',\n type: 'string',\n description: 'WebSocket server URL',\n default: 'ws://localhost:8080'\n })\n .option('refresh', {\n alias: 'r',\n type: 'number',\n description: 'Auto-refresh interval in milliseconds',\n default: 2000\n });\n },\n handler: async (argv: any) => {\n console.log(chalk.cyan('\uD83D\uDE80 Launching StackMemory TUI Dashboard...'));\n \n // Set environment variables\n process.env.STACKMEMORY_WS_URL = argv.wsUrl;\n \n // Get script path\n const scriptPath = join(__dirname, '../../../scripts/start-tui.sh');\n \n // Prepare arguments\n const args = [];\n if (argv.server) {\n args.push('--with-server');\n }\n \n // Launch TUI\n const tui = spawn('bash', [scriptPath, ...args], {\n stdio: 'inherit',\n env: {\n ...process.env,\n STACKMEMORY_WS_URL: argv.wsUrl\n }\n });\n \n tui.on('error', (error) => {\n console.error(chalk.red('Failed to launch TUI:'), error);\n process.exit(1);\n });\n \n tui.on('exit', (code) => {\n if (code !== 0) {\n console.error(chalk.red(`TUI exited with code ${code}`));\n process.exit(code || 1);\n }\n });\n }\n};\n\n// Direct execution support\nif (require.main === module) {\n tuiCommand.handler({\n server: process.argv.includes('--server'),\n wsUrl: process.env.STACKMEMORY_WS_URL || 'ws://localhost:8080',\n refresh: 2000\n });\n}"],
5
+ "mappings": ";AAKA,SAAS,aAAa;AACtB,SAAS,qBAAqB;AAC9B,SAAS,SAAS,YAAY;AAC9B,OAAO,WAAW;AAElB,MAAM,aAAa,cAAc,YAAY,GAAG;AAChD,MAAM,YAAY,QAAQ,UAAU;AAE7B,MAAM,aAAa;AAAA,EACxB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAe;AACvB,WAAO,MACJ,OAAO,UAAU;AAAA,MAChB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC,EACA,OAAO,UAAU;AAAA,MAChB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC,EACA,OAAO,WAAW;AAAA,MACjB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EACA,SAAS,OAAO,SAAc;AAC5B,YAAQ,IAAI,MAAM,KAAK,kDAA2C,CAAC;AAGnE,YAAQ,IAAI,qBAAqB,KAAK;AAGtC,UAAM,aAAa,KAAK,WAAW,+BAA+B;AAGlE,UAAM,OAAO,CAAC;AACd,QAAI,KAAK,QAAQ;AACf,WAAK,KAAK,eAAe;AAAA,IAC3B;AAGA,UAAM,MAAM,MAAM,QAAQ,CAAC,YAAY,GAAG,IAAI,GAAG;AAAA,MAC/C,OAAO;AAAA,MACP,KAAK;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,oBAAoB,KAAK;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,QAAI,GAAG,SAAS,CAAC,UAAU;AACzB,cAAQ,MAAM,MAAM,IAAI,uBAAuB,GAAG,KAAK;AACvD,cAAQ,KAAK,CAAC;AAAA,IAChB,CAAC;AAED,QAAI,GAAG,QAAQ,CAAC,SAAS;AACvB,UAAI,SAAS,GAAG;AACd,gBAAQ,MAAM,MAAM,IAAI,wBAAwB,IAAI,EAAE,CAAC;AACvD,gBAAQ,KAAK,QAAQ,CAAC;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAGA,IAAI,QAAQ,SAAS,QAAQ;AAC3B,aAAW,QAAQ;AAAA,IACjB,QAAQ,QAAQ,KAAK,SAAS,UAAU;AAAA,IACxC,OAAO,QAAQ,IAAI,sBAAsB;AAAA,IACzC,SAAS;AAAA,EACX,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,134 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import * as path from "path";
4
+ import Database from "better-sqlite3";
5
+ import { existsSync } from "fs";
6
+ import { FrameManager } from "../../core/context/frame-manager.js";
7
+ import { workflowTemplates } from "../../core/frame/workflow-templates-stub.js";
8
+ import { sessionManager } from "../../core/session/session-manager.js";
9
+ function createWorkflowCommand() {
10
+ const cmd = new Command("workflow").description("Manage structured workflow templates").option("-l, --list", "List available workflow templates").option("-s, --start <template>", "Start a new workflow from template").option("--status", "Show status of active workflow").action(async (options) => {
11
+ try {
12
+ const projectRoot = process.cwd();
13
+ const dbPath = path.join(projectRoot, ".stackmemory", "context.db");
14
+ if (!existsSync(dbPath)) {
15
+ console.error(chalk.red("\u2717 StackMemory not initialized"));
16
+ console.log(chalk.yellow("Run: stackmemory init"));
17
+ if (process.env.NODE_ENV !== "test") {
18
+ process.exit(1);
19
+ }
20
+ return;
21
+ }
22
+ if (options.list) {
23
+ await listWorkflows();
24
+ } else if (options.start) {
25
+ await startWorkflow(options.start, dbPath);
26
+ } else if (options.status) {
27
+ await showWorkflowStatus(dbPath);
28
+ } else {
29
+ await listWorkflows();
30
+ }
31
+ } catch (error) {
32
+ console.error(chalk.red("Error: " + error.message));
33
+ if (process.env.NODE_ENV !== "test") {
34
+ process.exit(1);
35
+ }
36
+ }
37
+ });
38
+ return cmd;
39
+ }
40
+ async function listWorkflows() {
41
+ console.log(chalk.bold("\n\u{1F4CB} Available Workflows"));
42
+ console.log("\u2500".repeat(40));
43
+ Object.entries(workflowTemplates).forEach(([key, template]) => {
44
+ console.log(chalk.cyan(`
45
+ ${key}:`));
46
+ console.log(` ${template.description}`);
47
+ console.log(chalk.gray(` Phases: ${template.phases.length}`));
48
+ template.phases.slice(0, 3).forEach((phase) => {
49
+ console.log(` \u2022 ${phase.name}`);
50
+ });
51
+ if (template.phases.length > 3) {
52
+ console.log(` ... and ${template.phases.length - 3} more`);
53
+ }
54
+ });
55
+ console.log(chalk.gray("\nStart a workflow: stackmemory workflow --start <name>"));
56
+ }
57
+ async function startWorkflow(workflowName, dbPath) {
58
+ const template = workflowTemplates[workflowName];
59
+ if (!template) {
60
+ console.error(chalk.red(`Unknown workflow: ${workflowName}`));
61
+ console.log(chalk.yellow("Use --list to see available workflows"));
62
+ if (process.env.NODE_ENV !== "test") {
63
+ process.exit(1);
64
+ }
65
+ return;
66
+ }
67
+ const db = new Database(dbPath);
68
+ try {
69
+ await sessionManager.initialize();
70
+ const session = await sessionManager.getOrCreateSession({
71
+ projectPath: process.cwd()
72
+ });
73
+ const frameManager = new FrameManager(db, session.projectId);
74
+ const workflowId = await frameManager.createFrame({
75
+ type: "workflow",
76
+ name: `${template.name} Workflow`,
77
+ metadata: {
78
+ workflow: workflowName,
79
+ phases: template.phases.map((p) => p.name),
80
+ currentPhase: 0,
81
+ startTime: Date.now()
82
+ }
83
+ });
84
+ console.log(chalk.green(`\u2713 Started ${workflowName} workflow`));
85
+ console.log(chalk.cyan(`Workflow ID: ${workflowId}`));
86
+ console.log("\nPhases:");
87
+ template.phases.forEach((phase, index) => {
88
+ const marker = index === 0 ? "\u2192" : " ";
89
+ console.log(`${marker} ${index + 1}. ${phase.name}`);
90
+ });
91
+ console.log(chalk.gray("\nTrack progress: stackmemory workflow --status"));
92
+ } finally {
93
+ db.close();
94
+ }
95
+ }
96
+ async function showWorkflowStatus(dbPath) {
97
+ const db = new Database(dbPath);
98
+ try {
99
+ const workflows = db.prepare(`
100
+ SELECT * FROM frames
101
+ WHERE type = 'workflow'
102
+ AND state = 'active'
103
+ ORDER BY created_at DESC
104
+ `).all();
105
+ if (workflows.length === 0) {
106
+ console.log(chalk.yellow("No active workflows"));
107
+ return;
108
+ }
109
+ console.log(chalk.bold("\n\u{1F504} Active Workflows"));
110
+ console.log("\u2500".repeat(40));
111
+ workflows.forEach((workflow) => {
112
+ const metadata = workflow.metadata ? JSON.parse(workflow.metadata) : {};
113
+ const elapsed = Date.now() - workflow.created_at;
114
+ const minutes = Math.floor(elapsed / 6e4);
115
+ console.log(chalk.cyan(`
116
+ ${workflow.name}`));
117
+ console.log(` ID: ${workflow.frame_id}`);
118
+ console.log(` Duration: ${minutes} minutes`);
119
+ if (metadata.phases) {
120
+ const current = metadata.currentPhase || 0;
121
+ console.log(` Phase: ${current + 1}/${metadata.phases.length}`);
122
+ console.log(` Current: ${metadata.phases[current]}`);
123
+ }
124
+ });
125
+ } finally {
126
+ db.close();
127
+ }
128
+ }
129
+ var workflow_default = createWorkflowCommand;
130
+ export {
131
+ createWorkflowCommand,
132
+ workflow_default as default
133
+ };
134
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cli/commands/workflow.ts"],
4
+ "sourcesContent": ["/**\n * Workflow command for StackMemory\n * Manages workflow templates and execution\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport * as path from 'path';\nimport Database from 'better-sqlite3';\nimport { existsSync } from 'fs';\nimport { FrameManager } from '../../core/context/frame-manager.js';\nimport { workflowTemplates } from '../../core/frame/workflow-templates-stub.js';\nimport { sessionManager } from '../../core/session/session-manager.js';\n\nexport function createWorkflowCommand(): Command {\n const cmd = new Command('workflow')\n .description('Manage structured workflow templates')\n .option('-l, --list', 'List available workflow templates')\n .option('-s, --start <template>', 'Start a new workflow from template')\n .option('--status', 'Show status of active workflow')\n .action(async (options) => {\n try {\n const projectRoot = process.cwd();\n const dbPath = path.join(projectRoot, '.stackmemory', 'context.db');\n \n // Check if StackMemory is initialized\n if (!existsSync(dbPath)) {\n console.error(chalk.red('\u2717 StackMemory not initialized'));\n console.log(chalk.yellow('Run: stackmemory init'));\n if (process.env.NODE_ENV !== 'test') {\n process.exit(1);\n }\n return;\n }\n \n if (options.list) {\n await listWorkflows();\n } else if (options.start) {\n await startWorkflow(options.start, dbPath);\n } else if (options.status) {\n await showWorkflowStatus(dbPath);\n } else {\n // Default: list workflows\n await listWorkflows();\n }\n } catch (error) {\n console.error(chalk.red('Error: ' + (error as Error).message));\n if (process.env.NODE_ENV !== 'test') {\n process.exit(1);\n }\n }\n });\n \n return cmd;\n}\n\nasync function listWorkflows(): Promise<void> {\n console.log(chalk.bold('\\n\uD83D\uDCCB Available Workflows'));\n console.log('\u2500'.repeat(40));\n \n Object.entries(workflowTemplates).forEach(([key, template]) => {\n console.log(chalk.cyan(`\\n${key}:`));\n console.log(` ${template.description}`);\n console.log(chalk.gray(` Phases: ${template.phases.length}`));\n \n // Show first few phases\n template.phases.slice(0, 3).forEach((phase) => {\n console.log(` \u2022 ${phase.name}`);\n });\n if (template.phases.length > 3) {\n console.log(` ... and ${template.phases.length - 3} more`);\n }\n });\n \n console.log(chalk.gray('\\nStart a workflow: stackmemory workflow --start <name>'));\n}\n\nasync function startWorkflow(workflowName: string, dbPath: string): Promise<void> {\n const template = workflowTemplates[workflowName as keyof typeof workflowTemplates];\n \n if (!template) {\n console.error(chalk.red(`Unknown workflow: ${workflowName}`));\n console.log(chalk.yellow('Use --list to see available workflows'));\n if (process.env.NODE_ENV !== 'test') {\n process.exit(1);\n }\n return;\n }\n \n const db = new Database(dbPath);\n \n try {\n // Initialize session\n await sessionManager.initialize();\n const session = await sessionManager.getOrCreateSession({\n projectPath: process.cwd(),\n });\n \n const frameManager = new FrameManager(db, session.projectId);\n \n // Create root frame for workflow\n const workflowId = await frameManager.createFrame({\n type: 'workflow',\n name: `${template.name} Workflow`,\n metadata: {\n workflow: workflowName,\n phases: template.phases.map(p => p.name),\n currentPhase: 0,\n startTime: Date.now(),\n }\n });\n \n console.log(chalk.green(`\u2713 Started ${workflowName} workflow`));\n console.log(chalk.cyan(`Workflow ID: ${workflowId}`));\n console.log('\\nPhases:');\n \n template.phases.forEach((phase, index) => {\n const marker = index === 0 ? '\u2192' : ' ';\n console.log(`${marker} ${index + 1}. ${phase.name}`);\n });\n \n console.log(chalk.gray('\\nTrack progress: stackmemory workflow --status'));\n } finally {\n db.close();\n }\n}\n\nasync function showWorkflowStatus(dbPath: string): Promise<void> {\n const db = new Database(dbPath);\n \n try {\n // Get active workflow frames\n const workflows = db.prepare(`\n SELECT * FROM frames \n WHERE type = 'workflow' \n AND state = 'active'\n ORDER BY created_at DESC\n `).all() as any[];\n \n if (workflows.length === 0) {\n console.log(chalk.yellow('No active workflows'));\n return;\n }\n \n console.log(chalk.bold('\\n\uD83D\uDD04 Active Workflows'));\n console.log('\u2500'.repeat(40));\n \n workflows.forEach((workflow) => {\n const metadata = workflow.metadata ? JSON.parse(workflow.metadata) : {};\n const elapsed = Date.now() - workflow.created_at;\n const minutes = Math.floor(elapsed / 60000);\n \n console.log(chalk.cyan(`\\n${workflow.name}`));\n console.log(` ID: ${workflow.frame_id}`);\n console.log(` Duration: ${minutes} minutes`);\n \n if (metadata.phases) {\n const current = metadata.currentPhase || 0;\n console.log(` Phase: ${current + 1}/${metadata.phases.length}`);\n console.log(` Current: ${metadata.phases[current]}`);\n }\n });\n } finally {\n db.close();\n }\n}\n\nexport default createWorkflowCommand;"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }