agent-nuvira 3.3.1 → 3.3.4

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 (466) hide show
  1. package/README.md +18 -13
  2. package/dist/agent-sdk/src/agent.d.ts +2 -0
  3. package/dist/agent-sdk/src/agent.d.ts.map +1 -1
  4. package/dist/agent-sdk/src/define.d.ts +64 -0
  5. package/dist/agent-sdk/src/define.d.ts.map +1 -0
  6. package/dist/agent-sdk/src/define.js +76 -0
  7. package/dist/agent-sdk/src/define.js.map +1 -0
  8. package/dist/agent-sdk/src/index.d.ts +9 -0
  9. package/dist/agent-sdk/src/index.d.ts.map +1 -1
  10. package/dist/agent-sdk/src/index.js +9 -0
  11. package/dist/agent-sdk/src/index.js.map +1 -1
  12. package/dist/agent-sdk/src/scaffold.d.ts +11 -0
  13. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
  14. package/dist/agent-sdk/src/scaffold.js +16 -6
  15. package/dist/agent-sdk/src/scaffold.js.map +1 -1
  16. package/dist/agents/agents/runner.d.ts +9 -0
  17. package/dist/agents/agents/runner.d.ts.map +1 -1
  18. package/dist/agents/agents/runner.js +34 -12
  19. package/dist/agents/agents/runner.js.map +1 -1
  20. package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
  21. package/dist/agents/agents/writer-tool-calling.js +7 -2
  22. package/dist/agents/agents/writer-tool-calling.js.map +1 -1
  23. package/dist/agents/agents/writer.d.ts.map +1 -1
  24. package/dist/agents/agents/writer.js +7 -1
  25. package/dist/agents/agents/writer.js.map +1 -1
  26. package/dist/agents/artifact-verification.d.ts +102 -0
  27. package/dist/agents/artifact-verification.d.ts.map +1 -0
  28. package/dist/agents/artifact-verification.js +216 -0
  29. package/dist/agents/artifact-verification.js.map +1 -0
  30. package/dist/agents/checkpoint-store.d.ts +73 -0
  31. package/dist/agents/checkpoint-store.d.ts.map +1 -1
  32. package/dist/agents/checkpoint-store.js +161 -0
  33. package/dist/agents/checkpoint-store.js.map +1 -1
  34. package/dist/agents/credential-store.d.ts +120 -0
  35. package/dist/agents/credential-store.d.ts.map +1 -1
  36. package/dist/agents/credential-store.js +358 -19
  37. package/dist/agents/credential-store.js.map +1 -1
  38. package/dist/agents/long-form-plan.d.ts.map +1 -1
  39. package/dist/agents/long-form-plan.js +2 -1
  40. package/dist/agents/long-form-plan.js.map +1 -1
  41. package/dist/agents/orchestrator.d.ts +10 -1
  42. package/dist/agents/orchestrator.d.ts.map +1 -1
  43. package/dist/agents/orchestrator.js +239 -79
  44. package/dist/agents/orchestrator.js.map +1 -1
  45. package/dist/agents/phase-engine.d.ts +61 -0
  46. package/dist/agents/phase-engine.d.ts.map +1 -1
  47. package/dist/agents/phase-engine.js +68 -2
  48. package/dist/agents/phase-engine.js.map +1 -1
  49. package/dist/agents/prompt-assembly.d.ts +11 -0
  50. package/dist/agents/prompt-assembly.d.ts.map +1 -1
  51. package/dist/agents/prompt-assembly.js +17 -0
  52. package/dist/agents/prompt-assembly.js.map +1 -1
  53. package/dist/agents/release-preflight.d.ts +121 -0
  54. package/dist/agents/release-preflight.d.ts.map +1 -0
  55. package/dist/agents/release-preflight.js +259 -0
  56. package/dist/agents/release-preflight.js.map +1 -0
  57. package/dist/agents/release-runner.d.ts +157 -0
  58. package/dist/agents/release-runner.d.ts.map +1 -0
  59. package/dist/agents/release-runner.js +719 -0
  60. package/dist/agents/release-runner.js.map +1 -0
  61. package/dist/agents/step-handoff.d.ts +190 -0
  62. package/dist/agents/step-handoff.d.ts.map +1 -0
  63. package/dist/agents/step-handoff.js +443 -0
  64. package/dist/agents/step-handoff.js.map +1 -0
  65. package/dist/cli/agent.d.ts +2 -2
  66. package/dist/cli/agent.js +10 -10
  67. package/dist/cli/benchmark.d.ts.map +1 -1
  68. package/dist/cli/benchmark.js +11 -4
  69. package/dist/cli/benchmark.js.map +1 -1
  70. package/dist/cli/chat.d.ts +94 -0
  71. package/dist/cli/chat.d.ts.map +1 -1
  72. package/dist/cli/chat.js +379 -24
  73. package/dist/cli/chat.js.map +1 -1
  74. package/dist/cli/cli-program.d.ts.map +1 -1
  75. package/dist/cli/cli-program.js +8 -0
  76. package/dist/cli/cli-program.js.map +1 -1
  77. package/dist/cli/config.d.ts.map +1 -1
  78. package/dist/cli/config.js +9 -1
  79. package/dist/cli/config.js.map +1 -1
  80. package/dist/cli/credentials.d.ts +28 -0
  81. package/dist/cli/credentials.d.ts.map +1 -0
  82. package/dist/cli/credentials.js +213 -0
  83. package/dist/cli/credentials.js.map +1 -0
  84. package/dist/cli/doctor.d.ts.map +1 -1
  85. package/dist/cli/doctor.js +3 -2
  86. package/dist/cli/doctor.js.map +1 -1
  87. package/dist/cli/edit.js +2 -2
  88. package/dist/cli/eval.d.ts +17 -0
  89. package/dist/cli/eval.d.ts.map +1 -1
  90. package/dist/cli/eval.js +105 -2
  91. package/dist/cli/eval.js.map +1 -1
  92. package/dist/cli/execute.d.ts +16 -1
  93. package/dist/cli/execute.d.ts.map +1 -1
  94. package/dist/cli/execute.js +192 -22
  95. package/dist/cli/execute.js.map +1 -1
  96. package/dist/cli/failover-runner.d.ts.map +1 -1
  97. package/dist/cli/failover-runner.js +9 -3
  98. package/dist/cli/failover-runner.js.map +1 -1
  99. package/dist/cli/loop-executor.d.ts +55 -0
  100. package/dist/cli/loop-executor.d.ts.map +1 -1
  101. package/dist/cli/loop-executor.js +285 -19
  102. package/dist/cli/loop-executor.js.map +1 -1
  103. package/dist/cli/model.d.ts.map +1 -1
  104. package/dist/cli/model.js +9 -8
  105. package/dist/cli/model.js.map +1 -1
  106. package/dist/cli/models.d.ts +1 -1
  107. package/dist/cli/models.js +4 -4
  108. package/dist/cli/nlu.d.ts.map +1 -1
  109. package/dist/cli/nlu.js +8 -2
  110. package/dist/cli/nlu.js.map +1 -1
  111. package/dist/cli/parity.d.ts +85 -0
  112. package/dist/cli/parity.d.ts.map +1 -0
  113. package/dist/cli/parity.js +506 -0
  114. package/dist/cli/parity.js.map +1 -0
  115. package/dist/cli/plan.d.ts.map +1 -1
  116. package/dist/cli/plan.js +2 -1
  117. package/dist/cli/plan.js.map +1 -1
  118. package/dist/cli/publish.d.ts +22 -0
  119. package/dist/cli/publish.d.ts.map +1 -1
  120. package/dist/cli/publish.js +109 -13
  121. package/dist/cli/publish.js.map +1 -1
  122. package/dist/cli/retrieval.d.ts.map +1 -1
  123. package/dist/cli/retrieval.js +5 -4
  124. package/dist/cli/retrieval.js.map +1 -1
  125. package/dist/cli/sdk.js +4 -4
  126. package/dist/cli/sdk.js.map +1 -1
  127. package/dist/cli/trace.d.ts.map +1 -1
  128. package/dist/cli/trace.js +2 -1
  129. package/dist/cli/trace.js.map +1 -1
  130. package/dist/cli/workflow.js +2 -2
  131. package/dist/cli/workflow.js.map +1 -1
  132. package/dist/config/live-credentials.d.ts +57 -0
  133. package/dist/config/live-credentials.d.ts.map +1 -0
  134. package/dist/config/live-credentials.js +126 -0
  135. package/dist/config/live-credentials.js.map +1 -0
  136. package/dist/config/paths.d.ts +18 -0
  137. package/dist/config/paths.d.ts.map +1 -1
  138. package/dist/config/paths.js +25 -0
  139. package/dist/config/paths.js.map +1 -1
  140. package/dist/config/types.d.ts +44 -0
  141. package/dist/config/types.d.ts.map +1 -1
  142. package/dist/federation/a2a-types.js +1 -1
  143. package/dist/federation/a2a-types.js.map +1 -1
  144. package/dist/findings/verdicts.d.ts +241 -0
  145. package/dist/findings/verdicts.d.ts.map +1 -0
  146. package/dist/findings/verdicts.js +284 -0
  147. package/dist/findings/verdicts.js.map +1 -0
  148. package/dist/gateway/adapters.d.ts +65 -0
  149. package/dist/gateway/adapters.d.ts.map +1 -1
  150. package/dist/gateway/adapters.js +216 -10
  151. package/dist/gateway/adapters.js.map +1 -1
  152. package/dist/gateway/channel-directory.d.ts +31 -0
  153. package/dist/gateway/channel-directory.d.ts.map +1 -1
  154. package/dist/gateway/channel-directory.js +40 -0
  155. package/dist/gateway/channel-directory.js.map +1 -1
  156. package/dist/gateway/gateway-log.d.ts +1 -1
  157. package/dist/gateway/gateway-log.d.ts.map +1 -1
  158. package/dist/gateway/gateway-log.js.map +1 -1
  159. package/dist/gateway/hooks.d.ts +87 -19
  160. package/dist/gateway/hooks.d.ts.map +1 -1
  161. package/dist/gateway/hooks.js +62 -23
  162. package/dist/gateway/hooks.js.map +1 -1
  163. package/dist/gateway/inbound-media.d.ts +147 -0
  164. package/dist/gateway/inbound-media.d.ts.map +1 -0
  165. package/dist/gateway/inbound-media.js +317 -0
  166. package/dist/gateway/inbound-media.js.map +1 -0
  167. package/dist/gateway/inbox.d.ts +8 -1
  168. package/dist/gateway/inbox.d.ts.map +1 -1
  169. package/dist/gateway/inbox.js.map +1 -1
  170. package/dist/gateway/platform-config.d.ts +14 -0
  171. package/dist/gateway/platform-config.d.ts.map +1 -1
  172. package/dist/gateway/platform-config.js +26 -8
  173. package/dist/gateway/platform-config.js.map +1 -1
  174. package/dist/gateway/realtime.d.ts +114 -0
  175. package/dist/gateway/realtime.d.ts.map +1 -0
  176. package/dist/gateway/realtime.js +402 -0
  177. package/dist/gateway/realtime.js.map +1 -0
  178. package/dist/gateway/registry.d.ts +31 -0
  179. package/dist/gateway/registry.d.ts.map +1 -1
  180. package/dist/gateway/registry.js +224 -4
  181. package/dist/gateway/registry.js.map +1 -1
  182. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  183. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  184. package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
  185. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  186. package/dist/gateway/whatsapp/bridge.d.ts +6 -2
  187. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  188. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  189. package/dist/index.js +8 -0
  190. package/dist/index.js.map +1 -1
  191. package/dist/inference/factory.d.ts +14 -0
  192. package/dist/inference/factory.d.ts.map +1 -1
  193. package/dist/inference/factory.js +17 -0
  194. package/dist/inference/factory.js.map +1 -1
  195. package/dist/inference/groq-adapter.d.ts +2 -0
  196. package/dist/inference/groq-adapter.d.ts.map +1 -1
  197. package/dist/inference/groq-adapter.js +16 -6
  198. package/dist/inference/groq-adapter.js.map +1 -1
  199. package/dist/inference/model-validator.d.ts +6 -1
  200. package/dist/inference/model-validator.d.ts.map +1 -1
  201. package/dist/inference/model-validator.js +7 -2
  202. package/dist/inference/model-validator.js.map +1 -1
  203. package/dist/inference/route-resolver.d.ts +116 -0
  204. package/dist/inference/route-resolver.d.ts.map +1 -0
  205. package/dist/inference/route-resolver.js +159 -0
  206. package/dist/inference/route-resolver.js.map +1 -0
  207. package/dist/inference/tools.d.ts.map +1 -1
  208. package/dist/inference/tools.js +29 -0
  209. package/dist/inference/tools.js.map +1 -1
  210. package/dist/learning/autonomy-policy.d.ts +18 -0
  211. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  212. package/dist/learning/autonomy-policy.js +35 -0
  213. package/dist/learning/autonomy-policy.js.map +1 -1
  214. package/dist/learning/benchmark.d.ts.map +1 -1
  215. package/dist/learning/benchmark.js +3 -2
  216. package/dist/learning/benchmark.js.map +1 -1
  217. package/dist/learning/continuation.d.ts.map +1 -1
  218. package/dist/learning/continuation.js +2 -1
  219. package/dist/learning/continuation.js.map +1 -1
  220. package/dist/learning/cost-tracker.d.ts.map +1 -1
  221. package/dist/learning/cost-tracker.js +2 -1
  222. package/dist/learning/cost-tracker.js.map +1 -1
  223. package/dist/learning/deferred-task.d.ts.map +1 -1
  224. package/dist/learning/deferred-task.js +13 -4
  225. package/dist/learning/deferred-task.js.map +1 -1
  226. package/dist/learning/eval-framework.d.ts.map +1 -1
  227. package/dist/learning/eval-framework.js +2 -1
  228. package/dist/learning/eval-framework.js.map +1 -1
  229. package/dist/learning/long-form.d.ts.map +1 -1
  230. package/dist/learning/long-form.js +2 -1
  231. package/dist/learning/long-form.js.map +1 -1
  232. package/dist/learning/model-registry.d.ts.map +1 -1
  233. package/dist/learning/model-registry.js +2 -1
  234. package/dist/learning/model-registry.js.map +1 -1
  235. package/dist/learning/reasoning-cache.d.ts.map +1 -1
  236. package/dist/learning/reasoning-cache.js +2 -1
  237. package/dist/learning/reasoning-cache.js.map +1 -1
  238. package/dist/learning/reasoning-trace.d.ts +38 -2
  239. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  240. package/dist/learning/reasoning-trace.js +91 -1
  241. package/dist/learning/reasoning-trace.js.map +1 -1
  242. package/dist/learning/resilient-call.d.ts.map +1 -1
  243. package/dist/learning/resilient-call.js +31 -18
  244. package/dist/learning/resilient-call.js.map +1 -1
  245. package/dist/learning/retrieval.d.ts.map +1 -1
  246. package/dist/learning/retrieval.js +2 -1
  247. package/dist/learning/retrieval.js.map +1 -1
  248. package/dist/learning/seeded-benchmark.d.ts +160 -0
  249. package/dist/learning/seeded-benchmark.d.ts.map +1 -0
  250. package/dist/learning/seeded-benchmark.js +321 -0
  251. package/dist/learning/seeded-benchmark.js.map +1 -0
  252. package/dist/learning/seeded-bugs.d.ts +142 -0
  253. package/dist/learning/seeded-bugs.d.ts.map +1 -0
  254. package/dist/learning/seeded-bugs.js +535 -0
  255. package/dist/learning/seeded-bugs.js.map +1 -0
  256. package/dist/learning/skill-store.d.ts.map +1 -1
  257. package/dist/learning/skill-store.js +30 -9
  258. package/dist/learning/skill-store.js.map +1 -1
  259. package/dist/learning/step-checkpoint.d.ts +127 -0
  260. package/dist/learning/step-checkpoint.d.ts.map +1 -0
  261. package/dist/learning/step-checkpoint.js +244 -0
  262. package/dist/learning/step-checkpoint.js.map +1 -0
  263. package/dist/mcp/catalog.js +2 -3
  264. package/dist/mcp/catalog.js.map +1 -1
  265. package/dist/mcp/manager.d.ts.map +1 -1
  266. package/dist/mcp/manager.js +5 -3
  267. package/dist/mcp/manager.js.map +1 -1
  268. package/dist/nlu/intent-confirm.d.ts +23 -1
  269. package/dist/nlu/intent-confirm.d.ts.map +1 -1
  270. package/dist/nlu/intent-confirm.js +85 -2
  271. package/dist/nlu/intent-confirm.js.map +1 -1
  272. package/dist/nlu/learnings.d.ts +7 -0
  273. package/dist/nlu/learnings.d.ts.map +1 -1
  274. package/dist/nlu/learnings.js +7 -0
  275. package/dist/nlu/learnings.js.map +1 -1
  276. package/dist/observability/debug-log.d.ts +250 -0
  277. package/dist/observability/debug-log.d.ts.map +1 -0
  278. package/dist/observability/debug-log.js +500 -0
  279. package/dist/observability/debug-log.js.map +1 -0
  280. package/dist/observability/event-bus.d.ts.map +1 -1
  281. package/dist/observability/event-bus.js +4 -1
  282. package/dist/observability/event-bus.js.map +1 -1
  283. package/dist/observability/otel.d.ts +278 -0
  284. package/dist/observability/otel.d.ts.map +1 -0
  285. package/dist/observability/otel.js +590 -0
  286. package/dist/observability/otel.js.map +1 -0
  287. package/dist/parity/drivers.d.ts +99 -0
  288. package/dist/parity/drivers.d.ts.map +1 -0
  289. package/dist/parity/drivers.js +1362 -0
  290. package/dist/parity/drivers.js.map +1 -0
  291. package/dist/parity/graph.d.ts +73 -0
  292. package/dist/parity/graph.d.ts.map +1 -0
  293. package/dist/parity/graph.js +162 -0
  294. package/dist/parity/graph.js.map +1 -0
  295. package/dist/parity/matrix.d.ts +105 -0
  296. package/dist/parity/matrix.d.ts.map +1 -0
  297. package/dist/parity/matrix.js +352 -0
  298. package/dist/parity/matrix.js.map +1 -0
  299. package/dist/parity/observation.d.ts +444 -0
  300. package/dist/parity/observation.d.ts.map +1 -0
  301. package/dist/parity/observation.js +333 -0
  302. package/dist/parity/observation.js.map +1 -0
  303. package/dist/parity/scenarios.d.ts +229 -0
  304. package/dist/parity/scenarios.d.ts.map +1 -0
  305. package/dist/parity/scenarios.js +175 -0
  306. package/dist/parity/scenarios.js.map +1 -0
  307. package/dist/parity/surfaces.d.ts +122 -0
  308. package/dist/parity/surfaces.d.ts.map +1 -0
  309. package/dist/parity/surfaces.js +190 -0
  310. package/dist/parity/surfaces.js.map +1 -0
  311. package/dist/runtime/fault-injection.d.ts +173 -0
  312. package/dist/runtime/fault-injection.d.ts.map +1 -0
  313. package/dist/runtime/fault-injection.js +281 -0
  314. package/dist/runtime/fault-injection.js.map +1 -0
  315. package/dist/skills/secret-capture.d.ts.map +1 -1
  316. package/dist/skills/secret-capture.js +9 -4
  317. package/dist/skills/secret-capture.js.map +1 -1
  318. package/dist/tools/child-agent-entry.d.ts +23 -0
  319. package/dist/tools/child-agent-entry.d.ts.map +1 -0
  320. package/dist/tools/child-agent-entry.js +129 -0
  321. package/dist/tools/child-agent-entry.js.map +1 -0
  322. package/dist/tools/child-agent-runtime.d.ts +124 -0
  323. package/dist/tools/child-agent-runtime.d.ts.map +1 -0
  324. package/dist/tools/child-agent-runtime.js +704 -0
  325. package/dist/tools/child-agent-runtime.js.map +1 -0
  326. package/dist/tools/coding-tools.d.ts.map +1 -1
  327. package/dist/tools/coding-tools.js +82 -10
  328. package/dist/tools/coding-tools.js.map +1 -1
  329. package/dist/tools/credentials-tool.d.ts +24 -0
  330. package/dist/tools/credentials-tool.d.ts.map +1 -0
  331. package/dist/tools/credentials-tool.js +125 -0
  332. package/dist/tools/credentials-tool.js.map +1 -0
  333. package/dist/tools/delegation-system.d.ts +31 -0
  334. package/dist/tools/delegation-system.d.ts.map +1 -1
  335. package/dist/tools/delegation-system.js +70 -9
  336. package/dist/tools/delegation-system.js.map +1 -1
  337. package/dist/tools/extract/docx.d.ts +27 -0
  338. package/dist/tools/extract/docx.d.ts.map +1 -0
  339. package/dist/tools/extract/docx.js +48 -0
  340. package/dist/tools/extract/docx.js.map +1 -0
  341. package/dist/tools/extract/html-text.d.ts +27 -0
  342. package/dist/tools/extract/html-text.d.ts.map +1 -0
  343. package/dist/tools/extract/html-text.js +86 -0
  344. package/dist/tools/extract/html-text.js.map +1 -0
  345. package/dist/tools/extract/pdf-ocr.d.ts +58 -0
  346. package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
  347. package/dist/tools/extract/pdf-ocr.js +116 -0
  348. package/dist/tools/extract/pdf-ocr.js.map +1 -0
  349. package/dist/tools/extract/pdf.d.ts +65 -0
  350. package/dist/tools/extract/pdf.d.ts.map +1 -0
  351. package/dist/tools/extract/pdf.js +197 -0
  352. package/dist/tools/extract/pdf.js.map +1 -0
  353. package/dist/tools/extract/pptx.d.ts +32 -0
  354. package/dist/tools/extract/pptx.d.ts.map +1 -0
  355. package/dist/tools/extract/pptx.js +77 -0
  356. package/dist/tools/extract/pptx.js.map +1 -0
  357. package/dist/tools/extract/xlsx.d.ts +47 -0
  358. package/dist/tools/extract/xlsx.d.ts.map +1 -0
  359. package/dist/tools/extract/xlsx.js +111 -0
  360. package/dist/tools/extract/xlsx.js.map +1 -0
  361. package/dist/tools/finding-tool.d.ts +76 -0
  362. package/dist/tools/finding-tool.d.ts.map +1 -0
  363. package/dist/tools/finding-tool.js +125 -0
  364. package/dist/tools/finding-tool.js.map +1 -0
  365. package/dist/tools/git-tool.d.ts +25 -7
  366. package/dist/tools/git-tool.d.ts.map +1 -1
  367. package/dist/tools/git-tool.js +155 -15
  368. package/dist/tools/git-tool.js.map +1 -1
  369. package/dist/tools/loop-project-context.d.ts.map +1 -1
  370. package/dist/tools/loop-project-context.js +16 -0
  371. package/dist/tools/loop-project-context.js.map +1 -1
  372. package/dist/tools/loop-route-feed.d.ts +57 -0
  373. package/dist/tools/loop-route-feed.d.ts.map +1 -0
  374. package/dist/tools/loop-route-feed.js +101 -0
  375. package/dist/tools/loop-route-feed.js.map +1 -0
  376. package/dist/tools/messaging-tools.d.ts +41 -11
  377. package/dist/tools/messaging-tools.d.ts.map +1 -1
  378. package/dist/tools/messaging-tools.js +104 -55
  379. package/dist/tools/messaging-tools.js.map +1 -1
  380. package/dist/tools/neutts-synth.d.ts +27 -3
  381. package/dist/tools/neutts-synth.d.ts.map +1 -1
  382. package/dist/tools/neutts-synth.js +57 -13
  383. package/dist/tools/neutts-synth.js.map +1 -1
  384. package/dist/tools/pipeline-tool.d.ts +43 -1
  385. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  386. package/dist/tools/pipeline-tool.js +21 -4
  387. package/dist/tools/pipeline-tool.js.map +1 -1
  388. package/dist/tools/publish-tool.d.ts.map +1 -1
  389. package/dist/tools/publish-tool.js +76 -10
  390. package/dist/tools/publish-tool.js.map +1 -1
  391. package/dist/tools/read-extract.d.ts +116 -45
  392. package/dist/tools/read-extract.d.ts.map +1 -1
  393. package/dist/tools/read-extract.js +494 -158
  394. package/dist/tools/read-extract.js.map +1 -1
  395. package/dist/tools/registry.d.ts +23 -3
  396. package/dist/tools/registry.d.ts.map +1 -1
  397. package/dist/tools/registry.js +196 -29
  398. package/dist/tools/registry.js.map +1 -1
  399. package/dist/tools/run-terminal.d.ts +9 -0
  400. package/dist/tools/run-terminal.d.ts.map +1 -1
  401. package/dist/tools/run-terminal.js +80 -2
  402. package/dist/tools/run-terminal.js.map +1 -1
  403. package/dist/tools/subagent-refusal.d.ts +15 -0
  404. package/dist/tools/subagent-refusal.d.ts.map +1 -0
  405. package/dist/tools/subagent-refusal.js +18 -0
  406. package/dist/tools/subagent-refusal.js.map +1 -0
  407. package/dist/tools/subagent-spawner.d.ts +122 -0
  408. package/dist/tools/subagent-spawner.d.ts.map +1 -1
  409. package/dist/tools/subagent-spawner.js +249 -28
  410. package/dist/tools/subagent-spawner.js.map +1 -1
  411. package/dist/tools/tool-hooks.d.ts +177 -0
  412. package/dist/tools/tool-hooks.d.ts.map +1 -0
  413. package/dist/tools/tool-hooks.js +427 -0
  414. package/dist/tools/tool-hooks.js.map +1 -0
  415. package/dist/tools/tool-loop.d.ts +94 -5
  416. package/dist/tools/tool-loop.d.ts.map +1 -1
  417. package/dist/tools/tool-loop.js +315 -9
  418. package/dist/tools/tool-loop.js.map +1 -1
  419. package/dist/tools/tool-refusal.d.ts +68 -0
  420. package/dist/tools/tool-refusal.d.ts.map +1 -0
  421. package/dist/tools/tool-refusal.js +78 -0
  422. package/dist/tools/tool-refusal.js.map +1 -0
  423. package/dist/tools/toolsets.d.ts +8 -0
  424. package/dist/tools/toolsets.d.ts.map +1 -1
  425. package/dist/tools/toolsets.js +14 -4
  426. package/dist/tools/toolsets.js.map +1 -1
  427. package/dist/tools/vision-tools.d.ts +88 -83
  428. package/dist/tools/vision-tools.d.ts.map +1 -1
  429. package/dist/tools/vision-tools.js +134 -103
  430. package/dist/tools/vision-tools.js.map +1 -1
  431. package/dist/tools/worktree.d.ts +210 -0
  432. package/dist/tools/worktree.d.ts.map +1 -0
  433. package/dist/tools/worktree.js +374 -0
  434. package/dist/tools/worktree.js.map +1 -0
  435. package/dist/utils/format.d.ts +3 -0
  436. package/dist/utils/format.d.ts.map +1 -0
  437. package/dist/utils/format.js +32 -0
  438. package/dist/utils/format.js.map +1 -0
  439. package/dist/web-dashboard/attachment-extract.d.ts +64 -0
  440. package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
  441. package/dist/web-dashboard/attachment-extract.js +154 -0
  442. package/dist/web-dashboard/attachment-extract.js.map +1 -0
  443. package/dist/web-dashboard/chat-console.d.ts +108 -1
  444. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  445. package/dist/web-dashboard/chat-console.js +36 -0
  446. package/dist/web-dashboard/chat-console.js.map +1 -1
  447. package/dist/web-dashboard/hub-data.d.ts +37 -0
  448. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  449. package/dist/web-dashboard/hub-data.js +61 -1
  450. package/dist/web-dashboard/hub-data.js.map +1 -1
  451. package/dist/web-dashboard/server.d.ts +14 -0
  452. package/dist/web-dashboard/server.d.ts.map +1 -1
  453. package/dist/web-dashboard/server.js +247 -13
  454. package/dist/web-dashboard/server.js.map +1 -1
  455. package/dist/web-dashboard/src/types.d.ts +196 -48
  456. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  457. package/dist/workflow/registry.js +1 -1
  458. package/dist/workflow/registry.js.map +1 -1
  459. package/package.json +22 -6
  460. package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
  461. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
  462. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
  463. package/src/web-dashboard/public/index.html +2 -2
  464. package/dist/tools/child-agent-worker.js +0 -212
  465. package/src/web-dashboard/public/assets/index-CjvoBhlz.js +0 -207
  466. package/src/web-dashboard/public/assets/index-CjvoBhlz.js.map +0 -1
