agent-web-interface 4.0.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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/src/browser/ensure-browser.d.ts +39 -0
  4. package/dist/src/browser/ensure-browser.d.ts.map +1 -0
  5. package/dist/src/browser/ensure-browser.js +65 -0
  6. package/dist/src/browser/ensure-browser.js.map +1 -0
  7. package/dist/src/browser/index.d.ts +8 -0
  8. package/dist/src/browser/index.d.ts.map +1 -0
  9. package/dist/src/browser/index.js +8 -0
  10. package/dist/src/browser/index.js.map +1 -0
  11. package/dist/src/browser/page-network-tracker.d.ts +96 -0
  12. package/dist/src/browser/page-network-tracker.d.ts.map +1 -0
  13. package/dist/src/browser/page-network-tracker.js +235 -0
  14. package/dist/src/browser/page-network-tracker.js.map +1 -0
  15. package/dist/src/browser/page-registry.d.ts +137 -0
  16. package/dist/src/browser/page-registry.d.ts.map +1 -0
  17. package/dist/src/browser/page-registry.js +194 -0
  18. package/dist/src/browser/page-registry.js.map +1 -0
  19. package/dist/src/browser/page-stabilization.d.ts +35 -0
  20. package/dist/src/browser/page-stabilization.d.ts.map +1 -0
  21. package/dist/src/browser/page-stabilization.js +42 -0
  22. package/dist/src/browser/page-stabilization.js.map +1 -0
  23. package/dist/src/browser/session-manager.d.ts +336 -0
  24. package/dist/src/browser/session-manager.d.ts.map +1 -0
  25. package/dist/src/browser/session-manager.js +964 -0
  26. package/dist/src/browser/session-manager.js.map +1 -0
  27. package/dist/src/cdp/cdp-client.interface.d.ts +193 -0
  28. package/dist/src/cdp/cdp-client.interface.d.ts.map +1 -0
  29. package/dist/src/cdp/cdp-client.interface.js +9 -0
  30. package/dist/src/cdp/cdp-client.interface.js.map +1 -0
  31. package/dist/src/cdp/index.d.ts +9 -0
  32. package/dist/src/cdp/index.d.ts.map +1 -0
  33. package/dist/src/cdp/index.js +8 -0
  34. package/dist/src/cdp/index.js.map +1 -0
  35. package/dist/src/cdp/puppeteer-cdp-client.d.ts +97 -0
  36. package/dist/src/cdp/puppeteer-cdp-client.d.ts.map +1 -0
  37. package/dist/src/cdp/puppeteer-cdp-client.js +273 -0
  38. package/dist/src/cdp/puppeteer-cdp-client.js.map +1 -0
  39. package/dist/src/cli/args.d.ts +35 -0
  40. package/dist/src/cli/args.d.ts.map +1 -0
  41. package/dist/src/cli/args.js +76 -0
  42. package/dist/src/cli/args.js.map +1 -0
  43. package/dist/src/delta/dom-stabilizer.d.ts +46 -0
  44. package/dist/src/delta/dom-stabilizer.d.ts.map +1 -0
  45. package/dist/src/delta/dom-stabilizer.js +121 -0
  46. package/dist/src/delta/dom-stabilizer.js.map +1 -0
  47. package/dist/src/delta/index.d.ts +8 -0
  48. package/dist/src/delta/index.d.ts.map +1 -0
  49. package/dist/src/delta/index.js +7 -0
  50. package/dist/src/delta/index.js.map +1 -0
  51. package/dist/src/factpack/action-selector.d.ts +36 -0
  52. package/dist/src/factpack/action-selector.d.ts.map +1 -0
  53. package/dist/src/factpack/action-selector.js +367 -0
  54. package/dist/src/factpack/action-selector.js.map +1 -0
  55. package/dist/src/factpack/dialog-detector.d.ts +19 -0
  56. package/dist/src/factpack/dialog-detector.d.ts.map +1 -0
  57. package/dist/src/factpack/dialog-detector.js +354 -0
  58. package/dist/src/factpack/dialog-detector.js.map +1 -0
  59. package/dist/src/factpack/form-detector.d.ts +28 -0
  60. package/dist/src/factpack/form-detector.d.ts.map +1 -0
  61. package/dist/src/factpack/form-detector.js +555 -0
  62. package/dist/src/factpack/form-detector.js.map +1 -0
  63. package/dist/src/factpack/index.d.ts +32 -0
  64. package/dist/src/factpack/index.d.ts.map +1 -0
  65. package/dist/src/factpack/index.js +73 -0
  66. package/dist/src/factpack/index.js.map +1 -0
  67. package/dist/src/factpack/page-classifier.d.ts +22 -0
  68. package/dist/src/factpack/page-classifier.d.ts.map +1 -0
  69. package/dist/src/factpack/page-classifier.js +526 -0
  70. package/dist/src/factpack/page-classifier.js.map +1 -0
  71. package/dist/src/factpack/types.d.ts +307 -0
  72. package/dist/src/factpack/types.d.ts.map +1 -0
  73. package/dist/src/factpack/types.js +12 -0
  74. package/dist/src/factpack/types.js.map +1 -0
  75. package/dist/src/form/dependency-tracker.d.ts +108 -0
  76. package/dist/src/form/dependency-tracker.d.ts.map +1 -0
  77. package/dist/src/form/dependency-tracker.js +298 -0
  78. package/dist/src/form/dependency-tracker.js.map +1 -0
  79. package/dist/src/form/field-extractor.d.ts +32 -0
  80. package/dist/src/form/field-extractor.d.ts.map +1 -0
  81. package/dist/src/form/field-extractor.js +544 -0
  82. package/dist/src/form/field-extractor.js.map +1 -0
  83. package/dist/src/form/form-detector.d.ts +103 -0
  84. package/dist/src/form/form-detector.d.ts.map +1 -0
  85. package/dist/src/form/form-detector.js +704 -0
  86. package/dist/src/form/form-detector.js.map +1 -0
  87. package/dist/src/form/form-state.d.ts +23 -0
  88. package/dist/src/form/form-state.d.ts.map +1 -0
  89. package/dist/src/form/form-state.js +39 -0
  90. package/dist/src/form/form-state.js.map +1 -0
  91. package/dist/src/form/index.d.ts +23 -0
  92. package/dist/src/form/index.d.ts.map +1 -0
  93. package/dist/src/form/index.js +27 -0
  94. package/dist/src/form/index.js.map +1 -0
  95. package/dist/src/form/runtime-value-reader.d.ts +72 -0
  96. package/dist/src/form/runtime-value-reader.d.ts.map +1 -0
  97. package/dist/src/form/runtime-value-reader.js +232 -0
  98. package/dist/src/form/runtime-value-reader.js.map +1 -0
  99. package/dist/src/form/types.d.ts +384 -0
  100. package/dist/src/form/types.d.ts.map +1 -0
  101. package/dist/src/form/types.js +17 -0
  102. package/dist/src/form/types.js.map +1 -0
  103. package/dist/src/index.d.ts +8 -0
  104. package/dist/src/index.d.ts.map +1 -0
  105. package/dist/src/index.js +212 -0
  106. package/dist/src/index.js.map +1 -0
  107. package/dist/src/lib/constants.d.ts +27 -0
  108. package/dist/src/lib/constants.d.ts.map +1 -0
  109. package/dist/src/lib/constants.js +63 -0
  110. package/dist/src/lib/constants.js.map +1 -0
  111. package/dist/src/lib/index.d.ts +12 -0
  112. package/dist/src/lib/index.d.ts.map +1 -0
  113. package/dist/src/lib/index.js +17 -0
  114. package/dist/src/lib/index.js.map +1 -0
  115. package/dist/src/lib/regions.d.ts +29 -0
  116. package/dist/src/lib/regions.d.ts.map +1 -0
  117. package/dist/src/lib/regions.js +93 -0
  118. package/dist/src/lib/regions.js.map +1 -0
  119. package/dist/src/lib/scoring.d.ts +47 -0
  120. package/dist/src/lib/scoring.d.ts.map +1 -0
  121. package/dist/src/lib/scoring.js +79 -0
  122. package/dist/src/lib/scoring.js.map +1 -0
  123. package/dist/src/lib/selectors.d.ts +42 -0
  124. package/dist/src/lib/selectors.d.ts.map +1 -0
  125. package/dist/src/lib/selectors.js +138 -0
  126. package/dist/src/lib/selectors.js.map +1 -0
  127. package/dist/src/lib/text-utils.d.ts +155 -0
  128. package/dist/src/lib/text-utils.d.ts.map +1 -0
  129. package/dist/src/lib/text-utils.js +391 -0
  130. package/dist/src/lib/text-utils.js.map +1 -0
  131. package/dist/src/observation/eid-linker.d.ts +104 -0
  132. package/dist/src/observation/eid-linker.d.ts.map +1 -0
  133. package/dist/src/observation/eid-linker.js +403 -0
  134. package/dist/src/observation/eid-linker.js.map +1 -0
  135. package/dist/src/observation/index.d.ts +12 -0
  136. package/dist/src/observation/index.d.ts.map +1 -0
  137. package/dist/src/observation/index.js +15 -0
  138. package/dist/src/observation/index.js.map +1 -0
  139. package/dist/src/observation/observation-accumulator.d.ts +58 -0
  140. package/dist/src/observation/observation-accumulator.d.ts.map +1 -0
  141. package/dist/src/observation/observation-accumulator.js +213 -0
  142. package/dist/src/observation/observation-accumulator.js.map +1 -0
  143. package/dist/src/observation/observation.types.d.ts +139 -0
  144. package/dist/src/observation/observation.types.d.ts.map +1 -0
  145. package/dist/src/observation/observation.types.js +59 -0
  146. package/dist/src/observation/observation.types.js.map +1 -0
  147. package/dist/src/observation/observer-script.d.ts +19 -0
  148. package/dist/src/observation/observer-script.d.ts.map +1 -0
  149. package/dist/src/observation/observer-script.js +569 -0
  150. package/dist/src/observation/observer-script.js.map +1 -0
  151. package/dist/src/query/index.d.ts +9 -0
  152. package/dist/src/query/index.d.ts.map +1 -0
  153. package/dist/src/query/index.js +10 -0
  154. package/dist/src/query/index.js.map +1 -0
  155. package/dist/src/query/query-engine.d.ts +111 -0
  156. package/dist/src/query/query-engine.d.ts.map +1 -0
  157. package/dist/src/query/query-engine.js +509 -0
  158. package/dist/src/query/query-engine.js.map +1 -0
  159. package/dist/src/query/types/index.d.ts +5 -0
  160. package/dist/src/query/types/index.d.ts.map +1 -0
  161. package/dist/src/query/types/index.js +5 -0
  162. package/dist/src/query/types/index.js.map +1 -0
  163. package/dist/src/query/types/query.types.d.ts +141 -0
  164. package/dist/src/query/types/query.types.d.ts.map +1 -0
  165. package/dist/src/query/types/query.types.js +19 -0
  166. package/dist/src/query/types/query.types.js.map +1 -0
  167. package/dist/src/renderer/budget-manager.d.ts +46 -0
  168. package/dist/src/renderer/budget-manager.d.ts.map +1 -0
  169. package/dist/src/renderer/budget-manager.js +133 -0
  170. package/dist/src/renderer/budget-manager.js.map +1 -0
  171. package/dist/src/renderer/constants.d.ts +38 -0
  172. package/dist/src/renderer/constants.d.ts.map +1 -0
  173. package/dist/src/renderer/constants.js +29 -0
  174. package/dist/src/renderer/constants.js.map +1 -0
  175. package/dist/src/renderer/index.d.ts +12 -0
  176. package/dist/src/renderer/index.d.ts.map +1 -0
  177. package/dist/src/renderer/index.js +16 -0
  178. package/dist/src/renderer/index.js.map +1 -0
  179. package/dist/src/renderer/section-renderers.d.ts +42 -0
  180. package/dist/src/renderer/section-renderers.d.ts.map +1 -0
  181. package/dist/src/renderer/section-renderers.js +252 -0
  182. package/dist/src/renderer/section-renderers.js.map +1 -0
  183. package/dist/src/renderer/token-counter.d.ts +45 -0
  184. package/dist/src/renderer/token-counter.d.ts.map +1 -0
  185. package/dist/src/renderer/token-counter.js +65 -0
  186. package/dist/src/renderer/token-counter.js.map +1 -0
  187. package/dist/src/renderer/types.d.ts +71 -0
  188. package/dist/src/renderer/types.d.ts.map +1 -0
  189. package/dist/src/renderer/types.js +7 -0
  190. package/dist/src/renderer/types.js.map +1 -0
  191. package/dist/src/renderer/xml-renderer.d.ts +42 -0
  192. package/dist/src/renderer/xml-renderer.d.ts.map +1 -0
  193. package/dist/src/renderer/xml-renderer.js +103 -0
  194. package/dist/src/renderer/xml-renderer.js.map +1 -0
  195. package/dist/src/server/index.d.ts +8 -0
  196. package/dist/src/server/index.d.ts.map +1 -0
  197. package/dist/src/server/index.js +8 -0
  198. package/dist/src/server/index.js.map +1 -0
  199. package/dist/src/server/mcp-server.d.ts +59 -0
  200. package/dist/src/server/mcp-server.d.ts.map +1 -0
  201. package/dist/src/server/mcp-server.js +140 -0
  202. package/dist/src/server/mcp-server.js.map +1 -0
  203. package/dist/src/server/server-config.d.ts +41 -0
  204. package/dist/src/server/server-config.d.ts.map +1 -0
  205. package/dist/src/server/server-config.js +80 -0
  206. package/dist/src/server/server-config.js.map +1 -0
  207. package/dist/src/server/session-store.d.ts +148 -0
  208. package/dist/src/server/session-store.d.ts.map +1 -0
  209. package/dist/src/server/session-store.js +224 -0
  210. package/dist/src/server/session-store.js.map +1 -0
  211. package/dist/src/shared/errors/browser-session.error.d.ts +102 -0
  212. package/dist/src/shared/errors/browser-session.error.d.ts.map +1 -0
  213. package/dist/src/shared/errors/browser-session.error.js +153 -0
  214. package/dist/src/shared/errors/browser-session.error.js.map +1 -0
  215. package/dist/src/shared/errors/index.d.ts +5 -0
  216. package/dist/src/shared/errors/index.d.ts.map +1 -0
  217. package/dist/src/shared/errors/index.js +5 -0
  218. package/dist/src/shared/errors/index.js.map +1 -0
  219. package/dist/src/shared/services/dom-transformer.service.d.ts +71 -0
  220. package/dist/src/shared/services/dom-transformer.service.d.ts.map +1 -0
  221. package/dist/src/shared/services/dom-transformer.service.js +190 -0
  222. package/dist/src/shared/services/dom-transformer.service.js.map +1 -0
  223. package/dist/src/shared/services/index.d.ts +7 -0
  224. package/dist/src/shared/services/index.d.ts.map +1 -0
  225. package/dist/src/shared/services/index.js +7 -0
  226. package/dist/src/shared/services/index.js.map +1 -0
  227. package/dist/src/shared/services/logging.service.d.ts +154 -0
  228. package/dist/src/shared/services/logging.service.d.ts.map +1 -0
  229. package/dist/src/shared/services/logging.service.js +267 -0
  230. package/dist/src/shared/services/logging.service.js.map +1 -0
  231. package/dist/src/shared/services/selector-builder.service.d.ts +53 -0
  232. package/dist/src/shared/services/selector-builder.service.d.ts.map +1 -0
  233. package/dist/src/shared/services/selector-builder.service.js +240 -0
  234. package/dist/src/shared/services/selector-builder.service.js.map +1 -0
  235. package/dist/src/shared/types/base.types.d.ts +45 -0
  236. package/dist/src/shared/types/base.types.d.ts.map +1 -0
  237. package/dist/src/shared/types/base.types.js +8 -0
  238. package/dist/src/shared/types/base.types.js.map +1 -0
  239. package/dist/src/shared/types/index.d.ts +5 -0
  240. package/dist/src/shared/types/index.d.ts.map +1 -0
  241. package/dist/src/shared/types/index.js +5 -0
  242. package/dist/src/shared/types/index.js.map +1 -0
  243. package/dist/src/snapshot/element-resolver.d.ts +102 -0
  244. package/dist/src/snapshot/element-resolver.d.ts.map +1 -0
  245. package/dist/src/snapshot/element-resolver.js +379 -0
  246. package/dist/src/snapshot/element-resolver.js.map +1 -0
  247. package/dist/src/snapshot/extractors/attribute-extractor.d.ts +40 -0
  248. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -0
  249. package/dist/src/snapshot/extractors/attribute-extractor.js +237 -0
  250. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -0
  251. package/dist/src/snapshot/extractors/ax-extractor.d.ts +36 -0
  252. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -0
  253. package/dist/src/snapshot/extractors/ax-extractor.js +144 -0
  254. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -0
  255. package/dist/src/snapshot/extractors/dom-extractor.d.ts +21 -0
  256. package/dist/src/snapshot/extractors/dom-extractor.d.ts.map +1 -0
  257. package/dist/src/snapshot/extractors/dom-extractor.js +137 -0
  258. package/dist/src/snapshot/extractors/dom-extractor.js.map +1 -0
  259. package/dist/src/snapshot/extractors/grouping-resolver.d.ts +39 -0
  260. package/dist/src/snapshot/extractors/grouping-resolver.d.ts.map +1 -0
  261. package/dist/src/snapshot/extractors/grouping-resolver.js +260 -0
  262. package/dist/src/snapshot/extractors/grouping-resolver.js.map +1 -0
  263. package/dist/src/snapshot/extractors/index.d.ts +19 -0
  264. package/dist/src/snapshot/extractors/index.d.ts.map +1 -0
  265. package/dist/src/snapshot/extractors/index.js +27 -0
  266. package/dist/src/snapshot/extractors/index.js.map +1 -0
  267. package/dist/src/snapshot/extractors/label-resolver.d.ts +44 -0
  268. package/dist/src/snapshot/extractors/label-resolver.d.ts.map +1 -0
  269. package/dist/src/snapshot/extractors/label-resolver.js +173 -0
  270. package/dist/src/snapshot/extractors/label-resolver.js.map +1 -0
  271. package/dist/src/snapshot/extractors/layout-extractor.d.ts +52 -0
  272. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -0
  273. package/dist/src/snapshot/extractors/layout-extractor.js +382 -0
  274. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -0
  275. package/dist/src/snapshot/extractors/locator-builder.d.ts +27 -0
  276. package/dist/src/snapshot/extractors/locator-builder.d.ts.map +1 -0
  277. package/dist/src/snapshot/extractors/locator-builder.js +223 -0
  278. package/dist/src/snapshot/extractors/locator-builder.js.map +1 -0
  279. package/dist/src/snapshot/extractors/region-resolver.d.ts +31 -0
  280. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -0
  281. package/dist/src/snapshot/extractors/region-resolver.js +168 -0
  282. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -0
  283. package/dist/src/snapshot/extractors/state-extractor.d.ts +30 -0
  284. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -0
  285. package/dist/src/snapshot/extractors/state-extractor.js +181 -0
  286. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -0
  287. package/dist/src/snapshot/extractors/types.d.ts +213 -0
  288. package/dist/src/snapshot/extractors/types.d.ts.map +1 -0
  289. package/dist/src/snapshot/extractors/types.js +145 -0
  290. package/dist/src/snapshot/extractors/types.js.map +1 -0
  291. package/dist/src/snapshot/index.d.ts +14 -0
  292. package/dist/src/snapshot/index.d.ts.map +1 -0
  293. package/dist/src/snapshot/index.js +18 -0
  294. package/dist/src/snapshot/index.js.map +1 -0
  295. package/dist/src/snapshot/snapshot-compiler.d.ts +73 -0
  296. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -0
  297. package/dist/src/snapshot/snapshot-compiler.js +763 -0
  298. package/dist/src/snapshot/snapshot-compiler.js.map +1 -0
  299. package/dist/src/snapshot/snapshot-health.d.ts +97 -0
  300. package/dist/src/snapshot/snapshot-health.d.ts.map +1 -0
  301. package/dist/src/snapshot/snapshot-health.js +214 -0
  302. package/dist/src/snapshot/snapshot-health.js.map +1 -0
  303. package/dist/src/snapshot/snapshot-store.d.ts +137 -0
  304. package/dist/src/snapshot/snapshot-store.d.ts.map +1 -0
  305. package/dist/src/snapshot/snapshot-store.js +202 -0
  306. package/dist/src/snapshot/snapshot-store.js.map +1 -0
  307. package/dist/src/snapshot/snapshot.types.d.ts +250 -0
  308. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -0
  309. package/dist/src/snapshot/snapshot.types.js +54 -0
  310. package/dist/src/snapshot/snapshot.types.js.map +1 -0
  311. package/dist/src/state/actionables-filter.d.ts +47 -0
  312. package/dist/src/state/actionables-filter.d.ts.map +1 -0
  313. package/dist/src/state/actionables-filter.js +173 -0
  314. package/dist/src/state/actionables-filter.js.map +1 -0
  315. package/dist/src/state/atoms-extractor.d.ts +23 -0
  316. package/dist/src/state/atoms-extractor.d.ts.map +1 -0
  317. package/dist/src/state/atoms-extractor.js +160 -0
  318. package/dist/src/state/atoms-extractor.js.map +1 -0
  319. package/dist/src/state/constants.d.ts +125 -0
  320. package/dist/src/state/constants.d.ts.map +1 -0
  321. package/dist/src/state/constants.js +131 -0
  322. package/dist/src/state/constants.js.map +1 -0
  323. package/dist/src/state/diff-engine.d.ts +23 -0
  324. package/dist/src/state/diff-engine.d.ts.map +1 -0
  325. package/dist/src/state/diff-engine.js +475 -0
  326. package/dist/src/state/diff-engine.js.map +1 -0
  327. package/dist/src/state/element-identity.d.ts +75 -0
  328. package/dist/src/state/element-identity.d.ts.map +1 -0
  329. package/dist/src/state/element-identity.js +129 -0
  330. package/dist/src/state/element-identity.js.map +1 -0
  331. package/dist/src/state/element-ref.types.d.ts +135 -0
  332. package/dist/src/state/element-ref.types.d.ts.map +1 -0
  333. package/dist/src/state/element-ref.types.js +13 -0
  334. package/dist/src/state/element-ref.types.js.map +1 -0
  335. package/dist/src/state/element-registry.d.ts +118 -0
  336. package/dist/src/state/element-registry.d.ts.map +1 -0
  337. package/dist/src/state/element-registry.js +222 -0
  338. package/dist/src/state/element-registry.js.map +1 -0
  339. package/dist/src/state/health.types.d.ts +93 -0
  340. package/dist/src/state/health.types.d.ts.map +1 -0
  341. package/dist/src/state/health.types.js +56 -0
  342. package/dist/src/state/health.types.js.map +1 -0
  343. package/dist/src/state/layer-detector.d.ts +23 -0
  344. package/dist/src/state/layer-detector.d.ts.map +1 -0
  345. package/dist/src/state/layer-detector.js +368 -0
  346. package/dist/src/state/layer-detector.js.map +1 -0
  347. package/dist/src/state/locator-generator.d.ts +21 -0
  348. package/dist/src/state/locator-generator.d.ts.map +1 -0
  349. package/dist/src/state/locator-generator.js +137 -0
  350. package/dist/src/state/locator-generator.js.map +1 -0
  351. package/dist/src/state/state-manager.d.ts +104 -0
  352. package/dist/src/state/state-manager.d.ts.map +1 -0
  353. package/dist/src/state/state-manager.js +618 -0
  354. package/dist/src/state/state-manager.js.map +1 -0
  355. package/dist/src/state/state-renderer.d.ts +63 -0
  356. package/dist/src/state/state-renderer.d.ts.map +1 -0
  357. package/dist/src/state/state-renderer.js +340 -0
  358. package/dist/src/state/state-renderer.js.map +1 -0
  359. package/dist/src/state/types.d.ts +353 -0
  360. package/dist/src/state/types.d.ts.map +1 -0
  361. package/dist/src/state/types.js +8 -0
  362. package/dist/src/state/types.js.map +1 -0
  363. package/dist/src/tools/browser-tools.d.ts +140 -0
  364. package/dist/src/tools/browser-tools.d.ts.map +1 -0
  365. package/dist/src/tools/browser-tools.js +657 -0
  366. package/dist/src/tools/browser-tools.js.map +1 -0
  367. package/dist/src/tools/errors.d.ts +63 -0
  368. package/dist/src/tools/errors.d.ts.map +1 -0
  369. package/dist/src/tools/errors.js +86 -0
  370. package/dist/src/tools/errors.js.map +1 -0
  371. package/dist/src/tools/execute-action.d.ts +135 -0
  372. package/dist/src/tools/execute-action.d.ts.map +1 -0
  373. package/dist/src/tools/execute-action.js +579 -0
  374. package/dist/src/tools/execute-action.js.map +1 -0
  375. package/dist/src/tools/form-tools.d.ts +109 -0
  376. package/dist/src/tools/form-tools.d.ts.map +1 -0
  377. package/dist/src/tools/form-tools.js +434 -0
  378. package/dist/src/tools/form-tools.js.map +1 -0
  379. package/dist/src/tools/index.d.ts +11 -0
  380. package/dist/src/tools/index.d.ts.map +1 -0
  381. package/dist/src/tools/index.js +49 -0
  382. package/dist/src/tools/index.js.map +1 -0
  383. package/dist/src/tools/response-builder.d.ts +98 -0
  384. package/dist/src/tools/response-builder.d.ts.map +1 -0
  385. package/dist/src/tools/response-builder.js +219 -0
  386. package/dist/src/tools/response-builder.js.map +1 -0
  387. package/dist/src/tools/tool-schemas.d.ts +2482 -0
  388. package/dist/src/tools/tool-schemas.d.ts.map +1 -0
  389. package/dist/src/tools/tool-schemas.js +606 -0
  390. package/dist/src/tools/tool-schemas.js.map +1 -0
  391. package/dist/vitest.config.d.ts +3 -0
  392. package/dist/vitest.config.d.ts.map +1 -0
  393. package/dist/vitest.config.js +16 -0
  394. package/dist/vitest.config.js.map +1 -0
  395. package/package.json +76 -0
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Section Renderers
3
+ *
4
+ * Individual renderers for each FactPack section.
5
+ * Each renderer produces XML-compact output.
6
+ */
7
+ import { DEFAULT_MAX_ACTIONS, MIN_ACTIONS_ON_TRUNCATE } from './constants.js';
8
+ /**
9
+ * Truncation priority constants (lower = cut first).
10
+ */
11
+ export const TRUNCATION_PRIORITY = {
12
+ STATE: 1, // Cut first
13
+ ACTIONS_EXTRA: 2, // Cut extra actions (keep top 5)
14
+ FORM_DETAILS: 3, // Cut form field details
15
+ DIALOG_SECONDARY: 4, // Cut secondary dialog actions
16
+ FORMS: 5, // Full forms section
17
+ DIALOGS: 6, // Full dialogs section (if not blocking)
18
+ ACTIONS_CORE: 7, // Core actions (top 5)
19
+ PAGE: 8, // Never cut
20
+ };
21
+ /**
22
+ * Render the <page> section.
23
+ */
24
+ export function renderPageSection(pageResult) {
25
+ const { type, confidence, secondary_type } = pageResult.classification;
26
+ // Find page title from entities
27
+ const titleEntity = pageResult.classification.entities.find((e) => e.type === 'product-name' || e.type === 'article-title' || e.type === 'category-name');
28
+ const title = titleEntity?.value ?? '';
29
+ // Build attributes
30
+ const attrs = [`type="${type}"`, `confidence="${confidence.toFixed(2)}"`];
31
+ if (secondary_type) {
32
+ attrs.push(`secondary="${secondary_type}"`);
33
+ }
34
+ const content = `<page ${attrs.join(' ')}>\n${title}\n</page>`;
35
+ return {
36
+ name: 'page',
37
+ content,
38
+ truncation_priority: TRUNCATION_PRIORITY.PAGE,
39
+ can_truncate: false,
40
+ };
41
+ }
42
+ /**
43
+ * Render the <dialogs> section.
44
+ */
45
+ export function renderDialogsSection(dialogResult) {
46
+ const { dialogs, has_blocking_dialog } = dialogResult;
47
+ if (dialogs.length === 0) {
48
+ return {
49
+ name: 'dialogs',
50
+ content: `<dialogs blocking="false">\nNone\n</dialogs>`,
51
+ truncation_priority: TRUNCATION_PRIORITY.DIALOGS,
52
+ can_truncate: false, // Empty section, nothing to truncate
53
+ };
54
+ }
55
+ const lines = [];
56
+ for (let i = 0; i < dialogs.length; i++) {
57
+ const dialog = dialogs[i];
58
+ lines.push(renderDialogItem(dialog, i + 1));
59
+ }
60
+ const content = `<dialogs blocking="${has_blocking_dialog}">\n${lines.join('\n')}\n</dialogs>`;
61
+ // Build truncated version (just dialog types, no actions)
62
+ const truncatedLines = dialogs.map((d, i) => `${i + 1}. [${d.type}] "${d.title ?? 'Untitled'}" node:${d.node_id}`);
63
+ const truncatedContent = `<dialogs blocking="${has_blocking_dialog}">\n${truncatedLines.join('\n')}\n</dialogs>`;
64
+ return {
65
+ name: 'dialogs',
66
+ content,
67
+ truncation_priority: has_blocking_dialog
68
+ ? TRUNCATION_PRIORITY.PAGE // Never cut blocking dialogs
69
+ : TRUNCATION_PRIORITY.DIALOGS,
70
+ can_truncate: dialogs.some((d) => d.actions.length > 0),
71
+ truncated_content: truncatedContent,
72
+ };
73
+ }
74
+ /**
75
+ * Render a single dialog item with its actions.
76
+ */
77
+ function renderDialogItem(dialog, index) {
78
+ const lines = [];
79
+ // Dialog header
80
+ lines.push(`${index}. [${dialog.type}] "${dialog.title ?? 'Untitled'}" node:${dialog.node_id}`);
81
+ // Dialog actions
82
+ for (const action of dialog.actions) {
83
+ lines.push(` - ${action.label} [${action.role}] node:${action.node_id}`);
84
+ }
85
+ return lines.join('\n');
86
+ }
87
+ /**
88
+ * Render the <forms> section.
89
+ */
90
+ export function renderFormsSection(formResult, _options) {
91
+ const { forms, primary_form } = formResult;
92
+ if (forms.length === 0) {
93
+ return {
94
+ name: 'forms',
95
+ content: `<forms count="0">\nNone\n</forms>`,
96
+ truncation_priority: TRUNCATION_PRIORITY.FORMS,
97
+ can_truncate: false,
98
+ };
99
+ }
100
+ // Build attributes
101
+ const primaryPurpose = primary_form?.purpose ?? forms[0]?.purpose;
102
+ const attrs = [`count="${forms.length}"`];
103
+ if (primaryPurpose && primaryPurpose !== 'generic') {
104
+ attrs.push(`primary="${primaryPurpose}"`);
105
+ }
106
+ const lines = [];
107
+ for (let i = 0; i < forms.length; i++) {
108
+ const form = forms[i];
109
+ lines.push(renderFormItem(form, i + 1, false));
110
+ }
111
+ const content = `<forms ${attrs.join(' ')}>\n${lines.join('\n')}\n</forms>`;
112
+ // Build truncated version (forms without field details)
113
+ const truncatedLines = [];
114
+ for (let i = 0; i < forms.length; i++) {
115
+ const form = forms[i];
116
+ truncatedLines.push(renderFormItem(form, i + 1, true));
117
+ }
118
+ const truncatedContent = `<forms ${attrs.join(' ')}>\n${truncatedLines.join('\n')}\n</forms>`;
119
+ return {
120
+ name: 'forms',
121
+ content,
122
+ truncation_priority: TRUNCATION_PRIORITY.FORMS,
123
+ can_truncate: forms.some((f) => f.fields.length > 0),
124
+ truncated_content: truncatedContent,
125
+ };
126
+ }
127
+ /**
128
+ * Render a single form item with its fields.
129
+ */
130
+ function renderFormItem(form, index, compact) {
131
+ const lines = [];
132
+ // Form header
133
+ const confidenceStr = form.purpose_confidence >= 0.5 ? `, ${form.purpose_confidence.toFixed(1)}` : '';
134
+ lines.push(`${index}. ${form.title ?? 'Form'} [${form.purpose}${confidenceStr}] node:${form.node_id}`);
135
+ if (compact) {
136
+ // Just show field count
137
+ const fieldCount = form.fields.length;
138
+ const requiredCount = form.fields.filter((f) => f.required).length;
139
+ lines.push(` - ${fieldCount} fields (${requiredCount} required)`);
140
+ }
141
+ else {
142
+ // Show all fields
143
+ for (const field of form.fields) {
144
+ lines.push(renderFormField(field));
145
+ }
146
+ }
147
+ // Submit button
148
+ if (form.submit_button) {
149
+ const submitLabel = form.submit_button.label || 'Submit';
150
+ lines.push(` - [Submit: ${submitLabel}] node:${form.submit_button.node_id}`);
151
+ }
152
+ return lines.join('\n');
153
+ }
154
+ /**
155
+ * Render a single form field.
156
+ */
157
+ function renderFormField(field) {
158
+ const parts = [];
159
+ // Field name/label
160
+ parts.push(field.label ?? field.semantic_type ?? 'field');
161
+ // State indicators
162
+ const stateIndicators = [];
163
+ if (field.required)
164
+ stateIndicators.push('required');
165
+ if (field.invalid)
166
+ stateIndicators.push('invalid');
167
+ if (field.disabled)
168
+ stateIndicators.push('disabled');
169
+ if (field.readonly)
170
+ stateIndicators.push('readonly');
171
+ const state = stateIndicators.length > 0 ? ` (${stateIndicators.join(', ')})` : '';
172
+ return ` - ${parts.join('')}${state} node:${field.node_id}`;
173
+ }
174
+ /**
175
+ * Render the <actions> section.
176
+ */
177
+ export function renderActionsSection(actionResult, options) {
178
+ const { actions, primary_cta } = actionResult;
179
+ const maxActions = options.max_actions ?? DEFAULT_MAX_ACTIONS;
180
+ if (actions.length === 0) {
181
+ return {
182
+ name: 'actions',
183
+ content: `<actions>\nNone\n</actions>`,
184
+ truncation_priority: TRUNCATION_PRIORITY.ACTIONS_CORE,
185
+ can_truncate: false,
186
+ };
187
+ }
188
+ // Limit to max actions
189
+ const displayActions = actions.slice(0, maxActions);
190
+ // Build attributes
191
+ const attrs = [];
192
+ if (primary_cta) {
193
+ attrs.push(`primary="${escapeXmlAttr(primary_cta.label)}"`);
194
+ }
195
+ const attrStr = attrs.length > 0 ? ` ${attrs.join(' ')}` : '';
196
+ const lines = displayActions.map((action, i) => renderActionItem(action, i + 1));
197
+ const content = `<actions${attrStr}>\n${lines.join('\n')}\n</actions>`;
198
+ // Build truncated version (top 5 only)
199
+ const truncatedActions = actions.slice(0, MIN_ACTIONS_ON_TRUNCATE);
200
+ const truncatedLines = truncatedActions.map((action, i) => renderActionItem(action, i + 1));
201
+ const truncatedContent = `<actions${attrStr}>\n${truncatedLines.join('\n')}\n</actions>`;
202
+ return {
203
+ name: 'actions',
204
+ content,
205
+ truncation_priority: TRUNCATION_PRIORITY.ACTIONS_CORE,
206
+ can_truncate: actions.length > MIN_ACTIONS_ON_TRUNCATE,
207
+ truncated_content: truncatedContent,
208
+ };
209
+ }
210
+ /**
211
+ * Render a single action item.
212
+ */
213
+ function renderActionItem(action, index) {
214
+ return `${index}. ${action.label} [${action.category}] node:${action.node_id}`;
215
+ }
216
+ /**
217
+ * Render the <state> section.
218
+ */
219
+ export function renderStateSection(factpack, options) {
220
+ const { classification } = factpack.page_type;
221
+ const lines = [];
222
+ // URL would need to be passed in; for now skip or use placeholder
223
+ if (options.include_url !== false) {
224
+ // Note: URL is not in FactPack - would need to be passed from snapshot
225
+ // For now we omit it or the caller can add it
226
+ }
227
+ // Page capabilities from classification
228
+ lines.push(`- Has search: ${classification.has_search}`);
229
+ lines.push(`- Has navigation: ${classification.has_navigation}`);
230
+ lines.push(`- Has main content: ${classification.has_main_content}`);
231
+ lines.push(`- Has forms: ${classification.has_forms}`);
232
+ const content = `<state>\n${lines.join('\n')}\n</state>`;
233
+ return {
234
+ name: 'state',
235
+ content,
236
+ truncation_priority: TRUNCATION_PRIORITY.STATE,
237
+ can_truncate: true, // Can be completely removed
238
+ truncated_content: '', // Remove entirely when truncated
239
+ };
240
+ }
241
+ /**
242
+ * Escape special characters for XML attribute values.
243
+ */
244
+ function escapeXmlAttr(str) {
245
+ return str
246
+ .replace(/&/g, '&amp;')
247
+ .replace(/"/g, '&quot;')
248
+ .replace(/'/g, '&apos;')
249
+ .replace(/</g, '&lt;')
250
+ .replace(/>/g, '&gt;');
251
+ }
252
+ //# sourceMappingURL=section-renderers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-renderers.js","sourceRoot":"","sources":["../../../src/renderer/section-renderers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Token Counter
3
+ *
4
+ * Estimates token count for rendered content.
5
+ * Uses a simple character-based heuristic since we don't have
6
+ * access to the actual tokenizer in the runtime environment.
7
+ */
8
+ /**
9
+ * Estimate token count for a string.
10
+ *
11
+ * Uses a simple heuristic: tokens ≈ characters / 4
12
+ * This is reasonably accurate for English text with XML tags.
13
+ *
14
+ * For more accurate counting in production, consider:
15
+ * - tiktoken (OpenAI's tokenizer)
16
+ * - claude-tokenizer (if available)
17
+ *
18
+ * @param text - Text to estimate tokens for
19
+ * @returns Estimated token count
20
+ */
21
+ export declare function estimateTokens(text: string): number;
22
+ /**
23
+ * Calculate tokens needed to reach target.
24
+ *
25
+ * @param currentTokens - Current token count
26
+ * @param targetTokens - Target token count
27
+ * @returns Tokens over budget (negative if under budget)
28
+ */
29
+ export declare function tokensOverBudget(currentTokens: number, targetTokens: number): number;
30
+ /**
31
+ * Check if content is within budget.
32
+ *
33
+ * @param text - Text to check
34
+ * @param targetTokens - Target token count
35
+ * @returns True if within budget
36
+ */
37
+ export declare function isWithinBudget(text: string, targetTokens: number): boolean;
38
+ /**
39
+ * Estimate tokens saved by removing a section.
40
+ *
41
+ * @param section - Section content to measure
42
+ * @returns Estimated tokens that would be saved
43
+ */
44
+ export declare function estimateTokenSavings(section: string): number;
45
+ //# sourceMappingURL=token-counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.d.ts","sourceRoot":"","sources":["../../../src/renderer/token-counter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAenD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5D"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Token Counter
3
+ *
4
+ * Estimates token count for rendered content.
5
+ * Uses a simple character-based heuristic since we don't have
6
+ * access to the actual tokenizer in the runtime environment.
7
+ */
8
+ import { CHARS_PER_TOKEN } from './constants.js';
9
+ /**
10
+ * Estimate token count for a string.
11
+ *
12
+ * Uses a simple heuristic: tokens ≈ characters / 4
13
+ * This is reasonably accurate for English text with XML tags.
14
+ *
15
+ * For more accurate counting in production, consider:
16
+ * - tiktoken (OpenAI's tokenizer)
17
+ * - claude-tokenizer (if available)
18
+ *
19
+ * @param text - Text to estimate tokens for
20
+ * @returns Estimated token count
21
+ */
22
+ export function estimateTokens(text) {
23
+ if (!text)
24
+ return 0;
25
+ // Base estimate: characters / 4
26
+ const baseEstimate = Math.ceil(text.length / CHARS_PER_TOKEN);
27
+ // Adjust for XML tags (they tend to tokenize more efficiently)
28
+ // XML tags like <page> become ~2 tokens, not 6 characters / 4 = 1.5
29
+ const tagMatches = text.match(/<\/?[a-z_-]+(?:\s+[^>]*)?>/gi);
30
+ const tagCount = tagMatches?.length ?? 0;
31
+ // Each tag adds roughly 1 extra token beyond char estimate
32
+ const tagAdjustment = Math.ceil(tagCount * 0.5);
33
+ return baseEstimate + tagAdjustment;
34
+ }
35
+ /**
36
+ * Calculate tokens needed to reach target.
37
+ *
38
+ * @param currentTokens - Current token count
39
+ * @param targetTokens - Target token count
40
+ * @returns Tokens over budget (negative if under budget)
41
+ */
42
+ export function tokensOverBudget(currentTokens, targetTokens) {
43
+ return currentTokens - targetTokens;
44
+ }
45
+ /**
46
+ * Check if content is within budget.
47
+ *
48
+ * @param text - Text to check
49
+ * @param targetTokens - Target token count
50
+ * @returns True if within budget
51
+ */
52
+ export function isWithinBudget(text, targetTokens) {
53
+ return estimateTokens(text) <= targetTokens;
54
+ }
55
+ /**
56
+ * Estimate tokens saved by removing a section.
57
+ *
58
+ * @param section - Section content to measure
59
+ * @returns Estimated tokens that would be saved
60
+ */
61
+ export function estimateTokenSavings(section) {
62
+ // Account for the newlines between sections too
63
+ return estimateTokens(section) + 1;
64
+ }
65
+ //# sourceMappingURL=token-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../../src/renderer/token-counter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,gCAAgC;IAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAE9D,+DAA+D;IAC/D,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;IAEzC,2DAA2D;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAEhD,OAAO,YAAY,GAAG,aAAa,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAqB,EAAE,YAAoB;IAC1E,OAAO,aAAa,GAAG,YAAY,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,YAAoB;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,gDAAgD;IAChD,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Renderer Types
3
+ *
4
+ * Type definitions for FactPack rendering.
5
+ */
6
+ import type { TOKEN_BUDGETS } from './constants.js';
7
+ /**
8
+ * Token budget tier names.
9
+ */
10
+ export type TokenBudget = keyof typeof TOKEN_BUDGETS;
11
+ /**
12
+ * Output format for rendered FactPack.
13
+ */
14
+ export type OutputFormat = 'xml-compact';
15
+ /**
16
+ * Options for rendering FactPack to page_brief.
17
+ */
18
+ export interface RenderOptions {
19
+ /** Output format (currently only xml-compact) */
20
+ format: OutputFormat;
21
+ /** Token budget tier */
22
+ budget: TokenBudget;
23
+ /** Include <state> section (default: true) */
24
+ include_state?: boolean;
25
+ /** Maximum actions to include (overrides default) */
26
+ max_actions?: number;
27
+ /** Include URL in state (default: true) */
28
+ include_url?: boolean;
29
+ }
30
+ /**
31
+ * Result of page_brief rendering.
32
+ */
33
+ export interface PageBriefResult {
34
+ /** The rendered XML-compact page brief */
35
+ page_brief: string;
36
+ /** Estimated token count */
37
+ page_brief_tokens: number;
38
+ /** Was truncation applied? */
39
+ was_truncated: boolean;
40
+ /** Original token count before truncation (if truncated) */
41
+ original_tokens?: number;
42
+ }
43
+ /**
44
+ * Section render result (before budget application).
45
+ */
46
+ export interface RenderedSection {
47
+ /** Section name (for identification) */
48
+ name: string;
49
+ /** Rendered content */
50
+ content: string;
51
+ /** Priority for truncation (lower = cut first) */
52
+ truncation_priority: number;
53
+ /** Can this section be truncated? */
54
+ can_truncate: boolean;
55
+ /** Minimum content if truncated (for sections that can be partially truncated) */
56
+ truncated_content?: string;
57
+ }
58
+ /**
59
+ * Truncation context passed to section renderers.
60
+ */
61
+ export interface TruncationContext {
62
+ /** Current total tokens */
63
+ current_tokens: number;
64
+ /** Target token limit */
65
+ target_tokens: number;
66
+ /** Hard cap */
67
+ cap_tokens: number;
68
+ /** Which sections have been truncated */
69
+ truncated_sections: string[];
70
+ }
71
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/renderer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IAErB,wBAAwB;IACxB,MAAM,EAAE,WAAW,CAAC;IAEpB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,8BAA8B;IAC9B,aAAa,EAAE,OAAO,CAAC;IAEvB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,kDAAkD;IAClD,mBAAmB,EAAE,MAAM,CAAC;IAE5B,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;IAEtB,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;IAEvB,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IAEtB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IAEnB,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Renderer Types
3
+ *
4
+ * Type definitions for FactPack rendering.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/renderer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * XML Renderer
3
+ *
4
+ * Main orchestrator for rendering FactPack to XML-compact format.
5
+ */
6
+ import type { FactPack } from '../factpack/types.js';
7
+ import type { RenderOptions, PageBriefResult, TokenBudget } from './types.js';
8
+ /**
9
+ * Render a FactPack to XML-compact page brief format.
10
+ *
11
+ * @param factpack - The FactPack to render
12
+ * @param options - Render options (budget, format, etc.)
13
+ * @returns Page brief result with rendered content and token count
14
+ */
15
+ export declare function renderFactPackXml(factpack: FactPack, options?: Partial<RenderOptions>): PageBriefResult;
16
+ /**
17
+ * Quick render without budget management.
18
+ * Use for testing or when you know the content is small.
19
+ *
20
+ * @param factpack - The FactPack to render
21
+ * @param options - Render options
22
+ * @returns Raw XML-compact string
23
+ */
24
+ export declare function renderFactPackXmlRaw(factpack: FactPack, options?: Partial<RenderOptions>): string;
25
+ /**
26
+ * Generate page brief with default options.
27
+ * Convenience function for the most common use case.
28
+ *
29
+ * @param factpack - The FactPack to render
30
+ * @param budget - Token budget tier (default: 'standard')
31
+ * @returns Page brief result
32
+ */
33
+ export declare function generatePageBrief(factpack: FactPack, budget?: TokenBudget): PageBriefResult;
34
+ /**
35
+ * Estimate tokens for a FactPack without full rendering.
36
+ * Useful for deciding whether to use compact or detailed budget.
37
+ *
38
+ * @param factpack - The FactPack to estimate
39
+ * @returns Rough token estimate
40
+ */
41
+ export declare function estimateFactPackTokens(factpack: FactPack): number;
42
+ //# sourceMappingURL=xml-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-renderer.d.ts","sourceRoot":"","sources":["../../../src/renderer/xml-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAqB9E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC/B,eAAe,CAyBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAiBjG;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,WAA4B,GACnC,eAAe,CAEjB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAiBjE"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * XML Renderer
3
+ *
4
+ * Main orchestrator for rendering FactPack to XML-compact format.
5
+ */
6
+ import { DEFAULT_BUDGET } from './constants.js';
7
+ import { applyBudget } from './budget-manager.js';
8
+ import { renderPageSection, renderDialogsSection, renderFormsSection, renderActionsSection, renderStateSection, } from './section-renderers.js';
9
+ /**
10
+ * Default render options.
11
+ */
12
+ const DEFAULT_OPTIONS = {
13
+ format: 'xml-compact',
14
+ budget: DEFAULT_BUDGET,
15
+ include_state: true,
16
+ include_url: true,
17
+ };
18
+ /**
19
+ * Render a FactPack to XML-compact page brief format.
20
+ *
21
+ * @param factpack - The FactPack to render
22
+ * @param options - Render options (budget, format, etc.)
23
+ * @returns Page brief result with rendered content and token count
24
+ */
25
+ export function renderFactPackXml(factpack, options) {
26
+ const opts = { ...DEFAULT_OPTIONS, ...options };
27
+ // Render each section
28
+ const sections = [
29
+ renderPageSection(factpack.page_type),
30
+ renderDialogsSection(factpack.dialogs),
31
+ renderFormsSection(factpack.forms, opts),
32
+ renderActionsSection(factpack.actions, opts),
33
+ ];
34
+ // Optionally add state section
35
+ if (opts.include_state) {
36
+ sections.push(renderStateSection(factpack, opts));
37
+ }
38
+ // Apply budget and get final content
39
+ const budgetResult = applyBudget(sections, opts.budget);
40
+ return {
41
+ page_brief: budgetResult.content,
42
+ page_brief_tokens: budgetResult.tokens,
43
+ was_truncated: budgetResult.was_truncated,
44
+ original_tokens: budgetResult.was_truncated ? budgetResult.original_tokens : undefined,
45
+ };
46
+ }
47
+ /**
48
+ * Quick render without budget management.
49
+ * Use for testing or when you know the content is small.
50
+ *
51
+ * @param factpack - The FactPack to render
52
+ * @param options - Render options
53
+ * @returns Raw XML-compact string
54
+ */
55
+ export function renderFactPackXmlRaw(factpack, options) {
56
+ const opts = { ...DEFAULT_OPTIONS, ...options };
57
+ // Render each section
58
+ const sections = [
59
+ renderPageSection(factpack.page_type).content,
60
+ renderDialogsSection(factpack.dialogs).content,
61
+ renderFormsSection(factpack.forms, opts).content,
62
+ renderActionsSection(factpack.actions, opts).content,
63
+ ];
64
+ // Optionally add state section
65
+ if (opts.include_state) {
66
+ sections.push(renderStateSection(factpack, opts).content);
67
+ }
68
+ return `<page_context>\n${sections.join('\n\n')}\n</page_context>`;
69
+ }
70
+ /**
71
+ * Generate page brief with default options.
72
+ * Convenience function for the most common use case.
73
+ *
74
+ * @param factpack - The FactPack to render
75
+ * @param budget - Token budget tier (default: 'standard')
76
+ * @returns Page brief result
77
+ */
78
+ export function generatePageBrief(factpack, budget = DEFAULT_BUDGET) {
79
+ return renderFactPackXml(factpack, { budget });
80
+ }
81
+ /**
82
+ * Estimate tokens for a FactPack without full rendering.
83
+ * Useful for deciding whether to use compact or detailed budget.
84
+ *
85
+ * @param factpack - The FactPack to estimate
86
+ * @returns Rough token estimate
87
+ */
88
+ export function estimateFactPackTokens(factpack) {
89
+ // Quick estimation based on counts
90
+ const dialogCount = factpack.dialogs.dialogs.length;
91
+ const formCount = factpack.forms.forms.length;
92
+ const fieldCount = factpack.forms.forms.reduce((acc, f) => acc + f.fields.length, 0);
93
+ const actionCount = factpack.actions.actions.length;
94
+ // Base tokens for structure
95
+ let estimate = 100;
96
+ // Add for content
97
+ estimate += dialogCount * 30; // ~30 tokens per dialog
98
+ estimate += formCount * 40; // ~40 tokens per form header
99
+ estimate += fieldCount * 15; // ~15 tokens per field
100
+ estimate += actionCount * 20; // ~20 tokens per action
101
+ return estimate;
102
+ }
103
+ //# sourceMappingURL=xml-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-renderer.js","sourceRoot":"","sources":["../../../src/renderer/xml-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Server module exports
3
+ *
4
+ * Barrel export for MCP server components.
5
+ */
6
+ export { BrowserAutomationServer, type ServerConfig } from './mcp-server.js';
7
+ export { SessionStore, type TenantSession, type SessionStoreOptions } from './session-store.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Server module exports
3
+ *
4
+ * Barrel export for MCP server components.
5
+ */
6
+ export { BrowserAutomationServer } from './mcp-server.js';
7
+ export { SessionStore } from './session-store.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAqB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAgD,MAAM,oBAAoB,CAAC"}