@ixo/openhands-sdk 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) hide show
  1. package/dist/cjs/campaign/campaign.js +3 -2
  2. package/dist/cjs/campaign/campaign.js.map +1 -1
  3. package/dist/cjs/campaign/funding.d.ts.map +1 -1
  4. package/dist/cjs/campaign/funding.js +3 -0
  5. package/dist/cjs/campaign/funding.js.map +1 -1
  6. package/dist/cjs/campaign/pool.d.ts.map +1 -1
  7. package/dist/cjs/campaign/pool.js +2 -1
  8. package/dist/cjs/campaign/pool.js.map +1 -1
  9. package/dist/cjs/campaign/spots.d.ts.map +1 -1
  10. package/dist/cjs/campaign/spots.js +8 -6
  11. package/dist/cjs/campaign/spots.js.map +1 -1
  12. package/dist/cjs/chain/ask.d.ts +104 -14
  13. package/dist/cjs/chain/ask.d.ts.map +1 -1
  14. package/dist/cjs/chain/ask.js +151 -78
  15. package/dist/cjs/chain/ask.js.map +1 -1
  16. package/dist/cjs/chain/askImage.d.ts +19 -0
  17. package/dist/cjs/chain/askImage.d.ts.map +1 -0
  18. package/dist/cjs/chain/askImage.js +56 -0
  19. package/dist/cjs/chain/askImage.js.map +1 -0
  20. package/dist/cjs/chain/bridge.d.ts +7 -33
  21. package/dist/cjs/chain/bridge.d.ts.map +1 -1
  22. package/dist/cjs/chain/bridge.js +10 -25
  23. package/dist/cjs/chain/bridge.js.map +1 -1
  24. package/dist/cjs/chain/claimSubmit.d.ts +15 -0
  25. package/dist/cjs/chain/claimSubmit.d.ts.map +1 -0
  26. package/dist/cjs/chain/claimSubmit.js +14 -0
  27. package/dist/cjs/chain/claimSubmit.js.map +1 -0
  28. package/dist/cjs/chain/delegate.d.ts +52 -7
  29. package/dist/cjs/chain/delegate.d.ts.map +1 -1
  30. package/dist/cjs/chain/delegate.js +66 -14
  31. package/dist/cjs/chain/delegate.js.map +1 -1
  32. package/dist/cjs/chain/domainIndexer.d.ts +26 -0
  33. package/dist/cjs/chain/domainIndexer.d.ts.map +1 -0
  34. package/dist/cjs/chain/domainIndexer.js +51 -0
  35. package/dist/cjs/chain/domainIndexer.js.map +1 -0
  36. package/dist/cjs/chain/entityShape.d.ts +233 -0
  37. package/dist/cjs/chain/entityShape.d.ts.map +1 -0
  38. package/dist/cjs/chain/entityShape.js +251 -0
  39. package/dist/cjs/chain/entityShape.js.map +1 -0
  40. package/dist/cjs/chain/env.d.ts +103 -6
  41. package/dist/cjs/chain/env.d.ts.map +1 -1
  42. package/dist/cjs/chain/env.js +188 -14
  43. package/dist/cjs/chain/env.js.map +1 -1
  44. package/dist/cjs/chain/guest.d.ts +14 -0
  45. package/dist/cjs/chain/guest.d.ts.map +1 -1
  46. package/dist/cjs/chain/guest.js +9 -9
  47. package/dist/cjs/chain/guest.js.map +1 -1
  48. package/dist/cjs/chain/money.d.ts +47 -2
  49. package/dist/cjs/chain/money.d.ts.map +1 -1
  50. package/dist/cjs/chain/money.js +63 -6
  51. package/dist/cjs/chain/money.js.map +1 -1
  52. package/dist/cjs/chain/orgReviewBilling.d.ts +124 -0
  53. package/dist/cjs/chain/orgReviewBilling.d.ts.map +1 -0
  54. package/dist/cjs/chain/orgReviewBilling.js +290 -0
  55. package/dist/cjs/chain/orgReviewBilling.js.map +1 -0
  56. package/dist/cjs/chain/orgReviewBillingSign.d.ts +63 -0
  57. package/dist/cjs/chain/orgReviewBillingSign.d.ts.map +1 -0
  58. package/dist/cjs/chain/orgReviewBillingSign.js +166 -0
  59. package/dist/cjs/chain/orgReviewBillingSign.js.map +1 -0
  60. package/dist/cjs/chain/payoutSettings.d.ts +97 -0
  61. package/dist/cjs/chain/payoutSettings.d.ts.map +1 -0
  62. package/dist/cjs/chain/payoutSettings.js +123 -0
  63. package/dist/cjs/chain/payoutSettings.js.map +1 -0
  64. package/dist/cjs/chain/payoutTerms.d.ts +72 -0
  65. package/dist/cjs/chain/payoutTerms.d.ts.map +1 -0
  66. package/dist/cjs/chain/payoutTerms.js +141 -0
  67. package/dist/cjs/chain/payoutTerms.js.map +1 -0
  68. package/dist/cjs/chain/query.d.ts +14 -0
  69. package/dist/cjs/chain/query.d.ts.map +1 -1
  70. package/dist/cjs/chain/query.js +27 -0
  71. package/dist/cjs/chain/query.js.map +1 -1
  72. package/dist/cjs/chain/reviewBilling.d.ts +86 -0
  73. package/dist/cjs/chain/reviewBilling.d.ts.map +1 -0
  74. package/dist/cjs/chain/reviewBilling.js +265 -0
  75. package/dist/cjs/chain/reviewBilling.js.map +1 -0
  76. package/dist/cjs/chain/store.d.ts +7 -6
  77. package/dist/cjs/chain/store.d.ts.map +1 -1
  78. package/dist/cjs/chain/store.js +7 -6
  79. package/dist/cjs/chain/store.js.map +1 -1
  80. package/dist/cjs/chain/subscription.d.ts +0 -7
  81. package/dist/cjs/chain/subscription.d.ts.map +1 -1
  82. package/dist/cjs/chain/subscription.js +4 -47
  83. package/dist/cjs/chain/subscription.js.map +1 -1
  84. package/dist/cjs/chain/takeBack.d.ts +12 -0
  85. package/dist/cjs/chain/takeBack.d.ts.map +1 -1
  86. package/dist/cjs/chain/takeBack.js +24 -10
  87. package/dist/cjs/chain/takeBack.js.map +1 -1
  88. package/dist/cjs/chain/why.d.ts +44 -0
  89. package/dist/cjs/chain/why.d.ts.map +1 -0
  90. package/dist/cjs/chain/why.js +153 -0
  91. package/dist/cjs/chain/why.js.map +1 -0
  92. package/dist/cjs/chain/whyMint.d.ts +8 -0
  93. package/dist/cjs/chain/whyMint.d.ts.map +1 -0
  94. package/dist/cjs/chain/whyMint.js +53 -0
  95. package/dist/cjs/chain/whyMint.js.map +1 -0
  96. package/dist/cjs/chain.d.ts +8 -4
  97. package/dist/cjs/chain.d.ts.map +1 -1
  98. package/dist/cjs/chain.js +19 -9
  99. package/dist/cjs/chain.js.map +1 -1
  100. package/dist/cjs/config.d.ts +37 -5
  101. package/dist/cjs/config.d.ts.map +1 -1
  102. package/dist/cjs/config.js +9 -2
  103. package/dist/cjs/config.js.map +1 -1
  104. package/dist/cjs/data/agent.d.ts.map +1 -1
  105. package/dist/cjs/data/agent.js +5 -4
  106. package/dist/cjs/data/agent.js.map +1 -1
  107. package/dist/cjs/data/askEntity.d.ts +40 -0
  108. package/dist/cjs/data/askEntity.d.ts.map +1 -0
  109. package/dist/cjs/data/askEntity.js +48 -0
  110. package/dist/cjs/data/askEntity.js.map +1 -0
  111. package/dist/cjs/data/askLinks.d.ts +6 -0
  112. package/dist/cjs/data/askLinks.d.ts.map +1 -0
  113. package/dist/cjs/data/askLinks.js +21 -0
  114. package/dist/cjs/data/askLinks.js.map +1 -0
  115. package/dist/cjs/data/board/assemble.d.ts.map +1 -1
  116. package/dist/cjs/data/board/assemble.js +15 -2
  117. package/dist/cjs/data/board/assemble.js.map +1 -1
  118. package/dist/cjs/data/board/facts.d.ts +11 -0
  119. package/dist/cjs/data/board/facts.d.ts.map +1 -1
  120. package/dist/cjs/data/board/facts.js +16 -0
  121. package/dist/cjs/data/board/facts.js.map +1 -1
  122. package/dist/cjs/data/board/read.d.ts.map +1 -1
  123. package/dist/cjs/data/board/read.js +2 -1
  124. package/dist/cjs/data/board/read.js.map +1 -1
  125. package/dist/cjs/data/board/types.d.ts +9 -0
  126. package/dist/cjs/data/board/types.d.ts.map +1 -1
  127. package/dist/cjs/data/board/types.js.map +1 -1
  128. package/dist/cjs/data/docs.d.ts +10 -2
  129. package/dist/cjs/data/docs.d.ts.map +1 -1
  130. package/dist/cjs/data/docs.js +43 -3
  131. package/dist/cjs/data/docs.js.map +1 -1
  132. package/dist/cjs/data/format.js +1 -1
  133. package/dist/cjs/data/format.js.map +1 -1
  134. package/dist/cjs/data/install.d.ts +8 -0
  135. package/dist/cjs/data/install.d.ts.map +1 -1
  136. package/dist/cjs/data/install.js +9 -1
  137. package/dist/cjs/data/install.js.map +1 -1
  138. package/dist/cjs/data/oracleInfo.d.ts +6 -1
  139. package/dist/cjs/data/oracleInfo.d.ts.map +1 -1
  140. package/dist/cjs/data/oracleInfo.js +22 -3
  141. package/dist/cjs/data/oracleInfo.js.map +1 -1
  142. package/dist/cjs/data/oracles.d.ts +62 -5
  143. package/dist/cjs/data/oracles.d.ts.map +1 -1
  144. package/dist/cjs/data/oracles.js +90 -11
  145. package/dist/cjs/data/oracles.js.map +1 -1
  146. package/dist/cjs/data/orgPayouts.d.ts +87 -0
  147. package/dist/cjs/data/orgPayouts.d.ts.map +1 -0
  148. package/dist/cjs/data/orgPayouts.js +183 -0
  149. package/dist/cjs/data/orgPayouts.js.map +1 -0
  150. package/dist/cjs/data/plans.d.ts +8 -0
  151. package/dist/cjs/data/plans.d.ts.map +1 -0
  152. package/dist/cjs/data/plans.js +12 -0
  153. package/dist/cjs/data/plans.js.map +1 -0
  154. package/dist/cjs/data/profiles.d.ts +20 -0
  155. package/dist/cjs/data/profiles.d.ts.map +1 -1
  156. package/dist/cjs/data/profiles.js +63 -4
  157. package/dist/cjs/data/profiles.js.map +1 -1
  158. package/dist/cjs/data/queue.d.ts.map +1 -1
  159. package/dist/cjs/data/queue.js +3 -2
  160. package/dist/cjs/data/queue.js.map +1 -1
  161. package/dist/cjs/data/receipt.d.ts +7 -0
  162. package/dist/cjs/data/receipt.d.ts.map +1 -1
  163. package/dist/cjs/data/receipt.js +25 -6
  164. package/dist/cjs/data/receipt.js.map +1 -1
  165. package/dist/cjs/data/resources.d.ts +3 -0
  166. package/dist/cjs/data/resources.d.ts.map +1 -1
  167. package/dist/cjs/data/resources.js +4 -1
  168. package/dist/cjs/data/resources.js.map +1 -1
  169. package/dist/cjs/data/threads.d.ts +14 -0
  170. package/dist/cjs/data/threads.d.ts.map +1 -1
  171. package/dist/cjs/data/threads.js +40 -23
  172. package/dist/cjs/data/threads.js.map +1 -1
  173. package/dist/cjs/data/trace.d.ts +8 -0
  174. package/dist/cjs/data/trace.d.ts.map +1 -1
  175. package/dist/cjs/data/trace.js +1 -1
  176. package/dist/cjs/data/trace.js.map +1 -1
  177. package/dist/cjs/data/traceWords.d.ts +4 -1
  178. package/dist/cjs/data/traceWords.d.ts.map +1 -1
  179. package/dist/cjs/data/traceWords.js +8 -2
  180. package/dist/cjs/data/traceWords.js.map +1 -1
  181. package/dist/cjs/data/why.d.ts +38 -0
  182. package/dist/cjs/data/why.d.ts.map +1 -0
  183. package/dist/cjs/data/why.js +86 -0
  184. package/dist/cjs/data/why.js.map +1 -0
  185. package/dist/cjs/data/whyReceipt.d.ts +33 -0
  186. package/dist/cjs/data/whyReceipt.d.ts.map +1 -0
  187. package/dist/cjs/data/whyReceipt.js +291 -0
  188. package/dist/cjs/data/whyReceipt.js.map +1 -0
  189. package/dist/cjs/geo/exifcarry.d.ts +9 -0
  190. package/dist/cjs/geo/exifcarry.d.ts.map +1 -1
  191. package/dist/cjs/geo/exifcarry.js +35 -0
  192. package/dist/cjs/geo/exifcarry.js.map +1 -1
  193. package/dist/cjs/geo/geohash.d.ts +25 -0
  194. package/dist/cjs/geo/geohash.d.ts.map +1 -0
  195. package/dist/cjs/geo/geohash.js +114 -0
  196. package/dist/cjs/geo/geohash.js.map +1 -0
  197. package/dist/cjs/geo/provenance.d.ts +41 -0
  198. package/dist/cjs/geo/provenance.d.ts.map +1 -0
  199. package/dist/cjs/geo/provenance.js +134 -0
  200. package/dist/cjs/geo/provenance.js.map +1 -0
  201. package/dist/cjs/rubric/bridge.d.ts +98 -2
  202. package/dist/cjs/rubric/bridge.d.ts.map +1 -1
  203. package/dist/cjs/rubric/bridge.js +132 -15
  204. package/dist/cjs/rubric/bridge.js.map +1 -1
  205. package/dist/cjs/rubric/card.d.ts +28 -14
  206. package/dist/cjs/rubric/card.d.ts.map +1 -1
  207. package/dist/cjs/rubric/card.js +28 -7
  208. package/dist/cjs/rubric/card.js.map +1 -1
  209. package/dist/cjs/rubric/claimForm.d.ts +116 -0
  210. package/dist/cjs/rubric/claimForm.d.ts.map +1 -1
  211. package/dist/cjs/rubric/claimForm.js +12 -1
  212. package/dist/cjs/rubric/claimForm.js.map +1 -1
  213. package/dist/cjs/rubric/compose.d.ts +5 -0
  214. package/dist/cjs/rubric/compose.d.ts.map +1 -1
  215. package/dist/cjs/rubric/compose.js +9 -3
  216. package/dist/cjs/rubric/compose.js.map +1 -1
  217. package/dist/cjs/rubric/gateMet.d.ts.map +1 -1
  218. package/dist/cjs/rubric/gateMet.js +4 -2
  219. package/dist/cjs/rubric/gateMet.js.map +1 -1
  220. package/dist/cjs/rubric/leg.d.ts +2 -2
  221. package/dist/cjs/rubric/leg.d.ts.map +1 -1
  222. package/dist/cjs/rubric/leg.js +7 -5
  223. package/dist/cjs/rubric/leg.js.map +1 -1
  224. package/dist/cjs/rubric/marketPlan.d.ts +182 -0
  225. package/dist/cjs/rubric/marketPlan.d.ts.map +1 -0
  226. package/dist/cjs/rubric/marketPlan.js +419 -0
  227. package/dist/cjs/rubric/marketPlan.js.map +1 -0
  228. package/dist/cjs/rubric/observation.d.ts +95 -0
  229. package/dist/cjs/rubric/observation.d.ts.map +1 -0
  230. package/dist/cjs/rubric/observation.js +88 -0
  231. package/dist/cjs/rubric/observation.js.map +1 -0
  232. package/dist/cjs/rubric/pingLink.d.ts +45 -0
  233. package/dist/cjs/rubric/pingLink.d.ts.map +1 -0
  234. package/dist/cjs/rubric/pingLink.js +74 -0
  235. package/dist/cjs/rubric/pingLink.js.map +1 -0
  236. package/dist/cjs/rubric/pingMatch.d.ts +73 -0
  237. package/dist/cjs/rubric/pingMatch.d.ts.map +1 -0
  238. package/dist/cjs/rubric/pingMatch.js +65 -0
  239. package/dist/cjs/rubric/pingMatch.js.map +1 -0
  240. package/dist/cjs/rubric/survey.d.ts +65 -0
  241. package/dist/cjs/rubric/survey.d.ts.map +1 -0
  242. package/dist/cjs/rubric/survey.js +101 -0
  243. package/dist/cjs/rubric/survey.js.map +1 -0
  244. package/dist/cjs/rubric/terms.d.ts +15 -0
  245. package/dist/cjs/rubric/terms.d.ts.map +1 -1
  246. package/dist/cjs/rubric/terms.js +14 -1
  247. package/dist/cjs/rubric/terms.js.map +1 -1
  248. package/dist/cjs/rubric.d.ts +1 -1
  249. package/dist/cjs/rubric.d.ts.map +1 -1
  250. package/dist/cjs/rubric.js +4 -2
  251. package/dist/cjs/rubric.js.map +1 -1
  252. package/dist/esm/campaign/campaign.js +4 -3
  253. package/dist/esm/campaign/campaign.js.map +1 -1
  254. package/dist/esm/campaign/funding.d.ts.map +1 -1
  255. package/dist/esm/campaign/funding.js +3 -0
  256. package/dist/esm/campaign/funding.js.map +1 -1
  257. package/dist/esm/campaign/pool.d.ts.map +1 -1
  258. package/dist/esm/campaign/pool.js +2 -1
  259. package/dist/esm/campaign/pool.js.map +1 -1
  260. package/dist/esm/campaign/spots.d.ts.map +1 -1
  261. package/dist/esm/campaign/spots.js +8 -6
  262. package/dist/esm/campaign/spots.js.map +1 -1
  263. package/dist/esm/chain/ask.d.ts +104 -14
  264. package/dist/esm/chain/ask.d.ts.map +1 -1
  265. package/dist/esm/chain/ask.js +152 -80
  266. package/dist/esm/chain/ask.js.map +1 -1
  267. package/dist/esm/chain/askImage.d.ts +19 -0
  268. package/dist/esm/chain/askImage.d.ts.map +1 -0
  269. package/dist/esm/chain/askImage.js +50 -0
  270. package/dist/esm/chain/askImage.js.map +1 -0
  271. package/dist/esm/chain/bridge.d.ts +7 -33
  272. package/dist/esm/chain/bridge.d.ts.map +1 -1
  273. package/dist/esm/chain/bridge.js +10 -24
  274. package/dist/esm/chain/bridge.js.map +1 -1
  275. package/dist/esm/chain/claimSubmit.d.ts +15 -0
  276. package/dist/esm/chain/claimSubmit.d.ts.map +1 -0
  277. package/dist/esm/chain/claimSubmit.js +10 -0
  278. package/dist/esm/chain/claimSubmit.js.map +1 -0
  279. package/dist/esm/chain/delegate.d.ts +52 -7
  280. package/dist/esm/chain/delegate.d.ts.map +1 -1
  281. package/dist/esm/chain/delegate.js +64 -13
  282. package/dist/esm/chain/delegate.js.map +1 -1
  283. package/dist/esm/chain/domainIndexer.d.ts +26 -0
  284. package/dist/esm/chain/domainIndexer.d.ts.map +1 -0
  285. package/dist/esm/chain/domainIndexer.js +48 -0
  286. package/dist/esm/chain/domainIndexer.js.map +1 -0
  287. package/dist/esm/chain/entityShape.d.ts +233 -0
  288. package/dist/esm/chain/entityShape.d.ts.map +1 -0
  289. package/dist/esm/chain/entityShape.js +231 -0
  290. package/dist/esm/chain/entityShape.js.map +1 -0
  291. package/dist/esm/chain/env.d.ts +103 -6
  292. package/dist/esm/chain/env.d.ts.map +1 -1
  293. package/dist/esm/chain/env.js +174 -12
  294. package/dist/esm/chain/env.js.map +1 -1
  295. package/dist/esm/chain/guest.d.ts +14 -0
  296. package/dist/esm/chain/guest.d.ts.map +1 -1
  297. package/dist/esm/chain/guest.js +7 -8
  298. package/dist/esm/chain/guest.js.map +1 -1
  299. package/dist/esm/chain/money.d.ts +47 -2
  300. package/dist/esm/chain/money.d.ts.map +1 -1
  301. package/dist/esm/chain/money.js +54 -4
  302. package/dist/esm/chain/money.js.map +1 -1
  303. package/dist/esm/chain/orgReviewBilling.d.ts +124 -0
  304. package/dist/esm/chain/orgReviewBilling.d.ts.map +1 -0
  305. package/dist/esm/chain/orgReviewBilling.js +241 -0
  306. package/dist/esm/chain/orgReviewBilling.js.map +1 -0
  307. package/dist/esm/chain/orgReviewBillingSign.d.ts +63 -0
  308. package/dist/esm/chain/orgReviewBillingSign.d.ts.map +1 -0
  309. package/dist/esm/chain/orgReviewBillingSign.js +124 -0
  310. package/dist/esm/chain/orgReviewBillingSign.js.map +1 -0
  311. package/dist/esm/chain/payoutSettings.d.ts +97 -0
  312. package/dist/esm/chain/payoutSettings.d.ts.map +1 -0
  313. package/dist/esm/chain/payoutSettings.js +111 -0
  314. package/dist/esm/chain/payoutSettings.js.map +1 -0
  315. package/dist/esm/chain/payoutTerms.d.ts +72 -0
  316. package/dist/esm/chain/payoutTerms.d.ts.map +1 -0
  317. package/dist/esm/chain/payoutTerms.js +127 -0
  318. package/dist/esm/chain/payoutTerms.js.map +1 -0
  319. package/dist/esm/chain/query.d.ts +14 -0
  320. package/dist/esm/chain/query.d.ts.map +1 -1
  321. package/dist/esm/chain/query.js +25 -0
  322. package/dist/esm/chain/query.js.map +1 -1
  323. package/dist/esm/chain/reviewBilling.d.ts +86 -0
  324. package/dist/esm/chain/reviewBilling.d.ts.map +1 -0
  325. package/dist/esm/chain/reviewBilling.js +215 -0
  326. package/dist/esm/chain/reviewBilling.js.map +1 -0
  327. package/dist/esm/chain/store.d.ts +7 -6
  328. package/dist/esm/chain/store.d.ts.map +1 -1
  329. package/dist/esm/chain/store.js +7 -6
  330. package/dist/esm/chain/store.js.map +1 -1
  331. package/dist/esm/chain/subscription.d.ts +0 -7
  332. package/dist/esm/chain/subscription.d.ts.map +1 -1
  333. package/dist/esm/chain/subscription.js +4 -13
  334. package/dist/esm/chain/subscription.js.map +1 -1
  335. package/dist/esm/chain/takeBack.d.ts +12 -0
  336. package/dist/esm/chain/takeBack.d.ts.map +1 -1
  337. package/dist/esm/chain/takeBack.js +22 -9
  338. package/dist/esm/chain/takeBack.js.map +1 -1
  339. package/dist/esm/chain/why.d.ts +44 -0
  340. package/dist/esm/chain/why.d.ts.map +1 -0
  341. package/dist/esm/chain/why.js +111 -0
  342. package/dist/esm/chain/why.js.map +1 -0
  343. package/dist/esm/chain/whyMint.d.ts +8 -0
  344. package/dist/esm/chain/whyMint.d.ts.map +1 -0
  345. package/dist/esm/chain/whyMint.js +17 -0
  346. package/dist/esm/chain/whyMint.js.map +1 -0
  347. package/dist/esm/chain.d.ts +8 -4
  348. package/dist/esm/chain.d.ts.map +1 -1
  349. package/dist/esm/chain.js +9 -4
  350. package/dist/esm/chain.js.map +1 -1
  351. package/dist/esm/config.d.ts +37 -5
  352. package/dist/esm/config.d.ts.map +1 -1
  353. package/dist/esm/config.js +9 -3
  354. package/dist/esm/config.js.map +1 -1
  355. package/dist/esm/data/agent.d.ts.map +1 -1
  356. package/dist/esm/data/agent.js +5 -4
  357. package/dist/esm/data/agent.js.map +1 -1
  358. package/dist/esm/data/askEntity.d.ts +40 -0
  359. package/dist/esm/data/askEntity.d.ts.map +1 -0
  360. package/dist/esm/data/askEntity.js +41 -0
  361. package/dist/esm/data/askEntity.js.map +1 -0
  362. package/dist/esm/data/askLinks.d.ts +6 -0
  363. package/dist/esm/data/askLinks.d.ts.map +1 -0
  364. package/dist/esm/data/askLinks.js +16 -0
  365. package/dist/esm/data/askLinks.js.map +1 -0
  366. package/dist/esm/data/board/assemble.d.ts.map +1 -1
  367. package/dist/esm/data/board/assemble.js +15 -2
  368. package/dist/esm/data/board/assemble.js.map +1 -1
  369. package/dist/esm/data/board/facts.d.ts +11 -0
  370. package/dist/esm/data/board/facts.d.ts.map +1 -1
  371. package/dist/esm/data/board/facts.js +15 -0
  372. package/dist/esm/data/board/facts.js.map +1 -1
  373. package/dist/esm/data/board/read.d.ts.map +1 -1
  374. package/dist/esm/data/board/read.js +2 -1
  375. package/dist/esm/data/board/read.js.map +1 -1
  376. package/dist/esm/data/board/types.d.ts +9 -0
  377. package/dist/esm/data/board/types.d.ts.map +1 -1
  378. package/dist/esm/data/board/types.js.map +1 -1
  379. package/dist/esm/data/docs.d.ts +10 -2
  380. package/dist/esm/data/docs.d.ts.map +1 -1
  381. package/dist/esm/data/docs.js +43 -4
  382. package/dist/esm/data/docs.js.map +1 -1
  383. package/dist/esm/data/format.js +1 -1
  384. package/dist/esm/data/format.js.map +1 -1
  385. package/dist/esm/data/install.d.ts +8 -0
  386. package/dist/esm/data/install.d.ts.map +1 -1
  387. package/dist/esm/data/install.js +8 -0
  388. package/dist/esm/data/install.js.map +1 -1
  389. package/dist/esm/data/oracleInfo.d.ts +6 -1
  390. package/dist/esm/data/oracleInfo.d.ts.map +1 -1
  391. package/dist/esm/data/oracleInfo.js +22 -3
  392. package/dist/esm/data/oracleInfo.js.map +1 -1
  393. package/dist/esm/data/oracles.d.ts +62 -5
  394. package/dist/esm/data/oracles.d.ts.map +1 -1
  395. package/dist/esm/data/oracles.js +87 -12
  396. package/dist/esm/data/oracles.js.map +1 -1
  397. package/dist/esm/data/orgPayouts.d.ts +87 -0
  398. package/dist/esm/data/orgPayouts.d.ts.map +1 -0
  399. package/dist/esm/data/orgPayouts.js +170 -0
  400. package/dist/esm/data/orgPayouts.js.map +1 -0
  401. package/dist/esm/data/plans.d.ts +8 -0
  402. package/dist/esm/data/plans.d.ts.map +1 -0
  403. package/dist/esm/data/plans.js +8 -0
  404. package/dist/esm/data/plans.js.map +1 -0
  405. package/dist/esm/data/profiles.d.ts +20 -0
  406. package/dist/esm/data/profiles.d.ts.map +1 -1
  407. package/dist/esm/data/profiles.js +60 -4
  408. package/dist/esm/data/profiles.js.map +1 -1
  409. package/dist/esm/data/queue.d.ts.map +1 -1
  410. package/dist/esm/data/queue.js +3 -2
  411. package/dist/esm/data/queue.js.map +1 -1
  412. package/dist/esm/data/receipt.d.ts +7 -0
  413. package/dist/esm/data/receipt.d.ts.map +1 -1
  414. package/dist/esm/data/receipt.js +26 -7
  415. package/dist/esm/data/receipt.js.map +1 -1
  416. package/dist/esm/data/resources.d.ts +3 -0
  417. package/dist/esm/data/resources.d.ts.map +1 -1
  418. package/dist/esm/data/resources.js +2 -0
  419. package/dist/esm/data/resources.js.map +1 -1
  420. package/dist/esm/data/threads.d.ts +14 -0
  421. package/dist/esm/data/threads.d.ts.map +1 -1
  422. package/dist/esm/data/threads.js +40 -24
  423. package/dist/esm/data/threads.js.map +1 -1
  424. package/dist/esm/data/trace.d.ts +8 -0
  425. package/dist/esm/data/trace.d.ts.map +1 -1
  426. package/dist/esm/data/trace.js +1 -1
  427. package/dist/esm/data/trace.js.map +1 -1
  428. package/dist/esm/data/traceWords.d.ts +4 -1
  429. package/dist/esm/data/traceWords.d.ts.map +1 -1
  430. package/dist/esm/data/traceWords.js +8 -2
  431. package/dist/esm/data/traceWords.js.map +1 -1
  432. package/dist/esm/data/why.d.ts +38 -0
  433. package/dist/esm/data/why.d.ts.map +1 -0
  434. package/dist/esm/data/why.js +78 -0
  435. package/dist/esm/data/why.js.map +1 -0
  436. package/dist/esm/data/whyReceipt.d.ts +33 -0
  437. package/dist/esm/data/whyReceipt.d.ts.map +1 -0
  438. package/dist/esm/data/whyReceipt.js +284 -0
  439. package/dist/esm/data/whyReceipt.js.map +1 -0
  440. package/dist/esm/geo/exifcarry.d.ts +9 -0
  441. package/dist/esm/geo/exifcarry.d.ts.map +1 -1
  442. package/dist/esm/geo/exifcarry.js +34 -0
  443. package/dist/esm/geo/exifcarry.js.map +1 -1
  444. package/dist/esm/geo/geohash.d.ts +25 -0
  445. package/dist/esm/geo/geohash.d.ts.map +1 -0
  446. package/dist/esm/geo/geohash.js +109 -0
  447. package/dist/esm/geo/geohash.js.map +1 -0
  448. package/dist/esm/geo/provenance.d.ts +41 -0
  449. package/dist/esm/geo/provenance.d.ts.map +1 -0
  450. package/dist/esm/geo/provenance.js +129 -0
  451. package/dist/esm/geo/provenance.js.map +1 -0
  452. package/dist/esm/rubric/bridge.d.ts +98 -2
  453. package/dist/esm/rubric/bridge.d.ts.map +1 -1
  454. package/dist/esm/rubric/bridge.js +130 -14
  455. package/dist/esm/rubric/bridge.js.map +1 -1
  456. package/dist/esm/rubric/card.d.ts +28 -14
  457. package/dist/esm/rubric/card.d.ts.map +1 -1
  458. package/dist/esm/rubric/card.js +24 -5
  459. package/dist/esm/rubric/card.js.map +1 -1
  460. package/dist/esm/rubric/claimForm.d.ts +116 -0
  461. package/dist/esm/rubric/claimForm.d.ts.map +1 -1
  462. package/dist/esm/rubric/claimForm.js +11 -0
  463. package/dist/esm/rubric/claimForm.js.map +1 -1
  464. package/dist/esm/rubric/compose.d.ts +5 -0
  465. package/dist/esm/rubric/compose.d.ts.map +1 -1
  466. package/dist/esm/rubric/compose.js +7 -2
  467. package/dist/esm/rubric/compose.js.map +1 -1
  468. package/dist/esm/rubric/gateMet.d.ts.map +1 -1
  469. package/dist/esm/rubric/gateMet.js +4 -2
  470. package/dist/esm/rubric/gateMet.js.map +1 -1
  471. package/dist/esm/rubric/leg.d.ts +2 -2
  472. package/dist/esm/rubric/leg.d.ts.map +1 -1
  473. package/dist/esm/rubric/leg.js +7 -5
  474. package/dist/esm/rubric/leg.js.map +1 -1
  475. package/dist/esm/rubric/marketPlan.d.ts +182 -0
  476. package/dist/esm/rubric/marketPlan.d.ts.map +1 -0
  477. package/dist/esm/rubric/marketPlan.js +403 -0
  478. package/dist/esm/rubric/marketPlan.js.map +1 -0
  479. package/dist/esm/rubric/observation.d.ts +95 -0
  480. package/dist/esm/rubric/observation.d.ts.map +1 -0
  481. package/dist/esm/rubric/observation.js +82 -0
  482. package/dist/esm/rubric/observation.js.map +1 -0
  483. package/dist/esm/rubric/pingLink.d.ts +45 -0
  484. package/dist/esm/rubric/pingLink.d.ts.map +1 -0
  485. package/dist/esm/rubric/pingLink.js +69 -0
  486. package/dist/esm/rubric/pingLink.js.map +1 -0
  487. package/dist/esm/rubric/pingMatch.d.ts +73 -0
  488. package/dist/esm/rubric/pingMatch.d.ts.map +1 -0
  489. package/dist/esm/rubric/pingMatch.js +60 -0
  490. package/dist/esm/rubric/pingMatch.js.map +1 -0
  491. package/dist/esm/rubric/survey.d.ts +65 -0
  492. package/dist/esm/rubric/survey.d.ts.map +1 -0
  493. package/dist/esm/rubric/survey.js +94 -0
  494. package/dist/esm/rubric/survey.js.map +1 -0
  495. package/dist/esm/rubric/terms.d.ts +15 -0
  496. package/dist/esm/rubric/terms.d.ts.map +1 -1
  497. package/dist/esm/rubric/terms.js +14 -2
  498. package/dist/esm/rubric/terms.js.map +1 -1
  499. package/dist/esm/rubric.d.ts +1 -1
  500. package/dist/esm/rubric.d.ts.map +1 -1
  501. package/dist/esm/rubric.js +1 -1
  502. package/dist/esm/rubric.js.map +1 -1
  503. package/package.json +8 -2