@@ -1,64 +1,60 @@
1
1
  /**
2
- * Vision Tools — Image analysis, OCR, and visual understanding.
2
+ * Vision Tools — image analysis backed by a REAL engine, or a typed refusal.
3
3
  *
4
- * Hermes equivalent: vision_tools.py
4
+ * What is real here, and what is not:
5
5
  *
6
- * Provides:
7
- * - Image analysis and description
8
- * - OCR (Optical Character Recognition)
9
- * - UI element detection
10
- * - Screenshot analysis
6
+ * - `analyze` reports the image's actual format and pixel dimensions (parsed from
7
+ * the PNG/JPEG/GIF/BMP headers) and, when a vision backend is configured,
8
+ * a genuine description from it.
9
+ * - `ocr` transcribes an image through the configured vision model
10
+ * (`./modality/vision.js` — a local Ollama vision model such as llava /
11
+ * llama3.2-vision, or Gemini when a key is set). A vision-model transcription
12
+ * is not a confidence-scored OCR engine, so the result says which engine ran
13
+ * and never invents a `confidence` number.
14
+ * - `detect-elements`, `find-element` and `compare` have **no backend** and refuse
15
+ * with `not_configured`. They previously returned `[]` / `{similarity: 0}` —
16
+ * empty-but-valid payloads that read as "ran, found nothing", which is the same
17
+ * class of defect as the `read_extract` PDF stub.
18
+ *
19
+ * The registry's `vision` tool ("analyze images, extract text via OCR, detect UI
20
+ * elements") pointed at this file while `describe_image` pointed at the real
21
+ * engine — two tools for one capability, one of them a stub. See
22
+ * TOOL_TRUTHFULNESS_TRACKER.md finding #6.
11
23
  */
