pi-harness-runtime 0.10.13 → 0.10.15

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 (581) hide show
  1. package/harness/notification-events.ts +2 -2
  2. package/package.json +4 -7
  3. package/packages/auth/src/minimax-browser-auth.js +889 -0
  4. package/packages/capability-registry/src/types.js +10 -0
  5. package/packages/checkpoint/src/checkpoint-manager.js +29 -0
  6. package/packages/clipboard/src/copy-sync.js +169 -0
  7. package/packages/clipboard/src/gist-relay.js +185 -0
  8. package/packages/clipboard/src/github-login.js +68 -0
  9. package/packages/config-capture/src/index.js +268 -0
  10. package/packages/cookie-sanitizer/src/atomic-write.js +66 -0
  11. package/packages/cookie-sanitizer/src/detect-format.js +87 -0
  12. package/packages/cookie-sanitizer/src/index.js +38 -0
  13. package/packages/cookie-sanitizer/src/infer-provider.js +95 -0
  14. package/packages/cookie-sanitizer/src/normalize.js +74 -0
  15. package/packages/cookie-sanitizer/src/parse-json.js +107 -0
  16. package/packages/cookie-sanitizer/src/parse-netscape.js +98 -0
  17. package/packages/cookie-sanitizer/src/sync.js +268 -0
  18. package/packages/cookie-sanitizer/src/types.js +12 -0
  19. package/packages/cookie-sanitizer/src/watcher.js +147 -0
  20. package/packages/evaluation-engine/src/engine.js +343 -0
  21. package/packages/evaluation-engine/src/index.js +7 -0
  22. package/packages/evaluation-engine/src/types.js +14 -0
  23. package/packages/event-store/src/types.js +5 -0
  24. package/packages/experience-replay/src/index.js +6 -0
  25. package/packages/experience-replay/src/replay.js +228 -0
  26. package/packages/experience-replay/src/types.js +6 -0
  27. package/packages/learning-engine/src/engine.js +294 -0
  28. package/packages/learning-engine/src/index.js +7 -0
  29. package/packages/learning-engine/src/types.js +63 -0
  30. package/packages/memory-engine/src/engine.js +507 -0
  31. package/packages/memory-engine/src/index.js +7 -0
  32. package/packages/memory-engine/src/types.js +39 -0
  33. package/packages/model-registry/src/types.js +5 -0
  34. package/packages/performance-optimizer/src/index.js +6 -0
  35. package/packages/performance-optimizer/src/optimizer.js +304 -0
  36. package/packages/performance-optimizer/src/types.js +6 -0
  37. package/packages/projection-engine/src/types.js +5 -0
  38. package/packages/providers/src/provider-id.js +112 -0
  39. package/packages/quota-manager/src/quota-manager.js +259 -0
  40. package/packages/quota-manager/src/tui-usage-monitor.js +267 -0
  41. package/packages/todo-bd-sync/src/detector.js +131 -0
  42. package/packages/todo-bd-sync/src/extension.js +104 -0
  43. package/packages/todo-bd-sync/src/sync.js +289 -0
  44. package/packages/todo-bd-sync/src/task-analyzer.js +239 -0
  45. package/packages/todo-bd-sync/src/types.js +66 -0
  46. package/packages/token-estimation/src/index.js +114 -0
  47. package/packages/types/src/agent-worker-types.js +41 -0
  48. package/packages/types/src/ai-providers.js +66 -0
  49. package/packages/types/src/runtime-types.js +3 -0
  50. package/packages/workflow-events/src/types.js +5 -0
  51. package/packages/write-review/src/blackboard.js +228 -0
  52. package/packages/write-review/src/gate.js +137 -0
  53. package/packages/write-review/src/index.js +17 -0
  54. package/packages/write-review/src/injection.js +141 -0
  55. package/packages/write-review/src/review.js +153 -0
  56. package/packages/write-review/src/trigger.js +106 -0
  57. package/packages/write-review/src/types.js +25 -0
  58. package/IMPLEMENTATION/RFC-0010/ACCEPTANCE_CRITERIA.md +0 -7
  59. package/IMPLEMENTATION/RFC-0010/AI_BRIEF.md +0 -20
  60. package/IMPLEMENTATION/RFC-0010/FILES.md +0 -11
  61. package/IMPLEMENTATION/RFC-0010/TASKS.md +0 -10
  62. package/IMPLEMENTATION/RFC-0010/TESTS.md +0 -6
  63. package/IMPLEMENTATION/RFC-0011/ACCEPTANCE_CRITERIA.md +0 -7
  64. package/IMPLEMENTATION/RFC-0011/AI_BRIEF.md +0 -19
  65. package/IMPLEMENTATION/RFC-0011/FILES.md +0 -11
  66. package/IMPLEMENTATION/RFC-0011/TASKS.md +0 -10
  67. package/IMPLEMENTATION/RFC-0011/TESTS.md +0 -6
  68. package/IMPLEMENTATION/RFC-0012/ACCEPTANCE_CRITERIA.md +0 -7
  69. package/IMPLEMENTATION/RFC-0012/AI_BRIEF.md +0 -18
  70. package/IMPLEMENTATION/RFC-0012/FILES.md +0 -11
  71. package/IMPLEMENTATION/RFC-0012/TASKS.md +0 -10
  72. package/IMPLEMENTATION/RFC-0012/TESTS.md +0 -6
  73. package/IMPLEMENTATION/RFC-0013/ACCEPTANCE_CRITERIA.md +0 -7
  74. package/IMPLEMENTATION/RFC-0013/AI_BRIEF.md +0 -19
  75. package/IMPLEMENTATION/RFC-0013/FILES.md +0 -11
  76. package/IMPLEMENTATION/RFC-0013/TASKS.md +0 -10
  77. package/IMPLEMENTATION/RFC-0013/TESTS.md +0 -6
  78. package/IMPLEMENTATION/RFC-0014/ACCEPTANCE_CRITERIA.md +0 -7
  79. package/IMPLEMENTATION/RFC-0014/AI_BRIEF.md +0 -20
  80. package/IMPLEMENTATION/RFC-0014/FILES.md +0 -11
  81. package/IMPLEMENTATION/RFC-0014/TASKS.md +0 -10
  82. package/IMPLEMENTATION/RFC-0014/TESTS.md +0 -6
  83. package/IMPLEMENTATION/RFC-0015/ACCEPTANCE_CRITERIA.md +0 -2
  84. package/IMPLEMENTATION/RFC-0015/AI_BRIEF.md +0 -2
  85. package/IMPLEMENTATION/RFC-0015/FILES.md +0 -2
  86. package/IMPLEMENTATION/RFC-0015/TASKS.md +0 -4
  87. package/IMPLEMENTATION/RFC-0015/TESTS.md +0 -3
  88. package/IMPLEMENTATION/RFC-0016/ACCEPTANCE_CRITERIA.md +0 -2
  89. package/IMPLEMENTATION/RFC-0016/AI_BRIEF.md +0 -2
  90. package/IMPLEMENTATION/RFC-0016/FILES.md +0 -2
  91. package/IMPLEMENTATION/RFC-0016/TASKS.md +0 -4
  92. package/IMPLEMENTATION/RFC-0016/TESTS.md +0 -3
  93. package/IMPLEMENTATION/RFC-0017/ACCEPTANCE_CRITERIA.md +0 -2
  94. package/IMPLEMENTATION/RFC-0017/AI_BRIEF.md +0 -2
  95. package/IMPLEMENTATION/RFC-0017/FILES.md +0 -2
  96. package/IMPLEMENTATION/RFC-0017/TASKS.md +0 -4
  97. package/IMPLEMENTATION/RFC-0017/TESTS.md +0 -3
  98. package/IMPLEMENTATION/RFC-0018/ACCEPTANCE_CRITERIA.md +0 -2
  99. package/IMPLEMENTATION/RFC-0018/AI_BRIEF.md +0 -2
  100. package/IMPLEMENTATION/RFC-0018/FILES.md +0 -2
  101. package/IMPLEMENTATION/RFC-0018/TASKS.md +0 -4
  102. package/IMPLEMENTATION/RFC-0018/TESTS.md +0 -3
  103. package/IMPLEMENTATION/RFC-0019/ACCEPTANCE_CRITERIA.md +0 -7
  104. package/IMPLEMENTATION/RFC-0019/AI_BRIEF.md +0 -18
  105. package/IMPLEMENTATION/RFC-0019/TASKS.md +0 -10
  106. package/IMPLEMENTATION/RFC-0020/ACCEPTANCE_CRITERIA.md +0 -7
  107. package/IMPLEMENTATION/RFC-0020/AI_BRIEF.md +0 -18
  108. package/IMPLEMENTATION/RFC-0020/TASKS.md +0 -10
  109. package/IMPLEMENTATION/RFC-0021/ACCEPTANCE_CRITERIA.md +0 -7
  110. package/IMPLEMENTATION/RFC-0021/AI_BRIEF.md +0 -18
  111. package/IMPLEMENTATION/RFC-0021/TASKS.md +0 -10
  112. package/IMPLEMENTATION/RFC-0022/ACCEPTANCE_CRITERIA.md +0 -7
  113. package/IMPLEMENTATION/RFC-0022/AI_BRIEF.md +0 -18
  114. package/IMPLEMENTATION/RFC-0022/TASKS.md +0 -10
  115. package/IMPLEMENTATION/RFC-0023/ACCEPTANCE_CRITERIA.md +0 -7
  116. package/IMPLEMENTATION/RFC-0023/AI_BRIEF.md +0 -18
  117. package/IMPLEMENTATION/RFC-0023/TASKS.md +0 -10
  118. package/IMPLEMENTATION/RFC-0024/AI_BRIEF.md +0 -1
  119. package/IMPLEMENTATION/RFC-0024/TASKS.md +0 -3
  120. package/IMPLEMENTATION/RFC-0025/AI_BRIEF.md +0 -1
  121. package/IMPLEMENTATION/RFC-0025/TASKS.md +0 -3
  122. package/IMPLEMENTATION/RFC-0026/AI_BRIEF.md +0 -1
  123. package/IMPLEMENTATION/RFC-0026/TASKS.md +0 -3
  124. package/IMPLEMENTATION/RFC-0027/AI_BRIEF.md +0 -1
  125. package/IMPLEMENTATION/RFC-0027/TASKS.md +0 -3
  126. package/IMPLEMENTATION/RFC-0028/AI_BRIEF.md +0 -1
  127. package/IMPLEMENTATION/RFC-0028/TASKS.md +0 -3
  128. package/IMPLEMENTATION/RFC-0029/AI_BRIEF.md +0 -1
  129. package/IMPLEMENTATION/RFC-0029/TASKS.md +0 -4
  130. package/IMPLEMENTATION/RFC-0030/AI_BRIEF.md +0 -1
  131. package/IMPLEMENTATION/RFC-0030/TASKS.md +0 -3
  132. package/IMPLEMENTATION/RFC-0031/AI_BRIEF.md +0 -45
  133. package/IMPLEMENTATION/RFC-0031/TASKS.md +0 -48
  134. package/IMPLEMENTATION/RFC-0032/AI_BRIEF.md +0 -45
  135. package/IMPLEMENTATION/RFC-0032/TASKS.md +0 -44
  136. package/IMPLEMENTATION/RFC-0033/AI_BRIEF.md +0 -46
  137. package/IMPLEMENTATION/RFC-0033/TASKS.md +0 -49
  138. package/IMPLEMENTATION/RFC-0034/AI_BRIEF.md +0 -54
  139. package/IMPLEMENTATION/RFC-0034/TASKS.md +0 -57
  140. package/IMPLEMENTATION/RFC-0035/AI_BRIEF.md +0 -55
  141. package/IMPLEMENTATION/RFC-0035/TASKS.md +0 -75
  142. package/IMPLEMENTATION/RFC-0036/AI_BRIEF.md +0 -62
  143. package/IMPLEMENTATION/RFC-0036/TASKS.md +0 -60
  144. package/IMPLEMENTATION/RFC-0037/AI_BRIEF.md +0 -59
  145. package/IMPLEMENTATION/RFC-0037/TASKS.md +0 -63
  146. package/IMPLEMENTATION/RFC-0038/AI_BRIEF.md +0 -67
  147. package/IMPLEMENTATION/RFC-0038/TASKS.md +0 -65
  148. package/IMPLEMENTATION/RFC-0039/AI_BRIEF.md +0 -68
  149. package/IMPLEMENTATION/RFC-0039/TASKS.md +0 -74
  150. package/IMPLEMENTATION/RFC-0040/AI_BRIEF.md +0 -79
  151. package/IMPLEMENTATION/RFC-0040/TASKS.md +0 -77
  152. package/IMPLEMENTATION/RFC-0041/ACCEPTANCE_CRITERIA.md +0 -8
  153. package/IMPLEMENTATION/RFC-0041/AI_BRIEF.md +0 -26
  154. package/IMPLEMENTATION/RFC-0041/FILES.md +0 -12
  155. package/IMPLEMENTATION/RFC-0041/TASKS.md +0 -12
  156. package/IMPLEMENTATION/RFC-0041/TESTS.md +0 -12
  157. package/IMPLEMENTATION/RFC-0042/ACCEPTANCE_CRITERIA.md +0 -7
  158. package/IMPLEMENTATION/RFC-0042/AI_BRIEF.md +0 -5
  159. package/IMPLEMENTATION/RFC-0042/FILES.md +0 -14
  160. package/IMPLEMENTATION/RFC-0042/TASKS.md +0 -12
  161. package/IMPLEMENTATION/RFC-0042/TESTS.md +0 -11
  162. package/IMPLEMENTATION/RFC-0043/ACCEPTANCE_CRITERIA.md +0 -7
  163. package/IMPLEMENTATION/RFC-0043/AI_BRIEF.md +0 -5
  164. package/IMPLEMENTATION/RFC-0043/FILES.md +0 -14
  165. package/IMPLEMENTATION/RFC-0043/TASKS.md +0 -12
  166. package/IMPLEMENTATION/RFC-0043/TESTS.md +0 -10
  167. package/IMPLEMENTATION/RFC-0044/ACCEPTANCE_CRITERIA.md +0 -7
  168. package/IMPLEMENTATION/RFC-0044/AI_BRIEF.md +0 -5
  169. package/IMPLEMENTATION/RFC-0044/FILES.md +0 -13
  170. package/IMPLEMENTATION/RFC-0044/TASKS.md +0 -12
  171. package/IMPLEMENTATION/RFC-0044/TESTS.md +0 -10
  172. package/IMPLEMENTATION/RFC-0045/ACCEPTANCE_CRITERIA.md +0 -30
  173. package/IMPLEMENTATION/RFC-0045/AI_BRIEF.md +0 -53
  174. package/IMPLEMENTATION/RFC-0045/FILES.md +0 -13
  175. package/IMPLEMENTATION/RFC-0045/TASKS.md +0 -31
  176. package/IMPLEMENTATION/RFC-0045/TESTS.md +0 -62
  177. package/IMPLEMENTATION/RFC-0046/ACCEPTANCE_CRITERIA.md +0 -1
  178. package/IMPLEMENTATION/RFC-0046/AI_BRIEF.md +0 -1
  179. package/IMPLEMENTATION/RFC-0046/FILES.md +0 -2
  180. package/IMPLEMENTATION/RFC-0046/TASKS.md +0 -3
  181. package/IMPLEMENTATION/RFC-0046/TESTS.md +0 -1
  182. package/IMPLEMENTATION/RFC-0047/ACCEPTANCE_CRITERIA.md +0 -1
  183. package/IMPLEMENTATION/RFC-0047/AI_BRIEF.md +0 -1
  184. package/IMPLEMENTATION/RFC-0047/FILES.md +0 -2
  185. package/IMPLEMENTATION/RFC-0047/TASKS.md +0 -3
  186. package/IMPLEMENTATION/RFC-0047/TESTS.md +0 -1
  187. package/IMPLEMENTATION/RFC-0048/ACCEPTANCE_CRITERIA.md +0 -1
  188. package/IMPLEMENTATION/RFC-0048/AI_BRIEF.md +0 -1
  189. package/IMPLEMENTATION/RFC-0048/FILES.md +0 -2
  190. package/IMPLEMENTATION/RFC-0048/TASKS.md +0 -3
  191. package/IMPLEMENTATION/RFC-0048/TESTS.md +0 -1
  192. package/IMPLEMENTATION/RFC-0049/ACCEPTANCE_CRITERIA.md +0 -1
  193. package/IMPLEMENTATION/RFC-0049/AI_BRIEF.md +0 -1
  194. package/IMPLEMENTATION/RFC-0049/FILES.md +0 -2
  195. package/IMPLEMENTATION/RFC-0049/TASKS.md +0 -3
  196. package/IMPLEMENTATION/RFC-0049/TESTS.md +0 -1
  197. package/IMPLEMENTATION/RFC-0050/ACCEPTANCE_CRITERIA.md +0 -1
  198. package/IMPLEMENTATION/RFC-0050/AI_BRIEF.md +0 -1
  199. package/IMPLEMENTATION/RFC-0050/FILES.md +0 -2
  200. package/IMPLEMENTATION/RFC-0050/TASKS.md +0 -3
  201. package/IMPLEMENTATION/RFC-0050/TESTS.md +0 -1
  202. package/IMPLEMENTATION/RFC-0051/ACCEPTANCE_CRITERIA.md +0 -6
  203. package/IMPLEMENTATION/RFC-0051/AI_BRIEF.md +0 -20
  204. package/IMPLEMENTATION/RFC-0051/FILES.md +0 -8
  205. package/IMPLEMENTATION/RFC-0051/TASKS.md +0 -3
  206. package/IMPLEMENTATION/RFC-0051/TESTS.md +0 -4
  207. package/IMPLEMENTATION/RFC-0052/ACCEPTANCE_CRITERIA.md +0 -7
  208. package/IMPLEMENTATION/RFC-0052/AI_BRIEF.md +0 -19
  209. package/IMPLEMENTATION/RFC-0052/FILES.md +0 -8
  210. package/IMPLEMENTATION/RFC-0052/TASKS.md +0 -3
  211. package/IMPLEMENTATION/RFC-0052/TESTS.md +0 -1
  212. package/IMPLEMENTATION/RFC-0053/ACCEPTANCE_CRITERIA.md +0 -8
  213. package/IMPLEMENTATION/RFC-0053/AI_BRIEF.md +0 -20
  214. package/IMPLEMENTATION/RFC-0053/FILES.md +0 -9
  215. package/IMPLEMENTATION/RFC-0053/TASKS.md +0 -3
  216. package/IMPLEMENTATION/RFC-0053/TESTS.md +0 -1
  217. package/IMPLEMENTATION/RFC-0054/ACCEPTANCE_CRITERIA.md +0 -8
  218. package/IMPLEMENTATION/RFC-0054/AI_BRIEF.md +0 -19
  219. package/IMPLEMENTATION/RFC-0054/FILES.md +0 -8
  220. package/IMPLEMENTATION/RFC-0054/TASKS.md +0 -3
  221. package/IMPLEMENTATION/RFC-0054/TESTS.md +0 -1
  222. package/IMPLEMENTATION/RFC-0055/ACCEPTANCE_CRITERIA.md +0 -8
  223. package/IMPLEMENTATION/RFC-0055/AI_BRIEF.md +0 -17
  224. package/IMPLEMENTATION/RFC-0055/FILES.md +0 -9
  225. package/IMPLEMENTATION/RFC-0055/TASKS.md +0 -3
  226. package/IMPLEMENTATION/RFC-0055/TESTS.md +0 -1
  227. package/IMPLEMENTATION/RFC-0056/ACCEPTANCE_CRITERIA.md +0 -6
  228. package/IMPLEMENTATION/RFC-0056/AI_BRIEF.md +0 -18
  229. package/IMPLEMENTATION/RFC-0056/FILES.md +0 -9
  230. package/IMPLEMENTATION/RFC-0056/TASKS.md +0 -9
  231. package/IMPLEMENTATION/RFC-0056/TESTS.md +0 -7
  232. package/IMPLEMENTATION/RFC-0057/ACCEPTANCE_CRITERIA.md +0 -5
  233. package/IMPLEMENTATION/RFC-0057/AI_BRIEF.md +0 -5
  234. package/IMPLEMENTATION/RFC-0057/FILES.md +0 -11
  235. package/IMPLEMENTATION/RFC-0057/TASKS.md +0 -9
  236. package/IMPLEMENTATION/RFC-0057/TESTS.md +0 -7
  237. package/IMPLEMENTATION/RFC-0058/ACCEPTANCE_CRITERIA.md +0 -6
  238. package/IMPLEMENTATION/RFC-0058/AI_BRIEF.md +0 -5
  239. package/IMPLEMENTATION/RFC-0058/FILES.md +0 -11
  240. package/IMPLEMENTATION/RFC-0058/TASKS.md +0 -9
  241. package/IMPLEMENTATION/RFC-0058/TESTS.md +0 -7
  242. package/IMPLEMENTATION/RFC-0059/ACCEPTANCE_CRITERIA.md +0 -6
  243. package/IMPLEMENTATION/RFC-0059/AI_BRIEF.md +0 -5
  244. package/IMPLEMENTATION/RFC-0059/FILES.md +0 -11
  245. package/IMPLEMENTATION/RFC-0059/TASKS.md +0 -9
  246. package/IMPLEMENTATION/RFC-0059/TESTS.md +0 -7
  247. package/IMPLEMENTATION/RFC-0060/ACCEPTANCE_CRITERIA.md +0 -7
  248. package/IMPLEMENTATION/RFC-0060/AI_BRIEF.md +0 -5
  249. package/IMPLEMENTATION/RFC-0060/FILES.md +0 -14
  250. package/IMPLEMENTATION/RFC-0060/TASKS.md +0 -12
  251. package/IMPLEMENTATION/RFC-0060/TESTS.md +0 -10
  252. package/IMPLEMENTATION/RFC-0061/ACCEPTANCE_CRITERIA.md +0 -1
  253. package/IMPLEMENTATION/RFC-0061/AI_BRIEF.md +0 -1
  254. package/IMPLEMENTATION/RFC-0061/FILES.md +0 -2
  255. package/IMPLEMENTATION/RFC-0061/TASKS.md +0 -4
  256. package/IMPLEMENTATION/RFC-0061/TESTS.md +0 -2
  257. package/IMPLEMENTATION/RFC-0062/ACCEPTANCE_CRITERIA.md +0 -1
  258. package/IMPLEMENTATION/RFC-0062/AI_BRIEF.md +0 -1
  259. package/IMPLEMENTATION/RFC-0062/FILES.md +0 -2
  260. package/IMPLEMENTATION/RFC-0062/TASKS.md +0 -4
  261. package/IMPLEMENTATION/RFC-0062/TESTS.md +0 -2
  262. package/IMPLEMENTATION/RFC-0063/ACCEPTANCE_CRITERIA.md +0 -1
  263. package/IMPLEMENTATION/RFC-0063/AI_BRIEF.md +0 -1
  264. package/IMPLEMENTATION/RFC-0063/FILES.md +0 -2
  265. package/IMPLEMENTATION/RFC-0063/TASKS.md +0 -4
  266. package/IMPLEMENTATION/RFC-0063/TESTS.md +0 -2
  267. package/IMPLEMENTATION/RFC-0064/ACCEPTANCE_CRITERIA.md +0 -1
  268. package/IMPLEMENTATION/RFC-0064/AI_BRIEF.md +0 -1
  269. package/IMPLEMENTATION/RFC-0064/FILES.md +0 -2
  270. package/IMPLEMENTATION/RFC-0064/TASKS.md +0 -4
  271. package/IMPLEMENTATION/RFC-0064/TESTS.md +0 -2
  272. package/IMPLEMENTATION/RFC-0065/ACCEPTANCE_CRITERIA.md +0 -1
  273. package/IMPLEMENTATION/RFC-0065/AI_BRIEF.md +0 -1
  274. package/IMPLEMENTATION/RFC-0065/FILES.md +0 -2
  275. package/IMPLEMENTATION/RFC-0065/TASKS.md +0 -4
  276. package/IMPLEMENTATION/RFC-0065/TESTS.md +0 -2
  277. package/IMPLEMENTATION/RFC-0066/ACCEPTANCE_CRITERIA.md +0 -2
  278. package/IMPLEMENTATION/RFC-0066/AI_BRIEF.md +0 -2
  279. package/IMPLEMENTATION/RFC-0066/FILES.md +0 -2
  280. package/IMPLEMENTATION/RFC-0066/TASKS.md +0 -4
  281. package/IMPLEMENTATION/RFC-0066/TESTS.md +0 -3
  282. package/IMPLEMENTATION/RFC-0067/ACCEPTANCE_CRITERIA.md +0 -2
  283. package/IMPLEMENTATION/RFC-0067/AI_BRIEF.md +0 -2
  284. package/IMPLEMENTATION/RFC-0067/FILES.md +0 -2
  285. package/IMPLEMENTATION/RFC-0067/TASKS.md +0 -4
  286. package/IMPLEMENTATION/RFC-0067/TESTS.md +0 -3
  287. package/IMPLEMENTATION/RFC-0068/ACCEPTANCE_CRITERIA.md +0 -2
  288. package/IMPLEMENTATION/RFC-0068/AI_BRIEF.md +0 -2
  289. package/IMPLEMENTATION/RFC-0068/FILES.md +0 -2
  290. package/IMPLEMENTATION/RFC-0068/TASKS.md +0 -4
  291. package/IMPLEMENTATION/RFC-0068/TESTS.md +0 -3
  292. package/IMPLEMENTATION/RFC-0069/ACCEPTANCE_CRITERIA.md +0 -2
  293. package/IMPLEMENTATION/RFC-0069/AI_BRIEF.md +0 -2
  294. package/IMPLEMENTATION/RFC-0069/FILES.md +0 -2
  295. package/IMPLEMENTATION/RFC-0069/TASKS.md +0 -4
  296. package/IMPLEMENTATION/RFC-0069/TESTS.md +0 -3
  297. package/IMPLEMENTATION/RFC-0070/ACCEPTANCE_CRITERIA.md +0 -2
  298. package/IMPLEMENTATION/RFC-0070/AI_BRIEF.md +0 -2
  299. package/IMPLEMENTATION/RFC-0070/FILES.md +0 -2
  300. package/IMPLEMENTATION/RFC-0070/TASKS.md +0 -4
  301. package/IMPLEMENTATION/RFC-0070/TESTS.md +0 -3
  302. package/IMPLEMENTATION/RFC-0071/ACCEPTANCE_CRITERIA.md +0 -2
  303. package/IMPLEMENTATION/RFC-0071/AI_BRIEF.md +0 -2
  304. package/IMPLEMENTATION/RFC-0071/FILES.md +0 -2
  305. package/IMPLEMENTATION/RFC-0071/TASKS.md +0 -4
  306. package/IMPLEMENTATION/RFC-0071/TESTS.md +0 -3
  307. package/IMPLEMENTATION/RFC-0072/ACCEPTANCE_CRITERIA.md +0 -2
  308. package/IMPLEMENTATION/RFC-0072/AI_BRIEF.md +0 -2
  309. package/IMPLEMENTATION/RFC-0072/FILES.md +0 -2
  310. package/IMPLEMENTATION/RFC-0072/TASKS.md +0 -4
  311. package/IMPLEMENTATION/RFC-0072/TESTS.md +0 -3
  312. package/IMPLEMENTATION/RFC-0073/ACCEPTANCE_CRITERIA.md +0 -2
  313. package/IMPLEMENTATION/RFC-0073/AI_BRIEF.md +0 -2
  314. package/IMPLEMENTATION/RFC-0073/FILES.md +0 -2
  315. package/IMPLEMENTATION/RFC-0073/TASKS.md +0 -4
  316. package/IMPLEMENTATION/RFC-0073/TESTS.md +0 -3
  317. package/IMPLEMENTATION/RFC-0074/ACCEPTANCE_CRITERIA.md +0 -2
  318. package/IMPLEMENTATION/RFC-0074/AI_BRIEF.md +0 -17
  319. package/IMPLEMENTATION/RFC-0074/FILES.md +0 -2
  320. package/IMPLEMENTATION/RFC-0074/TASKS.md +0 -4
  321. package/IMPLEMENTATION/RFC-0074/TESTS.md +0 -3
  322. package/IMPLEMENTATION/RFC-0075/ACCEPTANCE_CRITERIA.md +0 -2
  323. package/IMPLEMENTATION/RFC-0075/AI_BRIEF.md +0 -2
  324. package/IMPLEMENTATION/RFC-0075/FILES.md +0 -2
  325. package/IMPLEMENTATION/RFC-0075/TASKS.md +0 -4
  326. package/IMPLEMENTATION/RFC-0075/TESTS.md +0 -3
  327. package/IMPLEMENTATION/RFC-0076/ACCEPTANCE_CRITERIA.md +0 -2
  328. package/IMPLEMENTATION/RFC-0076/AI_BRIEF.md +0 -2
  329. package/IMPLEMENTATION/RFC-0076/FILES.md +0 -2
  330. package/IMPLEMENTATION/RFC-0076/TASKS.md +0 -4
  331. package/IMPLEMENTATION/RFC-0076/TESTS.md +0 -3
  332. package/IMPLEMENTATION/RFC-0077/ACCEPTANCE_CRITERIA.md +0 -2
  333. package/IMPLEMENTATION/RFC-0077/AI_BRIEF.md +0 -2
  334. package/IMPLEMENTATION/RFC-0077/FILES.md +0 -2
  335. package/IMPLEMENTATION/RFC-0077/TASKS.md +0 -4
  336. package/IMPLEMENTATION/RFC-0077/TESTS.md +0 -3
  337. package/IMPLEMENTATION/RFC-0078/ACCEPTANCE_CRITERIA.md +0 -2
  338. package/IMPLEMENTATION/RFC-0078/AI_BRIEF.md +0 -17
  339. package/IMPLEMENTATION/RFC-0078/FILES.md +0 -2
  340. package/IMPLEMENTATION/RFC-0078/TASKS.md +0 -4
  341. package/IMPLEMENTATION/RFC-0078/TESTS.md +0 -3
  342. package/IMPLEMENTATION/RFC-0079/ACCEPTANCE_CRITERIA.md +0 -2
  343. package/IMPLEMENTATION/RFC-0079/AI_BRIEF.md +0 -7
  344. package/IMPLEMENTATION/RFC-0079/FILES.md +0 -2
  345. package/IMPLEMENTATION/RFC-0079/TASKS.md +0 -4
  346. package/IMPLEMENTATION/RFC-0079/TESTS.md +0 -3
  347. package/IMPLEMENTATION/RFC-0080/ACCEPTANCE_CRITERIA.md +0 -2
  348. package/IMPLEMENTATION/RFC-0080/AI_BRIEF.md +0 -2
  349. package/IMPLEMENTATION/RFC-0080/FILES.md +0 -2
  350. package/IMPLEMENTATION/RFC-0080/TASKS.md +0 -4
  351. package/IMPLEMENTATION/RFC-0080/TESTS.md +0 -3
  352. package/IMPLEMENTATION/RFC-0081/ACCEPTANCE_CRITERIA.md +0 -2
  353. package/IMPLEMENTATION/RFC-0081/AI_BRIEF.md +0 -2
  354. package/IMPLEMENTATION/RFC-0081/FILES.md +0 -2
  355. package/IMPLEMENTATION/RFC-0081/TASKS.md +0 -4
  356. package/IMPLEMENTATION/RFC-0081/TESTS.md +0 -3
  357. package/IMPLEMENTATION/RFC-0082/ACCEPTANCE_CRITERIA.md +0 -2
  358. package/IMPLEMENTATION/RFC-0082/AI_BRIEF.md +0 -2
  359. package/IMPLEMENTATION/RFC-0082/FILES.md +0 -2
  360. package/IMPLEMENTATION/RFC-0082/TASKS.md +0 -4
  361. package/IMPLEMENTATION/RFC-0082/TESTS.md +0 -3
  362. package/IMPLEMENTATION/RFC-0083/ACCEPTANCE_CRITERIA.md +0 -2
  363. package/IMPLEMENTATION/RFC-0083/AI_BRIEF.md +0 -2
  364. package/IMPLEMENTATION/RFC-0083/FILES.md +0 -2
  365. package/IMPLEMENTATION/RFC-0083/TASKS.md +0 -4
  366. package/IMPLEMENTATION/RFC-0083/TESTS.md +0 -3
  367. package/IMPLEMENTATION/RFC-0084/ACCEPTANCE_CRITERIA.md +0 -2
  368. package/IMPLEMENTATION/RFC-0084/AI_BRIEF.md +0 -2
  369. package/IMPLEMENTATION/RFC-0084/FILES.md +0 -2
  370. package/IMPLEMENTATION/RFC-0084/TASKS.md +0 -4
  371. package/IMPLEMENTATION/RFC-0084/TESTS.md +0 -3
  372. package/IMPLEMENTATION/RFC-0085/ACCEPTANCE_CRITERIA.md +0 -2
  373. package/IMPLEMENTATION/RFC-0085/AI_BRIEF.md +0 -2
  374. package/IMPLEMENTATION/RFC-0085/FILES.md +0 -2
  375. package/IMPLEMENTATION/RFC-0085/TASKS.md +0 -4
  376. package/IMPLEMENTATION/RFC-0085/TESTS.md +0 -3
  377. package/IMPLEMENTATION/RFC-0086/ACCEPTANCE_CRITERIA.md +0 -2
  378. package/IMPLEMENTATION/RFC-0086/AI_BRIEF.md +0 -2
  379. package/IMPLEMENTATION/RFC-0086/FILES.md +0 -2
  380. package/IMPLEMENTATION/RFC-0086/TASKS.md +0 -4
  381. package/IMPLEMENTATION/RFC-0086/TESTS.md +0 -3
  382. package/IMPLEMENTATION/RFC-0087/ACCEPTANCE_CRITERIA.md +0 -2
  383. package/IMPLEMENTATION/RFC-0087/AI_BRIEF.md +0 -2
  384. package/IMPLEMENTATION/RFC-0087/FILES.md +0 -2
  385. package/IMPLEMENTATION/RFC-0087/TASKS.md +0 -4
  386. package/IMPLEMENTATION/RFC-0087/TESTS.md +0 -3
  387. package/IMPLEMENTATION/RFC-0088/ACCEPTANCE_CRITERIA.md +0 -2
  388. package/IMPLEMENTATION/RFC-0088/AI_BRIEF.md +0 -2
  389. package/IMPLEMENTATION/RFC-0088/FILES.md +0 -2
  390. package/IMPLEMENTATION/RFC-0088/TASKS.md +0 -4
  391. package/IMPLEMENTATION/RFC-0088/TESTS.md +0 -3
  392. package/IMPLEMENTATION/RFC-0089/ACCEPTANCE_CRITERIA.md +0 -2
  393. package/IMPLEMENTATION/RFC-0089/AI_BRIEF.md +0 -2
  394. package/IMPLEMENTATION/RFC-0089/FILES.md +0 -2
  395. package/IMPLEMENTATION/RFC-0089/TASKS.md +0 -4
  396. package/IMPLEMENTATION/RFC-0089/TESTS.md +0 -3
  397. package/IMPLEMENTATION/RFC-0090/ACCEPTANCE_CRITERIA.md +0 -2
  398. package/IMPLEMENTATION/RFC-0090/AI_BRIEF.md +0 -2
  399. package/IMPLEMENTATION/RFC-0090/FILES.md +0 -2
  400. package/IMPLEMENTATION/RFC-0090/TASKS.md +0 -4
  401. package/IMPLEMENTATION/RFC-0090/TESTS.md +0 -3
  402. package/IMPLEMENTATION/RFC-0091/ACCEPTANCE_CRITERIA.md +0 -2
  403. package/IMPLEMENTATION/RFC-0091/AI_BRIEF.md +0 -2
  404. package/IMPLEMENTATION/RFC-0091/FILES.md +0 -2
  405. package/IMPLEMENTATION/RFC-0091/TASKS.md +0 -4
  406. package/IMPLEMENTATION/RFC-0091/TESTS.md +0 -3
  407. package/IMPLEMENTATION/RFC-0092/ACCEPTANCE_CRITERIA.md +0 -2
  408. package/IMPLEMENTATION/RFC-0092/AI_BRIEF.md +0 -20
  409. package/IMPLEMENTATION/RFC-0092/FILES.md +0 -2
  410. package/IMPLEMENTATION/RFC-0092/TASKS.md +0 -4
  411. package/IMPLEMENTATION/RFC-0092/TESTS.md +0 -3
  412. package/IMPLEMENTATION/RFC-0093/ACCEPTANCE_CRITERIA.md +0 -2
  413. package/IMPLEMENTATION/RFC-0093/AI_BRIEF.md +0 -22
  414. package/IMPLEMENTATION/RFC-0093/FILES.md +0 -2
  415. package/IMPLEMENTATION/RFC-0093/TASKS.md +0 -4
  416. package/IMPLEMENTATION/RFC-0093/TESTS.md +0 -3
  417. package/IMPLEMENTATION/RFC-0094/ACCEPTANCE_CRITERIA.md +0 -2
  418. package/IMPLEMENTATION/RFC-0094/AI_BRIEF.md +0 -2
  419. package/IMPLEMENTATION/RFC-0094/FILES.md +0 -2
  420. package/IMPLEMENTATION/RFC-0094/TASKS.md +0 -4
  421. package/IMPLEMENTATION/RFC-0094/TESTS.md +0 -3
  422. package/IMPLEMENTATION/RFC-0095/ACCEPTANCE_CRITERIA.md +0 -2
  423. package/IMPLEMENTATION/RFC-0095/AI_BRIEF.md +0 -2
  424. package/IMPLEMENTATION/RFC-0095/FILES.md +0 -2
  425. package/IMPLEMENTATION/RFC-0095/TASKS.md +0 -4
  426. package/IMPLEMENTATION/RFC-0095/TESTS.md +0 -3
  427. package/IMPLEMENTATION/RFC-0096/ACCEPTANCE_CRITERIA.md +0 -2
  428. package/IMPLEMENTATION/RFC-0096/AI_BRIEF.md +0 -2
  429. package/IMPLEMENTATION/RFC-0096/FILES.md +0 -2
  430. package/IMPLEMENTATION/RFC-0096/TASKS.md +0 -4
  431. package/IMPLEMENTATION/RFC-0096/TESTS.md +0 -3
  432. package/IMPLEMENTATION/RFC-0097/ACCEPTANCE_CRITERIA.md +0 -2
  433. package/IMPLEMENTATION/RFC-0097/AI_BRIEF.md +0 -2
  434. package/IMPLEMENTATION/RFC-0097/FILES.md +0 -2
  435. package/IMPLEMENTATION/RFC-0097/TASKS.md +0 -4
  436. package/IMPLEMENTATION/RFC-0097/TESTS.md +0 -3
  437. package/IMPLEMENTATION/RFC-0098/ACCEPTANCE_CRITERIA.md +0 -2
  438. package/IMPLEMENTATION/RFC-0098/AI_BRIEF.md +0 -2
  439. package/IMPLEMENTATION/RFC-0098/FILES.md +0 -2
  440. package/IMPLEMENTATION/RFC-0098/TASKS.md +0 -4
  441. package/IMPLEMENTATION/RFC-0098/TESTS.md +0 -3
  442. package/IMPLEMENTATION/RFC-0099/ACCEPTANCE_CRITERIA.md +0 -2
  443. package/IMPLEMENTATION/RFC-0099/AI_BRIEF.md +0 -2
  444. package/IMPLEMENTATION/RFC-0099/FILES.md +0 -2
  445. package/IMPLEMENTATION/RFC-0099/TASKS.md +0 -4
  446. package/IMPLEMENTATION/RFC-0099/TESTS.md +0 -3
  447. package/IMPLEMENTATION/RFC-0100/ACCEPTANCE_CRITERIA.md +0 -2
  448. package/IMPLEMENTATION/RFC-0100/AI_BRIEF.md +0 -2
  449. package/IMPLEMENTATION/RFC-0100/FILES.md +0 -2
  450. package/IMPLEMENTATION/RFC-0100/TASKS.md +0 -4
  451. package/IMPLEMENTATION/RFC-0100/TESTS.md +0 -3
  452. package/IMPLEMENTATION/RFC-0101/ACCEPTANCE_CRITERIA.md +0 -74
  453. package/IMPLEMENTATION/RFC-0101/AI_BRIEF.md +0 -80
  454. package/IMPLEMENTATION/RFC-0101/FILES.md +0 -82
  455. package/IMPLEMENTATION/RFC-0101/TASKS.md +0 -92
  456. package/IMPLEMENTATION/RFC-0101/TESTS.md +0 -127
  457. package/IMPLEMENTATION/RFC-0102/ACCEPTANCE_CRITERIA.md +0 -33
  458. package/IMPLEMENTATION/RFC-0102/AI_BRIEF.md +0 -34
  459. package/IMPLEMENTATION/RFC-0102/FILES.md +0 -73
  460. package/IMPLEMENTATION/RFC-0102/TASKS.md +0 -75
  461. package/IMPLEMENTATION/RFC-0102/TESTS.md +0 -78
  462. package/IMPLEMENTATION/RFC-0103/ACCEPTANCE_CRITERIA.md +0 -45
  463. package/IMPLEMENTATION/RFC-0103/AI_BRIEF.md +0 -46
  464. package/IMPLEMENTATION/RFC-0103/FILES.md +0 -121
  465. package/IMPLEMENTATION/RFC-0103/TASKS.md +0 -97
  466. package/IMPLEMENTATION/RFC-0103/TESTS.md +0 -118
  467. package/IMPLEMENTATION/RFC-0104/ACCEPTANCE_CRITERIA.md +0 -29
  468. package/IMPLEMENTATION/RFC-0104/FILES.md +0 -33
  469. package/IMPLEMENTATION/RFC-0105/ACCEPTANCE_CRITERIA.md +0 -29
  470. package/IMPLEMENTATION/RFC-0105/FILES.md +0 -41
  471. package/IMPLEMENTATION/RFC-0106/ACCEPTANCE_CRITERIA.md +0 -29
  472. package/IMPLEMENTATION/RFC-0106/FILES.md +0 -43
  473. package/RFC/0001_LOOP_RUNTIME.md +0 -14
  474. package/RFC/0002_PROVIDER_ADAPTER.md +0 -3
  475. package/RFC/0003_QUOTA_MANAGER.md +0 -3
  476. package/RFC/0004_PLAYWRIGHT_ADAPTER.md +0 -3
  477. package/RFC/0005_GIT_WORKTREE.md +0 -3
  478. package/RFC/0006_CHECKPOINT_MANAGER.md +0 -56
  479. package/RFC/0007_SCHEDULER.md +0 -32
  480. package/RFC/0008_PROVIDER_ROUTER.md +0 -44
  481. package/RFC/0009_SHARED_CONTEXT.md +0 -32
  482. package/RFC/0010_CONTEXT_WINDOW_MANAGER.md +0 -50
  483. package/RFC/0011_SHARED_BLACKBOARD.md +0 -42
  484. package/RFC/0012_AGENT_HANDOFF_PROTOCOL.md +0 -41
  485. package/RFC/0013_E2E_TEST_ENGINE.md +0 -42
  486. package/RFC/0014_PROJECT_DETECTOR_AND_TEST_DATA_ENGINE.md +0 -35
  487. package/RFC/0015_JOB_STATE_MACHINE.md +0 -45
  488. package/RFC/0016_TASK_GRAPH.md +0 -31
  489. package/RFC/0017_MASTER_PLANNER.md +0 -32
  490. package/RFC/0018_REPAIR_ENGINE.md +0 -36
  491. package/RFC/0019_AUTO_COMPACT_AND_CONTINUE.md +0 -51
  492. package/RFC/0020_OUTPUT_TOKEN_LIMIT_HANDLER.md +0 -49
  493. package/RFC/0021_PARTIAL_RESPONSE_RECOVERY.md +0 -49
  494. package/RFC/0022_NOTIFICATION_CENTER.md +0 -47
  495. package/RFC/0023_LOCAL_BROWSER_AGENT.md +0 -67
  496. package/RFC/0024_LOCAL_RUNTIME_AGENT.md +0 -3
  497. package/RFC/0025_COMMAND_EXECUTOR.md +0 -3
  498. package/RFC/0026_WORKSPACE_MANAGER.md +0 -3
  499. package/RFC/0027_RUNTIME_API.md +0 -3
  500. package/RFC/0028_POLICY_ENGINE.md +0 -3
  501. package/RFC/0029_DEEPAGENTS_ADAPTER.md +0 -2
  502. package/RFC/0030_AGENT_WORKER_INTERFACE.md +0 -2
  503. package/RFC/0031_PROVIDER_ADAPTER_SDK.md +0 -171
  504. package/RFC/0032_CHECKPOINT_ENGINE.md +0 -217
  505. package/RFC/0033_SESSION_MANAGER.md +0 -262
  506. package/RFC/0034_OBSERVABILITY.md +0 -416
  507. package/RFC/0035_ROADMAP_V1.md +0 -295
  508. package/RFC/0036_CODE_REVIEW_ENGINE.md +0 -430
  509. package/RFC/0037_CODE_GENERATION_PIPELINE.md +0 -504
  510. package/RFC/0038_FRAMEWORK_DETECTOR.md +0 -466
  511. package/RFC/0039_TEST_DATA_GENERATOR.md +0 -504
  512. package/RFC/0040_FRAMEWORK_PLUGIN_SDK.md +0 -543
  513. package/RFC/0041_PROMPT_COMPILER.md +0 -232
  514. package/RFC/0042_CONTEXT_COMPILER.md +0 -216
  515. package/RFC/0043_REQUIREMENT_COMPILER.md +0 -211
  516. package/RFC/0044_TASK_COMPILER.md +0 -207
  517. package/RFC/0045_PROJECT_ANALYZER.md +0 -246
  518. package/RFC/0046_DEPENDENCY_ANALYZER.md +0 -14
  519. package/RFC/0047_REPOSITORY_KNOWLEDGE_GRAPH.md +0 -14
  520. package/RFC/0048_CODE_MERGE_ENGINE.md +0 -14
  521. package/RFC/0049_CONFLICT_RESOLUTION_ENGINE.md +0 -14
  522. package/RFC/0050_DOCUMENTATION_GENERATOR.md +0 -14
  523. package/RFC/0051_CAPABILITY_REGISTRY.md +0 -144
  524. package/RFC/0052_SKILL_REGISTRY.md +0 -167
  525. package/RFC/0053_MODEL_REGISTRY.md +0 -214
  526. package/RFC/0054_PROVIDER_ROUTER.md +0 -239
  527. package/RFC/0055_COST_OPTIMIZER.md +0 -285
  528. package/RFC/0056_PERFORMANCE_OPTIMIZER.md +0 -118
  529. package/RFC/0057_EVALUATION_ENGINE.md +0 -116
  530. package/RFC/0058_LEARNING_ENGINE.md +0 -113
  531. package/RFC/0059_EXPERIENCE_REPLAY.md +0 -107
  532. package/RFC/0060_MEMORY_ENGINE_OKF.md +0 -152
  533. package/RFC/0061_FRAPPE_PLUGIN.md +0 -9
  534. package/RFC/0062_NEXTJS_PLUGIN.md +0 -9
  535. package/RFC/0063_REACT_VITE_PLUGIN.md +0 -9
  536. package/RFC/0064_DJANGO_PLUGIN.md +0 -9
  537. package/RFC/0065_LARAVEL_PLUGIN.md +0 -9
  538. package/RFC/0066_GENERIC_WEB_PLUGIN.md +0 -24
  539. package/RFC/0067_CLI_PLUGIN_SDK.md +0 -101
  540. package/RFC/0068_MCP_ADAPTER.md +0 -114
  541. package/RFC/0069_GOOGLE_A2A_ADAPTER.md +0 -139
  542. package/RFC/0070_OPENAI_CODEX_ADAPTER.md +0 -134
  543. package/RFC/0071_REQUIREMENT_INTAKE.md +0 -95
  544. package/RFC/0072_PROJECT_BOOTSTRAP.md +0 -82
  545. package/RFC/0073_ARCHITECTURE_GENERATOR.md +0 -85
  546. package/RFC/0074_SPRINT_PLANNER.md +0 -61
  547. package/RFC/0075_MILESTONE_MANAGER.md +0 -58
  548. package/RFC/0076_BACKLOG_MANAGER.md +0 -24
  549. package/RFC/0077_HUMAN_APPROVAL_GATE.md +0 -24
  550. package/RFC/0078_RELEASE_MANAGER.md +0 -24
  551. package/RFC/0079_VERSION_MANAGER.md +0 -24
  552. package/RFC/0080_DEPLOYMENT_PIPELINE.md +0 -24
  553. package/RFC/0081_MULTI_USER_RUNTIME.md +0 -24
  554. package/RFC/0082_RBAC.md +0 -24
  555. package/RFC/0083_AUDIT_TRAIL.md +0 -24
  556. package/RFC/0084_DASHBOARD.md +0 -24
  557. package/RFC/0085_ANALYTICS.md +0 -24
  558. package/RFC/0086_DISTRIBUTED_RUNTIME.md +0 -24
  559. package/RFC/0087_CLUSTER_MANAGER.md +0 -24
  560. package/RFC/0088_RUNTIME_FEDERATION.md +0 -24
  561. package/RFC/0089_HIGH_AVAILABILITY.md +0 -24
  562. package/RFC/0090_DISASTER_RECOVERY.md +0 -24
  563. package/RFC/0091_AUTONOMOUS_ARCHITECTURE_REVIEW.md +0 -24
  564. package/RFC/0092_AUTONOMOUS_REFACTORING.md +0 -24
  565. package/RFC/0093_AUTONOMOUS_BUG_FIXING.md +0 -24
  566. package/RFC/0094_AUTONOMOUS_PERFORMANCE_TUNING.md +0 -24
  567. package/RFC/0095_AUTONOMOUS_SECURITY_REVIEW.md +0 -24
  568. package/RFC/0096_AUTONOMOUS_COST_OPTIMIZATION.md +0 -24
  569. package/RFC/0097_AUTONOMOUS_DOCUMENTATION.md +0 -24
  570. package/RFC/0098_AUTONOMOUS_KNOWLEDGE_MANAGEMENT.md +0 -24
  571. package/RFC/0099_RUNTIME_EVOLUTION_ENGINE.md +0 -24
  572. package/RFC/0100_SELF_DEVELOPING_RUNTIME.md +0 -24
  573. package/RFC/0101_AUTONOMOUS_OPERATIONS_RUNTIME.md +0 -1105
  574. package/RFC/0102_CONTEXT_ENGINEERING_PIPELINE.md +0 -508
  575. package/RFC/0103_SESSION_EVENT_RUNTIME_AGENT_COMMUNICATION_LAYER.md +0 -616
  576. package/RFC/0104_DISTRIBUTED_AGENT_COMMUNICATION.md +0 -143
  577. package/RFC/0105_DISTRIBUTED_KNOWLEDGE_RETRIEVAL.md +0 -301
  578. package/RFC/0106_KNOWLEDGE_GRAPH_PROVENANCE.md +0 -368
  579. package/RFC/README.md +0 -11
  580. package/packages/event-bus/dist/tsconfig.tsbuildinfo +0 -1
  581. package/packages/provider-adapter-sdk/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,289 @@
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
+ }
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Smart Auto-Todo Task Analyzer
3
+ *
4
+ * Decides when to automatically create bd issues based on:
5
+ * 1. Task complexity signals
6
+ * 2. Session state (pending task count)
7
+ *
8
+ * Philosophy:
9
+ * - Simple tasks (grep, quick edit) -> NO todo (avoid noise)
10
+ * - Complex tasks OR multiple pending tasks -> AUTO-CREATE todo
11
+ */
12
+ import { getOpenBdIssues } from "./sync.js";
13
+ const COMPLEX_KEYWORDS = [
14
+ "complicated",
15
+ "complex",
16
+ "tricky",
17
+ "difficult",
18
+ "refactor",
19
+ "architecture",
20
+ "design",
21
+ "implement from scratch",
22
+ "rewrite",
23
+ "investigate",
24
+ "debug",
25
+ "fix the bug",
26
+ "performance",
27
+ ];
28
+ const RESEARCH_KEYWORDS = [
29
+ "search",
30
+ "look up",
31
+ "find",
32
+ "research",
33
+ "check",
34
+ "verify",
35
+ "how to",
36
+ "best practice",
37
+ "compare",
38
+ "evaluate",
39
+ "review",
40
+ ];
41
+ const SUBTASK_KEYWORDS = [
42
+ "also",
43
+ "plus",
44
+ "and also",
45
+ "while you're at it",
46
+ "on top of that",
47
+ "additionally",
48
+ "another thing",
49
+ "don't forget",
50
+ "should also",
51
+ ];
52
+ /**
53
+ * Analyze user request text for complexity signals
54
+ */
55
+ export function analyzeTaskSignals(userMessage) {
56
+ const lower = userMessage.toLowerCase();
57
+ // Count implied steps from action verbs
58
+ const actionVerbs = [
59
+ "create",
60
+ "build",
61
+ "implement",
62
+ "design",
63
+ "setup",
64
+ "configure",
65
+ "migrate",
66
+ "convert",
67
+ "refactor",
68
+ "optimize",
69
+ "fix",
70
+ "update",
71
+ "add",
72
+ "remove",
73
+ "delete",
74
+ "modify",
75
+ "change",
76
+ "replace",
77
+ ];
78
+ const stepCount = Math.max(1, actionVerbs.filter((v) => lower.includes(v)).length);
79
+ // Estimate file count from file paths and extensions
80
+ const filePatterns = /[\w-]+\.(ts|js|py|json|md|yaml|yml|tsx|jsx|html|css|sql)/g;
81
+ const fileMatches = userMessage.match(filePatterns) || [];
82
+ const explicitFiles = fileMatches.length;
83
+ // Check for directory patterns
84
+ const dirPatterns = /(?:src|lib|packages|apps|components|hooks|utils|api)\/[\w/-]+/g;
85
+ const dirMatches = userMessage.match(dirPatterns) || [];
86
+ // Count "and", "also", "+" for multi-task indicators
87
+ const multiTaskIndicator = (lower.match(/and also|also|\+/g) || []).length;
88
+ const estimatedFiles = Math.max(1, explicitFiles + dirMatches.length + multiTaskIndicator);
89
+ return {
90
+ stepCount,
91
+ fileCount: estimatedFiles,
92
+ needsResearch: RESEARCH_KEYWORDS.some((k) => lower.includes(k)),
93
+ createsFiles: lower.includes("create") ||
94
+ lower.includes("add") ||
95
+ lower.includes("new"),
96
+ explicitlyComplex: COMPLEX_KEYWORDS.some((k) => lower.includes(k)),
97
+ likelySubtasks: SUBTASK_KEYWORDS.some((k) => lower.includes(k)) ||
98
+ multiTaskIndicator >= 2,
99
+ };
100
+ }
101
+ /**
102
+ * Decide whether to auto-create a todo for the given task
103
+ */
104
+ export function decideAutoTodo(userMessage, options = {}) {
105
+ const signals = analyzeTaskSignals(userMessage);
106
+ const pendingTasks = getOpenBdIssues().filter((i) => i.status !== "closed");
107
+ const pendingCount = pendingTasks.length;
108
+ // ── Skip Conditions ────────────────────────────────────────────────────
109
+ // Never create todos for these
110
+ const simplePatterns = [
111
+ /^simply\s/i,
112
+ /^just\s/i,
113
+ /^quick\s/i,
114
+ /^can you\s+(grep|find|cat|ls|echo)/i,
115
+ /^(grep|find|cat|ls)\s+[\w.-]+/i,
116
+ /^what('s| is) the\s+\w+\s+\?$/i,
117
+ /^how do i\s+\w+\s*\?$/i,
118
+ ];
119
+ if (simplePatterns.some((p) => p.test(userMessage.trim()))) {
120
+ return {
121
+ shouldCreate: false,
122
+ reason: "Simple request (lookup/one-liner)",
123
+ confidence: "high",
124
+ skipReason: "Task is too simple to warrant tracking",
125
+ };
126
+ }
127
+ // Check for trivial single actions with no complexity (lower threshold)
128
+ // Allow more tasks to be tracked - being conservative about NOT tracking
129
+ const isTrivial = signals.stepCount === 1 &&
130
+ signals.fileCount <= 1 &&
131
+ !signals.needsResearch &&
132
+ !signals.createsFiles &&
133
+ !signals.explicitlyComplex &&
134
+ pendingCount === 0 &&
135
+ !signals.likelySubtasks;
136
+ if (isTrivial) {
137
+ return {
138
+ shouldCreate: false,
139
+ reason: "Trivial request (single action)",
140
+ confidence: "high",
141
+ skipReason: "Task is trivial",
142
+ };
143
+ }
144
+ // ── Force Modes ──────────────────────────────────────────────────────
145
+ if (options.forceMode) {
146
+ return {
147
+ shouldCreate: true,
148
+ reason: "Force mode enabled",
149
+ confidence: "high",
150
+ };
151
+ }
152
+ if (options.skipMode) {
153
+ return {
154
+ shouldCreate: false,
155
+ reason: "Skip mode enabled",
156
+ confidence: "high",
157
+ skipReason: "User requested skip",
158
+ };
159
+ }
160
+ // ── Auto-Create Conditions ──────────────────────────────────────────
161
+ // Be MORE aggressive about tracking tasks - default to tracking
162
+ const reasons = [];
163
+ // HIGH CONFIDENCE: Task explicitly complex
164
+ if (signals.explicitlyComplex) {
165
+ reasons.push("explicitly complex");
166
+ }
167
+ // HIGH CONFIDENCE: Multiple steps (lower from 3 to 2)
168
+ if (signals.stepCount >= 2) {
169
+ reasons.push(`${signals.stepCount} steps implied`);
170
+ }
171
+ // HIGH CONFIDENCE: Multiple files (lower from 3 to 2)
172
+ if (signals.fileCount >= 2) {
173
+ reasons.push(`${signals.fileCount} files involved`);
174
+ }
175
+ // MEDIUM CONFIDENCE: Research needed
176
+ if (signals.needsResearch) {
177
+ reasons.push("needs research");
178
+ }
179
+ // MEDIUM CONFIDENCE: Creates files
180
+ if (signals.createsFiles) {
181
+ reasons.push("creates files");
182
+ }
183
+ // MEDIUM CONFIDENCE: Likely subtasks
184
+ if (signals.likelySubtasks) {
185
+ reasons.push("likely has subtasks");
186
+ }
187
+ // MEDIUM CONFIDENCE: Has pending tasks already (session busy)
188
+ if (pendingCount >= 1) {
189
+ reasons.push(`${pendingCount} pending tasks`);
190
+ }
191
+ // Default to creating todo if any signal present
192
+ // Be conservative only for truly trivial requests (already filtered above)
193
+ if (reasons.length === 0) {
194
+ // No strong signals but not trivial either - track it anyway
195
+ reasons.push("multi-step task detected");
196
+ }
197
+ // Create todo if ANY reason OR any pending tasks
198
+ const shouldCreate = reasons.length >= 1 || pendingCount >= 1;
199
+ return {
200
+ shouldCreate,
201
+ reason: reasons.join(", "),
202
+ confidence: reasons.length >= 2 ? "high" : "medium",
203
+ };
204
+ }
205
+ // ─── Quick Score ─────────────────────────────────────────────────────────────
206
+ /**
207
+ * Quick numeric score (0-100) for task complexity
208
+ * Higher = more likely to need a todo
209
+ */
210
+ export function getTaskComplexityScore(userMessage) {
211
+ const signals = analyzeTaskSignals(userMessage);
212
+ const pendingTasks = getOpenBdIssues().filter((i) => i.status !== "closed");
213
+ let score = 0;
214
+ // Step count (0-25)
215
+ score += Math.min(25, signals.stepCount * 8);
216
+ // File count (0-20)
217
+ score += Math.min(20, signals.fileCount * 5);
218
+ // Research needed (0-15)
219
+ if (signals.needsResearch)
220
+ score += 15;
221
+ // Creates files (0-10)
222
+ if (signals.createsFiles)
223
+ score += 10;
224
+ // Explicitly complex (0-20)
225
+ if (signals.explicitlyComplex)
226
+ score += 20;
227
+ // Likely subtasks (0-10)
228
+ if (signals.likelySubtasks)
229
+ score += 10;
230
+ // Pending task overload (0-25)
231
+ const pendingCount = pendingTasks.length;
232
+ if (pendingCount >= 3)
233
+ score += 25;
234
+ else if (pendingCount >= 2)
235
+ score += 15;
236
+ else if (pendingCount >= 1)
237
+ score += 5;
238
+ return Math.min(100, score);
239
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Types for todo-bd-sync
3
+ * Two-way sync between rpiv-todo overlay and bd issue tracker
4
+ */
5
+ // Registry of ID mappings
6
+ export class IdMappingRegistry {
7
+ mappings = new Map(); // todoId -> mapping
8
+ bdMappings = new Map(); // bdId -> todoId
9
+ set(todoId, bdId) {
10
+ const now = Date.now();
11
+ const mapping = {
12
+ todoId,
13
+ bdId,
14
+ createdAt: now,
15
+ lastSync: now,
16
+ };
17
+ this.mappings.set(todoId, mapping);
18
+ this.bdMappings.set(bdId, todoId);
19
+ }
20
+ getByTodoId(todoId) {
21
+ return this.mappings.get(todoId);
22
+ }
23
+ getByBdId(bdId) {
24
+ const todoId = this.bdMappings.get(bdId);
25
+ return todoId !== undefined ? this.mappings.get(todoId) : undefined;
26
+ }
27
+ hasTodoId(todoId) {
28
+ return this.mappings.has(todoId);
29
+ }
30
+ hasBdId(bdId) {
31
+ return this.bdMappings.has(bdId);
32
+ }
33
+ updateLastSync(todoId) {
34
+ const mapping = this.mappings.get(todoId);
35
+ if (mapping) {
36
+ mapping.lastSync = Date.now();
37
+ }
38
+ }
39
+ delete(todoId) {
40
+ const mapping = this.mappings.get(todoId);
41
+ if (mapping) {
42
+ this.bdMappings.delete(mapping.bdId);
43
+ this.mappings.delete(todoId);
44
+ }
45
+ }
46
+ getAll() {
47
+ return Array.from(this.mappings.values());
48
+ }
49
+ clear() {
50
+ this.mappings.clear();
51
+ this.bdMappings.clear();
52
+ }
53
+ }
54
+ // Status mapping between todo and bd
55
+ export const STATUS_MAP = {
56
+ pending: "open",
57
+ in_progress: "in_progress",
58
+ completed: "closed",
59
+ deleted: "closed",
60
+ };
61
+ export const BD_STATUS_MAP = {
62
+ open: "pending",
63
+ in_progress: "in_progress",
64
+ closed: "completed",
65
+ blocked: "pending",
66
+ };
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Token Estimation
3
+ *
4
+ * Rough token counting for messages and text.
5
+ * Used for context window management before API calls.
6
+ */
7
+ /**
8
+ * Rough token count estimation — conservative (overestimates slightly).
9
+ * Based on average ~3.8 chars/token for English text.
10
+ */
11
+ export function roughTokenCount(text) {
12
+ if (!text || text.length === 0)
13
+ return 0;
14
+ // Count words as proxy for tokens (more accurate for mixed content)
15
+ const words = text.trim().split(/\s+/).length;
16
+ // Average English token ~1.3 words, overhead for JSON structure
17
+ return Math.ceil(text.length / 3.5) + Math.ceil(words * 0.3);
18
+ }
19
+ /**
20
+ * Rough token count for a structured message.
21
+ * Handles role, content, tool_calls, tool_results, thinking blocks.
22
+ */
23
+ export function roughMessageTokens(msg) {
24
+ if (!msg)
25
+ return 0;
26
+ let tokens = 0;
27
+ // Role overhead: ~4 tokens per message
28
+ tokens += 4;
29
+ // Content
30
+ if (typeof msg.content === "string") {
31
+ tokens += roughTokenCount(msg.content);
32
+ }
33
+ else if (Array.isArray(msg.content)) {
34
+ for (const block of msg.content) {
35
+ if (block.type === "text" && block.text) {
36
+ tokens += roughTokenCount(block.text);
37
+ }
38
+ else if (block.type === "tool_use" && block.name) {
39
+ // Tool name + JSON input
40
+ tokens += roughTokenCount(block.name);
41
+ if (block.input) {
42
+ tokens += roughTokenCount(JSON.stringify(block.input));
43
+ }
44
+ }
45
+ else if (block.type === "tool_result") {
46
+ // Tool result: estimate 50 tokens overhead + content
47
+ tokens += 50;
48
+ }
49
+ else if (block.type === "image") {
50
+ // Image blocks: ~2000 tokens (Anthropic convention)
51
+ tokens += 2000;
52
+ }
53
+ else if (block.type === "thinking" && block.thinking) {
54
+ tokens += roughTokenCount(block.thinking);
55
+ }
56
+ }
57
+ }
58
+ // Tool calls (separate from content blocks)
59
+ if (msg.tool_calls && Array.isArray(msg.tool_calls)) {
60
+ for (const tc of msg.tool_calls) {
61
+ tokens += roughTokenCount(tc.name);
62
+ if (tc.input) {
63
+ tokens += roughTokenCount(JSON.stringify(tc.input));
64
+ }
65
+ }
66
+ }
67
+ // Thinking blocks
68
+ if (msg.thinking) {
69
+ tokens += roughTokenCount(msg.thinking);
70
+ }
71
+ return tokens;
72
+ }
73
+ /**
74
+ * Rough token count for a full message array (API request format).
75
+ */
76
+ export function roughMessagesTokens(messages) {
77
+ return messages.reduce((sum, msg) => sum + roughMessageTokens(msg), 0);
78
+ }
79
+ /**
80
+ * Estimate tokens for a system prompt string.
81
+ * System prompts typically have overhead from role markers.
82
+ */
83
+ export function roughSystemPromptTokens(systemPrompt) {
84
+ // System message overhead (~15 tokens for role markers) + content
85
+ return 15 + roughTokenCount(systemPrompt);
86
+ }
87
+ /**
88
+ * Estimate tokens for tool definitions (schema).
89
+ */
90
+ export function roughToolDefinitionTokens(tool) {
91
+ let tokens = roughTokenCount(tool.name);
92
+ if (tool.description) {
93
+ tokens += roughTokenCount(tool.description);
94
+ }
95
+ if (tool.input_schema) {
96
+ tokens += roughTokenCount(JSON.stringify(tool.input_schema));
97
+ }
98
+ return tokens;
99
+ }
100
+ export function estimateRequestTokens(systemPrompt, messages, tools, maxOutputTokens) {
101
+ const systemPromptTokens = roughSystemPromptTokens(systemPrompt);
102
+ const messagesTokens = roughMessagesTokens(messages);
103
+ const toolsTokens = tools.reduce((sum, tool) => sum + roughToolDefinitionTokens(tool), 0);
104
+ const total = systemPromptTokens + messagesTokens + toolsTokens;
105
+ const availableForContext = maxOutputTokens > 0 ? maxOutputTokens - total : 0;
106
+ return {
107
+ systemPrompt: systemPromptTokens,
108
+ messages: messagesTokens,
109
+ tools: toolsTokens,
110
+ total,
111
+ maxOutputTokens,
112
+ availableForContext,
113
+ };
114
+ }