@murphai/hosted-execution 0.1.15 → 0.1.18

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 (656) hide show
  1. package/LICENSE +201 -674
  2. package/README.md +15 -14
  3. package/dist/auth.d.ts +11 -25
  4. package/dist/auth.d.ts.map +1 -1
  5. package/dist/auth.js +32 -76
  6. package/dist/auth.js.map +1 -1
  7. package/dist/builders.d.ts +3 -4
  8. package/dist/builders.d.ts.map +1 -1
  9. package/dist/builders.js +24 -24
  10. package/dist/builders.js.map +1 -1
  11. package/dist/bundles.d.ts +3 -13
  12. package/dist/bundles.d.ts.map +1 -1
  13. package/dist/bundles.js +1 -16
  14. package/dist/bundles.js.map +1 -1
  15. package/dist/client.d.ts +2 -26
  16. package/dist/client.d.ts.map +1 -1
  17. package/dist/client.js +38 -212
  18. package/dist/client.js.map +1 -1
  19. package/dist/contracts.d.ts +49 -118
  20. package/dist/contracts.d.ts.map +1 -1
  21. package/dist/contracts.js +15 -58
  22. package/dist/contracts.js.map +1 -1
  23. package/dist/dispatch-ref.d.ts +1 -2
  24. package/dist/dispatch-ref.d.ts.map +1 -1
  25. package/dist/dispatch-ref.js +16 -30
  26. package/dist/dispatch-ref.js.map +1 -1
  27. package/dist/env.d.ts +0 -38
  28. package/dist/env.d.ts.map +1 -1
  29. package/dist/env.js +1 -87
  30. package/dist/env.js.map +1 -1
  31. package/dist/index.d.ts +0 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +0 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/observability.d.ts +3 -1
  36. package/dist/observability.d.ts.map +1 -1
  37. package/dist/observability.js +76 -53
  38. package/dist/observability.js.map +1 -1
  39. package/dist/outbox-payload.d.ts +7 -5
  40. package/dist/outbox-payload.d.ts.map +1 -1
  41. package/dist/outbox-payload.js +75 -38
  42. package/dist/outbox-payload.js.map +1 -1
  43. package/dist/parsers.d.ts +10 -10
  44. package/dist/parsers.d.ts.map +1 -1
  45. package/dist/parsers.js +192 -139
  46. package/dist/parsers.js.map +1 -1
  47. package/dist/routes.d.ts +4 -9
  48. package/dist/routes.d.ts.map +1 -1
  49. package/dist/routes.js +7 -18
  50. package/dist/routes.js.map +1 -1
  51. package/node_modules/@murphai/core/README.md +3 -0
  52. package/node_modules/@murphai/core/dist/assessment/index.d.ts +5 -0
  53. package/node_modules/@murphai/core/dist/assessment/index.d.ts.map +1 -0
  54. package/node_modules/@murphai/core/dist/assessment/index.js +4 -0
  55. package/node_modules/@murphai/core/dist/assessment/index.js.map +1 -0
  56. package/node_modules/@murphai/core/dist/assessment/project.d.ts +9 -0
  57. package/node_modules/@murphai/core/dist/assessment/project.d.ts.map +1 -0
  58. package/node_modules/@murphai/core/dist/assessment/project.js +353 -0
  59. package/node_modules/@murphai/core/dist/assessment/project.js.map +1 -0
  60. package/node_modules/@murphai/core/dist/assessment/storage.d.ts +13 -0
  61. package/node_modules/@murphai/core/dist/assessment/storage.d.ts.map +1 -0
  62. package/node_modules/@murphai/core/dist/assessment/storage.js +202 -0
  63. package/node_modules/@murphai/core/dist/assessment/storage.js.map +1 -0
  64. package/node_modules/@murphai/core/dist/assessment/types.d.ts +112 -0
  65. package/node_modules/@murphai/core/dist/assessment/types.d.ts.map +1 -0
  66. package/node_modules/@murphai/core/dist/assessment/types.js +5 -0
  67. package/node_modules/@murphai/core/dist/assessment/types.js.map +1 -0
  68. package/node_modules/@murphai/core/dist/atomic-write.d.ts +5 -0
  69. package/node_modules/@murphai/core/dist/atomic-write.d.ts.map +1 -0
  70. package/node_modules/@murphai/core/dist/atomic-write.js +120 -0
  71. package/node_modules/@murphai/core/dist/atomic-write.js.map +1 -0
  72. package/node_modules/@murphai/core/dist/audit.d.ts +27 -0
  73. package/node_modules/@murphai/core/dist/audit.d.ts.map +1 -0
  74. package/node_modules/@murphai/core/dist/audit.js +94 -0
  75. package/node_modules/@murphai/core/dist/audit.js.map +1 -0
  76. package/node_modules/@murphai/core/dist/automation.d.ts +55 -0
  77. package/node_modules/@murphai/core/dist/automation.d.ts.map +1 -0
  78. package/node_modules/@murphai/core/dist/automation.js +411 -0
  79. package/node_modules/@murphai/core/dist/automation.js.map +1 -0
  80. package/node_modules/@murphai/core/dist/bank/allergies.d.ts +5 -0
  81. package/node_modules/@murphai/core/dist/bank/allergies.d.ts.map +1 -0
  82. package/node_modules/@murphai/core/dist/bank/allergies.js +209 -0
  83. package/node_modules/@murphai/core/dist/bank/allergies.js.map +1 -0
  84. package/node_modules/@murphai/core/dist/bank/conditions.d.ts +5 -0
  85. package/node_modules/@murphai/core/dist/bank/conditions.d.ts.map +1 -0
  86. package/node_modules/@murphai/core/dist/bank/conditions.js +249 -0
  87. package/node_modules/@murphai/core/dist/bank/conditions.js.map +1 -0
  88. package/node_modules/@murphai/core/dist/bank/foods.d.ts +8 -0
  89. package/node_modules/@murphai/core/dist/bank/foods.d.ts.map +1 -0
  90. package/node_modules/@murphai/core/dist/bank/foods.js +255 -0
  91. package/node_modules/@murphai/core/dist/bank/foods.js.map +1 -0
  92. package/node_modules/@murphai/core/dist/bank/goals.d.ts +5 -0
  93. package/node_modules/@murphai/core/dist/bank/goals.d.ts.map +1 -0
  94. package/node_modules/@murphai/core/dist/bank/goals.js +289 -0
  95. package/node_modules/@murphai/core/dist/bank/goals.js.map +1 -0
  96. package/node_modules/@murphai/core/dist/bank/index.d.ts +10 -0
  97. package/node_modules/@murphai/core/dist/bank/index.d.ts.map +1 -0
  98. package/node_modules/@murphai/core/dist/bank/index.js +10 -0
  99. package/node_modules/@murphai/core/dist/bank/index.js.map +1 -0
  100. package/node_modules/@murphai/core/dist/bank/protocols.d.ts +8 -0
  101. package/node_modules/@murphai/core/dist/bank/protocols.d.ts.map +1 -0
  102. package/node_modules/@murphai/core/dist/bank/protocols.js +466 -0
  103. package/node_modules/@murphai/core/dist/bank/protocols.js.map +1 -0
  104. package/node_modules/@murphai/core/dist/bank/providers.d.ts +46 -0
  105. package/node_modules/@murphai/core/dist/bank/providers.d.ts.map +1 -0
  106. package/node_modules/@murphai/core/dist/bank/providers.js +160 -0
  107. package/node_modules/@murphai/core/dist/bank/providers.js.map +1 -0
  108. package/node_modules/@murphai/core/dist/bank/recipes.d.ts +8 -0
  109. package/node_modules/@murphai/core/dist/bank/recipes.d.ts.map +1 -0
  110. package/node_modules/@murphai/core/dist/bank/recipes.js +287 -0
  111. package/node_modules/@murphai/core/dist/bank/recipes.js.map +1 -0
  112. package/node_modules/@murphai/core/dist/bank/shared.d.ts +39 -0
  113. package/node_modules/@murphai/core/dist/bank/shared.d.ts.map +1 -0
  114. package/node_modules/@murphai/core/dist/bank/shared.js +150 -0
  115. package/node_modules/@murphai/core/dist/bank/shared.js.map +1 -0
  116. package/node_modules/@murphai/core/dist/bank/types.d.ts +469 -0
  117. package/node_modules/@murphai/core/dist/bank/types.d.ts.map +1 -0
  118. package/node_modules/@murphai/core/dist/bank/types.js +35 -0
  119. package/node_modules/@murphai/core/dist/bank/types.js.map +1 -0
  120. package/node_modules/@murphai/core/dist/bank/workout-formats.d.ts +5 -0
  121. package/node_modules/@murphai/core/dist/bank/workout-formats.d.ts.map +1 -0
  122. package/node_modules/@murphai/core/dist/bank/workout-formats.js +204 -0
  123. package/node_modules/@murphai/core/dist/bank/workout-formats.js.map +1 -0
  124. package/node_modules/@murphai/core/dist/canonical-mutations.d.ts +54 -0
  125. package/node_modules/@murphai/core/dist/canonical-mutations.d.ts.map +1 -0
  126. package/node_modules/@murphai/core/dist/canonical-mutations.js +196 -0
  127. package/node_modules/@murphai/core/dist/canonical-mutations.js.map +1 -0
  128. package/node_modules/@murphai/core/dist/constants.d.ts +125 -0
  129. package/node_modules/@murphai/core/dist/constants.d.ts.map +1 -0
  130. package/node_modules/@murphai/core/dist/constants.js +132 -0
  131. package/node_modules/@murphai/core/dist/constants.js.map +1 -0
  132. package/node_modules/@murphai/core/dist/domains/events.d.ts +100 -0
  133. package/node_modules/@murphai/core/dist/domains/events.d.ts.map +1 -0
  134. package/node_modules/@murphai/core/dist/domains/events.js +593 -0
  135. package/node_modules/@murphai/core/dist/domains/events.js.map +1 -0
  136. package/node_modules/@murphai/core/dist/domains/experiments.d.ts +71 -0
  137. package/node_modules/@murphai/core/dist/domains/experiments.d.ts.map +1 -0
  138. package/node_modules/@murphai/core/dist/domains/experiments.js +275 -0
  139. package/node_modules/@murphai/core/dist/domains/experiments.js.map +1 -0
  140. package/node_modules/@murphai/core/dist/domains/journal.d.ts +52 -0
  141. package/node_modules/@murphai/core/dist/domains/journal.d.ts.map +1 -0
  142. package/node_modules/@murphai/core/dist/domains/journal.js +173 -0
  143. package/node_modules/@murphai/core/dist/domains/journal.js.map +1 -0
  144. package/node_modules/@murphai/core/dist/domains/shared.d.ts +37 -0
  145. package/node_modules/@murphai/core/dist/domains/shared.d.ts.map +1 -0
  146. package/node_modules/@murphai/core/dist/domains/shared.js +101 -0
  147. package/node_modules/@murphai/core/dist/domains/shared.js.map +1 -0
  148. package/node_modules/@murphai/core/dist/domains/vault-summary.d.ts +15 -0
  149. package/node_modules/@murphai/core/dist/domains/vault-summary.d.ts.map +1 -0
  150. package/node_modules/@murphai/core/dist/domains/vault-summary.js +58 -0
  151. package/node_modules/@murphai/core/dist/domains/vault-summary.js.map +1 -0
  152. package/node_modules/@murphai/core/dist/errors.d.ts +8 -0
  153. package/node_modules/@murphai/core/dist/errors.d.ts.map +1 -0
  154. package/node_modules/@murphai/core/dist/errors.js +14 -0
  155. package/node_modules/@murphai/core/dist/errors.js.map +1 -0
  156. package/node_modules/@murphai/core/dist/event-attachments.d.ts +69 -0
  157. package/node_modules/@murphai/core/dist/event-attachments.d.ts.map +1 -0
  158. package/node_modules/@murphai/core/dist/event-attachments.js +202 -0
  159. package/node_modules/@murphai/core/dist/event-attachments.js.map +1 -0
  160. package/node_modules/@murphai/core/dist/event-links.d.ts +15 -0
  161. package/node_modules/@murphai/core/dist/event-links.d.ts.map +1 -0
  162. package/node_modules/@murphai/core/dist/event-links.js +54 -0
  163. package/node_modules/@murphai/core/dist/event-links.js.map +1 -0
  164. package/node_modules/@murphai/core/dist/family/api.d.ts +5 -0
  165. package/node_modules/@murphai/core/dist/family/api.d.ts.map +1 -0
  166. package/node_modules/@murphai/core/dist/family/api.js +221 -0
  167. package/node_modules/@murphai/core/dist/family/api.js.map +1 -0
  168. package/node_modules/@murphai/core/dist/family/index.d.ts +3 -0
  169. package/node_modules/@murphai/core/dist/family/index.d.ts.map +1 -0
  170. package/node_modules/@murphai/core/dist/family/index.js +3 -0
  171. package/node_modules/@murphai/core/dist/family/index.js.map +1 -0
  172. package/node_modules/@murphai/core/dist/family/types.d.ts +34 -0
  173. package/node_modules/@murphai/core/dist/family/types.d.ts.map +1 -0
  174. package/node_modules/@murphai/core/dist/family/types.js +2 -0
  175. package/node_modules/@murphai/core/dist/family/types.js.map +1 -0
  176. package/node_modules/@murphai/core/dist/frontmatter.d.ts +4 -0
  177. package/node_modules/@murphai/core/dist/frontmatter.d.ts.map +1 -0
  178. package/node_modules/@murphai/core/dist/frontmatter.js +99 -0
  179. package/node_modules/@murphai/core/dist/frontmatter.js.map +1 -0
  180. package/node_modules/@murphai/core/dist/fs.d.ts +22 -0
  181. package/node_modules/@murphai/core/dist/fs.d.ts.map +1 -0
  182. package/node_modules/@murphai/core/dist/fs.js +172 -0
  183. package/node_modules/@murphai/core/dist/fs.js.map +1 -0
  184. package/node_modules/@murphai/core/dist/genetics/api.d.ts +5 -0
  185. package/node_modules/@murphai/core/dist/genetics/api.d.ts.map +1 -0
  186. package/node_modules/@murphai/core/dist/genetics/api.js +226 -0
  187. package/node_modules/@murphai/core/dist/genetics/api.js.map +1 -0
  188. package/node_modules/@murphai/core/dist/genetics/index.d.ts +3 -0
  189. package/node_modules/@murphai/core/dist/genetics/index.d.ts.map +1 -0
  190. package/node_modules/@murphai/core/dist/genetics/index.js +3 -0
  191. package/node_modules/@murphai/core/dist/genetics/index.js.map +1 -0
  192. package/node_modules/@murphai/core/dist/genetics/types.d.ts +40 -0
  193. package/node_modules/@murphai/core/dist/genetics/types.d.ts.map +1 -0
  194. package/node_modules/@murphai/core/dist/genetics/types.js +4 -0
  195. package/node_modules/@murphai/core/dist/genetics/types.js.map +1 -0
  196. package/node_modules/@murphai/core/dist/history/api.d.ts +7 -0
  197. package/node_modules/@murphai/core/dist/history/api.d.ts.map +1 -0
  198. package/node_modules/@murphai/core/dist/history/api.js +473 -0
  199. package/node_modules/@murphai/core/dist/history/api.js.map +1 -0
  200. package/node_modules/@murphai/core/dist/history/event-spine.d.ts +41 -0
  201. package/node_modules/@murphai/core/dist/history/event-spine.d.ts.map +1 -0
  202. package/node_modules/@murphai/core/dist/history/event-spine.js +111 -0
  203. package/node_modules/@murphai/core/dist/history/event-spine.js.map +1 -0
  204. package/node_modules/@murphai/core/dist/history/index.d.ts +3 -0
  205. package/node_modules/@murphai/core/dist/history/index.d.ts.map +1 -0
  206. package/node_modules/@murphai/core/dist/history/index.js +3 -0
  207. package/node_modules/@murphai/core/dist/history/index.js.map +1 -0
  208. package/node_modules/@murphai/core/dist/history/shared.d.ts +25 -0
  209. package/node_modules/@murphai/core/dist/history/shared.d.ts.map +1 -0
  210. package/node_modules/@murphai/core/dist/history/shared.js +144 -0
  211. package/node_modules/@murphai/core/dist/history/shared.js.map +1 -0
  212. package/node_modules/@murphai/core/dist/history/types.d.ts +127 -0
  213. package/node_modules/@murphai/core/dist/history/types.d.ts.map +1 -0
  214. package/node_modules/@murphai/core/dist/history/types.js +8 -0
  215. package/node_modules/@murphai/core/dist/history/types.js.map +1 -0
  216. package/node_modules/@murphai/core/dist/ids.d.ts +3 -0
  217. package/node_modules/@murphai/core/dist/ids.d.ts.map +1 -0
  218. package/node_modules/@murphai/core/dist/ids.js +20 -0
  219. package/node_modules/@murphai/core/dist/ids.js.map +1 -0
  220. package/node_modules/@murphai/core/dist/index.d.ts +30 -0
  221. package/node_modules/@murphai/core/dist/index.d.ts.map +1 -0
  222. package/node_modules/@murphai/core/dist/index.js +23 -0
  223. package/node_modules/@murphai/core/dist/index.js.map +1 -0
  224. package/node_modules/@murphai/core/dist/jsonl.d.ts +12 -0
  225. package/node_modules/@murphai/core/dist/jsonl.d.ts.map +1 -0
  226. package/node_modules/@murphai/core/dist/jsonl.js +40 -0
  227. package/node_modules/@murphai/core/dist/jsonl.js.map +1 -0
  228. package/node_modules/@murphai/core/dist/memory.d.ts +17 -0
  229. package/node_modules/@murphai/core/dist/memory.d.ts.map +1 -0
  230. package/node_modules/@murphai/core/dist/memory.js +72 -0
  231. package/node_modules/@murphai/core/dist/memory.js.map +1 -0
  232. package/node_modules/@murphai/core/dist/mutations.d.ts +150 -0
  233. package/node_modules/@murphai/core/dist/mutations.d.ts.map +1 -0
  234. package/node_modules/@murphai/core/dist/mutations.js +1109 -0
  235. package/node_modules/@murphai/core/dist/mutations.js.map +1 -0
  236. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts +29 -0
  237. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts.map +1 -0
  238. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js +164 -0
  239. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js.map +1 -0
  240. package/node_modules/@murphai/core/dist/operations/index.d.ts +5 -0
  241. package/node_modules/@murphai/core/dist/operations/index.d.ts.map +1 -0
  242. package/node_modules/@murphai/core/dist/operations/index.js +3 -0
  243. package/node_modules/@murphai/core/dist/operations/index.js.map +1 -0
  244. package/node_modules/@murphai/core/dist/operations/raw-manifests.d.ts +33 -0
  245. package/node_modules/@murphai/core/dist/operations/raw-manifests.d.ts.map +1 -0
  246. package/node_modules/@murphai/core/dist/operations/raw-manifests.js +105 -0
  247. package/node_modules/@murphai/core/dist/operations/raw-manifests.js.map +1 -0
  248. package/node_modules/@murphai/core/dist/operations/write-batch.d.ts +166 -0
  249. package/node_modules/@murphai/core/dist/operations/write-batch.d.ts.map +1 -0
  250. package/node_modules/@murphai/core/dist/operations/write-batch.js +886 -0
  251. package/node_modules/@murphai/core/dist/operations/write-batch.js.map +1 -0
  252. package/node_modules/@murphai/core/dist/path-safety.d.ts +19 -0
  253. package/node_modules/@murphai/core/dist/path-safety.d.ts.map +1 -0
  254. package/node_modules/@murphai/core/dist/path-safety.js +193 -0
  255. package/node_modules/@murphai/core/dist/path-safety.js.map +1 -0
  256. package/node_modules/@murphai/core/dist/profile/index.d.ts +4 -0
  257. package/node_modules/@murphai/core/dist/profile/index.d.ts.map +1 -0
  258. package/node_modules/@murphai/core/dist/profile/index.js +3 -0
  259. package/node_modules/@murphai/core/dist/profile/index.js.map +1 -0
  260. package/node_modules/@murphai/core/dist/profile/storage.d.ts +41 -0
  261. package/node_modules/@murphai/core/dist/profile/storage.d.ts.map +1 -0
  262. package/node_modules/@murphai/core/dist/profile/storage.js +225 -0
  263. package/node_modules/@murphai/core/dist/profile/storage.js.map +1 -0
  264. package/node_modules/@murphai/core/dist/profile/types.d.ts +29 -0
  265. package/node_modules/@murphai/core/dist/profile/types.d.ts.map +1 -0
  266. package/node_modules/@murphai/core/dist/profile/types.js +8 -0
  267. package/node_modules/@murphai/core/dist/profile/types.js.map +1 -0
  268. package/node_modules/@murphai/core/dist/public-mutations.d.ts +120 -0
  269. package/node_modules/@murphai/core/dist/public-mutations.d.ts.map +1 -0
  270. package/node_modules/@murphai/core/dist/public-mutations.js +275 -0
  271. package/node_modules/@murphai/core/dist/public-mutations.js.map +1 -0
  272. package/node_modules/@murphai/core/dist/raw.d.ts +28 -0
  273. package/node_modules/@murphai/core/dist/raw.d.ts.map +1 -0
  274. package/node_modules/@murphai/core/dist/raw.js +107 -0
  275. package/node_modules/@murphai/core/dist/raw.js.map +1 -0
  276. package/node_modules/@murphai/core/dist/registry/api.d.ts +80 -0
  277. package/node_modules/@murphai/core/dist/registry/api.d.ts.map +1 -0
  278. package/node_modules/@murphai/core/dist/registry/api.js +113 -0
  279. package/node_modules/@murphai/core/dist/registry/api.js.map +1 -0
  280. package/node_modules/@murphai/core/dist/registry/id-or-slug.d.ts +15 -0
  281. package/node_modules/@murphai/core/dist/registry/id-or-slug.d.ts.map +1 -0
  282. package/node_modules/@murphai/core/dist/registry/id-or-slug.js +9 -0
  283. package/node_modules/@murphai/core/dist/registry/id-or-slug.js.map +1 -0
  284. package/node_modules/@murphai/core/dist/registry/markdown.d.ts +101 -0
  285. package/node_modules/@murphai/core/dist/registry/markdown.d.ts.map +1 -0
  286. package/node_modules/@murphai/core/dist/registry/markdown.js +136 -0
  287. package/node_modules/@murphai/core/dist/registry/markdown.js.map +1 -0
  288. package/node_modules/@murphai/core/dist/shares.d.ts +36 -0
  289. package/node_modules/@murphai/core/dist/shares.d.ts.map +1 -0
  290. package/node_modules/@murphai/core/dist/shares.js +333 -0
  291. package/node_modules/@murphai/core/dist/shares.js.map +1 -0
  292. package/node_modules/@murphai/core/dist/storage-spine.d.ts +3 -0
  293. package/node_modules/@murphai/core/dist/storage-spine.d.ts.map +1 -0
  294. package/node_modules/@murphai/core/dist/storage-spine.js +3 -0
  295. package/node_modules/@murphai/core/dist/storage-spine.js.map +1 -0
  296. package/node_modules/@murphai/core/dist/time.d.ts +11 -0
  297. package/node_modules/@murphai/core/dist/time.d.ts.map +1 -0
  298. package/node_modules/@murphai/core/dist/time.js +72 -0
  299. package/node_modules/@murphai/core/dist/time.js.map +1 -0
  300. package/node_modules/@murphai/core/dist/types.d.ts +18 -0
  301. package/node_modules/@murphai/core/dist/types.d.ts.map +1 -0
  302. package/node_modules/@murphai/core/dist/types.js +7 -0
  303. package/node_modules/@murphai/core/dist/types.js.map +1 -0
  304. package/node_modules/@murphai/core/dist/vault-core-document.d.ts +8 -0
  305. package/node_modules/@murphai/core/dist/vault-core-document.d.ts.map +1 -0
  306. package/node_modules/@murphai/core/dist/vault-core-document.js +16 -0
  307. package/node_modules/@murphai/core/dist/vault-core-document.js.map +1 -0
  308. package/node_modules/@murphai/core/dist/vault-metadata.d.ts +17 -0
  309. package/node_modules/@murphai/core/dist/vault-metadata.d.ts.map +1 -0
  310. package/node_modules/@murphai/core/dist/vault-metadata.js +44 -0
  311. package/node_modules/@murphai/core/dist/vault-metadata.js.map +1 -0
  312. package/node_modules/@murphai/core/dist/vault-upgrade.d.ts +24 -0
  313. package/node_modules/@murphai/core/dist/vault-upgrade.d.ts.map +1 -0
  314. package/node_modules/@murphai/core/dist/vault-upgrade.js +44 -0
  315. package/node_modules/@murphai/core/dist/vault-upgrade.js.map +1 -0
  316. package/node_modules/@murphai/core/dist/vault.d.ts +40 -0
  317. package/node_modules/@murphai/core/dist/vault.d.ts.map +1 -0
  318. package/node_modules/@murphai/core/dist/vault.js +649 -0
  319. package/node_modules/@murphai/core/dist/vault.js.map +1 -0
  320. package/node_modules/@murphai/core/dist/write-policy.d.ts +63 -0
  321. package/node_modules/@murphai/core/dist/write-policy.d.ts.map +1 -0
  322. package/node_modules/@murphai/core/dist/write-policy.js +146 -0
  323. package/node_modules/@murphai/core/dist/write-policy.js.map +1 -0
  324. package/node_modules/@murphai/core/package.json +27 -0
  325. package/node_modules/@murphai/device-syncd/README.md +123 -0
  326. package/node_modules/@murphai/device-syncd/dist/bin.d.ts +2 -0
  327. package/node_modules/@murphai/device-syncd/dist/bin.d.ts.map +1 -0
  328. package/node_modules/@murphai/device-syncd/dist/bin.js +29 -0
  329. package/node_modules/@murphai/device-syncd/dist/bin.js.map +1 -0
  330. package/node_modules/@murphai/device-syncd/dist/client.d.ts +124 -0
  331. package/node_modules/@murphai/device-syncd/dist/client.d.ts.map +1 -0
  332. package/node_modules/@murphai/device-syncd/dist/client.js +199 -0
  333. package/node_modules/@murphai/device-syncd/dist/client.js.map +1 -0
  334. package/node_modules/@murphai/device-syncd/dist/config.d.ts +18 -0
  335. package/node_modules/@murphai/device-syncd/dist/config.d.ts.map +1 -0
  336. package/node_modules/@murphai/device-syncd/dist/config.js +279 -0
  337. package/node_modules/@murphai/device-syncd/dist/config.js.map +1 -0
  338. package/node_modules/@murphai/device-syncd/dist/crypto.d.ts +6 -0
  339. package/node_modules/@murphai/device-syncd/dist/crypto.d.ts.map +1 -0
  340. package/node_modules/@murphai/device-syncd/dist/crypto.js +27 -0
  341. package/node_modules/@murphai/device-syncd/dist/crypto.js.map +1 -0
  342. package/node_modules/@murphai/device-syncd/dist/errors.d.ts +21 -0
  343. package/node_modules/@murphai/device-syncd/dist/errors.d.ts.map +1 -0
  344. package/node_modules/@murphai/device-syncd/dist/errors.js +32 -0
  345. package/node_modules/@murphai/device-syncd/dist/errors.js.map +1 -0
  346. package/node_modules/@murphai/device-syncd/dist/hosted-hints.d.ts +3 -0
  347. package/node_modules/@murphai/device-syncd/dist/hosted-hints.d.ts.map +1 -0
  348. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js +110 -0
  349. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js.map +1 -0
  350. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts +139 -0
  351. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts.map +1 -0
  352. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js +336 -0
  353. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js.map +1 -0
  354. package/node_modules/@murphai/device-syncd/dist/http.d.ts +34 -0
  355. package/node_modules/@murphai/device-syncd/dist/http.d.ts.map +1 -0
  356. package/node_modules/@murphai/device-syncd/dist/http.js +644 -0
  357. package/node_modules/@murphai/device-syncd/dist/http.js.map +1 -0
  358. package/node_modules/@murphai/device-syncd/dist/index.d.ts +23 -0
  359. package/node_modules/@murphai/device-syncd/dist/index.d.ts.map +1 -0
  360. package/node_modules/@murphai/device-syncd/dist/index.js +15 -0
  361. package/node_modules/@murphai/device-syncd/dist/index.js.map +1 -0
  362. package/node_modules/@murphai/device-syncd/dist/providers/garmin.d.ts +15 -0
  363. package/node_modules/@murphai/device-syncd/dist/providers/garmin.d.ts.map +1 -0
  364. package/node_modules/@murphai/device-syncd/dist/providers/garmin.js +485 -0
  365. package/node_modules/@murphai/device-syncd/dist/providers/garmin.js.map +1 -0
  366. package/node_modules/@murphai/device-syncd/dist/providers/oura-webhooks.d.ts +49 -0
  367. package/node_modules/@murphai/device-syncd/dist/providers/oura-webhooks.d.ts.map +1 -0
  368. package/node_modules/@murphai/device-syncd/dist/providers/oura-webhooks.js +401 -0
  369. package/node_modules/@murphai/device-syncd/dist/providers/oura-webhooks.js.map +1 -0
  370. package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts +20 -0
  371. package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts.map +1 -0
  372. package/node_modules/@murphai/device-syncd/dist/providers/oura.js +804 -0
  373. package/node_modules/@murphai/device-syncd/dist/providers/oura.js.map +1 -0
  374. package/node_modules/@murphai/device-syncd/dist/providers/shared-oauth.d.ts +104 -0
  375. package/node_modules/@murphai/device-syncd/dist/providers/shared-oauth.d.ts.map +1 -0
  376. package/node_modules/@murphai/device-syncd/dist/providers/shared-oauth.js +214 -0
  377. package/node_modules/@murphai/device-syncd/dist/providers/shared-oauth.js.map +1 -0
  378. package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts +15 -0
  379. package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts.map +1 -0
  380. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js +551 -0
  381. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js.map +1 -0
  382. package/node_modules/@murphai/device-syncd/dist/public-account.d.ts +4 -0
  383. package/node_modules/@murphai/device-syncd/dist/public-account.d.ts.map +1 -0
  384. package/node_modules/@murphai/device-syncd/dist/public-account.js +13 -0
  385. package/node_modules/@murphai/device-syncd/dist/public-account.js.map +1 -0
  386. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts +43 -0
  387. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts.map +1 -0
  388. package/node_modules/@murphai/device-syncd/dist/public-ingress.js +353 -0
  389. package/node_modules/@murphai/device-syncd/dist/public-ingress.js.map +1 -0
  390. package/node_modules/@murphai/device-syncd/dist/registry.d.ts +3 -0
  391. package/node_modules/@murphai/device-syncd/dist/registry.d.ts.map +1 -0
  392. package/node_modules/@murphai/device-syncd/dist/registry.js +5 -0
  393. package/node_modules/@murphai/device-syncd/dist/registry.js.map +1 -0
  394. package/node_modules/@murphai/device-syncd/dist/service.d.ts +61 -0
  395. package/node_modules/@murphai/device-syncd/dist/service.d.ts.map +1 -0
  396. package/node_modules/@murphai/device-syncd/dist/service.js +496 -0
  397. package/node_modules/@murphai/device-syncd/dist/service.js.map +1 -0
  398. package/node_modules/@murphai/device-syncd/dist/shared.d.ts +26 -0
  399. package/node_modules/@murphai/device-syncd/dist/shared.d.ts.map +1 -0
  400. package/node_modules/@murphai/device-syncd/dist/shared.js +182 -0
  401. package/node_modules/@murphai/device-syncd/dist/shared.js.map +1 -0
  402. package/node_modules/@murphai/device-syncd/dist/store.d.ts +105 -0
  403. package/node_modules/@murphai/device-syncd/dist/store.d.ts.map +1 -0
  404. package/node_modules/@murphai/device-syncd/dist/store.js +965 -0
  405. package/node_modules/@murphai/device-syncd/dist/store.js.map +1 -0
  406. package/node_modules/@murphai/device-syncd/dist/types.d.ts +287 -0
  407. package/node_modules/@murphai/device-syncd/dist/types.d.ts.map +1 -0
  408. package/node_modules/@murphai/device-syncd/dist/types.js +2 -0
  409. package/node_modules/@murphai/device-syncd/dist/types.js.map +1 -0
  410. package/node_modules/@murphai/device-syncd/dist/webhook-verification.d.ts +14 -0
  411. package/node_modules/@murphai/device-syncd/dist/webhook-verification.d.ts.map +1 -0
  412. package/node_modules/@murphai/device-syncd/dist/webhook-verification.js +16 -0
  413. package/node_modules/@murphai/device-syncd/dist/webhook-verification.js.map +1 -0
  414. package/node_modules/@murphai/device-syncd/package.json +85 -0
  415. package/node_modules/@murphai/importers/README.md +34 -0
  416. package/node_modules/@murphai/importers/dist/assessment/core-port.d.ts +13 -0
  417. package/node_modules/@murphai/importers/dist/assessment/core-port.d.ts.map +1 -0
  418. package/node_modules/@murphai/importers/dist/assessment/core-port.js +13 -0
  419. package/node_modules/@murphai/importers/dist/assessment/core-port.js.map +1 -0
  420. package/node_modules/@murphai/importers/dist/assessment/import-assessment-response.d.ts +15 -0
  421. package/node_modules/@murphai/importers/dist/assessment/import-assessment-response.d.ts.map +1 -0
  422. package/node_modules/@murphai/importers/dist/assessment/import-assessment-response.js +32 -0
  423. package/node_modules/@murphai/importers/dist/assessment/import-assessment-response.js.map +1 -0
  424. package/node_modules/@murphai/importers/dist/assessment/index.d.ts +4 -0
  425. package/node_modules/@murphai/importers/dist/assessment/index.d.ts.map +1 -0
  426. package/node_modules/@murphai/importers/dist/assessment/index.js +2 -0
  427. package/node_modules/@murphai/importers/dist/assessment/index.js.map +1 -0
  428. package/node_modules/@murphai/importers/dist/core-port.d.ts +119 -0
  429. package/node_modules/@murphai/importers/dist/core-port.d.ts.map +1 -0
  430. package/node_modules/@murphai/importers/dist/core-port.js +22 -0
  431. package/node_modules/@murphai/importers/dist/core-port.js.map +1 -0
  432. package/node_modules/@murphai/importers/dist/create-importers.d.ts +17 -0
  433. package/node_modules/@murphai/importers/dist/create-importers.d.ts.map +1 -0
  434. package/node_modules/@murphai/importers/dist/create-importers.js +68 -0
  435. package/node_modules/@murphai/importers/dist/create-importers.js.map +1 -0
  436. package/node_modules/@murphai/importers/dist/csv-sample-importer.d.ts +22 -0
  437. package/node_modules/@murphai/importers/dist/csv-sample-importer.d.ts.map +1 -0
  438. package/node_modules/@murphai/importers/dist/csv-sample-importer.js +153 -0
  439. package/node_modules/@murphai/importers/dist/csv-sample-importer.js.map +1 -0
  440. package/node_modules/@murphai/importers/dist/device-providers/defaults.d.ts +5 -0
  441. package/node_modules/@murphai/importers/dist/device-providers/defaults.d.ts.map +1 -0
  442. package/node_modules/@murphai/importers/dist/device-providers/defaults.js +11 -0
  443. package/node_modules/@murphai/importers/dist/device-providers/defaults.js.map +1 -0
  444. package/node_modules/@murphai/importers/dist/device-providers/garmin-activity-normalizers.d.ts +9 -0
  445. package/node_modules/@murphai/importers/dist/device-providers/garmin-activity-normalizers.d.ts.map +1 -0
  446. package/node_modules/@murphai/importers/dist/device-providers/garmin-activity-normalizers.js +172 -0
  447. package/node_modules/@murphai/importers/dist/device-providers/garmin-activity-normalizers.js.map +1 -0
  448. package/node_modules/@murphai/importers/dist/device-providers/garmin-health-normalizers.d.ts +12 -0
  449. package/node_modules/@murphai/importers/dist/device-providers/garmin-health-normalizers.d.ts.map +1 -0
  450. package/node_modules/@murphai/importers/dist/device-providers/garmin-health-normalizers.js +619 -0
  451. package/node_modules/@murphai/importers/dist/device-providers/garmin-health-normalizers.js.map +1 -0
  452. package/node_modules/@murphai/importers/dist/device-providers/garmin-helpers.d.ts +40 -0
  453. package/node_modules/@murphai/importers/dist/device-providers/garmin-helpers.d.ts.map +1 -0
  454. package/node_modules/@murphai/importers/dist/device-providers/garmin-helpers.js +295 -0
  455. package/node_modules/@murphai/importers/dist/device-providers/garmin-helpers.js.map +1 -0
  456. package/node_modules/@murphai/importers/dist/device-providers/garmin.d.ts +19 -0
  457. package/node_modules/@murphai/importers/dist/device-providers/garmin.d.ts.map +1 -0
  458. package/node_modules/@murphai/importers/dist/device-providers/garmin.js +150 -0
  459. package/node_modules/@murphai/importers/dist/device-providers/garmin.js.map +1 -0
  460. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.d.ts +14 -0
  461. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.d.ts.map +1 -0
  462. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.js +37 -0
  463. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.js.map +1 -0
  464. package/node_modules/@murphai/importers/dist/device-providers/index.d.ts +10 -0
  465. package/node_modules/@murphai/importers/dist/device-providers/index.d.ts.map +1 -0
  466. package/node_modules/@murphai/importers/dist/device-providers/index.js +8 -0
  467. package/node_modules/@murphai/importers/dist/device-providers/index.js.map +1 -0
  468. package/node_modules/@murphai/importers/dist/device-providers/oura.d.ts +20 -0
  469. package/node_modules/@murphai/importers/dist/device-providers/oura.d.ts.map +1 -0
  470. package/node_modules/@murphai/importers/dist/device-providers/oura.js +602 -0
  471. package/node_modules/@murphai/importers/dist/device-providers/oura.js.map +1 -0
  472. package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.d.ts +491 -0
  473. package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.d.ts.map +1 -0
  474. package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.js +326 -0
  475. package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.js.map +1 -0
  476. package/node_modules/@murphai/importers/dist/device-providers/registry.d.ts +9 -0
  477. package/node_modules/@murphai/importers/dist/device-providers/registry.d.ts.map +1 -0
  478. package/node_modules/@murphai/importers/dist/device-providers/registry.js +5 -0
  479. package/node_modules/@murphai/importers/dist/device-providers/registry.js.map +1 -0
  480. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts +81 -0
  481. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts.map +1 -0
  482. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js +215 -0
  483. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js.map +1 -0
  484. package/node_modules/@murphai/importers/dist/device-providers/types.d.ts +12 -0
  485. package/node_modules/@murphai/importers/dist/device-providers/types.d.ts.map +1 -0
  486. package/node_modules/@murphai/importers/dist/device-providers/types.js +2 -0
  487. package/node_modules/@murphai/importers/dist/device-providers/types.js.map +1 -0
  488. package/node_modules/@murphai/importers/dist/device-providers/whoop.d.ts +16 -0
  489. package/node_modules/@murphai/importers/dist/device-providers/whoop.d.ts.map +1 -0
  490. package/node_modules/@murphai/importers/dist/device-providers/whoop.js +410 -0
  491. package/node_modules/@murphai/importers/dist/device-providers/whoop.js.map +1 -0
  492. package/node_modules/@murphai/importers/dist/document-importer.d.ts +15 -0
  493. package/node_modules/@murphai/importers/dist/document-importer.d.ts.map +1 -0
  494. package/node_modules/@murphai/importers/dist/document-importer.js +31 -0
  495. package/node_modules/@murphai/importers/dist/document-importer.js.map +1 -0
  496. package/node_modules/@murphai/importers/dist/index.d.ts +10 -0
  497. package/node_modules/@murphai/importers/dist/index.d.ts.map +1 -0
  498. package/node_modules/@murphai/importers/dist/index.js +9 -0
  499. package/node_modules/@murphai/importers/dist/index.js.map +1 -0
  500. package/node_modules/@murphai/importers/dist/meal-importer.d.ts +15 -0
  501. package/node_modules/@murphai/importers/dist/meal-importer.d.ts.map +1 -0
  502. package/node_modules/@murphai/importers/dist/meal-importer.js +39 -0
  503. package/node_modules/@murphai/importers/dist/meal-importer.js.map +1 -0
  504. package/node_modules/@murphai/importers/dist/preset-registry.d.ts +31 -0
  505. package/node_modules/@murphai/importers/dist/preset-registry.d.ts.map +1 -0
  506. package/node_modules/@murphai/importers/dist/preset-registry.js +96 -0
  507. package/node_modules/@murphai/importers/dist/preset-registry.js.map +1 -0
  508. package/node_modules/@murphai/importers/dist/shared.d.ts +31 -0
  509. package/node_modules/@murphai/importers/dist/shared.d.ts.map +1 -0
  510. package/node_modules/@murphai/importers/dist/shared.js +154 -0
  511. package/node_modules/@murphai/importers/dist/shared.js.map +1 -0
  512. package/node_modules/@murphai/importers/package.json +36 -0
  513. package/node_modules/@murphai/runtime-state/README.md +37 -0
  514. package/node_modules/@murphai/runtime-state/dist/assistant-local-state-descriptors.d.ts +3 -0
  515. package/node_modules/@murphai/runtime-state/dist/assistant-local-state-descriptors.d.ts.map +1 -0
  516. package/node_modules/@murphai/runtime-state/dist/assistant-local-state-descriptors.js +80 -0
  517. package/node_modules/@murphai/runtime-state/dist/assistant-local-state-descriptors.js.map +1 -0
  518. package/node_modules/@murphai/runtime-state/dist/assistant-state-security.d.ts +29 -0
  519. package/node_modules/@murphai/runtime-state/dist/assistant-state-security.d.ts.map +1 -0
  520. package/node_modules/@murphai/runtime-state/dist/assistant-state-security.js +159 -0
  521. package/node_modules/@murphai/runtime-state/dist/assistant-state-security.js.map +1 -0
  522. package/node_modules/@murphai/runtime-state/dist/assistant-state.d.ts +33 -0
  523. package/node_modules/@murphai/runtime-state/dist/assistant-state.d.ts.map +1 -0
  524. package/node_modules/@murphai/runtime-state/dist/assistant-state.js +47 -0
  525. package/node_modules/@murphai/runtime-state/dist/assistant-state.js.map +1 -0
  526. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts +56 -0
  527. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts.map +1 -0
  528. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js +189 -0
  529. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js.map +1 -0
  530. package/node_modules/@murphai/runtime-state/dist/atomic-write.d.ts +7 -0
  531. package/node_modules/@murphai/runtime-state/dist/atomic-write.d.ts.map +1 -0
  532. package/node_modules/@murphai/runtime-state/dist/atomic-write.js +27 -0
  533. package/node_modules/@murphai/runtime-state/dist/atomic-write.js.map +1 -0
  534. package/node_modules/@murphai/runtime-state/dist/device-sync-local-state-descriptors.d.ts +3 -0
  535. package/node_modules/@murphai/runtime-state/dist/device-sync-local-state-descriptors.d.ts.map +1 -0
  536. package/node_modules/@murphai/runtime-state/dist/device-sync-local-state-descriptors.js +12 -0
  537. package/node_modules/@murphai/runtime-state/dist/device-sync-local-state-descriptors.js.map +1 -0
  538. package/node_modules/@murphai/runtime-state/dist/gateway-local-state-descriptors.d.ts +3 -0
  539. package/node_modules/@murphai/runtime-state/dist/gateway-local-state-descriptors.d.ts.map +1 -0
  540. package/node_modules/@murphai/runtime-state/dist/gateway-local-state-descriptors.js +13 -0
  541. package/node_modules/@murphai/runtime-state/dist/gateway-local-state-descriptors.js.map +1 -0
  542. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-node.d.ts +43 -0
  543. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-node.d.ts.map +1 -0
  544. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-node.js +203 -0
  545. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-node.js.map +1 -0
  546. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-ref.d.ts +13 -0
  547. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-ref.d.ts.map +1 -0
  548. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-ref.js +46 -0
  549. package/node_modules/@murphai/runtime-state/dist/hosted-bundle-ref.js.map +1 -0
  550. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.d.ts +67 -0
  551. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.d.ts.map +1 -0
  552. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.js +261 -0
  553. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.js.map +1 -0
  554. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.d.ts +31 -0
  555. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.d.ts.map +1 -0
  556. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.js +211 -0
  557. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.js.map +1 -0
  558. package/node_modules/@murphai/runtime-state/dist/hosted-email.d.ts +50 -0
  559. package/node_modules/@murphai/runtime-state/dist/hosted-email.d.ts.map +1 -0
  560. package/node_modules/@murphai/runtime-state/dist/hosted-email.js +191 -0
  561. package/node_modules/@murphai/runtime-state/dist/hosted-email.js.map +1 -0
  562. package/node_modules/@murphai/runtime-state/dist/hosted-user-env.d.ts +14 -0
  563. package/node_modules/@murphai/runtime-state/dist/hosted-user-env.d.ts.map +1 -0
  564. package/node_modules/@murphai/runtime-state/dist/hosted-user-env.js +59 -0
  565. package/node_modules/@murphai/runtime-state/dist/hosted-user-env.js.map +1 -0
  566. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.d.ts +83 -0
  567. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.d.ts.map +1 -0
  568. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.js +308 -0
  569. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.js.map +1 -0
  570. package/node_modules/@murphai/runtime-state/dist/inbox-local-state-descriptors.d.ts +3 -0
  571. package/node_modules/@murphai/runtime-state/dist/inbox-local-state-descriptors.d.ts.map +1 -0
  572. package/node_modules/@murphai/runtime-state/dist/inbox-local-state-descriptors.js +18 -0
  573. package/node_modules/@murphai/runtime-state/dist/inbox-local-state-descriptors.js.map +1 -0
  574. package/node_modules/@murphai/runtime-state/dist/index.d.ts +7 -0
  575. package/node_modules/@murphai/runtime-state/dist/index.d.ts.map +1 -0
  576. package/node_modules/@murphai/runtime-state/dist/index.js +7 -0
  577. package/node_modules/@murphai/runtime-state/dist/index.js.map +1 -0
  578. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-helpers.d.ts +31 -0
  579. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-helpers.d.ts.map +1 -0
  580. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-helpers.js +120 -0
  581. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-helpers.js.map +1 -0
  582. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.d.ts +3 -0
  583. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.d.ts.map +1 -0
  584. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.js +17 -0
  585. package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.js.map +1 -0
  586. package/node_modules/@murphai/runtime-state/dist/local-state-files.d.ts +10 -0
  587. package/node_modules/@murphai/runtime-state/dist/local-state-files.d.ts.map +1 -0
  588. package/node_modules/@murphai/runtime-state/dist/local-state-files.js +27 -0
  589. package/node_modules/@murphai/runtime-state/dist/local-state-files.js.map +1 -0
  590. package/node_modules/@murphai/runtime-state/dist/local-state-taxonomy.d.ts +29 -0
  591. package/node_modules/@murphai/runtime-state/dist/local-state-taxonomy.d.ts.map +1 -0
  592. package/node_modules/@murphai/runtime-state/dist/local-state-taxonomy.js +82 -0
  593. package/node_modules/@murphai/runtime-state/dist/local-state-taxonomy.js.map +1 -0
  594. package/node_modules/@murphai/runtime-state/dist/locks.d.ts +46 -0
  595. package/node_modules/@murphai/runtime-state/dist/locks.d.ts.map +1 -0
  596. package/node_modules/@murphai/runtime-state/dist/locks.js +187 -0
  597. package/node_modules/@murphai/runtime-state/dist/locks.js.map +1 -0
  598. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts +4 -0
  599. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts.map +1 -0
  600. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js +35 -0
  601. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js.map +1 -0
  602. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts +22 -0
  603. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts.map +1 -0
  604. package/node_modules/@murphai/runtime-state/dist/node/index.js +22 -0
  605. package/node_modules/@murphai/runtime-state/dist/node/index.js.map +1 -0
  606. package/node_modules/@murphai/runtime-state/dist/parser-local-state-descriptors.d.ts +3 -0
  607. package/node_modules/@murphai/runtime-state/dist/parser-local-state-descriptors.d.ts.map +1 -0
  608. package/node_modules/@murphai/runtime-state/dist/parser-local-state-descriptors.js +12 -0
  609. package/node_modules/@murphai/runtime-state/dist/parser-local-state-descriptors.js.map +1 -0
  610. package/node_modules/@murphai/runtime-state/dist/process-env.d.ts +4 -0
  611. package/node_modules/@murphai/runtime-state/dist/process-env.d.ts.map +1 -0
  612. package/node_modules/@murphai/runtime-state/dist/process-env.js +124 -0
  613. package/node_modules/@murphai/runtime-state/dist/process-env.js.map +1 -0
  614. package/node_modules/@murphai/runtime-state/dist/query-local-state-descriptors.d.ts +3 -0
  615. package/node_modules/@murphai/runtime-state/dist/query-local-state-descriptors.d.ts.map +1 -0
  616. package/node_modules/@murphai/runtime-state/dist/query-local-state-descriptors.js +13 -0
  617. package/node_modules/@murphai/runtime-state/dist/query-local-state-descriptors.js.map +1 -0
  618. package/node_modules/@murphai/runtime-state/dist/runtime-paths.d.ts +48 -0
  619. package/node_modules/@murphai/runtime-state/dist/runtime-paths.d.ts.map +1 -0
  620. package/node_modules/@murphai/runtime-state/dist/runtime-paths.js +93 -0
  621. package/node_modules/@murphai/runtime-state/dist/runtime-paths.js.map +1 -0
  622. package/node_modules/@murphai/runtime-state/dist/shared.d.ts +14 -0
  623. package/node_modules/@murphai/runtime-state/dist/shared.d.ts.map +1 -0
  624. package/node_modules/@murphai/runtime-state/dist/shared.js +46 -0
  625. package/node_modules/@murphai/runtime-state/dist/shared.js.map +1 -0
  626. package/node_modules/@murphai/runtime-state/dist/sqlite.d.ts +26 -0
  627. package/node_modules/@murphai/runtime-state/dist/sqlite.d.ts.map +1 -0
  628. package/node_modules/@murphai/runtime-state/dist/sqlite.js +110 -0
  629. package/node_modules/@murphai/runtime-state/dist/sqlite.js.map +1 -0
  630. package/node_modules/@murphai/runtime-state/dist/ulid.d.ts +5 -0
  631. package/node_modules/@murphai/runtime-state/dist/ulid.d.ts.map +1 -0
  632. package/node_modules/@murphai/runtime-state/dist/ulid.js +31 -0
  633. package/node_modules/@murphai/runtime-state/dist/ulid.js.map +1 -0
  634. package/node_modules/@murphai/runtime-state/dist/versioned-json-files.d.ts +24 -0
  635. package/node_modules/@murphai/runtime-state/dist/versioned-json-files.d.ts.map +1 -0
  636. package/node_modules/@murphai/runtime-state/dist/versioned-json-files.js +30 -0
  637. package/node_modules/@murphai/runtime-state/dist/versioned-json-files.js.map +1 -0
  638. package/node_modules/@murphai/runtime-state/dist/versioned-json-state.d.ts +18 -0
  639. package/node_modules/@murphai/runtime-state/dist/versioned-json-state.d.ts.map +1 -0
  640. package/node_modules/@murphai/runtime-state/dist/versioned-json-state.js +25 -0
  641. package/node_modules/@murphai/runtime-state/dist/versioned-json-state.js.map +1 -0
  642. package/node_modules/@murphai/runtime-state/dist/write-operation-local-state-descriptors.d.ts +3 -0
  643. package/node_modules/@murphai/runtime-state/dist/write-operation-local-state-descriptors.d.ts.map +1 -0
  644. package/node_modules/@murphai/runtime-state/dist/write-operation-local-state-descriptors.js +12 -0
  645. package/node_modules/@murphai/runtime-state/dist/write-operation-local-state-descriptors.js.map +1 -0
  646. package/node_modules/@murphai/runtime-state/package.json +30 -0
  647. package/package.json +45 -11
  648. package/dist/.tsbuildinfo +0 -1
  649. package/dist/callback-hosts.d.ts +0 -19
  650. package/dist/callback-hosts.d.ts.map +0 -1
  651. package/dist/callback-hosts.js +0 -19
  652. package/dist/callback-hosts.js.map +0 -1
  653. package/dist/web-control-plane.d.ts +0 -105
  654. package/dist/web-control-plane.d.ts.map +0 -1
  655. package/dist/web-control-plane.js +0 -358
  656. package/dist/web-control-plane.js.map +0 -1
