@stackmemoryai/stackmemory 0.3.1 → 0.3.5

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 (744) hide show
  1. package/README.md +69 -288
  2. package/dist/cli/commands/chromadb.js +267 -0
  3. package/dist/cli/commands/chromadb.js.map +7 -0
  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/context.js +15 -5
  9. package/dist/cli/commands/context.js.map +2 -2
  10. package/dist/cli/commands/dashboard.js +178 -0
  11. package/dist/cli/commands/dashboard.js.map +7 -0
  12. package/dist/cli/commands/handoff.js +125 -8
  13. package/dist/cli/commands/handoff.js.map +2 -2
  14. package/dist/cli/commands/linear-create.js +132 -0
  15. package/dist/cli/commands/linear-create.js.map +7 -0
  16. package/dist/cli/commands/linear-list.js +69 -0
  17. package/dist/cli/commands/linear-list.js.map +7 -0
  18. package/dist/cli/commands/linear-migrate.js +40 -0
  19. package/dist/cli/commands/linear-migrate.js.map +7 -0
  20. package/dist/cli/commands/linear.js +185 -36
  21. package/dist/cli/commands/linear.js.map +2 -2
  22. package/dist/cli/commands/monitor.js +309 -0
  23. package/dist/cli/commands/monitor.js.map +7 -0
  24. package/dist/cli/commands/quality.js +414 -0
  25. package/dist/cli/commands/quality.js.map +7 -0
  26. package/dist/cli/commands/skills.js +262 -0
  27. package/dist/cli/commands/skills.js.map +7 -0
  28. package/dist/cli/commands/storage.js +275 -0
  29. package/dist/cli/commands/storage.js.map +7 -0
  30. package/dist/cli/commands/tui.js +66 -0
  31. package/dist/cli/commands/tui.js.map +7 -0
  32. package/dist/cli/commands/workflow.js +134 -0
  33. package/dist/cli/commands/workflow.js.map +7 -0
  34. package/dist/cli/index.js +109 -8
  35. package/dist/cli/index.js.map +3 -3
  36. package/dist/core/analytics/team-analytics.js +374 -0
  37. package/dist/core/analytics/team-analytics.js.map +7 -0
  38. package/dist/core/context/context-bridge.js +234 -0
  39. package/dist/core/context/context-bridge.js.map +7 -0
  40. package/dist/core/context/dual-stack-manager.js +850 -0
  41. package/dist/core/context/dual-stack-manager.js.map +7 -0
  42. package/dist/core/context/frame-handoff-manager.js +774 -0
  43. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  44. package/dist/core/context/frame-manager.js +142 -13
  45. package/dist/core/context/frame-manager.js.map +2 -2
  46. package/dist/core/context/permission-manager.js +181 -0
  47. package/dist/core/context/permission-manager.js.map +7 -0
  48. package/dist/core/context/shared-context-layer.js +386 -0
  49. package/dist/core/context/shared-context-layer.js.map +7 -0
  50. package/dist/core/context/stack-merge-resolver.js +600 -0
  51. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  52. package/dist/core/context/validation.js +121 -0
  53. package/dist/core/context/validation.js.map +7 -0
  54. package/dist/core/database/connection-pool.js +266 -175
  55. package/dist/core/database/connection-pool.js.map +2 -2
  56. package/dist/core/database/database-adapter.js +51 -0
  57. package/dist/core/database/database-adapter.js.map +7 -0
  58. package/dist/core/database/migration-manager.js +514 -0
  59. package/dist/core/database/migration-manager.js.map +7 -0
  60. package/dist/core/database/paradedb-adapter.js +970 -0
  61. package/dist/core/database/paradedb-adapter.js.map +7 -0
  62. package/dist/core/database/query-router.js +421 -0
  63. package/dist/core/database/query-router.js.map +7 -0
  64. package/dist/core/database/sqlite-adapter.js +547 -0
  65. package/dist/core/database/sqlite-adapter.js.map +7 -0
  66. package/dist/core/errors/index.js +21 -1
  67. package/dist/core/errors/index.js.map +2 -2
  68. package/dist/core/frame/workflow-templates-stub.js +42 -0
  69. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  70. package/dist/core/frame/workflow-templates.js +276 -0
  71. package/dist/core/frame/workflow-templates.js.map +7 -0
  72. package/dist/core/merge/conflict-detector.js +5 -2
  73. package/dist/core/merge/conflict-detector.js.map +2 -2
  74. package/dist/core/merge/resolution-engine.js +3 -14
  75. package/dist/core/merge/resolution-engine.js.map +2 -2
  76. package/dist/core/merge/stack-diff.js.map +2 -2
  77. package/dist/core/monitoring/logger.js +18 -3
  78. package/dist/core/monitoring/logger.js.map +2 -2
  79. package/dist/core/monitoring/session-monitor.js +296 -0
  80. package/dist/core/monitoring/session-monitor.js.map +7 -0
  81. package/dist/core/retrieval/context-retriever.js +475 -0
  82. package/dist/core/retrieval/context-retriever.js.map +7 -0
  83. package/dist/core/retrieval/graph-retrieval.js +658 -0
  84. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  85. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  86. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  87. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  88. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  89. package/dist/core/session/clear-survival-stub.js +49 -0
  90. package/dist/core/session/clear-survival-stub.js.map +7 -0
  91. package/dist/core/session/clear-survival.js +426 -0
  92. package/dist/core/session/clear-survival.js.map +7 -0
  93. package/dist/core/session/handoff-generator.js +339 -0
  94. package/dist/core/session/handoff-generator.js.map +7 -0
  95. package/dist/core/session/session-manager.js +61 -26
  96. package/dist/core/session/session-manager.js.map +3 -3
  97. package/dist/core/skills/index.js +3 -0
  98. package/dist/core/skills/index.js.map +7 -0
  99. package/dist/core/skills/skill-storage.js +749 -0
  100. package/dist/core/skills/skill-storage.js.map +7 -0
  101. package/dist/core/skills/types.js +189 -0
  102. package/dist/core/skills/types.js.map +7 -0
  103. package/dist/core/storage/chromadb-adapter.js +346 -0
  104. package/dist/core/storage/chromadb-adapter.js.map +7 -0
  105. package/dist/core/storage/railway-optimized-storage.js +550 -0
  106. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  107. package/dist/core/storage/remote-storage.js +456 -0
  108. package/dist/core/storage/remote-storage.js.map +7 -0
  109. package/dist/core/trace/trace-detector.js +136 -5
  110. package/dist/core/trace/trace-detector.js.map +2 -2
  111. package/dist/core/trace/trace-store.js.map +2 -2
  112. package/dist/features/tui/components/analytics-panel.js +136 -0
  113. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  114. package/dist/features/tui/components/frame-visualizer.js +377 -0
  115. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  116. package/dist/features/tui/components/pr-tracker.js +123 -0
  117. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  118. package/dist/features/tui/components/session-monitor.js +286 -0
  119. package/dist/features/tui/components/session-monitor.js.map +7 -0
  120. package/dist/features/tui/components/subagent-fleet.js +388 -0
  121. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  122. package/dist/features/tui/components/task-board.js +475 -0
  123. package/dist/features/tui/components/task-board.js.map +7 -0
  124. package/dist/features/tui/index.js +397 -0
  125. package/dist/features/tui/index.js.map +7 -0
  126. package/dist/features/tui/services/data-service.js +654 -0
  127. package/dist/features/tui/services/data-service.js.map +7 -0
  128. package/dist/features/tui/services/websocket-client.js +149 -0
  129. package/dist/features/tui/services/websocket-client.js.map +7 -0
  130. package/dist/features/tui/terminal-compat.js +205 -0
  131. package/dist/features/tui/terminal-compat.js.map +7 -0
  132. package/dist/features/tui/types.js +1 -0
  133. package/dist/features/tui/types.js.map +7 -0
  134. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  135. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  136. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  137. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  138. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  139. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  140. package/dist/integrations/linear/client.js +22 -4
  141. package/dist/integrations/linear/client.js.map +2 -2
  142. package/dist/integrations/linear/migration.js +299 -0
  143. package/dist/integrations/linear/migration.js.map +7 -0
  144. package/dist/integrations/linear/oauth-server.js +396 -0
  145. package/dist/integrations/linear/oauth-server.js.map +7 -0
  146. package/dist/integrations/linear/rest-client.js +199 -0
  147. package/dist/integrations/linear/rest-client.js.map +7 -0
  148. package/dist/integrations/linear/sync.js +14 -2
  149. package/dist/integrations/linear/sync.js.map +2 -2
  150. package/dist/integrations/linear/webhook-handler.js +200 -0
  151. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  152. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  153. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  154. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  155. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  156. package/dist/integrations/mcp/refactored-server.js +31 -3
  157. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  158. package/dist/integrations/mcp/server.js +25 -7
  159. package/dist/integrations/mcp/server.js.map +2 -2
  160. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  161. package/dist/models/user.model.js +3 -0
  162. package/dist/models/user.model.js.map +2 -2
  163. package/dist/services/context-service.js.map +2 -2
  164. package/dist/skills/claude-skills.js +666 -0
  165. package/dist/skills/claude-skills.js.map +7 -0
  166. package/dist/utils/formatting.js +58 -0
  167. package/dist/utils/formatting.js.map +7 -0
  168. package/package.json +30 -24
  169. package/dist/cli/__tests__/index.test.js +0 -290
  170. package/dist/cli/__tests__/index.test.js.map +0 -7
  171. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  172. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  173. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  174. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  175. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  176. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  177. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  178. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  179. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  180. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  181. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  182. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  183. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  184. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  185. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  186. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  187. package/dist/core/trace/trace-detector.test.js +0 -401
  188. package/dist/core/trace/trace-detector.test.js.map +0 -7
  189. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  190. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  191. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  192. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  193. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  194. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  195. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  196. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  197. package/dist/scripts/benchmark-performance.d.ts +0 -7
  198. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  199. package/dist/scripts/benchmark-performance.js +0 -44
  200. package/dist/scripts/benchmark-performance.js.map +0 -1
  201. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  202. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  203. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  204. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  205. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  206. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  207. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  208. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  209. package/dist/scripts/initialize.d.ts +0 -6
  210. package/dist/scripts/initialize.d.ts.map +0 -1
  211. package/dist/scripts/initialize.js +0 -93
  212. package/dist/scripts/initialize.js.map +0 -1
  213. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  214. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  215. package/dist/scripts/list-linear-tasks.js +0 -121
  216. package/dist/scripts/list-linear-tasks.js.map +0 -1
  217. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  218. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  219. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  220. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  221. package/dist/scripts/show-linear-summary.d.ts +0 -6
  222. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  223. package/dist/scripts/show-linear-summary.js +0 -120
  224. package/dist/scripts/show-linear-summary.js.map +0 -1
  225. package/dist/scripts/status.d.ts +0 -6
  226. package/dist/scripts/status.d.ts.map +0 -1
  227. package/dist/scripts/status.js +0 -101
  228. package/dist/scripts/status.js.map +0 -1
  229. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  230. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  231. package/dist/src/agents/core/agent-task-manager.js +0 -504
  232. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  233. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  234. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  235. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  236. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  237. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  238. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  239. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  240. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  241. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  242. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  243. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  244. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  245. package/dist/src/cli/auto-detect.d.ts +0 -61
  246. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  247. package/dist/src/cli/auto-detect.js +0 -350
  248. package/dist/src/cli/auto-detect.js.map +0 -1
  249. package/dist/src/cli/browser-test.d.ts +0 -6
  250. package/dist/src/cli/browser-test.d.ts.map +0 -1
  251. package/dist/src/cli/browser-test.js +0 -32
  252. package/dist/src/cli/browser-test.js.map +0 -1
  253. package/dist/src/cli/claude-sm.d.ts +0 -7
  254. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  255. package/dist/src/cli/claude-sm.js +0 -412
  256. package/dist/src/cli/claude-sm.js.map +0 -1
  257. package/dist/src/cli/commands/agent.d.ts +0 -9
  258. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  259. package/dist/src/cli/commands/agent.js +0 -303
  260. package/dist/src/cli/commands/agent.js.map +0 -1
  261. package/dist/src/cli/commands/config.d.ts +0 -6
  262. package/dist/src/cli/commands/config.d.ts.map +0 -1
  263. package/dist/src/cli/commands/config.js +0 -224
  264. package/dist/src/cli/commands/config.js.map +0 -1
  265. package/dist/src/cli/commands/context.d.ts +0 -7
  266. package/dist/src/cli/commands/context.d.ts.map +0 -1
  267. package/dist/src/cli/commands/context.js +0 -365
  268. package/dist/src/cli/commands/context.js.map +0 -1
  269. package/dist/src/cli/commands/handoff.d.ts +0 -6
  270. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  271. package/dist/src/cli/commands/handoff.js +0 -212
  272. package/dist/src/cli/commands/handoff.js.map +0 -1
  273. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  274. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  275. package/dist/src/cli/commands/linear-test.js +0 -123
  276. package/dist/src/cli/commands/linear-test.js.map +0 -1
  277. package/dist/src/cli/commands/linear.d.ts +0 -6
  278. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  279. package/dist/src/cli/commands/linear.js +0 -393
  280. package/dist/src/cli/commands/linear.js.map +0 -1
  281. package/dist/src/cli/commands/log.d.ts +0 -7
  282. package/dist/src/cli/commands/log.d.ts.map +0 -1
  283. package/dist/src/cli/commands/log.js +0 -168
  284. package/dist/src/cli/commands/log.js.map +0 -1
  285. package/dist/src/cli/commands/onboard.d.ts +0 -8
  286. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  287. package/dist/src/cli/commands/onboard.js +0 -363
  288. package/dist/src/cli/commands/onboard.js.map +0 -1
  289. package/dist/src/cli/commands/projects.d.ts +0 -8
  290. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  291. package/dist/src/cli/commands/projects.js +0 -220
  292. package/dist/src/cli/commands/projects.js.map +0 -1
  293. package/dist/src/cli/commands/search.d.ts +0 -7
  294. package/dist/src/cli/commands/search.d.ts.map +0 -1
  295. package/dist/src/cli/commands/search.js +0 -162
  296. package/dist/src/cli/commands/search.js.map +0 -1
  297. package/dist/src/cli/commands/session.d.ts +0 -7
  298. package/dist/src/cli/commands/session.d.ts.map +0 -1
  299. package/dist/src/cli/commands/session.js +0 -222
  300. package/dist/src/cli/commands/session.js.map +0 -1
  301. package/dist/src/cli/commands/tasks.d.ts +0 -7
  302. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  303. package/dist/src/cli/commands/tasks.js +0 -229
  304. package/dist/src/cli/commands/tasks.js.map +0 -1
  305. package/dist/src/cli/commands/webhook.d.ts +0 -3
  306. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  307. package/dist/src/cli/commands/webhook.js +0 -157
  308. package/dist/src/cli/commands/webhook.js.map +0 -1
  309. package/dist/src/cli/commands/worktree.d.ts +0 -8
  310. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  311. package/dist/src/cli/commands/worktree.js +0 -339
  312. package/dist/src/cli/commands/worktree.js.map +0 -1
  313. package/dist/src/cli/index.d.ts +0 -8
  314. package/dist/src/cli/index.d.ts.map +0 -1
  315. package/dist/src/cli/index.js +0 -995
  316. package/dist/src/cli/index.js.map +0 -1
  317. package/dist/src/cli/utils/viewer.d.ts +0 -3
  318. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  319. package/dist/src/cli/utils/viewer.js +0 -91
  320. package/dist/src/cli/utils/viewer.js.map +0 -1
  321. package/dist/src/core/config/config-manager.d.ts +0 -95
  322. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  323. package/dist/src/core/config/config-manager.js +0 -359
  324. package/dist/src/core/config/config-manager.js.map +0 -1
  325. package/dist/src/core/config/types.d.ts +0 -72
  326. package/dist/src/core/config/types.d.ts.map +0 -1
  327. package/dist/src/core/config/types.js +0 -127
  328. package/dist/src/core/config/types.js.map +0 -1
  329. package/dist/src/core/context/auto-context.d.ts +0 -22
  330. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  331. package/dist/src/core/context/auto-context.js +0 -77
  332. package/dist/src/core/context/auto-context.js.map +0 -1
  333. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  334. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  335. package/dist/src/core/context/compaction-handler.js +0 -306
  336. package/dist/src/core/context/compaction-handler.js.map +0 -1
  337. package/dist/src/core/context/frame-database.d.ts +0 -59
  338. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  339. package/dist/src/core/context/frame-database.js +0 -333
  340. package/dist/src/core/context/frame-database.js.map +0 -1
  341. package/dist/src/core/context/frame-digest.d.ts +0 -59
  342. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  343. package/dist/src/core/context/frame-digest.js +0 -264
  344. package/dist/src/core/context/frame-digest.js.map +0 -1
  345. package/dist/src/core/context/frame-manager.d.ts +0 -112
  346. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  347. package/dist/src/core/context/frame-manager.js +0 -600
  348. package/dist/src/core/context/frame-manager.js.map +0 -1
  349. package/dist/src/core/context/frame-stack.d.ts +0 -85
  350. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  351. package/dist/src/core/context/frame-stack.js +0 -287
  352. package/dist/src/core/context/frame-stack.js.map +0 -1
  353. package/dist/src/core/context/frame-types.d.ts +0 -67
  354. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  355. package/dist/src/core/context/frame-types.js +0 -6
  356. package/dist/src/core/context/frame-types.js.map +0 -1
  357. package/dist/src/core/context/index.d.ts +0 -11
  358. package/dist/src/core/context/index.d.ts.map +0 -1
  359. package/dist/src/core/context/index.js +0 -14
  360. package/dist/src/core/context/index.js.map +0 -1
  361. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  362. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  363. package/dist/src/core/context/model-aware-compaction.js +0 -616
  364. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  365. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  366. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  367. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  368. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  369. package/dist/src/core/database/batch-operations.d.ts +0 -118
  370. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  371. package/dist/src/core/database/batch-operations.js +0 -339
  372. package/dist/src/core/database/batch-operations.js.map +0 -1
  373. package/dist/src/core/database/connection-pool.d.ts +0 -79
  374. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  375. package/dist/src/core/database/connection-pool.js +0 -236
  376. package/dist/src/core/database/connection-pool.js.map +0 -1
  377. package/dist/src/core/database/query-cache.d.ts +0 -135
  378. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  379. package/dist/src/core/database/query-cache.js +0 -294
  380. package/dist/src/core/database/query-cache.js.map +0 -1
  381. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  382. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  383. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  384. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  385. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  386. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  387. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  388. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  389. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  390. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  391. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  392. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  393. package/dist/src/core/digest/index.d.ts +0 -9
  394. package/dist/src/core/digest/index.d.ts.map +0 -1
  395. package/dist/src/core/digest/index.js +0 -9
  396. package/dist/src/core/digest/index.js.map +0 -1
  397. package/dist/src/core/digest/types.d.ts +0 -154
  398. package/dist/src/core/digest/types.d.ts.map +0 -1
  399. package/dist/src/core/digest/types.js +0 -18
  400. package/dist/src/core/digest/types.js.map +0 -1
  401. package/dist/src/core/errors/index.d.ts +0 -143
  402. package/dist/src/core/errors/index.d.ts.map +0 -1
  403. package/dist/src/core/errors/index.js +0 -282
  404. package/dist/src/core/errors/index.js.map +0 -1
  405. package/dist/src/core/errors/recovery.d.ts +0 -86
  406. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  407. package/dist/src/core/errors/recovery.js +0 -274
  408. package/dist/src/core/errors/recovery.js.map +0 -1
  409. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  410. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  411. package/dist/src/core/merge/conflict-detector.js +0 -468
  412. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  413. package/dist/src/core/merge/index.d.ts +0 -9
  414. package/dist/src/core/merge/index.d.ts.map +0 -1
  415. package/dist/src/core/merge/index.js +0 -9
  416. package/dist/src/core/merge/index.js.map +0 -1
  417. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  418. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  419. package/dist/src/core/merge/resolution-engine.js +0 -573
  420. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  421. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  422. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  423. package/dist/src/core/merge/stack-diff.js +0 -516
  424. package/dist/src/core/merge/stack-diff.js.map +0 -1
  425. package/dist/src/core/merge/types.d.ts +0 -110
  426. package/dist/src/core/merge/types.d.ts.map +0 -1
  427. package/dist/src/core/merge/types.js +0 -6
  428. package/dist/src/core/merge/types.js.map +0 -1
  429. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  430. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  431. package/dist/src/core/monitoring/error-handler.js +0 -212
  432. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  433. package/dist/src/core/monitoring/logger.d.ts +0 -24
  434. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  435. package/dist/src/core/monitoring/logger.js +0 -126
  436. package/dist/src/core/monitoring/logger.js.map +0 -1
  437. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  438. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  439. package/dist/src/core/monitoring/metrics.js +0 -152
  440. package/dist/src/core/monitoring/metrics.js.map +0 -1
  441. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  442. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  443. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  444. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  445. package/dist/src/core/performance/context-cache.d.ts +0 -109
  446. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  447. package/dist/src/core/performance/context-cache.js +0 -280
  448. package/dist/src/core/performance/context-cache.js.map +0 -1
  449. package/dist/src/core/performance/index.d.ts +0 -3
  450. package/dist/src/core/performance/index.d.ts.map +0 -1
  451. package/dist/src/core/performance/index.js +0 -3
  452. package/dist/src/core/performance/index.js.map +0 -1
  453. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  454. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  455. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  456. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  457. package/dist/src/core/performance/monitor.d.ts +0 -48
  458. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  459. package/dist/src/core/performance/monitor.js +0 -226
  460. package/dist/src/core/performance/monitor.js.map +0 -1
  461. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  462. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  463. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  464. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  465. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  466. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  467. package/dist/src/core/performance/performance-benchmark.js +0 -290
  468. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  469. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  470. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  471. package/dist/src/core/performance/performance-profiler.js +0 -346
  472. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  473. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  474. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  475. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  476. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  477. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  478. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  479. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  480. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  481. package/dist/src/core/projects/project-manager.d.ts +0 -130
  482. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  483. package/dist/src/core/projects/project-manager.js +0 -709
  484. package/dist/src/core/projects/project-manager.js.map +0 -1
  485. package/dist/src/core/query/query-parser.d.ts +0 -109
  486. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  487. package/dist/src/core/query/query-parser.js +0 -415
  488. package/dist/src/core/query/query-parser.js.map +0 -1
  489. package/dist/src/core/query/query-templates.d.ts +0 -44
  490. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  491. package/dist/src/core/query/query-templates.js +0 -326
  492. package/dist/src/core/query/query-templates.js.map +0 -1
  493. package/dist/src/core/retrieval/index.d.ts +0 -8
  494. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  495. package/dist/src/core/retrieval/index.js +0 -8
  496. package/dist/src/core/retrieval/index.js.map +0 -1
  497. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  498. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  499. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  500. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  501. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  502. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  503. package/dist/src/core/retrieval/summary-generator.js +0 -622
  504. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  505. package/dist/src/core/retrieval/types.d.ts +0 -257
  506. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  507. package/dist/src/core/retrieval/types.js +0 -18
  508. package/dist/src/core/retrieval/types.js.map +0 -1
  509. package/dist/src/core/session/index.d.ts +0 -2
  510. package/dist/src/core/session/index.d.ts.map +0 -1
  511. package/dist/src/core/session/index.js +0 -2
  512. package/dist/src/core/session/index.js.map +0 -1
  513. package/dist/src/core/session/session-manager.d.ts +0 -69
  514. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  515. package/dist/src/core/session/session-manager.js +0 -311
  516. package/dist/src/core/session/session-manager.js.map +0 -1
  517. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  518. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  519. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  520. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  521. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  522. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  523. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  524. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  525. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  526. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  527. package/dist/src/core/trace/debug-trace.js +0 -402
  528. package/dist/src/core/trace/debug-trace.js.map +0 -1
  529. package/dist/src/core/trace/error-test.d.ts +0 -6
  530. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  531. package/dist/src/core/trace/error-test.js +0 -128
  532. package/dist/src/core/trace/error-test.js.map +0 -1
  533. package/dist/src/core/trace/index.d.ts +0 -25
  534. package/dist/src/core/trace/index.d.ts.map +0 -1
  535. package/dist/src/core/trace/index.js +0 -121
  536. package/dist/src/core/trace/index.js.map +0 -1
  537. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  538. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  539. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  540. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  541. package/dist/src/core/trace/performance-test.d.ts +0 -6
  542. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  543. package/dist/src/core/trace/performance-test.js +0 -111
  544. package/dist/src/core/trace/performance-test.js.map +0 -1
  545. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  546. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  547. package/dist/src/core/trace/trace-demo.js +0 -154
  548. package/dist/src/core/trace/trace-demo.js.map +0 -1
  549. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  550. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  551. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  552. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  553. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  554. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  555. package/dist/src/core/trace/trace-detector.js +0 -425
  556. package/dist/src/core/trace/trace-detector.js.map +0 -1
  557. package/dist/src/core/trace/trace-store.d.ts +0 -60
  558. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  559. package/dist/src/core/trace/trace-store.js +0 -323
  560. package/dist/src/core/trace/trace-store.js.map +0 -1
  561. package/dist/src/core/trace/types.d.ts +0 -81
  562. package/dist/src/core/trace/types.d.ts.map +0 -1
  563. package/dist/src/core/trace/types.js +0 -70
  564. package/dist/src/core/trace/types.js.map +0 -1
  565. package/dist/src/core/types.d.ts +0 -35
  566. package/dist/src/core/types.d.ts.map +0 -1
  567. package/dist/src/core/types.js +0 -2
  568. package/dist/src/core/types.js.map +0 -1
  569. package/dist/src/core/utils/update-checker.d.ts +0 -38
  570. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  571. package/dist/src/core/utils/update-checker.js +0 -213
  572. package/dist/src/core/utils/update-checker.js.map +0 -1
  573. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  574. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  575. package/dist/src/core/worktree/worktree-manager.js +0 -456
  576. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  577. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  578. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  579. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  580. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  581. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  582. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  583. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  584. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  585. package/dist/src/features/analytics/index.d.ts +0 -12
  586. package/dist/src/features/analytics/index.d.ts.map +0 -1
  587. package/dist/src/features/analytics/index.js +0 -11
  588. package/dist/src/features/analytics/index.js.map +0 -1
  589. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  590. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  591. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  592. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  593. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  594. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  595. package/dist/src/features/analytics/types/metrics.js +0 -2
  596. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  597. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  598. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  599. package/dist/src/features/browser/browser-mcp.js +0 -459
  600. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  601. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  602. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  603. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  604. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  605. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  606. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  607. package/dist/src/features/tasks/task-aware-context.js +0 -412
  608. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  609. package/dist/src/index.d.ts +0 -21
  610. package/dist/src/index.d.ts.map +0 -1
  611. package/dist/src/index.js +0 -9
  612. package/dist/src/index.js.map +0 -1
  613. package/dist/src/integrations/linear/auth.d.ts +0 -99
  614. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  615. package/dist/src/integrations/linear/auth.js +0 -319
  616. package/dist/src/integrations/linear/auth.js.map +0 -1
  617. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  618. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  619. package/dist/src/integrations/linear/auto-sync.js +0 -268
  620. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  621. package/dist/src/integrations/linear/client.d.ts +0 -127
  622. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  623. package/dist/src/integrations/linear/client.js +0 -446
  624. package/dist/src/integrations/linear/client.js.map +0 -1
  625. package/dist/src/integrations/linear/config.d.ts +0 -51
  626. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  627. package/dist/src/integrations/linear/config.js +0 -103
  628. package/dist/src/integrations/linear/config.js.map +0 -1
  629. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  630. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  631. package/dist/src/integrations/linear/sync-manager.js +0 -235
  632. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  633. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  634. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  635. package/dist/src/integrations/linear/sync-service.js +0 -217
  636. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  637. package/dist/src/integrations/linear/sync.d.ts +0 -125
  638. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  639. package/dist/src/integrations/linear/sync.js +0 -563
  640. package/dist/src/integrations/linear/sync.js.map +0 -1
  641. package/dist/src/integrations/linear/types.d.ts +0 -90
  642. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  643. package/dist/src/integrations/linear/types.js +0 -2
  644. package/dist/src/integrations/linear/types.js.map +0 -1
  645. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  646. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  647. package/dist/src/integrations/linear/webhook-server.js +0 -190
  648. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  649. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  650. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  651. package/dist/src/integrations/linear/webhook.js +0 -291
  652. package/dist/src/integrations/linear/webhook.js.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  654. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  656. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  658. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  660. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  662. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  663. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  664. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  665. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  666. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  667. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  668. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  669. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  670. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  671. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  672. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  673. package/dist/src/integrations/mcp/index.d.ts +0 -13
  674. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  675. package/dist/src/integrations/mcp/index.js +0 -17
  676. package/dist/src/integrations/mcp/index.js.map +0 -1
  677. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  678. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  679. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  680. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  681. package/dist/src/integrations/mcp/server.d.ts +0 -54
  682. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  683. package/dist/src/integrations/mcp/server.js +0 -1616
  684. package/dist/src/integrations/mcp/server.js.map +0 -1
  685. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  686. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  687. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  688. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  689. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  690. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  691. package/dist/src/integrations/mcp/trace-test.js +0 -54
  692. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  694. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  695. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  696. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  697. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  698. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  699. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  700. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  701. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  702. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  703. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  704. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  705. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  706. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  707. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  708. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  709. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  710. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  711. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  712. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  713. package/dist/src/models/user.model.d.ts +0 -62
  714. package/dist/src/models/user.model.d.ts.map +0 -1
  715. package/dist/src/models/user.model.js +0 -311
  716. package/dist/src/models/user.model.js.map +0 -1
  717. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  718. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  719. package/dist/src/servers/production/auth-middleware.js +0 -558
  720. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  721. package/dist/src/servers/railway/index.d.ts +0 -7
  722. package/dist/src/servers/railway/index.d.ts.map +0 -1
  723. package/dist/src/servers/railway/index.js +0 -401
  724. package/dist/src/servers/railway/index.js.map +0 -1
  725. package/dist/src/services/config-service.d.ts +0 -44
  726. package/dist/src/services/config-service.d.ts.map +0 -1
  727. package/dist/src/services/config-service.js +0 -61
  728. package/dist/src/services/config-service.js.map +0 -1
  729. package/dist/src/services/context-service.d.ts +0 -17
  730. package/dist/src/services/context-service.d.ts.map +0 -1
  731. package/dist/src/services/context-service.js +0 -173
  732. package/dist/src/services/context-service.js.map +0 -1
  733. package/dist/src/types/task.d.ts +0 -27
  734. package/dist/src/types/task.d.ts.map +0 -1
  735. package/dist/src/types/task.js +0 -2
  736. package/dist/src/types/task.js.map +0 -1
  737. package/dist/src/utils/logger.d.ts +0 -13
  738. package/dist/src/utils/logger.d.ts.map +0 -1
  739. package/dist/src/utils/logger.js +0 -52
  740. package/dist/src/utils/logger.js.map +0 -1
  741. package/dist/src/validation/schemas.d.ts +0 -633
  742. package/dist/src/validation/schemas.d.ts.map +0 -1
  743. package/dist/src/validation/schemas.js +0 -347
  744. package/dist/src/validation/schemas.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import chalk from "chalk";
