@murphai/murph 0.2.5 → 0.2.7

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 (533) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/README.md +1 -1
  3. package/config.schema.json +4 -12
  4. package/dist/commands/export-intake-read-helpers.d.ts +1 -1
  5. package/dist/commands/knowledge.js +1 -1
  6. package/dist/commands/knowledge.js.map +1 -1
  7. package/dist/commands/model.d.ts.map +1 -1
  8. package/dist/commands/model.js +5 -5
  9. package/dist/commands/model.js.map +1 -1
  10. package/dist/commands/route.js +4 -4
  11. package/dist/commands/route.js.map +1 -1
  12. package/dist/incur.generated.d.ts +0 -2
  13. package/dist/incur.generated.d.ts.map +1 -1
  14. package/dist/index.d.ts +0 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +0 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/mapbox-route-client.d.ts +17 -0
  19. package/dist/mapbox-route-client.d.ts.map +1 -0
  20. package/dist/mapbox-route-client.js +51 -0
  21. package/dist/mapbox-route-client.js.map +1 -0
  22. package/dist/mapbox-route-contracts.d.ts +277 -0
  23. package/dist/mapbox-route-contracts.d.ts.map +1 -0
  24. package/dist/mapbox-route-contracts.js +145 -0
  25. package/dist/mapbox-route-contracts.js.map +1 -0
  26. package/dist/mapbox-route-directions.d.ts +11 -0
  27. package/dist/mapbox-route-directions.d.ts.map +1 -0
  28. package/dist/mapbox-route-directions.js +55 -0
  29. package/dist/mapbox-route-directions.js.map +1 -0
  30. package/dist/mapbox-route-elevation.d.ts +10 -0
  31. package/dist/mapbox-route-elevation.d.ts.map +1 -0
  32. package/dist/mapbox-route-elevation.js +186 -0
  33. package/dist/mapbox-route-elevation.js.map +1 -0
  34. package/dist/mapbox-route-points.d.ts +14 -0
  35. package/dist/mapbox-route-points.d.ts.map +1 -0
  36. package/dist/mapbox-route-points.js +236 -0
  37. package/dist/mapbox-route-points.js.map +1 -0
  38. package/dist/mapbox-route.d.ts +13 -0
  39. package/dist/mapbox-route.d.ts.map +1 -0
  40. package/dist/mapbox-route.js +119 -0
  41. package/dist/mapbox-route.js.map +1 -0
  42. package/dist/vault-cli-command-manifest.d.ts +20 -13
  43. package/dist/vault-cli-command-manifest.d.ts.map +1 -1
  44. package/dist/vault-cli-command-manifest.js +4 -4
  45. package/dist/vault-cli-command-manifest.js.map +1 -1
  46. package/dist/vault-cli.d.ts.map +1 -1
  47. package/dist/vault-cli.js +7 -1
  48. package/dist/vault-cli.js.map +1 -1
  49. package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts +15 -3
  50. package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts.map +1 -1
  51. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.d.ts.map +1 -1
  52. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.js +1 -0
  53. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.js.map +1 -1
  54. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.d.ts.map +1 -1
  55. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js +10 -15
  56. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js.map +1 -1
  57. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.d.ts +32 -0
  58. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.d.ts.map +1 -0
  59. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.js +93 -0
  60. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.js.map +1 -0
  61. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts +1 -0
  62. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts.map +1 -1
  63. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js +1 -1
  64. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js.map +1 -1
  65. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.d.ts.map +1 -1
  66. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js +6 -25
  67. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js.map +1 -1
  68. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts +0 -1
  69. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts.map +1 -1
  70. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js +19 -23
  71. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js.map +1 -1
  72. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.d.ts.map +1 -1
  73. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.js +17 -11
  74. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.js.map +1 -1
  75. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.d.ts +5 -2
  76. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.d.ts.map +1 -1
  77. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.js +86 -48
  78. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.js.map +1 -1
  79. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js +2 -3
  80. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js.map +1 -1
  81. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.d.ts.map +1 -1
  82. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js +20 -7
  83. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js.map +1 -1
  84. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.d.ts +1 -13
  85. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.d.ts.map +1 -1
  86. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.js +6 -111
  87. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.js.map +1 -1
  88. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.d.ts +1 -0
  89. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.d.ts.map +1 -1
  90. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.js.map +1 -1
  91. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.d.ts.map +1 -1
  92. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.js +11 -4
  93. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.js.map +1 -1
  94. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.d.ts +0 -7
  95. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.d.ts.map +1 -1
  96. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.js +13 -82
  97. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.js.map +1 -1
  98. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.d.ts.map +1 -1
  99. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.js +26 -9
  100. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.js.map +1 -1
  101. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.d.ts.map +1 -1
  102. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js +1 -0
  103. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js.map +1 -1
  104. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.d.ts.map +1 -1
  105. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.js +133 -32
  106. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.js.map +1 -1
  107. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.d.ts.map +1 -1
  108. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.js +6 -1
  109. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.js.map +1 -1
  110. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts +4 -0
  111. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts.map +1 -1
  112. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.d.ts +14 -0
  113. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.d.ts.map +1 -0
  114. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.js +51 -0
  115. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.js.map +1 -0
  116. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js +1 -1
  117. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js.map +1 -1
  118. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts +2 -0
  119. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts.map +1 -1
  120. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts +1 -1
  121. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts.map +1 -1
  122. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js +2 -0
  123. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js.map +1 -1
  124. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.d.ts.map +1 -1
  125. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js +0 -4
  126. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js.map +1 -1
  127. package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts +13 -1
  128. package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts.map +1 -1
  129. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.d.ts.map +1 -1
  130. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js +7 -0
  131. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js.map +1 -1
  132. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts +1 -3
  133. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts.map +1 -1
  134. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js +1 -36
  135. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js.map +1 -1
  136. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.d.ts.map +1 -1
  137. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js +8 -9
  138. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js.map +1 -1
  139. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts +2 -0
  140. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts.map +1 -1
  141. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.js.map +1 -1
  142. package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.d.ts +1 -1
  143. package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.js +1 -1
  144. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts +2 -0
  145. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts.map +1 -1
  146. package/node_modules/@murphai/assistant-engine/dist/assistant/store.js +1 -1
  147. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts +2 -0
  148. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts.map +1 -1
  149. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js +14 -1
  150. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js.map +1 -1
  151. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts +4 -0
  152. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts.map +1 -1
  153. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js +9 -11
  154. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js.map +1 -1
  155. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.d.ts +45 -0
  156. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.d.ts.map +1 -0
  157. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.js +112 -0
  158. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.js.map +1 -0
  159. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.d.ts +22 -0
  160. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.d.ts.map +1 -0
  161. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.js +136 -0
  162. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.js.map +1 -0
  163. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.d.ts +12 -0
  164. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.d.ts.map +1 -0
  165. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.js +248 -0
  166. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.js.map +1 -0
  167. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.d.ts +10 -0
  168. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.d.ts.map +1 -0
  169. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.js +280 -0
  170. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.js.map +1 -0
  171. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.d.ts +18 -0
  172. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.d.ts.map +1 -0
  173. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.js +221 -0
  174. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.js.map +1 -0
  175. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.d.ts +5 -58
  176. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.d.ts.map +1 -1
  177. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.js +11 -859
  178. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.js.map +1 -1
  179. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.d.ts.map +1 -1
  180. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.js +5 -6
  181. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.js.map +1 -1
  182. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.d.ts +19 -25
  183. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.d.ts.map +1 -1
  184. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.js +14 -7
  185. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.js.map +1 -1
  186. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.d.ts +4 -0
  187. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.d.ts.map +1 -1
  188. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.js +88 -20
  189. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.js.map +1 -1
  190. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.d.ts.map +1 -1
  191. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.js +87 -3
  192. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.js.map +1 -1
  193. package/node_modules/@murphai/assistant-engine/dist/assistant-state.d.ts +1 -0
  194. package/node_modules/@murphai/assistant-engine/dist/assistant-state.d.ts.map +1 -1
  195. package/node_modules/@murphai/assistant-engine/dist/assistant-state.js +1 -0
  196. package/node_modules/@murphai/assistant-engine/dist/assistant-state.js.map +1 -1
  197. package/node_modules/@murphai/assistant-engine/dist/index.d.ts +0 -2
  198. package/node_modules/@murphai/assistant-engine/dist/index.d.ts.map +1 -1
  199. package/node_modules/@murphai/assistant-engine/dist/index.js +0 -2
  200. package/node_modules/@murphai/assistant-engine/dist/index.js.map +1 -1
  201. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.d.ts +1 -2
  202. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.d.ts.map +1 -1
  203. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.js +0 -1
  204. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.js.map +1 -1
  205. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.d.ts.map +1 -1
  206. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.js +124 -104
  207. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.js.map +1 -1
  208. package/node_modules/@murphai/assistant-engine/dist/knowledge.d.ts +7 -3
  209. package/node_modules/@murphai/assistant-engine/dist/knowledge.d.ts.map +1 -1
  210. package/node_modules/@murphai/assistant-engine/dist/knowledge.js +7 -2
  211. package/node_modules/@murphai/assistant-engine/dist/knowledge.js.map +1 -1
  212. package/node_modules/@murphai/assistant-engine/dist/model-harness.d.ts +2 -0
  213. package/node_modules/@murphai/assistant-engine/dist/model-harness.d.ts.map +1 -1
  214. package/node_modules/@murphai/assistant-engine/dist/model-harness.js +31 -14
  215. package/node_modules/@murphai/assistant-engine/dist/model-harness.js.map +1 -1
  216. package/node_modules/@murphai/assistant-engine/package.json +2 -2
  217. package/node_modules/@murphai/assistantd/README.md +1 -1
  218. package/node_modules/@murphai/assistantd/dist/config.d.ts.map +1 -1
  219. package/node_modules/@murphai/assistantd/dist/config.js +5 -6
  220. package/node_modules/@murphai/assistantd/dist/config.js.map +1 -1
  221. package/node_modules/@murphai/assistantd/dist/http.d.ts +6 -1
  222. package/node_modules/@murphai/assistantd/dist/http.d.ts.map +1 -1
  223. package/node_modules/@murphai/assistantd/dist/http.js +28 -24
  224. package/node_modules/@murphai/assistantd/dist/http.js.map +1 -1
  225. package/node_modules/@murphai/assistantd/dist/service.d.ts.map +1 -1
  226. package/node_modules/@murphai/assistantd/dist/service.js +2 -1
  227. package/node_modules/@murphai/assistantd/dist/service.js.map +1 -1
  228. package/node_modules/@murphai/assistantd/package.json +1 -1
  229. package/node_modules/@murphai/core/dist/audit.d.ts.map +1 -1
  230. package/node_modules/@murphai/core/dist/audit.js +10 -4
  231. package/node_modules/@murphai/core/dist/audit.js.map +1 -1
  232. package/node_modules/@murphai/core/dist/domains/vault-summary.d.ts.map +1 -1
  233. package/node_modules/@murphai/core/dist/domains/vault-summary.js +48 -38
  234. package/node_modules/@murphai/core/dist/domains/vault-summary.js.map +1 -1
  235. package/node_modules/@murphai/core/dist/index.d.ts +2 -2
  236. package/node_modules/@murphai/core/dist/index.d.ts.map +1 -1
  237. package/node_modules/@murphai/core/dist/index.js +1 -1
  238. package/node_modules/@murphai/core/dist/index.js.map +1 -1
  239. package/node_modules/@murphai/core/dist/jsonl.d.ts +0 -5
  240. package/node_modules/@murphai/core/dist/jsonl.d.ts.map +1 -1
  241. package/node_modules/@murphai/core/dist/jsonl.js +1 -12
  242. package/node_modules/@murphai/core/dist/jsonl.js.map +1 -1
  243. package/node_modules/@murphai/core/dist/memory.d.ts.map +1 -1
  244. package/node_modules/@murphai/core/dist/memory.js +83 -63
  245. package/node_modules/@murphai/core/dist/memory.js.map +1 -1
  246. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.d.ts +38 -0
  247. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.d.ts.map +1 -0
  248. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js +221 -0
  249. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js.map +1 -0
  250. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts +1 -0
  251. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts.map +1 -1
  252. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js +48 -2
  253. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js.map +1 -1
  254. package/node_modules/@murphai/core/dist/operations/index.d.ts +3 -1
  255. package/node_modules/@murphai/core/dist/operations/index.d.ts.map +1 -1
  256. package/node_modules/@murphai/core/dist/operations/index.js +2 -1
  257. package/node_modules/@murphai/core/dist/operations/index.js.map +1 -1
  258. package/node_modules/@murphai/core/dist/operations/write-batch.js +2 -2
  259. package/node_modules/@murphai/core/dist/operations/write-batch.js.map +1 -1
  260. package/node_modules/@murphai/core/dist/preferences.d.ts.map +1 -1
  261. package/node_modules/@murphai/core/dist/preferences.js +71 -86
  262. package/node_modules/@murphai/core/dist/preferences.js.map +1 -1
  263. package/node_modules/@murphai/core/dist/public-mutations.d.ts +3 -3
  264. package/node_modules/@murphai/core/dist/public-mutations.d.ts.map +1 -1
  265. package/node_modules/@murphai/core/dist/public-mutations.js +103 -65
  266. package/node_modules/@murphai/core/dist/public-mutations.js.map +1 -1
  267. package/node_modules/@murphai/core/dist/raw.d.ts +1 -1
  268. package/node_modules/@murphai/core/dist/raw.d.ts.map +1 -1
  269. package/node_modules/@murphai/core/package.json +1 -1
  270. package/node_modules/@murphai/device-syncd/README.md +2 -0
  271. package/node_modules/@murphai/device-syncd/dist/bin.js +73 -15
  272. package/node_modules/@murphai/device-syncd/dist/bin.js.map +1 -1
  273. package/node_modules/@murphai/device-syncd/dist/config.d.ts.map +1 -1
  274. package/node_modules/@murphai/device-syncd/dist/config.js +18 -9
  275. package/node_modules/@murphai/device-syncd/dist/config.js.map +1 -1
  276. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js +2 -26
  277. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js.map +1 -1
  278. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts +5 -0
  279. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts.map +1 -1
  280. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js +48 -8
  281. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js.map +1 -1
  282. package/node_modules/@murphai/device-syncd/dist/http.d.ts +0 -1
  283. package/node_modules/@murphai/device-syncd/dist/http.d.ts.map +1 -1
  284. package/node_modules/@murphai/device-syncd/dist/http.js +65 -52
  285. package/node_modules/@murphai/device-syncd/dist/http.js.map +1 -1
  286. package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts.map +1 -1
  287. package/node_modules/@murphai/device-syncd/dist/providers/oura.js +1 -9
  288. package/node_modules/@murphai/device-syncd/dist/providers/oura.js.map +1 -1
  289. package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts.map +1 -1
  290. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js +1 -12
  291. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js.map +1 -1
  292. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts +2 -3
  293. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts.map +1 -1
  294. package/node_modules/@murphai/device-syncd/dist/public-ingress.js +83 -48
  295. package/node_modules/@murphai/device-syncd/dist/public-ingress.js.map +1 -1
  296. package/node_modules/@murphai/device-syncd/dist/service.d.ts.map +1 -1
  297. package/node_modules/@murphai/device-syncd/dist/service.js +4 -2
  298. package/node_modules/@murphai/device-syncd/dist/service.js.map +1 -1
  299. package/node_modules/@murphai/device-syncd/dist/shared.d.ts +1 -0
  300. package/node_modules/@murphai/device-syncd/dist/shared.d.ts.map +1 -1
  301. package/node_modules/@murphai/device-syncd/dist/shared.js +3 -0
  302. package/node_modules/@murphai/device-syncd/dist/shared.js.map +1 -1
  303. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts +31 -0
  304. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts.map +1 -0
  305. package/node_modules/@murphai/device-syncd/dist/store/jobs.js +207 -0
  306. package/node_modules/@murphai/device-syncd/dist/store/jobs.js.map +1 -0
  307. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts +9 -0
  308. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts.map +1 -0
  309. package/node_modules/@murphai/device-syncd/dist/store/schema.js +116 -0
  310. package/node_modules/@murphai/device-syncd/dist/store/schema.js.map +1 -0
  311. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.d.ts +10 -0
  312. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.d.ts.map +1 -0
  313. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.js +76 -0
  314. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.js.map +1 -0
  315. package/node_modules/@murphai/device-syncd/dist/store.d.ts +2 -6
  316. package/node_modules/@murphai/device-syncd/dist/store.d.ts.map +1 -1
  317. package/node_modules/@murphai/device-syncd/dist/store.js +29 -363
  318. package/node_modules/@murphai/device-syncd/dist/store.js.map +1 -1
  319. package/node_modules/@murphai/device-syncd/dist/types.d.ts +19 -5
  320. package/node_modules/@murphai/device-syncd/dist/types.d.ts.map +1 -1
  321. package/node_modules/@murphai/device-syncd/dist/types.js +4 -1
  322. package/node_modules/@murphai/device-syncd/dist/types.js.map +1 -1
  323. package/node_modules/@murphai/gateway-local/dist/store/schema.d.ts +1 -1
  324. package/node_modules/@murphai/gateway-local/dist/store/schema.js +1 -1
  325. package/node_modules/@murphai/gateway-local/package.json +1 -1
  326. package/node_modules/@murphai/importers/dist/device-providers/garmin.d.ts.map +1 -1
  327. package/node_modules/@murphai/importers/dist/device-providers/garmin.js +9 -4
  328. package/node_modules/@murphai/importers/dist/device-providers/garmin.js.map +1 -1
  329. package/node_modules/@murphai/importers/dist/device-providers/oura.d.ts.map +1 -1
  330. package/node_modules/@murphai/importers/dist/device-providers/oura.js +10 -6
  331. package/node_modules/@murphai/importers/dist/device-providers/oura.js.map +1 -1
  332. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts +8 -1
  333. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts.map +1 -1
  334. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js +94 -3
  335. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js.map +1 -1
  336. package/node_modules/@murphai/importers/dist/device-providers/whoop.d.ts.map +1 -1
  337. package/node_modules/@murphai/importers/dist/device-providers/whoop.js +9 -3
  338. package/node_modules/@murphai/importers/dist/device-providers/whoop.js.map +1 -1
  339. package/node_modules/@murphai/importers/package.json +1 -1
  340. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.d.ts.map +1 -1
  341. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.js +4 -4
  342. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.js.map +1 -1
  343. package/node_modules/@murphai/inbox-services/package.json +1 -1
  344. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.d.ts.map +1 -1
  345. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.js +2 -1
  346. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.js.map +1 -1
  347. package/node_modules/@murphai/inboxd/dist/indexing/persist.d.ts.map +1 -1
  348. package/node_modules/@murphai/inboxd/dist/indexing/persist.js +31 -29
  349. package/node_modules/@murphai/inboxd/dist/indexing/persist.js.map +1 -1
  350. package/node_modules/@murphai/inboxd/package.json +1 -1
  351. package/node_modules/@murphai/messaging-ingress/README.md +6 -0
  352. package/node_modules/@murphai/messaging-ingress/dist/index.d.ts +0 -1
  353. package/node_modules/@murphai/messaging-ingress/dist/index.d.ts.map +1 -1
  354. package/node_modules/@murphai/messaging-ingress/dist/index.js +0 -1
  355. package/node_modules/@murphai/messaging-ingress/dist/index.js.map +1 -1
  356. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.d.ts +116 -0
  357. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.d.ts.map +1 -0
  358. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.js +2 -0
  359. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.js.map +1 -0
  360. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook-payload.d.ts +1 -1
  361. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook-payload.d.ts.map +1 -1
  362. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.d.ts +2 -116
  363. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.d.ts.map +1 -1
  364. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.js +21 -10
  365. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.js.map +1 -1
  366. package/node_modules/@murphai/messaging-ingress/package.json +4 -4
  367. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts +68 -0
  368. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts.map +1 -1
  369. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.js +1 -0
  370. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.js.map +1 -1
  371. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.d.ts +13 -1
  372. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.d.ts.map +1 -1
  373. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.js +63 -14
  374. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.js.map +1 -1
  375. package/node_modules/@murphai/operator-config/dist/assistant/shared.d.ts.map +1 -1
  376. package/node_modules/@murphai/operator-config/dist/assistant/shared.js +5 -13
  377. package/node_modules/@murphai/operator-config/dist/assistant/shared.js.map +1 -1
  378. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts +45 -0
  379. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts.map +1 -0
  380. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js +198 -0
  381. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js.map +1 -0
  382. package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts +26 -0
  383. package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts.map +1 -1
  384. package/node_modules/@murphai/operator-config/dist/assistant-backend.js +6 -0
  385. package/node_modules/@murphai/operator-config/dist/assistant-backend.js.map +1 -1
  386. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts +736 -26
  387. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts.map +1 -1
  388. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js +58 -9
  389. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js.map +1 -1
  390. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.d.ts.map +1 -1
  391. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js +43 -5
  392. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js.map +1 -1
  393. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts +2 -0
  394. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts.map +1 -1
  395. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.js +50 -5
  396. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.js.map +1 -1
  397. package/node_modules/@murphai/operator-config/dist/index.d.ts +0 -1
  398. package/node_modules/@murphai/operator-config/dist/index.d.ts.map +1 -1
  399. package/node_modules/@murphai/operator-config/dist/index.js +0 -1
  400. package/node_modules/@murphai/operator-config/dist/index.js.map +1 -1
  401. package/node_modules/@murphai/operator-config/dist/operator-config.d.ts +53 -1
  402. package/node_modules/@murphai/operator-config/dist/operator-config.d.ts.map +1 -1
  403. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts +40 -2
  404. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts.map +1 -1
  405. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.js +2 -1
  406. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.js.map +1 -1
  407. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts +53 -33
  408. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts.map +1 -1
  409. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js +26 -42
  410. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js.map +1 -1
  411. package/node_modules/@murphai/operator-config/package.json +7 -7
  412. package/node_modules/@murphai/parsers/dist/shared.d.ts +1 -0
  413. package/node_modules/@murphai/parsers/dist/shared.d.ts.map +1 -1
  414. package/node_modules/@murphai/parsers/dist/shared.js +44 -3
  415. package/node_modules/@murphai/parsers/dist/shared.js.map +1 -1
  416. package/node_modules/@murphai/query/dist/index.d.ts +2 -1
  417. package/node_modules/@murphai/query/dist/index.d.ts.map +1 -1
  418. package/node_modules/@murphai/query/dist/index.js +2 -1
  419. package/node_modules/@murphai/query/dist/index.js.map +1 -1
  420. package/node_modules/@murphai/query/dist/knowledge-contracts.d.ts +1 -1
  421. package/node_modules/@murphai/query/dist/knowledge-contracts.d.ts.map +1 -1
  422. package/node_modules/@murphai/query/dist/knowledge-graph.d.ts +0 -29
  423. package/node_modules/@murphai/query/dist/knowledge-graph.d.ts.map +1 -1
  424. package/node_modules/@murphai/query/dist/knowledge-graph.js +1 -7
  425. package/node_modules/@murphai/query/dist/knowledge-graph.js.map +1 -1
  426. package/node_modules/@murphai/query/dist/knowledge-search.d.ts +29 -1
  427. package/node_modules/@murphai/query/dist/knowledge-search.d.ts.map +1 -1
  428. package/node_modules/@murphai/query/dist/knowledge-search.js +5 -0
  429. package/node_modules/@murphai/query/dist/knowledge-search.js.map +1 -1
  430. package/node_modules/@murphai/query/package.json +1 -1
  431. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts +0 -4
  432. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts.map +1 -1
  433. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js +0 -4
  434. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js.map +1 -1
  435. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.d.ts +1 -1
  436. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.js +1 -1
  437. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.d.ts +1 -1
  438. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.js +1 -1
  439. package/node_modules/@murphai/runtime-state/dist/local-state-files.d.ts.map +1 -1
  440. package/node_modules/@murphai/runtime-state/dist/local-state-files.js +20 -8
  441. package/node_modules/@murphai/runtime-state/dist/local-state-files.js.map +1 -1
  442. package/node_modules/@murphai/runtime-state/dist/locks.d.ts.map +1 -1
  443. package/node_modules/@murphai/runtime-state/dist/locks.js +234 -87
  444. package/node_modules/@murphai/runtime-state/dist/locks.js.map +1 -1
  445. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts +19 -0
  446. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts.map +1 -1
  447. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js +106 -9
  448. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js.map +1 -1
  449. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts +1 -0
  450. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts.map +1 -1
  451. package/node_modules/@murphai/runtime-state/dist/node/index.js +1 -0
  452. package/node_modules/@murphai/runtime-state/dist/node/index.js.map +1 -1
  453. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.d.ts +3 -0
  454. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.d.ts.map +1 -0
  455. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.js +20 -0
  456. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.js.map +1 -0
  457. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.d.ts.map +1 -1
  458. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js +2 -0
  459. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js.map +1 -1
  460. package/node_modules/@murphai/setup-cli/dist/setup-assistant.d.ts.map +1 -1
  461. package/node_modules/@murphai/setup-cli/dist/setup-assistant.js +34 -14
  462. package/node_modules/@murphai/setup-cli/dist/setup-assistant.js.map +1 -1
  463. package/node_modules/@murphai/setup-cli/dist/setup-cli.d.ts.map +1 -1
  464. package/node_modules/@murphai/setup-cli/dist/setup-cli.js +8 -17
  465. package/node_modules/@murphai/setup-cli/dist/setup-cli.js.map +1 -1
  466. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.d.ts.map +1 -1
  467. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.js +30 -97
  468. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.js.map +1 -1
  469. package/node_modules/@murphai/setup-cli/dist/setup-services.d.ts.map +1 -1
  470. package/node_modules/@murphai/setup-cli/dist/setup-services.js +7 -1
  471. package/node_modules/@murphai/setup-cli/dist/setup-services.js.map +1 -1
  472. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts +11 -1
  473. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts.map +1 -1
  474. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js +18 -3
  475. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js.map +1 -1
  476. package/node_modules/@murphai/vault-usecases/dist/health-cli-descriptors.d.ts +5 -5
  477. package/node_modules/@murphai/vault-usecases/dist/health-cli-method-types.d.ts +2 -2
  478. package/node_modules/@murphai/vault-usecases/dist/health-cli-method-types.d.ts.map +1 -1
  479. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts +5 -5
  480. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts.map +1 -1
  481. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js +5 -2
  482. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js.map +1 -1
  483. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts +2 -36
  484. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts.map +1 -1
  485. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js +15 -3
  486. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js.map +1 -1
  487. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.d.ts.map +1 -1
  488. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js +86 -5
  489. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js.map +1 -1
  490. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts +1 -14
  491. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts.map +1 -1
  492. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js +3 -3
  493. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js.map +1 -1
  494. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts +2 -34
  495. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts.map +1 -1
  496. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js +18 -4
  497. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js.map +1 -1
  498. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts +1 -14
  499. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts.map +1 -1
  500. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js +3 -3
  501. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js.map +1 -1
  502. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts +10 -11
  503. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts.map +1 -1
  504. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js +44 -2
  505. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js.map +1 -1
  506. package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts +7 -7
  507. package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts.map +1 -1
  508. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts +1 -44
  509. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts.map +1 -1
  510. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.js +28 -2
  511. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.js.map +1 -1
  512. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts +5 -5
  513. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts.map +1 -1
  514. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js +5 -2
  515. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js.map +1 -1
  516. package/node_modules/@murphai/vault-usecases/package.json +1 -1
  517. package/package.json +4 -4
  518. package/dist/knowledge-cli-contracts.d.ts +0 -3
  519. package/dist/knowledge-cli-contracts.d.ts.map +0 -1
  520. package/dist/knowledge-cli-contracts.js +0 -2
  521. package/dist/knowledge-cli-contracts.js.map +0 -1
  522. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.d.ts +0 -2
  523. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.d.ts.map +0 -1
  524. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.js +0 -2
  525. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.js.map +0 -1
  526. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.d.ts +0 -142
  527. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.d.ts.map +0 -1
  528. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.js +0 -670
  529. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.js.map +0 -1
  530. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.d.ts +0 -86
  531. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.d.ts.map +0 -1
  532. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.js +0 -2
  533. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.js.map +0 -1