@@ -0,0 +1,551 @@
1
+ import { createHmac, timingSafeEqual } from "node:crypto";
2
+ import { WHOOP_DEVICE_PROVIDER_DESCRIPTOR, requireDeviceProviderOAuthDescriptor, requireDeviceProviderSyncDescriptor, requireDeviceProviderWebhookDescriptor, } from "@murphai/importers";
3
+ import { deviceSyncError } from "../errors.js";
4
+ import { addMilliseconds, coerceRecord, normalizeIdentifier, normalizeString, sha256Text, subtractDays, } from "../shared.js";
5
+ import { buildOAuthConnectUrl, buildProviderApiError, buildScheduledReconcileJobs, createRefreshingApiSession, exchangeOAuthAuthorizationCode, fetchBearerJson, parseResponseBody, postOAuthTokenRequest, refreshOAuthTokens, splitScopes, tokenResponseToAuthTokens as sharedTokenResponseToAuthTokens, } from "./shared-oauth.js";
6
+ const WHOOP_AUTH_PATH = "/oauth/oauth2/auth";
7
+ const WHOOP_TOKEN_PATH = "/oauth/oauth2/token";
8
+ const WHOOP_API_PREFIX = "/developer";
9
+ const WHOOP_PROVIDER_DESCRIPTOR = WHOOP_DEVICE_PROVIDER_DESCRIPTOR;
10
+ const WHOOP_OAUTH = requireDeviceProviderOAuthDescriptor(WHOOP_PROVIDER_DESCRIPTOR);
11
+ const WHOOP_WEBHOOK = requireDeviceProviderWebhookDescriptor(WHOOP_PROVIDER_DESCRIPTOR);
12
+ const WHOOP_SYNC = requireDeviceProviderSyncDescriptor(WHOOP_PROVIDER_DESCRIPTOR);
13
+ const WHOOP_CALLBACK_PATH = WHOOP_OAUTH.callbackPath;
14
+ const WHOOP_WEBHOOK_PATH = WHOOP_WEBHOOK.path;
15
+ const DEFAULT_WHOOP_BASE_URL = "https://api.prod.whoop.com";
16
+ const DEFAULT_TIMEOUT_MS = 15_000;
17
+ const DEFAULT_WEBHOOK_TOLERANCE_MS = 5 * 60_000;
18
+ const DEFAULT_BACKFILL_DAYS = WHOOP_SYNC.windows.backfillDays;
19
+ const DEFAULT_RECONCILE_DAYS = WHOOP_SYNC.windows.reconcileDays;
20
+ const DEFAULT_RECONCILE_INTERVAL_MS = WHOOP_SYNC.windows.reconcileIntervalMs;
21
+ const WHOOP_DEFAULT_SCOPES = Object.freeze([...WHOOP_OAUTH.defaultScopes]);
22
+ const WHOOP_WEBHOOK_EVENT_MAP = Object.freeze({
23
+ "sleep.updated": {
24
+ kind: "resource",
25
+ resourceType: "sleep",
26
+ priority: 90,
27
+ },
28
+ "recovery.updated": {
29
+ kind: "resource",
30
+ resourceType: "recovery",
31
+ priority: 90,
32
+ },
33
+ "workout.updated": {
34
+ kind: "resource",
35
+ resourceType: "workout",
36
+ priority: 90,
37
+ },
38
+ "sleep.deleted": {
39
+ kind: "delete",
40
+ resourceType: "sleep",
41
+ priority: 95,
42
+ },
43
+ "recovery.deleted": {
44
+ kind: "delete",
45
+ resourceType: "recovery",
46
+ priority: 95,
47
+ },
48
+ "workout.deleted": {
49
+ kind: "delete",
50
+ resourceType: "workout",
51
+ priority: 95,
52
+ },
53
+ });
54
+ async function importWhoopSleepRelatedSnapshot(api, resourceId, now) {
55
+ const sleepRecord = await api.requestJson(`/v2/activity/sleep/${resourceId}`, {
56
+ optional: true,
57
+ });
58
+ if (!sleepRecord) {
59
+ return null;
60
+ }
61
+ const cycleId = normalizeIdentifier(sleepRecord.cycle_id);
62
+ const cycle = cycleId ? await api.requestJson(`/v2/cycle/${cycleId}`, { optional: true }) : null;
63
+ const recovery = cycleId ? await api.requestJson(`/v2/cycle/${cycleId}/recovery`, { optional: true }) : null;
64
+ return {
65
+ accountId: api.account.externalAccountId,
66
+ importedAt: now,
67
+ sleeps: [sleepRecord],
68
+ cycles: cycle ? [cycle] : [],
69
+ recoveries: recovery ? [recovery] : [],
70
+ };
71
+ }
72
+ async function importWhoopWorkoutSnapshot(api, resourceId, now) {
73
+ const workout = await api.requestJson(`/v2/activity/workout/${resourceId}`, {
74
+ optional: true,
75
+ });
76
+ if (!workout) {
77
+ return null;
78
+ }
79
+ return {
80
+ accountId: api.account.externalAccountId,
81
+ importedAt: now,
82
+ workouts: [workout],
83
+ };
84
+ }
85
+ const WHOOP_RESOURCE_DESCRIPTORS = Object.freeze({
86
+ sleep: {
87
+ importResource: importWhoopSleepRelatedSnapshot,
88
+ },
89
+ recovery: {
90
+ importResource: importWhoopSleepRelatedSnapshot,
91
+ },
92
+ workout: {
93
+ importResource: importWhoopWorkoutSnapshot,
94
+ },
95
+ });
96
+ function whoopBaseUrl(config) {
97
+ return (config.baseUrl ?? DEFAULT_WHOOP_BASE_URL).replace(/\/+$/u, "");
98
+ }
99
+ function buildWhoopScopes(input) {
100
+ const requested = [...WHOOP_DEFAULT_SCOPES, ...(input ?? [])];
101
+ return [...new Set(requested.map((scope) => scope.trim()).filter(Boolean))];
102
+ }
103
+ function tokenResponseToAuthTokens(payload) {
104
+ return sharedTokenResponseToAuthTokens(payload, () => deviceSyncError({
105
+ code: "WHOOP_TOKEN_RESPONSE_INVALID",
106
+ message: "WHOOP token response did not include an access token.",
107
+ retryable: false,
108
+ httpStatus: 502,
109
+ }));
110
+ }
111
+ function buildDisplayName(profile) {
112
+ const firstName = normalizeString(profile.first_name);
113
+ const lastName = normalizeString(profile.last_name);
114
+ const email = normalizeString(profile.email);
115
+ const userId = normalizeIdentifier(profile.user_id ?? profile.id);
116
+ return [firstName, lastName].filter(Boolean).join(" ") || email || `WHOOP ${userId ?? "user"}`;
117
+ }
118
+ function hasWhoopScope(account, scope) {
119
+ return hasWhoopScopeValue(account.scopes, scope);
120
+ }
121
+ function hasWhoopScopeValue(scopes, scope) {
122
+ return scopes.includes(scope);
123
+ }
124
+ function constantTimeBase64Equals(expected, actual) {
125
+ const expectedBuffer = Buffer.from(expected, "utf8");
126
+ const actualBuffer = Buffer.from(actual, "utf8");
127
+ if (expectedBuffer.length !== actualBuffer.length) {
128
+ return false;
129
+ }
130
+ return timingSafeEqual(expectedBuffer, actualBuffer);
131
+ }
132
+ function parseWhoopWebhookPayload(rawBody) {
133
+ let parsed;
134
+ try {
135
+ parsed = JSON.parse(rawBody.toString("utf8"));
136
+ }
137
+ catch (error) {
138
+ throw deviceSyncError({
139
+ code: "WHOOP_WEBHOOK_INVALID_JSON",
140
+ message: "WHOOP webhook payload was not valid JSON.",
141
+ retryable: false,
142
+ httpStatus: 400,
143
+ cause: error,
144
+ });
145
+ }
146
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
147
+ throw deviceSyncError({
148
+ code: "WHOOP_WEBHOOK_INVALID_PAYLOAD",
149
+ message: "WHOOP webhook payload must be a JSON object.",
150
+ retryable: false,
151
+ httpStatus: 400,
152
+ });
153
+ }
154
+ return parsed;
155
+ }
156
+ function buildWhoopApiError(code, message, response, body, options = {}) {
157
+ return buildProviderApiError(code, message, response, body, options);
158
+ }
159
+ export function createWhoopDeviceSyncProvider(config) {
160
+ const fetchImpl = config.fetchImpl ?? fetch;
161
+ const baseUrl = whoopBaseUrl(config);
162
+ const scopes = buildWhoopScopes(config.scopes);
163
+ const backfillDays = Math.max(1, config.backfillDays ?? DEFAULT_BACKFILL_DAYS);
164
+ const reconcileDays = Math.max(1, config.reconcileDays ?? DEFAULT_RECONCILE_DAYS);
165
+ const reconcileIntervalMs = Math.max(60_000, config.reconcileIntervalMs ?? DEFAULT_RECONCILE_INTERVAL_MS);
166
+ const webhookToleranceMs = Math.max(1_000, config.webhookTimestampToleranceMs ?? DEFAULT_WEBHOOK_TOLERANCE_MS);
167
+ const timeoutMs = Math.max(1_000, config.requestTimeoutMs ?? DEFAULT_TIMEOUT_MS);
168
+ const descriptor = {
169
+ ...WHOOP_PROVIDER_DESCRIPTOR,
170
+ oauth: {
171
+ ...WHOOP_OAUTH,
172
+ defaultScopes: [...scopes],
173
+ },
174
+ sync: {
175
+ ...WHOOP_SYNC,
176
+ windows: {
177
+ backfillDays,
178
+ reconcileDays,
179
+ reconcileIntervalMs,
180
+ },
181
+ },
182
+ };
183
+ async function postTokenRequest(parameters) {
184
+ return postOAuthTokenRequest({
185
+ fetchImpl,
186
+ url: `${baseUrl}${WHOOP_TOKEN_PATH}`,
187
+ timeoutMs,
188
+ parameters,
189
+ buildError: (response, body) => buildWhoopApiError("WHOOP_TOKEN_REQUEST_FAILED", "WHOOP token request failed.", response, body, {
190
+ retryable: response.status >= 500,
191
+ accountStatus: response.status === 401 ? "reauthorization_required" : null,
192
+ }),
193
+ });
194
+ }
195
+ async function fetchWhoopJson(input) {
196
+ return fetchBearerJson({
197
+ fetchImpl,
198
+ url: `${baseUrl}${WHOOP_API_PREFIX}${input.path}`,
199
+ accessToken: input.accessToken,
200
+ timeoutMs,
201
+ optional: input.optional,
202
+ buildError: (response, body) => buildWhoopApiError("WHOOP_API_REQUEST_FAILED", `WHOOP API request failed for ${input.path}.`, response, body, {
203
+ retryable: response.status === 429 || response.status >= 500,
204
+ accountStatus: response.status === 401 ? "reauthorization_required" : null,
205
+ }),
206
+ });
207
+ }
208
+ async function fetchPagedCollection(requestJson, path, start, end) {
209
+ const records = [];
210
+ let nextToken = null;
211
+ do {
212
+ const search = new URLSearchParams({
213
+ limit: "25",
214
+ start,
215
+ end,
216
+ });
217
+ if (nextToken) {
218
+ search.set("nextToken", nextToken);
219
+ }
220
+ const response = (await requestJson(`${path}?${search.toString()}`)) ?? {
221
+ records: [],
222
+ };
223
+ records.push(...((response.records ?? []).map((entry) => coerceRecord(entry))));
224
+ nextToken = response.next_token ?? response.nextToken ?? null;
225
+ } while (nextToken);
226
+ return records;
227
+ }
228
+ function buildDeleteSnapshot(account, now, marker) {
229
+ return {
230
+ accountId: account.externalAccountId,
231
+ importedAt: now,
232
+ deletions: [marker],
233
+ };
234
+ }
235
+ function getWhoopResourceDescriptor(resourceType) {
236
+ return WHOOP_RESOURCE_DESCRIPTORS[resourceType] ?? null;
237
+ }
238
+ function requireWhoopJobResource(job, options) {
239
+ const resourceType = normalizeString(job.payload.resourceType);
240
+ const resourceId = normalizeIdentifier(job.payload.resourceId);
241
+ if (!resourceType || !resourceId) {
242
+ throw deviceSyncError({
243
+ code: options.code,
244
+ message: options.message,
245
+ retryable: false,
246
+ });
247
+ }
248
+ return {
249
+ resourceType,
250
+ resourceId,
251
+ };
252
+ }
253
+ function buildWhoopDeleteMarker(resourceType, resourceId, now, payload) {
254
+ const occurredAt = normalizeString(payload.occurredAt) ?? now;
255
+ return {
256
+ resource_type: resourceType,
257
+ resource_id: resourceId,
258
+ occurred_at: occurredAt,
259
+ source_event_type: normalizeString(payload.eventType),
260
+ };
261
+ }
262
+ function buildWhoopWebhookJobs(eventType, resourceId, payload, traceId) {
263
+ const eventDescriptor = WHOOP_WEBHOOK_EVENT_MAP[eventType];
264
+ const occurredAt = normalizeString(payload.occurred_at ?? payload.occurredAt);
265
+ if (!eventDescriptor || !resourceId) {
266
+ return [];
267
+ }
268
+ return [
269
+ {
270
+ kind: eventDescriptor.kind,
271
+ payload: {
272
+ eventType,
273
+ ...(occurredAt ? { occurredAt } : {}),
274
+ resourceType: eventDescriptor.resourceType,
275
+ resourceId,
276
+ },
277
+ priority: eventDescriptor.priority,
278
+ dedupeKey: `whoop-webhook:${traceId}`,
279
+ },
280
+ ];
281
+ }
282
+ function buildWhoopWebhookHint(eventType) {
283
+ const eventDescriptor = WHOOP_WEBHOOK_EVENT_MAP[eventType];
284
+ return eventDescriptor
285
+ ? {
286
+ eventType,
287
+ resourceType: eventDescriptor.resourceType,
288
+ }
289
+ : {
290
+ eventType,
291
+ };
292
+ }
293
+ function createApiSession(context) {
294
+ const session = createRefreshingApiSession({
295
+ context,
296
+ requestJsonWithAccessToken: (accessToken, path, options) => fetchWhoopJson({
297
+ path,
298
+ accessToken,
299
+ optional: options.optional,
300
+ }),
301
+ });
302
+ return {
303
+ get account() {
304
+ return session.account;
305
+ },
306
+ requestJson: session.requestJson,
307
+ fetchPagedCollection(path, start, end) {
308
+ return fetchPagedCollection(session.requestJson, path, start, end);
309
+ },
310
+ };
311
+ }
312
+ async function executeWindowImport(context, payload, fallbackWindowDays) {
313
+ const now = context.now;
314
+ const windowStart = normalizeString(payload.windowStart) ?? subtractDays(now, fallbackWindowDays);
315
+ const windowEnd = normalizeString(payload.windowEnd) ?? now;
316
+ const api = createApiSession(context);
317
+ const snapshot = {
318
+ accountId: api.account.externalAccountId,
319
+ importedAt: now,
320
+ sleeps: await api.fetchPagedCollection("/v2/activity/sleep", windowStart, windowEnd),
321
+ recoveries: await api.fetchPagedCollection("/v2/recovery", windowStart, windowEnd),
322
+ cycles: await api.fetchPagedCollection("/v2/cycle", windowStart, windowEnd),
323
+ workouts: await api.fetchPagedCollection("/v2/activity/workout", windowStart, windowEnd),
324
+ };
325
+ await context.importSnapshot(snapshot);
326
+ return {};
327
+ }
328
+ async function executeWhoopResourceJob(context, job) {
329
+ const { resourceType, resourceId } = requireWhoopJobResource(job, {
330
+ code: "WHOOP_JOB_INVALID",
331
+ message: `WHOOP ${job.kind} job is missing resource information.`,
332
+ });
333
+ const now = context.now;
334
+ const descriptor = getWhoopResourceDescriptor(resourceType);
335
+ const api = createApiSession(context);
336
+ if (!descriptor) {
337
+ throw deviceSyncError({
338
+ code: "WHOOP_RESOURCE_UNSUPPORTED",
339
+ message: `WHOOP resource type ${resourceType} is not supported.`,
340
+ retryable: false,
341
+ });
342
+ }
343
+ const snapshot = await descriptor.importResource(api, resourceId, now);
344
+ if (!snapshot) {
345
+ await context.importSnapshot(buildDeleteSnapshot(api.account, now, buildWhoopDeleteMarker(resourceType, resourceId, now, job.payload)));
346
+ return {};
347
+ }
348
+ await context.importSnapshot(snapshot);
349
+ return {};
350
+ }
351
+ async function executeWhoopDeleteJob(context, job) {
352
+ const { resourceType, resourceId } = requireWhoopJobResource(job, {
353
+ code: "WHOOP_DELETE_JOB_INVALID",
354
+ message: "WHOOP delete job did not include a resourceType and resourceId.",
355
+ });
356
+ await context.importSnapshot(buildDeleteSnapshot(context.account, context.now, buildWhoopDeleteMarker(resourceType, resourceId, context.now, job.payload)));
357
+ return {};
358
+ }
359
+ const provider = {
360
+ provider: descriptor.provider,
361
+ descriptor,
362
+ buildConnectUrl(context) {
363
+ return buildOAuthConnectUrl({
364
+ baseUrl,
365
+ authorizePath: WHOOP_AUTH_PATH,
366
+ clientId: config.clientId,
367
+ callbackUrl: context.callbackUrl,
368
+ scopes: context.scopes,
369
+ state: context.state,
370
+ });
371
+ },
372
+ async exchangeAuthorizationCode(context, code) {
373
+ const { tokenPayload, tokens } = await exchangeOAuthAuthorizationCode({
374
+ postTokenRequest,
375
+ clientId: config.clientId,
376
+ clientSecret: config.clientSecret,
377
+ callbackUrl: context.callbackUrl,
378
+ code,
379
+ tokenResponseToAuthTokens,
380
+ buildMissingRefreshTokenError: () => deviceSyncError({
381
+ code: "WHOOP_REFRESH_TOKEN_MISSING",
382
+ message: "WHOOP did not return a refresh token. Ensure the offline scope is enabled so the connection can auto-sync.",
383
+ retryable: false,
384
+ httpStatus: 502,
385
+ }),
386
+ });
387
+ const profile = await fetchWhoopJson({
388
+ path: "/v2/user/profile/basic",
389
+ accessToken: tokens.accessToken,
390
+ });
391
+ const externalAccountId = normalizeIdentifier(profile?.user_id ?? profile?.id);
392
+ if (!externalAccountId) {
393
+ throw deviceSyncError({
394
+ code: "WHOOP_PROFILE_INVALID",
395
+ message: "WHOOP profile response did not include a user identifier.",
396
+ retryable: false,
397
+ httpStatus: 502,
398
+ });
399
+ }
400
+ const grantedScopes = splitScopes(tokenPayload.scope);
401
+ const effectiveScopes = grantedScopes.length > 0 ? grantedScopes : [...scopes];
402
+ return {
403
+ externalAccountId,
404
+ displayName: buildDisplayName(profile ?? {}),
405
+ scopes: effectiveScopes,
406
+ tokens,
407
+ initialJobs: [
408
+ {
409
+ kind: "backfill",
410
+ priority: 100,
411
+ payload: {
412
+ windowStart: subtractDays(context.now, backfillDays),
413
+ windowEnd: context.now,
414
+ },
415
+ },
416
+ ],
417
+ nextReconcileAt: addMilliseconds(context.now, reconcileIntervalMs),
418
+ };
419
+ },
420
+ async refreshTokens(account) {
421
+ return refreshOAuthTokens({
422
+ postTokenRequest,
423
+ account,
424
+ clientId: config.clientId,
425
+ clientSecret: config.clientSecret,
426
+ tokenResponseToAuthTokens,
427
+ buildMissingRefreshTokenError: () => deviceSyncError({
428
+ code: "WHOOP_REFRESH_TOKEN_MISSING",
429
+ message: "WHOOP account does not have a refresh token and must be reconnected.",
430
+ retryable: false,
431
+ accountStatus: "reauthorization_required",
432
+ }),
433
+ resolveRefreshToken: ({ currentRefreshToken, responseRefreshToken }) => responseRefreshToken ?? currentRefreshToken,
434
+ extraParameters: {
435
+ scope: "offline",
436
+ },
437
+ });
438
+ },
439
+ async revokeAccess(account) {
440
+ const response = await fetchImpl(`${baseUrl}${WHOOP_API_PREFIX}/v2/user/access`, {
441
+ method: "DELETE",
442
+ headers: {
443
+ Authorization: `Bearer ${account.accessToken}`,
444
+ },
445
+ signal: AbortSignal.timeout(timeoutMs),
446
+ });
447
+ if (response.status === 401 || response.status === 404 || response.status === 204) {
448
+ return;
449
+ }
450
+ if (!response.ok) {
451
+ throw buildWhoopApiError("WHOOP_REVOKE_FAILED", "WHOOP revoke access request failed.", response, await parseResponseBody(response), {
452
+ retryable: response.status === 429 || response.status >= 500,
453
+ });
454
+ }
455
+ },
456
+ createScheduledJobs(account, now) {
457
+ return buildScheduledReconcileJobs({
458
+ accountId: account.id,
459
+ nextReconcileAt: account.nextReconcileAt,
460
+ now,
461
+ reconcileDays,
462
+ reconcileIntervalMs,
463
+ payload: {},
464
+ });
465
+ },
466
+ async verifyAndParseWebhook(context) {
467
+ const signature = context.headers.get("x-whoop-signature");
468
+ const timestamp = context.headers.get("x-whoop-signature-timestamp");
469
+ if (!signature || !timestamp) {
470
+ throw deviceSyncError({
471
+ code: "WHOOP_WEBHOOK_SIGNATURE_MISSING",
472
+ message: "WHOOP webhook signature headers are missing.",
473
+ retryable: false,
474
+ httpStatus: 401,
475
+ });
476
+ }
477
+ const rawTimestampNumber = Number(timestamp);
478
+ if (!Number.isFinite(rawTimestampNumber)) {
479
+ throw deviceSyncError({
480
+ code: "WHOOP_WEBHOOK_TIMESTAMP_INVALID",
481
+ message: "WHOOP webhook timestamp header was invalid.",
482
+ retryable: false,
483
+ httpStatus: 401,
484
+ });
485
+ }
486
+ const timestampNumber = rawTimestampNumber < 10_000_000_000 ? rawTimestampNumber * 1000 : rawTimestampNumber;
487
+ const nowMs = Date.parse(context.now);
488
+ if (Math.abs(nowMs - timestampNumber) > webhookToleranceMs) {
489
+ throw deviceSyncError({
490
+ code: "WHOOP_WEBHOOK_TIMESTAMP_STALE",
491
+ message: "WHOOP webhook timestamp fell outside the allowed replay window.",
492
+ retryable: false,
493
+ httpStatus: 401,
494
+ });
495
+ }
496
+ const signedPayload = Buffer.concat([Buffer.from(timestamp, "utf8"), context.rawBody]);
497
+ const expectedSignature = createHmac("sha256", config.clientSecret).update(signedPayload).digest("base64");
498
+ if (!constantTimeBase64Equals(expectedSignature, signature)) {
499
+ throw deviceSyncError({
500
+ code: "WHOOP_WEBHOOK_SIGNATURE_INVALID",
501
+ message: "WHOOP webhook signature validation failed.",
502
+ retryable: false,
503
+ httpStatus: 401,
504
+ });
505
+ }
506
+ const payload = parseWhoopWebhookPayload(context.rawBody);
507
+ const externalAccountId = normalizeIdentifier(payload.user_id);
508
+ const eventType = normalizeString(payload.type);
509
+ const resourceId = normalizeIdentifier(payload.id);
510
+ if (!externalAccountId || !eventType) {
511
+ throw deviceSyncError({
512
+ code: "WHOOP_WEBHOOK_PAYLOAD_INVALID",
513
+ message: "WHOOP webhook payload is missing required fields.",
514
+ retryable: false,
515
+ httpStatus: 400,
516
+ });
517
+ }
518
+ const traceId = normalizeString(payload.trace_id) ??
519
+ sha256Text(`${externalAccountId}:${eventType}:${resourceId ?? ""}:${sha256Text(context.rawBody.toString("utf8"))}`);
520
+ return {
521
+ externalAccountId,
522
+ eventType,
523
+ traceId,
524
+ occurredAt: context.now,
525
+ payload: buildWhoopWebhookHint(eventType),
526
+ jobs: buildWhoopWebhookJobs(eventType, resourceId, payload, traceId),
527
+ };
528
+ },
529
+ async executeJob(context, job) {
530
+ if (job.kind === "backfill") {
531
+ return executeWindowImport(context, job.payload, backfillDays);
532
+ }
533
+ if (job.kind === "reconcile") {
534
+ return executeWindowImport(context, job.payload, reconcileDays);
535
+ }
536
+ if (job.kind === "resource") {
537
+ return executeWhoopResourceJob(context, job);
538
+ }
539
+ if (job.kind === "delete") {
540
+ return executeWhoopDeleteJob(context, job);
541
+ }
542
+ throw deviceSyncError({
543
+ code: "WHOOP_JOB_KIND_UNSUPPORTED",
544
+ message: `WHOOP job kind ${job.kind} is not supported.`,
545
+ retryable: false,
546
+ });
547
+ },
548
+ };
549
+ return provider;
550
+ }
551
+ //# sourceMappingURL=whoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoop.js","sourceRoot":"","sources":["../../src/providers/whoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PublicDeviceSyncAccount } from "./types.ts";
2
+ export declare function redactPublicDeviceSyncMetadata(_metadata: Record<string, unknown> | null | undefined): Record<string, never>;
3
+ export declare function toRedactedPublicDeviceSyncAccount(account: PublicDeviceSyncAccount): PublicDeviceSyncAccount;
4
+ //# sourceMappingURL=public-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-account.d.ts","sourceRoot":"","sources":["../src/public-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAK1D,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACpD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAEvB;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,uBAAuB,GAC/B,uBAAuB,CAKzB"}
@@ -0,0 +1,13 @@
1
+ // Provider/account metadata can include raw profile payloads, body measurements, or
2
+ // other operator-supplied diagnostics that should not leak through outward-facing
3
+ // control-plane responses. Keep the public account surface intentionally minimal.
4
+ export function redactPublicDeviceSyncMetadata(_metadata) {
5
+ return {};
6
+ }
7
+ export function toRedactedPublicDeviceSyncAccount(account) {
8
+ return {
9
+ ...account,
10
+ metadata: redactPublicDeviceSyncMetadata(account.metadata),
11
+ };
12
+ }
13
+ //# sourceMappingURL=public-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-account.js","sourceRoot":"","sources":["../src/public-account.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,kFAAkF;AAClF,kFAAkF;AAClF,MAAM,UAAU,8BAA8B,CAC5C,SAAqD;IAErD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAAgC;IAEhC,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,8BAA8B,CAAC,OAAO,CAAC,QAAQ,CAAC;KACzB,CAAC;AACtC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { BeginConnectionResult, CompleteConnectionResult, DeviceSyncLogger, DeviceSyncProvider, DeviceSyncPublicIngressHooks, DeviceSyncPublicIngressStore, DeviceSyncRegistry, HandleOAuthCallbackInput, HandleWebhookResult, PublicProviderDescriptor, StartConnectionInput } from "./types.ts";
2
+ export interface CreateDeviceSyncPublicIngressInput {
3
+ publicBaseUrl: string;
4
+ allowedReturnOrigins?: string[];
5
+ registry: DeviceSyncRegistry;
6
+ store: DeviceSyncPublicIngressStore;
7
+ sessionTtlMs?: number;
8
+ hooks?: DeviceSyncPublicIngressHooks;
9
+ log?: DeviceSyncLogger;
10
+ }
11
+ export declare class DeviceSyncPublicIngress {
12
+ readonly publicBaseUrl: string;
13
+ readonly allowedReturnOrigins: string[];
14
+ readonly registry: DeviceSyncRegistry;
15
+ readonly store: DeviceSyncPublicIngressStore;
16
+ private readonly sessionTtlMs;
17
+ private readonly hooks;
18
+ private readonly logger;
19
+ constructor(input: CreateDeviceSyncPublicIngressInput);
20
+ describeProviders(): PublicProviderDescriptor[];
21
+ describeProvider(providerName: string | DeviceSyncProvider): PublicProviderDescriptor;
22
+ startConnection(input: StartConnectionInput): Promise<BeginConnectionResult>;
23
+ handleOAuthCallback(input: HandleOAuthCallbackInput): Promise<CompleteConnectionResult>;
24
+ handleWebhook(providerName: string, headers: Headers, rawBody: Buffer): Promise<HandleWebhookResult>;
25
+ private requireProvider;
26
+ private resolveReturnTo;
27
+ }
28
+ export declare function createDeviceSyncPublicIngress(input: CreateDeviceSyncPublicIngressInput): DeviceSyncPublicIngress;
29
+ export { DeviceSyncError, deviceSyncError, isDeviceSyncError } from "./errors.ts";
30
+ export { createDeviceSyncRegistry } from "./registry.ts";
31
+ export { toRedactedPublicDeviceSyncAccount } from "./public-account.ts";
32
+ export { sanitizeStoredDeviceSyncMetadata } from "./shared.ts";
33
+ export { resolveDeviceSyncWebhookVerificationResponse } from "./webhook-verification.ts";
34
+ export { buildPublicDeviceSyncErrorPayload } from "./http.ts";
35
+ export { readConfiguredGarminDeviceSyncProviderConfig, readConfiguredOuraDeviceSyncProviderConfig, readConfiguredWhoopDeviceSyncProviderConfig, } from "./config.ts";
36
+ export { createGarminDeviceSyncProvider } from "./providers/garmin.ts";
37
+ export type { GarminDeviceSyncProviderConfig } from "./providers/garmin.ts";
38
+ export { createOuraDeviceSyncProvider } from "./providers/oura.ts";
39
+ export type { OuraDeviceSyncProviderConfig } from "./providers/oura.ts";
40
+ export { createWhoopDeviceSyncProvider } from "./providers/whoop.ts";
41
+ export type { WhoopDeviceSyncProviderConfig } from "./providers/whoop.ts";
42
+ export type { BeginConnectionResult, ClaimDeviceSyncWebhookTraceInput, CompleteConnectionResult, DeviceSyncAccount, DeviceSyncAccountStatus, DeviceSyncJobInput, DeviceSyncProvider, DeviceSyncPublicIngressStore, DeviceSyncRegistry, DeviceSyncWebhookTraceClaimResult, HandleWebhookResult, OAuthStateRecord, ProviderAuthTokens, ProviderConnectionResult, PublicDeviceSyncAccount, PublicProviderDescriptor, UpsertPublicDeviceSyncConnectionInput, } from "./types.ts";
43
+ //# sourceMappingURL=public-ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-ingress.d.ts","sourceRoot":"","sources":["../src/public-ingress.ts"],"names":[],"mappings":"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"}