@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,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/tui/services/data-service.ts"],
4
+ "sourcesContent": ["/**\n * Data Service\n * Manages data fetching and caching for TUI dashboard\n */\n\nimport { EventEmitter } from 'events';\nimport Database from 'better-sqlite3';\nimport { SessionManager } from '../../../core/session/session-manager.js';\nimport { FrameManager } from '../../../core/context/frame-manager.js';\nimport { PebblesTaskStore } from '../../tasks/pebbles-task-store.js';\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport type {\n SessionData,\n LinearTask,\n FrameData,\n SubagentData,\n PRData,\n IssueData,\n AnalyticsData,\n} from '../types.js';\n\nexport class DataService extends EventEmitter {\n private db: Database.Database | null = null;\n private sessionManager: SessionManager | null = null;\n private frameManager: FrameManager | null = null;\n private taskStore: PebblesTaskStore | null = null;\n private linearMappings: Map<string, any> = new Map();\n private cache: Map<string, { data: any; timestamp: number }> = new Map();\n private cacheTimeout = 5000; // 5 seconds\n\n async initialize(): Promise<void> {\n try {\n // Initialize database with error handling\n try {\n const dbPath = process.env.PROJECT_ROOT\n ? `${process.env.PROJECT_ROOT}/.stackmemory/context.db`\n : `${process.cwd()}/.stackmemory/context.db`;\n\n if (existsSync(dbPath)) {\n this.db = new Database(dbPath);\n }\n } catch (dbError) {\n if (process.env.DEBUG) {\n console.log('Database not accessible, continuing without it');\n }\n }\n\n // Initialize task store for local synced tasks\n try {\n this.taskStore = new PebblesTaskStore();\n\n // Load Linear mappings if they exist\n const mappingsPath = join(\n process.env.PROJECT_ROOT || process.cwd(),\n '.stackmemory',\n 'linear-mappings.json'\n );\n if (existsSync(mappingsPath)) {\n const mappingsData = JSON.parse(readFileSync(mappingsPath, 'utf8'));\n mappingsData.forEach((mapping: any) => {\n this.linearMappings.set(mapping.stackmemoryId, mapping);\n });\n }\n } catch (tsError) {\n if (process.env.DEBUG) {\n console.log('Task store initialization failed:', tsError.message);\n }\n }\n\n // Initialize managers with error handling\n try {\n this.sessionManager = new SessionManager({\n enableMonitoring: true,\n });\n } catch (smError) {\n if (process.env.DEBUG) {\n console.log('SessionManager initialization failed:', smError.message);\n }\n // Continue without session manager\n }\n\n if (this.db) {\n try {\n this.frameManager = new FrameManager(this.db, 'tui');\n } catch (fmError) {\n if (process.env.DEBUG) {\n console.log('FrameManager initialization failed:', fmError.message);\n }\n // Continue without frame manager\n }\n }\n\n // Note: Linear clients removed - all syncing happens via webhook or scheduled scripts\n // The TUI only displays locally synced tasks from the task store\n if (process.env.DEBUG) {\n console.log(\n 'TUI: Using local task store only (no direct Linear API calls)'\n );\n }\n\n this.emit('data:ready');\n } catch (error) {\n if (process.env.DEBUG) {\n console.error('DataService initialization error:', error);\n }\n // Don't throw, just emit ready with mock data\n this.emit('data:ready');\n }\n }\n\n async getSessions(): Promise<SessionData[]> {\n const cached = this.getFromCache('sessions');\n if (cached) return cached;\n\n try {\n // Get active sessions from manager\n const activeSessions = this.sessionManager?.getActiveSessions() || [];\n\n // Try to get recent sessions from database\n let recentSessions = [];\n if (this.db) {\n try {\n const stmt = this.db.prepare(`\n SELECT * FROM sessions \n WHERE created_at > datetime('now', '-24 hours')\n ORDER BY created_at DESC\n LIMIT 20\n `);\n recentSessions = stmt.all() || [];\n } catch (dbError) {\n // Database table might not exist, continue with mock data\n if (process.env.DEBUG) {\n console.log('Sessions table not found, using mock data');\n }\n }\n }\n\n // If no real data, provide mock sessions for demo\n if (activeSessions.length === 0 && recentSessions.length === 0) {\n const mockSessions = this.getMockSessions();\n this.setCache('sessions', mockSessions);\n return mockSessions;\n }\n\n // Combine and format\n const sessions: SessionData[] = [\n ...activeSessions.map(this.formatSession),\n ...recentSessions.map(this.formatDatabaseSession),\n ];\n\n this.setCache('sessions', sessions);\n return sessions;\n } catch (error) {\n if (process.env.DEBUG) {\n console.error('Error getting sessions:', error);\n }\n return this.getMockSessions();\n }\n }\n\n async getTasks(): Promise<LinearTask[]> {\n const cached = this.getFromCache('tasks');\n if (cached) return cached;\n\n const tasks: LinearTask[] = [];\n\n // ONLY use locally synced tasks - no direct Linear API calls\n // Tasks should be synced via webhook or scheduled sync scripts\n if (this.taskStore) {\n try {\n const localTasks = this.taskStore.getActiveTasks();\n\n // Convert local tasks to TUI display format\n localTasks.forEach((localTask) => {\n const mapping = this.linearMappings.get(localTask.id);\n\n // Extract identifier from title (e.g., \"[ENG-123] Task title\")\n const identifierMatch = localTask.title.match(/\\[(\\w+-\\d+)\\]/);\n const identifier = identifierMatch\n ? identifierMatch[1]\n : mapping?.linearIdentifier || 'LOCAL-' + localTask.id.slice(-6);\n\n // Format local task for TUI display\n const linearTask: LinearTask = {\n id: mapping?.linearId || localTask.id,\n identifier: identifier,\n title: localTask.title.replace(/\\[\\w+-\\d+\\]\\s*/, ''), // Remove identifier from title\n description: localTask.description,\n state: this.mapLocalStatusToLinearState(localTask.status),\n priority: this.mapLocalPriorityToLinear(localTask.priority),\n estimate: localTask.estimated_effort\n ? Math.ceil(localTask.estimated_effort / 60)\n : undefined,\n assignee: localTask.assignee,\n createdAt: new Date(localTask.created_at * 1000).toISOString(),\n updatedAt: new Date(localTask.timestamp * 1000).toISOString(),\n // Add sync metadata\n lastSyncedAt: mapping?.lastSyncTimestamp\n ? new Date(mapping.lastSyncTimestamp).toISOString()\n : undefined,\n syncStatus: mapping ? 'synced' : 'local',\n };\n\n tasks.push(linearTask);\n });\n\n if (process.env.DEBUG) {\n console.log(\n `Loaded ${tasks.length} tasks from local store (no Linear API calls)`\n );\n }\n } catch (error) {\n if (process.env.DEBUG) {\n console.log('Failed to get local tasks:', error.message);\n }\n }\n }\n\n // If no local tasks, show helpful message instead of mock data\n if (tasks.length === 0) {\n console.log(\n '\u2139\uFE0F No local tasks found. Run \"npm run linear:sync\" to sync tasks from Linear.'\n );\n const mockTasks = this.getMockTasks();\n this.setCache('tasks', mockTasks);\n return mockTasks;\n }\n\n this.setCache('tasks', tasks);\n return tasks;\n }\n\n async getFrames(): Promise<FrameData[]> {\n const cached = this.getFromCache('frames');\n if (cached) return cached;\n\n try {\n const frames = this.frameManager?.getAllFrames() || [];\n\n // If no frames, return mock data\n if (frames.length === 0) {\n const mockFrames = this.getMockFrames();\n this.setCache('frames', mockFrames);\n return mockFrames;\n }\n\n const formatted = frames.map(this.formatFrame);\n this.setCache('frames', formatted);\n return formatted;\n } catch (error) {\n if (process.env.DEBUG) {\n console.error('Error getting frames:', error);\n }\n // Return mock frames on error\n const mockFrames = this.getMockFrames();\n this.setCache('frames', mockFrames);\n return mockFrames;\n }\n }\n\n async getAgents(): Promise<SubagentData[]> {\n const cached = this.getFromCache('agents');\n if (cached) return cached;\n\n try {\n // Mock data for now - would integrate with actual agent manager\n const agents: SubagentData[] = [\n {\n id: 'agent-1',\n type: 'analyzer',\n status: 'active',\n currentTask: {\n id: 'task-1',\n description: 'Analyzing codebase for performance issues',\n progress: 0.65,\n startTime: Date.now() - 120000,\n },\n tasksCompleted: 42,\n tasksFailed: 3,\n averageTime: 180000,\n successRate: 0.93,\n cpuUsage: 45,\n memoryUsage: 62,\n tokenUsage: 125000,\n },\n {\n id: 'agent-2',\n type: 'builder',\n status: 'idle',\n tasksCompleted: 28,\n tasksFailed: 1,\n averageTime: 240000,\n successRate: 0.96,\n cpuUsage: 12,\n memoryUsage: 38,\n tokenUsage: 85000,\n },\n {\n id: 'agent-3',\n type: 'tester',\n status: 'error',\n tasksCompleted: 15,\n tasksFailed: 5,\n averageTime: 90000,\n successRate: 0.75,\n lastError: {\n message: 'Test suite timeout',\n timestamp: Date.now() - 60000,\n recoverable: true,\n },\n cpuUsage: 0,\n memoryUsage: 25,\n tokenUsage: 45000,\n },\n ];\n\n this.setCache('agents', agents);\n return agents;\n } catch (error) {\n this.emit('error', error);\n return [];\n }\n }\n\n async getPRs(): Promise<PRData[]> {\n const cached = this.getFromCache('prs');\n if (cached) return cached;\n\n try {\n // Mock data - would integrate with GitHub API\n const prs: PRData[] = [\n {\n id: 'pr-1',\n number: 142,\n title: 'feat: Add TUI monitoring dashboard',\n state: 'open',\n draft: false,\n author: { login: 'stackmemory-bot' },\n reviews: [{ user: 'reviewer1', state: 'approved' }],\n checks: {\n total: 5,\n passed: 3,\n failed: 0,\n pending: 2,\n },\n createdAt: new Date(Date.now() - 3600000).toISOString(),\n updatedAt: new Date().toISOString(),\n additions: 1250,\n deletions: 85,\n changedFiles: 12,\n comments: 3,\n labels: ['enhancement', 'monitoring'],\n linearTask: 'STA-100',\n },\n ];\n\n this.setCache('prs', prs);\n return prs;\n } catch (error) {\n this.emit('error', error);\n return [];\n }\n }\n\n async getIssues(): Promise<IssueData[]> {\n const cached = this.getFromCache('issues');\n if (cached) return cached;\n\n try {\n // Mock data - would integrate with GitHub API\n const issues: IssueData[] = [\n {\n id: 'issue-1',\n number: 89,\n title: 'Session monitoring improvements needed',\n state: 'open',\n author: { login: 'user1' },\n assignees: ['stackmemory-bot'],\n labels: ['enhancement', 'monitoring'],\n createdAt: new Date(Date.now() - 86400000).toISOString(),\n updatedAt: new Date().toISOString(),\n comments: 5,\n },\n ];\n\n this.setCache('issues', issues);\n return issues;\n } catch (error) {\n this.emit('error', error);\n return [];\n }\n }\n\n async getAnalytics(): Promise<AnalyticsData> {\n const cached = this.getFromCache('analytics');\n if (cached) return cached;\n\n try {\n // Generate analytics data\n const analytics: AnalyticsData = {\n sessions: {\n labels: ['1h', '2h', '3h', '4h', '5h', '6h'],\n values: [5, 8, 12, 15, 18, 22],\n },\n tokens: {\n labels: ['1h', '2h', '3h', '4h', '5h', '6h'],\n values: [12000, 25000, 45000, 62000, 78000, 95000],\n },\n tasks: {\n completed: 45,\n inProgress: 12,\n todo: 28,\n velocity: [8, 12, 15, 18, 20],\n },\n quality: {\n testsPassed: 142,\n testsFailed: 3,\n coverage: 78,\n lintErrors: 0,\n },\n performance: {\n avgResponseTime: [120, 115, 108, 105, 110],\n errorRate: [0.02, 0.015, 0.01, 0.008, 0.005],\n throughput: [100, 120, 135, 140, 145],\n },\n };\n\n this.setCache('analytics', analytics);\n return analytics;\n } catch (error) {\n this.emit('error', error);\n return {\n sessions: { labels: [], values: [] },\n tokens: { labels: [], values: [] },\n tasks: { completed: 0, inProgress: 0, todo: 0, velocity: [] },\n quality: { testsPassed: 0, testsFailed: 0, coverage: 0, lintErrors: 0 },\n performance: { avgResponseTime: [], errorRate: [], throughput: [] },\n };\n }\n }\n\n private formatSession(session: any): SessionData {\n return {\n id: session.id,\n startTime: session.startTime,\n lastActivity: session.lastActivity,\n completed: session.completed,\n error: session.error,\n totalTokens: session.totalTokens,\n contextUsage: session.contextUsage || 0,\n filesEdited: session.filesEdited,\n commandsRun: session.commandsRun,\n errors: session.errors,\n primaryFile: session.primaryFile,\n gitBranch: session.gitBranch,\n lastCommit: session.lastCommit,\n linearTask: session.linearTask,\n agentType: session.agentType,\n recentActivities: session.recentActivities,\n };\n }\n\n private formatDatabaseSession(row: any): SessionData {\n return {\n id: row.id,\n startTime: new Date(row.created_at).getTime(),\n lastActivity: row.updated_at\n ? new Date(row.updated_at).getTime()\n : undefined,\n completed: row.status === 'completed',\n totalTokens: row.token_count,\n contextUsage: row.context_usage || 0,\n filesEdited: row.files_edited ? JSON.parse(row.files_edited) : [],\n commandsRun: row.commands_run || 0,\n };\n }\n\n private formatLinearTask(task: any): LinearTask {\n return {\n id: task.id,\n identifier: task.identifier,\n title: task.title,\n description: task.description,\n // Use Linear state.type for stable mapping ('unstarted'|'started'|...)\n state: task.state?.type || task.state?.name,\n priority: task.priority,\n estimate: task.estimate,\n dueDate: task.dueDate,\n assignee: task.assignee\n ? {\n id: task.assignee.id,\n name: task.assignee.name,\n email: task.assignee.email,\n }\n : undefined,\n labels: task.labels?.nodes.map((l: any) => l.name),\n project: task.project\n ? {\n id: task.project.id,\n name: task.project.name,\n key: task.project.key,\n }\n : undefined,\n };\n }\n\n private formatRestLinearTask(task: any): LinearTask {\n // Map Linear state.type to TUI display states\n const stateMap: Record<string, string> = {\n backlog: 'Backlog',\n unstarted: 'To Do',\n started: 'In Progress',\n completed: 'Done',\n canceled: 'Canceled',\n };\n\n return {\n id: task.id,\n identifier: task.identifier,\n title: task.title,\n description: task.description,\n state: stateMap[task.state.type] || task.state.name,\n priority: task.priority,\n estimate: task.estimate,\n assignee: task.assignee ? task.assignee.name : undefined,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n };\n }\n\n private formatFrame(frame: any): FrameData {\n return {\n id: frame.id,\n sessionId: frame.sessionId,\n parentId: frame.parentId,\n type: frame.type || 'leaf',\n inputs: frame.inputs,\n outputs: frame.outputs,\n tools: frame.tools,\n digest: frame.digest,\n timestamp: frame.timestamp,\n tokenCount: frame.tokenCount || 0,\n tier: frame.tier || 'hot',\n compressionRatio: frame.compressionRatio,\n score: frame.score,\n children: frame.children,\n references: frame.references,\n };\n }\n\n private getFromCache(key: string): any {\n const cached = this.cache.get(key);\n if (cached && Date.now() - cached.timestamp < this.cacheTimeout) {\n return cached.data;\n }\n return null;\n }\n\n private setCache(key: string, data: any): void {\n this.cache.set(key, { data, timestamp: Date.now() });\n }\n\n private mapLocalStatusToLinearState(status: string): string {\n const statusMap: Record<string, string> = {\n pending: 'To Do',\n in_progress: 'In Progress',\n completed: 'Done',\n cancelled: 'Canceled',\n blocked: 'To Do',\n };\n return statusMap[status] || 'To Do';\n }\n\n private mapLocalPriorityToLinear(priority: string): number {\n const priorityMap: Record<string, number> = {\n urgent: 0,\n high: 1,\n medium: 2,\n low: 3,\n };\n return priorityMap[priority] || 2;\n }\n\n cleanup(): void {\n if (this.db) {\n this.db.close();\n }\n this.cache.clear();\n }\n\n // Mock data methods for demo/offline mode\n private getMockSessions(): SessionData[] {\n const now = Date.now();\n return [\n {\n id: 'demo-session-1',\n startTime: now - 8100000, // 2h 15m ago\n lastActivity: now - 60000, // 1 minute ago\n completed: false,\n totalTokens: 45000,\n contextUsage: 0.45, // 45%\n filesEdited: ['src/components/Dashboard.tsx', 'src/hooks/useAuth.ts'],\n commandsRun: 23,\n primaryFile: 'src/components/Dashboard.tsx',\n gitBranch: 'feature/tui-dashboard',\n agentType: 'frontend',\n recentActivities: [\n {\n timestamp: now - 120000,\n type: 'file_edit' as const,\n description: 'Modified Dashboard.tsx',\n },\n {\n timestamp: now - 60000,\n type: 'command' as const,\n description: 'npm run test',\n },\n ],\n },\n {\n id: 'demo-session-2',\n startTime: now - 2700000, // 45m ago\n lastActivity: now - 300000, // 5 minutes ago\n completed: false,\n totalTokens: 22000,\n contextUsage: 0.22, // 22%\n filesEdited: ['src/api/endpoints.ts', 'src/middleware/auth.ts'],\n commandsRun: 15,\n primaryFile: 'src/api/endpoints.ts',\n gitBranch: 'main',\n agentType: 'backend',\n recentActivities: [\n {\n timestamp: now - 600000,\n type: 'file_edit' as const,\n description: 'Updated API endpoints',\n },\n ],\n },\n ];\n }\n\n private getMockFrames(): FrameData[] {\n return [\n {\n id: 'frame-1',\n sessionId: 'demo-session-1',\n type: 'root',\n tier: 'hot' as const,\n timestamp: new Date().toISOString(),\n tokenCount: 2500,\n score: 95,\n compressionRatio: 2.3,\n digest: 'Implementing React component with hooks',\n tools: ['Edit', 'Read', 'MultiEdit'],\n inputs: ['Create user dashboard'],\n outputs: ['Dashboard component created'],\n children: [],\n references: [],\n },\n {\n id: 'frame-2',\n sessionId: 'demo-session-1',\n type: 'branch',\n tier: 'warm' as const,\n timestamp: new Date(Date.now() - 3600000).toISOString(),\n tokenCount: 1800,\n score: 78,\n compressionRatio: 1.8,\n digest: 'Setting up API endpoints',\n tools: ['Write', 'Edit'],\n inputs: ['Setup REST API'],\n outputs: ['API routes configured'],\n children: [],\n references: [],\n },\n ];\n }\n\n private getMockTasks(): LinearTask[] {\n return [\n {\n id: 'task-1',\n identifier: 'STA-101',\n title: 'Implement TUI dashboard',\n state: 'In Progress',\n priority: 2,\n assignee: 'demo-user',\n createdAt: new Date(Date.now() - 86400000).toISOString(),\n updatedAt: new Date().toISOString(),\n },\n {\n id: 'task-2',\n identifier: 'STA-102',\n title: 'Add terminal compatibility',\n state: 'Done',\n priority: 1,\n assignee: 'demo-user',\n createdAt: new Date(Date.now() - 172800000).toISOString(),\n updatedAt: new Date().toISOString(),\n },\n ];\n }\n\n private getMockAgents(): SubagentData[] {\n return [\n {\n id: 'agent-1',\n name: 'code-reviewer',\n type: 'reviewer',\n status: 'idle',\n tasksCompleted: 45,\n averageTime: '2.3s',\n successRate: 98.5,\n lastActive: new Date().toISOString(),\n },\n {\n id: 'agent-2',\n name: 'test-runner',\n type: 'qa',\n status: 'active',\n tasksCompleted: 156,\n averageTime: '5.6s',\n successRate: 95.2,\n lastActive: new Date().toISOString(),\n },\n ];\n }\n\n private getMockPRs(): PRData[] {\n return [\n {\n id: 'pr-1',\n number: 123,\n title: 'feat: Add terminal compatibility layer',\n state: 'open',\n author: { login: 'demo-user' },\n assignees: [],\n labels: ['enhancement', 'tui'],\n createdAt: new Date(Date.now() - 86400000).toISOString(),\n updatedAt: new Date().toISOString(),\n comments: 3,\n reviews: 1,\n checks: {\n total: 5,\n passed: 5,\n failed: 0,\n pending: 0,\n },\n },\n ];\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,149 @@
1
+ import { EventEmitter } from "events";
2
+ import WebSocket from "ws";
3
+ class WebSocketClient extends EventEmitter {
4
+ ws = null;
5
+ url;
6
+ reconnectTimer = null;
7
+ reconnectAttempts = 0;
8
+ maxReconnectAttempts = 10;
9
+ reconnectDelay = 1e3;
10
+ constructor(url) {
11
+ super();
12
+ this.url = url;
13
+ }
14
+ async connect() {
15
+ return new Promise((resolve) => {
16
+ try {
17
+ const handleError = (error) => {
18
+ clearTimeout(connectionTimeout);
19
+ if (process.env.DEBUG) {
20
+ console.log("WebSocket connection failed:", error.message);
21
+ }
22
+ if (this.ws) {
23
+ this.ws.removeAllListeners();
24
+ this.ws.terminate();
25
+ this.ws = null;
26
+ }
27
+ resolve();
28
+ };
29
+ const connectionTimeout = setTimeout(() => {
30
+ if (this.ws) {
31
+ this.ws.removeAllListeners();
32
+ this.ws.terminate();
33
+ this.ws = null;
34
+ }
35
+ console.log("\u26A0\uFE0F Running in offline mode (no WebSocket server)");
36
+ this.emit("offline");
37
+ resolve();
38
+ }, 1e3);
39
+ try {
40
+ this.ws = new WebSocket(this.url);
41
+ } catch (wsError) {
42
+ handleError(wsError);
43
+ return;
44
+ }
45
+ this.ws.once("error", handleError);
46
+ this.ws.once("open", () => {
47
+ clearTimeout(connectionTimeout);
48
+ this.ws?.removeListener("error", handleError);
49
+ this.ws?.on("error", (error) => {
50
+ if (process.env.DEBUG) {
51
+ console.error("WebSocket error during operation:", error);
52
+ }
53
+ this.emit("error", error);
54
+ });
55
+ console.log("\u2705 WebSocket connected");
56
+ this.reconnectAttempts = 0;
57
+ this.emit("connected");
58
+ resolve();
59
+ });
60
+ this.ws.on("message", (data) => {
61
+ this.handleMessage(data);
62
+ });
63
+ this.ws.once("close", () => {
64
+ clearTimeout(connectionTimeout);
65
+ if (this.reconnectAttempts > 0) {
66
+ console.log("WebSocket disconnected");
67
+ this.emit("disconnected");
68
+ this.attemptReconnect();
69
+ }
70
+ resolve();
71
+ });
72
+ } catch (error) {
73
+ console.log("\u26A0\uFE0F Running in offline mode");
74
+ this.emit("offline");
75
+ resolve();
76
+ }
77
+ });
78
+ }
79
+ handleMessage(data) {
80
+ try {
81
+ const message = JSON.parse(data.toString());
82
+ switch (message.type) {
83
+ case "session:update":
84
+ this.emit("session:update", message.data);
85
+ break;
86
+ case "task:update":
87
+ this.emit("task:update", message.data);
88
+ break;
89
+ case "frame:update":
90
+ this.emit("frame:update", message.data);
91
+ break;
92
+ case "agent:status":
93
+ this.emit("agent:status", message.data);
94
+ break;
95
+ case "pr:update":
96
+ this.emit("pr:update", message.data);
97
+ break;
98
+ case "analytics:update":
99
+ this.emit("analytics:update", message.data);
100
+ break;
101
+ case "notification":
102
+ this.emit("notification", message.data);
103
+ break;
104
+ default:
105
+ this.emit("message", message);
106
+ }
107
+ } catch (error) {
108
+ console.error("Failed to parse WebSocket message:", error);
109
+ }
110
+ }
111
+ attemptReconnect() {
112
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
113
+ this.emit("error", new Error("Max reconnection attempts reached"));
114
+ return;
115
+ }
116
+ this.reconnectAttempts++;
117
+ const delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
118
+ console.log(`Attempting to reconnect in ${delay}ms (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts})`);
119
+ this.reconnectTimer = setTimeout(() => {
120
+ this.connect().catch((error) => {
121
+ console.error("Reconnection failed:", error);
122
+ });
123
+ }, delay);
124
+ }
125
+ send(type, data) {
126
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
127
+ this.ws.send(JSON.stringify({ type, data }));
128
+ } else {
129
+ console.warn("WebSocket is not connected");
130
+ }
131
+ }
132
+ disconnect() {
133
+ if (this.reconnectTimer) {
134
+ clearTimeout(this.reconnectTimer);
135
+ this.reconnectTimer = null;
136
+ }
137
+ if (this.ws) {
138
+ this.ws.close();
139
+ this.ws = null;
140
+ }
141
+ }
142
+ isConnected() {
143
+ return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
144
+ }
145
+ }
146
+ export {
147
+ WebSocketClient
148
+ };
149
+ //# sourceMappingURL=websocket-client.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/tui/services/websocket-client.ts"],
4
+ "sourcesContent": ["/**\n * WebSocket Client\n * Real-time data streaming for TUI dashboard\n */\n\nimport { EventEmitter } from 'events';\nimport WebSocket from 'ws';\n\nexport class WebSocketClient extends EventEmitter {\n private ws: WebSocket | null = null;\n private url: string;\n private reconnectTimer: NodeJS.Timeout | null = null;\n private reconnectAttempts = 0;\n private maxReconnectAttempts = 10;\n private reconnectDelay = 1000;\n\n constructor(url: string) {\n super();\n this.url = url;\n }\n\n async connect(): Promise<void> {\n return new Promise((resolve) => {\n try {\n // Add error handler before creating WebSocket to catch connection errors\n const handleError = (error: Error) => {\n clearTimeout(connectionTimeout);\n // Silent error handling - continue in offline mode\n if (process.env.DEBUG) {\n console.log('WebSocket connection failed:', error.message);\n }\n if (this.ws) {\n this.ws.removeAllListeners();\n this.ws.terminate();\n this.ws = null;\n }\n resolve(); // Always resolve to continue in offline mode\n };\n\n // Set a timeout for connection\n const connectionTimeout = setTimeout(() => {\n if (this.ws) {\n this.ws.removeAllListeners();\n this.ws.terminate();\n this.ws = null;\n }\n console.log('\u26A0\uFE0F Running in offline mode (no WebSocket server)');\n this.emit('offline');\n resolve();\n }, 1000); // Reduce timeout to 1 second\n\n try {\n this.ws = new WebSocket(this.url);\n } catch (wsError) {\n handleError(wsError as Error);\n return;\n }\n\n // Immediately add error handler to catch connection errors\n this.ws.once('error', handleError);\n\n this.ws.once('open', () => {\n clearTimeout(connectionTimeout);\n // Remove the error handler and add a new one for ongoing errors\n this.ws?.removeListener('error', handleError);\n this.ws?.on('error', (error: Error) => {\n if (process.env.DEBUG) {\n console.error('WebSocket error during operation:', error);\n }\n this.emit('error', error);\n });\n \n console.log('\u2705 WebSocket connected');\n this.reconnectAttempts = 0;\n this.emit('connected');\n resolve();\n });\n\n this.ws.on('message', (data: WebSocket.Data) => {\n this.handleMessage(data);\n });\n\n this.ws.once('close', () => {\n clearTimeout(connectionTimeout);\n if (this.reconnectAttempts > 0) {\n console.log('WebSocket disconnected');\n this.emit('disconnected');\n this.attemptReconnect();\n }\n // If this is the first close, just resolve\n resolve();\n });\n\n } catch (error) {\n // If anything fails, continue in offline mode\n console.log('\u26A0\uFE0F Running in offline mode');\n this.emit('offline');\n resolve();\n }\n });\n }\n\n private handleMessage(data: WebSocket.Data): void {\n try {\n const message = JSON.parse(data.toString());\n \n switch (message.type) {\n case 'session:update':\n this.emit('session:update', message.data);\n break;\n \n case 'task:update':\n this.emit('task:update', message.data);\n break;\n \n case 'frame:update':\n this.emit('frame:update', message.data);\n break;\n \n case 'agent:status':\n this.emit('agent:status', message.data);\n break;\n \n case 'pr:update':\n this.emit('pr:update', message.data);\n break;\n \n case 'analytics:update':\n this.emit('analytics:update', message.data);\n break;\n \n case 'notification':\n this.emit('notification', message.data);\n break;\n \n default:\n this.emit('message', message);\n }\n } catch (error) {\n console.error('Failed to parse WebSocket message:', error);\n }\n }\n\n private attemptReconnect(): void {\n if (this.reconnectAttempts >= this.maxReconnectAttempts) {\n this.emit('error', new Error('Max reconnection attempts reached'));\n return;\n }\n\n this.reconnectAttempts++;\n const delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);\n\n console.log(`Attempting to reconnect in ${delay}ms (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts})`);\n\n this.reconnectTimer = setTimeout(() => {\n this.connect().catch(error => {\n console.error('Reconnection failed:', error);\n });\n }, delay);\n }\n\n send(type: string, data: any): void {\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n this.ws.send(JSON.stringify({ type, data }));\n } else {\n console.warn('WebSocket is not connected');\n }\n }\n\n disconnect(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n isConnected(): boolean {\n return this.ws !== null && this.ws.readyState === WebSocket.OPEN;\n }\n}"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,205 @@
1
+ class TerminalCompatibility {
2
+ static instance;
3
+ terminalInfo;
4
+ constructor() {
5
+ this.terminalInfo = this.detectTerminal();
6
+ }
7
+ static getInstance() {
8
+ if (!this.instance) {
9
+ this.instance = new TerminalCompatibility();
10
+ }
11
+ return this.instance;
12
+ }
13
+ detectTerminal() {
14
+ const termEnv = process.env.TERM || "";
15
+ const termProgram = process.env.TERM_PROGRAM || "";
16
+ const isInsideTmux = !!process.env.TMUX;
17
+ const isGhostty = termEnv.includes("ghostty") || termProgram === "ghostty";
18
+ const isIterm2 = termProgram === "iTerm.app";
19
+ const isTerminalApp = termProgram === "Apple_Terminal";
20
+ let type = "unknown";
21
+ if (isGhostty) {
22
+ type = "ghostty";
23
+ } else if (isInsideTmux) {
24
+ type = "tmux";
25
+ } else if (isIterm2) {
26
+ type = "iterm2";
27
+ } else if (isTerminalApp) {
28
+ type = "terminal";
29
+ } else if (termEnv.includes("xterm")) {
30
+ type = "xterm";
31
+ }
32
+ const supportsTrueColor = this.checkTrueColorSupport();
33
+ const supportsUnicode = this.checkUnicodeSupport();
34
+ const recommendedConfig = this.getRecommendedConfig(type, isInsideTmux);
35
+ return {
36
+ type,
37
+ isInsideTmux,
38
+ supportsTrueColor,
39
+ supportsUnicode,
40
+ termEnv,
41
+ recommendedConfig
42
+ };
43
+ }
44
+ checkTrueColorSupport() {
45
+ const colorterm = process.env.COLORTERM;
46
+ if (colorterm === "truecolor" || colorterm === "24bit") {
47
+ return true;
48
+ }
49
+ const termProgram = process.env.TERM_PROGRAM || "";
50
+ if (["iTerm.app", "Hyper", "vscode"].includes(termProgram)) {
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ checkUnicodeSupport() {
56
+ const lang = process.env.LANG || "";
57
+ const lcAll = process.env.LC_ALL || "";
58
+ const lcCtype = process.env.LC_CTYPE || "";
59
+ const hasUtf8 = [lang, lcAll, lcCtype].some(
60
+ (v) => v.toLowerCase().includes("utf-8") || v.toLowerCase().includes("utf8")
61
+ );
62
+ return hasUtf8;
63
+ }
64
+ getRecommendedConfig(type, isInsideTmux) {
65
+ const baseConfig = {
66
+ smartCSR: true,
67
+ fullUnicode: true,
68
+ forceUnicode: null,
69
+ dockBorders: true,
70
+ terminal: "xterm-256color",
71
+ title: "StackMemory TUI Dashboard",
72
+ warnings: false
73
+ };
74
+ switch (type) {
75
+ case "ghostty":
76
+ return {
77
+ ...baseConfig,
78
+ smartCSR: false,
79
+ // Disable smart cursor restore
80
+ terminal: "xterm",
81
+ // Use basic xterm instead of xterm-256color
82
+ dockBorders: false,
83
+ // Can cause rendering issues
84
+ artificalCursor: true,
85
+ // Use artificial cursor
86
+ grabKeys: false,
87
+ // Don't grab all keys
88
+ sendFocus: false
89
+ // Don't send focus events
90
+ };
91
+ case "tmux":
92
+ return {
93
+ ...baseConfig,
94
+ terminal: isInsideTmux ? "screen-256color" : "xterm-256color",
95
+ smartCSR: !isInsideTmux,
96
+ // Disable inside tmux
97
+ sendFocus: false
98
+ };
99
+ case "iterm2":
100
+ return {
101
+ ...baseConfig,
102
+ terminal: "xterm-256color",
103
+ fullUnicode: true,
104
+ forceUnicode: true
105
+ };
106
+ case "terminal":
107
+ return {
108
+ ...baseConfig,
109
+ terminal: "xterm-256color",
110
+ fullUnicode: true
111
+ };
112
+ case "xterm":
113
+ default:
114
+ return {
115
+ ...baseConfig,
116
+ smartCSR: false,
117
+ fullUnicode: false,
118
+ forceUnicode: false
119
+ };
120
+ }
121
+ }
122
+ getTerminalInfo() {
123
+ return this.terminalInfo;
124
+ }
125
+ getBlessedConfig() {
126
+ return this.terminalInfo.recommendedConfig;
127
+ }
128
+ /**
129
+ * Set optimal TERM environment variable for the detected terminal
130
+ */
131
+ configureEnvironment() {
132
+ const { type, isInsideTmux } = this.terminalInfo;
133
+ if (type === "ghostty") {
134
+ process.env.TERM = "xterm";
135
+ } else if (isInsideTmux) {
136
+ process.env.TERM = "screen-256color";
137
+ } else if (!process.env.TERM || process.env.TERM === "dumb") {
138
+ process.env.TERM = "xterm-256color";
139
+ }
140
+ process.env.NODE_NO_WARNINGS = "1";
141
+ }
142
+ /**
143
+ * Check if terminal is suitable for TUI
144
+ */
145
+ isCompatible() {
146
+ if (process.env.CI || process.env.CONTINUOUS_INTEGRATION) {
147
+ return false;
148
+ }
149
+ const term = process.env.TERM || "";
150
+ if (term === "dumb") {
151
+ return false;
152
+ }
153
+ if (process.env.FORCE_TUI) {
154
+ return true;
155
+ }
156
+ const hasAnyTTY = process.stdout.isTTY || process.stdin.isTTY || process.stderr.isTTY;
157
+ if (!hasAnyTTY) {
158
+ const { type } = this.terminalInfo;
159
+ if (type !== "unknown" || term.includes("xterm") || term.includes("screen")) {
160
+ return true;
161
+ }
162
+ return false;
163
+ }
164
+ return true;
165
+ }
166
+ /**
167
+ * Get compatibility warnings for the current terminal
168
+ */
169
+ getWarnings() {
170
+ const warnings = [];
171
+ const { type, supportsUnicode, supportsTrueColor } = this.terminalInfo;
172
+ if (type === "ghostty") {
173
+ warnings.push("Ghostty terminal detected: Using compatibility mode with reduced features");
174
+ }
175
+ if (!supportsUnicode) {
176
+ warnings.push("Unicode support not detected: Some icons may not display correctly");
177
+ }
178
+ if (!supportsTrueColor) {
179
+ warnings.push("True color support not detected: Using 256 color mode");
180
+ }
181
+ if (type === "unknown") {
182
+ warnings.push("Unknown terminal type: Using conservative settings");
183
+ }
184
+ return warnings;
185
+ }
186
+ /**
187
+ * Get terminal capabilities as a string for debugging
188
+ */
189
+ getCapabilitiesString() {
190
+ const { type, isInsideTmux, supportsTrueColor, supportsUnicode, termEnv } = this.terminalInfo;
191
+ return [
192
+ `Terminal Type: ${type}`,
193
+ `TERM: ${termEnv}`,
194
+ `Inside tmux: ${isInsideTmux}`,
195
+ `True Color: ${supportsTrueColor}`,
196
+ `Unicode: ${supportsUnicode}`
197
+ ].join(" | ");
198
+ }
199
+ }
200
+ const terminalCompat = TerminalCompatibility.getInstance();
201
+ export {
202
+ TerminalCompatibility,
203
+ terminalCompat
204
+ };
205
+ //# sourceMappingURL=terminal-compat.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/features/tui/terminal-compat.ts"],
4
+ "sourcesContent": ["/**\n * Terminal Compatibility Layer\n * Handles different terminal environments (Ghostty, tmux, standard terminals)\n */\n\nimport os from 'os';\nimport { execSync } from 'child_process';\n\nexport interface TerminalInfo {\n type: 'ghostty' | 'tmux' | 'iterm2' | 'terminal' | 'xterm' | 'unknown';\n isInsideTmux: boolean;\n supportsTrueColor: boolean;\n supportsUnicode: boolean;\n termEnv: string;\n recommendedConfig: BlessedConfig;\n}\n\nexport interface BlessedConfig {\n smartCSR: boolean;\n fullUnicode: boolean;\n forceUnicode: boolean | null;\n dockBorders: boolean;\n terminal: string;\n title: string;\n // Compatibility flags\n artificalCursor?: boolean;\n grabKeys?: boolean;\n sendFocus?: boolean;\n warnings?: boolean;\n}\n\nexport class TerminalCompatibility {\n private static instance: TerminalCompatibility;\n private terminalInfo: TerminalInfo;\n\n private constructor() {\n this.terminalInfo = this.detectTerminal();\n }\n\n static getInstance(): TerminalCompatibility {\n if (!this.instance) {\n this.instance = new TerminalCompatibility();\n }\n return this.instance;\n }\n\n private detectTerminal(): TerminalInfo {\n const termEnv = process.env.TERM || '';\n const termProgram = process.env.TERM_PROGRAM || '';\n const isInsideTmux = !!process.env.TMUX;\n const isGhostty = termEnv.includes('ghostty') || termProgram === 'ghostty';\n const isIterm2 = termProgram === 'iTerm.app';\n const isTerminalApp = termProgram === 'Apple_Terminal';\n \n let type: TerminalInfo['type'] = 'unknown';\n \n if (isGhostty) {\n type = 'ghostty';\n } else if (isInsideTmux) {\n type = 'tmux';\n } else if (isIterm2) {\n type = 'iterm2';\n } else if (isTerminalApp) {\n type = 'terminal';\n } else if (termEnv.includes('xterm')) {\n type = 'xterm';\n }\n\n // Check for true color support\n const supportsTrueColor = this.checkTrueColorSupport();\n const supportsUnicode = this.checkUnicodeSupport();\n\n // Get recommended config based on terminal type\n const recommendedConfig = this.getRecommendedConfig(type, isInsideTmux);\n\n return {\n type,\n isInsideTmux,\n supportsTrueColor,\n supportsUnicode,\n termEnv,\n recommendedConfig\n };\n }\n\n private checkTrueColorSupport(): boolean {\n const colorterm = process.env.COLORTERM;\n if (colorterm === 'truecolor' || colorterm === '24bit') {\n return true;\n }\n \n // Check terminal specific env vars\n const termProgram = process.env.TERM_PROGRAM || '';\n if (['iTerm.app', 'Hyper', 'vscode'].includes(termProgram)) {\n return true;\n }\n \n return false;\n }\n\n private checkUnicodeSupport(): boolean {\n // Most modern terminals support unicode\n const lang = process.env.LANG || '';\n const lcAll = process.env.LC_ALL || '';\n const lcCtype = process.env.LC_CTYPE || '';\n \n const hasUtf8 = [lang, lcAll, lcCtype].some(v => \n v.toLowerCase().includes('utf-8') || v.toLowerCase().includes('utf8')\n );\n \n return hasUtf8;\n }\n\n private getRecommendedConfig(\n type: TerminalInfo['type'],\n isInsideTmux: boolean\n ): BlessedConfig {\n const baseConfig: BlessedConfig = {\n smartCSR: true,\n fullUnicode: true,\n forceUnicode: null,\n dockBorders: true,\n terminal: 'xterm-256color',\n title: 'StackMemory TUI Dashboard',\n warnings: false\n };\n\n // Terminal-specific adjustments\n switch (type) {\n case 'ghostty':\n // Ghostty has issues with certain escape sequences\n return {\n ...baseConfig,\n smartCSR: false, // Disable smart cursor restore\n terminal: 'xterm', // Use basic xterm instead of xterm-256color\n dockBorders: false, // Can cause rendering issues\n artificalCursor: true, // Use artificial cursor\n grabKeys: false, // Don't grab all keys\n sendFocus: false // Don't send focus events\n };\n \n case 'tmux':\n // Inside tmux, we need to be more conservative\n return {\n ...baseConfig,\n terminal: isInsideTmux ? 'screen-256color' : 'xterm-256color',\n smartCSR: !isInsideTmux, // Disable inside tmux\n sendFocus: false\n };\n \n case 'iterm2':\n // iTerm2 has excellent terminal support\n return {\n ...baseConfig,\n terminal: 'xterm-256color',\n fullUnicode: true,\n forceUnicode: true\n };\n \n case 'terminal':\n // macOS Terminal.app\n return {\n ...baseConfig,\n terminal: 'xterm-256color',\n fullUnicode: true\n };\n \n case 'xterm':\n default:\n // Conservative defaults for unknown terminals\n return {\n ...baseConfig,\n smartCSR: false,\n fullUnicode: false,\n forceUnicode: false\n };\n }\n }\n\n getTerminalInfo(): TerminalInfo {\n return this.terminalInfo;\n }\n\n getBlessedConfig(): BlessedConfig {\n return this.terminalInfo.recommendedConfig;\n }\n\n /**\n * Set optimal TERM environment variable for the detected terminal\n */\n configureEnvironment(): void {\n const { type, isInsideTmux } = this.terminalInfo;\n \n if (type === 'ghostty') {\n // Ghostty works better with basic xterm\n process.env.TERM = 'xterm';\n } else if (isInsideTmux) {\n // Inside tmux, use screen-256color\n process.env.TERM = 'screen-256color';\n } else if (!process.env.TERM || process.env.TERM === 'dumb') {\n // Fallback to xterm-256color if not set\n process.env.TERM = 'xterm-256color';\n }\n\n // Disable Node warnings that can interfere with TUI\n process.env.NODE_NO_WARNINGS = '1';\n }\n\n /**\n * Check if terminal is suitable for TUI\n */\n isCompatible(): boolean {\n // Check if we're in a non-interactive environment\n if (process.env.CI || process.env.CONTINUOUS_INTEGRATION) {\n return false;\n }\n\n // Check if terminal is too basic\n const term = process.env.TERM || '';\n if (term === 'dumb') {\n return false;\n }\n\n // Allow if FORCE_TUI is set\n if (process.env.FORCE_TUI) {\n return true;\n }\n\n // Check if any TTY is available (stdout, stdin, or stderr)\n const hasAnyTTY = process.stdout.isTTY || process.stdin.isTTY || process.stderr.isTTY;\n \n // When running through npm/node, TTY detection might fail\n // but we still want to allow TUI if terminal is capable\n if (!hasAnyTTY) {\n const { type } = this.terminalInfo;\n // Allow known terminal types even without TTY detection\n if (type !== 'unknown' || term.includes('xterm') || term.includes('screen')) {\n return true;\n }\n return false;\n }\n\n return true;\n }\n\n /**\n * Get compatibility warnings for the current terminal\n */\n getWarnings(): string[] {\n const warnings: string[] = [];\n const { type, supportsUnicode, supportsTrueColor } = this.terminalInfo;\n\n if (type === 'ghostty') {\n warnings.push('Ghostty terminal detected: Using compatibility mode with reduced features');\n }\n\n if (!supportsUnicode) {\n warnings.push('Unicode support not detected: Some icons may not display correctly');\n }\n\n if (!supportsTrueColor) {\n warnings.push('True color support not detected: Using 256 color mode');\n }\n\n if (type === 'unknown') {\n warnings.push('Unknown terminal type: Using conservative settings');\n }\n\n return warnings;\n }\n\n /**\n * Get terminal capabilities as a string for debugging\n */\n getCapabilitiesString(): string {\n const { type, isInsideTmux, supportsTrueColor, supportsUnicode, termEnv } = this.terminalInfo;\n \n return [\n `Terminal Type: ${type}`,\n `TERM: ${termEnv}`,\n `Inside tmux: ${isInsideTmux}`,\n `True Color: ${supportsTrueColor}`,\n `Unicode: ${supportsUnicode}`\n ].join(' | ');\n }\n}\n\n// Export singleton instance\nexport const terminalCompat = TerminalCompatibility.getInstance();"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }