agent-bober 0.18.0 → 0.19.0

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 (824) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +11 -0
  3. package/README.md +245 -6
  4. package/agents/bober-art-director.md +100 -0
  5. package/agents/bober-design-critic.md +114 -0
  6. package/agents/bober-frontend-builder.md +101 -0
  7. package/agents/bober-security-auditor.md +193 -0
  8. package/agents/bober-security-verifier.md +104 -0
  9. package/agents/bober-seo-strategist.md +144 -0
  10. package/agents/bober-seo-verifier.md +103 -0
  11. package/dist/calendar/calendar-egress.d.ts +26 -0
  12. package/dist/calendar/calendar-egress.d.ts.map +1 -0
  13. package/dist/calendar/calendar-egress.js +35 -0
  14. package/dist/calendar/calendar-egress.js.map +1 -0
  15. package/dist/calendar/calendar-token.d.ts +34 -0
  16. package/dist/calendar/calendar-token.d.ts.map +1 -0
  17. package/dist/calendar/calendar-token.js +56 -0
  18. package/dist/calendar/calendar-token.js.map +1 -0
  19. package/dist/calendar/connector.d.ts +22 -0
  20. package/dist/calendar/connector.d.ts.map +1 -0
  21. package/dist/calendar/connector.js +3 -0
  22. package/dist/calendar/connector.js.map +1 -0
  23. package/dist/calendar/finding-source.d.ts +20 -0
  24. package/dist/calendar/finding-source.d.ts.map +1 -0
  25. package/dist/calendar/finding-source.js +35 -0
  26. package/dist/calendar/finding-source.js.map +1 -0
  27. package/dist/calendar/google-connector.d.ts +65 -0
  28. package/dist/calendar/google-connector.d.ts.map +1 -0
  29. package/dist/calendar/google-connector.js +129 -0
  30. package/dist/calendar/google-connector.js.map +1 -0
  31. package/dist/calendar/ics-connector.d.ts +12 -0
  32. package/dist/calendar/ics-connector.d.ts.map +1 -0
  33. package/dist/calendar/ics-connector.js +48 -0
  34. package/dist/calendar/ics-connector.js.map +1 -0
  35. package/dist/calendar/proposal-gate.d.ts +84 -0
  36. package/dist/calendar/proposal-gate.d.ts.map +1 -0
  37. package/dist/calendar/proposal-gate.js +126 -0
  38. package/dist/calendar/proposal-gate.js.map +1 -0
  39. package/dist/calendar/slotter.d.ts +34 -0
  40. package/dist/calendar/slotter.d.ts.map +1 -0
  41. package/dist/calendar/slotter.js +196 -0
  42. package/dist/calendar/slotter.js.map +1 -0
  43. package/dist/calendar/types.d.ts +162 -0
  44. package/dist/calendar/types.d.ts.map +1 -0
  45. package/dist/calendar/types.js +28 -0
  46. package/dist/calendar/types.js.map +1 -0
  47. package/dist/chat/chat-session.d.ts +27 -0
  48. package/dist/chat/chat-session.d.ts.map +1 -1
  49. package/dist/chat/chat-session.js +101 -1
  50. package/dist/chat/chat-session.js.map +1 -1
  51. package/dist/chat/slash-commands.d.ts +6 -2
  52. package/dist/chat/slash-commands.d.ts.map +1 -1
  53. package/dist/chat/slash-commands.js +22 -2
  54. package/dist/chat/slash-commands.js.map +1 -1
  55. package/dist/chat/turn-classifier.d.ts +3 -0
  56. package/dist/chat/turn-classifier.d.ts.map +1 -1
  57. package/dist/chat/turn-classifier.js +7 -0
  58. package/dist/chat/turn-classifier.js.map +1 -1
  59. package/dist/cli/commands/calendar.d.ts +75 -0
  60. package/dist/cli/commands/calendar.d.ts.map +1 -0
  61. package/dist/cli/commands/calendar.js +203 -0
  62. package/dist/cli/commands/calendar.js.map +1 -0
  63. package/dist/cli/commands/do.d.ts +52 -0
  64. package/dist/cli/commands/do.d.ts.map +1 -0
  65. package/dist/cli/commands/do.js +216 -0
  66. package/dist/cli/commands/do.js.map +1 -0
  67. package/dist/cli/commands/hub.d.ts +29 -0
  68. package/dist/cli/commands/hub.d.ts.map +1 -0
  69. package/dist/cli/commands/hub.js +233 -0
  70. package/dist/cli/commands/hub.js.map +1 -0
  71. package/dist/cli/commands/medical.d.ts +25 -0
  72. package/dist/cli/commands/medical.d.ts.map +1 -1
  73. package/dist/cli/commands/medical.js +233 -0
  74. package/dist/cli/commands/medical.js.map +1 -1
  75. package/dist/cli/commands/research.d.ts +41 -0
  76. package/dist/cli/commands/research.d.ts.map +1 -0
  77. package/dist/cli/commands/research.js +313 -0
  78. package/dist/cli/commands/research.js.map +1 -0
  79. package/dist/cli/commands/security-audit.d.ts +89 -0
  80. package/dist/cli/commands/security-audit.d.ts.map +1 -0
  81. package/dist/cli/commands/security-audit.js +238 -0
  82. package/dist/cli/commands/security-audit.js.map +1 -0
  83. package/dist/cli/commands/task.d.ts +64 -0
  84. package/dist/cli/commands/task.d.ts.map +1 -0
  85. package/dist/cli/commands/task.js +422 -0
  86. package/dist/cli/commands/task.js.map +1 -0
  87. package/dist/cli/commands/telegram.d.ts +10 -0
  88. package/dist/cli/commands/telegram.d.ts.map +1 -0
  89. package/dist/cli/commands/telegram.js +44 -0
  90. package/dist/cli/commands/telegram.js.map +1 -0
  91. package/dist/cli/commands/vault.d.ts +40 -0
  92. package/dist/cli/commands/vault.d.ts.map +1 -0
  93. package/dist/cli/commands/vault.js +122 -0
  94. package/dist/cli/commands/vault.js.map +1 -0
  95. package/dist/cli/index.js +33 -0
  96. package/dist/cli/index.js.map +1 -1
  97. package/dist/config/role-providers.d.ts +15 -0
  98. package/dist/config/role-providers.d.ts.map +1 -1
  99. package/dist/config/role-providers.js +8 -1
  100. package/dist/config/role-providers.js.map +1 -1
  101. package/dist/config/schema.d.ts +3522 -171
  102. package/dist/config/schema.d.ts.map +1 -1
  103. package/dist/config/schema.js +405 -2
  104. package/dist/config/schema.js.map +1 -1
  105. package/dist/do-bridge/coding-promoter.d.ts +19 -0
  106. package/dist/do-bridge/coding-promoter.d.ts.map +1 -0
  107. package/dist/do-bridge/coding-promoter.js +43 -0
  108. package/dist/do-bridge/coding-promoter.js.map +1 -0
  109. package/dist/do-bridge/finding-port.d.ts +88 -0
  110. package/dist/do-bridge/finding-port.d.ts.map +1 -0
  111. package/dist/do-bridge/finding-port.js +95 -0
  112. package/dist/do-bridge/finding-port.js.map +1 -0
  113. package/dist/do-bridge/launcher.d.ts +55 -0
  114. package/dist/do-bridge/launcher.d.ts.map +1 -0
  115. package/dist/do-bridge/launcher.js +37 -0
  116. package/dist/do-bridge/launcher.js.map +1 -0
  117. package/dist/do-bridge/promote.d.ts +50 -0
  118. package/dist/do-bridge/promote.d.ts.map +1 -0
  119. package/dist/do-bridge/promote.js +116 -0
  120. package/dist/do-bridge/promote.js.map +1 -0
  121. package/dist/do-bridge/reconcile.d.ts +50 -0
  122. package/dist/do-bridge/reconcile.d.ts.map +1 -0
  123. package/dist/do-bridge/reconcile.js +70 -0
  124. package/dist/do-bridge/reconcile.js.map +1 -0
  125. package/dist/do-bridge/registry.d.ts +23 -0
  126. package/dist/do-bridge/registry.d.ts.map +1 -0
  127. package/dist/do-bridge/registry.js +42 -0
  128. package/dist/do-bridge/registry.js.map +1 -0
  129. package/dist/do-bridge/types.d.ts +50 -0
  130. package/dist/do-bridge/types.d.ts.map +1 -0
  131. package/dist/do-bridge/types.js +17 -0
  132. package/dist/do-bridge/types.js.map +1 -0
  133. package/dist/fleet/child-config.d.ts.map +1 -1
  134. package/dist/fleet/child-config.js +7 -0
  135. package/dist/fleet/child-config.js.map +1 -1
  136. package/dist/fleet/coordinator.d.ts +27 -1
  137. package/dist/fleet/coordinator.d.ts.map +1 -1
  138. package/dist/fleet/coordinator.js +70 -0
  139. package/dist/fleet/coordinator.js.map +1 -1
  140. package/dist/fleet/critic-deep.d.ts +9 -1
  141. package/dist/fleet/critic-deep.d.ts.map +1 -1
  142. package/dist/fleet/critic-deep.js +5 -2
  143. package/dist/fleet/critic-deep.js.map +1 -1
  144. package/dist/fleet/decomposer-deep.d.ts +4 -11
  145. package/dist/fleet/decomposer-deep.d.ts.map +1 -1
  146. package/dist/fleet/decomposer-deep.js +5 -5
  147. package/dist/fleet/decomposer-deep.js.map +1 -1
  148. package/dist/fleet/index.d.ts +9 -0
  149. package/dist/fleet/index.d.ts.map +1 -1
  150. package/dist/fleet/index.js +87 -8
  151. package/dist/fleet/index.js.map +1 -1
  152. package/dist/fleet/manifest.d.ts +26 -0
  153. package/dist/fleet/manifest.d.ts.map +1 -1
  154. package/dist/fleet/manifest.js +8 -0
  155. package/dist/fleet/manifest.js.map +1 -1
  156. package/dist/fleet/reporter.d.ts +4 -1
  157. package/dist/fleet/reporter.d.ts.map +1 -1
  158. package/dist/fleet/reporter.js +2 -1
  159. package/dist/fleet/reporter.js.map +1 -1
  160. package/dist/fleet/scaffolder.d.ts +5 -1
  161. package/dist/fleet/scaffolder.d.ts.map +1 -1
  162. package/dist/fleet/scaffolder.js +11 -2
  163. package/dist/fleet/scaffolder.js.map +1 -1
  164. package/dist/graph/client.d.ts.map +1 -1
  165. package/dist/graph/client.js +115 -23
  166. package/dist/graph/client.js.map +1 -1
  167. package/dist/graph/mcp-client.d.ts +1 -0
  168. package/dist/graph/mcp-client.d.ts.map +1 -1
  169. package/dist/graph/mcp-client.js +58 -7
  170. package/dist/graph/mcp-client.js.map +1 -1
  171. package/dist/hub/collector.d.ts +12 -0
  172. package/dist/hub/collector.d.ts.map +1 -0
  173. package/dist/hub/collector.js +36 -0
  174. package/dist/hub/collector.js.map +1 -0
  175. package/dist/hub/finding-source.d.ts +22 -0
  176. package/dist/hub/finding-source.d.ts.map +1 -0
  177. package/dist/hub/finding-source.js +41 -0
  178. package/dist/hub/finding-source.js.map +1 -0
  179. package/dist/hub/finding-store.d.ts +68 -0
  180. package/dist/hub/finding-store.d.ts.map +1 -0
  181. package/dist/hub/finding-store.js +122 -0
  182. package/dist/hub/finding-store.js.map +1 -0
  183. package/dist/hub/finding.d.ts +54 -0
  184. package/dist/hub/finding.d.ts.map +1 -0
  185. package/dist/hub/finding.js +24 -0
  186. package/dist/hub/finding.js.map +1 -0
  187. package/dist/hub/gmail-to-task.d.ts +69 -0
  188. package/dist/hub/gmail-to-task.d.ts.map +1 -0
  189. package/dist/hub/gmail-to-task.js +102 -0
  190. package/dist/hub/gmail-to-task.js.map +1 -0
  191. package/dist/hub/hub-config.d.ts +18 -0
  192. package/dist/hub/hub-config.d.ts.map +1 -0
  193. package/dist/hub/hub-config.js +40 -0
  194. package/dist/hub/hub-config.js.map +1 -0
  195. package/dist/hub/judge.d.ts +30 -0
  196. package/dist/hub/judge.d.ts.map +1 -0
  197. package/dist/hub/judge.js +177 -0
  198. package/dist/hub/judge.js.map +1 -0
  199. package/dist/hub/lenses.d.ts +60 -0
  200. package/dist/hub/lenses.d.ts.map +1 -0
  201. package/dist/hub/lenses.js +123 -0
  202. package/dist/hub/lenses.js.map +1 -0
  203. package/dist/hub/priority-md.d.ts +21 -0
  204. package/dist/hub/priority-md.d.ts.map +1 -0
  205. package/dist/hub/priority-md.js +64 -0
  206. package/dist/hub/priority-md.js.map +1 -0
  207. package/dist/hub/repo-resolver.d.ts +11 -0
  208. package/dist/hub/repo-resolver.d.ts.map +1 -0
  209. package/dist/hub/repo-resolver.js +39 -0
  210. package/dist/hub/repo-resolver.js.map +1 -0
  211. package/dist/hub/scope.d.ts +39 -0
  212. package/dist/hub/scope.d.ts.map +1 -0
  213. package/dist/hub/scope.js +62 -0
  214. package/dist/hub/scope.js.map +1 -0
  215. package/dist/hub/task-inbox.d.ts +16 -0
  216. package/dist/hub/task-inbox.d.ts.map +1 -0
  217. package/dist/hub/task-inbox.js +39 -0
  218. package/dist/hub/task-inbox.js.map +1 -0
  219. package/dist/incident/resolution-verify.d.ts +2 -2
  220. package/dist/index.d.ts +2 -1
  221. package/dist/index.d.ts.map +1 -1
  222. package/dist/index.js +2 -1
  223. package/dist/index.js.map +1 -1
  224. package/dist/medical/adapters/apple-health.js +1 -1
  225. package/dist/medical/adapters/apple-health.js.map +1 -1
  226. package/dist/medical/analysis/cadence.d.ts +32 -0
  227. package/dist/medical/analysis/cadence.d.ts.map +1 -0
  228. package/dist/medical/analysis/cadence.js +72 -0
  229. package/dist/medical/analysis/cadence.js.map +1 -0
  230. package/dist/medical/analysis/cross-marker.d.ts +33 -0
  231. package/dist/medical/analysis/cross-marker.d.ts.map +1 -0
  232. package/dist/medical/analysis/cross-marker.js +79 -0
  233. package/dist/medical/analysis/cross-marker.js.map +1 -0
  234. package/dist/medical/analysis/finding-writer.d.ts +26 -0
  235. package/dist/medical/analysis/finding-writer.d.ts.map +1 -0
  236. package/dist/medical/analysis/finding-writer.js +60 -0
  237. package/dist/medical/analysis/finding-writer.js.map +1 -0
  238. package/dist/medical/analysis/finding.d.ts +63 -0
  239. package/dist/medical/analysis/finding.d.ts.map +1 -0
  240. package/dist/medical/analysis/finding.js +70 -0
  241. package/dist/medical/analysis/finding.js.map +1 -0
  242. package/dist/medical/analysis/review-pass.d.ts +76 -0
  243. package/dist/medical/analysis/review-pass.d.ts.map +1 -0
  244. package/dist/medical/analysis/review-pass.js +119 -0
  245. package/dist/medical/analysis/review-pass.js.map +1 -0
  246. package/dist/medical/analysis/trends.d.ts +36 -0
  247. package/dist/medical/analysis/trends.d.ts.map +1 -0
  248. package/dist/medical/analysis/trends.js +157 -0
  249. package/dist/medical/analysis/trends.js.map +1 -0
  250. package/dist/medical/health-store.d.ts +5 -0
  251. package/dist/medical/health-store.d.ts.map +1 -1
  252. package/dist/medical/health-store.js +10 -0
  253. package/dist/medical/health-store.js.map +1 -1
  254. package/dist/medical/lab-note.d.ts +72 -0
  255. package/dist/medical/lab-note.d.ts.map +1 -0
  256. package/dist/medical/lab-note.js +161 -0
  257. package/dist/medical/lab-note.js.map +1 -0
  258. package/dist/medical/lab-pdf-parser.d.ts +19 -0
  259. package/dist/medical/lab-pdf-parser.d.ts.map +1 -0
  260. package/dist/medical/lab-pdf-parser.js +57 -0
  261. package/dist/medical/lab-pdf-parser.js.map +1 -0
  262. package/dist/medical/lab-reindex.d.ts +24 -0
  263. package/dist/medical/lab-reindex.d.ts.map +1 -0
  264. package/dist/medical/lab-reindex.js +45 -0
  265. package/dist/medical/lab-reindex.js.map +1 -0
  266. package/dist/medical/lab-types.d.ts +75 -0
  267. package/dist/medical/lab-types.d.ts.map +1 -0
  268. package/dist/medical/lab-types.js +17 -0
  269. package/dist/medical/lab-types.js.map +1 -0
  270. package/dist/medical/profile.d.ts +96 -0
  271. package/dist/medical/profile.d.ts.map +1 -0
  272. package/dist/medical/profile.js +273 -0
  273. package/dist/medical/profile.js.map +1 -0
  274. package/dist/medical/recommend/context.d.ts +48 -0
  275. package/dist/medical/recommend/context.d.ts.map +1 -0
  276. package/dist/medical/recommend/context.js +109 -0
  277. package/dist/medical/recommend/context.js.map +1 -0
  278. package/dist/medical/recommend/judge-panel.d.ts +49 -0
  279. package/dist/medical/recommend/judge-panel.d.ts.map +1 -0
  280. package/dist/medical/recommend/judge-panel.js +164 -0
  281. package/dist/medical/recommend/judge-panel.js.map +1 -0
  282. package/dist/medical/recommend/lenses.d.ts +72 -0
  283. package/dist/medical/recommend/lenses.d.ts.map +1 -0
  284. package/dist/medical/recommend/lenses.js +220 -0
  285. package/dist/medical/recommend/lenses.js.map +1 -0
  286. package/dist/medical/recommend/recommend.d.ts +86 -0
  287. package/dist/medical/recommend/recommend.d.ts.map +1 -0
  288. package/dist/medical/recommend/recommend.js +211 -0
  289. package/dist/medical/recommend/recommend.js.map +1 -0
  290. package/dist/medical/recommend/types.d.ts +98 -0
  291. package/dist/medical/recommend/types.d.ts.map +1 -0
  292. package/dist/medical/recommend/types.js +20 -0
  293. package/dist/medical/recommend/types.js.map +1 -0
  294. package/dist/medical/recommend/urgency.d.ts +26 -0
  295. package/dist/medical/recommend/urgency.d.ts.map +1 -0
  296. package/dist/medical/recommend/urgency.js +124 -0
  297. package/dist/medical/recommend/urgency.js.map +1 -0
  298. package/dist/medical/research/online-research.d.ts +65 -0
  299. package/dist/medical/research/online-research.d.ts.map +1 -0
  300. package/dist/medical/research/online-research.js +101 -0
  301. package/dist/medical/research/online-research.js.map +1 -0
  302. package/dist/medical/research/research-note.d.ts +32 -0
  303. package/dist/medical/research/research-note.d.ts.map +1 -0
  304. package/dist/medical/research/research-note.js +55 -0
  305. package/dist/medical/research/research-note.js.map +1 -0
  306. package/dist/medical/supplements.d.ts +82 -0
  307. package/dist/medical/supplements.d.ts.map +1 -0
  308. package/dist/medical/supplements.js +173 -0
  309. package/dist/medical/supplements.js.map +1 -0
  310. package/dist/orchestrator/agentic-loop.d.ts +160 -1
  311. package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
  312. package/dist/orchestrator/agentic-loop.js +350 -41
  313. package/dist/orchestrator/agentic-loop.js.map +1 -1
  314. package/dist/orchestrator/compaction.d.ts +47 -0
  315. package/dist/orchestrator/compaction.d.ts.map +1 -0
  316. package/dist/orchestrator/compaction.js +75 -0
  317. package/dist/orchestrator/compaction.js.map +1 -0
  318. package/dist/orchestrator/generator-agent.d.ts +19 -0
  319. package/dist/orchestrator/generator-agent.d.ts.map +1 -1
  320. package/dist/orchestrator/generator-agent.js +27 -1
  321. package/dist/orchestrator/generator-agent.js.map +1 -1
  322. package/dist/orchestrator/loop-events.d.ts +98 -0
  323. package/dist/orchestrator/loop-events.d.ts.map +1 -0
  324. package/dist/orchestrator/loop-events.js +2 -0
  325. package/dist/orchestrator/loop-events.js.map +1 -0
  326. package/dist/orchestrator/model-resolver.d.ts.map +1 -1
  327. package/dist/orchestrator/model-resolver.js +10 -6
  328. package/dist/orchestrator/model-resolver.js.map +1 -1
  329. package/dist/orchestrator/pipeline.d.ts +10 -1
  330. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  331. package/dist/orchestrator/pipeline.js +102 -4
  332. package/dist/orchestrator/pipeline.js.map +1 -1
  333. package/dist/orchestrator/security-audit-types.d.ts +53 -0
  334. package/dist/orchestrator/security-audit-types.d.ts.map +1 -0
  335. package/dist/orchestrator/security-audit-types.js +10 -0
  336. package/dist/orchestrator/security-audit-types.js.map +1 -0
  337. package/dist/orchestrator/security-auditor-agent.d.ts +68 -0
  338. package/dist/orchestrator/security-auditor-agent.d.ts.map +1 -0
  339. package/dist/orchestrator/security-auditor-agent.js +482 -0
  340. package/dist/orchestrator/security-auditor-agent.js.map +1 -0
  341. package/dist/orchestrator/security-gate.d.ts +73 -0
  342. package/dist/orchestrator/security-gate.d.ts.map +1 -0
  343. package/dist/orchestrator/security-gate.js +174 -0
  344. package/dist/orchestrator/security-gate.js.map +1 -0
  345. package/dist/orchestrator/security-hub.d.ts +45 -0
  346. package/dist/orchestrator/security-hub.d.ts.map +1 -0
  347. package/dist/orchestrator/security-hub.js +147 -0
  348. package/dist/orchestrator/security-hub.js.map +1 -0
  349. package/dist/orchestrator/security-knowledge/benchmark/harness.d.ts +43 -0
  350. package/dist/orchestrator/security-knowledge/benchmark/harness.d.ts.map +1 -0
  351. package/dist/orchestrator/security-knowledge/benchmark/harness.js +13 -0
  352. package/dist/orchestrator/security-knowledge/benchmark/harness.js.map +1 -0
  353. package/dist/orchestrator/security-knowledge/diff-provider.d.ts +79 -0
  354. package/dist/orchestrator/security-knowledge/diff-provider.d.ts.map +1 -0
  355. package/dist/orchestrator/security-knowledge/diff-provider.js +320 -0
  356. package/dist/orchestrator/security-knowledge/diff-provider.js.map +1 -0
  357. package/dist/orchestrator/security-knowledge/index.d.ts +22 -0
  358. package/dist/orchestrator/security-knowledge/index.d.ts.map +1 -0
  359. package/dist/orchestrator/security-knowledge/index.js +66 -0
  360. package/dist/orchestrator/security-knowledge/index.js.map +1 -0
  361. package/dist/orchestrator/security-knowledge/parser.d.ts +9 -0
  362. package/dist/orchestrator/security-knowledge/parser.d.ts.map +1 -0
  363. package/dist/orchestrator/security-knowledge/parser.js +137 -0
  364. package/dist/orchestrator/security-knowledge/parser.js.map +1 -0
  365. package/dist/orchestrator/security-knowledge/registry.d.ts +25 -0
  366. package/dist/orchestrator/security-knowledge/registry.d.ts.map +1 -0
  367. package/dist/orchestrator/security-knowledge/registry.js +114 -0
  368. package/dist/orchestrator/security-knowledge/registry.js.map +1 -0
  369. package/dist/orchestrator/security-knowledge/resolver.d.ts +48 -0
  370. package/dist/orchestrator/security-knowledge/resolver.d.ts.map +1 -0
  371. package/dist/orchestrator/security-knowledge/resolver.js +63 -0
  372. package/dist/orchestrator/security-knowledge/resolver.js.map +1 -0
  373. package/dist/orchestrator/security-knowledge/selector.d.ts +18 -0
  374. package/dist/orchestrator/security-knowledge/selector.d.ts.map +1 -0
  375. package/dist/orchestrator/security-knowledge/selector.js +46 -0
  376. package/dist/orchestrator/security-knowledge/selector.js.map +1 -0
  377. package/dist/orchestrator/security-knowledge/signature.d.ts +37 -0
  378. package/dist/orchestrator/security-knowledge/signature.d.ts.map +1 -0
  379. package/dist/orchestrator/security-knowledge/signature.js +2 -0
  380. package/dist/orchestrator/security-knowledge/signature.js.map +1 -0
  381. package/dist/orchestrator/security-knowledge/supply-chain-inspector.d.ts +29 -0
  382. package/dist/orchestrator/security-knowledge/supply-chain-inspector.d.ts.map +1 -0
  383. package/dist/orchestrator/security-knowledge/supply-chain-inspector.js +211 -0
  384. package/dist/orchestrator/security-knowledge/supply-chain-inspector.js.map +1 -0
  385. package/dist/orchestrator/security-scanners.d.ts +126 -0
  386. package/dist/orchestrator/security-scanners.d.ts.map +1 -0
  387. package/dist/orchestrator/security-scanners.js +501 -0
  388. package/dist/orchestrator/security-scanners.js.map +1 -0
  389. package/dist/orchestrator/security-verifier-agent.d.ts +62 -0
  390. package/dist/orchestrator/security-verifier-agent.d.ts.map +1 -0
  391. package/dist/orchestrator/security-verifier-agent.js +230 -0
  392. package/dist/orchestrator/security-verifier-agent.js.map +1 -0
  393. package/dist/orchestrator/session-store.d.ts +95 -0
  394. package/dist/orchestrator/session-store.d.ts.map +1 -0
  395. package/dist/orchestrator/session-store.js +186 -0
  396. package/dist/orchestrator/session-store.js.map +1 -0
  397. package/dist/orchestrator/stack-knowledge.d.ts +17 -0
  398. package/dist/orchestrator/stack-knowledge.d.ts.map +1 -0
  399. package/dist/orchestrator/stack-knowledge.js +35 -0
  400. package/dist/orchestrator/stack-knowledge.js.map +1 -0
  401. package/dist/orchestrator/subagents.d.ts +62 -0
  402. package/dist/orchestrator/subagents.d.ts.map +1 -0
  403. package/dist/orchestrator/subagents.js +143 -0
  404. package/dist/orchestrator/subagents.js.map +1 -0
  405. package/dist/orchestrator/tools/executor.d.ts +68 -0
  406. package/dist/orchestrator/tools/executor.d.ts.map +1 -0
  407. package/dist/orchestrator/tools/executor.js +104 -0
  408. package/dist/orchestrator/tools/executor.js.map +1 -0
  409. package/dist/orchestrator/tools/mcp-bridge.d.ts +76 -0
  410. package/dist/orchestrator/tools/mcp-bridge.d.ts.map +1 -0
  411. package/dist/orchestrator/tools/mcp-bridge.js +154 -0
  412. package/dist/orchestrator/tools/mcp-bridge.js.map +1 -0
  413. package/dist/orchestrator/tools/schemas.d.ts.map +1 -1
  414. package/dist/orchestrator/tools/schemas.js +3 -0
  415. package/dist/orchestrator/tools/schemas.js.map +1 -1
  416. package/dist/orchestrator/workflow/budget.d.ts +24 -2
  417. package/dist/orchestrator/workflow/budget.d.ts.map +1 -1
  418. package/dist/orchestrator/workflow/budget.js +39 -1
  419. package/dist/orchestrator/workflow/budget.js.map +1 -1
  420. package/dist/orchestrator/workflow/engine.d.ts +1 -1
  421. package/dist/orchestrator/workflow/engine.d.ts.map +1 -1
  422. package/dist/orchestrator/workflow/selector.d.ts.map +1 -1
  423. package/dist/orchestrator/workflow/selector.js +10 -0
  424. package/dist/orchestrator/workflow/selector.js.map +1 -1
  425. package/dist/providers/anthropic.d.ts.map +1 -1
  426. package/dist/providers/anthropic.js +116 -26
  427. package/dist/providers/anthropic.js.map +1 -1
  428. package/dist/providers/claude-code.d.ts.map +1 -1
  429. package/dist/providers/claude-code.js +17 -0
  430. package/dist/providers/claude-code.js.map +1 -1
  431. package/dist/providers/cost-meter.d.ts +52 -0
  432. package/dist/providers/cost-meter.d.ts.map +1 -0
  433. package/dist/providers/cost-meter.js +81 -0
  434. package/dist/providers/cost-meter.js.map +1 -0
  435. package/dist/providers/factory.d.ts +6 -1
  436. package/dist/providers/factory.d.ts.map +1 -1
  437. package/dist/providers/factory.js +24 -5
  438. package/dist/providers/factory.js.map +1 -1
  439. package/dist/providers/google.d.ts.map +1 -1
  440. package/dist/providers/google.js +29 -0
  441. package/dist/providers/google.js.map +1 -1
  442. package/dist/providers/grounded-search.d.ts +128 -0
  443. package/dist/providers/grounded-search.d.ts.map +1 -0
  444. package/dist/providers/grounded-search.js +160 -0
  445. package/dist/providers/grounded-search.js.map +1 -0
  446. package/dist/providers/openai-compat.d.ts +15 -1
  447. package/dist/providers/openai-compat.d.ts.map +1 -1
  448. package/dist/providers/openai-compat.js +24 -0
  449. package/dist/providers/openai-compat.js.map +1 -1
  450. package/dist/providers/openai.d.ts +7 -0
  451. package/dist/providers/openai.d.ts.map +1 -1
  452. package/dist/providers/openai.js +95 -4
  453. package/dist/providers/openai.js.map +1 -1
  454. package/dist/providers/types.d.ts +88 -0
  455. package/dist/providers/types.d.ts.map +1 -1
  456. package/dist/research/cadence.d.ts +33 -0
  457. package/dist/research/cadence.d.ts.map +1 -0
  458. package/dist/research/cadence.js +55 -0
  459. package/dist/research/cadence.js.map +1 -0
  460. package/dist/research/digest.d.ts +80 -0
  461. package/dist/research/digest.d.ts.map +1 -0
  462. package/dist/research/digest.js +119 -0
  463. package/dist/research/digest.js.map +1 -0
  464. package/dist/research/egress.d.ts +28 -0
  465. package/dist/research/egress.d.ts.map +1 -0
  466. package/dist/research/egress.js +41 -0
  467. package/dist/research/egress.js.map +1 -0
  468. package/dist/research/job-store.d.ts +30 -0
  469. package/dist/research/job-store.d.ts.map +1 -0
  470. package/dist/research/job-store.js +100 -0
  471. package/dist/research/job-store.js.map +1 -0
  472. package/dist/research/model-diversity.d.ts +27 -0
  473. package/dist/research/model-diversity.d.ts.map +1 -0
  474. package/dist/research/model-diversity.js +52 -0
  475. package/dist/research/model-diversity.js.map +1 -0
  476. package/dist/research/note-writer.d.ts +36 -0
  477. package/dist/research/note-writer.d.ts.map +1 -0
  478. package/dist/research/note-writer.js +53 -0
  479. package/dist/research/note-writer.js.map +1 -0
  480. package/dist/research/online-retrieval.d.ts +27 -0
  481. package/dist/research/online-retrieval.d.ts.map +1 -0
  482. package/dist/research/online-retrieval.js +22 -0
  483. package/dist/research/online-retrieval.js.map +1 -0
  484. package/dist/research/runner.d.ts +80 -0
  485. package/dist/research/runner.d.ts.map +1 -0
  486. package/dist/research/runner.js +115 -0
  487. package/dist/research/runner.js.map +1 -0
  488. package/dist/research/scheduler.d.ts +61 -0
  489. package/dist/research/scheduler.d.ts.map +1 -0
  490. package/dist/research/scheduler.js +58 -0
  491. package/dist/research/scheduler.js.map +1 -0
  492. package/dist/research/types.d.ts +81 -0
  493. package/dist/research/types.d.ts.map +1 -0
  494. package/dist/research/types.js +57 -0
  495. package/dist/research/types.js.map +1 -0
  496. package/dist/seo/adapters/http.d.ts +43 -0
  497. package/dist/seo/adapters/http.d.ts.map +1 -0
  498. package/dist/seo/adapters/http.js +35 -0
  499. package/dist/seo/adapters/http.js.map +1 -0
  500. package/dist/seo/ai-visibility-provider.d.ts +171 -0
  501. package/dist/seo/ai-visibility-provider.d.ts.map +1 -0
  502. package/dist/seo/ai-visibility-provider.js +165 -0
  503. package/dist/seo/ai-visibility-provider.js.map +1 -0
  504. package/dist/seo/ai-visibility-scorer.d.ts +43 -0
  505. package/dist/seo/ai-visibility-scorer.d.ts.map +1 -0
  506. package/dist/seo/ai-visibility-scorer.js +102 -0
  507. package/dist/seo/ai-visibility-scorer.js.map +1 -0
  508. package/dist/seo/analyzer.d.ts +58 -0
  509. package/dist/seo/analyzer.d.ts.map +1 -0
  510. package/dist/seo/analyzer.js +265 -0
  511. package/dist/seo/analyzer.js.map +1 -0
  512. package/dist/seo/benchmark/harness.d.ts +56 -0
  513. package/dist/seo/benchmark/harness.d.ts.map +1 -0
  514. package/dist/seo/benchmark/harness.js +172 -0
  515. package/dist/seo/benchmark/harness.js.map +1 -0
  516. package/dist/seo/builder/approved-finding.d.ts +115 -0
  517. package/dist/seo/builder/approved-finding.d.ts.map +1 -0
  518. package/dist/seo/builder/approved-finding.js +145 -0
  519. package/dist/seo/builder/approved-finding.js.map +1 -0
  520. package/dist/seo/builder/build-runner.d.ts +41 -0
  521. package/dist/seo/builder/build-runner.d.ts.map +1 -0
  522. package/dist/seo/builder/build-runner.js +156 -0
  523. package/dist/seo/builder/build-runner.js.map +1 -0
  524. package/dist/seo/builder/draft-generators.d.ts +32 -0
  525. package/dist/seo/builder/draft-generators.d.ts.map +1 -0
  526. package/dist/seo/builder/draft-generators.js +31 -0
  527. package/dist/seo/builder/draft-generators.js.map +1 -0
  528. package/dist/seo/builder/draft-store.d.ts +30 -0
  529. package/dist/seo/builder/draft-store.d.ts.map +1 -0
  530. package/dist/seo/builder/draft-store.js +76 -0
  531. package/dist/seo/builder/draft-store.js.map +1 -0
  532. package/dist/seo/builder/draft-types.d.ts +36 -0
  533. package/dist/seo/builder/draft-types.d.ts.map +1 -0
  534. package/dist/seo/builder/draft-types.js +14 -0
  535. package/dist/seo/builder/draft-types.js.map +1 -0
  536. package/dist/seo/builder/hub-approved-source.d.ts +11 -0
  537. package/dist/seo/builder/hub-approved-source.d.ts.map +1 -0
  538. package/dist/seo/builder/hub-approved-source.js +48 -0
  539. package/dist/seo/builder/hub-approved-source.js.map +1 -0
  540. package/dist/seo/builder/seo-builder.d.ts +72 -0
  541. package/dist/seo/builder/seo-builder.d.ts.map +1 -0
  542. package/dist/seo/builder/seo-builder.js +72 -0
  543. package/dist/seo/builder/seo-builder.js.map +1 -0
  544. package/dist/seo/citation-gate.d.ts +36 -0
  545. package/dist/seo/citation-gate.d.ts.map +1 -0
  546. package/dist/seo/citation-gate.js +59 -0
  547. package/dist/seo/citation-gate.js.map +1 -0
  548. package/dist/seo/command.d.ts +11 -0
  549. package/dist/seo/command.d.ts.map +1 -0
  550. package/dist/seo/command.js +90 -0
  551. package/dist/seo/command.js.map +1 -0
  552. package/dist/seo/content-sanitizer.d.ts +56 -0
  553. package/dist/seo/content-sanitizer.d.ts.map +1 -0
  554. package/dist/seo/content-sanitizer.js +55 -0
  555. package/dist/seo/content-sanitizer.js.map +1 -0
  556. package/dist/seo/crawl-engine.d.ts +35 -0
  557. package/dist/seo/crawl-engine.d.ts.map +1 -0
  558. package/dist/seo/crawl-engine.js +2 -0
  559. package/dist/seo/crawl-engine.js.map +1 -0
  560. package/dist/seo/data-source.d.ts +156 -0
  561. package/dist/seo/data-source.d.ts.map +1 -0
  562. package/dist/seo/data-source.js +2 -0
  563. package/dist/seo/data-source.js.map +1 -0
  564. package/dist/seo/egress.d.ts +39 -0
  565. package/dist/seo/egress.d.ts.map +1 -0
  566. package/dist/seo/egress.js +64 -0
  567. package/dist/seo/egress.js.map +1 -0
  568. package/dist/seo/hub-emitter.d.ts +28 -0
  569. package/dist/seo/hub-emitter.d.ts.map +1 -0
  570. package/dist/seo/hub-emitter.js +95 -0
  571. package/dist/seo/hub-emitter.js.map +1 -0
  572. package/dist/seo/index.d.ts +42 -0
  573. package/dist/seo/index.d.ts.map +1 -0
  574. package/dist/seo/index.js +19 -0
  575. package/dist/seo/index.js.map +1 -0
  576. package/dist/seo/never-encode-filter.d.ts +45 -0
  577. package/dist/seo/never-encode-filter.d.ts.map +1 -0
  578. package/dist/seo/never-encode-filter.js +51 -0
  579. package/dist/seo/never-encode-filter.js.map +1 -0
  580. package/dist/seo/parser.d.ts +46 -0
  581. package/dist/seo/parser.d.ts.map +1 -0
  582. package/dist/seo/parser.js +113 -0
  583. package/dist/seo/parser.js.map +1 -0
  584. package/dist/seo/playbook-index.d.ts +19 -0
  585. package/dist/seo/playbook-index.d.ts.map +1 -0
  586. package/dist/seo/playbook-index.js +74 -0
  587. package/dist/seo/playbook-index.js.map +1 -0
  588. package/dist/seo/quota-governor.d.ts +100 -0
  589. package/dist/seo/quota-governor.d.ts.map +1 -0
  590. package/dist/seo/quota-governor.js +199 -0
  591. package/dist/seo/quota-governor.js.map +1 -0
  592. package/dist/seo/quota-ledger.d.ts +50 -0
  593. package/dist/seo/quota-ledger.d.ts.map +1 -0
  594. package/dist/seo/quota-ledger.js +95 -0
  595. package/dist/seo/quota-ledger.js.map +1 -0
  596. package/dist/seo/report-store.d.ts +30 -0
  597. package/dist/seo/report-store.d.ts.map +1 -0
  598. package/dist/seo/report-store.js +94 -0
  599. package/dist/seo/report-store.js.map +1 -0
  600. package/dist/seo/retriever.d.ts +34 -0
  601. package/dist/seo/retriever.d.ts.map +1 -0
  602. package/dist/seo/retriever.js +95 -0
  603. package/dist/seo/retriever.js.map +1 -0
  604. package/dist/seo/runner.d.ts +108 -0
  605. package/dist/seo/runner.d.ts.map +1 -0
  606. package/dist/seo/runner.js +512 -0
  607. package/dist/seo/runner.js.map +1 -0
  608. package/dist/seo/scrape-throttle.d.ts +84 -0
  609. package/dist/seo/scrape-throttle.d.ts.map +1 -0
  610. package/dist/seo/scrape-throttle.js +149 -0
  611. package/dist/seo/scrape-throttle.js.map +1 -0
  612. package/dist/seo/serp-provider.d.ts +52 -0
  613. package/dist/seo/serp-provider.d.ts.map +1 -0
  614. package/dist/seo/serp-provider.js +17 -0
  615. package/dist/seo/serp-provider.js.map +1 -0
  616. package/dist/seo/sources/ai-visibility-adapter.d.ts +87 -0
  617. package/dist/seo/sources/ai-visibility-adapter.d.ts.map +1 -0
  618. package/dist/seo/sources/ai-visibility-adapter.js +85 -0
  619. package/dist/seo/sources/ai-visibility-adapter.js.map +1 -0
  620. package/dist/seo/sources/api-spine-provider.d.ts +66 -0
  621. package/dist/seo/sources/api-spine-provider.d.ts.map +1 -0
  622. package/dist/seo/sources/api-spine-provider.js +68 -0
  623. package/dist/seo/sources/api-spine-provider.js.map +1 -0
  624. package/dist/seo/sources/citation-verifier.d.ts +95 -0
  625. package/dist/seo/sources/citation-verifier.d.ts.map +1 -0
  626. package/dist/seo/sources/citation-verifier.js +106 -0
  627. package/dist/seo/sources/citation-verifier.js.map +1 -0
  628. package/dist/seo/sources/crawl-source.d.ts +62 -0
  629. package/dist/seo/sources/crawl-source.d.ts.map +1 -0
  630. package/dist/seo/sources/crawl-source.js +87 -0
  631. package/dist/seo/sources/crawl-source.js.map +1 -0
  632. package/dist/seo/sources/damcrawler-crawl-engine.d.ts +151 -0
  633. package/dist/seo/sources/damcrawler-crawl-engine.d.ts.map +1 -0
  634. package/dist/seo/sources/damcrawler-crawl-engine.js +154 -0
  635. package/dist/seo/sources/damcrawler-crawl-engine.js.map +1 -0
  636. package/dist/seo/sources/damcrawler-serp-provider.d.ts +75 -0
  637. package/dist/seo/sources/damcrawler-serp-provider.d.ts.map +1 -0
  638. package/dist/seo/sources/damcrawler-serp-provider.js +60 -0
  639. package/dist/seo/sources/damcrawler-serp-provider.js.map +1 -0
  640. package/dist/seo/sources/dataforseo-adapter.d.ts +46 -0
  641. package/dist/seo/sources/dataforseo-adapter.d.ts.map +1 -0
  642. package/dist/seo/sources/dataforseo-adapter.js +335 -0
  643. package/dist/seo/sources/dataforseo-adapter.js.map +1 -0
  644. package/dist/seo/sources/dataforseo-serp-provider.d.ts +30 -0
  645. package/dist/seo/sources/dataforseo-serp-provider.d.ts.map +1 -0
  646. package/dist/seo/sources/dataforseo-serp-provider.js +20 -0
  647. package/dist/seo/sources/dataforseo-serp-provider.js.map +1 -0
  648. package/dist/seo/sources/engine-scrape-parser-chatgpt.d.ts +62 -0
  649. package/dist/seo/sources/engine-scrape-parser-chatgpt.d.ts.map +1 -0
  650. package/dist/seo/sources/engine-scrape-parser-chatgpt.js +72 -0
  651. package/dist/seo/sources/engine-scrape-parser-chatgpt.js.map +1 -0
  652. package/dist/seo/sources/engine-scrape-parser-perplexity.d.ts +10 -0
  653. package/dist/seo/sources/engine-scrape-parser-perplexity.d.ts.map +1 -0
  654. package/dist/seo/sources/engine-scrape-parser-perplexity.js +72 -0
  655. package/dist/seo/sources/engine-scrape-parser-perplexity.js.map +1 -0
  656. package/dist/seo/sources/gsc-adapter.d.ts +64 -0
  657. package/dist/seo/sources/gsc-adapter.d.ts.map +1 -0
  658. package/dist/seo/sources/gsc-adapter.js +221 -0
  659. package/dist/seo/sources/gsc-adapter.js.map +1 -0
  660. package/dist/seo/sources/local-export.d.ts +53 -0
  661. package/dist/seo/sources/local-export.d.ts.map +1 -0
  662. package/dist/seo/sources/local-export.js +307 -0
  663. package/dist/seo/sources/local-export.js.map +1 -0
  664. package/dist/seo/sources/mention-citation-extractor.d.ts +136 -0
  665. package/dist/seo/sources/mention-citation-extractor.d.ts.map +1 -0
  666. package/dist/seo/sources/mention-citation-extractor.js +272 -0
  667. package/dist/seo/sources/mention-citation-extractor.js.map +1 -0
  668. package/dist/seo/sources/scrape-arm-provider.d.ts +109 -0
  669. package/dist/seo/sources/scrape-arm-provider.d.ts.map +1 -0
  670. package/dist/seo/sources/scrape-arm-provider.js +129 -0
  671. package/dist/seo/sources/scrape-arm-provider.js.map +1 -0
  672. package/dist/seo/tracked-prompt-store.d.ts +33 -0
  673. package/dist/seo/tracked-prompt-store.d.ts.map +1 -0
  674. package/dist/seo/tracked-prompt-store.js +68 -0
  675. package/dist/seo/tracked-prompt-store.js.map +1 -0
  676. package/dist/seo/types.d.ts +128 -0
  677. package/dist/seo/types.d.ts.map +1 -0
  678. package/dist/seo/types.js +14 -0
  679. package/dist/seo/types.js.map +1 -0
  680. package/dist/seo/verifier.d.ts +34 -0
  681. package/dist/seo/verifier.d.ts.map +1 -0
  682. package/dist/seo/verifier.js +204 -0
  683. package/dist/seo/verifier.js.map +1 -0
  684. package/dist/seo/workflow-capabilities.d.ts +26 -0
  685. package/dist/seo/workflow-capabilities.d.ts.map +1 -0
  686. package/dist/seo/workflow-capabilities.js +12 -0
  687. package/dist/seo/workflow-capabilities.js.map +1 -0
  688. package/dist/state/facts.d.ts +5 -1
  689. package/dist/state/facts.d.ts.map +1 -1
  690. package/dist/state/facts.js +29 -19
  691. package/dist/state/facts.js.map +1 -1
  692. package/dist/state/index.d.ts +1 -1
  693. package/dist/state/index.d.ts.map +1 -1
  694. package/dist/state/index.js +1 -1
  695. package/dist/state/index.js.map +1 -1
  696. package/dist/state/outline-state.d.ts +0 -12
  697. package/dist/state/outline-state.d.ts.map +1 -1
  698. package/dist/state/outline-state.js +1 -18
  699. package/dist/state/outline-state.js.map +1 -1
  700. package/dist/state/security-audit-state.d.ts +20 -0
  701. package/dist/state/security-audit-state.d.ts.map +1 -0
  702. package/dist/state/security-audit-state.js +59 -0
  703. package/dist/state/security-audit-state.js.map +1 -0
  704. package/dist/teams/registry.d.ts.map +1 -1
  705. package/dist/teams/registry.js +17 -0
  706. package/dist/teams/registry.js.map +1 -1
  707. package/dist/telegram/bot.d.ts +137 -0
  708. package/dist/telegram/bot.d.ts.map +1 -0
  709. package/dist/telegram/bot.js +323 -0
  710. package/dist/telegram/bot.js.map +1 -0
  711. package/dist/telegram/digest.d.ts +19 -0
  712. package/dist/telegram/digest.d.ts.map +1 -0
  713. package/dist/telegram/digest.js +23 -0
  714. package/dist/telegram/digest.js.map +1 -0
  715. package/dist/telegram/fleet-view.d.ts +38 -0
  716. package/dist/telegram/fleet-view.d.ts.map +1 -0
  717. package/dist/telegram/fleet-view.js +98 -0
  718. package/dist/telegram/fleet-view.js.map +1 -0
  719. package/dist/telegram/handlers/approvals.d.ts +61 -0
  720. package/dist/telegram/handlers/approvals.d.ts.map +1 -0
  721. package/dist/telegram/handlers/approvals.js +122 -0
  722. package/dist/telegram/handlers/approvals.js.map +1 -0
  723. package/dist/telegram/handlers/capture.d.ts +43 -0
  724. package/dist/telegram/handlers/capture.d.ts.map +1 -0
  725. package/dist/telegram/handlers/capture.js +51 -0
  726. package/dist/telegram/handlers/capture.js.map +1 -0
  727. package/dist/telegram/handlers/prioritize.d.ts +50 -0
  728. package/dist/telegram/handlers/prioritize.d.ts.map +1 -0
  729. package/dist/telegram/handlers/prioritize.js +99 -0
  730. package/dist/telegram/handlers/prioritize.js.map +1 -0
  731. package/dist/telegram/handlers/upload.d.ts +105 -0
  732. package/dist/telegram/handlers/upload.d.ts.map +1 -0
  733. package/dist/telegram/handlers/upload.js +149 -0
  734. package/dist/telegram/handlers/upload.js.map +1 -0
  735. package/dist/telegram/keyboard.d.ts +48 -0
  736. package/dist/telegram/keyboard.d.ts.map +1 -0
  737. package/dist/telegram/keyboard.js +81 -0
  738. package/dist/telegram/keyboard.js.map +1 -0
  739. package/dist/telegram/outbound.d.ts +77 -0
  740. package/dist/telegram/outbound.d.ts.map +1 -0
  741. package/dist/telegram/outbound.js +45 -0
  742. package/dist/telegram/outbound.js.map +1 -0
  743. package/dist/telegram/router.d.ts +46 -0
  744. package/dist/telegram/router.d.ts.map +1 -0
  745. package/dist/telegram/router.js +63 -0
  746. package/dist/telegram/router.js.map +1 -0
  747. package/dist/telegram/streaming.d.ts +36 -0
  748. package/dist/telegram/streaming.d.ts.map +1 -0
  749. package/dist/telegram/streaming.js +55 -0
  750. package/dist/telegram/streaming.js.map +1 -0
  751. package/dist/telegram/whitelist.d.ts +20 -0
  752. package/dist/telegram/whitelist.d.ts.map +1 -0
  753. package/dist/telegram/whitelist.js +34 -0
  754. package/dist/telegram/whitelist.js.map +1 -0
  755. package/dist/utils/git.d.ts +0 -6
  756. package/dist/utils/git.d.ts.map +1 -1
  757. package/dist/utils/git.js +0 -19
  758. package/dist/utils/git.js.map +1 -1
  759. package/dist/utils/index.d.ts +1 -1
  760. package/dist/utils/index.d.ts.map +1 -1
  761. package/dist/utils/index.js +1 -1
  762. package/dist/utils/index.js.map +1 -1
  763. package/dist/vault/conventions.d.ts +23 -0
  764. package/dist/vault/conventions.d.ts.map +1 -0
  765. package/dist/vault/conventions.js +22 -0
  766. package/dist/vault/conventions.js.map +1 -0
  767. package/dist/vault/frontmatter.d.ts +47 -0
  768. package/dist/vault/frontmatter.d.ts.map +1 -0
  769. package/dist/vault/frontmatter.js +149 -0
  770. package/dist/vault/frontmatter.js.map +1 -0
  771. package/dist/vault/index-map.d.ts +35 -0
  772. package/dist/vault/index-map.d.ts.map +1 -0
  773. package/dist/vault/index-map.js +67 -0
  774. package/dist/vault/index-map.js.map +1 -0
  775. package/dist/vault/mcp-adapter.d.ts +96 -0
  776. package/dist/vault/mcp-adapter.d.ts.map +1 -0
  777. package/dist/vault/mcp-adapter.js +176 -0
  778. package/dist/vault/mcp-adapter.js.map +1 -0
  779. package/dist/vault/note-io.d.ts +29 -0
  780. package/dist/vault/note-io.d.ts.map +1 -0
  781. package/dist/vault/note-io.js +44 -0
  782. package/dist/vault/note-io.js.map +1 -0
  783. package/dist/vault/profile.d.ts +35 -0
  784. package/dist/vault/profile.d.ts.map +1 -0
  785. package/dist/vault/profile.js +50 -0
  786. package/dist/vault/profile.js.map +1 -0
  787. package/dist/vault/reindex.d.ts +55 -0
  788. package/dist/vault/reindex.d.ts.map +1 -0
  789. package/dist/vault/reindex.js +69 -0
  790. package/dist/vault/reindex.js.map +1 -0
  791. package/dist/vault/types.d.ts +25 -0
  792. package/dist/vault/types.d.ts.map +1 -0
  793. package/dist/vault/types.js +9 -0
  794. package/dist/vault/types.js.map +1 -0
  795. package/package.json +20 -4
  796. package/scripts/sync-targets.json +2 -1
  797. package/skills/bober.design/SKILL.md +190 -0
  798. package/skills/bober.design/references/1-anti-slop.md +102 -0
  799. package/skills/bober.design/references/2-design-brief.md +84 -0
  800. package/skills/bober.design/references/3-critique-rubric.md +62 -0
  801. package/skills/bober.design/references/4-copy-guide.md +43 -0
  802. package/skills/bober.plan/SKILL.md +15 -1
  803. package/skills/bober.run/SKILL.md +7 -4
  804. package/skills/bober.security-anchor/SKILL.md +172 -0
  805. package/skills/bober.security-audit/SKILL.md +288 -0
  806. package/skills/bober.security-dex-backend/SKILL.md +306 -0
  807. package/skills/bober.security-generic/SKILL.md +295 -0
  808. package/skills/bober.security-igaming/SKILL.md +290 -0
  809. package/skills/bober.security-node/SKILL.md +267 -0
  810. package/skills/bober.security-payments/SKILL.md +249 -0
  811. package/skills/bober.security-react/SKILL.md +194 -0
  812. package/skills/bober.security-solidity/SKILL.md +306 -0
  813. package/skills/bober.seo/SKILL.md +132 -0
  814. package/skills/bober.seo-ai-visibility/SKILL.md +110 -0
  815. package/skills/bober.seo-content-decay/SKILL.md +99 -0
  816. package/skills/bober.seo-generic/SKILL.md +173 -0
  817. package/skills/bober.seo-internal-linking/SKILL.md +87 -0
  818. package/skills/bober.seo-parasite-watch/SKILL.md +121 -0
  819. package/skills/bober.seo-rank-track/SKILL.md +98 -0
  820. package/skills/bober.seo-schema-audit/SKILL.md +97 -0
  821. package/skills/bober.seo-technical-audit/SKILL.md +113 -0
  822. package/skills/bober.seo-topical-map/SKILL.md +100 -0
  823. package/skills/bober.seo-verticals/SKILL.md +133 -0
  824. package/skills/bober.using-bober/SKILL.md +1 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Gmail-to-task bridge — egress-gated.