24
+ import { type VisionOptions } from './modality/vision.js';
25
+ import { type ToolRefusalCode } from './tool-refusal.js';
12
26
  export interface ImageAnalysis {
13
27
  /** Image path */
14
28
  path: string;
15
- /** Image dimensions */
29
+ /** Real pixel dimensions, or {0,0} when the header could not be parsed */
16
30
  dimensions: {
17
31
  width: number;
18
32
  height: number;
19
33
  };
20
34
  /** Image format */
21
35
  format: string;
22
- /** Detected elements */
23
- elements: DetectedElement[];
24
- /** OCR text */
25
- ocrText?: string;
26
- /** Description */
36
+ /** Description text — from the vision backend when one is configured, else the metadata line */
27
37
  description: string;
28
38
  /** Tags */
29
39
  tags: string[];
30
- }
31
- export interface DetectedElement {
32
- /** Element type */
33
- type: 'button' | 'text' | 'image' | 'link' | 'input' | 'icon' | 'container';
34
- /** Bounding box */
35
- bounds: {
36
- x: number;
37
- y: number;
38
- width: number;
39
- height: number;
40
- };
41
- /** Element text */
42
- text?: string;
43
- /** Confidence score */
44
- confidence: number;
40
+ /** Whether the analysis ran (a failed read is `ok: false`, never an empty success) */
41
+ ok: boolean;
42
+ /** Which engine produced `description` */
43
+ via?: 'vision-model' | 'metadata';
44
+ /** Explains what was NOT done, when a capability is missing */
45
+ note?: string;
46
+ code?: ToolRefusalCode;
47
+ alternatives?: string[];
48
+ error?: string;
45
49
  }
