pi-harness-runtime 1.1.398 → 1.1.402

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 (613) hide show
  1. package/AGENTS.md +44 -2
  2. package/CHANGELOG.md +21 -0
  3. package/RULES.md +28 -0
  4. package/harness/agent-handoff.ts +2 -3
  5. package/harness/autonomous-review.ts +1 -1
  6. package/harness/blackboard.ts +2 -3
  7. package/harness/context-compact-orchestrator.ts +1 -1
  8. package/harness/context-window-manager.ts +2 -2
  9. package/harness/e2e/playwright-runner.ts +6 -4
  10. package/harness/herdr-agents.ts +1 -1
  11. package/harness/job-state-machine.ts +1 -1
  12. package/harness/langchain/daemon.ts +3 -3
  13. package/harness/langchain/graph.ts +2 -2
  14. package/harness/langchain/ping-pong-middleware.ts +2 -2
  15. package/harness/loop-code-agent.ts +6 -4
  16. package/harness/loop-controller.ts +1 -1
  17. package/harness/loop-review-agent.ts +1 -1
  18. package/harness/loop-types.ts +1 -1
  19. package/harness/master-planner.ts +1 -1
  20. package/harness/project-detector/detector.ts +1 -2
  21. package/harness/repair-engine.ts +2 -4
  22. package/harness/service-diagnostics.ts +1 -1
  23. package/harness/skill-sync.ts +3 -3
  24. package/index.ts +276 -55
  25. package/mirror.ts +1 -1
  26. package/package.json +5 -3
  27. package/packages/a2a-adapter/dist/discovery.d.ts.map +1 -1
  28. package/packages/a2a-adapter/dist/discovery.js +0 -1
  29. package/packages/a2a-adapter/dist/discovery.js.map +1 -1
  30. package/packages/a2a-adapter/package.json +1 -1
  31. package/packages/a2a-adapter/src/discovery.ts +0 -1
  32. package/packages/agent-policy/package.json +1 -1
  33. package/packages/architecture-generator/package.json +1 -1
  34. package/packages/auth/dist/index.d.ts +9 -0
  35. package/packages/auth/dist/index.d.ts.map +1 -0
  36. package/packages/auth/dist/index.js +9 -0
  37. package/packages/auth/dist/index.js.map +1 -0
  38. package/packages/auth/package.json +1 -1
  39. package/packages/auth/src/index.ts +9 -0
  40. package/packages/autonomous-refactor/package.json +1 -1
  41. package/packages/autonomous-runtime/package.json +1 -1
  42. package/packages/cache-strategy/package.json +1 -1
  43. package/packages/capability-registry/package.json +1 -1
  44. package/packages/checkpoint/package.json +1 -1
  45. package/packages/cli-plugin-sdk/package.json +1 -1
  46. package/packages/clipboard/package.json +1 -1
  47. package/packages/clipboard-plugin/package.json +1 -1
  48. package/packages/code-generation/package.json +1 -1
  49. package/packages/code-review/package.json +1 -1
  50. package/packages/codex-adapter/package.json +1 -1
  51. package/packages/codex-watcher/package.json +1 -1
  52. package/packages/config-capture/dist/index.d.ts +52 -0
  53. package/packages/config-capture/dist/index.d.ts.map +1 -0
  54. package/packages/config-capture/dist/index.js +261 -0
  55. package/packages/config-capture/dist/index.js.map +1 -0
  56. package/packages/config-capture/package.json +1 -1
  57. package/packages/connection-runtime/package.json +1 -1
  58. package/packages/context-compiler/package.json +1 -1
  59. package/packages/context-discovery/package.json +1 -1
  60. package/packages/context-manager/package.json +1 -1
  61. package/packages/contracts/package.json +1 -1
  62. package/packages/cookie-sanitizer/package.json +1 -1
  63. package/packages/cost-optimizer/package.json +1 -1
  64. package/packages/dependency-analyzer/package.json +1 -1
  65. package/packages/django-plugin/package.json +1 -1
  66. package/packages/doc-generator/package.json +1 -1
  67. package/packages/durable-review/package.json +1 -1
  68. package/packages/e2e-tester/package.json +1 -1
  69. package/packages/evaluation-engine/package.json +1 -1
  70. package/packages/evaluation-runner/package.json +1 -1
  71. package/packages/event-bus/package.json +1 -1
  72. package/packages/event-sink/package.json +1 -1
  73. package/packages/event-store/package.json +1 -1
  74. package/packages/experience-replay/package.json +1 -1
  75. package/packages/feedback-collector/package.json +1 -1
  76. package/packages/file-copy-helper/dist/extension.d.ts +15 -0
  77. package/packages/file-copy-helper/dist/extension.d.ts.map +1 -0
  78. package/packages/file-copy-helper/dist/extension.debug.d.ts +15 -0
  79. package/packages/file-copy-helper/dist/extension.debug.d.ts.map +1 -0
  80. package/packages/file-copy-helper/dist/extension.debug.js +215 -0
  81. package/packages/file-copy-helper/dist/extension.debug.js.map +1 -0
  82. package/packages/file-copy-helper/dist/extension.js +222 -0
  83. package/packages/file-copy-helper/dist/extension.js.map +1 -0
  84. package/packages/file-copy-helper/dist/index.d.ts +3 -0
  85. package/packages/file-copy-helper/dist/index.d.ts.map +1 -0
  86. package/packages/file-copy-helper/dist/index.js +3 -0
  87. package/packages/file-copy-helper/dist/index.js.map +1 -0
  88. package/packages/file-copy-helper/dist/intent-detector.d.ts +21 -0
  89. package/packages/file-copy-helper/dist/intent-detector.d.ts.map +1 -0
  90. package/packages/file-copy-helper/dist/intent-detector.js +348 -0
  91. package/packages/file-copy-helper/dist/intent-detector.js.map +1 -0
  92. package/packages/file-copy-helper/package.json +1 -1
  93. package/packages/framework-detector/package.json +1 -1
  94. package/packages/framework-plugin-sdk/package.json +1 -1
  95. package/packages/frappe-plugin/package.json +1 -1
  96. package/packages/generic-web-plugin/package.json +1 -1
  97. package/packages/health-monitor/package.json +1 -1
  98. package/packages/intent-analyzer/package.json +1 -1
  99. package/packages/jev-judge/dist/auto-continue.d.ts +161 -2
  100. package/packages/jev-judge/dist/auto-continue.d.ts.map +1 -1
  101. package/packages/jev-judge/dist/auto-continue.js +267 -22
  102. package/packages/jev-judge/dist/auto-continue.js.map +1 -1
  103. package/packages/jev-judge/dist/index.d.ts +2 -0
  104. package/packages/jev-judge/dist/index.d.ts.map +1 -1
  105. package/packages/jev-judge/dist/index.js +2 -0
  106. package/packages/jev-judge/dist/index.js.map +1 -1
  107. package/packages/jev-judge/dist/question-risk.d.ts +50 -0
  108. package/packages/jev-judge/dist/question-risk.d.ts.map +1 -0
  109. package/packages/jev-judge/dist/question-risk.js +100 -0
  110. package/packages/jev-judge/dist/question-risk.js.map +1 -0
  111. package/packages/jev-judge/package.json +1 -1
  112. package/packages/jev-judge/src/auto-continue.ts +426 -29
  113. package/packages/jev-judge/src/index.ts +4 -0
  114. package/packages/jev-judge/src/question-risk.ts +151 -0
  115. package/packages/jev-judge/tests/auto-continue-context.test.ts +221 -0
  116. package/packages/jev-judge/tests/outcome-application.test.ts +132 -0
  117. package/packages/jev-judge/tests/question-risk.test.ts +116 -0
  118. package/packages/knowledge-graph/package.json +1 -1
  119. package/packages/knowledge-retrieval/package.json +1 -1
  120. package/packages/laravel-plugin/package.json +1 -1
  121. package/packages/learning-engine/package.json +1 -1
  122. package/packages/logging/README.md +36 -3
  123. package/packages/logging/dist/config.d.ts +7 -0
  124. package/packages/logging/dist/config.d.ts.map +1 -1
  125. package/packages/logging/dist/config.js +14 -0
  126. package/packages/logging/dist/config.js.map +1 -1
  127. package/packages/logging/dist/incidents/schema.d.ts +111 -0
  128. package/packages/logging/dist/incidents/schema.d.ts.map +1 -0
  129. package/packages/logging/dist/incidents/schema.js +0 -0
  130. package/packages/logging/dist/incidents/schema.js.map +1 -0
  131. package/packages/logging/dist/index.d.ts +2 -0
  132. package/packages/logging/dist/index.d.ts.map +1 -1
  133. package/packages/logging/dist/index.js +2 -0
  134. package/packages/logging/dist/index.js.map +1 -1
  135. package/packages/logging/dist/server/http.d.ts +4 -3
  136. package/packages/logging/dist/server/http.d.ts.map +1 -1
  137. package/packages/logging/dist/server/http.js +35 -3
  138. package/packages/logging/dist/server/http.js.map +1 -1
  139. package/packages/logging/dist/server/incident-qdrant.d.ts +83 -0
  140. package/packages/logging/dist/server/incident-qdrant.d.ts.map +1 -0
  141. package/packages/logging/dist/server/incident-qdrant.js +129 -0
  142. package/packages/logging/dist/server/incident-qdrant.js.map +1 -0
  143. package/packages/logging/dist/server/incident-store.d.ts +76 -0
  144. package/packages/logging/dist/server/incident-store.d.ts.map +1 -0
  145. package/packages/logging/dist/server/incident-store.js +157 -0
  146. package/packages/logging/dist/server/incident-store.js.map +1 -0
  147. package/packages/logging/dist/server/index.d.ts +4 -0
  148. package/packages/logging/dist/server/index.d.ts.map +1 -1
  149. package/packages/logging/dist/server/index.js +2 -0
  150. package/packages/logging/dist/server/index.js.map +1 -1
  151. package/packages/logging/dist/server/service.d.ts +33 -0
  152. package/packages/logging/dist/server/service.d.ts.map +1 -1
  153. package/packages/logging/dist/server/service.js +63 -0
  154. package/packages/logging/dist/server/service.js.map +1 -1
  155. package/packages/logging/dist/shipper.d.ts +74 -3
  156. package/packages/logging/dist/shipper.d.ts.map +1 -1
  157. package/packages/logging/dist/shipper.js +88 -5
  158. package/packages/logging/dist/shipper.js.map +1 -1
  159. package/packages/logging/dist/singleton.d.ts.map +1 -1
  160. package/packages/logging/dist/singleton.js +1 -0
  161. package/packages/logging/dist/singleton.js.map +1 -1
  162. package/packages/logging/package.json +1 -1
  163. package/packages/logging/src/config.ts +22 -0
  164. package/packages/logging/src/incidents/schema.ts +0 -0
  165. package/packages/logging/src/index.ts +17 -0
  166. package/packages/logging/src/server/http.ts +42 -3
  167. package/packages/logging/src/server/incident-qdrant.ts +177 -0
  168. package/packages/logging/src/server/incident-store.ts +192 -0
  169. package/packages/logging/src/server/index.ts +21 -0
  170. package/packages/logging/src/server/service.ts +79 -0
  171. package/packages/logging/src/shipper.ts +120 -5
  172. package/packages/logging/src/singleton.ts +1 -0
  173. package/packages/logging/test/fanout.test.ts +186 -0
  174. package/packages/logging/test/incidents.test.ts +404 -0
  175. package/packages/mcp-adapter/package.json +1 -1
  176. package/packages/memory-engine/package.json +1 -1
  177. package/packages/milestone-manager/package.json +1 -1
  178. package/packages/model-registry/package.json +1 -1
  179. package/packages/nextjs-plugin/package.json +1 -1
  180. package/packages/notification/dist/adapters/detail-format.d.ts +10 -2
  181. package/packages/notification/dist/adapters/detail-format.d.ts.map +1 -1
  182. package/packages/notification/dist/adapters/detail-format.js +39 -0
  183. package/packages/notification/dist/adapters/detail-format.js.map +1 -1
  184. package/packages/notification/dist/adapters/line-adapter.d.ts +33 -0
  185. package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -1
  186. package/packages/notification/dist/adapters/line-adapter.js +84 -7
  187. package/packages/notification/dist/adapters/line-adapter.js.map +1 -1
  188. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
  189. package/packages/notification/dist/adapters/telegram-adapter.js +6 -2
  190. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
  191. package/packages/notification/dist/notification-center.d.ts.map +1 -1
  192. package/packages/notification/dist/notification-center.js +59 -7
  193. package/packages/notification/dist/notification-center.js.map +1 -1
  194. package/packages/notification/dist/pending-question.d.ts +69 -2
  195. package/packages/notification/dist/pending-question.d.ts.map +1 -1
  196. package/packages/notification/dist/pending-question.js +88 -2
  197. package/packages/notification/dist/pending-question.js.map +1 -1
  198. package/packages/notification/dist/types.d.ts +18 -0
  199. package/packages/notification/dist/types.d.ts.map +1 -1
  200. package/packages/notification/package.json +1 -1
  201. package/packages/notification/src/adapters/detail-format.ts +42 -2
  202. package/packages/notification/src/adapters/line-adapter.ts +94 -7
  203. package/packages/notification/src/adapters/telegram-adapter.ts +6 -2
  204. package/packages/notification/src/notification-center.ts +65 -8
  205. package/packages/notification/src/pending-question.ts +160 -8
  206. package/packages/notification/src/types.ts +18 -0
  207. package/packages/notification/test/approval-payload.test.ts +269 -0
  208. package/packages/notification/test/pending-question-lifecycle.test.ts +195 -0
  209. package/packages/observability/package.json +1 -1
  210. package/packages/okf-indexer/dist/index.d.ts +9 -0
  211. package/packages/okf-indexer/dist/index.d.ts.map +1 -0
  212. package/packages/okf-indexer/dist/index.js +9 -0
  213. package/packages/okf-indexer/dist/index.js.map +1 -0
  214. package/packages/okf-indexer/package.json +1 -1
  215. package/packages/okf-indexer/src/index.ts +9 -0
  216. package/packages/paperclip-integration/package.json +1 -1
  217. package/packages/performance-optimizer/package.json +1 -1
  218. package/packages/permission-mode/package.json +1 -1
  219. package/packages/privilege-broker/package.json +1 -1
  220. package/packages/project-analyzer/package.json +1 -1
  221. package/packages/project-bootstrap/package.json +1 -1
  222. package/packages/projection-engine/package.json +1 -1
  223. package/packages/prompt-compiler/package.json +1 -1
  224. package/packages/prompt-versioning/package.json +1 -1
  225. package/packages/provider-adapter-sdk/package.json +1 -1
  226. package/packages/provider-router/dist/provider-router.d.ts.map +1 -1
  227. package/packages/provider-router/dist/types.d.ts +2 -2
  228. package/packages/provider-router/dist/types.d.ts.map +1 -1
  229. package/packages/provider-router/dist/types.js +1 -1
  230. package/packages/provider-router/package.json +1 -1
  231. package/packages/provider-router/src/types.ts +2 -2
  232. package/packages/provider-selector/package.json +1 -1
  233. package/packages/providers/package.json +1 -1
  234. package/packages/qdrant-skills/package.json +1 -1
  235. package/packages/quota-manager/package.json +1 -1
  236. package/packages/rate-limiter/package.json +1 -1
  237. package/packages/react-vite-plugin/package.json +1 -1
  238. package/packages/relay/package.json +1 -1
  239. package/packages/release-manager/package.json +1 -1
  240. package/packages/requirement-compiler/package.json +1 -1
  241. package/packages/runtime/package.json +1 -1
  242. package/packages/scheduler/dist/index.d.ts +9 -0
  243. package/packages/scheduler/dist/index.d.ts.map +1 -0
  244. package/packages/scheduler/dist/index.js +9 -0
  245. package/packages/scheduler/dist/index.js.map +1 -0
  246. package/packages/scheduler/dist/scheduler.d.ts +17 -0
  247. package/packages/scheduler/dist/scheduler.d.ts.map +1 -0
  248. package/packages/scheduler/dist/scheduler.js +41 -0
  249. package/packages/scheduler/dist/scheduler.js.map +1 -0
  250. package/packages/scheduler/package.json +1 -1
  251. package/packages/scheduler/src/index.ts +9 -0
  252. package/packages/scheduler-adapter/package.json +1 -1
  253. package/packages/session/package.json +1 -1
  254. package/packages/session-api/package.json +1 -1
  255. package/packages/session-export/package.json +1 -1
  256. package/packages/shared-context/dist/index.d.ts +7 -0
  257. package/packages/shared-context/dist/index.d.ts.map +1 -0
  258. package/packages/shared-context/dist/index.js +7 -0
  259. package/packages/shared-context/dist/index.js.map +1 -0
  260. package/packages/shared-context/dist/shared-context.d.ts +12 -0
  261. package/packages/shared-context/dist/shared-context.d.ts.map +1 -0
  262. package/packages/shared-context/dist/shared-context.js +39 -0
  263. package/packages/shared-context/dist/shared-context.js.map +1 -0
  264. package/packages/shared-context/package.json +1 -1
  265. package/packages/skill-mcp-client/dist/client.d.ts +56 -0
  266. package/packages/skill-mcp-client/dist/client.d.ts.map +1 -0
  267. package/packages/skill-mcp-client/dist/client.js +101 -0
  268. package/packages/skill-mcp-client/dist/client.js.map +1 -0
  269. package/packages/skill-mcp-client/dist/errors.d.ts +44 -0
  270. package/packages/skill-mcp-client/dist/errors.d.ts.map +1 -0
  271. package/packages/skill-mcp-client/dist/errors.js +68 -0
  272. package/packages/skill-mcp-client/dist/errors.js.map +1 -0
  273. package/packages/skill-mcp-client/dist/index.d.ts +9 -0
  274. package/packages/skill-mcp-client/dist/index.d.ts.map +1 -0
  275. package/packages/skill-mcp-client/dist/index.js +9 -0
  276. package/packages/skill-mcp-client/dist/index.js.map +1 -0
  277. package/packages/skill-mcp-client/dist/types.d.ts +106 -0
  278. package/packages/skill-mcp-client/dist/types.d.ts.map +1 -0
  279. package/packages/skill-mcp-client/dist/types.js +14 -0
  280. package/packages/skill-mcp-client/dist/types.js.map +1 -0
  281. package/packages/skill-mcp-client/package.json +1 -1
  282. package/packages/skill-registry/package.json +1 -1
  283. package/packages/skills/package.json +1 -5
  284. package/packages/sprint-planner/package.json +1 -1
  285. package/packages/subscription-engine/package.json +1 -1
  286. package/packages/task-compiler/package.json +1 -1
  287. package/packages/telegram/package.json +1 -1
  288. package/packages/telegram/src/agent-messages.d.ts +28 -0
  289. package/packages/telegram/src/agent-messages.js +90 -0
  290. package/packages/telegram/src/bindings.d.ts +296 -0
  291. package/packages/telegram/src/bindings.js +1086 -0
  292. package/packages/telegram/src/bus.d.ts +759 -0
  293. package/packages/telegram/src/bus.js +2732 -0
  294. package/packages/telegram/src/commands.d.ts +761 -0
  295. package/packages/telegram/src/commands.js +2622 -0
  296. package/packages/telegram/src/config.d.ts +222 -0
  297. package/packages/telegram/src/config.js +844 -0
  298. package/packages/telegram/src/delivery.d.ts +161 -0
  299. package/packages/telegram/src/delivery.js +550 -0
  300. package/packages/telegram/src/extension.d.ts +7 -0
  301. package/packages/telegram/src/extension.js +2444 -0
  302. package/packages/telegram/src/inbound.d.ts +94 -0
  303. package/packages/telegram/src/inbound.js +478 -0
  304. package/packages/telegram/src/index.d.ts +6 -0
  305. package/packages/telegram/src/index.js +6 -0
  306. package/packages/telegram/src/keyboard.d.ts +21 -0
  307. package/packages/telegram/src/keyboard.js +37 -0
  308. package/packages/telegram/src/lifecycle.d.ts +210 -0
  309. package/packages/telegram/src/lifecycle.js +538 -0
  310. package/packages/telegram/src/pi.d.ts +76 -0
  311. package/packages/telegram/src/pi.js +130 -0
  312. package/packages/telegram/src/polling.d.ts +332 -0
  313. package/packages/telegram/src/polling.js +1219 -0
  314. package/packages/telegram/src/replies.d.ts +210 -0
  315. package/packages/telegram/src/replies.js +752 -0
  316. package/packages/telegram/src/routing.d.ts +388 -0
  317. package/packages/telegram/src/routing.js +7886 -0
  318. package/packages/telegram/src/runtime.d.ts +159 -0
  319. package/packages/telegram/src/runtime.js +351 -0
  320. package/packages/telegram/src/telegram-api.d.ts +564 -0
  321. package/packages/telegram/src/telegram-api.js +1332 -0
  322. package/packages/telegram/src/turns.d.ts +108 -0
  323. package/packages/telegram/src/turns.js +482 -0
  324. package/packages/telegram/src/updates.d.ts +1545 -0
  325. package/packages/telegram/src/updates.js +6420 -0
  326. package/packages/tencentdb-memory/package.json +1 -1
  327. package/packages/tencentdb-sync/package.json +1 -1
  328. package/packages/test-data-generator/package.json +1 -1
  329. package/packages/test-generator/package.json +1 -1
  330. package/packages/todo-bd-sync/dist/detector.d.ts +54 -0
  331. package/packages/todo-bd-sync/dist/detector.d.ts.map +1 -0
  332. package/packages/todo-bd-sync/dist/detector.js +132 -0
  333. package/packages/todo-bd-sync/dist/detector.js.map +1 -0
  334. package/packages/todo-bd-sync/dist/extension.d.ts +30 -0
  335. package/packages/todo-bd-sync/dist/extension.d.ts.map +1 -0
  336. package/packages/todo-bd-sync/dist/extension.js +35 -0
  337. package/packages/todo-bd-sync/dist/extension.js.map +1 -0
  338. package/packages/todo-bd-sync/dist/index.d.ts +87 -0
  339. package/packages/todo-bd-sync/dist/index.d.ts.map +1 -0
  340. package/packages/todo-bd-sync/dist/index.js +296 -0
  341. package/packages/todo-bd-sync/dist/index.js.map +1 -0
  342. package/packages/todo-bd-sync/dist/sync.d.ts +72 -0
  343. package/packages/todo-bd-sync/dist/sync.d.ts.map +1 -0
  344. package/packages/todo-bd-sync/dist/sync.js +290 -0
  345. package/packages/todo-bd-sync/dist/sync.js.map +1 -0
  346. package/packages/todo-bd-sync/dist/task-analyzer.d.ts +49 -0
  347. package/packages/todo-bd-sync/dist/task-analyzer.d.ts.map +1 -0
  348. package/packages/todo-bd-sync/dist/task-analyzer.js +240 -0
  349. package/packages/todo-bd-sync/dist/task-analyzer.js.map +1 -0
  350. package/packages/todo-bd-sync/dist/todo-reminder.d.ts +126 -0
  351. package/packages/todo-bd-sync/dist/todo-reminder.d.ts.map +1 -0
  352. package/packages/todo-bd-sync/dist/todo-reminder.js +329 -0
  353. package/packages/todo-bd-sync/dist/todo-reminder.js.map +1 -0
  354. package/packages/todo-bd-sync/dist/types.d.ts +65 -0
  355. package/packages/todo-bd-sync/dist/types.d.ts.map +1 -0
  356. package/packages/todo-bd-sync/dist/types.js +67 -0
  357. package/packages/todo-bd-sync/dist/types.js.map +1 -0
  358. package/packages/todo-bd-sync/package.json +1 -1
  359. package/packages/token-estimation/dist/index.d.ts +94 -0
  360. package/packages/token-estimation/dist/index.d.ts.map +1 -0
  361. package/packages/token-estimation/dist/index.js +115 -0
  362. package/packages/token-estimation/dist/index.js.map +1 -0
  363. package/packages/token-estimation/package.json +1 -1
  364. package/packages/token-optimizer/package.json +1 -1
  365. package/packages/trajectory/package.json +1 -1
  366. package/packages/tui/package.json +1 -1
  367. package/packages/types/dist/ai-providers.d.ts +36 -0
  368. package/packages/types/dist/ai-providers.d.ts.map +1 -0
  369. package/packages/types/dist/ai-providers.js +66 -0
  370. package/packages/types/dist/ai-providers.js.map +1 -0
  371. package/packages/types/dist/index.d.ts +12 -0
  372. package/packages/types/dist/index.d.ts.map +1 -0
  373. package/packages/types/dist/index.js +12 -0
  374. package/packages/types/dist/index.js.map +1 -0
  375. package/packages/types/package.json +5 -5
  376. package/packages/types/src/index.ts +12 -0
  377. package/packages/voice-api/package.json +1 -1
  378. package/packages/webmcp-tester/package.json +1 -1
  379. package/packages/wiki/package.json +1 -1
  380. package/packages/workflow-events/package.json +1 -1
  381. package/packages/workspace-scanner/package.json +1 -1
  382. package/packages/worktree/package.json +1 -1
  383. package/packages/worktree/worktree.ts +1 -1
  384. package/packages/write-review/package.json +1 -1
  385. package/renderer.ts +1 -1
  386. package/scripts/build-packages.ts +162 -0
  387. package/scripts/relay-client.ts +2 -2
  388. package/scripts/typecheck-packages.mjs +3 -3
  389. package/scripts/unified-webhook-server.ts +22 -10
  390. package/scripts/verify-package-contents.ts +345 -0
  391. package/scripts/ws-server.ts +1 -1
  392. package/tracker.ts +1 -1
  393. package/harness/browser-scrapers/base-browser-scraper.d.ts +0 -91
  394. package/harness/browser-scrapers/chrome-profile-manager.d.ts +0 -80
  395. package/harness/browser-scrapers/codex-browser-scraper.d.ts +0 -60
  396. package/harness/browser-scrapers/index.d.ts +0 -29
  397. package/harness/browser-scrapers/zai-browser-scraper.d.ts +0 -79
  398. package/harness/e2e/browser-scrapers/base-browser-scraper.d.ts +0 -92
  399. package/harness/e2e/browser-scrapers/chrome-profile-manager.d.ts +0 -81
  400. package/harness/e2e/browser-scrapers/codex-browser-scraper.d.ts +0 -61
  401. package/harness/e2e/browser-scrapers/index.d.ts +0 -30
  402. package/harness/e2e/browser-scrapers/zai-browser-scraper.d.ts +0 -80
  403. package/harness/langchain/agents.d.ts +0 -143
  404. package/harness/langchain/agents.test.d.ts +0 -2
  405. package/harness/langchain/checkpointer.d.ts +0 -48
  406. package/harness/langchain/checkpointer.test.d.ts +0 -8
  407. package/harness/langchain/cron-cli.d.ts +0 -12
  408. package/harness/langchain/daemon.d.ts +0 -161
  409. package/harness/langchain/daemon.test.d.ts +0 -11
  410. package/harness/langchain/file-tools.d.ts +0 -97
  411. package/harness/langchain/graph.d.ts +0 -706
  412. package/harness/langchain/model-router.d.ts +0 -63
  413. package/harness/langchain/model-router.test.d.ts +0 -2
  414. package/harness/langchain/models.d.ts +0 -72
  415. package/harness/langchain/ping-pong-middleware.d.ts +0 -28
  416. package/harness/langchain/ping-pong-middleware.test.d.ts +0 -2
  417. package/harness/langchain/run.d.ts +0 -15
  418. package/harness/langchain/scoreboard.test.d.ts +0 -13
  419. package/harness/langchain/status-line.d.ts +0 -91
  420. package/harness/langchain/status-line.test.d.ts +0 -8
  421. package/harness/langchain/surge.d.ts +0 -111
  422. package/harness/langchain/surge.test.d.ts +0 -10
  423. package/harness/langchain/widget.d.ts +0 -105
  424. package/harness/langchain/widget.test.d.ts +0 -8
  425. package/packages/autonomous-runtime/dist/worker.d.ts +0 -63
  426. package/packages/autonomous-runtime/dist/worker.js +0 -133
  427. package/packages/capability-registry/src/types.d.ts +0 -47
  428. package/packages/clipboard/dist/clipboard.d.ts +0 -11
  429. package/packages/clipboard/dist/clipboard.js +0 -40
  430. package/packages/clipboard/dist/index.d.ts +0 -2
  431. package/packages/clipboard/dist/index.js +0 -2
  432. package/packages/clipboard/dist/types.d.ts +0 -13
  433. package/packages/clipboard/dist/types.js +0 -5
  434. package/packages/context-discovery/dist/discover.d.ts +0 -3
  435. package/packages/context-discovery/dist/discover.js +0 -42
  436. package/packages/context-discovery/dist/discovery.d.ts +0 -28
  437. package/packages/context-discovery/dist/discovery.js +0 -21
  438. package/packages/context-discovery/dist/index.d.ts +0 -3
  439. package/packages/context-discovery/dist/index.js +0 -2
  440. package/packages/context-discovery/dist/types.d.ts +0 -16
  441. package/packages/context-discovery/dist/types.js +0 -2
  442. package/packages/event-bus/dist/bus.d.ts +0 -15
  443. package/packages/event-bus/dist/bus.js +0 -90
  444. package/packages/event-bus/dist/index.d.ts +0 -4
  445. package/packages/event-bus/dist/index.js +0 -3
  446. package/packages/event-bus/dist/test/bus.test.js +0 -52
  447. package/packages/event-bus/dist/types.d.ts +0 -27
  448. package/packages/event-bus/dist/types.js +0 -10
  449. package/packages/event-store/dist/index.d.ts +0 -3
  450. package/packages/event-store/dist/index.js +0 -2
  451. package/packages/event-store/dist/store.d.ts +0 -15
  452. package/packages/event-store/dist/store.js +0 -131
  453. package/packages/event-store/dist/test/store.test.js +0 -57
  454. package/packages/event-store/dist/types.d.ts +0 -48
  455. package/packages/event-store/dist/types.js +0 -5
  456. package/packages/event-store/src/types.d.ts +0 -48
  457. package/packages/file-copy-helper/dist/src/extension.js +0 -186
  458. package/packages/model-registry/src/types.d.ts +0 -63
  459. package/packages/notification/dist/src/adapters/email-adapter.d.ts +0 -17
  460. package/packages/notification/dist/src/adapters/email-adapter.d.ts.map +0 -1
  461. package/packages/notification/dist/src/adapters/email-adapter.js +0 -89
  462. package/packages/notification/dist/src/adapters/email-adapter.js.map +0 -1
  463. package/packages/notification/dist/src/adapters/line-adapter.d.ts +0 -17
  464. package/packages/notification/dist/src/adapters/line-adapter.d.ts.map +0 -1
  465. package/packages/notification/dist/src/adapters/line-adapter.js +0 -99
  466. package/packages/notification/dist/src/adapters/line-adapter.js.map +0 -1
  467. package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts +0 -17
  468. package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts.map +0 -1
  469. package/packages/notification/dist/src/adapters/ntfy-adapter.js +0 -84
  470. package/packages/notification/dist/src/adapters/ntfy-adapter.js.map +0 -1
  471. package/packages/notification/dist/src/adapters/telegram-adapter.d.ts +0 -56
  472. package/packages/notification/dist/src/adapters/telegram-adapter.d.ts.map +0 -1
  473. package/packages/notification/dist/src/adapters/telegram-adapter.js +0 -251
  474. package/packages/notification/dist/src/adapters/telegram-adapter.js.map +0 -1
  475. package/packages/notification/dist/src/adapters/webhook-adapter.d.ts +0 -15
  476. package/packages/notification/dist/src/adapters/webhook-adapter.d.ts.map +0 -1
  477. package/packages/notification/dist/src/adapters/webhook-adapter.js +0 -64
  478. package/packages/notification/dist/src/adapters/webhook-adapter.js.map +0 -1
  479. package/packages/notification/dist/src/base-adapter.d.ts +0 -36
  480. package/packages/notification/dist/src/base-adapter.d.ts.map +0 -1
  481. package/packages/notification/dist/src/base-adapter.js +0 -39
  482. package/packages/notification/dist/src/base-adapter.js.map +0 -1
  483. package/packages/notification/dist/src/index.d.ts +0 -12
  484. package/packages/notification/dist/src/index.d.ts.map +0 -1
  485. package/packages/notification/dist/src/index.js +0 -12
  486. package/packages/notification/dist/src/index.js.map +0 -1
  487. package/packages/notification/dist/src/notification-center.d.ts +0 -89
  488. package/packages/notification/dist/src/notification-center.d.ts.map +0 -1
  489. package/packages/notification/dist/src/notification-center.js +0 -356
  490. package/packages/notification/dist/src/notification-center.js.map +0 -1
  491. package/packages/notification/dist/src/notification-policy.d.ts +0 -66
  492. package/packages/notification/dist/src/notification-policy.d.ts.map +0 -1
  493. package/packages/notification/dist/src/notification-policy.js +0 -153
  494. package/packages/notification/dist/src/notification-policy.js.map +0 -1
  495. package/packages/notification/dist/src/telegram-webhook-handler.d.ts +0 -86
  496. package/packages/notification/dist/src/telegram-webhook-handler.d.ts.map +0 -1
  497. package/packages/notification/dist/src/telegram-webhook-handler.js +0 -149
  498. package/packages/notification/dist/src/telegram-webhook-handler.js.map +0 -1
  499. package/packages/notification/dist/src/types.d.ts +0 -106
  500. package/packages/notification/dist/src/types.d.ts.map +0 -1
  501. package/packages/notification/dist/src/types.js +0 -7
  502. package/packages/notification/dist/src/types.js.map +0 -1
  503. package/packages/projection-engine/dist/engine.d.ts +0 -61
  504. package/packages/projection-engine/dist/engine.js +0 -76
  505. package/packages/projection-engine/dist/index.d.ts +0 -2
  506. package/packages/projection-engine/dist/index.js +0 -2
  507. package/packages/projection-engine/dist/project.d.ts +0 -3
  508. package/packages/projection-engine/dist/project.js +0 -24
  509. package/packages/projection-engine/dist/types.d.ts +0 -55
  510. package/packages/projection-engine/dist/types.js +0 -5
  511. package/packages/projection-engine/src/types.d.ts +0 -55
  512. package/packages/provider-adapter-sdk/dist/src/builder.d.ts +0 -140
  513. package/packages/provider-adapter-sdk/dist/src/builder.d.ts.map +0 -1
  514. package/packages/provider-adapter-sdk/dist/src/builder.js +0 -332
  515. package/packages/provider-adapter-sdk/dist/src/builder.js.map +0 -1
  516. package/packages/provider-adapter-sdk/dist/src/errors.d.ts +0 -71
  517. package/packages/provider-adapter-sdk/dist/src/errors.d.ts.map +0 -1
  518. package/packages/provider-adapter-sdk/dist/src/errors.js +0 -111
  519. package/packages/provider-adapter-sdk/dist/src/errors.js.map +0 -1
  520. package/packages/provider-adapter-sdk/dist/src/index.d.ts +0 -15
  521. package/packages/provider-adapter-sdk/dist/src/index.d.ts.map +0 -1
  522. package/packages/provider-adapter-sdk/dist/src/index.js +0 -19
  523. package/packages/provider-adapter-sdk/dist/src/index.js.map +0 -1
  524. package/packages/provider-adapter-sdk/dist/src/registry.d.ts +0 -108
  525. package/packages/provider-adapter-sdk/dist/src/registry.d.ts.map +0 -1
  526. package/packages/provider-adapter-sdk/dist/src/registry.js +0 -301
  527. package/packages/provider-adapter-sdk/dist/src/registry.js.map +0 -1
  528. package/packages/provider-adapter-sdk/dist/src/tester.d.ts +0 -71
  529. package/packages/provider-adapter-sdk/dist/src/tester.d.ts.map +0 -1
  530. package/packages/provider-adapter-sdk/dist/src/tester.js +0 -392
  531. package/packages/provider-adapter-sdk/dist/src/tester.js.map +0 -1
  532. package/packages/provider-adapter-sdk/dist/src/types.d.ts +0 -182
  533. package/packages/provider-adapter-sdk/dist/src/types.d.ts.map +0 -1
  534. package/packages/provider-adapter-sdk/dist/src/types.js +0 -11
  535. package/packages/provider-adapter-sdk/dist/src/types.js.map +0 -1
  536. package/packages/provider-router/dist/capability-registry/src/types.d.ts +0 -47
  537. package/packages/provider-router/dist/capability-registry/src/types.d.ts.map +0 -1
  538. package/packages/provider-router/dist/capability-registry/src/types.js +0 -10
  539. package/packages/provider-router/dist/capability-registry/src/types.js.map +0 -1
  540. package/packages/provider-router/dist/provider-router/src/index.d.ts +0 -23
  541. package/packages/provider-router/dist/provider-router/src/index.d.ts.map +0 -1
  542. package/packages/provider-router/dist/provider-router/src/index.js +0 -25
  543. package/packages/provider-router/dist/provider-router/src/index.js.map +0 -1
  544. package/packages/provider-router/dist/provider-router/src/policy.d.ts +0 -10
  545. package/packages/provider-router/dist/provider-router/src/policy.d.ts.map +0 -1
  546. package/packages/provider-router/dist/provider-router/src/policy.js +0 -45
  547. package/packages/provider-router/dist/provider-router/src/policy.js.map +0 -1
  548. package/packages/provider-router/dist/provider-router/src/provider-router.d.ts +0 -56
  549. package/packages/provider-router/dist/provider-router/src/provider-router.d.ts.map +0 -1
  550. package/packages/provider-router/dist/provider-router/src/provider-router.js +0 -222
  551. package/packages/provider-router/dist/provider-router/src/provider-router.js.map +0 -1
  552. package/packages/provider-router/dist/provider-router/src/strategies.d.ts +0 -19
  553. package/packages/provider-router/dist/provider-router/src/strategies.d.ts.map +0 -1
  554. package/packages/provider-router/dist/provider-router/src/strategies.js +0 -110
  555. package/packages/provider-router/dist/provider-router/src/strategies.js.map +0 -1
  556. package/packages/provider-router/dist/provider-router/src/types.d.ts +0 -91
  557. package/packages/provider-router/dist/provider-router/src/types.d.ts.map +0 -1
  558. package/packages/provider-router/dist/provider-router/src/types.js +0 -10
  559. package/packages/provider-router/dist/provider-router/src/types.js.map +0 -1
  560. package/packages/provider-router/dist/src/index.d.ts +0 -23
  561. package/packages/provider-router/dist/src/index.d.ts.map +0 -1
  562. package/packages/provider-router/dist/src/index.js +0 -25
  563. package/packages/provider-router/dist/src/index.js.map +0 -1
  564. package/packages/provider-router/dist/src/policy.d.ts +0 -10
  565. package/packages/provider-router/dist/src/policy.d.ts.map +0 -1
  566. package/packages/provider-router/dist/src/policy.js +0 -45
  567. package/packages/provider-router/dist/src/policy.js.map +0 -1
  568. package/packages/provider-router/dist/src/provider-router.d.ts +0 -56
  569. package/packages/provider-router/dist/src/provider-router.d.ts.map +0 -1
  570. package/packages/provider-router/dist/src/provider-router.js +0 -222
  571. package/packages/provider-router/dist/src/provider-router.js.map +0 -1
  572. package/packages/provider-router/dist/src/strategies.d.ts +0 -19
  573. package/packages/provider-router/dist/src/strategies.d.ts.map +0 -1
  574. package/packages/provider-router/dist/src/strategies.js +0 -110
  575. package/packages/provider-router/dist/src/strategies.js.map +0 -1
  576. package/packages/provider-router/dist/src/types.d.ts +0 -91
  577. package/packages/provider-router/dist/src/types.d.ts.map +0 -1
  578. package/packages/provider-router/dist/src/types.js +0 -10
  579. package/packages/provider-router/dist/src/types.js.map +0 -1
  580. package/packages/provider-router/dist/types/src/runtime-types.d.ts +0 -412
  581. package/packages/provider-router/dist/types/src/runtime-types.d.ts.map +0 -1
  582. package/packages/provider-router/dist/types/src/runtime-types.js +0 -2
  583. package/packages/provider-router/dist/types/src/runtime-types.js.map +0 -1
  584. package/packages/session-api/dist/api.d.ts +0 -83
  585. package/packages/session-api/dist/api.js +0 -35
  586. package/packages/session-api/dist/index.d.ts +0 -2
  587. package/packages/session-api/dist/index.js +0 -2
  588. package/packages/session-api/dist/types.d.ts +0 -22
  589. package/packages/session-api/dist/types.js +0 -5
  590. package/packages/session-export/dist/exporter.d.ts +0 -28
  591. package/packages/session-export/dist/exporter.js +0 -38
  592. package/packages/session-export/dist/index.d.ts +0 -2
  593. package/packages/session-export/dist/index.js +0 -2
  594. package/packages/session-export/dist/types.d.ts +0 -20
  595. package/packages/session-export/dist/types.js +0 -5
  596. package/packages/subscription-engine/dist/engine.d.ts +0 -13
  597. package/packages/subscription-engine/dist/engine.js +0 -40
  598. package/packages/subscription-engine/dist/index.d.ts +0 -2
  599. package/packages/subscription-engine/dist/index.js +0 -2
  600. package/packages/subscription-engine/dist/subscriptions.d.ts +0 -19
  601. package/packages/subscription-engine/dist/subscriptions.js +0 -32
  602. package/packages/subscription-engine/dist/types.d.ts +0 -24
  603. package/packages/subscription-engine/dist/types.js +0 -5
  604. package/packages/trajectory/test/store.test.d.ts +0 -2
  605. package/packages/workflow-events/dist/events.d.ts +0 -38
  606. package/packages/workflow-events/dist/events.js +0 -46
  607. package/packages/workflow-events/dist/index.d.ts +0 -2
  608. package/packages/workflow-events/dist/index.js +0 -2
  609. package/packages/workflow-events/dist/pipeline.d.ts +0 -21
  610. package/packages/workflow-events/dist/pipeline.js +0 -27
  611. package/packages/workflow-events/dist/types.d.ts +0 -110
  612. package/packages/workflow-events/dist/types.js +0 -5
  613. package/packages/workflow-events/src/types.d.ts +0 -110