3
+ *
4
+ * Provides:
5
+ * - parseGmailThread (PURE — no clock, no network)
6
+ * - sanitizeConnectorError (replicates external-client.ts:69 regex)
7
+ * - fromGmailTask (DI: egressAllowed + injected MCP + store + now)
8
+ *
9
+ * Egress guarantee: when egressAllowed=false, fromGmailTask throws BEFORE
10
+ * calling mcp.start() or mcp.callTool() — the stub callTool stays uncalled.
11
+ *
12
+ * Write path: captureTask (from task-inbox.ts) is the ONLY write path.
13
+ * This module never calls writeFinding/ingestFinding directly.
14
+ */
15
+ import type { Finding } from "./finding.js";
16
+ import type { FactStore } from "../state/facts.js";
17
+ /**
18
+ * Minimal MCP surface fromGmailTask needs. ExternalMcpServer matches it
19
+ * structurally; tests inject a fake whose callTool is a vi.fn() spy.
20
+ */
21
+ export interface GmailMcpLike {
22
+ start(): Promise<void>;
23
+ callTool(name: string, args: unknown): Promise<unknown>;
24
+ stop(): Promise<void>;
25
+ }
26
+ /** Default MCP tool name to read one Gmail thread. Override per connector. */
27
+ export declare const DEFAULT_GMAIL_READ_TOOL = "gmail_read_thread";
28
+ /** The clock-independent, id-independent subset of a Finding a thread yields. */
29
+ export interface ParsedGmailThread {
30
+ title: string;
31
+ kind: "action";
32
+ status: "open";
33
+ tags: string[];
34
+ }
35
+ /**
36
+ * Parse a raw Gmail thread payload into a Finding-shaped record.
37
+ * PURE: never calls the network, never reads the clock.
38
+ */
39
+ export declare function parseGmailThread(payload: unknown): ParsedGmailThread;
40
+ /**
41
+ * Strip KEY=VALUE env assignments so connector tokens never surface in
42
+ * error messages. Matches UPPERCASE_KEY=anything-without-whitespace.
43
+ * Replicates the inline regex from src/mcp/external-client.ts:69 —
44
+ * there is no exported sanitizer to import.
45
+ */
46
+ export declare function sanitizeConnectorError(msg: string): string;
47
+ /**
48
+ * Fetch a Gmail thread via the injected MCP connector, parse it locally,
49
+ * and capture it as an open action Finding through captureTask.
50
+ *
51
+ * sc-6-2 contract: when egressAllowed is false, this function throws BEFORE
52
+ * calling mcp.start() or mcp.callTool() — zero network, zero MCP construction.
53
+ *
54
+ * @param args.egressAllowed - resolved from config.taskInbox?.gmailEgress
55
+ * @param args.mcp - injected MCP connector (stubbed in tests)
56
+ * @param args.threadRef - opaque thread reference passed to the connector
57
+ * @param args.store - open FactStore for persistence
58
+ * @param args.now - ISO timestamp injected at the CLI boundary (never internal)
59
+ * @param args.toolName - override tool name (defaults to DEFAULT_GMAIL_READ_TOOL)
60
+ */
61
+ export declare function fromGmailTask(args: {
62
+ egressAllowed: boolean;
63
+ mcp: GmailMcpLike;
64
+ threadRef: string;
65
+ store: FactStore;
66
+ now: string;
67
+ toolName?: string;
68
+ }): Promise<Finding>;
69
+ //# sourceMappingURL=gmail-to-task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-to-task.d.ts","sourceRoot":"","sources":["../../src/hub/gmail-to-task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAID,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAI3D,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAyCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAGpE;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBnB"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Gmail-to-task bridge — egress-gated.
3
+ *
4
+ * Provides:
5
+ * - parseGmailThread (PURE — no clock, no network)
6
+ * - sanitizeConnectorError (replicates external-client.ts:69 regex)
7
+ * - fromGmailTask (DI: egressAllowed + injected MCP + store + now)
8
+ *
9
+ * Egress guarantee: when egressAllowed=false, fromGmailTask throws BEFORE
10
+ * calling mcp.start() or mcp.callTool() — the stub callTool stays uncalled.
11
+ *
12
+ * Write path: captureTask (from task-inbox.ts) is the ONLY write path.
13
+ * This module never calls writeFinding/ingestFinding directly.
14
+ */
15
+ import { captureTask } from "./task-inbox.js";
16
+ // ── Constants ─────────────────────────────────────────────────────────
17
+ /** Default MCP tool name to read one Gmail thread. Override per connector. */
18
+ export const DEFAULT_GMAIL_READ_TOOL = "gmail_read_thread";
19
+ /**
20
+ * Extract the subject from a raw Gmail thread payload.
21
+ * Tolerant: accepts { subject }, { messages: [{ subject }] }, or
22
+ * an SDK envelope { content: [{ text: '<json>' }] }.
23
+ * Returns "(no subject)" when nothing parseable is found.
24
+ */
25
+ function extractSubject(payload) {
26
+ if (payload === null || typeof payload !== "object")
27
+ return "(no subject)";
28
+ const p = payload;
29
+ // Direct subject field
30
+ if (typeof p["subject"] === "string" && p["subject"].length > 0) {
31
+ return p["subject"];
32
+ }
33
+ // messages array
34
+ if (Array.isArray(p["messages"]) && p["messages"].length > 0) {
35
+ const first = p["messages"][0];
36
+ if (typeof first["subject"] === "string" && first["subject"].length > 0) {
37
+ return first["subject"];
38
+ }
39
+ }
40
+ // MCP SDK envelope: { content: [{ type: "text", text: "<json>" }] }
41
+ if (Array.isArray(p["content"]) && p["content"].length > 0) {
42
+ const item = p["content"][0];
43
+ if (typeof item["text"] === "string") {
44
+ try {
45
+ const inner = JSON.parse(item["text"]);
46
+ return extractSubject(inner);
47
+ }
48
+ catch {
49
+ // not JSON — ignore
50
+ }
51
+ }
52
+ }
53
+ return "(no subject)";
54
+ }
55
+ /**
56
+ * Parse a raw Gmail thread payload into a Finding-shaped record.
57
+ * PURE: never calls the network, never reads the clock.
58
+ */
59
+ export function parseGmailThread(payload) {
60
+ const subject = extractSubject(payload);
61
+ return { title: subject, kind: "action", status: "open", tags: ["source:gmail"] };
62
+ }
63
+ // ── Error sanitization (replicates external-client.ts:69) ─────────────
64
+ /**
65
+ * Strip KEY=VALUE env assignments so connector tokens never surface in
66
+ * error messages. Matches UPPERCASE_KEY=anything-without-whitespace.
67
+ * Replicates the inline regex from src/mcp/external-client.ts:69 —
68
+ * there is no exported sanitizer to import.
69
+ */
70
+ export function sanitizeConnectorError(msg) {
71
+ return msg.replace(/\b[A-Z_][A-Z0-9_]*=\S+/g, "[redacted]");
72
+ }
73
+ // ── fromGmailTask ─────────────────────────────────────────────────────
74
+ /**
75
+ * Fetch a Gmail thread via the injected MCP connector, parse it locally,
76
+ * and capture it as an open action Finding through captureTask.
77
+ *
78
+ * sc-6-2 contract: when egressAllowed is false, this function throws BEFORE
79
+ * calling mcp.start() or mcp.callTool() — zero network, zero MCP construction.
80
+ *
81
+ * @param args.egressAllowed - resolved from config.taskInbox?.gmailEgress
82
+ * @param args.mcp - injected MCP connector (stubbed in tests)
83
+ * @param args.threadRef - opaque thread reference passed to the connector
84
+ * @param args.store - open FactStore for persistence
85
+ * @param args.now - ISO timestamp injected at the CLI boundary (never internal)
86
+ * @param args.toolName - override tool name (defaults to DEFAULT_GMAIL_READ_TOOL)
87
+ */
88
+ export async function fromGmailTask(args) {
89
+ // sc-6-2: refuse BEFORE touching mcp — the stub's callTool must stay unused.
90
+ if (!args.egressAllowed) {
91
+ throw new Error("Gmail egress not enabled — set taskInbox.gmailEgress: true in bober.config.json to opt in.");
92
+ }
93
+ await args.mcp.start();
94
+ const raw = await args.mcp.callTool(args.toolName ?? DEFAULT_GMAIL_READ_TOOL, {
95
+ thread: args.threadRef,
96
+ });
97
+ const parsed = parseGmailThread(raw);
98
+ // captureTask is the ONLY write path (contract non-goal). It sets kind=action/
99
+ // status=open and stamps id/surfacedAt from `now`. Provenance via domain tag.
100
+ return captureTask(args.store, parsed.title, { domain: "gmail", now: args.now });
101
+ }
102
+ //# sourceMappingURL=gmail-to-task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-to-task.js","sourceRoot":"","sources":["../../src/hub/gmail-to-task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * kb-hub output vault path resolution.
3
+ *
4
+ * Reads config.hub.outVault from the raw config file (bypassing Zod which
5
+ * strips unknown keys). Falls back to <parentOfProjectRoot>/kb-hub.
6
+ * Never throws.
7
+ */
8
+ /**
9
+ * Resolve the kb-hub output vault to an ABSOLUTE path.
10
+ * Reads config.hub.outVault if present (resolved against projectRoot), else
11
+ * falls back to <parentOfProjectRoot>/kb-hub. Never throws.
12
+ *
13
+ * @param projectRoot Absolute path to the current project root.
14
+ */
15
+ export declare function resolveOutVault(projectRoot: string): Promise<string>;
16
+ /** Target priority.md path inside the resolved out vault. */
17
+ export declare function priorityMdPath(outVault: string): string;
18
+ //# sourceMappingURL=hub-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-config.d.ts","sourceRoot":"","sources":["../../src/hub/hub-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc1E;AAID,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * kb-hub output vault path resolution.
3
+ *
4
+ * Reads config.hub.outVault from the raw config file (bypassing Zod which
5
+ * strips unknown keys). Falls back to <parentOfProjectRoot>/kb-hub.
6
+ * Never throws.
7
+ */
8
+ import { dirname, join, resolve } from "node:path";
9
+ import { readJson } from "../utils/fs.js";
10
+ // ── Config candidates ─────────────────────────────────────────────────
11
+ const CONFIG_CANDIDATES = ["bober.config.json", ".bober/config.json"];
12
+ // ── resolveOutVault ───────────────────────────────────────────────────
13
+ /**
14
+ * Resolve the kb-hub output vault to an ABSOLUTE path.
15
+ * Reads config.hub.outVault if present (resolved against projectRoot), else
16
+ * falls back to <parentOfProjectRoot>/kb-hub. Never throws.
17
+ *
18
+ * @param projectRoot Absolute path to the current project root.
19
+ */
20
+ export async function resolveOutVault(projectRoot) {
21
+ for (const candidate of CONFIG_CANDIDATES) {
22
+ try {
23
+ const raw = await readJson(join(projectRoot, candidate));
24
+ const ov = raw.hub?.outVault;
25
+ if (typeof ov === "string" && ov.length > 0)
26
+ return resolve(projectRoot, ov);
27
+ break; // config existed but no outVault → fall to default
28
+ }
29
+ catch {
30
+ /* not found / invalid JSON → try next candidate */
31
+ }
32
+ }
33
+ return join(dirname(projectRoot), "kb-hub");
34
+ }
35
+ // ── priorityMdPath ────────────────────────────────────────────────────
36
+ /** Target priority.md path inside the resolved out vault. */
37
+ export function priorityMdPath(outVault) {
38
+ return join(outVault, "priority.md");
39
+ }
40
+ //# sourceMappingURL=hub-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-config.js","sourceRoot":"","sources":["../../src/hub/hub-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,yEAAyE;AAEzE,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAU,CAAC;AAE/E,yEAAyE;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAC7B,CAAC;YACF,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;YAC7B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,mDAAmD;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,yEAAyE;AAEzE,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Two-pass hub prioritization judge.
3
+ *
4
+ * Pass 1 (relevance): For filtered scope, applies pure-JS applyFilter with zero LLM calls.
5
+ * For general/decision scopes, calls the injected LLM per finding and parses with
6
+ * validateRelevanceVerdict (fail-closed: null drops the finding; decision scope additionally
7
+ * drops findings whose relevantTo is "neither" or undefined).
8
+ *
9
+ * Pass 2 (prioritization): For each survivor, fans out the four hub lenses (urgency, impact,
10
+ * effort, deadline-risk). Aggregate score = SUM of per-lens scores (0–40; 4 × 0–10). Reconcile:
11
+ * STRICT MAJORITY, FAIL-CLOSED ON TIE: passVotes > failVotes → normal ranking;
12
+ * passVotes ≤ failVotes → kept but tagged "flagged-for-review" (immutable copy, never mutate input).
13
+ *
14
+ * Final order: deterministic JS sort — aggregate score DESC, urgency DESC, severity DESC,
15
+ * dueBy ASC (undefined LAST, treated as +Infinity), id ASC. LLM never emits the final order.
16
+ */
17
+ import type { LLMClient } from "../providers/types.js";
18
+ import type { Finding } from "./finding.js";
19
+ import { type Scope } from "./scope.js";
20
+ /**
21
+ * Two-pass hub prioritization judge.
22
+ *
23
+ * @param findings Pool of Finding[] to rank (input array and Finding objects are never mutated).
24
+ * @param scope Ephemeral query scope — not persisted anywhere.
25
+ * @param llm Injected LLMClient. Tests pass a ScriptedClient fake; Sprint 4 passes a real client.
26
+ * @param now Injected clock for dueWithinDays math in filtered mode. Never call Date.now() here.
27
+ * @returns Ranked Finding[]; tie-voted findings carry the "flagged-for-review" tag.
28
+ */
29
+ export declare function rankFindings(findings: Finding[], scope: Scope, llm: LLMClient, now: Date): Promise<Finding[]>;
30
+ //# sourceMappingURL=judge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/hub/judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,YAAY,CAAC;AAkJrD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,OAAO,EAAE,CAAC,CAmDpB"}
@@ -0,0 +1,177 @@
1
+ import { applyFilter } from "./scope.js";
2
+ import { HUB_LENS_NAMES, resolveHubLensFocus, validateRelevanceVerdict, validateLensScore, } from "./lenses.js";
3
+ // ── Prompt helper ─────────────────────────────────────────────────────
4
+ function buildFindingSummary(finding) {
5
+ const dueStr = finding.dueBy !== undefined ? `\nDue by: ${finding.dueBy}` : "";
6
+ const tagsStr = finding.tags.length > 0 ? `\nTags: ${finding.tags.join(", ")}` : "";
7
+ return (`ID: ${finding.id}\n` +
8
+ `Title: ${finding.title}\n` +
9
+ `Domain: ${finding.domain}\n` +
10
+ `Kind: ${finding.kind}\n` +
11
+ `Urgency: ${finding.urgency}/5\n` +
12
+ `Severity: ${finding.severity}/5\n` +
13
+ `Evidence: ${finding.evidence.join("; ")}` +
14
+ dueStr +
15
+ tagsStr);
16
+ }
17
+ // ── Pass 1: LLM relevance (general and decision scopes only) ──────────
18
+ /**
19
+ * Ask the injected LLM for a per-finding relevance verdict.
20
+ * Returns null on parse failure (fail-closed: caller treats null as "drop").
21
+ * For filtered scope this function is never called (caller fast-paths).
22
+ */
23
+ async function askRelevance(finding, scope, llm) {
24
+ const summary = buildFindingSummary(finding);
25
+ let system;
26
+ let userContent;
27
+ if (scope.mode === "decision") {
28
+ system =
29
+ "You are a relevance filter for a personal priority hub helping evaluate a decision. " +
30
+ "Determine which named option (if any) this finding informs. " +
31
+ 'Respond ONLY with a JSON object: ' +
32
+ '{ "relevant": boolean, "relevantTo": "optionA" | "optionB" | "both" | "neither", "reason": string }';
33
+ userContent =
34
+ `Decision:\nOption A: ${scope.optionA}\nOption B: ${scope.optionB}\n\n` +
35
+ `Finding:\n${summary}\n\n` +
36
+ "Which option does this finding inform, if any? Respond with JSON only.";
37
+ }
38
+ else {
39
+ // general (filtered is handled by caller fast path and never reaches here)
40
+ system =
41
+ "You are a relevance filter for a personal priority hub. " +
42
+ "Evaluate whether this finding deserves attention in a general priority review. " +
43
+ 'Respond ONLY with a JSON object: { "relevant": boolean, "reason": string }';
44
+ userContent =
45
+ `Finding:\n${summary}\n\n` +
46
+ "Is this finding relevant for a general priority review? Respond with JSON only.";
47
+ }
48
+ const messages = [{ role: "user", content: userContent }];
49
+ const response = await llm.chat({
50
+ model: "hub-relevance",
51
+ system,
52
+ messages,
53
+ jsonObjectMode: true,
54
+ });
55
+ return validateRelevanceVerdict(response.text);
56
+ }
57
+ // ── Pass 2: hub lens fan-out ──────────────────────────────────────────
58
+ /**
59
+ * Fan out all hub prioritization lenses for a single finding.
60
+ * Aggregate score = SUM of per-lens scores (range 0–40 across 4 lenses).
61
+ * Null lens response → {include:false, score:0} (fail-closed, contributes to failVotes).
62
+ */
63
+ async function scoreFindingWithLenses(finding, llm) {
64
+ const summary = buildFindingSummary(finding);
65
+ let passVotes = 0;
66
+ let failVotes = 0;
67
+ let aggregateScore = 0;
68
+ for (const lens of HUB_LENS_NAMES) {
69
+ const lensFocus = resolveHubLensFocus(lens);
70
+ const system = `${lensFocus} ` +
71
+ "You are evaluating a finding for a personal priority hub. " +
72
+ 'Respond ONLY with a JSON object: { "include": boolean, "score": number, "reason": string } ' +
73
+ "where score is an integer 0–10 (0 = lowest priority, 10 = highest priority).";
74
+ const userContent = `Finding:\n${summary}\n\n` +
75
+ "Should this finding be prioritized? Provide a score and reason. Respond with JSON only.";
76
+ const messages = [{ role: "user", content: userContent }];
77
+ const response = await llm.chat({
78
+ model: "hub-lens",
79
+ system,
80
+ messages,
81
+ jsonObjectMode: true,
82
+ });
83
+ // null → fail-closed default: contribute to failVotes, add 0 to aggregate
84
+ const lensScore = validateLensScore(response.text) ?? { include: false, score: 0 };
85
+ aggregateScore += lensScore.score;
86
+ if (lensScore.include) {
87
+ passVotes += 1;
88
+ }
89
+ else {
90
+ failVotes += 1;
91
+ }
92
+ }
93
+ return { passVotes, failVotes, aggregateScore };
94
+ }
95
+ // ── Deterministic sort comparator ──────────────────────────────────────
96
+ /**
97
+ * Deterministic comparator for the final sort step.
98
+ * Order: aggregateScore DESC → urgency DESC → severity DESC →
99
+ * dueBy ASC (undefined treated as +Infinity → LAST) → id ASC.
100
+ */
101
+ function compareFindings(a, b) {
102
+ // 1. aggregateScore DESC
103
+ if (b.aggregateScore !== a.aggregateScore)
104
+ return b.aggregateScore - a.aggregateScore;
105
+ // 2. urgency DESC
106
+ if (b.finding.urgency !== a.finding.urgency)
107
+ return b.finding.urgency - a.finding.urgency;
108
+ // 3. severity DESC
109
+ if (b.finding.severity !== a.finding.severity)
110
+ return b.finding.severity - a.finding.severity;
111
+ // 4. dueBy ASC; undefined → +Infinity → sorts LAST
112
+ const dueA = a.finding.dueBy !== undefined ? Date.parse(a.finding.dueBy) : Infinity;
113
+ const dueB = b.finding.dueBy !== undefined ? Date.parse(b.finding.dueBy) : Infinity;
114
+ if (dueA !== dueB)
115
+ return dueA - dueB;
116
+ // 5. id ASC (lexicographic)
117
+ if (a.finding.id < b.finding.id)
118
+ return -1;
119
+ if (a.finding.id > b.finding.id)
120
+ return 1;
121
+ return 0;
122
+ }
123
+ // ── rankFindings ───────────────────────────────────────────────────────
124
+ /**
125
+ * Two-pass hub prioritization judge.
126
+ *
127
+ * @param findings Pool of Finding[] to rank (input array and Finding objects are never mutated).
128
+ * @param scope Ephemeral query scope — not persisted anywhere.
129
+ * @param llm Injected LLMClient. Tests pass a ScriptedClient fake; Sprint 4 passes a real client.
130
+ * @param now Injected clock for dueWithinDays math in filtered mode. Never call Date.now() here.
131
+ * @returns Ranked Finding[]; tie-voted findings carry the "flagged-for-review" tag.
132
+ */
133
+ export async function rankFindings(findings, scope, llm, now) {
134
+ // ── Filtered fast path: pure JS, ZERO LLM calls ────────────────────
135
+ if (scope.mode === "filtered") {
136
+ const filtered = applyFilter(findings, scope, now);
137
+ // Sort deterministically without aggregate score (no lens pass for filtered mode)
138
+ return [...filtered].sort((a, b) => compareFindings({ finding: a, aggregateScore: 0 }, { finding: b, aggregateScore: 0 }));
139
+ }
140
+ // ── Pass 1: LLM relevance filter (general / decision) ─────────────
141
+ const survivors = [];
142
+ for (const finding of findings) {
143
+ const verdict = await askRelevance(finding, scope, llm);
144
+ // null → fail-closed: drop the finding
145
+ if (verdict === null || !verdict.relevant)
146
+ continue;
147
+ // Decision scope: drop "neither" and undefined relevantTo
148
+ if (scope.mode === "decision") {
149
+ const rt = verdict.relevantTo;
150
+ if (rt !== "optionA" && rt !== "optionB" && rt !== "both")
151
+ continue;
152
+ }
153
+ survivors.push(finding);
154
+ }
155
+ // ── Pass 2: lens scoring + strict-majority reconcile ──────────────
156
+ const scored = [];
157
+ for (const finding of survivors) {
158
+ const { passVotes, failVotes, aggregateScore } = await scoreFindingWithLenses(finding, llm);
159
+ // Reconcile: strict majority, fail-closed on tie.
160
+ // bober: hub inverts the eval/medical panel DROP: a tie/fail-majority keeps the finding
161
+ // and tags it "flagged-for-review" rather than dropping it (lens-panel.md:80-84).
162
+ let out;
163
+ if (passVotes > failVotes) {
164
+ out = finding; // strict majority → normal ranking, no tag change
165
+ }
166
+ else {
167
+ // Tie or fail-majority → keep but tag; append to a COPY to avoid mutating input
168
+ out = finding.tags.includes("flagged-for-review")
169
+ ? finding
170
+ : { ...finding, tags: [...finding.tags, "flagged-for-review"] };
171
+ }
172
+ scored.push({ finding: out, aggregateScore });
173
+ }
174
+ // ── Deterministic sort: LLM never emits the final order ───────────
175
+ return [...scored].sort(compareFindings).map((s) => s.finding);
176
+ }
177
+ //# sourceMappingURL=judge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/hub/judge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { z } from "zod";
2
+ export declare const HUB_LENS_NAMES: readonly ["urgency", "impact", "effort", "deadline-risk"];
3
+ export type HubLensName = (typeof HUB_LENS_NAMES)[number];
4
+ /**
5
+ * Resolve a hub lens name to its focus fragment.
6
+ * Returns the catalog entry for a known lens, or a generic non-empty
7
+ * fallback for any unknown custom string — never throws.
8
+ */
9
+ export declare function resolveHubLensFocus(lens: string): string;
10
+ /**
11
+ * Schema for pass-1 relevance verdict (general and decision scopes).
12
+ * For decision scope: relevantTo disambiguates which option the finding supports.
13
+ */
14
+ export declare const RelevanceVerdictSchema: z.ZodObject<{
15
+ relevant: z.ZodBoolean;
16
+ relevantTo: z.ZodOptional<z.ZodEnum<["optionA", "optionB", "both", "neither"]>>;
17
+ reason: z.ZodOptional<z.ZodString>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ relevant: boolean;
20
+ relevantTo?: "optionA" | "optionB" | "both" | "neither" | undefined;
21
+ reason?: string | undefined;
22
+ }, {
23
+ relevant: boolean;
24
+ relevantTo?: "optionA" | "optionB" | "both" | "neither" | undefined;
25
+ reason?: string | undefined;
26
+ }>;
27
+ export type RelevanceVerdict = z.infer<typeof RelevanceVerdictSchema>;
28
+ /**
29
+ * Schema for pass-2 per-lens score/vote.
30
+ * include=true counts as a pass-vote; include=false counts as fail-vote.
31
+ * score (0-10) contributes to aggregate score for final ordering.
32
+ * An unparseable lens response is treated as { include: false, score: 0 } (fail-closed).
33
+ */
34
+ export declare const LensScoreSchema: z.ZodObject<{
35
+ include: z.ZodBoolean;
36
+ score: z.ZodNumber;
37
+ reason: z.ZodOptional<z.ZodString>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ include: boolean;
40
+ score: number;
41
+ reason?: string | undefined;
42
+ }, {
43
+ include: boolean;
44
+ score: number;
45
+ reason?: string | undefined;
46
+ }>;
47
+ export type LensScore = z.infer<typeof LensScoreSchema>;
48
+ /**
49
+ * Parse a raw LLM text into a RelevanceVerdict.
50
+ * Returns null on parse failure (fail-closed: treated as irrelevant / no-vote).
51
+ * NEVER throws.
52
+ */
53
+ export declare function validateRelevanceVerdict(rawText: string): RelevanceVerdict | null;
54
+ /**
55
+ * Parse a raw LLM text into a LensScore.
56
+ * Returns null on parse failure (fail-closed: contributes to failCount, score=0).
57
+ * NEVER throws.
58
+ */
59
+ export declare function validateLensScore(rawText: string): LensScore | null;
60
+ //# sourceMappingURL=lenses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lenses.d.ts","sourceRoot":"","sources":["../../src/hub/lenses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,eAAO,MAAM,cAAc,2DAKjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAI1D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKxD;AAID;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AA4CxD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAQjF;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQnE"}