@@ -1,54 +1,13 @@
1
- import { lookup } from 'node:dns/promises';
2
- import { request as requestHttp } from 'node:http';
3
- import { request as requestHttps } from 'node:https';
4
- import { BlockList, isIP } from 'node:net';
5
- import { Readable } from 'node:stream';
6
- import { urlToHttpOptions } from 'node:url';
7
- import { createBrotliDecompress, createUnzip } from 'node:zlib';
8
- import { Readability } from '@mozilla/readability';
9
- import { DOMParser } from 'linkedom';
10
1
  import { createTimeoutAbortController } from '@murphai/operator-config/http-retry';
11
2
  import { VaultCliError } from '@murphai/operator-config/vault-cli-errors';
12
- import { errorMessage, normalizeNullableString, } from './shared.js';
13
- export const assistantWebFetchExtractModeValues = [
14
- 'markdown',
15
- 'text',
16
- ];
17
- export const assistantWebFetchEnvKeys = [
18
- 'MURPH_WEB_FETCH_ENABLED',
19
- 'MURPH_WEB_FETCH_MAX_CHARS',
20
- 'MURPH_WEB_FETCH_MAX_RESPONSE_BYTES',
21
- 'MURPH_WEB_FETCH_TIMEOUT_MS',
22
- 'MURPH_WEB_FETCH_MAX_REDIRECTS',
23
- ];
24
- const ASSISTANT_WEB_FETCH_DEFAULT_MAX_CHARS = 12_000;
25
- const ASSISTANT_WEB_FETCH_MAX_CHARS = 40_000;
26
- const ASSISTANT_WEB_FETCH_DEFAULT_MAX_RESPONSE_BYTES = 1_000_000;
27
- const ASSISTANT_WEB_FETCH_MAX_RESPONSE_BYTES = 5_000_000;
28
- const ASSISTANT_WEB_FETCH_DEFAULT_TIMEOUT_MS = 15_000;
29
- const ASSISTANT_WEB_FETCH_MIN_TIMEOUT_MS = 1_000;
30
- const ASSISTANT_WEB_FETCH_MAX_TIMEOUT_MS = 60_000;
31
- const ASSISTANT_WEB_FETCH_DEFAULT_MAX_REDIRECTS = 5;
32
- const ASSISTANT_WEB_FETCH_MAX_REDIRECTS = 10;
33
- const ASSISTANT_WEB_FETCH_BLOCKED_HOSTNAMES = [
34
- 'home.arpa',
35
- 'localhost',
36
- 'localhost.localdomain',
37
- ];
38
- const ASSISTANT_WEB_FETCH_DEFAULT_ACCEPT_HEADER = 'text/html, application/xhtml+xml, application/json, text/plain;q=0.9, */*;q=0.1';
39
- const ASSISTANT_WEB_FETCH_TEXT_NODE = 3;
40
- const ASSISTANT_WEB_FETCH_ELEMENT_NODE = 1;
41
- const assistantWebFetchBlockedAddressList = createAssistantWebFetchBlockedAddressList();
42
- export function resolveAssistantWebFetchEnabled(env = process.env) {
43
- if (typeof globalThis.Headers !== 'function' || typeof globalThis.Response !== 'function') {
44
- return false;
45
- }
46
- const raw = normalizeNullableString(env.MURPH_WEB_FETCH_ENABLED);
47
- if (!raw) {
48
- return false;
49
- }
50
- return ['1', 'true', 'yes', 'on', 'enabled'].includes(raw.toLowerCase());
51
- }
3
+ import { normalizeNullableString } from './shared.js';
4
+ import { createAssistantWebFetchRuntimeContext, normalizeAssistantWebRequestUrl, resolveAssistantWebFetchMaxChars, } from './web-fetch/config.js';
5
+ import { fetchAssistantWebResponse, redactAssistantWebFetchUrl, } from './web-fetch/network.js';
6
+ import { extractAssistantWebResponse, resolveAssistantWebMediaType, } from './web-fetch/content.js';
7
+ export { assistantWebFetchEnvKeys, assistantWebFetchExtractModeValues, createAssistantWebFetchRuntimeContext, normalizeAssistantWebHostname, normalizeAssistantWebRequestUrl, resolveAssistantWebFetchEnabled, resolveAssistantWebFetchMaxChars, } from './web-fetch/config.js';
8
+ export { fetchAssistantWebResponse, redactAssistantWebFetchUrl, } from './web-fetch/network.js';
9
+ export { readAssistantWebResponseBytes, readAssistantWebResponseText, } from './web-fetch/response.js';
10
+ export { resolveAssistantWebMediaType, truncateAssistantWebText, } from './web-fetch/content.js';
52
11
  export async function fetchAssistantWeb(request, env = process.env) {
53
12
  const normalizedRequest = normalizeAssistantWebFetchRequest(request, env);
54
13
  const runtime = createAssistantWebFetchRuntimeContext(env);
@@ -64,6 +23,7 @@ export async function fetchAssistantWeb(request, env = process.env) {
64
23
  const extracted = await extractAssistantWebResponse({
65
24
  contentType,
66
25
  extractMode: normalizedRequest.extractMode,
26
+ finalUrl: fetched.finalUrl,
67
27
  maxChars: normalizedRequest.maxChars,
68
28
  maxResponseBytes: runtime.maxResponseBytes,
69
29
  response: fetched.response,
@@ -105,21 +65,16 @@ function normalizeAssistantWebFetchRequest(request, env) {
105
65
  }
106
66
  let parsedUrl;
107
67
  try {
108
- parsedUrl = new URL(url);
68
+ parsedUrl = normalizeAssistantWebRequestUrl(url);
109
69
  }
110
70
  catch {
111
71
  throw new VaultCliError('WEB_FETCH_URL_INVALID', 'web.fetch requires a valid absolute URL.');
112
72
  }
113
- parsedUrl.hash = '';
114
- const normalizedHostname = normalizeAssistantWebHostname(parsedUrl.hostname);
115
- if (normalizedHostname) {
116
- parsedUrl.hostname = normalizedHostname;
117
- }
118
73
  const extractMode = isAssistantWebFetchExtractMode(request.extractMode)
119
74
  ? request.extractMode
120
75
  : 'markdown';
121
76
  const configuredMaxChars = resolveAssistantWebFetchMaxChars(env);
122
- const maxChars = Math.max(1, Math.min(Math.trunc(request.maxChars ?? configuredMaxChars), configuredMaxChars, ASSISTANT_WEB_FETCH_MAX_CHARS));
77
+ const maxChars = Math.max(1, Math.min(Math.trunc(request.maxChars ?? configuredMaxChars), configuredMaxChars));
123
78
  return {
124
79
  url: parsedUrl,
125
80
  extractMode,
@@ -127,810 +82,7 @@ function normalizeAssistantWebFetchRequest(request, env) {
127
82
  signal: request.signal,
128
83
  };
129
84
  }
130
- export function createAssistantWebFetchRuntimeContext(env) {
131
- if (!resolveAssistantWebFetchEnabled(env)) {
132
- throw new VaultCliError('WEB_FETCH_DISABLED', 'web.fetch is disabled in this runtime.');
133
- }
134
- return {
135
- lookupImplementation: lookup,
136
- timeoutMs: resolveAssistantWebFetchTimeoutMs(env),
137
- maxResponseBytes: resolveAssistantWebFetchMaxResponseBytes(env),
138
- maxRedirects: resolveAssistantWebFetchMaxRedirects(env),
139
- };
140
- }
141
- export async function fetchAssistantWebResponse(input) {
142
- let currentUrl = input.url;
143
- const warnings = [];
144
- for (let redirectCount = 0;; redirectCount += 1) {
145
- const resolvedTarget = await resolveAssistantWebPublicTarget(currentUrl, input.runtime.lookupImplementation, input.toolName);
146
- let response;
147
- try {
148
- response = await requestAssistantWebResponseAtPublicTarget({
149
- acceptHeader: input.acceptHeader ?? ASSISTANT_WEB_FETCH_DEFAULT_ACCEPT_HEADER,
150
- resolvedTarget,
151
- signal: input.signal,
152
- url: currentUrl,
153
- });
154
- }
155
- catch (error) {
156
- throw new VaultCliError('WEB_FETCH_REQUEST_FAILED', `${input.toolName} could not reach ${redactAssistantWebFetchUrl(currentUrl)}: ${errorMessage(error)}`);
157
- }
158
- if (!isAssistantWebRedirectStatus(response.status)) {
159
- return {
160
- finalUrl: currentUrl,
161
- response,
162
- warnings,
163
- };
164
- }
165
- const location = normalizeNullableString(response.headers.get('location'));
166
- if (!location) {
167
- await cancelAssistantWebResponseBody(response);
168
- throw new VaultCliError('WEB_FETCH_REDIRECT_INVALID', `${input.toolName} received HTTP ${response.status} without a redirect location.`);
169
- }
170
- if (redirectCount >= input.runtime.maxRedirects) {
171
- await cancelAssistantWebResponseBody(response);
172
- throw new VaultCliError('WEB_FETCH_REDIRECT_LIMIT', `${input.toolName} followed too many redirects (>${input.runtime.maxRedirects}).`);
173
- }
174
- const nextUrl = new URL(location, currentUrl);
175
- nextUrl.hash = '';
176
- warnings.push(`Followed redirect ${redirectCount + 1} to ${redactAssistantWebFetchUrl(nextUrl)}.`);
177
- await cancelAssistantWebResponseBody(response);
178
- currentUrl = nextUrl;
179
- }
180
- }
181
- async function resolveAssistantWebPublicTarget(candidateUrl, lookupImplementation, toolName) {
182
- const protocol = candidateUrl.protocol.toLowerCase();
183
- if (protocol !== 'http:' && protocol !== 'https:') {
184
- throw new VaultCliError('WEB_FETCH_URL_UNSUPPORTED_SCHEME', `${toolName} only supports http:// and https:// URLs.`);
185
- }
186
- if (candidateUrl.username || candidateUrl.password) {
187
- throw new VaultCliError('WEB_FETCH_URL_CREDENTIALS_FORBIDDEN', `${toolName} does not allow credentials in URLs.`);
188
- }
189
- const hostname = normalizeAssistantWebHostname(candidateUrl.hostname);
190
- if (!hostname) {
191
- throw new VaultCliError('WEB_FETCH_HOST_INVALID', `${toolName} requires a URL with a hostname.`);
192
- }
193
- if (isAssistantWebBlockedHostname(hostname)) {
194
- throw new VaultCliError('WEB_FETCH_PRIVATE_HOST_BLOCKED', `${toolName} blocked ${hostname} because private or loopback hosts are not allowed.`);
195
- }
196
- const hostAddressFamily = isIP(hostname);
197
- if (hostAddressFamily !== 0) {
198
- if (isAssistantWebBlockedIpAddress(hostname, hostAddressFamily)) {
199
- throw new VaultCliError('WEB_FETCH_PRIVATE_HOST_BLOCKED', `${toolName} blocked ${hostname} because private or loopback hosts are not allowed.`);
200
- }
201
- return {
202
- hostname,
203
- addresses: [
204
- {
205
- address: hostname,
206
- family: hostAddressFamily,
207
- },
208
- ],
209
- };
210
- }
211
- let resolvedAddresses;
212
- try {
213
- resolvedAddresses = await lookupAllAssistantWebAddresses(lookupImplementation, hostname);
214
- }
215
- catch (error) {
216
- throw new VaultCliError('WEB_FETCH_DNS_LOOKUP_FAILED', `${toolName} could not resolve ${hostname}: ${errorMessage(error)}`);
217
- }
218
- if (resolvedAddresses.length === 0) {
219
- throw new VaultCliError('WEB_FETCH_DNS_LOOKUP_FAILED', `${toolName} could not resolve ${hostname} to any IP address.`);
220
- }
221
- for (const address of resolvedAddresses) {
222
- if (isAssistantWebBlockedIpAddress(address.address, address.family)) {
223
- throw new VaultCliError('WEB_FETCH_PRIVATE_HOST_BLOCKED', `${toolName} blocked ${hostname} because it resolved to a private or loopback address.`);
224
- }
225
- }
226
- return {
227
- hostname,
228
- addresses: resolvedAddresses,
229
- };
230
- }
231
- async function extractAssistantWebResponse(input) {
232
- if (input.contentType === 'application/pdf') {
233
- await cancelAssistantWebResponseBody(input.response);
234
- throw new VaultCliError('WEB_FETCH_PDF_UNSUPPORTED', 'web.fetch does not parse PDFs. Use web.pdf.read for PDF content.');
235
- }
236
- if (isAssistantWebLikelyBinaryContentType(input.contentType)) {
237
- await cancelAssistantWebResponseBody(input.response);
238
- throw new VaultCliError('WEB_FETCH_CONTENT_TYPE_UNSUPPORTED', `web.fetch cannot extract readable text from ${input.contentType}.`);
239
- }
240
- const responseText = await readAssistantWebResponseText({
241
- response: input.response,
242
- maxResponseBytes: input.maxResponseBytes,
243
- });
244
- const warnings = [...responseText.warnings];
245
- let title = null;
246
- let text = responseText.text;
247
- let extractor = 'raw-text';
248
- if (isAssistantWebHtmlContentType(input.contentType)) {
249
- const extractedHtml = extractAssistantWebHtml({
250
- extractMode: input.extractMode,
251
- html: responseText.text,
252
- });
253
- title = extractedHtml.title;
254
- text = extractedHtml.text;
255
- extractor = extractedHtml.extractor;
256
- warnings.push(...extractedHtml.warnings);
257
- }
258
- else if (isAssistantWebJsonContentType(input.contentType)) {
259
- extractor = 'json';
260
- const normalizedJson = normalizeAssistantWebJsonText(responseText.text);
261
- text = normalizedJson.text;
262
- warnings.push(...normalizedJson.warnings);
263
- }
264
- const truncated = responseText.truncated;
265
- const bounded = truncateAssistantWebText(text, input.maxChars);
266
- if (bounded.truncated) {
267
- warnings.push(`Trimmed extracted content to ${input.maxChars} characters for model safety.`);
268
- }
269
- return {
270
- extractor,
271
- title,
272
- text: bounded.text,
273
- truncated: truncated || bounded.truncated,
274
- warnings,
275
- };
276
- }
277
- async function readAssistantWebResponseText(input) {
278
- const body = await readAssistantWebResponseBytes(input);
279
- const decoder = new TextDecoder();
280
- return {
281
- text: decoder.decode(body.bytes),
282
- truncated: body.truncated,
283
- warnings: body.warnings,
284
- };
285
- }
286
- export async function readAssistantWebResponseBytes(input) {
287
- const warnings = [];
288
- const contentLength = parsePositiveInteger(input.response.headers.get('content-length'));
289
- if (contentLength !== null &&
290
- contentLength > input.maxResponseBytes) {
291
- warnings.push(`Response declared ${contentLength} bytes; reading only the first ${input.maxResponseBytes} bytes.`);
292
- }
293
- if (!input.response.body) {
294
- return {
295
- bytes: new Uint8Array(),
296
- truncated: false,
297
- warnings,
298
- };
299
- }
300
- const reader = input.response.body.getReader();
301
- let totalBytes = 0;
302
- const chunks = [];
303
- let truncated = false;
304
- while (true) {
305
- const { done, value } = await reader.read();
306
- if (done) {
307
- break;
308
- }
309
- if (!value || value.length === 0) {
310
- continue;
311
- }
312
- const remainingBytes = input.maxResponseBytes - totalBytes;
313
- if (remainingBytes <= 0) {
314
- truncated = true;
315
- break;
316
- }
317
- const chunk = value.length > remainingBytes
318
- ? value.subarray(0, remainingBytes)
319
- : value;
320
- totalBytes += chunk.length;
321
- chunks.push(chunk);
322
- if (value.length > remainingBytes) {
323
- truncated = true;
324
- break;
325
- }
326
- }
327
- if (truncated) {
328
- warnings.push(`Response body exceeded ${input.maxResponseBytes} bytes and was truncated.`);
329
- try {
330
- await reader.cancel();
331
- }
332
- catch {
333
- // Ignore cancellation failures after truncation.
334
- }
335
- }
336
- return {
337
- bytes: concatAssistantWebResponseBytes(chunks, totalBytes),
338
- truncated,
339
- warnings,
340
- };
341
- }
342
- function extractAssistantWebHtml(input) {
343
- const document = parseAssistantHtmlDocument(input.html);
344
- const article = parseAssistantHtmlWithReadability(document);
345
- const warnings = [];
346
- if (article) {
347
- const articleText = normalizeAssistantText(article.textContent ?? '');
348
- const markdownText = normalizeAssistantMarkdown(renderAssistantHtmlToMarkdown(parseAssistantHtmlFragment(normalizeNullableString(article.content) ?? '')));
349
- if (input.extractMode === 'markdown' && markdownText.length === 0 && articleText.length > 0) {
350
- warnings.push('Readable article markdown conversion was empty; falling back to normalized article text.');
351
- }
352
- return {
353
- extractor: 'readability',
354
- title: normalizeNullableString(article.title) ??
355
- resolveAssistantHtmlDocumentTitle(document),
356
- text: input.extractMode === 'markdown'
357
- ? (markdownText || articleText)
358
- : articleText,
359
- warnings,
360
- };
361
- }
362
- warnings.push('Readable article extraction failed; falling back to a simpler HTML cleanup path.');
363
- const fallbackText = normalizeAssistantText(document.body?.textContent ?? '');
364
- const fallbackMarkdown = normalizeAssistantMarkdown(renderAssistantHtmlToMarkdown(document));
365
- if (input.extractMode === 'markdown' && fallbackMarkdown.length === 0 && fallbackText.length > 0) {
366
- warnings.push('Fallback HTML markdown conversion was empty; returning normalized page text instead.');
367
- }
368
- return {
369
- extractor: 'raw-html',
370
- title: resolveAssistantHtmlDocumentTitle(document),
371
- text: input.extractMode === 'markdown'
372
- ? (fallbackMarkdown || fallbackText)
373
- : fallbackText,
374
- warnings,
375
- };
376
- }
377
- function normalizeAssistantWebJsonText(input) {
378
- try {
379
- return {
380
- text: `${JSON.stringify(JSON.parse(input), null, 2)}\n`,
381
- warnings: [],
382
- };
383
- }
384
- catch {
385
- return {
386
- text: normalizeAssistantText(input),
387
- warnings: [
388
- 'Response declared JSON but could not be parsed cleanly; returning normalized text instead.',
389
- ],
390
- };
391
- }
392
- }
393
- function parseAssistantHtmlDocument(html) {
394
- const document = new DOMParser().parseFromString(html, 'text/html');
395
- for (const element of document.querySelectorAll('script, style, noscript, iframe, svg, canvas, form')) {
396
- element.remove();
397
- }
398
- return document;
399
- }
400
- function parseAssistantHtmlFragment(htmlFragment) {
401
- return parseAssistantHtmlDocument(`<!doctype html><html><body>${htmlFragment}</body></html>`);
402
- }
403
- function renderAssistantHtmlToMarkdown(document) {
404
- return normalizeAssistantMarkdown(renderAssistantNodeToMarkdown(document.body));
405
- }
406
- function renderAssistantNodeToMarkdown(node) {
407
- if (!node) {
408
- return '';
409
- }
410
- if (node.nodeType === ASSISTANT_WEB_FETCH_TEXT_NODE) {
411
- return escapeAssistantMarkdownText(node.textContent ?? '');
412
- }
413
- if (node.nodeType !== ASSISTANT_WEB_FETCH_ELEMENT_NODE) {
414
- return '';
415
- }
416
- const tagName = node.nodeName.toLowerCase();
417
- const childText = renderAssistantChildrenToMarkdown(node);
418
- switch (tagName) {
419
- case 'body':
420
- case 'main':
421
- case 'article':
422
- case 'section':
423
- case 'header':
424
- case 'footer':
425
- case 'nav':
426
- case 'aside':
427
- case 'div':
428
- return `${childText}\n\n`;
429
- case 'h1':
430
- case 'h2':
431
- case 'h3':
432
- case 'h4':
433
- case 'h5':
434
- case 'h6': {
435
- const level = Math.max(1, Math.min(Number(tagName.slice(1)) || 1, 6));
436
- const heading = normalizeAssistantText(childText);
437
- return heading ? `${'#'.repeat(level)} ${heading}\n\n` : '';
438
- }
439
- case 'p':
440
- return childText.trim() ? `${childText.trim()}\n\n` : '';
441
- case 'br':
442
- return '\n';
443
- case 'hr':
444
- return '\n---\n\n';
445
- case 'ul':
446
- case 'ol':
447
- return `${renderAssistantListToMarkdown(node, tagName === 'ol')}\n`;
448
- case 'li': {
449
- const text = normalizeAssistantMarkdownInline(childText);
450
- return text ? `${text}\n` : '';
451
- }
452
- case 'pre': {
453
- const code = normalizeTrailingWhitespace(node.textContent ?? '');
454
- return code ? `\n\`\`\`\n${code}\n\`\`\`\n\n` : '';
455
- }
456
- case 'code': {
457
- const text = normalizeAssistantText(node.textContent ?? '');
458
- return text ? `\`${text}\`` : '';
459
- }
460
- case 'a': {
461
- const text = normalizeAssistantMarkdownInline(childText);
462
- const href = normalizeNullableString(node.getAttribute?.('href') ?? null);
463
- if (!text) {
464
- return '';
465
- }
466
- if (!href) {
467
- return text;
468
- }
469
- return `[${text}](${href})`;
470
- }
471
- case 'strong':
472
- case 'b': {
473
- const text = normalizeAssistantMarkdownInline(childText);
474
- return text ? `**${text}**` : '';
475
- }
476
- case 'em':
477
- case 'i': {
478
- const text = normalizeAssistantMarkdownInline(childText);
479
- return text ? `_${text}_` : '';
480
- }
481
- case 'blockquote': {
482
- const lines = normalizeAssistantText(childText)
483
- .split('\n')
484
- .filter((line) => line.length > 0);
485
- return lines.length > 0
486
- ? `${lines.map((line) => `> ${line}`).join('\n')}\n\n`
487
- : '';
488
- }
489
- case 'table':
490
- return `${normalizeAssistantText(childText)}\n\n`;
491
- default:
492
- return childText;
493
- }
494
- }
495
- function renderAssistantChildrenToMarkdown(node) {
496
- if (!node.childNodes || node.childNodes.length === 0) {
497
- return '';
498
- }
499
- let markdown = '';
500
- for (const childNode of Array.from(node.childNodes)) {
501
- markdown += renderAssistantNodeToMarkdown(childNode);
502
- }
503
- return markdown;
504
- }
505
- function renderAssistantListToMarkdown(node, ordered) {
506
- if (!node.childNodes || node.childNodes.length === 0) {
507
- return '';
508
- }
509
- let markdown = '';
510
- let orderedListIndex = 1;
511
- for (const childNode of Array.from(node.childNodes)) {
512
- if (childNode.nodeType !== ASSISTANT_WEB_FETCH_ELEMENT_NODE) {
513
- continue;
514
- }
515
- if (childNode.nodeName.toLowerCase() !== 'li') {
516
- markdown += renderAssistantNodeToMarkdown(childNode);
517
- continue;
518
- }
519
- const itemText = normalizeAssistantMarkdownInline(renderAssistantChildrenToMarkdown(childNode));
520
- if (!itemText) {
521
- continue;
522
- }
523
- markdown += ordered
524
- ? `${orderedListIndex}. ${itemText}\n`
525
- : `- ${itemText}\n`;
526
- orderedListIndex += 1;
527
- }
528
- return markdown;
529
- }
530
- export function truncateAssistantWebText(input, maxChars) {
531
- if (input.length <= maxChars) {
532
- return {
533
- text: input,
534
- truncated: false,
535
- };
536
- }
537
- return {
538
- text: input.slice(0, maxChars).trimEnd(),
539
- truncated: true,
540
- };
541
- }
542
- function resolveAssistantWebFetchMaxChars(env) {
543
- return readAssistantBoundedIntegerEnv({
544
- env,
545
- key: 'MURPH_WEB_FETCH_MAX_CHARS',
546
- fallback: ASSISTANT_WEB_FETCH_DEFAULT_MAX_CHARS,
547
- min: 1,
548
- max: ASSISTANT_WEB_FETCH_MAX_CHARS,
549
- });
550
- }
551
- function resolveAssistantWebFetchMaxResponseBytes(env) {
552
- return readAssistantBoundedIntegerEnv({
553
- env,
554
- key: 'MURPH_WEB_FETCH_MAX_RESPONSE_BYTES',
555
- fallback: ASSISTANT_WEB_FETCH_DEFAULT_MAX_RESPONSE_BYTES,
556
- min: 16_384,
557
- max: ASSISTANT_WEB_FETCH_MAX_RESPONSE_BYTES,
558
- });
559
- }
560
- function resolveAssistantWebFetchTimeoutMs(env) {
561
- return readAssistantBoundedIntegerEnv({
562
- env,
563
- key: 'MURPH_WEB_FETCH_TIMEOUT_MS',
564
- fallback: ASSISTANT_WEB_FETCH_DEFAULT_TIMEOUT_MS,
565
- min: ASSISTANT_WEB_FETCH_MIN_TIMEOUT_MS,
566
- max: ASSISTANT_WEB_FETCH_MAX_TIMEOUT_MS,
567
- });
568
- }
569
- function resolveAssistantWebFetchMaxRedirects(env) {
570
- return readAssistantBoundedIntegerEnv({
571
- env,
572
- key: 'MURPH_WEB_FETCH_MAX_REDIRECTS',
573
- fallback: ASSISTANT_WEB_FETCH_DEFAULT_MAX_REDIRECTS,
574
- min: 0,
575
- max: ASSISTANT_WEB_FETCH_MAX_REDIRECTS,
576
- });
577
- }
578
- function readAssistantBoundedIntegerEnv(input) {
579
- const raw = normalizeNullableString(input.env[input.key]);
580
- if (!raw) {
581
- return input.fallback;
582
- }
583
- const numeric = Number(raw);
584
- if (!Number.isFinite(numeric)) {
585
- return input.fallback;
586
- }
587
- return Math.max(input.min, Math.min(Math.trunc(numeric), input.max));
588
- }
589
- export function resolveAssistantWebMediaType(contentType) {
590
- const normalized = normalizeNullableString(contentType);
591
- if (!normalized) {
592
- return null;
593
- }
594
- return normalized.split(';', 1)[0]?.trim().toLowerCase() ?? null;
595
- }
596
- function parsePositiveInteger(value) {
597
- const normalized = normalizeNullableString(value);
598
- if (!normalized) {
599
- return null;
600
- }
601
- const parsed = Number(normalized);
602
- if (!Number.isFinite(parsed) || parsed <= 0) {
603
- return null;
604
- }
605
- return Math.trunc(parsed);
606
- }
607
- function concatAssistantWebResponseBytes(chunks, totalBytes) {
608
- if (chunks.length === 0) {
609
- return new Uint8Array();
610
- }
611
- if (chunks.length === 1) {
612
- return chunks[0] ?? new Uint8Array();
613
- }
614
- const bytes = new Uint8Array(totalBytes);
615
- let offset = 0;
616
- for (const chunk of chunks) {
617
- bytes.set(chunk, offset);
618
- offset += chunk.length;
619
- }
620
- return bytes;
621
- }
622
- function isAssistantWebRedirectStatus(status) {
623
- return status === 301 ||
624
- status === 302 ||
625
- status === 303 ||
626
- status === 307 ||
627
- status === 308;
628
- }
629
85
  function isAssistantWebFetchExtractMode(value) {
630
86
  return value === 'markdown' || value === 'text';
631
87
  }
632
- function isAssistantWebHtmlContentType(contentType) {
633
- return contentType === 'text/html' || contentType === 'application/xhtml+xml';
634
- }
635
- function isAssistantWebJsonContentType(contentType) {
636
- return contentType === 'application/json' ||
637
- Boolean(contentType?.endsWith('+json'));
638
- }
639
- function isAssistantWebLikelyBinaryContentType(contentType) {
640
- if (!contentType) {
641
- return false;
642
- }
643
- if (contentType.startsWith('text/') ||
644
- isAssistantWebHtmlContentType(contentType) ||
645
- isAssistantWebJsonContentType(contentType) ||
646
- contentType === 'application/xml' ||
647
- contentType.endsWith('+xml') ||
648
- contentType === 'image/svg+xml') {
649
- return false;
650
- }
651
- return contentType.startsWith('image/') ||
652
- contentType.startsWith('audio/') ||
653
- contentType.startsWith('video/') ||
654
- contentType === 'application/octet-stream' ||
655
- contentType === 'application/pdf' ||
656
- contentType === 'application/zip';
657
- }
658
- function isAssistantWebBlockedHostname(hostname) {
659
- if (ASSISTANT_WEB_FETCH_BLOCKED_HOSTNAMES.some((blocked) => blocked === hostname)) {
660
- return true;
661
- }
662
- return hostname.endsWith('.localhost') ||
663
- hostname.endsWith('.local') ||
664
- hostname.endsWith('.home.arpa');
665
- }
666
- function isAssistantWebBlockedIpAddress(address, family) {
667
- if (family === 4) {
668
- return assistantWebFetchBlockedAddressList.check(address, 'ipv4');
669
- }
670
- if (family === 6) {
671
- const mappedIpv4 = resolveAssistantWebIpv4MappedAddress(address);
672
- if (mappedIpv4) {
673
- return assistantWebFetchBlockedAddressList.check(mappedIpv4, 'ipv4');
674
- }
675
- return assistantWebFetchBlockedAddressList.check(address, 'ipv6');
676
- }
677
- return false;
678
- }
679
- function normalizeAssistantWebHostname(value) {
680
- const normalized = normalizeNullableString(value)?.toLowerCase();
681
- if (!normalized) {
682
- return null;
683
- }
684
- const unwrapped = normalized.startsWith('[') && normalized.endsWith(']')
685
- ? normalized.slice(1, -1)
686
- : normalized;
687
- const trimmed = unwrapped.replace(/\.+$/u, '');
688
- return trimmed.length > 0 ? trimmed : null;
689
- }
690
- function resolveAssistantWebIpv4MappedAddress(address) {
691
- const normalized = address.toLowerCase();
692
- if (!normalized.startsWith('::ffff:')) {
693
- return null;
694
- }
695
- const suffix = normalized.slice('::ffff:'.length);
696
- if (isIP(suffix) === 4) {
697
- return suffix;
698
- }
699
- const parts = suffix.split(':');
700
- if (parts.length !== 2 ||
701
- !parts.every((part) => /^[0-9a-f]{1,4}$/u.test(part))) {
702
- return null;
703
- }
704
- const left = Number.parseInt(parts[0] ?? '', 16);
705
- const right = Number.parseInt(parts[1] ?? '', 16);
706
- if (!Number.isFinite(left) || !Number.isFinite(right)) {
707
- return null;
708
- }
709
- return [
710
- (left >> 8) & 0xff,
711
- left & 0xff,
712
- (right >> 8) & 0xff,
713
- right & 0xff,
714
- ].join('.');
715
- }
716
- function createAssistantWebFetchBlockedAddressList() {
717
- const blockList = new BlockList();
718
- blockList.addSubnet('0.0.0.0', 8);
719
- blockList.addSubnet('10.0.0.0', 8);
720
- blockList.addSubnet('100.64.0.0', 10);
721
- blockList.addSubnet('127.0.0.0', 8);
722
- blockList.addSubnet('169.254.0.0', 16);
723
- blockList.addSubnet('172.16.0.0', 12);
724
- blockList.addSubnet('192.0.0.0', 24);
725
- blockList.addSubnet('192.168.0.0', 16);
726
- blockList.addSubnet('198.18.0.0', 15);
727
- blockList.addSubnet('224.0.0.0', 4);
728
- blockList.addSubnet('240.0.0.0', 4);
729
- blockList.addSubnet('::', 128, 'ipv6');
730
- blockList.addSubnet('::ffff:0:0', 96, 'ipv6');
731
- blockList.addSubnet('::1', 128, 'ipv6');
732
- blockList.addSubnet('fc00::', 7, 'ipv6');
733
- blockList.addSubnet('fe80::', 10, 'ipv6');
734
- blockList.addSubnet('ff00::', 8, 'ipv6');
735
- return blockList;
736
- }
737
- export function redactAssistantWebFetchUrl(url) {
738
- return `${url.origin}${url.pathname}`;
739
- }
740
- async function requestAssistantWebResponseAtPublicTarget(input) {
741
- const failures = [];
742
- for (const address of input.resolvedTarget.addresses) {
743
- try {
744
- return await requestAssistantWebResponseAtAddress({
745
- acceptHeader: input.acceptHeader,
746
- address,
747
- hostname: input.resolvedTarget.hostname,
748
- signal: input.signal,
749
- url: input.url,
750
- });
751
- }
752
- catch (error) {
753
- if (input.signal.aborted || isAssistantWebAbortError(error)) {
754
- throw error;
755
- }
756
- failures.push(errorMessage(error));
757
- }
758
- }
759
- throw new Error(failures.length > 0
760
- ? `All vetted public addresses failed: ${failures.join('; ')}`
761
- : 'All vetted public addresses failed.');
762
- }
763
- async function requestAssistantWebResponseAtAddress(input) {
764
- const options = {
765
- ...urlToHttpOptions(input.url),
766
- method: 'GET',
767
- headers: {
768
- accept: input.acceptHeader,
769
- 'accept-encoding': 'identity',
770
- },
771
- autoSelectFamily: false,
772
- family: input.address.family,
773
- // Use a one-shot socket so the request cannot reuse a pooled connection that resolved differently.
774
- agent: false,
775
- lookup: isIP(input.hostname) === 0
776
- ? createAssistantWebPinnedLookup(input.address)
777
- : undefined,
778
- servername: input.url.protocol === 'https:' && isIP(input.hostname) === 0
779
- ? input.hostname
780
- : undefined,
781
- signal: input.signal,
782
- };
783
- const requestImplementation = input.url.protocol === 'https:'
784
- ? requestHttps
785
- : requestHttp;
786
- return await new Promise((resolve, reject) => {
787
- const request = requestImplementation(options, (response) => {
788
- try {
789
- resolve(createAssistantWebNodeResponse(response));
790
- }
791
- catch (error) {
792
- reject(error);
793
- }
794
- });
795
- request.once('error', reject);
796
- request.end();
797
- });
798
- }
799
- function createAssistantWebPinnedLookup(address) {
800
- return (_hostname, options, callback) => {
801
- const requestedFamily = typeof options === 'number'
802
- ? options
803
- : options.family === 'IPv4'
804
- ? 4
805
- : options.family === 'IPv6'
806
- ? 6
807
- : options.family ?? 0;
808
- queueMicrotask(() => {
809
- if (requestedFamily !== 0 && requestedFamily !== address.family) {
810
- callback(new Error(`Pinned address family ${address.family} did not match requested family ${requestedFamily}.`), address.address, address.family);
811
- return;
812
- }
813
- callback(null, address.address, address.family);
814
- });
815
- };
816
- }
817
- function createAssistantWebNodeResponse(response) {
818
- const headers = createAssistantWebResponseHeaders(response);
819
- const body = decodeAssistantWebResponseBody(response, headers);
820
- const status = response.statusCode ?? 500;
821
- const statusText = normalizeNullableString(response.statusMessage);
822
- return new Response(Readable.toWeb(body), {
823
- status,
824
- headers,
825
- ...(statusText ? { statusText } : {}),
826
- });
827
- }
828
- function createAssistantWebResponseHeaders(response) {
829
- const headers = new Headers();
830
- for (const [name, value] of Object.entries(response.headers)) {
831
- if (Array.isArray(value)) {
832
- for (const entry of value) {
833
- headers.append(name, entry);
834
- }
835
- continue;
836
- }
837
- if (typeof value === 'string') {
838
- headers.append(name, value);
839
- }
840
- }
841
- return headers;
842
- }
843
- function decodeAssistantWebResponseBody(response, headers) {
844
- const contentEncoding = normalizeNullableString(headers.get('content-encoding'))?.toLowerCase();
845
- switch (contentEncoding) {
846
- case 'br':
847
- headers.delete('content-encoding');
848
- headers.delete('content-length');
849
- return response.pipe(createBrotliDecompress());
850
- case 'deflate':
851
- case 'gzip':
852
- case 'x-gzip':
853
- headers.delete('content-encoding');
854
- headers.delete('content-length');
855
- return response.pipe(createUnzip());
856
- default:
857
- return response;
858
- }
859
- }
860
- async function cancelAssistantWebResponseBody(response) {
861
- if (!response.body) {
862
- return;
863
- }
864
- try {
865
- await response.body.cancel();
866
- }
867
- catch {
868
- // Ignore response-body cancellation failures during cleanup.
869
- }
870
- }
871
- function isAssistantWebAbortError(error) {
872
- return error instanceof Error && error.name === 'AbortError';
873
- }
874
- function normalizeAssistantText(input) {
875
- return input
876
- .replace(/\r\n?/gu, '\n')
877
- .replace(/[ \t]+\n/gu, '\n')
878
- .replace(/\n{3,}/gu, '\n\n')
879
- .replace(/[ \t]{2,}/gu, ' ')
880
- .trim();
881
- }
882
- function normalizeAssistantMarkdown(input) {
883
- return input
884
- .replace(/\r\n?/gu, '\n')
885
- .replace(/[ \t]+\n/gu, '\n')
886
- .replace(/\n{3,}/gu, '\n\n')
887
- .trim();
888
- }
889
- function normalizeAssistantMarkdownInline(input) {
890
- return normalizeAssistantText(input).replace(/\n+/gu, ' ');
891
- }
892
- function parseAssistantHtmlWithReadability(document) {
893
- const ReadabilityConstructor = Readability;
894
- return new ReadabilityConstructor(document).parse();
895
- }
896
- async function lookupAllAssistantWebAddresses(lookupImplementation, hostname) {
897
- const resolved = await lookupImplementation(hostname, {
898
- all: true,
899
- verbatim: true,
900
- });
901
- const normalized = Array.isArray(resolved) ? resolved : [resolved];
902
- const seen = new Set();
903
- const addresses = [];
904
- for (const entry of normalized) {
905
- const key = `${entry.family}:${entry.address}`;
906
- if (seen.has(key)) {
907
- continue;
908
- }
909
- seen.add(key);
910
- addresses.push(entry);
911
- }
912
- return addresses;
913
- }
914
- function resolveAssistantHtmlDocumentTitle(document) {
915
- if (typeof document.title === 'string') {
916
- return normalizeNullableString(document.title);
917
- }
918
- if (document.title &&
919
- typeof document.title === 'object' &&
920
- 'textContent' in document.title) {
921
- const textContent = document.title.textContent;
922
- return typeof textContent === 'string'
923
- ? normalizeNullableString(textContent)
924
- : null;
925
- }
926
- return null;
927
- }
928
- function normalizeTrailingWhitespace(input) {
929
- return input
930
- .replace(/\r\n?/gu, '\n')
931
- .replace(/\s+$/u, '');
932
- }
933
- function escapeAssistantMarkdownText(input) {
934
- return input.replace(/([\\`*_{}\[\]()#+!|>~-])/gu, '\\$1');
935
- }
936
88
  //# sourceMappingURL=web-fetch.js.map