@@ -0,0 +1,296 @@
1
+ /**
2
+ * todo-bd-sync - Two-way sync between rpiv-todo and bd
3
+ *
4
+ * This package provides:
5
+ * 1. Detection of rpiv-todo installation
6
+ * 2. Two-way sync between rpiv-todo tasks and bd issues
7
+ * 3. Auto-enable functionality via prompt injection
8
+ *
9
+ * Usage:
10
+ * import { createTodoBdSync } from "@moocoding/todo-bd-sync";
11
+ *
12
+ * const sync = createTodoBdSync(pi);
13
+ * sync.start();
14
+ */
15
+ import { getDependencyStatus, logDependencyStatus } from "./detector.js";
16
+ import { syncTodoToBd, isBdCommand, extractBdIdFromCommand, getMappingRegistry, getOpenBdIssues, parseBdCreateOutput, } from "./sync.js";
17
+ const DEFAULT_CONFIG = {
18
+ autoInjectPrompt: true,
19
+ syncDirection: "both",
20
+ loadOnSessionStart: true,
21
+ debug: false,
22
+ };
23
+ /**
24
+ * Create a todo-bd sync instance
25
+ */
26
+ export function createTodoBdSync(pi, config = {}) {
27
+ const finalConfig = { ...DEFAULT_CONFIG, ...config };
28
+ return new TodoBdSync(pi, finalConfig);
29
+ }
30
+ /**
31
+ * TodoBdSync class - handles two-way sync between rpiv-todo and bd
32
+ */
33
+ export class TodoBdSync {
34
+ pi;
35
+ config;
36
+ enabled = false;
37
+ sessionStartLoaded = false;
38
+ constructor(pi, config) {
39
+ this.pi = pi;
40
+ this.config = config;
41
+ }
42
+ /**
43
+ * Initialize and start the sync
44
+ */
45
+ start() {
46
+ // Check dependencies
47
+ const deps = getDependencyStatus();
48
+ if (!deps.bd.installed) {
49
+ if (this.config.debug) {
50
+ console.log("[DEBUG todo-bd-sync] bd CLI not installed, skipping");
51
+ }
52
+ return;
53
+ }
54
+ if (!deps.rpivTodo.installed && !this.shouldUseFallback()) {
55
+ if (this.config.debug) {
56
+ console.log("[todo-bd-sync] rpiv-todo not installed, using fallback mode");
57
+ }
58
+ // In fallback mode, we would implement our own todo overlay
59
+ // For now, we'll just note that it's not available
60
+ }
61
+ this.enabled = true;
62
+ if (this.config.debug) {
63
+ logDependencyStatus();
64
+ }
65
+ // Register event handlers
66
+ this.registerHandlers();
67
+ if (this.config.debug) {
68
+ console.log("[DEBUG todo-bd-sync] Started with config:", this.config);
69
+ }
70
+ }
71
+ /**
72
+ * Register event handlers
73
+ */
74
+ registerHandlers() {
75
+ // Session start - load existing bd issues
76
+ if (this.config.loadOnSessionStart) {
77
+ this.pi.on("session_start", async (_event, ctx) => {
78
+ if (!this.enabled || this.sessionStartLoaded)
79
+ return;
80
+ await this.handleSessionStart(ctx);
81
+ this.sessionStartLoaded = true;
82
+ });
83
+ }
84
+ // Tool execution end - sync changes
85
+ this.pi.on("tool_execution_end", async (event) => {
86
+ if (!this.enabled)
87
+ return;
88
+ if (event.toolName === "todo") {
89
+ // Todo tool was called - sync to bd
90
+ if (this.config.syncDirection === "both" ||
91
+ this.config.syncDirection === "todoOnly") {
92
+ this.handleTodoExecution(event);
93
+ }
94
+ }
95
+ if (event.toolName === "bash" && event.args?.command) {
96
+ // Bash command executed - check if it's a bd command
97
+ if (this.config.syncDirection === "both" ||
98
+ this.config.syncDirection === "bdOnly") {
99
+ this.handleBashExecution(event);
100
+ }
101
+ }
102
+ });
103
+ // Register slash command for manual sync
104
+ this.pi.registerCommand("bd-todo-sync", {
105
+ description: "Sync todo list with bd issues",
106
+ handler: async (_args, ctx) => {
107
+ if (!this.enabled) {
108
+ ctx.ui.notify("[todo-bd-sync] Not enabled - dependencies missing", "warning");
109
+ return;
110
+ }
111
+ // Sync all todos to bd
112
+ const mappings = getMappingRegistry().getAll();
113
+ ctx.ui.notify(`[todo-bd-sync] Syncing ${mappings.length} mapped tasks to bd...`, "info");
114
+ // Force refresh bd issues
115
+ const issues = getOpenBdIssues();
116
+ ctx.ui.notify(`[todo-bd-sync] Found ${issues.length} open bd issues`, "info");
117
+ },
118
+ });
119
+ // Register slash command to check status
120
+ this.pi.registerCommand("bd-todo-status", {
121
+ description: "Show todo-bd sync status",
122
+ handler: async (_args, ctx) => {
123
+ const deps = getDependencyStatus();
124
+ const mappings = getMappingRegistry().getAll();
125
+ const lines = [
126
+ "=== todo-bd-sync Status ===",
127
+ `rpiv-todo: ${deps.rpivTodo.installed ? "installed" : "not installed"}`,
128
+ `bd: ${deps.bd.installed ? "installed (" + deps.bd.version + ")" : "not installed"}`,
129
+ `Mappings: ${mappings.length}`,
130
+ `Enabled: ${this.enabled}`,
131
+ ];
132
+ ctx.ui.notify(lines.join("\n"), "info");
133
+ },
134
+ });
135
+ }
136
+ /**
137
+ * Handle todo tool execution
138
+ */
139
+ handleTodoExecution(event) {
140
+ if (event.isError)
141
+ return;
142
+ // Extract action and task from event
143
+ const action = event.args?.action;
144
+ const task = this.extractTaskFromEvent(event);
145
+ if (!action || !task) {
146
+ if (this.config.debug) {
147
+ console.log("[DEBUG todo-bd-sync] Could not extract action/task from event");
148
+ }
149
+ return;
150
+ }
151
+ // Sync to bd
152
+ const result = syncTodoToBd(action, task);
153
+ if (this.config.debug) {
154
+ console.log("[DEBUG todo-bd-sync] Todo sync result:", result);
155
+ }
156
+ // Notify if sync failed
157
+ if (!result.success && this.config.debug) {
158
+ console.error("[DEBUG todo-bd-sync] Sync failed:", result.error);
159
+ }
160
+ }
161
+ /**
162
+ * Handle bash command execution
163
+ */
164
+ handleBashExecution(event) {
165
+ const command = event.args?.command;
166
+ if (!isBdCommand(command)) {
167
+ return;
168
+ }
169
+ if (this.config.debug) {
170
+ console.log("[DEBUG todo-bd-sync] Detected bd command:", command);
171
+ }
172
+ // Check for bd create
173
+ if (command.includes("bd create")) {
174
+ this.handleBdCreate(event);
175
+ }
176
+ // Check for bd update
177
+ if (command.includes("bd update") || command.includes("bd close")) {
178
+ this.handleBdUpdate(event);
179
+ }
180
+ }
181
+ /**
182
+ * Handle bd create command
183
+ */
184
+ handleBdCreate(event) {
185
+ const result = event.result;
186
+ if (!result || typeof result !== "object")
187
+ return;
188
+ // Extract created bd issue info
189
+ const output = JSON.stringify(result);
190
+ const parsed = parseBdCreateOutput(output);
191
+ if (parsed && parsed.bdId) {
192
+ if (this.config.debug) {
193
+ console.log(`[todo-bd-sync] Created bd issue: ${parsed.bdId}`);
194
+ }
195
+ // Note: At this point we don't have a todo ID yet
196
+ // The sync will happen when the todo tool is called next
197
+ }
198
+ }
199
+ /**
200
+ * Handle bd update/close command
201
+ */
202
+ handleBdUpdate(event) {
203
+ const command = event.args?.command;
204
+ const bdId = extractBdIdFromCommand(command);
205
+ if (!bdId)
206
+ return;
207
+ const mappings = getMappingRegistry();
208
+ const mapping = mappings.getByBdId(bdId);
209
+ if (mapping) {
210
+ if (this.config.debug) {
211
+ console.log(`[todo-bd-sync] Updated bd issue ${bdId}, mapped to todo ${mapping.todoId}`);
212
+ }
213
+ mappings.updateLastSync(mapping.todoId);
214
+ }
215
+ }
216
+ /**
217
+ * Handle session start
218
+ */
219
+ async handleSessionStart(ctx) {
220
+ if (!ctx.hasUI)
221
+ return;
222
+ try {
223
+ // Get all open bd issues
224
+ const issues = getOpenBdIssues();
225
+ if (this.config.debug) {
226
+ console.log(`[todo-bd-sync] Session start: found ${issues.length} open bd issues`);
227
+ }
228
+ // Notify user about sync status
229
+ if (issues.length > 0) {
230
+ ctx.hasUI && this.pi; // Just to use ctx
231
+ }
232
+ }
233
+ catch (error) {
234
+ if (this.config.debug) {
235
+ console.error("[DEBUG todo-bd-sync] Session start sync failed:", error);
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * Extract task from todo tool event
241
+ */
242
+ extractTaskFromEvent(event) {
243
+ // The event structure depends on how pi-coding-agent exposes tool results
244
+ // This is a simplified extraction
245
+ const result = event.result;
246
+ if (!result)
247
+ return null;
248
+ // Try to extract task from result
249
+ const task = result.task;
250
+ if (task && typeof task.id === "number") {
251
+ return task;
252
+ }
253
+ // Try to extract from args
254
+ const args = event.args;
255
+ if (args) {
256
+ const id = args.id;
257
+ const subject = args.subject;
258
+ const status = args.status;
259
+ const description = args.description;
260
+ if (id !== undefined) {
261
+ return {
262
+ id,
263
+ subject: subject || "",
264
+ status: status || "pending",
265
+ description,
266
+ metadata: {},
267
+ };
268
+ }
269
+ }
270
+ return null;
271
+ }
272
+ /**
273
+ * Check if we should use fallback mode (custom todo implementation)
274
+ */
275
+ shouldUseFallback() {
276
+ // Check if there's a config option for fallback
277
+ // For now, return false (we don't have a fallback implementation yet)
278
+ return false;
279
+ }
280
+ /**
281
+ * Get the prompt injection string
282
+ * This is added to the system prompt to trigger rpiv-todo
283
+ */
284
+ static getPromptInjection() {
285
+ return "todo-list";
286
+ }
287
+ /**
288
+ * Check if sync is enabled
289
+ */
290
+ isEnabled() {
291
+ return this.enabled;
292
+ }
293
+ }
294
+ // Default export
295
+ export default createTodoBdSync;
296
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Two-way sync between rpiv-todo and bd
3
+ *
4
+ * This module handles:
5
+ * 1. rpiv-todo → bd: When todo tool is called, sync to bd
6
+ * 2. bd → rpiv-todo: When bd commands are executed, sync to todo
7
+ * 3. Session start: Load existing bd issues into todo
8
+ */
9
+ import type { TodoTask, BdIssue, SyncResult } from "./types.js";
10
+ import { IdMappingRegistry } from "./types.js";
11
+ /**
12
+ * Execute a bd command and return the output
13
+ */
14
+ export declare function execBdCommand(command: string): string;
15
+ /**
16
+ * Extract bd ID from command or output
17
+ */
18
+ export declare function extractBdId(input: string): string | null;
19
+ /**
20
+ * Get all open bd issues
21
+ */
22
+ export declare function getOpenBdIssues(): BdIssue[];
23
+ /**
24
+ * Get all bd issues (including closed)
25
+ */
26
+ export declare function getAllBdIssues(): BdIssue[];
27
+ /**
28
+ * Create a bd issue from a todo task
29
+ */
30
+ export declare function createBdFromTodo(task: TodoTask): SyncResult;
31
+ /**
32
+ * Update a bd issue from a todo task update
33
+ */
34
+ export declare function updateBdFromTodo(task: TodoTask): SyncResult;
35
+ /**
36
+ * Close/delete a bd issue when todo is deleted
37
+ */
38
+ export declare function closeBdFromTodo(task: TodoTask): SyncResult;
39
+ /**
40
+ * Parse bd create output to extract created issue
41
+ */
42
+ export declare function parseBdCreateOutput(output: string): {
43
+ bdId: string;
44
+ title: string;
45
+ } | null;
46
+ /**
47
+ * Detect if a bash command is a bd command
48
+ */
49
+ export declare function isBdCommand(command: string): boolean;
50
+ /**
51
+ * Extract bd ID from a command
52
+ */
53
+ export declare function extractBdIdFromCommand(command: string): string | null;
54
+ /**
55
+ * Get the mapping registry for external access
56
+ */
57
+ export declare function getMappingRegistry(): IdMappingRegistry;
58
+ /**
59
+ * Clear all mappings (for testing or reset)
60
+ */
61
+ export declare function clearMappings(): void;
62
+ /**
63
+ * Sync from todo action to bd
64
+ * Called when todo tool is executed
65
+ */
66
+ export declare function syncTodoToBd(action: string, task: TodoTask): SyncResult;
67
+ /**
68
+ * Parse todo task from tool event
69
+ * This is a simplified parser - actual implementation depends on event structure
70
+ */
71
+ export declare function parseTodoTaskFromEvent(event: Record<string, unknown>): TodoTask | null;
72
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAc,MAAM,YAAY,CAAC;AAK3D;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,EAAE,CAe3C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAe1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAsC3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAgC3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAmC1D;AAaD;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBxC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAWpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAUD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,CAgBvE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,QAAQ,GAAG,IAAI,CAUjB"}
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Two-way sync between rpiv-todo and bd
3
+ *
4
+ * This module handles:
5
+ * 1. rpiv-todo → bd: When todo tool is called, sync to bd
6
+ * 2. bd → rpiv-todo: When bd commands are executed, sync to todo
7
+ * 3. Session start: Load existing bd issues into todo
8
+ */
9
+ import { execSync } from "node:child_process";
10
+ import { IdMappingRegistry, STATUS_MAP } from "./types.js";
11
+ // Mapping registry singleton
12
+ const mappingRegistry = new IdMappingRegistry();
13
+ /**
14
+ * Execute a bd command and return the output
15
+ */
16
+ export function execBdCommand(command) {
17
+ try {
18
+ return execSync(command, {
19
+ encoding: "utf8",
20
+ timeout: 10000,
21
+ cwd: process.cwd(),
22
+ });
23
+ }
24
+ catch (error) {
25
+ const err = error;
26
+ return err.stderr || err.message || "";
27
+ }
28
+ }
29
+ /**
30
+ * Extract bd ID from command or output
31
+ */
32
+ export function extractBdId(input) {
33
+ // Match patterns like: bd-a1b2, bd-a1b2.1, BD-a1b2, etc.
34
+ const match = input.match(/bd-[a-z0-9]+(\.[0-9]+)?/i);
35
+ return match ? match[0].toLowerCase() : null;
36
+ }
37
+ /**
38
+ * Get all open bd issues
39
+ */
40
+ export function getOpenBdIssues() {
41
+ try {
42
+ const output = execBdCommand("bd ready --json");
43
+ const issues = JSON.parse(output);
44
+ return issues.map((issue) => ({
45
+ id: issue.id,
46
+ title: issue.title,
47
+ status: issue.status,
48
+ priority: issue.priority,
49
+ createdAt: issue.created_at,
50
+ updatedAt: issue.updated_at,
51
+ }));
52
+ }
53
+ catch {
54
+ return [];
55
+ }
56
+ }
57
+ /**
58
+ * Get all bd issues (including closed)
59
+ */
60
+ export function getAllBdIssues() {
61
+ try {
62
+ const output = execBdCommand("bd list --json");
63
+ const issues = JSON.parse(output);
64
+ return issues.map((issue) => ({
65
+ id: issue.id,
66
+ title: issue.title,
67
+ status: issue.status,
68
+ priority: issue.priority,
69
+ createdAt: issue.created_at,
70
+ updatedAt: issue.updated_at,
71
+ }));
72
+ }
73
+ catch {
74
+ return [];
75
+ }
76
+ }
77
+ /**
78
+ * Create a bd issue from a todo task
79
+ */
80
+ export function createBdFromTodo(task) {
81
+ const priority = inferPriorityFromTask(task);
82
+ try {
83
+ const command = `bd create "${escapeShell(task.subject)}" -p ${priority} --json`;
84
+ const output = execBdCommand(command);
85
+ // Try to extract bd ID from output
86
+ let bdId = extractBdId(output);
87
+ // If not found in output, try to get it from the created issue
88
+ if (!bdId) {
89
+ const issues = getOpenBdIssues();
90
+ // Match by title (not ideal but fallback)
91
+ const match = issues.find((i) => i.title === task.subject);
92
+ bdId = match?.id || null;
93
+ }
94
+ if (bdId) {
95
+ mappingRegistry.set(task.id, bdId);
96
+ }
97
+ return {
98
+ success: true,
99
+ direction: "todo_to_bd",
100
+ taskId: task.id,
101
+ bdId: bdId || undefined,
102
+ action: "create",
103
+ };
104
+ }
105
+ catch (error) {
106
+ return {
107
+ success: false,
108
+ direction: "todo_to_bd",
109
+ taskId: task.id,
110
+ action: "create",
111
+ error: error instanceof Error ? error.message : String(error),
112
+ };
113
+ }
114
+ }
115
+ /**
116
+ * Update a bd issue from a todo task update
117
+ */
118
+ export function updateBdFromTodo(task) {
119
+ const mapping = mappingRegistry.getByTodoId(task.id);
120
+ if (!mapping) {
121
+ // No mapping exists, create new bd issue
122
+ return createBdFromTodo(task);
123
+ }
124
+ try {
125
+ const bdStatus = STATUS_MAP[task.status];
126
+ const command = `bd update ${mapping.bdId} --status ${bdStatus} --json`;
127
+ execBdCommand(command);
128
+ // Update last sync timestamp
129
+ mappingRegistry.updateLastSync(task.id);
130
+ return {
131
+ success: true,
132
+ direction: "todo_to_bd",
133
+ taskId: task.id,
134
+ bdId: mapping.bdId,
135
+ action: "update",
136
+ };
137
+ }
138
+ catch (error) {
139
+ return {
140
+ success: false,
141
+ direction: "todo_to_bd",
142
+ taskId: task.id,
143
+ bdId: mapping.bdId,
144
+ action: "update",
145
+ error: error instanceof Error ? error.message : String(error),
146
+ };
147
+ }
148
+ }
149
+ /**
150
+ * Close/delete a bd issue when todo is deleted
151
+ */
152
+ export function closeBdFromTodo(task) {
153
+ const mapping = mappingRegistry.getByTodoId(task.id);
154
+ if (!mapping) {
155
+ return {
156
+ success: true, // Nothing to close
157
+ direction: "todo_to_bd",
158
+ taskId: task.id,
159
+ action: "delete",
160
+ };
161
+ }
162
+ try {
163
+ const command = `bd close ${mapping.bdId} --reason "Closed from todo" --json`;
164
+ execBdCommand(command);
165
+ // Remove mapping
166
+ mappingRegistry.delete(task.id);
167
+ return {
168
+ success: true,
169
+ direction: "todo_to_bd",
170
+ taskId: task.id,
171
+ bdId: mapping.bdId,
172
+ action: "delete",
173
+ };
174
+ }
175
+ catch (error) {
176
+ return {
177
+ success: false,
178
+ direction: "todo_to_bd",
179
+ taskId: task.id,
180
+ bdId: mapping.bdId,
181
+ action: "delete",
182
+ error: error instanceof Error ? error.message : String(error),
183
+ };
184
+ }
185
+ }
186
+ /**
187
+ * Infer priority from task metadata
188
+ */
189
+ function inferPriorityFromTask(task) {
190
+ if (task.metadata?.priority !== undefined) {
191
+ return task.metadata.priority;
192
+ }
193
+ // Default priority 2 (medium)
194
+ return 2;
195
+ }
196
+ /**
197
+ * Parse bd create output to extract created issue
198
+ */
199
+ export function parseBdCreateOutput(output) {
200
+ try {
201
+ const json = JSON.parse(output);
202
+ if (json.id) {
203
+ return {
204
+ bdId: json.id,
205
+ title: json.title || "",
206
+ };
207
+ }
208
+ }
209
+ catch {
210
+ // Not JSON, try text extraction
211
+ }
212
+ const bdId = extractBdId(output);
213
+ if (bdId) {
214
+ return { bdId, title: "" };
215
+ }
216
+ return null;
217
+ }
218
+ /**
219
+ * Detect if a bash command is a bd command
220
+ */
221
+ export function isBdCommand(command) {
222
+ const trimmed = command.trim().toLowerCase();
223
+ return (trimmed.startsWith("bd ") ||
224
+ trimmed.startsWith("beads ") ||
225
+ trimmed.includes("bd create") ||
226
+ trimmed.includes("bd update") ||
227
+ trimmed.includes("bd close") ||
228
+ trimmed.includes("bd ready") ||
229
+ trimmed.includes("bd list"));
230
+ }
231
+ /**
232
+ * Extract bd ID from a command
233
+ */
234
+ export function extractBdIdFromCommand(command) {
235
+ return extractBdId(command);
236
+ }
237
+ /**
238
+ * Get the mapping registry for external access
239
+ */
240
+ export function getMappingRegistry() {
241
+ return mappingRegistry;
242
+ }
243
+ /**
244
+ * Clear all mappings (for testing or reset)
245
+ */
246
+ export function clearMappings() {
247
+ mappingRegistry.clear();
248
+ }
249
+ /**
250
+ * Escape shell arguments
251
+ */
252
+ function escapeShell(str) {
253
+ // Escape double quotes and backslashes
254
+ return str.replace(/["\\]/g, "\\$&");
255
+ }
256
+ /**
257
+ * Sync from todo action to bd
258
+ * Called when todo tool is executed
259
+ */
260
+ export function syncTodoToBd(action, task) {
261
+ switch (action) {
262
+ case "create":
263
+ return createBdFromTodo(task);
264
+ case "update":
265
+ return updateBdFromTodo(task);
266
+ case "delete":
267
+ return closeBdFromTodo(task);
268
+ default:
269
+ return {
270
+ success: true,
271
+ direction: "todo_to_bd",
272
+ taskId: task.id,
273
+ action,
274
+ };
275
+ }
276
+ }
277
+ /**
278
+ * Parse todo task from tool event
279
+ * This is a simplified parser - actual implementation depends on event structure
280
+ */
281
+ export function parseTodoTaskFromEvent(event) {
282
+ // The event structure depends on how pi-coding-agent exposes it
283
+ // This is a placeholder - actual implementation needs event inspection
284
+ const task = event.task;
285
+ if (!task || typeof task.id !== "number") {
286
+ return null;
287
+ }
288
+ return task;
289
+ }
290
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}