46
50
  export interface OCRResult {
47
- /** Extracted text */
48
51
  text: string;
49
- /** Confidence score */
50
- confidence: number;
51
- /** Text regions */
52
- regions: Array<{
53
- text: string;
54
- bounds: {
55
- x: number;
56
- y: number;
57
- width: number;
58
- height: number;
59
- };
60
- confidence: number;
61
- }>;
52
+ ok: boolean;
53
+ /** The engine that produced the text — absent when nothing ran */
54
+ via?: 'vision-model';
55
+ code?: ToolRefusalCode;
56
+ alternatives?: string[];
57
+ error?: string;
62
58
  }
63
59
  export interface UIElement {
64
60
  /** Element type */
@@ -77,65 +73,74 @@ export interface UIElement {
77
73
  /** Is interactive */
78
74
  interactive: boolean;
79
75
  }
76
+ export interface DetectElementsResult {
77
+ ok: boolean;
78
+ elements: UIElement[];
79
+ code?: ToolRefusalCode;
80
+ alternatives?: string[];
81
+ error?: string;
82
+ }
83
+ export interface CompareResult {
84
+ ok: boolean;
85
+ similarity?: number;
86
+ differences?: Array<{
87
+ x: number;
88
+ y: number;
89
+ width: number;
90
+ height: number;
91
+ }>;
92
+ code?: ToolRefusalCode;
93
+ alternatives?: string[];
94
+ error?: string;
95
+ }
80
96
  export declare class VisionAnalyzer {
81
97
  /**
82
- * Analyze an image.
98
+ * Analyze an image: real format + dimensions always, plus a real description
99
+ * when a vision backend is available.
83
100
  */
84
- analyze(imagePath: string): Promise<ImageAnalysis>;
101
+ analyze(imagePath: string, opts?: VisionOptions): Promise<ImageAnalysis>;
85
102
  /**
86
- * Perform OCR on an image.
103
+ * Transcribe the text in an image through the configured vision model.
104
+ *
105
+ * Refuses when no backend is configured — it never returns an empty string as
106
+ * if the image simply contained no text.
87
107
  */
88
- ocr(imagePath: string): Promise<OCRResult>;
108
+ ocr(imagePath: string, opts?: VisionOptions): Promise<OCRResult>;
89
109
  /**
90
110
  * Detect UI elements in a screenshot.
111
+ *
112
+ * There is no detector backend (no ML model, no DOM access from a raster image),
113
+ * so this refuses rather than returning an empty element list.
91
114
  */
92
- detectUIElements(imagePath: string): Promise<UIElement[]>;
115
+ detectUIElements(imagePath: string): Promise<DetectElementsResult>;
93
116
  /**
94
117
  * Compare two images.
118
+ *
119
+ * No pixel-diff or embedding backend is wired up, so this refuses. It used to
120
+ * return `{ similarity: 0, differences: [] }`, which reads as "identical images
121
+ * with no differences" — the opposite of what it knew.
95
122
  */
96
- compare(imagePath1: string, imagePath2: string): Promise<{
97
- similarity: number;
98
- differences: Array<{
99
- x: number;
100
- y: number;
101
- width: number;
102
- height: number;
103
- }>;
104
- }>;
123
+ compare(imagePath1: string, imagePath2: string): Promise<CompareResult>;
105
124
  /**
106
- * Extract text from a screenshot.
125
+ * Extract text from a screenshot (thin alias over `ocr`, kept for callers that
126
+ * expect a bare string). A refusal yields an empty string — prefer `ocr` when
127
+ * you need to tell "no text in the image" apart from "no backend configured".
107
128
  */
108
- extractText(imagePath: string): Promise<string>;
129
+ extractText(imagePath: string, opts?: VisionOptions): Promise<string>;
109
130
  /**
110
- * Find element by text in screenshot.
131
+ * Find an element whose text matches. Refuses for the same reason as
132
+ * `detectUIElements` — there is no detector to search.
111
133
  */
112
134
  findElementByText(imagePath: string, text: string): Promise<UIElement | null>;
113
135
  /**
114
- * Get image dimensions (basic detection for common formats).
115
- */
116
- private getImageDimensions;
117
- }
118
- export declare class ScreenshotAnalyzer {
119
- private analyzer;
120
- constructor();
121
- /**
122
- * Analyze a browser screenshot.
136
+ * Get image dimensions from the format header (PNG / JPEG / GIF / BMP).
137
+ * Returns {0,0} when the header is not one of those — an unknown size, never a
138
+ * guessed one.
123
139
  */
124
- analyzeBrowserScreenshot(screenshotPath: string): Promise<{
125
- elements: UIElement[];
126
- text: string;
127
- layout: string;
128
- }>;
129
- /**
130
- * Find clickable elements.
131
- */
132
- findClickableElements(screenshotPath: string): Promise<UIElement[]>;
133
- /**
134
- * Generate automation instructions.
135
- */
136
- generateAutomationInstructions(screenshotPath: string, goal: string): Promise<string[]>;
137
- private inferLayout;
140
+ getImageDimensions(buffer: Buffer, format: string): {
141
+ width: number;
142
+ height: number;
143
+ };
138
144
  }
139
145
  export declare function getVisionAnalyzer(): VisionAnalyzer;
140
- export declare function getScreenshotAnalyzer(): ScreenshotAnalyzer;
141
146
  //# sourceMappingURL=vision-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vision-tools.d.ts","sourceRoot":"","sources":["../../src/tools/vision-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision-tools.d.ts","sourceRoot":"","sources":["../../src/tools/vision-tools.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,58 @@
1
1
  /**
2
- * Vision Tools — Image analysis, OCR, and visual understanding.
2
+ * Vision Tools — image analysis backed by a REAL engine, or a typed refusal.
3
3
  *
4
- * Hermes equivalent: vision_tools.py
4
+ * What is real here, and what is not:
5
5
  *
6
- * Provides:
7
- * - Image analysis and description
8
- * - OCR (Optical Character Recognition)
9
- * - UI element detection
10
- * - Screenshot analysis
6
+ * - `analyze` reports the image's actual format and pixel dimensions (parsed from
7
+ * the PNG/JPEG/GIF/BMP headers) and, when a vision backend is configured,
8
+ * a genuine description from it.
9
+ * - `ocr` transcribes an image through the configured vision model
10
+ * (`./modality/vision.js` — a local Ollama vision model such as llava /
11
+ * llama3.2-vision, or Gemini when a key is set). A vision-model transcription
12
+ * is not a confidence-scored OCR engine, so the result says which engine ran
13
+ * and never invents a `confidence` number.
14
+ * - `detect-elements`, `find-element` and `compare` have **no backend** and refuse
15
+ * with `not_configured`. They previously returned `[]` / `{similarity: 0}` —
16
+ * empty-but-valid payloads that read as "ran, found nothing", which is the same
17
+ * class of defect as the `read_extract` PDF stub.
18
+ *
19
+ * The registry's `vision` tool ("analyze images, extract text via OCR, detect UI
20
+ * elements") pointed at this file while `describe_image` pointed at the real
21
+ * engine — two tools for one capability, one of them a stub. See
22
+ * TOOL_TRUTHFULNESS_TRACKER.md finding #6.
11
23
  */
12
24
  import { readFile } from 'node:fs/promises';
13
25
  import { extname } from 'node:path';
26
+ import { describeImage, isVisionAvailable } from './modality/vision.js';
27
+ import { refuse } from './tool-refusal.js';
28
+ /**
29
+ * Render a `ToolRefusal` into this module's result shape — the message field here
30
+ * is named `error` rather than `reason`, so the mapping is explicit instead of
31
+ * spreading `refuse()` output and ending up with an undeclared `reason` key.
32
+ */
33
+ function asVisionRefusal(r) {
34
+ return {
35
+ ok: false,
36
+ code: r.code,
37
+ error: r.reason,
38
+ ...(r.alternatives ? { alternatives: r.alternatives } : {}),
39
+ };
40
+ }
41
+ /** Prompt used for OCR-via-vision-model. Asks for the text ONLY, no commentary. */
42
+ const OCR_PROMPT = 'Transcribe ALL visible text in this image exactly as it appears, preserving line breaks and any table '
43
+ + 'rows/columns. Output only the transcription, with no preamble and no commentary.';
44
+ /** What a user can do when no vision backend is configured. */
45
+ const VISION_SETUP_ALTERNATIVES = [
46
+ 'Configure a vision backend: a local Ollama vision model (llava / llama3.2-vision) or a Gemini API key',
47
+ 'Ask the user to paste the text instead',
48
+ ];
14
49
  // ─── Vision Analyzer ──────────────────────────────────────────────────────
15
50
  export class VisionAnalyzer {
16
51
  /**
17
- * Analyze an image.
52
+ * Analyze an image: real format + dimensions always, plus a real description
53
+ * when a vision backend is available.
18
54
  */
19
- async analyze(imagePath) {
55
+ async analyze(imagePath, opts = {}) {
20
56
  const ext = extname(imagePath).toLowerCase();
21
57
  const content = await readFile(imagePath).catch(() => null);
22
58
  if (!content) {
@@ -24,63 +60,128 @@ export class VisionAnalyzer {
24
60
  path: imagePath,
25
61
  dimensions: { width: 0, height: 0 },
26
62
  format: ext.slice(1) || 'unknown',
27
- elements: [],
28
- description: 'Failed to read image',
63
+ description: `Could not read the image at ${imagePath}.`,
29
64
  tags: [],
65
+ ok: false,
66
+ code: 'no_data',
67
+ error: `Could not read image: ${imagePath}`,
68
+ alternatives: ['Check the path and that the file is a readable image'],
30
69
  };
31
70
  }
32
- // Basic image info
33
71
  const format = ext.slice(1) || 'unknown';
34
72
  const dimensions = this.getImageDimensions(content, format);
73
+ const metadataLine = `Image: ${format.toUpperCase()} (${dimensions.width}x${dimensions.height})`;
74
+ // Prefer a real description when a backend exists; otherwise report honestly
75
+ // that only the metadata was read.
76
+ if (await isVisionAvailable(opts)) {
77
+ const described = await describeImage(imagePath, undefined, opts);
78
+ if (described.ok && described.description) {
79
+ return {
80
+ path: imagePath,
81
+ dimensions,
82
+ format,
83
+ description: described.description,
84
+ tags: [format],
85
+ ok: true,
86
+ via: 'vision-model',
87
+ };
88
+ }
89
+ return {
90
+ path: imagePath,
91
+ dimensions,
92
+ format,
93
+ description: metadataLine,
94
+ tags: [format],
95
+ ok: true,
96
+ via: 'metadata',
97
+ note: `The vision backend was configured but failed (${described.error ?? 'unknown error'}), so only image metadata was read.`,
98
+ };
99
+ }
35
100
  return {
36
101
  path: imagePath,
37
102
  dimensions,
38
103
  format,
39
- elements: [],
40
- description: `Image: ${format.toUpperCase()} (${dimensions.width}x${dimensions.height})`,
104
+ description: metadataLine,
41
105
  tags: [format],
106
+ ok: true,
107
+ via: 'metadata',
108
+ note: 'No vision backend is configured, so only image metadata was read — no description of the contents.',
109
+ alternatives: VISION_SETUP_ALTERNATIVES,
42
110
  };
43
111
  }
44
112
  /**
45
- * Perform OCR on an image.
113
+ * Transcribe the text in an image through the configured vision model.
114
+ *
115
+ * Refuses when no backend is configured — it never returns an empty string as
116
+ * if the image simply contained no text.
46
117
  */
47
- async ocr(imagePath) {
48
- // In a real implementation, this would call an OCR service
49
- return {
50
- text: '',
51
- confidence: 0,
52
- regions: [],
53
- };
118
+ async ocr(imagePath, opts = {}) {
119
+ if (!(await isVisionAvailable(opts))) {
120
+ return {
121
+ text: '',
122
+ ...asVisionRefusal(refuse('not_configured', 'No vision backend is configured (a local Ollama vision model such as llava/llama3.2-vision, or a Gemini API key), so no text could be read from the image.', VISION_SETUP_ALTERNATIVES)),
123
+ };
124
+ }
125
+ const described = await describeImage(imagePath, OCR_PROMPT, opts);
126
+ if (!described.ok || described.description === undefined) {
127
+ return {
128
+ text: '',
129
+ ...asVisionRefusal(refuse('unavailable', `The vision backend could not read ${imagePath}: ${described.error ?? 'no output'}`, ['Retry once — a local vision model can time out on a large image'])),
130
+ };
131
+ }
132
+ return { text: described.description.trim(), ok: true, via: 'vision-model' };
54
133
  }
55
134
  /**
56
135
  * Detect UI elements in a screenshot.
136
+ *
137
+ * There is no detector backend (no ML model, no DOM access from a raster image),
138
+ * so this refuses rather than returning an empty element list.
57
139
  */
58
140
  async detectUIElements(imagePath) {
59
- // In a real implementation, this would use ML model
60
- return [];
141
+ return {
142
+ elements: [],
143
+ ...asVisionRefusal(refuse('not_configured', `UI-element detection has no backend — it needs a DOM or an ML detector, and neither is wired up, so no elements were detected in ${imagePath}.`, [
144
+ 'Use the browser tools (browser / browser_supervisor) to query the live DOM instead of a screenshot',
145
+ 'Use describe_image to get a prose description of the screenshot',
146
+ ])),
147
+ };
61
148
  }
62
149
  /**
63
150
  * Compare two images.
151
+ *
152
+ * No pixel-diff or embedding backend is wired up, so this refuses. It used to
153
+ * return `{ similarity: 0, differences: [] }`, which reads as "identical images
154
+ * with no differences" — the opposite of what it knew.
64
155
  */
65
156
  async compare(imagePath1, imagePath2) {
66
- return { similarity: 0, differences: [] };
157
+ return asVisionRefusal(refuse('not_configured', `Image comparison has no backend, so ${imagePath1} and ${imagePath2} were NOT compared.`, [
158
+ 'Describe both images with describe_image and compare the descriptions',
159
+ 'Compare the files byte-wise if you only need to know whether they differ',
160
+ ]));
67
161
  }
68
162
  /**
69
- * Extract text from a screenshot.
163
+ * Extract text from a screenshot (thin alias over `ocr`, kept for callers that
164
+ * expect a bare string). A refusal yields an empty string — prefer `ocr` when
165
+ * you need to tell "no text in the image" apart from "no backend configured".
70
166
  */
71
- async extractText(imagePath) {
72
- const result = await this.ocr(imagePath);
167
+ async extractText(imagePath, opts = {}) {
168
+ const result = await this.ocr(imagePath, opts);
73
169
  return result.text;
74
170
  }
75
171
  /**
76
- * Find element by text in screenshot.
172
+ * Find an element whose text matches. Refuses for the same reason as
173
+ * `detectUIElements` — there is no detector to search.
77
174
  */
78
175
  async findElementByText(imagePath, text) {
79
- const elements = await this.detectUIElements(imagePath);
80
- return elements.find((e) => e.text?.toLowerCase().includes(text.toLowerCase())) || null;
176
+ const result = await this.detectUIElements(imagePath);
177
+ if (!result.ok)
178
+ return null;
179
+ return result.elements.find((e) => e.text?.toLowerCase().includes(text.toLowerCase())) || null;
81
180
  }
82
181
  /**
83
- * Get image dimensions (basic detection for common formats).
182
+ * Get image dimensions from the format header (PNG / JPEG / GIF / BMP).
183
+ * Returns {0,0} when the header is not one of those — an unknown size, never a
184
+ * guessed one.
84
185
  */
85
186
  getImageDimensions(buffer, format) {
86
187
  // PNG header
@@ -89,7 +190,7 @@ export class VisionAnalyzer {
89
190
  const height = buffer.readUInt32BE(20);
90
191
  return { width, height };
91
192
  }
92
- // JPEG header (simplified)
193
+ // JPEG header (search the SOF marker)
93
194
  if (format === 'jpeg' || format === 'jpg') {
94
195
  let offset = 2;
95
196
  while (offset < buffer.length - 1) {
@@ -123,81 +224,11 @@ export class VisionAnalyzer {
123
224
  return { width: 0, height: 0 };
124
225
  }
125
226
  }
126
- // ─── Screenshot Analyzer ──────────────────────────────────────────────────
127
- export class ScreenshotAnalyzer {
128
- analyzer;
129
- constructor() {
130
- this.analyzer = new VisionAnalyzer();
131
- }
132
- /**
133
- * Analyze a browser screenshot.
134
- */
135
- async analyzeBrowserScreenshot(screenshotPath) {
136
- const elements = await this.analyzer.detectUIElements(screenshotPath);
137
- const text = await this.analyzer.extractText(screenshotPath);
138
- return {
139
- elements,
140
- text,
141
- layout: this.inferLayout(elements),
142
- };
143
- }
144
- /**
145
- * Find clickable elements.
146
- */
147
- async findClickableElements(screenshotPath) {
148
- const elements = await this.analyzer.detectUIElements(screenshotPath);
149
- return elements.filter((e) => e.interactive);
150
- }
151
- /**
152
- * Generate automation instructions.
153
- */
154
- async generateAutomationInstructions(screenshotPath, goal) {
155
- const elements = await this.analyzer.detectUIElements(screenshotPath);
156
- const instructions = [];
157
- // Simple heuristic-based instruction generation
158
- const buttons = elements.filter((e) => e.type === 'button');
159
- const inputs = elements.filter((e) => e.type === 'input');
160
- const links = elements.filter((e) => e.type === 'link');
161
- if (goal.toLowerCase().includes('click')) {
162
- for (const btn of buttons) {
163
- if (btn.text)
164
- instructions.push(`Click button "${btn.text}"`);
165
- }
166
- }
167
- if (goal.toLowerCase().includes('type') || goal.toLowerCase().includes('enter')) {
168
- for (const input of inputs) {
169
- instructions.push(`Type in ${input.text || 'input field'}`);
170
- }
171
- }
172
- if (goal.toLowerCase().includes('navigate')) {
173
- for (const link of links) {
174
- if (link.text)
175
- instructions.push(`Click link "${link.text}"`);
176
- }
177
- }
178
- return instructions;
179
- }
180
- inferLayout(elements) {
181
- if (elements.length === 0)
182
- return 'empty';
183
- if (elements.length > 20)
184
- return 'dense';
185
- if (elements.some((e) => e.type === 'container'))
186
- return 'structured';
187
- return 'simple';
188
- }
189
- }
190
227
  // ─── Singletons ───────────────────────────────────────────────────────────
191
228
  let _visionAnalyzer = null;
192
- let _screenshotAnalyzer = null;
193
229
  export function getVisionAnalyzer() {
194
230
  if (!_visionAnalyzer)
195
231
  _visionAnalyzer = new VisionAnalyzer();
196
232
  return _visionAnalyzer;
197
233
  }
198
- export function getScreenshotAnalyzer() {
199
- if (!_screenshotAnalyzer)
200
- _screenshotAnalyzer = new ScreenshotAnalyzer();
201
- return _screenshotAnalyzer;
202
- }
203
234
  //# sourceMappingURL=vision-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vision-tools.js","sourceRoot":"","sources":["../../src/tools/vision-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision-tools.js","sourceRoot":"","sources":["../../src/tools/vision-tools.ts"],"names":[],"mappings":"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"}