@@ -21,10 +21,42 @@ import { givenConfig } from "../given.js";
21
21
  * Next inlines), without importing the whole resolver: `toBase` and friends
22
22
  * ride into browser pages, and the resolver's tables would ride with them.
23
23
  */
24
- export const askDenom = () => {
25
- const env = typeof process === "undefined" || !process.env ? undefined : process.env.NEXT_PUBLIC_ASK_DENOM;
26
- return givenConfig().askDenom ?? (env === "upay" ? "upay" : "uixo");
24
+ /** Noble USDC on ixo mainnet: the ICS-20 hash of `transfer/channel-26/uusdc`. Mainnet only; testnet has no such route. */
25
+ export const USDC_MAINNET = "ibc/6BBE9BD4246F8E04948D5A4EEE7164B2630263B9EBB5E7DC5F0A46C62A2FF97B";
26
+ /** A reward coin, or IXO for anything else (PAY included: `NEXT_PUBLIC_ASK_DENOM=upay` no longer makes rewards PAY). */
27
+ export const asRewardDenom = (value) => (value === USDC_MAINNET ? USDC_MAINNET : "uixo");
28
+ /**
29
+ * Noble USDC's denom on a network, or null where there is none. Checked 2026-10-16 against each chain's bank
30
+ * supply and IBC denom traces: devnet holds no IBC coin at all, and testnet's four are AXL and OSMO, no USDC.
31
+ */
32
+ export const usdcDenom = (network) => (network === "mainnet" ? USDC_MAINNET : null);
33
+ const envDenom = () => givenConfig().askDenom ?? (typeof process === "undefined" || !process.env ? undefined : process.env.NEXT_PUBLIC_ASK_DENOM);
34
+ /** The default reward coin for new asks: `NEXT_PUBLIC_ASK_DENOM` may choose between IXO and USDC only. */
35
+ export const askDenom = () => asRewardDenom(envDenom());
36
+ /**
37
+ * The default reward coin on a network (a poster may pick the other): USDC where it exists (mainnet) unless the
38
+ * deployment says IXO, and IXO where USDC does not exist.
39
+ */
40
+ export const rewardDenom = (network) => {
41
+ const usdc = usdcDenom(network);
42
+ return usdc && envDenom() !== "uixo" ? usdc : "uixo";
27
43
  };
44
+ /**
45
+ * What a checker's fee (an ask's on-chain evaluation leg) is paid in, by network (owner ruling 2026-10-14):
46
+ * PAY (upay) on every network, mainnet included. A card's `{currency: "PAY"}` price is used as upay directly
47
+ * (`servicePriceBase`). Rewards are a separate coin (`rewardDenom`: USDC on mainnet).
48
+ */
49
+ export const checkerFeeDenom = (_network) => "upay";
50
+ /** A bank send's coins: same denoms summed, zeros dropped, sorted by denom (the chain refuses unsorted or duplicate coins). */
51
+ export function coinsOf(parts) {
52
+ const sums = new Map();
53
+ for (const [denom, amount] of parts)
54
+ if (amount > 0n)
55
+ sums.set(denom, (sums.get(denom) ?? 0n) + amount);
56
+ return [...sums].sort(([a], [b]) => (a < b ? -1 : 1)).map(([denom, amount]) => ({ denom, amount: String(amount) }));
57
+ }
58
+ /** The ticker a person reads. Unknown denoms read "IXO", exactly as every inline `=== "upay" ? "PAY" : "IXO"` did. */
59
+ export const symbolOf = (denom) => (denom === "upay" ? "PAY" : denom === USDC_MAINNET ? "USDC" : "IXO");
28
60
  /** Base units per display unit. Both denoms are 6-decimal micro units. */
29
61
  export const MICRO = 1_000_000;
30
62
  /**
@@ -61,5 +93,23 @@ export const toBase = (display) => baseFromPay(display);
61
93
  * dollar face. IXO floats, so it never can — the face is only honest where
62
94
  * the peg is.
63
95
  */
64
- export const isPegged = (denom) => denom === "upay";
96
+ export const isPegged = (denom) => denom === "upay" || denom === USDC_MAINNET;
97
+ /**
98
+ * Refused before anything is signed when the org's admin account cannot fund its ask: the rewards (reward × quota,
99
+ * 0 off chain) in the reward coin (IXO or USDC) and the reviews (fee × quota) in PAY, base units of each coin:
100
+ * "<Org> needs 5 IXO for rewards and 1 PAY for reviews; it holds 3 IXO and 0 PAY". Null when it can.
101
+ */
102
+ export function orgShortfall(org, reward, fee, held) {
103
+ const need = new Map();
104
+ for (const part of [reward, fee])
105
+ if (part.base > 0)
106
+ need.set(part.denom, (need.get(part.denom) ?? 0) + part.base);
107
+ if ([...need].every(([denom, base]) => Number(held[denom] ?? 0) >= base))
108
+ return null;
109
+ const face = (base) => (base / MICRO).toLocaleString("en-US", { maximumFractionDigits: 6 });
110
+ const rewards = reward.base > 0 ? `${face(reward.base)} ${symbolOf(reward.denom)} for rewards` : null;
111
+ const reviews = fee.base > 0 ? `${face(fee.base)}${rewards && fee.denom === reward.denom ? "" : ` ${symbolOf(fee.denom)}`} for reviews` : null;
112
+ const holds = [...need.keys()].map((denom) => `${face(Number(held[denom] ?? 0))} ${symbolOf(denom)}`).join(" and ");
113
+ return `${org} needs ${[rewards, reviews].filter(Boolean).join(" and ")}; it holds ${holds}`;
114
+ }
65
115
  //# sourceMappingURL=money.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"money.js","sourceRoot":"","sources":["../../../src/chain/money.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C;;;;;GAKG;AACH;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAa,EAAE;IACrC,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC3G,OAAO,WAAW,EAAE,CAAC,QAAQ,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,gBAAgB;QAAE,MAAM,IAAI,UAAU,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;IAC9G,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC;2EACuE;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,kHAAkH;AAClH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC"}
1
+ {"version":3,"file":"money.js","sourceRoot":"","sources":["../../../src/chain/money.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * "Pay for reviews" on an org's settings page (owner request 2026-10-14): where an org's per-review checker
3
+ * billing stands on one oracle, read from the oracle's Decision API (eval-oracle contract 1.22.0):
4
+ * `GET /v1/api/source/review-billing` with `X-Source-Id`, action `review-billing/read`, never the token.
5
+ *
6
+ * Read side only: the words, the status parse and the reads. Signing (the payment delegation, the PUT, the
7
+ * DELETE and the revoke) is in `orgReviewBillingSign.ts`, so the MCP and the page's first paint never carry
8
+ * the x402 package. Every call is best effort and never throws.
9
+ */
10
+ /** The owner's default budget: 1,000 PAY (owner ruling); each signature is a new budget. */
11
+ export declare const DEFAULT_CAP_PAY = 1000;
12
+ /** 1 PAY = 1,000,000 upay. */
13
+ export declare const UPAY_PER_PAY = 1000000;
14
+ export type ReviewBillingState = "active" | "expired" | "exhausted" | "payer_not_owner";
15
+ export interface ReviewBillingStatus {
16
+ sourceId: string;
17
+ state: ReviewBillingState | string;
18
+ payer: string;
19
+ delegationCid: string;
20
+ /** upay, as decimal strings. */
21
+ maxAmount: string;
22
+ spent: string;
23
+ remaining: string;
24
+ expiresAt: string | null;
25
+ /** The payer's credits at the facilitator (upay); null until it answers the oracle. */
26
+ creditsAvailable: string | null;
27
+ pricePerReview: {
28
+ protocolDid: string;
29
+ amount: string;
30
+ }[];
31
+ pausedCollections: {
32
+ collectionId: string;
33
+ reason: string;
34
+ }[];
35
+ }
36
+ /** The oracle's `ReviewBilling` body, strictly: null when a field it must carry is missing or not upay. */
37
+ export declare function parseReviewBilling(body: unknown): ReviewBillingStatus | null;
38
+ /** upay → "1,000 PAY" / "0.5 PAY". */
39
+ export declare const payFace: (upay: string | number) => string;
40
+ /** A cap the person typed, in PAY → upay; null unless a positive whole number of upay. */
41
+ export declare function capUpay(pay: string | number): string | null;
42
+ /** The status, in words: one line. */
43
+ export declare function statusLine(status: ReviewBillingStatus): string;
44
+ /** A pause the payer can clear, in words (S3 contract 1.22.0, collection pause reasons). */
45
+ export declare function pauseWords(reason: string): string | null;
46
+ /** The oracle's refusal of a PUT or DELETE (contract 1.22.0), in words. */
47
+ export declare function refusalWords(status: number, code: string, reason: string, message?: string): string;
48
+ /** The three ways in, for anyone who cannot (or need not) do it here. */
49
+ export declare function waysIn(org: {
50
+ name: string;
51
+ settingsUrl: string;
52
+ }, oracle: {
53
+ url: string;
54
+ }, sourceId: string | null): string[];
55
+ /** Signs one Decision API invocation as a member or controller: over the source when given, else the account. */
56
+ export type SourceMint = (audience: string, can: string, sourceId: string | null) => Promise<string>;
57
+ /** The signer's own invocation from their ed25519 key (as `ownerMint`): no proof (a controller is a root), five minutes, a nonce. */
58
+ export declare function sourceMint(member: {
59
+ address: string;
60
+ mnemonic: string;
61
+ }): SourceMint;
62
+ export interface CallOptions {
63
+ fetch?: typeof fetch;
64
+ }
65
+ /** One Decision API call, signed; the parsed body and the error's `code` / `details.reason` / message. */
66
+ export declare function sourceCall(oracleUrl: string, audience: string, mint: SourceMint, call: {
67
+ method?: string;
68
+ path: string;
69
+ can: string;
70
+ sourceId: string | null;
71
+ body?: unknown;
72
+ }, options?: CallOptions): Promise<{
73
+ status: number;
74
+ body: unknown;
75
+ code: string;
76
+ reason: string;
77
+ message: string;
78
+ } | null>;
79
+ export interface OracleSource {
80
+ sourceId: string;
81
+ name: string;
82
+ status: string;
83
+ billingMode: string;
84
+ }
85
+ /**
86
+ * The org's Decision API sources on this oracle: as a controller (`GET /v1/api/organisations/{org}/sources`, every
87
+ * state), else the signer's own memberships of the org (`GET /v1/api/sources`). Null when neither answers, or when the org route refuses (403) and the viewer has no match of their own.
88
+ * shortcut: the first page only (an org has a handful of sources per oracle); page on `cursor` if that changes.
89
+ */
90
+ export declare function orgSources(oracleUrl: string, audience: string, org: string, mint: SourceMint, options?: CallOptions): Promise<OracleSource[] | null>;
91
+ export type BillingRead =
92
+ /** The org has no Decision API source on this oracle (or none linked yet: `pending`). */
93
+ {
94
+ kind: "no-source";
95
+ pending: boolean;
96
+ }
97
+ /** A linked source, and no review billing stored on it. */
98
+ | {
99
+ kind: "off";
100
+ source: OracleSource;
101
+ } | {
102
+ kind: "on";
103
+ source: OracleSource;
104
+ status: ReviewBillingStatus;
105
+ }
106
+ /** Nothing readable as this signer. */
107
+ | {
108
+ kind: "unread";
109
+ };
110
+ /** The oracle's did:web as it publishes it (the UCAN audience); null when unread. */
111
+ export declare function oracleAudience(oracleUrl: string, options?: CallOptions): Promise<string | null>;
112
+ /**
113
+ * Where the org's review billing stands on one oracle, read as the signer: the org's linked sources, then each one's
114
+ * stored delegation (the oracle allows one per org, so the first found is the one). Off: the source to turn it on for,
115
+ * an x402 one first.
116
+ */
117
+ export declare function readOrgReviewBilling(oracleUrl: string, org: string, mint: SourceMint, options?: CallOptions): Promise<BillingRead>;
118
+ /** What the settings page offers this viewer: the owner with a signing key acts; everyone else reads the ways in. */
119
+ export type Controls = "allow" | "raise-or-off" | "link-first" | "ways" | "wait";
120
+ export declare function controlsFor(read: BillingRead | "loading" | null, viewer: {
121
+ isOwner: boolean;
122
+ hasKey: boolean;
123
+ }): Controls;
124
+ //# sourceMappingURL=orgReviewBilling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgReviewBilling.d.ts","sourceRoot":"","sources":["../../../src/chain/orgReviewBilling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * "Pay for reviews" on an org's settings page (owner request 2026-10-14): where an org's per-review checker
3
+ * billing stands on one oracle, read from the oracle's Decision API (eval-oracle contract 1.22.0):
4
+ * `GET /v1/api/source/review-billing` with `X-Source-Id`, action `review-billing/read`, never the token.
5
+ *
6
+ * Read side only: the words, the status parse and the reads. Signing (the payment delegation, the PUT, the
7
+ * DELETE and the revoke) is in `orgReviewBillingSign.ts`, so the MCP and the page's first paint never carry
8
+ * the x402 package. Every call is best effort and never throws.
9
+ */
10
+ /** The owner's default budget: 1,000 PAY (owner ruling); each signature is a new budget. */
11
+ export const DEFAULT_CAP_PAY = 1000;
12
+ /** 1 PAY = 1,000,000 upay. */
13
+ export const UPAY_PER_PAY = 1_000_000;
14
+ const UPAY = /^(0|[1-9]\d{0,77})$/;
15
+ const str = (value) => (typeof value === "string" && value ? value : null);
16
+ /** The oracle's `ReviewBilling` body, strictly: null when a field it must carry is missing or not upay. */
17
+ export function parseReviewBilling(body) {
18
+ if (!body || typeof body !== "object" || Array.isArray(body))
19
+ return null;
20
+ const b = body;
21
+ const sourceId = str(b.sourceId);
22
+ const state = str(b.state);
23
+ const payer = str(b.payer);
24
+ const delegationCid = str(b.delegationCid);
25
+ const [maxAmount, spent, remaining] = [b.maxAmount, b.spent, b.remaining].map((one) => (typeof one === "string" && UPAY.test(one) ? one : null));
26
+ if (!sourceId || !state || !payer || !delegationCid || !maxAmount || !spent || !remaining)
27
+ return null;
28
+ const credits = b.credits;
29
+ const prices = Array.isArray(b.pricePerReview) ? b.pricePerReview : [];
30
+ const paused = Array.isArray(b.pausedCollections) ? b.pausedCollections : [];
31
+ return {
32
+ sourceId,
33
+ state,
34
+ payer,
35
+ delegationCid,
36
+ maxAmount,
37
+ spent,
38
+ remaining,
39
+ expiresAt: str(b.expiresAt),
40
+ creditsAvailable: typeof credits?.available === "string" && UPAY.test(credits.available) ? credits.available : null,
41
+ pricePerReview: prices.filter((one) => typeof one?.amount === "string" && UPAY.test(one.amount)).map((one) => ({ protocolDid: String(one.protocolDid ?? ""), amount: one.amount })),
42
+ pausedCollections: paused.filter((one) => typeof one?.collectionId === "string" && typeof one.reason === "string").map((one) => ({ collectionId: one.collectionId, reason: one.reason }))
43
+ };
44
+ }
45
+ /** upay → "1,000 PAY" / "0.5 PAY". */
46
+ export const payFace = (upay) => `${(Number(upay) / UPAY_PER_PAY).toLocaleString("en-US", { maximumFractionDigits: 6 })} PAY`;
47
+ /** A cap the person typed, in PAY → upay; null unless a positive whole number of upay. */
48
+ export function capUpay(pay) {
49
+ const n = Number(String(pay).trim().replace(/,/g, ""));
50
+ if (String(pay).trim() === "" || !Number.isFinite(n) || n <= 0)
51
+ return null;
52
+ const upay = Math.round(n * UPAY_PER_PAY);
53
+ return Number.isSafeInteger(upay) && upay > 0 ? String(upay) : null;
54
+ }
55
+ /** The status, in words: one line. */
56
+ export function statusLine(status) {
57
+ const head = {
58
+ active: "On",
59
+ expired: "Off: the permission expired",
60
+ exhausted: "Off: the budget is used up",
61
+ payer_not_owner: "Off: it was signed by someone who no longer owns the organisation"
62
+ };
63
+ return `${head[status.state] ?? `State: ${status.state}`}. Budget ${payFace(status.maxAmount)}, ${payFace(status.spent)} spent under this budget, ${payFace(status.remaining)} left in this budget.`;
64
+ }
65
+ /** A pause the payer can clear, in words (S3 contract 1.22.0, collection pause reasons). */
66
+ export function pauseWords(reason) {
67
+ if (reason === "payer-credits")
68
+ return "Reviews paused: top up the owner's credits";
69
+ if (reason === "payer-delegation")
70
+ return "Reviews paused: Pay for reviews needs turning on again (or a higher cap)";
71
+ if (reason === "oracle-plan")
72
+ return "Reviews paused: the oracle's plan is inactive";
73
+ return null;
74
+ }
75
+ /** The oracle's refusal of a PUT or DELETE (contract 1.22.0), in words. */
76
+ export function refusalWords(status, code, reason, message = "") {
77
+ switch (reason) {
78
+ case "not_org_owner":
79
+ return "Only the organisation's owner on chain can turn this on: their credits pay for the reviews.";
80
+ case "review_billing_elsewhere":
81
+ return "Another of the organisation's Decision API connections on this oracle already pays for reviews. Turn it off there first (in the Decision Console).";
82
+ case "billing_mode_none":
83
+ return "The organisation's connection to this oracle is not set up for billing, so it cannot pay for reviews. Ask IXO to switch it on.";
84
+ case "cap_below_price":
85
+ return "The cap is below the price of one review. Raise it.";
86
+ case "expires_too_soon":
87
+ return "The permission must last at least a day.";
88
+ case "wrong_audience":
89
+ case "not_oracle_bound":
90
+ case "not_a_payment_delegation":
91
+ case "bad_signature":
92
+ case "not_yet_valid":
93
+ return `The oracle refused the signed permission (${reason}). Nothing was stored.`;
94
+ }
95
+ if (code === "SOURCE_PENDING_LINK")
96
+ return "The organisation's connection to this oracle is not linked yet. Link it (the OpenHands HQ plugin, step 8, or the Decision Console), then try again.";
97
+ if (code === "SOURCE_DISPUTED")
98
+ return "The organisation's link to this oracle is disputed. Sort it out in the Decision Console, then try again.";
99
+ if (code === "SOURCE_PAUSED" || status === 503)
100
+ return "The oracle cannot take payments just now. Try again in a few minutes.";
101
+ if (status === 401 || status === 403)
102
+ return "The oracle did not accept your signature for this organisation.";
103
+ if (status === 404)
104
+ return "This oracle does not bill reviews per check.";
105
+ return `The oracle said no${message ? `: ${message}` : ` (${status})`}.`;
106
+ }
107
+ /** The three ways in, for anyone who cannot (or need not) do it here. */
108
+ export function waysIn(org, oracle, sourceId) {
109
+ return [
110
+ `In OpenHands: ${org.name}'s owner opens ${org.settingsUrl}#pay-for-reviews signed in with their IXO account and clicks "Allow reviews to be paid from my credits".`,
111
+ "In the Decision Console: Billing › Pay for reviews.",
112
+ `In Claude Code: eval-oracle api review-billing enable --source ${sourceId ?? "<source id>"} --kit ${oracle.url.replace(/\/$/, "")} --cap <PAY> (it previews first; add --yes to sign).`
113
+ ];
114
+ }
115
+ /** The signer's own invocation from their ed25519 key (as `ownerMint`): no proof (a controller is a root), five minutes, a nonce. */
116
+ export function sourceMint(member) {
117
+ return async (audience, can, sourceId) => {
118
+ const { signerFromMnemonic, createInvocation, serializeInvocation } = await import("@ixo/ucan");
119
+ const { signer } = await signerFromMnemonic(member.mnemonic, `did:ixo:${member.address}`);
120
+ const invocation = await createInvocation({
121
+ issuer: signer,
122
+ audience,
123
+ capability: { can, with: sourceId ? `ixo:oracle/${audience}/source/${sourceId}` : `ixo:oracle/${audience}` },
124
+ expiration: Math.floor(Date.now() / 1000) + 300,
125
+ facts: [{ nonce: crypto.randomUUID() }]
126
+ });
127
+ return serializeInvocation(invocation);
128
+ };
129
+ }
130
+ const TIMEOUT = 10_000;
131
+ const base = (url) => url.replace(/\/$/, "");
132
+ /** One Decision API call, signed; the parsed body and the error's `code` / `details.reason` / message. */
133
+ export async function sourceCall(oracleUrl, audience, mint, call, options = {}) {
134
+ try {
135
+ const response = await (options.fetch ?? fetch)(`${base(oracleUrl)}${call.path}`, {
136
+ method: call.method ?? "GET",
137
+ headers: {
138
+ accept: "application/json",
139
+ authorization: `Bearer ${await mint(audience, call.can, call.sourceId)}`,
140
+ "x-auth-type": "ucan",
141
+ ...(call.sourceId ? { "x-source-id": call.sourceId } : {}),
142
+ ...(call.body !== undefined ? { "content-type": "application/json" } : {})
143
+ },
144
+ ...(call.body !== undefined ? { body: JSON.stringify(call.body) } : {}),
145
+ signal: AbortSignal.timeout(TIMEOUT)
146
+ });
147
+ const body = (await response.json().catch(() => null));
148
+ const error = response.ok ? null : body?.error;
149
+ return {
150
+ status: response.status,
151
+ body,
152
+ code: typeof error?.code === "string" ? error.code : "",
153
+ reason: typeof error?.details?.reason === "string" ? error.details.reason : "",
154
+ message: typeof error?.message === "string" ? error.message.slice(0, 400) : ""
155
+ };
156
+ }
157
+ catch {
158
+ return null;
159
+ }
160
+ }
161
+ const sourceOf = (raw) => {
162
+ const s = raw;
163
+ return typeof s?.sourceId === "string"
164
+ ? { sourceId: s.sourceId, name: String(s.name ?? ""), status: String(s.status ?? ""), billingMode: String(s.billingMode ?? ""), companyEntityDid: typeof s.companyEntityDid === "string" ? s.companyEntityDid : null }
165
+ : null;
166
+ };
167
+ /**
168
+ * The org's Decision API sources on this oracle: as a controller (`GET /v1/api/organisations/{org}/sources`, every
169
+ * state), else the signer's own memberships of the org (`GET /v1/api/sources`). Null when neither answers, or when the org route refuses (403) and the viewer has no match of their own.
170
+ * shortcut: the first page only (an org has a handful of sources per oracle); page on `cursor` if that changes.
171
+ */
172
+ export async function orgSources(oracleUrl, audience, org, mint, options = {}) {
173
+ const asController = await sourceCall(oracleUrl, audience, mint, { path: `/v1/api/organisations/${encodeURIComponent(org)}/sources`, can: "sources/list-organisation", sourceId: null }, options);
174
+ const items = (answer) => (answer && answer.status === 200 && Array.isArray(answer.body?.items) ? answer.body.items : null);
175
+ const owned = items(asController);
176
+ if (owned)
177
+ return owned.map(sourceOf).filter((one) => one !== null);
178
+ const mine = items(await sourceCall(oracleUrl, audience, mint, { path: "/v1/api/sources", can: "sources/list", sourceId: null }, options));
179
+ if (!mine)
180
+ return null;
181
+ const matching = mine
182
+ .map((one) => sourceOf(one?.source))
183
+ .filter((one) => one !== null && one.companyEntityDid === org);
184
+ // A 403 with no match of our own: this viewer cannot see the org's sources, so "none" would be a claim we cannot make.
185
+ return matching.length === 0 && asController?.status === 403 ? null : matching;
186
+ }
187
+ /** The oracle's did:web as it publishes it (the UCAN audience); null when unread. */
188
+ export async function oracleAudience(oracleUrl, options = {}) {
189
+ try {
190
+ const response = await (options.fetch ?? fetch)(`${base(oracleUrl)}/.well-known/did.json`, { headers: { accept: "application/json" }, signal: AbortSignal.timeout(TIMEOUT) });
191
+ const id = response.ok ? (await response.json().catch(() => null))?.id : null;
192
+ return typeof id === "string" && id.startsWith("did:web:") ? id : null;
193
+ }
194
+ catch {
195
+ return null;
196
+ }
197
+ }
198
+ /**
199
+ * Where the org's review billing stands on one oracle, read as the signer: the org's linked sources, then each one's
200
+ * stored delegation (the oracle allows one per org, so the first found is the one). Off: the source to turn it on for,
201
+ * an x402 one first.
202
+ */
203
+ export async function readOrgReviewBilling(oracleUrl, org, mint, options = {}) {
204
+ const audience = await oracleAudience(oracleUrl, options);
205
+ if (!audience)
206
+ return { kind: "unread" };
207
+ const sources = await orgSources(oracleUrl, audience, org, mint, options);
208
+ if (!sources)
209
+ return { kind: "unread" };
210
+ const linked = sources.filter((one) => one.status === "active" || one.status === "paused");
211
+ if (linked.length === 0)
212
+ return { kind: "no-source", pending: sources.length > 0 };
213
+ let read = 0;
214
+ for (const source of linked) {
215
+ const answer = await sourceCall(oracleUrl, audience, mint, { path: "/v1/api/source/review-billing", can: "review-billing/read", sourceId: source.sourceId }, options);
216
+ if (answer?.status === 200) {
217
+ const status = parseReviewBilling(answer.body);
218
+ if (status)
219
+ return { kind: "on", source, status };
220
+ }
221
+ if (answer?.status === 404)
222
+ read += 1;
223
+ }
224
+ if (read === 0)
225
+ return { kind: "unread" };
226
+ return { kind: "off", source: linked.find((one) => one.billingMode === "x402") ?? linked[0] };
227
+ }
228
+ export function controlsFor(read, viewer) {
229
+ if (!viewer.isOwner || !viewer.hasKey)
230
+ return "ways";
231
+ if (!read || read === "loading")
232
+ return "wait";
233
+ if (read.kind === "no-source")
234
+ return "link-first";
235
+ if (read.kind === "on")
236
+ return "raise-or-off";
237
+ if (read.kind === "off")
238
+ return "allow";
239
+ return "ways";
240
+ }
241
+ //# sourceMappingURL=orgReviewBilling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgReviewBilling.js","sourceRoot":"","sources":["../../../src/chain/orgReviewBilling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * "Pay for reviews", the signing side (owner request 2026-10-14; eval-oracle contract 1.22.0). Only the org's
3
+ * chain OWNER signs, in the browser, with their AuthHub session's ed25519 key:
4
+ *
5
+ * - On / raise: one x402-ixo-pay payment delegation, built by S4's own `@ixo/x402-ixo-pay` (never by hand):
6
+ * issuer the owner's did:ixo, audience the network's x402 facilitator, `billing/pay` on `billing:decision-api`
7
+ * with `{maxAmount, denom: "upay", oracles: [<this oracle's did:web>]}`, ~100 years. PUT to the oracle for the
8
+ * org's source (a re-PUT replaces: that is "raise"), then deposited in the UCAN store so it can be revoked later
9
+ * by its CID (the oracle never gives the token back). A replaced one is revoked.
10
+ * - Off: DELETE at the oracle, then REVOKE the delegation in the UCAN store (the oracle's DELETE alone leaves it
11
+ * valid until it expires).
12
+ */
13
+ import { type CallOptions, type ReviewBillingStatus } from "./orgReviewBilling.ts";
14
+ /** now + 100 calendar years (owner ruling; same as the CLI): the cap, not the clock, is what limits it. */
15
+ export declare const expiryFrom: (nowSeconds: number) => number;
16
+ /** The x402 facilitator (the delegation's audience) and the UCAN store on this deployment's network. */
17
+ export declare const billingHosts: () => {
18
+ facilitator: string;
19
+ store: string;
20
+ };
21
+ export interface Owner {
22
+ address: string;
23
+ mnemonic: string;
24
+ }
25
+ export interface SignOptions extends CallOptions {
26
+ facilitatorDid?: string;
27
+ storeUrl?: string;
28
+ /** Seconds since the epoch; tests pin it. */
29
+ now?: number;
30
+ }
31
+ export type Outcome<T> = {
32
+ ok: true;
33
+ value: T;
34
+ note?: string;
35
+ } | {
36
+ ok: false;
37
+ why: string;
38
+ };
39
+ /** The owner's payment delegation for this oracle alone: base64 CAR, as the facilitator verifies it. */
40
+ export declare function buildReviewBillingDelegation(owner: Owner, oracleDid: string, maxAmount: string, options?: SignOptions): Promise<string>;
41
+ /** Revokes a delegation the store holds, by its CID: true when it is revoked now (or was already). */
42
+ export declare function revokeDelegation(owner: Owner, cid: string, options?: SignOptions): Promise<boolean>;
43
+ /**
44
+ * Turn on, or raise the cap (a re-PUT replaces the stored one): sign, PUT for the org's source, keep it in the UCAN
45
+ * store for a later revoke, and revoke the one it replaced. Only the PUT decides success.
46
+ */
47
+ export declare function enableReviewBilling(input: {
48
+ owner: Owner;
49
+ oracleUrl: string;
50
+ sourceId: string;
51
+ maxAmount: string;
52
+ replacing?: string | null;
53
+ }, options?: SignOptions): Promise<Outcome<ReviewBillingStatus>>;
54
+ /** Turn off: DELETE at the oracle, then revoke the delegation in the UCAN store. */
55
+ export declare function turnOffReviewBilling(input: {
56
+ owner: Owner;
57
+ oracleUrl: string;
58
+ sourceId: string;
59
+ delegationCid: string;
60
+ }, options?: SignOptions): Promise<Outcome<{
61
+ revoked: boolean;
62
+ }>>;
63
+ //# sourceMappingURL=orgReviewBillingSign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgReviewBillingSign.d.ts","sourceRoot":"","sources":["../../../src/chain/orgReviewBillingSign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAA4E,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE7J,2GAA2G;AAC3G,eAAO,MAAM,UAAU,GAAI,YAAY,MAAM,KAAG,MAI/C,CAAC;AAQF,wGAAwG;AACxG,eAAO,MAAM,YAAY,QAAO;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAsB,CAAC;AAE3F,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAO5F,wGAAwG;AACxG,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAUjJ;AA6BD,sGAAsG;AACtG,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7G;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1G,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAoBvC;AAED,oFAAoF;AACpF,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAYjM"}