2
2
  import {
3
- LinearAuthManager,
4
- LinearOAuthSetup
3
+ LinearAuthManager
5
4
  } from "../../integrations/linear/auth.js";
5
+ import { LinearOAuthServer } from "../../integrations/linear/oauth-server.js";
6
6
  import {
7
7
  LinearSyncEngine,
8
8
  DEFAULT_SYNC_CONFIG
@@ -14,6 +14,7 @@ import {
14
14
  import { LinearConfigManager } from "../../integrations/linear/config.js";
15
15
  import { PebblesTaskStore } from "../../features/tasks/pebbles-task-store.js";
16
16
  import { LinearClient } from "../../integrations/linear/client.js";
17
+ import { LinearRestClient } from "../../integrations/linear/rest-client.js";
17
18
  import Database from "better-sqlite3";
18
19
  import { join } from "path";
19
20
  import { existsSync } from "fs";
@@ -58,7 +59,83 @@ function displaySyncResult(result) {
58
59
  }
59
60
  function registerLinearCommands(parent) {
60
61
  const linear = parent.command("linear").description("Linear API integration commands");
61
- linear.command("auth").description("Authenticate with Linear").option("--api-key <key>", "Use API key instead of OAuth").action(async (options) => {
62
+ linear.command("list").alias("ls").description("List Linear tasks (memory-cached)").option("--limit <n>", "Number of tasks to show", "20").option(
63
+ "--status <status>",
64
+ "Filter by status (backlog, started, completed, etc.)"
65
+ ).option("--my", "Show only tasks assigned to me").option("--cache", "Show cache stats only").option("--refresh", "Force refresh cache").option("--count", "Show count by status only").action(async (options) => {
66
+ try {
67
+ const apiKey = process.env.LINEAR_API_KEY;
68
+ if (!apiKey) {
69
+ console.log(
70
+ chalk.yellow("\u26A0 Set LINEAR_API_KEY environment variable")
71
+ );
72
+ return;
73
+ }
74
+ const restClient = new LinearRestClient(apiKey);
75
+ if (options.cache) {
76
+ const stats = restClient.getCacheStats();
77
+ console.log(chalk.cyan("\u{1F4CA} Cache Stats:"));
78
+ console.log(` Size: ${stats.size} tasks`);
79
+ console.log(` Age: ${Math.round(stats.age / 1e3)}s`);
80
+ console.log(` Fresh: ${stats.fresh ? "yes" : "no"}`);
81
+ console.log(
82
+ ` Last sync: ${new Date(stats.lastSync).toLocaleString()}`
83
+ );
84
+ return;
85
+ }
86
+ if (options.count) {
87
+ const counts = await restClient.getTaskCounts();
88
+ console.log(chalk.cyan("\u{1F4CA} Task Counts:"));
89
+ Object.entries(counts).sort(([, a], [, b]) => b - a).forEach(([status, count]) => {
90
+ console.log(` ${status}: ${count}`);
91
+ });
92
+ return;
93
+ }
94
+ let tasks;
95
+ if (options.my) {
96
+ tasks = await restClient.getMyTasks();
97
+ } else if (options.status) {
98
+ tasks = await restClient.getTasksByStatus(options.status);
99
+ } else {
100
+ tasks = await restClient.getAllTasks(options.refresh);
101
+ }
102
+ if (!tasks || tasks.length === 0) {
103
+ console.log(chalk.gray("No tasks found"));
104
+ return;
105
+ }
106
+ const limit = parseInt(options.limit);
107
+ const displayTasks = tasks.slice(0, limit);
108
+ console.log(
109
+ chalk.cyan(
110
+ `
111
+ \u{1F4CB} Linear Tasks (${displayTasks.length}/${tasks.length}):`
112
+ )
113
+ );
114
+ displayTasks.forEach((task) => {
115
+ const priority = task.priority ? `P${task.priority}` : "";
116
+ const assignee = task.assignee ? ` @${task.assignee.name}` : "";
117
+ const statusColor = task.state.type === "completed" ? chalk.green : task.state.type === "started" ? chalk.yellow : chalk.gray;
118
+ console.log(`${chalk.blue(task.identifier)} ${task.title}`);
119
+ console.log(
120
+ chalk.gray(
121
+ ` ${statusColor(task.state.name)} ${priority}${assignee}`
122
+ )
123
+ );
124
+ });
125
+ console.log(
126
+ chalk.gray(
127
+ `
128
+ ${displayTasks.length} shown, ${tasks.length} total tasks`
129
+ )
130
+ );
131
+ } catch (error) {
132
+ console.error(
133
+ chalk.red("Failed to list tasks:"),
134
+ error.message
135
+ );
136
+ }
137
+ });
138
+ linear.command("auth").description("Authenticate with Linear").option("--api-key <key>", "Use API key instead of OAuth").option("--no-browser", "Do not open browser automatically").action(async (options) => {
62
139
  try {
63
140
  if (options.apiKey) {
64
141
  process.env.LINEAR_API_KEY = options.apiKey;
@@ -72,21 +149,54 @@ function registerLinearCommands(parent) {
72
149
  }
73
150
  } else {
74
151
  const authManager = new LinearAuthManager(process.cwd());
75
- const setup = new LinearOAuthSetup(process.cwd());
76
- const authResult = await setup.setupInteractive();
77
- if (authResult.authUrl) {
78
- console.log(chalk.cyan("\n\u{1F517} Open this URL in your browser:"));
79
- console.log(authResult.authUrl);
152
+ const clientId = process.env.LINEAR_CLIENT_ID;
153
+ const clientSecret = process.env.LINEAR_CLIENT_SECRET;
154
+ if (!clientId || !clientSecret) {
155
+ console.log(chalk.yellow("\n\u26A0 Linear OAuth app not configured"));
156
+ console.log(chalk.cyan("\n\u{1F4DD} Setup Instructions:"));
157
+ console.log(
158
+ " 1. Create a Linear OAuth app at: https://linear.app/settings/api"
159
+ );
160
+ console.log(
161
+ " 2. Set redirect URI to: http://localhost:3456/auth/linear/callback"
162
+ );
163
+ console.log(" 3. Copy your Client ID and Client Secret");
164
+ console.log(" 4. Set environment variables:");
80
165
  console.log(
81
- chalk.gray("\nFollow the instructions to complete authentication")
166
+ chalk.gray(' export LINEAR_CLIENT_ID="your_client_id"')
82
167
  );
168
+ console.log(
169
+ chalk.gray(
170
+ ' export LINEAR_CLIENT_SECRET="your_client_secret"'
171
+ )
172
+ );
173
+ console.log(" 5. Run this command again");
174
+ return;
83
175
  }
84
- if (authResult.instructions) {
85
- console.log(chalk.yellow("\n\u{1F4DD} Instructions:"));
86
- authResult.instructions.forEach((instruction) => {
87
- console.log(` ${instruction}`);
88
- });
176
+ authManager.saveConfig({
177
+ clientId,
178
+ clientSecret,
179
+ redirectUri: "http://localhost:3456/auth/linear/callback",
180
+ scopes: ["read", "write", "admin"]
181
+ });
182
+ const oauthServer = new LinearOAuthServer(process.cwd());
183
+ const { url } = await oauthServer.start();
184
+ if (options.browser !== false) {
185
+ const open = (await import("open")).default;
186
+ await open(url);
187
+ console.log(
188
+ chalk.green("\n\u2713 Browser opened with authorization page")
189
+ );
190
+ } else {
191
+ console.log(chalk.cyan("\n\u{1F517} Open this URL in your browser:"));
192
+ console.log(chalk.underline(url));
89
193
  }
194
+ console.log(chalk.gray("\nWaiting for authorization..."));
195
+ console.log(
196
+ chalk.gray(
197
+ "The server will automatically shut down after authorization."
198
+ )
199
+ );
90
200
  }
91
201
  } catch (error) {
92
202
  console.error(
@@ -202,7 +312,12 @@ function registerLinearCommands(parent) {
202
312
  return;
203
313
  }
204
314
  const client = apiKey ? new LinearClient({ apiKey }) : new LinearClient({
205
- apiKey: tokens.accessToken
315
+ apiKey: tokens.accessToken,
316
+ useBearer: true,
317
+ onUnauthorized: async () => {
318
+ const refreshed = await authManager.refreshAccessToken();
319
+ return refreshed.accessToken;
320
+ }
206
321
  });
207
322
  const user = await client.getViewer();
208
323
  if (user) {
@@ -225,41 +340,75 @@ function registerLinearCommands(parent) {
225
340
  );
226
341
  }
227
342
  });
228
- linear.command("tasks").description("List Linear tasks").option("--limit <n>", "Number of tasks to show", "10").action(async (options) => {
343
+ linear.command("tasks").description("List Linear tasks").option("--limit <n>", "Number of tasks to show", "50").option(
344
+ "--status <status>",
345
+ "Filter by status (backlog, started, completed, etc.)"
346
+ ).option("--my", "Show only tasks assigned to me").option("--cache", "Show cache stats").option("--refresh", "Force refresh cache").action(async (options) => {
229
347
  try {
230
- const authManager = new LinearAuthManager(process.cwd());
231
- const tokens = authManager.loadTokens();
232
348
  const apiKey = process.env.LINEAR_API_KEY;
233
- if (!tokens && !apiKey) {
234
- console.log(chalk.yellow("\u26A0 Not authenticated with Linear"));
349
+ if (!apiKey) {
350
+ console.log(
351
+ chalk.yellow("\u26A0 Set LINEAR_API_KEY environment variable")
352
+ );
235
353
  return;
236
354
  }
237
- const client = apiKey ? new LinearClient({ apiKey }) : new LinearClient({
238
- apiKey: tokens.accessToken
239
- });
240
- const issues = await client.getIssues({
241
- limit: parseInt(options.limit)
242
- });
243
- if (!issues || issues.length === 0) {
244
- console.log(chalk.gray("No issues found"));
355
+ const restClient = new LinearRestClient(apiKey);
356
+ if (options.cache) {
357
+ const stats = restClient.getCacheStats();
358
+ console.log(chalk.cyan("\u{1F4CA} Cache Stats:"));
359
+ console.log(` Size: ${stats.size} tasks`);
360
+ console.log(` Age: ${Math.round(stats.age / 1e3)}s`);
361
+ console.log(` Fresh: ${stats.fresh ? "yes" : "no"}`);
362
+ console.log(
363
+ ` Last sync: ${new Date(stats.lastSync).toLocaleString()}`
364
+ );
245
365
  return;
246
366
  }
367
+ let tasks;
368
+ if (options.my) {
369
+ tasks = await restClient.getMyTasks();
370
+ } else if (options.status) {
371
+ tasks = await restClient.getTasksByStatus(options.status);
372
+ } else {
373
+ tasks = await restClient.getAllTasks(options.refresh);
374
+ }
375
+ if (!tasks || tasks.length === 0) {
376
+ console.log(chalk.gray("No tasks found"));
377
+ return;
378
+ }
379
+ const limit = parseInt(options.limit);
380
+ const displayTasks = tasks.slice(0, limit);
247
381
  const table = new Table({
248
382
  head: ["ID", "Title", "State", "Priority", "Assignee"],
249
383
  style: { head: ["cyan"] }
250
384
  });
251
- issues.forEach((issue) => {
385
+ displayTasks.forEach((task) => {
252
386
  table.push([
253
- issue.identifier,
254
- issue.title.substring(0, 40) + (issue.title.length > 40 ? "..." : ""),
255
- issue.state?.name || "-",
256
- issue.priority ? `P${issue.priority}` : "-",
257
- issue.assignee?.name || "-"
387
+ task.identifier,
388
+ task.title.substring(0, 40) + (task.title.length > 40 ? "..." : ""),
389
+ task.state?.name || "-",
390
+ task.priority ? `P${task.priority}` : "-",
391
+ task.assignee?.name || "-"
258
392
  ]);
259
393
  });
260
394
  console.log(table.toString());
261
- console.log(chalk.gray(`
262
- Showing ${issues.length} issues`));
395
+ const counts = await restClient.getTaskCounts();
396
+ console.log(chalk.cyan("\n\u{1F4CA} Task Summary:"));
397
+ Object.entries(counts).forEach(([status, count]) => {
398
+ console.log(` ${status}: ${count}`);
399
+ });
400
+ console.log(
401
+ chalk.gray(
402
+ `
403
+ Showing ${displayTasks.length} of ${tasks.length} total tasks`
404
+ )
405
+ );
406
+ const cacheStats = restClient.getCacheStats();
407
+ console.log(
408
+ chalk.gray(
409
+ `Cache: ${cacheStats.size} tasks, age: ${Math.round(cacheStats.age / 1e3)}s`
410
+ )
411
+ );
263
412
  } catch (error) {
264
413
  console.error(
265
414
  chalk.red("Failed to list tasks:"),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/commands/linear.ts"],
4
- "sourcesContent": ["/**\n * Linear integration commands\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport {\n LinearAuthManager,\n LinearOAuthSetup,\n} from '../../integrations/linear/auth.js';\nimport {\n LinearSyncEngine,\n DEFAULT_SYNC_CONFIG,\n} from '../../integrations/linear/sync.js';\nimport {\n LinearSyncManager,\n DEFAULT_SYNC_MANAGER_CONFIG,\n} from '../../integrations/linear/sync-manager.js';\nimport { LinearConfigManager } from '../../integrations/linear/config.js';\nimport { PebblesTaskStore } from '../../features/tasks/pebbles-task-store.js';\nimport { LinearClient } from '../../integrations/linear/client.js';\nimport Database from 'better-sqlite3';\nimport { join } from 'path';\nimport { existsSync, mkdirSync } from 'fs';\nimport { logger } from '../../core/monitoring/logger.js';\nimport Table from 'cli-table3';\nimport { SyncResult } from '../../integrations/linear/sync.js';\n\n/**\n * Display sync result in a formatted way\n */\nfunction displaySyncResult(result: SyncResult) {\n if (result.success) {\n console.log(chalk.green('\u2713 Sync completed successfully'));\n } else {\n console.log(chalk.yellow('\u26A0 Sync completed with issues'));\n }\n\n if (\n result.synced.toLinear > 0 ||\n result.synced.fromLinear > 0 ||\n result.synced.updated > 0\n ) {\n console.log(chalk.cyan(' \uD83D\uDCCA Summary:'));\n if (result.synced.toLinear > 0) {\n console.log(` \u2192 Linear: ${result.synced.toLinear} tasks`);\n }\n if (result.synced.fromLinear > 0) {\n console.log(` \u2190 Linear: ${result.synced.fromLinear} tasks`);\n }\n if (result.synced.updated > 0) {\n console.log(` \u2194 Updated: ${result.synced.updated} tasks`);\n }\n }\n\n if (result.conflicts.length > 0) {\n console.log(chalk.yellow(` \u26A0 Conflicts: ${result.conflicts.length}`));\n result.conflicts.slice(0, 3).forEach((conflict) => {\n console.log(` - ${conflict.reason}`);\n });\n if (result.conflicts.length > 3) {\n console.log(` ... and ${result.conflicts.length - 3} more`);\n }\n }\n\n if (result.errors.length > 0) {\n console.log(chalk.red(` \u274C Errors: ${result.errors.length}`));\n result.errors.slice(0, 3).forEach((error) => {\n console.log(` - ${error.substring(0, 80)}`);\n });\n if (result.errors.length > 3) {\n console.log(` ... and ${result.errors.length - 3} more`);\n }\n }\n}\n\nexport function registerLinearCommands(parent: Command) {\n const linear = parent\n .command('linear')\n .description('Linear API integration commands');\n\n // Auth command\n linear\n .command('auth')\n .description('Authenticate with Linear')\n .option('--api-key <key>', 'Use API key instead of OAuth')\n .action(async (options) => {\n try {\n if (options.apiKey) {\n // Set API key as environment variable\n process.env.LINEAR_API_KEY = options.apiKey;\n console.log(chalk.green('\u2713 Linear API key set'));\n\n // Test the connection\n const client = new LinearClient({ apiKey: options.apiKey });\n const user = await client.getViewer();\n\n if (user) {\n console.log(\n chalk.cyan(`Connected as: ${user.name} (${user.email})`)\n );\n }\n } else {\n // OAuth flow\n const authManager = new LinearAuthManager(process.cwd());\n const setup = new LinearOAuthSetup(process.cwd());\n const authResult = await setup.setupInteractive();\n\n if (authResult.authUrl) {\n console.log(chalk.cyan('\\n\uD83D\uDD17 Open this URL in your browser:'));\n console.log(authResult.authUrl);\n console.log(\n chalk.gray('\\nFollow the instructions to complete authentication')\n );\n }\n\n if (authResult.instructions) {\n console.log(chalk.yellow('\\n\uD83D\uDCDD Instructions:'));\n authResult.instructions.forEach((instruction) => {\n console.log(` ${instruction}`);\n });\n }\n }\n } catch (error) {\n console.error(\n chalk.red('Authentication failed:'),\n (error as Error).message\n );\n process.exit(1);\n }\n });\n\n // Sync command\n linear\n .command('sync')\n .description('Sync tasks with Linear')\n .option(\n '-d, --direction <dir>',\n 'Sync direction: bidirectional, to_linear, from_linear',\n 'bidirectional'\n )\n .option('-t, --team <id>', 'Default Linear team ID')\n .option('--dry-run', 'Preview sync without making changes')\n .option('--daemon', 'Run in daemon mode with periodic sync')\n .option(\n '-i, --interval <minutes>',\n 'Sync interval in minutes (default: 15)'\n )\n .action(async (options) => {\n try {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(chalk.red('\u274C StackMemory not initialized'));\n return;\n }\n\n const db = new Database(dbPath);\n const taskStore = new PebblesTaskStore(projectRoot, db);\n const authManager = new LinearAuthManager(projectRoot);\n\n const config = {\n ...DEFAULT_SYNC_CONFIG,\n direction: options.direction,\n defaultTeamId: options.team,\n enabled: true,\n };\n\n if (options.daemon) {\n // Run in daemon mode with periodic sync\n const managerConfig = {\n ...DEFAULT_SYNC_MANAGER_CONFIG,\n ...config,\n autoSyncInterval: parseInt(options.interval) || 15,\n };\n\n const syncManager = new LinearSyncManager(\n taskStore,\n authManager,\n managerConfig,\n projectRoot\n );\n\n console.log(chalk.green('\uD83D\uDE80 Starting Linear sync daemon'));\n console.log(\n chalk.cyan(\n ` Sync interval: ${managerConfig.autoSyncInterval} minutes`\n )\n );\n console.log(chalk.cyan(` Direction: ${managerConfig.direction}`));\n console.log(chalk.gray(' Press Ctrl+C to stop\\n'));\n\n // Initial sync\n const initialResult = await syncManager.syncOnStart();\n if (initialResult) {\n displaySyncResult(initialResult);\n }\n\n // Listen for sync events\n syncManager.on('sync:started', ({ trigger }) => {\n console.log(\n chalk.yellow(\n `\\n\uD83D\uDD04 ${new Date().toLocaleTimeString()} - Starting ${trigger} sync...`\n )\n );\n });\n\n syncManager.on('sync:completed', ({ result }) => {\n displaySyncResult(result);\n });\n\n syncManager.on('sync:failed', ({ result }) => {\n console.log(chalk.red('\u274C Sync failed'));\n if (result.errors.length > 0) {\n result.errors.forEach((error: string) => {\n console.log(chalk.red(` - ${error}`));\n });\n }\n });\n\n // Handle graceful shutdown\n process.on('SIGINT', async () => {\n console.log(chalk.yellow('\\n\u23F9 Stopping sync daemon...'));\n await syncManager.syncOnEnd();\n syncManager.stop();\n db.close();\n process.exit(0);\n });\n\n // Keep process alive\n process.stdin.resume();\n } else {\n // Single sync\n const syncEngine = new LinearSyncEngine(\n taskStore,\n authManager,\n config\n );\n\n console.log(chalk.yellow('\uD83D\uDD04 Syncing with Linear...'));\n\n if (options.dryRun) {\n console.log(chalk.gray('(Dry run - no changes will be made)'));\n }\n\n const result = await syncEngine.sync();\n displaySyncResult(result);\n db.close();\n }\n } catch (error) {\n logger.error('Sync failed', error as Error);\n console.error(chalk.red('Sync failed:'), (error as Error).message);\n process.exit(1);\n }\n });\n\n // Status command\n linear\n .command('status')\n .description('Show Linear sync status')\n .action(async () => {\n try {\n const authManager = new LinearAuthManager(process.cwd());\n const tokens = authManager.loadTokens();\n const apiKey = process.env.LINEAR_API_KEY;\n\n if (!tokens && !apiKey) {\n console.log(chalk.yellow('\u26A0 Not authenticated with Linear'));\n console.log('Run \"stackmemory linear auth\" to connect');\n return;\n }\n\n const client = apiKey\n ? new LinearClient({ apiKey })\n : new LinearClient({\n apiKey: tokens!.accessToken,\n });\n\n const user = await client.getViewer();\n\n if (user) {\n console.log(chalk.green('\u2713 Connected to Linear'));\n console.log(chalk.cyan(` User: ${user.name} (${user.email})`));\n\n // Show teams\n const teams = await client.getTeams();\n if (teams && teams.length > 0) {\n console.log(chalk.cyan('\\n\uD83D\uDCCB Teams:'));\n teams.forEach((team) => {\n console.log(` - ${team.name} (${team.key})`);\n });\n }\n } else {\n console.log(chalk.red('\u274C Could not connect to Linear'));\n }\n } catch (error) {\n console.error(\n chalk.red('Status check failed:'),\n (error as Error).message\n );\n }\n });\n\n // List tasks command\n linear\n .command('tasks')\n .description('List Linear tasks')\n .option('--limit <n>', 'Number of tasks to show', '10')\n .action(async (options) => {\n try {\n const authManager = new LinearAuthManager(process.cwd());\n const tokens = authManager.loadTokens();\n const apiKey = process.env.LINEAR_API_KEY;\n\n if (!tokens && !apiKey) {\n console.log(chalk.yellow('\u26A0 Not authenticated with Linear'));\n return;\n }\n\n const client = apiKey\n ? new LinearClient({ apiKey })\n : new LinearClient({\n apiKey: tokens!.accessToken,\n });\n\n const issues = await client.getIssues({\n limit: parseInt(options.limit),\n });\n\n if (!issues || issues.length === 0) {\n console.log(chalk.gray('No issues found'));\n return;\n }\n\n const table = new Table({\n head: ['ID', 'Title', 'State', 'Priority', 'Assignee'],\n style: { head: ['cyan'] },\n });\n\n issues.forEach((issue) => {\n table.push([\n issue.identifier,\n issue.title.substring(0, 40) +\n (issue.title.length > 40 ? '...' : ''),\n issue.state?.name || '-',\n issue.priority ? `P${issue.priority}` : '-',\n issue.assignee?.name || '-',\n ]);\n });\n\n console.log(table.toString());\n console.log(chalk.gray(`\\nShowing ${issues.length} issues`));\n } catch (error) {\n console.error(\n chalk.red('Failed to list tasks:'),\n (error as Error).message\n );\n }\n });\n\n // Update command - update Linear task status\n linear\n .command('update <issueId>')\n .description('Update Linear task status')\n .option(\n '-s, --status <status>',\n 'New status (todo, in-progress, done, canceled)'\n )\n .option('-t, --title <title>', 'Update task title')\n .option('-d, --description <desc>', 'Update task description')\n .option(\n '-p, --priority <priority>',\n 'Set priority (1=urgent, 2=high, 3=medium, 4=low)'\n )\n .action(async (issueId, options) => {\n try {\n const authManager = new LinearAuthManager(process.cwd());\n const tokens = authManager.loadTokens();\n\n if (!tokens) {\n console.error(\n chalk.red('Not authenticated. Run: stackmemory linear auth')\n );\n return;\n }\n\n const client = new LinearClient({\n apiKey: tokens.accessToken,\n });\n\n // Find the issue first\n let issue = await client.getIssue(issueId);\n if (!issue) {\n // Try finding by identifier\n issue = await client.findIssueByIdentifier(issueId);\n }\n\n if (!issue) {\n console.error(chalk.red(`Issue ${issueId} not found`));\n return;\n }\n\n const updates: any = {};\n\n // Handle status update\n if (options.status) {\n const team = await client.getTeam();\n const states = await client.getWorkflowStates(team.id);\n\n const statusMap: Record<string, string> = {\n todo: 'unstarted',\n 'in-progress': 'started',\n done: 'completed',\n canceled: 'cancelled',\n };\n\n const targetType =\n statusMap[options.status.toLowerCase()] || options.status;\n const targetState = states.find((s) => s.type === targetType);\n\n if (!targetState) {\n console.error(chalk.red(`Invalid status: ${options.status}`));\n console.log(chalk.gray('Available states:'));\n states.forEach((s) =>\n console.log(chalk.gray(` - ${s.name} (${s.type})`))\n );\n return;\n }\n\n updates.stateId = targetState.id;\n }\n\n if (options.title) updates.title = options.title;\n if (options.description) updates.description = options.description;\n if (options.priority) updates.priority = parseInt(options.priority);\n\n // Perform update\n const updatedIssue = await client.updateIssue(issue.id, updates);\n\n console.log(\n chalk.green(\n `\u2713 Updated ${updatedIssue.identifier}: ${updatedIssue.title}`\n )\n );\n if (options.status) {\n console.log(chalk.cyan(` Status: ${updatedIssue.state.name}`));\n }\n console.log(chalk.gray(` ${updatedIssue.url}`));\n } catch (error) {\n console.error(\n chalk.red('Failed to update task:'),\n (error as Error).message\n );\n }\n });\n\n // Config command\n linear\n .command('config')\n .description('Configure Linear sync settings')\n .option('--team <id>', 'Set default team ID')\n .option('--interval <minutes>', 'Auto-sync interval in minutes')\n .option('--direction <dir>', 'Sync direction')\n .option('--conflict <strategy>', 'Conflict resolution strategy')\n .action(async (options) => {\n try {\n const configManager = new LinearConfigManager(process.cwd());\n const config =\n configManager.loadConfig() || configManager.getDefaultConfig();\n\n let updated = false;\n\n if (options.team) {\n // Team ID would need to be stored separately or in a different config\n logger.info('Team ID configuration not yet implemented', {\n teamId: options.team,\n });\n }\n\n if (options.interval) {\n config.interval = parseInt(options.interval);\n updated = true;\n }\n\n if (options.direction) {\n config.direction = options.direction;\n updated = true;\n }\n\n if (options.conflict) {\n config.conflictResolution = options.conflict;\n updated = true;\n }\n\n if (updated) {\n configManager.saveConfig(config);\n console.log(chalk.green('\u2713 Configuration updated'));\n }\n\n // Display current config\n console.log(chalk.cyan('\\n\uD83D\uDCCB Current Configuration:'));\n console.log(` Enabled: ${config.enabled ? 'yes' : 'no'}`);\n console.log(` Interval: ${config.interval} minutes`);\n console.log(` Direction: ${config.direction}`);\n console.log(` Conflicts: ${config.conflictResolution}`);\n } catch (error) {\n console.error(chalk.red('Config failed:'), (error as Error).message);\n }\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Linear integration commands\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport {\n LinearAuthManager,\n LinearOAuthSetup,\n} from '../../integrations/linear/auth.js';\nimport { LinearOAuthServer } from '../../integrations/linear/oauth-server.js';\nimport {\n LinearSyncEngine,\n DEFAULT_SYNC_CONFIG,\n} from '../../integrations/linear/sync.js';\nimport {\n LinearSyncManager,\n DEFAULT_SYNC_MANAGER_CONFIG,\n} from '../../integrations/linear/sync-manager.js';\nimport { LinearConfigManager } from '../../integrations/linear/config.js';\nimport { PebblesTaskStore } from '../../features/tasks/pebbles-task-store.js';\nimport { LinearClient } from '../../integrations/linear/client.js';\nimport { LinearRestClient } from '../../integrations/linear/rest-client.js';\nimport Database from 'better-sqlite3';\nimport { join } from 'path';\nimport { existsSync, mkdirSync } from 'fs';\nimport { logger } from '../../core/monitoring/logger.js';\nimport Table from 'cli-table3';\nimport { SyncResult } from '../../integrations/linear/sync.js';\n\n/**\n * Display sync result in a formatted way\n */\nfunction displaySyncResult(result: SyncResult) {\n if (result.success) {\n console.log(chalk.green('\u2713 Sync completed successfully'));\n } else {\n console.log(chalk.yellow('\u26A0 Sync completed with issues'));\n }\n\n if (\n result.synced.toLinear > 0 ||\n result.synced.fromLinear > 0 ||\n result.synced.updated > 0\n ) {\n console.log(chalk.cyan(' \uD83D\uDCCA Summary:'));\n if (result.synced.toLinear > 0) {\n console.log(` \u2192 Linear: ${result.synced.toLinear} tasks`);\n }\n if (result.synced.fromLinear > 0) {\n console.log(` \u2190 Linear: ${result.synced.fromLinear} tasks`);\n }\n if (result.synced.updated > 0) {\n console.log(` \u2194 Updated: ${result.synced.updated} tasks`);\n }\n }\n\n if (result.conflicts.length > 0) {\n console.log(chalk.yellow(` \u26A0 Conflicts: ${result.conflicts.length}`));\n result.conflicts.slice(0, 3).forEach((conflict) => {\n console.log(` - ${conflict.reason}`);\n });\n if (result.conflicts.length > 3) {\n console.log(` ... and ${result.conflicts.length - 3} more`);\n }\n }\n\n if (result.errors.length > 0) {\n console.log(chalk.red(` \u274C Errors: ${result.errors.length}`));\n result.errors.slice(0, 3).forEach((error) => {\n console.log(` - ${error.substring(0, 80)}`);\n });\n if (result.errors.length > 3) {\n console.log(` ... and ${result.errors.length - 3} more`);\n }\n }\n}\n\nexport function registerLinearCommands(parent: Command) {\n const linear = parent\n .command('linear')\n .description('Linear API integration commands');\n\n // Quick tasks command using memory cache\n linear\n .command('list')\n .alias('ls')\n .description('List Linear tasks (memory-cached)')\n .option('--limit <n>', 'Number of tasks to show', '20')\n .option(\n '--status <status>',\n 'Filter by status (backlog, started, completed, etc.)'\n )\n .option('--my', 'Show only tasks assigned to me')\n .option('--cache', 'Show cache stats only')\n .option('--refresh', 'Force refresh cache')\n .option('--count', 'Show count by status only')\n .action(async (options) => {\n try {\n const apiKey = process.env.LINEAR_API_KEY;\n if (!apiKey) {\n console.log(\n chalk.yellow('\u26A0 Set LINEAR_API_KEY environment variable')\n );\n return;\n }\n\n const restClient = new LinearRestClient(apiKey);\n\n // Show cache stats if requested\n if (options.cache) {\n const stats = restClient.getCacheStats();\n console.log(chalk.cyan('\uD83D\uDCCA Cache Stats:'));\n console.log(` Size: ${stats.size} tasks`);\n console.log(` Age: ${Math.round(stats.age / 1000)}s`);\n console.log(` Fresh: ${stats.fresh ? 'yes' : 'no'}`);\n console.log(\n ` Last sync: ${new Date(stats.lastSync).toLocaleString()}`\n );\n return;\n }\n\n // Show counts only\n if (options.count) {\n const counts = await restClient.getTaskCounts();\n console.log(chalk.cyan('\uD83D\uDCCA Task Counts:'));\n Object.entries(counts)\n .sort(([, a], [, b]) => b - a)\n .forEach(([status, count]) => {\n console.log(` ${status}: ${count}`);\n });\n return;\n }\n\n let tasks;\n if (options.my) {\n tasks = await restClient.getMyTasks();\n } else if (options.status) {\n tasks = await restClient.getTasksByStatus(options.status);\n } else {\n tasks = await restClient.getAllTasks(options.refresh);\n }\n\n if (!tasks || tasks.length === 0) {\n console.log(chalk.gray('No tasks found'));\n return;\n }\n\n // Limit results\n const limit = parseInt(options.limit);\n const displayTasks = tasks.slice(0, limit);\n\n console.log(\n chalk.cyan(\n `\\n\uD83D\uDCCB Linear Tasks (${displayTasks.length}/${tasks.length}):`\n )\n );\n\n displayTasks.forEach((task) => {\n const priority = task.priority ? `P${task.priority}` : '';\n const assignee = task.assignee ? ` @${task.assignee.name}` : '';\n const statusColor =\n task.state.type === 'completed'\n ? chalk.green\n : task.state.type === 'started'\n ? chalk.yellow\n : chalk.gray;\n\n console.log(`${chalk.blue(task.identifier)} ${task.title}`);\n console.log(\n chalk.gray(\n ` ${statusColor(task.state.name)} ${priority}${assignee}`\n )\n );\n });\n\n console.log(\n chalk.gray(\n `\\n${displayTasks.length} shown, ${tasks.length} total tasks`\n )\n );\n } catch (error) {\n console.error(\n chalk.red('Failed to list tasks:'),\n (error as Error).message\n );\n }\n });\n\n // Auth command\n linear\n .command('auth')\n .description('Authenticate with Linear')\n .option('--api-key <key>', 'Use API key instead of OAuth')\n .option('--no-browser', 'Do not open browser automatically')\n .action(async (options) => {\n try {\n if (options.apiKey) {\n // Set API key as environment variable\n process.env.LINEAR_API_KEY = options.apiKey;\n console.log(chalk.green('\u2713 Linear API key set'));\n\n // Test the connection\n const client = new LinearClient({ apiKey: options.apiKey });\n const user = await client.getViewer();\n\n if (user) {\n console.log(\n chalk.cyan(`Connected as: ${user.name} (${user.email})`)\n );\n }\n } else {\n // OAuth flow with callback server\n const authManager = new LinearAuthManager(process.cwd());\n\n // Check if client ID and secret are configured\n const clientId = process.env.LINEAR_CLIENT_ID;\n const clientSecret = process.env.LINEAR_CLIENT_SECRET;\n\n if (!clientId || !clientSecret) {\n console.log(chalk.yellow('\\n\u26A0 Linear OAuth app not configured'));\n console.log(chalk.cyan('\\n\uD83D\uDCDD Setup Instructions:'));\n console.log(\n ' 1. Create a Linear OAuth app at: https://linear.app/settings/api'\n );\n console.log(\n ' 2. Set redirect URI to: http://localhost:3456/auth/linear/callback'\n );\n console.log(' 3. Copy your Client ID and Client Secret');\n console.log(' 4. Set environment variables:');\n console.log(\n chalk.gray(' export LINEAR_CLIENT_ID=\"your_client_id\"')\n );\n console.log(\n chalk.gray(\n ' export LINEAR_CLIENT_SECRET=\"your_client_secret\"'\n )\n );\n console.log(' 5. Run this command again');\n return;\n }\n\n // Save OAuth config\n authManager.saveConfig({\n clientId,\n clientSecret,\n redirectUri: 'http://localhost:3456/auth/linear/callback',\n scopes: ['read', 'write', 'admin'],\n });\n\n // Start OAuth server\n const oauthServer = new LinearOAuthServer(process.cwd());\n const { url } = await oauthServer.start();\n\n // Open browser if not disabled\n if (options.browser !== false) {\n const open = (await import('open')).default;\n await open(url);\n console.log(\n chalk.green('\\n\u2713 Browser opened with authorization page')\n );\n } else {\n console.log(chalk.cyan('\\n\uD83D\uDD17 Open this URL in your browser:'));\n console.log(chalk.underline(url));\n }\n\n console.log(chalk.gray('\\nWaiting for authorization...'));\n console.log(\n chalk.gray(\n 'The server will automatically shut down after authorization.'\n )\n );\n }\n } catch (error) {\n console.error(\n chalk.red('Authentication failed:'),\n (error as Error).message\n );\n process.exit(1);\n }\n });\n\n // Sync command\n linear\n .command('sync')\n .description('Sync tasks with Linear')\n .option(\n '-d, --direction <dir>',\n 'Sync direction: bidirectional, to_linear, from_linear',\n 'bidirectional'\n )\n .option('-t, --team <id>', 'Default Linear team ID')\n .option('--dry-run', 'Preview sync without making changes')\n .option('--daemon', 'Run in daemon mode with periodic sync')\n .option(\n '-i, --interval <minutes>',\n 'Sync interval in minutes (default: 15)'\n )\n .action(async (options) => {\n try {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(chalk.red('\u274C StackMemory not initialized'));\n return;\n }\n\n const db = new Database(dbPath);\n const taskStore = new PebblesTaskStore(projectRoot, db);\n const authManager = new LinearAuthManager(projectRoot);\n\n const config = {\n ...DEFAULT_SYNC_CONFIG,\n direction: options.direction,\n defaultTeamId: options.team,\n enabled: true,\n };\n\n if (options.daemon) {\n // Run in daemon mode with periodic sync\n const managerConfig = {\n ...DEFAULT_SYNC_MANAGER_CONFIG,\n ...config,\n autoSyncInterval: parseInt(options.interval) || 15,\n };\n\n const syncManager = new LinearSyncManager(\n taskStore,\n authManager,\n managerConfig,\n projectRoot\n );\n\n console.log(chalk.green('\uD83D\uDE80 Starting Linear sync daemon'));\n console.log(\n chalk.cyan(\n ` Sync interval: ${managerConfig.autoSyncInterval} minutes`\n )\n );\n console.log(chalk.cyan(` Direction: ${managerConfig.direction}`));\n console.log(chalk.gray(' Press Ctrl+C to stop\\n'));\n\n // Initial sync\n const initialResult = await syncManager.syncOnStart();\n if (initialResult) {\n displaySyncResult(initialResult);\n }\n\n // Listen for sync events\n syncManager.on('sync:started', ({ trigger }) => {\n console.log(\n chalk.yellow(\n `\\n\uD83D\uDD04 ${new Date().toLocaleTimeString()} - Starting ${trigger} sync...`\n )\n );\n });\n\n syncManager.on('sync:completed', ({ result }) => {\n displaySyncResult(result);\n });\n\n syncManager.on('sync:failed', ({ result }) => {\n console.log(chalk.red('\u274C Sync failed'));\n if (result.errors.length > 0) {\n result.errors.forEach((error: string) => {\n console.log(chalk.red(` - ${error}`));\n });\n }\n });\n\n // Handle graceful shutdown\n process.on('SIGINT', async () => {\n console.log(chalk.yellow('\\n\u23F9 Stopping sync daemon...'));\n await syncManager.syncOnEnd();\n syncManager.stop();\n db.close();\n process.exit(0);\n });\n\n // Keep process alive\n process.stdin.resume();\n } else {\n // Single sync\n const syncEngine = new LinearSyncEngine(\n taskStore,\n authManager,\n config\n );\n\n console.log(chalk.yellow('\uD83D\uDD04 Syncing with Linear...'));\n\n if (options.dryRun) {\n console.log(chalk.gray('(Dry run - no changes will be made)'));\n }\n\n const result = await syncEngine.sync();\n displaySyncResult(result);\n db.close();\n }\n } catch (error) {\n logger.error('Sync failed', error as Error);\n console.error(chalk.red('Sync failed:'), (error as Error).message);\n process.exit(1);\n }\n });\n\n // Status command\n linear\n .command('status')\n .description('Show Linear sync status')\n .action(async () => {\n try {\n const authManager = new LinearAuthManager(process.cwd());\n const tokens = authManager.loadTokens();\n const apiKey = process.env.LINEAR_API_KEY;\n\n if (!tokens && !apiKey) {\n console.log(chalk.yellow('\u26A0 Not authenticated with Linear'));\n console.log('Run \"stackmemory linear auth\" to connect');\n return;\n }\n\n const client = apiKey\n ? new LinearClient({ apiKey })\n : new LinearClient({\n apiKey: tokens!.accessToken,\n useBearer: true,\n onUnauthorized: async () => {\n const refreshed = await authManager.refreshAccessToken();\n return refreshed.accessToken;\n },\n });\n\n const user = await client.getViewer();\n\n if (user) {\n console.log(chalk.green('\u2713 Connected to Linear'));\n console.log(chalk.cyan(` User: ${user.name} (${user.email})`));\n\n // Show teams\n const teams = await client.getTeams();\n if (teams && teams.length > 0) {\n console.log(chalk.cyan('\\n\uD83D\uDCCB Teams:'));\n teams.forEach((team) => {\n console.log(` - ${team.name} (${team.key})`);\n });\n }\n } else {\n console.log(chalk.red('\u274C Could not connect to Linear'));\n }\n } catch (error) {\n console.error(\n chalk.red('Status check failed:'),\n (error as Error).message\n );\n }\n });\n\n // List tasks command\n linear\n .command('tasks')\n .description('List Linear tasks')\n .option('--limit <n>', 'Number of tasks to show', '50')\n .option(\n '--status <status>',\n 'Filter by status (backlog, started, completed, etc.)'\n )\n .option('--my', 'Show only tasks assigned to me')\n .option('--cache', 'Show cache stats')\n .option('--refresh', 'Force refresh cache')\n .action(async (options) => {\n try {\n const apiKey = process.env.LINEAR_API_KEY;\n if (!apiKey) {\n console.log(\n chalk.yellow('\u26A0 Set LINEAR_API_KEY environment variable')\n );\n return;\n }\n\n const restClient = new LinearRestClient(apiKey);\n\n // Show cache stats if requested\n if (options.cache) {\n const stats = restClient.getCacheStats();\n console.log(chalk.cyan('\uD83D\uDCCA Cache Stats:'));\n console.log(` Size: ${stats.size} tasks`);\n console.log(` Age: ${Math.round(stats.age / 1000)}s`);\n console.log(` Fresh: ${stats.fresh ? 'yes' : 'no'}`);\n console.log(\n ` Last sync: ${new Date(stats.lastSync).toLocaleString()}`\n );\n return;\n }\n\n let tasks;\n if (options.my) {\n tasks = await restClient.getMyTasks();\n } else if (options.status) {\n tasks = await restClient.getTasksByStatus(options.status);\n } else {\n tasks = await restClient.getAllTasks(options.refresh);\n }\n\n if (!tasks || tasks.length === 0) {\n console.log(chalk.gray('No tasks found'));\n return;\n }\n\n // Limit results\n const limit = parseInt(options.limit);\n const displayTasks = tasks.slice(0, limit);\n\n const table = new Table({\n head: ['ID', 'Title', 'State', 'Priority', 'Assignee'],\n style: { head: ['cyan'] },\n });\n\n displayTasks.forEach((task) => {\n table.push([\n task.identifier,\n task.title.substring(0, 40) + (task.title.length > 40 ? '...' : ''),\n task.state?.name || '-',\n task.priority ? `P${task.priority}` : '-',\n task.assignee?.name || '-',\n ]);\n });\n\n console.log(table.toString());\n\n // Show counts by status\n const counts = await restClient.getTaskCounts();\n console.log(chalk.cyan('\\n\uD83D\uDCCA Task Summary:'));\n Object.entries(counts).forEach(([status, count]) => {\n console.log(` ${status}: ${count}`);\n });\n\n console.log(\n chalk.gray(\n `\\nShowing ${displayTasks.length} of ${tasks.length} total tasks`\n )\n );\n\n const cacheStats = restClient.getCacheStats();\n console.log(\n chalk.gray(\n `Cache: ${cacheStats.size} tasks, age: ${Math.round(cacheStats.age / 1000)}s`\n )\n );\n } catch (error) {\n console.error(\n chalk.red('Failed to list tasks:'),\n (error as Error).message\n );\n }\n });\n\n // Update command - update Linear task status\n linear\n .command('update <issueId>')\n .description('Update Linear task status')\n .option(\n '-s, --status <status>',\n 'New status (todo, in-progress, done, canceled)'\n )\n .option('-t, --title <title>', 'Update task title')\n .option('-d, --description <desc>', 'Update task description')\n .option(\n '-p, --priority <priority>',\n 'Set priority (1=urgent, 2=high, 3=medium, 4=low)'\n )\n .action(async (issueId, options) => {\n try {\n const authManager = new LinearAuthManager(process.cwd());\n const tokens = authManager.loadTokens();\n\n if (!tokens) {\n console.error(\n chalk.red('Not authenticated. Run: stackmemory linear auth')\n );\n return;\n }\n\n const client = new LinearClient({\n apiKey: tokens.accessToken,\n });\n\n // Find the issue first\n let issue = await client.getIssue(issueId);\n if (!issue) {\n // Try finding by identifier\n issue = await client.findIssueByIdentifier(issueId);\n }\n\n if (!issue) {\n console.error(chalk.red(`Issue ${issueId} not found`));\n return;\n }\n\n const updates: any = {};\n\n // Handle status update\n if (options.status) {\n const team = await client.getTeam();\n const states = await client.getWorkflowStates(team.id);\n\n const statusMap: Record<string, string> = {\n todo: 'unstarted',\n 'in-progress': 'started',\n done: 'completed',\n canceled: 'cancelled',\n };\n\n const targetType =\n statusMap[options.status.toLowerCase()] || options.status;\n const targetState = states.find((s) => s.type === targetType);\n\n if (!targetState) {\n console.error(chalk.red(`Invalid status: ${options.status}`));\n console.log(chalk.gray('Available states:'));\n states.forEach((s) =>\n console.log(chalk.gray(` - ${s.name} (${s.type})`))\n );\n return;\n }\n\n updates.stateId = targetState.id;\n }\n\n if (options.title) updates.title = options.title;\n if (options.description) updates.description = options.description;\n if (options.priority) updates.priority = parseInt(options.priority);\n\n // Perform update\n const updatedIssue = await client.updateIssue(issue.id, updates);\n\n console.log(\n chalk.green(\n `\u2713 Updated ${updatedIssue.identifier}: ${updatedIssue.title}`\n )\n );\n if (options.status) {\n console.log(chalk.cyan(` Status: ${updatedIssue.state.name}`));\n }\n console.log(chalk.gray(` ${updatedIssue.url}`));\n } catch (error) {\n console.error(\n chalk.red('Failed to update task:'),\n (error as Error).message\n );\n }\n });\n\n // Config command\n linear\n .command('config')\n .description('Configure Linear sync settings')\n .option('--team <id>', 'Set default team ID')\n .option('--interval <minutes>', 'Auto-sync interval in minutes')\n .option('--direction <dir>', 'Sync direction')\n .option('--conflict <strategy>', 'Conflict resolution strategy')\n .action(async (options) => {\n try {\n const configManager = new LinearConfigManager(process.cwd());\n const config =\n configManager.loadConfig() || configManager.getDefaultConfig();\n\n let updated = false;\n\n if (options.team) {\n // Team ID would need to be stored separately or in a different config\n logger.info('Team ID configuration not yet implemented', {\n teamId: options.team,\n });\n }\n\n if (options.interval) {\n config.interval = parseInt(options.interval);\n updated = true;\n }\n\n if (options.direction) {\n config.direction = options.direction;\n updated = true;\n }\n\n if (options.conflict) {\n config.conflictResolution = options.conflict;\n updated = true;\n }\n\n if (updated) {\n configManager.saveConfig(config);\n console.log(chalk.green('\u2713 Configuration updated'));\n }\n\n // Display current config\n console.log(chalk.cyan('\\n\uD83D\uDCCB Current Configuration:'));\n console.log(` Enabled: ${config.enabled ? 'yes' : 'no'}`);\n console.log(` Interval: ${config.interval} minutes`);\n console.log(` Direction: ${config.direction}`);\n console.log(` Conflicts: ${config.conflictResolution}`);\n } catch (error) {\n console.error(chalk.red('Config failed:'), (error as Error).message);\n }\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }