@ixo/openhands-sdk 0.6.0 → 0.8.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 (550) hide show
  1. package/README.md +6 -7
  2. package/dist/cjs/campaign/spots.js +3 -3
  3. package/dist/cjs/chain/allowance.d.ts +6 -2
  4. package/dist/cjs/chain/allowance.d.ts.map +1 -1
  5. package/dist/cjs/chain/allowance.js +47 -19
  6. package/dist/cjs/chain/allowance.js.map +1 -1
  7. package/dist/cjs/chain/ask.d.ts +6 -1
  8. package/dist/cjs/chain/ask.d.ts.map +1 -1
  9. package/dist/cjs/chain/ask.js +13 -6
  10. package/dist/cjs/chain/ask.js.map +1 -1
  11. package/dist/cjs/chain/askyBase.d.ts +36 -0
  12. package/dist/cjs/chain/askyBase.d.ts.map +1 -0
  13. package/dist/cjs/chain/askyBase.js +56 -0
  14. package/dist/cjs/chain/askyBase.js.map +1 -0
  15. package/dist/cjs/chain/assist.d.ts +52 -0
  16. package/dist/cjs/chain/assist.d.ts.map +1 -0
  17. package/dist/cjs/chain/assist.js +99 -0
  18. package/dist/cjs/chain/assist.js.map +1 -0
  19. package/dist/cjs/chain/campaignMint.d.ts +92 -0
  20. package/dist/cjs/chain/campaignMint.d.ts.map +1 -0
  21. package/dist/cjs/chain/campaignMint.js +136 -0
  22. package/dist/cjs/chain/campaignMint.js.map +1 -0
  23. package/dist/cjs/chain/claimIncentives.d.ts +17 -0
  24. package/dist/cjs/chain/claimIncentives.d.ts.map +1 -0
  25. package/dist/cjs/chain/claimIncentives.js +22 -0
  26. package/dist/cjs/chain/claimIncentives.js.map +1 -0
  27. package/dist/cjs/chain/draftMessages.d.ts +12 -0
  28. package/dist/cjs/chain/draftMessages.d.ts.map +1 -0
  29. package/dist/cjs/chain/draftMessages.js +85 -0
  30. package/dist/cjs/chain/draftMessages.js.map +1 -0
  31. package/dist/cjs/chain/entityShape.d.ts +1 -1
  32. package/dist/cjs/chain/entityShape.d.ts.map +1 -1
  33. package/dist/cjs/chain/entityShape.js +5 -5
  34. package/dist/cjs/chain/entityShape.js.map +1 -1
  35. package/dist/cjs/chain/env.js +1 -1
  36. package/dist/cjs/chain/env.js.map +1 -1
  37. package/dist/cjs/chain/gate.d.ts +7 -0
  38. package/dist/cjs/chain/gate.d.ts.map +1 -1
  39. package/dist/cjs/chain/gate.js +26 -10
  40. package/dist/cjs/chain/gate.js.map +1 -1
  41. package/dist/cjs/chain/guest.d.ts +10 -0
  42. package/dist/cjs/chain/guest.d.ts.map +1 -1
  43. package/dist/cjs/chain/guest.js +3 -2
  44. package/dist/cjs/chain/guest.js.map +1 -1
  45. package/dist/cjs/chain/inviteAnswer.d.ts +32 -0
  46. package/dist/cjs/chain/inviteAnswer.d.ts.map +1 -0
  47. package/dist/cjs/chain/inviteAnswer.js +36 -0
  48. package/dist/cjs/chain/inviteAnswer.js.map +1 -0
  49. package/dist/cjs/chain/inviteMessages.d.ts +65 -32
  50. package/dist/cjs/chain/inviteMessages.d.ts.map +1 -1
  51. package/dist/cjs/chain/inviteMessages.js +84 -30
  52. package/dist/cjs/chain/inviteMessages.js.map +1 -1
  53. package/dist/cjs/chain/inviteProof.d.ts +16 -1
  54. package/dist/cjs/chain/inviteProof.d.ts.map +1 -1
  55. package/dist/cjs/chain/inviteProof.js +19 -1
  56. package/dist/cjs/chain/inviteProof.js.map +1 -1
  57. package/dist/cjs/chain/lane.d.ts +16 -0
  58. package/dist/cjs/chain/lane.d.ts.map +1 -1
  59. package/dist/cjs/chain/lane.js +25 -1
  60. package/dist/cjs/chain/lane.js.map +1 -1
  61. package/dist/cjs/chain/orgReviewBilling.js +1 -1
  62. package/dist/cjs/chain/orgReviewBilling.js.map +1 -1
  63. package/dist/cjs/chain/personReview.d.ts.map +1 -1
  64. package/dist/cjs/chain/personReview.js +18 -11
  65. package/dist/cjs/chain/personReview.js.map +1 -1
  66. package/dist/cjs/chain/reviewBilling.d.ts.map +1 -1
  67. package/dist/cjs/chain/reviewBilling.js +1 -1
  68. package/dist/cjs/chain/reviewBilling.js.map +1 -1
  69. package/dist/cjs/chain/session.d.ts +9 -1
  70. package/dist/cjs/chain/session.d.ts.map +1 -1
  71. package/dist/cjs/chain/session.js +13 -15
  72. package/dist/cjs/chain/session.js.map +1 -1
  73. package/dist/cjs/chain/sessionEvents.d.ts +4 -0
  74. package/dist/cjs/chain/sessionEvents.d.ts.map +1 -0
  75. package/dist/cjs/chain/sessionEvents.js +15 -0
  76. package/dist/cjs/chain/sessionEvents.js.map +1 -0
  77. package/dist/cjs/chain/takeBack.d.ts +32 -0
  78. package/dist/cjs/chain/takeBack.d.ts.map +1 -1
  79. package/dist/cjs/chain/takeBack.js +89 -12
  80. package/dist/cjs/chain/takeBack.js.map +1 -1
  81. package/dist/cjs/chain/union.js +1 -1
  82. package/dist/cjs/chain/why.d.ts +6 -2
  83. package/dist/cjs/chain/why.d.ts.map +1 -1
  84. package/dist/cjs/chain/why.js +11 -2
  85. package/dist/cjs/chain/why.js.map +1 -1
  86. package/dist/cjs/chain.d.ts +1 -0
  87. package/dist/cjs/chain.d.ts.map +1 -1
  88. package/dist/cjs/chain.js +3 -1
  89. package/dist/cjs/chain.js.map +1 -1
  90. package/dist/cjs/config.d.ts +7 -1
  91. package/dist/cjs/config.d.ts.map +1 -1
  92. package/dist/cjs/config.js +4 -1
  93. package/dist/cjs/config.js.map +1 -1
  94. package/dist/cjs/data/actionDraft.d.ts +304 -0
  95. package/dist/cjs/data/actionDraft.d.ts.map +1 -0
  96. package/dist/cjs/data/actionDraft.js +470 -0
  97. package/dist/cjs/data/actionDraft.js.map +1 -0
  98. package/dist/cjs/data/actionDraftWords.d.ts +37 -0
  99. package/dist/cjs/data/actionDraftWords.d.ts.map +1 -0
  100. package/dist/cjs/data/actionDraftWords.js +55 -0
  101. package/dist/cjs/data/actionDraftWords.js.map +1 -0
  102. package/dist/cjs/data/agent.d.ts.map +1 -1
  103. package/dist/cjs/data/agent.js +36 -1
  104. package/dist/cjs/data/agent.js.map +1 -1
  105. package/dist/cjs/data/askyProtocol.d.ts +13 -0
  106. package/dist/cjs/data/askyProtocol.d.ts.map +1 -0
  107. package/dist/cjs/data/askyProtocol.js +19 -0
  108. package/dist/cjs/data/askyProtocol.js.map +1 -0
  109. package/dist/cjs/data/board/answer.d.ts +12 -0
  110. package/dist/cjs/data/board/answer.d.ts.map +1 -0
  111. package/dist/cjs/data/board/answer.js +41 -0
  112. package/dist/cjs/data/board/answer.js.map +1 -0
  113. package/dist/cjs/data/board/assemble.js +2 -2
  114. package/dist/cjs/data/board/facts.d.ts +1 -1
  115. package/dist/cjs/data/board/facts.d.ts.map +1 -1
  116. package/dist/cjs/data/board/facts.js +6 -2
  117. package/dist/cjs/data/board/facts.js.map +1 -1
  118. package/dist/cjs/data/board/fixtures.d.ts.map +1 -1
  119. package/dist/cjs/data/board/fixtures.js +2 -1
  120. package/dist/cjs/data/board/fixtures.js.map +1 -1
  121. package/dist/cjs/data/board/read.d.ts +2 -0
  122. package/dist/cjs/data/board/read.d.ts.map +1 -1
  123. package/dist/cjs/data/board/read.js +24 -10
  124. package/dist/cjs/data/board/read.js.map +1 -1
  125. package/dist/cjs/data/board/types.d.ts +16 -0
  126. package/dist/cjs/data/board/types.d.ts.map +1 -1
  127. package/dist/cjs/data/board/types.js +9 -1
  128. package/dist/cjs/data/board/types.js.map +1 -1
  129. package/dist/cjs/data/checkers.d.ts +33 -7
  130. package/dist/cjs/data/checkers.d.ts.map +1 -1
  131. package/dist/cjs/data/checkers.js +165 -55
  132. package/dist/cjs/data/checkers.js.map +1 -1
  133. package/dist/cjs/data/decisionIdentity.d.ts +10 -0
  134. package/dist/cjs/data/decisionIdentity.d.ts.map +1 -0
  135. package/dist/cjs/data/decisionIdentity.js +19 -0
  136. package/dist/cjs/data/decisionIdentity.js.map +1 -0
  137. package/dist/cjs/data/displayNames.d.ts +7 -1
  138. package/dist/cjs/data/displayNames.d.ts.map +1 -1
  139. package/dist/cjs/data/displayNames.js +7 -1
  140. package/dist/cjs/data/displayNames.js.map +1 -1
  141. package/dist/cjs/data/docUrls.d.ts +5 -0
  142. package/dist/cjs/data/docUrls.d.ts.map +1 -1
  143. package/dist/cjs/data/docUrls.js +18 -1
  144. package/dist/cjs/data/docUrls.js.map +1 -1
  145. package/dist/cjs/data/draftUploads.d.ts +145 -0
  146. package/dist/cjs/data/draftUploads.d.ts.map +1 -0
  147. package/dist/cjs/data/draftUploads.js +293 -0
  148. package/dist/cjs/data/draftUploads.js.map +1 -0
  149. package/dist/cjs/data/emailKinds.d.ts +56 -0
  150. package/dist/cjs/data/emailKinds.d.ts.map +1 -0
  151. package/dist/cjs/data/emailKinds.js +39 -0
  152. package/dist/cjs/data/emailKinds.js.map +1 -0
  153. package/dist/cjs/data/engine.js +1 -1
  154. package/dist/cjs/data/engine.js.map +1 -1
  155. package/dist/cjs/data/engineUrl.d.ts +5 -4
  156. package/dist/cjs/data/engineUrl.d.ts.map +1 -1
  157. package/dist/cjs/data/engineUrl.js +12 -6
  158. package/dist/cjs/data/engineUrl.js.map +1 -1
  159. package/dist/cjs/data/envelope.d.ts +9 -2
  160. package/dist/cjs/data/envelope.d.ts.map +1 -1
  161. package/dist/cjs/data/envelope.js +10 -3
  162. package/dist/cjs/data/envelope.js.map +1 -1
  163. package/dist/cjs/data/format.d.ts +10 -0
  164. package/dist/cjs/data/format.d.ts.map +1 -1
  165. package/dist/cjs/data/format.js +8 -1
  166. package/dist/cjs/data/format.js.map +1 -1
  167. package/dist/cjs/data/install.d.ts +57 -131
  168. package/dist/cjs/data/install.d.ts.map +1 -1
  169. package/dist/cjs/data/install.js +95 -182
  170. package/dist/cjs/data/install.js.map +1 -1
  171. package/dist/cjs/data/onAsks.d.ts +57 -0
  172. package/dist/cjs/data/onAsks.d.ts.map +1 -0
  173. package/dist/cjs/data/onAsks.js +78 -0
  174. package/dist/cjs/data/onAsks.js.map +1 -0
  175. package/dist/cjs/data/openness.d.ts +3 -0
  176. package/dist/cjs/data/openness.d.ts.map +1 -1
  177. package/dist/cjs/data/openness.js +19 -7
  178. package/dist/cjs/data/openness.js.map +1 -1
  179. package/dist/cjs/data/orgPayouts.d.ts +1 -0
  180. package/dist/cjs/data/orgPayouts.d.ts.map +1 -1
  181. package/dist/cjs/data/orgPayouts.js +4 -2
  182. package/dist/cjs/data/orgPayouts.js.map +1 -1
  183. package/dist/cjs/data/payoutObservation.d.ts +30 -0
  184. package/dist/cjs/data/payoutObservation.d.ts.map +1 -0
  185. package/dist/cjs/data/payoutObservation.js +219 -0
  186. package/dist/cjs/data/payoutObservation.js.map +1 -0
  187. package/dist/cjs/data/profiles.d.ts +37 -2
  188. package/dist/cjs/data/profiles.d.ts.map +1 -1
  189. package/dist/cjs/data/profiles.js +121 -16
  190. package/dist/cjs/data/profiles.js.map +1 -1
  191. package/dist/cjs/data/queue.d.ts.map +1 -1
  192. package/dist/cjs/data/queue.js +36 -1
  193. package/dist/cjs/data/queue.js.map +1 -1
  194. package/dist/cjs/data/receipt.d.ts +4 -0
  195. package/dist/cjs/data/receipt.d.ts.map +1 -1
  196. package/dist/cjs/data/receipt.js +5 -2
  197. package/dist/cjs/data/receipt.js.map +1 -1
  198. package/dist/cjs/data/threads.d.ts +9 -1
  199. package/dist/cjs/data/threads.d.ts.map +1 -1
  200. package/dist/cjs/data/threads.js +5 -3
  201. package/dist/cjs/data/threads.js.map +1 -1
  202. package/dist/cjs/data/trace.d.ts +1 -0
  203. package/dist/cjs/data/trace.d.ts.map +1 -1
  204. package/dist/cjs/data/trace.js +4 -2
  205. package/dist/cjs/data/trace.js.map +1 -1
  206. package/dist/cjs/data/traceWords.d.ts +5 -1
  207. package/dist/cjs/data/traceWords.d.ts.map +1 -1
  208. package/dist/cjs/data/traceWords.js +20 -5
  209. package/dist/cjs/data/traceWords.js.map +1 -1
  210. package/dist/cjs/data/types.js +1 -1
  211. package/dist/cjs/data/types.js.map +1 -1
  212. package/dist/cjs/discovery.d.ts.map +1 -1
  213. package/dist/cjs/discovery.js +3 -1
  214. package/dist/cjs/discovery.js.map +1 -1
  215. package/dist/cjs/names/client.d.ts +10 -0
  216. package/dist/cjs/names/client.d.ts.map +1 -0
  217. package/dist/cjs/names/client.js +757 -0
  218. package/dist/cjs/names/client.js.map +7 -0
  219. package/dist/cjs/names/names.d.ts +93 -0
  220. package/dist/cjs/names/names.d.ts.map +1 -0
  221. package/dist/cjs/names/names.js +154 -0
  222. package/dist/cjs/names/names.js.map +1 -0
  223. package/dist/cjs/names.d.ts +14 -0
  224. package/dist/cjs/names.d.ts.map +1 -0
  225. package/dist/cjs/names.js +30 -0
  226. package/dist/cjs/names.js.map +1 -0
  227. package/dist/cjs/rubric/askyRubric.d.ts +70 -0
  228. package/dist/cjs/rubric/askyRubric.d.ts.map +1 -0
  229. package/dist/cjs/rubric/askyRubric.js +163 -0
  230. package/dist/cjs/rubric/askyRubric.js.map +1 -0
  231. package/dist/cjs/rubric/bridge.js +2 -2
  232. package/dist/cjs/rubric/bridge.js.map +1 -1
  233. package/dist/cjs/rubric/call.d.ts +5 -0
  234. package/dist/cjs/rubric/call.d.ts.map +1 -1
  235. package/dist/cjs/rubric/call.js +10 -2
  236. package/dist/cjs/rubric/call.js.map +1 -1
  237. package/dist/cjs/rubric/callChecks.d.ts +2 -0
  238. package/dist/cjs/rubric/callChecks.d.ts.map +1 -1
  239. package/dist/cjs/rubric/callChecks.js +7 -2
  240. package/dist/cjs/rubric/callChecks.js.map +1 -1
  241. package/dist/cjs/rubric/callLimits.js +2 -2
  242. package/dist/cjs/rubric/callPrompt.d.ts +7 -0
  243. package/dist/cjs/rubric/callPrompt.d.ts.map +1 -0
  244. package/dist/cjs/rubric/callPrompt.js +9 -0
  245. package/dist/cjs/rubric/callPrompt.js.map +1 -0
  246. package/dist/cjs/rubric/draft.d.ts +1 -1
  247. package/dist/cjs/rubric/draft.d.ts.map +1 -1
  248. package/dist/cjs/rubric/draft.js +1 -1
  249. package/dist/cjs/rubric/feeLine.d.ts +12 -3
  250. package/dist/cjs/rubric/feeLine.d.ts.map +1 -1
  251. package/dist/cjs/rubric/feeLine.js +19 -8
  252. package/dist/cjs/rubric/feeLine.js.map +1 -1
  253. package/dist/cjs/rubric/leg.d.ts +5 -7
  254. package/dist/cjs/rubric/leg.d.ts.map +1 -1
  255. package/dist/cjs/rubric/leg.js +7 -33
  256. package/dist/cjs/rubric/leg.js.map +1 -1
  257. package/dist/cjs/rubric/marketPlan.js +7 -7
  258. package/dist/cjs/rubric/marketPlan.js.map +1 -1
  259. package/dist/cjs/rubric/report.d.ts.map +1 -1
  260. package/dist/cjs/rubric/report.js +4 -4
  261. package/dist/cjs/rubric/report.js.map +1 -1
  262. package/dist/cjs/rubric/reportTemplate.d.ts +12 -2
  263. package/dist/cjs/rubric/reportTemplate.d.ts.map +1 -1
  264. package/dist/cjs/rubric/reportTemplate.js +33 -18
  265. package/dist/cjs/rubric/reportTemplate.js.map +1 -1
  266. package/dist/cjs/rubric/survey.js +2 -2
  267. package/dist/cjs/rubric/survey.js.map +1 -1
  268. package/dist/cjs/rubric/terms.d.ts +9 -6
  269. package/dist/cjs/rubric/terms.d.ts.map +1 -1
  270. package/dist/cjs/rubric/terms.js +7 -8
  271. package/dist/cjs/rubric/terms.js.map +1 -1
  272. package/dist/esm/campaign/spots.js +3 -3
  273. package/dist/esm/chain/allowance.d.ts +6 -2
  274. package/dist/esm/chain/allowance.d.ts.map +1 -1
  275. package/dist/esm/chain/allowance.js +45 -19
  276. package/dist/esm/chain/allowance.js.map +1 -1
  277. package/dist/esm/chain/ask.d.ts +6 -1
  278. package/dist/esm/chain/ask.d.ts.map +1 -1
  279. package/dist/esm/chain/ask.js +14 -7
  280. package/dist/esm/chain/ask.js.map +1 -1
  281. package/dist/esm/chain/askyBase.d.ts +36 -0
  282. package/dist/esm/chain/askyBase.d.ts.map +1 -0
  283. package/dist/esm/chain/askyBase.js +51 -0
  284. package/dist/esm/chain/askyBase.js.map +1 -0
  285. package/dist/esm/chain/assist.d.ts +52 -0
  286. package/dist/esm/chain/assist.d.ts.map +1 -0
  287. package/dist/esm/chain/assist.js +89 -0
  288. package/dist/esm/chain/assist.js.map +1 -0
  289. package/dist/esm/chain/campaignMint.d.ts +92 -0
  290. package/dist/esm/chain/campaignMint.d.ts.map +1 -0
  291. package/dist/esm/chain/campaignMint.js +127 -0
  292. package/dist/esm/chain/campaignMint.js.map +1 -0
  293. package/dist/esm/chain/claimIncentives.d.ts +17 -0
  294. package/dist/esm/chain/claimIncentives.d.ts.map +1 -0
  295. package/dist/esm/chain/claimIncentives.js +19 -0
  296. package/dist/esm/chain/claimIncentives.js.map +1 -0
  297. package/dist/esm/chain/draftMessages.d.ts +12 -0
  298. package/dist/esm/chain/draftMessages.d.ts.map +1 -0
  299. package/dist/esm/chain/draftMessages.js +47 -0
  300. package/dist/esm/chain/draftMessages.js.map +1 -0
  301. package/dist/esm/chain/entityShape.d.ts +1 -1
  302. package/dist/esm/chain/entityShape.d.ts.map +1 -1
  303. package/dist/esm/chain/entityShape.js +5 -5
  304. package/dist/esm/chain/entityShape.js.map +1 -1
  305. package/dist/esm/chain/env.js +1 -1
  306. package/dist/esm/chain/env.js.map +1 -1
  307. package/dist/esm/chain/gate.d.ts +7 -0
  308. package/dist/esm/chain/gate.d.ts.map +1 -1
  309. package/dist/esm/chain/gate.js +24 -10
  310. package/dist/esm/chain/gate.js.map +1 -1
  311. package/dist/esm/chain/guest.d.ts +10 -0
  312. package/dist/esm/chain/guest.d.ts.map +1 -1
  313. package/dist/esm/chain/guest.js +3 -2
  314. package/dist/esm/chain/guest.js.map +1 -1
  315. package/dist/esm/chain/inviteAnswer.d.ts +32 -0
  316. package/dist/esm/chain/inviteAnswer.d.ts.map +1 -0
  317. package/dist/esm/chain/inviteAnswer.js +28 -0
  318. package/dist/esm/chain/inviteAnswer.js.map +1 -0
  319. package/dist/esm/chain/inviteMessages.d.ts +65 -32
  320. package/dist/esm/chain/inviteMessages.d.ts.map +1 -1
  321. package/dist/esm/chain/inviteMessages.js +69 -25
  322. package/dist/esm/chain/inviteMessages.js.map +1 -1
  323. package/dist/esm/chain/inviteProof.d.ts +16 -1
  324. package/dist/esm/chain/inviteProof.d.ts.map +1 -1
  325. package/dist/esm/chain/inviteProof.js +16 -0
  326. package/dist/esm/chain/inviteProof.js.map +1 -1
  327. package/dist/esm/chain/lane.d.ts +16 -0
  328. package/dist/esm/chain/lane.d.ts.map +1 -1
  329. package/dist/esm/chain/lane.js +22 -0
  330. package/dist/esm/chain/lane.js.map +1 -1
  331. package/dist/esm/chain/orgReviewBilling.js +1 -1
  332. package/dist/esm/chain/orgReviewBilling.js.map +1 -1
  333. package/dist/esm/chain/personReview.d.ts.map +1 -1
  334. package/dist/esm/chain/personReview.js +18 -11
  335. package/dist/esm/chain/personReview.js.map +1 -1
  336. package/dist/esm/chain/reviewBilling.d.ts.map +1 -1
  337. package/dist/esm/chain/reviewBilling.js +1 -1
  338. package/dist/esm/chain/reviewBilling.js.map +1 -1
  339. package/dist/esm/chain/session.d.ts +9 -1
  340. package/dist/esm/chain/session.d.ts.map +1 -1
  341. package/dist/esm/chain/session.js +11 -13
  342. package/dist/esm/chain/session.js.map +1 -1
  343. package/dist/esm/chain/sessionEvents.d.ts +4 -0
  344. package/dist/esm/chain/sessionEvents.d.ts.map +1 -0
  345. package/dist/esm/chain/sessionEvents.js +11 -0
  346. package/dist/esm/chain/sessionEvents.js.map +1 -0
  347. package/dist/esm/chain/takeBack.d.ts +32 -0
  348. package/dist/esm/chain/takeBack.d.ts.map +1 -1
  349. package/dist/esm/chain/takeBack.js +86 -12
  350. package/dist/esm/chain/takeBack.js.map +1 -1
  351. package/dist/esm/chain/union.js +1 -1
  352. package/dist/esm/chain/why.d.ts +6 -2
  353. package/dist/esm/chain/why.d.ts.map +1 -1
  354. package/dist/esm/chain/why.js +12 -3
  355. package/dist/esm/chain/why.js.map +1 -1
  356. package/dist/esm/chain.d.ts +1 -0
  357. package/dist/esm/chain.d.ts.map +1 -1
  358. package/dist/esm/chain.js +1 -0
  359. package/dist/esm/chain.js.map +1 -1
  360. package/dist/esm/config.d.ts +7 -1
  361. package/dist/esm/config.d.ts.map +1 -1
  362. package/dist/esm/config.js +4 -1
  363. package/dist/esm/config.js.map +1 -1
  364. package/dist/esm/data/actionDraft.d.ts +304 -0
  365. package/dist/esm/data/actionDraft.d.ts.map +1 -0
  366. package/dist/esm/data/actionDraft.js +450 -0
  367. package/dist/esm/data/actionDraft.js.map +1 -0
  368. package/dist/esm/data/actionDraftWords.d.ts +37 -0
  369. package/dist/esm/data/actionDraftWords.d.ts.map +1 -0
  370. package/dist/esm/data/actionDraftWords.js +47 -0
  371. package/dist/esm/data/actionDraftWords.js.map +1 -0
  372. package/dist/esm/data/agent.d.ts.map +1 -1
  373. package/dist/esm/data/agent.js +4 -2
  374. package/dist/esm/data/agent.js.map +1 -1
  375. package/dist/esm/data/askyProtocol.d.ts +13 -0
  376. package/dist/esm/data/askyProtocol.d.ts.map +1 -0
  377. package/dist/esm/data/askyProtocol.js +14 -0
  378. package/dist/esm/data/askyProtocol.js.map +1 -0
  379. package/dist/esm/data/board/answer.d.ts +12 -0
  380. package/dist/esm/data/board/answer.d.ts.map +1 -0
  381. package/dist/esm/data/board/answer.js +36 -0
  382. package/dist/esm/data/board/answer.js.map +1 -0
  383. package/dist/esm/data/board/assemble.js +2 -2
  384. package/dist/esm/data/board/facts.d.ts +1 -1
  385. package/dist/esm/data/board/facts.d.ts.map +1 -1
  386. package/dist/esm/data/board/facts.js +6 -2
  387. package/dist/esm/data/board/facts.js.map +1 -1
  388. package/dist/esm/data/board/fixtures.d.ts.map +1 -1
  389. package/dist/esm/data/board/fixtures.js +2 -1
  390. package/dist/esm/data/board/fixtures.js.map +1 -1
  391. package/dist/esm/data/board/read.d.ts +2 -0
  392. package/dist/esm/data/board/read.d.ts.map +1 -1
  393. package/dist/esm/data/board/read.js +25 -11
  394. package/dist/esm/data/board/read.js.map +1 -1
  395. package/dist/esm/data/board/types.d.ts +16 -0
  396. package/dist/esm/data/board/types.d.ts.map +1 -1
  397. package/dist/esm/data/board/types.js +7 -0
  398. package/dist/esm/data/board/types.js.map +1 -1
  399. package/dist/esm/data/checkers.d.ts +33 -7
  400. package/dist/esm/data/checkers.d.ts.map +1 -1
  401. package/dist/esm/data/checkers.js +159 -54
  402. package/dist/esm/data/checkers.js.map +1 -1
  403. package/dist/esm/data/decisionIdentity.d.ts +10 -0
  404. package/dist/esm/data/decisionIdentity.d.ts.map +1 -0
  405. package/dist/esm/data/decisionIdentity.js +15 -0
  406. package/dist/esm/data/decisionIdentity.js.map +1 -0
  407. package/dist/esm/data/displayNames.d.ts +7 -1
  408. package/dist/esm/data/displayNames.d.ts.map +1 -1
  409. package/dist/esm/data/displayNames.js +7 -1
  410. package/dist/esm/data/displayNames.js.map +1 -1
  411. package/dist/esm/data/docUrls.d.ts +5 -0
  412. package/dist/esm/data/docUrls.d.ts.map +1 -1
  413. package/dist/esm/data/docUrls.js +16 -0
  414. package/dist/esm/data/docUrls.js.map +1 -1
  415. package/dist/esm/data/draftUploads.d.ts +145 -0
  416. package/dist/esm/data/draftUploads.d.ts.map +1 -0
  417. package/dist/esm/data/draftUploads.js +272 -0
  418. package/dist/esm/data/draftUploads.js.map +1 -0
  419. package/dist/esm/data/emailKinds.d.ts +56 -0
  420. package/dist/esm/data/emailKinds.d.ts.map +1 -0
  421. package/dist/esm/data/emailKinds.js +32 -0
  422. package/dist/esm/data/emailKinds.js.map +1 -0
  423. package/dist/esm/data/engine.js +1 -1
  424. package/dist/esm/data/engine.js.map +1 -1
  425. package/dist/esm/data/engineUrl.d.ts +5 -4
  426. package/dist/esm/data/engineUrl.d.ts.map +1 -1
  427. package/dist/esm/data/engineUrl.js +11 -5
  428. package/dist/esm/data/engineUrl.js.map +1 -1
  429. package/dist/esm/data/envelope.d.ts +9 -2
  430. package/dist/esm/data/envelope.d.ts.map +1 -1
  431. package/dist/esm/data/envelope.js +10 -3
  432. package/dist/esm/data/envelope.js.map +1 -1
  433. package/dist/esm/data/format.d.ts +10 -0
  434. package/dist/esm/data/format.d.ts.map +1 -1
  435. package/dist/esm/data/format.js +6 -0
  436. package/dist/esm/data/format.js.map +1 -1
  437. package/dist/esm/data/install.d.ts +57 -131
  438. package/dist/esm/data/install.d.ts.map +1 -1
  439. package/dist/esm/data/install.js +88 -173
  440. package/dist/esm/data/install.js.map +1 -1
  441. package/dist/esm/data/onAsks.d.ts +57 -0
  442. package/dist/esm/data/onAsks.d.ts.map +1 -0
  443. package/dist/esm/data/onAsks.js +73 -0
  444. package/dist/esm/data/onAsks.js.map +1 -0
  445. package/dist/esm/data/openness.d.ts +3 -0
  446. package/dist/esm/data/openness.d.ts.map +1 -1
  447. package/dist/esm/data/openness.js +18 -7
  448. package/dist/esm/data/openness.js.map +1 -1
  449. package/dist/esm/data/orgPayouts.d.ts +1 -0
  450. package/dist/esm/data/orgPayouts.d.ts.map +1 -1
  451. package/dist/esm/data/orgPayouts.js +4 -2
  452. package/dist/esm/data/orgPayouts.js.map +1 -1
  453. package/dist/esm/data/payoutObservation.d.ts +30 -0
  454. package/dist/esm/data/payoutObservation.d.ts.map +1 -0
  455. package/dist/esm/data/payoutObservation.js +213 -0
  456. package/dist/esm/data/payoutObservation.js.map +1 -0
  457. package/dist/esm/data/profiles.d.ts +37 -2
  458. package/dist/esm/data/profiles.d.ts.map +1 -1
  459. package/dist/esm/data/profiles.js +120 -16
  460. package/dist/esm/data/profiles.js.map +1 -1
  461. package/dist/esm/data/queue.d.ts.map +1 -1
  462. package/dist/esm/data/queue.js +4 -2
  463. package/dist/esm/data/queue.js.map +1 -1
  464. package/dist/esm/data/receipt.d.ts +4 -0
  465. package/dist/esm/data/receipt.d.ts.map +1 -1
  466. package/dist/esm/data/receipt.js +5 -2
  467. package/dist/esm/data/receipt.js.map +1 -1
  468. package/dist/esm/data/threads.d.ts +9 -1
  469. package/dist/esm/data/threads.d.ts.map +1 -1
  470. package/dist/esm/data/threads.js +6 -4
  471. package/dist/esm/data/threads.js.map +1 -1
  472. package/dist/esm/data/trace.d.ts +1 -0
  473. package/dist/esm/data/trace.d.ts.map +1 -1
  474. package/dist/esm/data/trace.js +4 -2
  475. package/dist/esm/data/trace.js.map +1 -1
  476. package/dist/esm/data/traceWords.d.ts +5 -1
  477. package/dist/esm/data/traceWords.d.ts.map +1 -1
  478. package/dist/esm/data/traceWords.js +19 -5
  479. package/dist/esm/data/traceWords.js.map +1 -1
  480. package/dist/esm/data/types.js +1 -1
  481. package/dist/esm/data/types.js.map +1 -1
  482. package/dist/esm/discovery.d.ts.map +1 -1
  483. package/dist/esm/discovery.js +3 -1
  484. package/dist/esm/discovery.js.map +1 -1
  485. package/dist/esm/names/client.d.ts +10 -0
  486. package/dist/esm/names/client.d.ts.map +1 -0
  487. package/dist/esm/names/client.js +10 -0
  488. package/dist/esm/names/client.js.map +1 -0
  489. package/dist/esm/names/names.d.ts +93 -0
  490. package/dist/esm/names/names.d.ts.map +1 -0
  491. package/dist/esm/names/names.js +142 -0
  492. package/dist/esm/names/names.js.map +1 -0
  493. package/dist/esm/names.d.ts +14 -0
  494. package/dist/esm/names.d.ts.map +1 -0
  495. package/dist/esm/names.js +14 -0
  496. package/dist/esm/names.js.map +1 -0
  497. package/dist/esm/rubric/askyRubric.d.ts +70 -0
  498. package/dist/esm/rubric/askyRubric.d.ts.map +1 -0
  499. package/dist/esm/rubric/askyRubric.js +155 -0
  500. package/dist/esm/rubric/askyRubric.js.map +1 -0
  501. package/dist/esm/rubric/bridge.js +2 -2
  502. package/dist/esm/rubric/bridge.js.map +1 -1
  503. package/dist/esm/rubric/call.d.ts +5 -0
  504. package/dist/esm/rubric/call.d.ts.map +1 -1
  505. package/dist/esm/rubric/call.js +8 -1
  506. package/dist/esm/rubric/call.js.map +1 -1
  507. package/dist/esm/rubric/callChecks.d.ts +2 -0
  508. package/dist/esm/rubric/callChecks.d.ts.map +1 -1
  509. package/dist/esm/rubric/callChecks.js +5 -1
  510. package/dist/esm/rubric/callChecks.js.map +1 -1
  511. package/dist/esm/rubric/callLimits.js +2 -2
  512. package/dist/esm/rubric/callPrompt.d.ts +7 -0
  513. package/dist/esm/rubric/callPrompt.d.ts.map +1 -0
  514. package/dist/esm/rubric/callPrompt.js +6 -0
  515. package/dist/esm/rubric/callPrompt.js.map +1 -0
  516. package/dist/esm/rubric/draft.d.ts +1 -1
  517. package/dist/esm/rubric/draft.d.ts.map +1 -1
  518. package/dist/esm/rubric/draft.js +1 -1
  519. package/dist/esm/rubric/feeLine.d.ts +12 -3
  520. package/dist/esm/rubric/feeLine.d.ts.map +1 -1
  521. package/dist/esm/rubric/feeLine.js +16 -7
  522. package/dist/esm/rubric/feeLine.js.map +1 -1
  523. package/dist/esm/rubric/leg.d.ts +5 -7
  524. package/dist/esm/rubric/leg.d.ts.map +1 -1
  525. package/dist/esm/rubric/leg.js +7 -33
  526. package/dist/esm/rubric/leg.js.map +1 -1
  527. package/dist/esm/rubric/marketPlan.js +7 -7
  528. package/dist/esm/rubric/marketPlan.js.map +1 -1
  529. package/dist/esm/rubric/report.d.ts.map +1 -1
  530. package/dist/esm/rubric/report.js +4 -4
  531. package/dist/esm/rubric/report.js.map +1 -1
  532. package/dist/esm/rubric/reportTemplate.d.ts +12 -2
  533. package/dist/esm/rubric/reportTemplate.d.ts.map +1 -1
  534. package/dist/esm/rubric/reportTemplate.js +30 -17
  535. package/dist/esm/rubric/reportTemplate.js.map +1 -1
  536. package/dist/esm/rubric/survey.js +2 -2
  537. package/dist/esm/rubric/survey.js.map +1 -1
  538. package/dist/esm/rubric/terms.d.ts +9 -6
  539. package/dist/esm/rubric/terms.d.ts.map +1 -1
  540. package/dist/esm/rubric/terms.js +7 -8
  541. package/dist/esm/rubric/terms.js.map +1 -1
  542. package/package.json +24 -3
  543. package/dist/cjs/data/sponsors.d.ts +0 -94
  544. package/dist/cjs/data/sponsors.d.ts.map +0 -1
  545. package/dist/cjs/data/sponsors.js +0 -147
  546. package/dist/cjs/data/sponsors.js.map +0 -1
  547. package/dist/esm/data/sponsors.d.ts +0 -94
  548. package/dist/esm/data/sponsors.d.ts.map +0 -1
  549. package/dist/esm/data/sponsors.js +0 -137
  550. package/dist/esm/data/sponsors.js.map +0 -1
@@ -0,0 +1,450 @@
1
+ /**
2
+ * One-tap drafts (docs/MCP.md, "One-tap pages"; the hosted connector's design points 3 and 5).
3
+ *
4
+ * The hosted MCP holds nobody's key. For everything that moves money or needs the person's own signature, the
5
+ * connector saves a draft of exactly what to do, tied to the signed-in person's account, and hands back one link.
6
+ * The page loads the draft, says it in plain words with the total, and on one tap signs in the browser with the
7
+ * person's own Auth Hub session. This module is the part every side shares (the worker's store, the app's routes,
8
+ * the pages and the connector), so no two of them can disagree on an action, a figure or a link. Pure; no imports
9
+ * that a phone's first load would pay for.
10
+ */
11
+ /** A draft's id: `ad_` and 128 random bits, base64url. Distinct from a pay draft's bare 22 characters. */
12
+ export const ACTION_DRAFT_ID = /^ad_[A-Za-z0-9_-]{22}$/;
13
+ /** A draft lives a day unless it is done (a done one stays readable, so the chat can still say what happened). */
14
+ export const ACTION_DRAFT_TTL_MS = 24 * 60 * 60_000;
15
+ /** The largest draft body the store takes. */
16
+ export const MAX_ACTION_DRAFT_BYTES = 64 * 1024;
17
+ /** The largest result a page reports back. */
18
+ export const MAX_RESULT_BYTES = 4096;
19
+ /**
20
+ * Every action the connector can hand to a page, and which page family does it:
21
+ *
22
+ * - `asks`: one or more asks, posted from the person's own account (`/pay/<id>`).
23
+ * - `call`: a pro ask (`/pay/<id>`, the pay link's CallPay).
24
+ * - `takeBack`: close one or more asks and take what is left back (`/do/<id>`).
25
+ * - `approve`: the final OK on one report, which pays the pro (`/do/<id>`).
26
+ * - `cashOut`: the cash-out page, filled in (`/do/<id>` → `/me/cash-out`).
27
+ * - `topUp`: play money by card, the sandbox only (`/do/<id>`).
28
+ * - `messages`: chain messages the server prepared, signed in a row (`/do/<id>`).
29
+ * - `report`: the pro's report, edited and sent with files from the phone (`/report/<id>`).
30
+ * - `campaign`: a campaign and its shared requirements, minted in two transactions signed in order, the second
31
+ * naming the DIDs the first made (`/do/<id>`).
32
+ * - `photo`: a photo the person sent the chat, uploaded to the draft's upload address, made their picture on one tap
33
+ * (`/do/<id>`; data/draftUploads.ts).
34
+ */
35
+ export const ACTION_FAMILY = {
36
+ post_ask: "asks",
37
+ ask_the_world: "asks",
38
+ post_cleanup: "asks",
39
+ organise_campaign: "asks",
40
+ fund_plan: "asks",
41
+ post_call: "call",
42
+ close_ask: "takeBack",
43
+ close_plan: "takeBack",
44
+ approve_report: "approve",
45
+ cash_out: "cashOut",
46
+ top_up: "topUp",
47
+ set_payout_settings: "messages",
48
+ submit_work: "report",
49
+ create_campaign: "campaign",
50
+ set_page_photo: "photo"
51
+ };
52
+ export const DRAFT_ACTIONS = Object.keys(ACTION_FAMILY);
53
+ export const isDraftAction = (value) => typeof value === "string" && Object.prototype.hasOwnProperty.call(ACTION_FAMILY, value);
54
+ const NETWORKS = new Set(["mainnet", "testnet", "devnet"]);
55
+ const COLLECTION = /^\d{1,12}$/;
56
+ const ENTITY = /^did:ixo:entity:[0-9a-f]{32}$/;
57
+ const ADDRESS = /^ixo1[0-9a-z]{38}$/;
58
+ const CLAIM = /^[A-Za-z0-9:_.-]{1,128}$/;
59
+ const AMOUNT = /^\d+(\.\d{1,2})?$/;
60
+ const BASE64 = /^[A-Za-z0-9+/]*={0,2}$/;
61
+ const SLUG = /^[A-Za-z0-9_.:-]{1,120}$/;
62
+ const PLAN_CID = /^baf[a-z2-7]{20,100}$/;
63
+ const TAG = /^[a-z0-9-]{1,64}$/;
64
+ const SHA256 = /^[0-9a-f]{64}$/;
65
+ const MAX_ASKS = 20;
66
+ const MAX_TAKE_BACKS = 50;
67
+ const MAX_TXS = 5;
68
+ const MAX_MESSAGES = 10;
69
+ /** An answer in words, as submit_work takes one. */
70
+ const MAX_ANSWER_TEXT = 20_000;
71
+ /**
72
+ * The chain messages a `messages` draft may carry: exactly what set_payout_settings signs (payoutSettings.ts
73
+ * `replaceSettingsMsgs`: the organisation's linked resource, deleted and added again). Nothing that sends coins or
74
+ * grants anybody a right over the person's account or an entity's (an authz or entity-account grant is a hand-over
75
+ * of money the page could not put a figure on), and nothing else: a page signs only what it can say in plain words.
76
+ */
77
+ export const DRAFT_MESSAGES = ["/ixo.iid.v1beta1.MsgAddLinkedResource", "/ixo.iid.v1beta1.MsgDeleteLinkedResource"];
78
+ export const messageAllowed = (typeUrl) => DRAFT_MESSAGES.includes(typeUrl);
79
+ const record = (value) => (value && typeof value === "object" && !Array.isArray(value) ? value : null);
80
+ const text = (value, max) => typeof value === "string" && value.trim().length > 0 && value.length <= max;
81
+ const cents = (value) => Number.isInteger(value) && value >= 0;
82
+ /** Why an ask's terms are not ones the page could post, or null (the worker also reads `terms` with the board's own reader). */
83
+ function askProblem(raw) {
84
+ const ask = record(raw);
85
+ if (!ask || !text(ask.title, 200) || !record(ask.terms))
86
+ return "bad-ask";
87
+ if (!Number.isInteger(ask.quota) || ask.quota < 1 || ask.quota > 10_000)
88
+ return "bad-ask";
89
+ if (!/^\d{1,15}$/.test(String(ask.amountUixo ?? "")))
90
+ return "bad-ask";
91
+ /* The caps and the total are in dollars: an ask the page posts here is in PAY, as a card-paid one is. */
92
+ if (ask.denom !== "upay")
93
+ return "bad-denom";
94
+ if (ask.checkRewardUixo !== undefined && !/^\d{1,15}$/.test(String(ask.checkRewardUixo)))
95
+ return "bad-ask";
96
+ /* A checker's fee escrowed in another coin would be money the dollar total does not say. */
97
+ if (ask.checker !== undefined && !ask.perCheck && ask.feeDenom !== undefined && ask.feeDenom !== "upay")
98
+ return "bad-denom";
99
+ if (ask.days !== undefined && (!Number.isInteger(ask.days) || ask.days < 1 || ask.days > 365))
100
+ return "bad-ask";
101
+ return null;
102
+ }
103
+ /** Why a payload is not one its page could do, or null. Structural: the worker adds the board's own terms reader. */
104
+ export function payloadProblem(action, raw) {
105
+ const payload = record(raw);
106
+ if (!payload)
107
+ return "bad-payload";
108
+ switch (ACTION_FAMILY[action]) {
109
+ case "asks": {
110
+ if (!Array.isArray(payload.asks) || payload.asks.length === 0 || payload.asks.length > MAX_ASKS)
111
+ return "bad-payload";
112
+ if (action !== "organise_campaign" && action !== "fund_plan" && payload.asks.length !== 1)
113
+ return "bad-payload";
114
+ /* The plan's content address: the page registers it before posting (POST /api/plans, fund_plan's own first step). */
115
+ if (action === "fund_plan" && (typeof payload.plan !== "string" || !PLAN_CID.test(payload.plan)))
116
+ return "bad-payload";
117
+ for (const ask of payload.asks) {
118
+ const problem = askProblem(ask);
119
+ if (problem)
120
+ return problem;
121
+ }
122
+ return null;
123
+ }
124
+ case "call": {
125
+ const call = record(payload.call);
126
+ const quote = record(payload.quote);
127
+ if (!call || !text(call.slug, 120) || !record(call.fields) || !record(call.dates) || !text(call.checker, 80))
128
+ return "bad-payload";
129
+ if (!Array.isArray(call.legs) || call.legs.length === 0 || call.legs.some((leg) => !record(leg) || !cents(leg.escrowBase)))
130
+ return "bad-payload";
131
+ if (!quote || !cents(quote.proReceivesCents) || !cents(quote.feeCents) || !cents(quote.youPayCents))
132
+ return "bad-quote";
133
+ if (quote.proReceivesCents + quote.feeCents !== quote.youPayCents)
134
+ return "bad-quote";
135
+ /* The figure shown in the chat is the figure the page charges: never one the legs do not add up to. */
136
+ if (callCents(call) !== quote.youPayCents)
137
+ return "bad-quote";
138
+ return null;
139
+ }
140
+ case "takeBack": {
141
+ if (!Array.isArray(payload.asks) || payload.asks.length === 0 || payload.asks.length > MAX_TAKE_BACKS)
142
+ return "bad-payload";
143
+ if (action === "close_ask" && payload.asks.length !== 1)
144
+ return "bad-payload";
145
+ if (action === "close_plan" && !text(payload.plan, 120))
146
+ return "bad-payload";
147
+ const seen = new Set();
148
+ for (const one of payload.asks) {
149
+ const ask = record(one);
150
+ if (!ask || typeof ask.collectionId !== "string" || !COLLECTION.test(ask.collectionId) || typeof ask.entityDid !== "string" || !ENTITY.test(ask.entityDid))
151
+ return "bad-payload";
152
+ if (seen.has(ask.collectionId))
153
+ return "bad-payload";
154
+ seen.add(ask.collectionId);
155
+ }
156
+ return null;
157
+ }
158
+ case "approve": {
159
+ if (typeof payload.collectionId !== "string" || !COLLECTION.test(payload.collectionId))
160
+ return "bad-payload";
161
+ if (typeof payload.claimId !== "string" || !CLAIM.test(payload.claimId))
162
+ return "bad-payload";
163
+ if (typeof payload.agentAddress !== "string" || !ADDRESS.test(payload.agentAddress))
164
+ return "bad-payload";
165
+ /* What approving pays is read from the ask on the page; a figure from the chat is never kept. */
166
+ if (payload.paysCents !== undefined)
167
+ return "bad-payload";
168
+ if (payload.slug !== undefined && (typeof payload.slug !== "string" || !SLUG.test(payload.slug)))
169
+ return "bad-payload";
170
+ return null;
171
+ }
172
+ case "cashOut": {
173
+ if (typeof payload.country !== "string" || !/^[A-Z]{2}$/.test(payload.country))
174
+ return "bad-payload";
175
+ if (typeof payload.amount !== "string" || !AMOUNT.test(payload.amount) || Number(payload.amount) <= 0)
176
+ return "bad-payload";
177
+ if (!text(payload.method, 60))
178
+ return "bad-payload";
179
+ if (payload.to !== undefined && (typeof payload.to !== "string" || !/^0x[0-9a-fA-F]{40}$/.test(payload.to)))
180
+ return "bad-payload";
181
+ if (payload.account !== undefined && !text(payload.account, 40))
182
+ return "bad-payload";
183
+ if (payload.network !== undefined && !text(payload.network, 80))
184
+ return "bad-payload";
185
+ return null;
186
+ }
187
+ case "topUp":
188
+ return payload.pay === 10 || payload.pay === 25 || payload.pay === 100 ? null : "bad-payload";
189
+ case "messages": {
190
+ if (!text(payload.title, 120) || !Array.isArray(payload.lines) || payload.lines.length > 20 || payload.lines.some((line) => !text(line, 300)))
191
+ return "bad-payload";
192
+ if (!Array.isArray(payload.txs) || payload.txs.length === 0 || payload.txs.length > MAX_TXS)
193
+ return "bad-payload";
194
+ for (const one of payload.txs) {
195
+ const tx = record(one);
196
+ if (!tx || typeof tx.memo !== "string" || tx.memo.length > 200 || !Array.isArray(tx.messages) || tx.messages.length === 0 || tx.messages.length > MAX_MESSAGES)
197
+ return "bad-payload";
198
+ for (const raw of tx.messages) {
199
+ const message = record(raw);
200
+ if (!message || typeof message.typeUrl !== "string" || typeof message.value !== "string" || !BASE64.test(message.value))
201
+ return "bad-payload";
202
+ if (!messageAllowed(message.typeUrl))
203
+ return "bad-message";
204
+ }
205
+ }
206
+ return null;
207
+ }
208
+ case "report": {
209
+ if (typeof payload.collectionId !== "string" || !COLLECTION.test(payload.collectionId))
210
+ return "bad-payload";
211
+ /* Exactly one of: a review report, an answer in words, a verifier's form. Files are added on the phone, never here. */
212
+ const given = [payload.report !== undefined, payload.text !== undefined, payload.fields !== undefined].filter(Boolean).length;
213
+ if (given !== 1)
214
+ return "bad-payload";
215
+ if (payload.report !== undefined && !record(payload.report))
216
+ return "bad-payload";
217
+ if (payload.text !== undefined && !text(payload.text, MAX_ANSWER_TEXT))
218
+ return "bad-payload";
219
+ if (payload.fields !== undefined && !record(payload.fields))
220
+ return "bad-payload";
221
+ if (payload.alias !== undefined && !text(payload.alias, 60))
222
+ return "bad-payload";
223
+ return null;
224
+ }
225
+ case "campaign": {
226
+ if (!text(payload.title, 120) || payload.title.trim().length < 3)
227
+ return "bad-payload";
228
+ if (!text(payload.description, 1000) || payload.description.trim().length < 3)
229
+ return "bad-payload";
230
+ if (typeof payload.tag !== "string" || !TAG.test(payload.tag))
231
+ return "bad-payload";
232
+ const rubric = record(payload.rubric);
233
+ if (!rubric || typeof rubric.url !== "string" || !/^https:\/\/\S{1,500}$/.test(rubric.url) || typeof rubric.proof !== "string" || !SHA256.test(rubric.proof))
234
+ return "bad-payload";
235
+ return null;
236
+ }
237
+ case "photo":
238
+ return Object.keys(payload).length === 0 ? null : "bad-payload";
239
+ }
240
+ }
241
+ /** Why a draft's body (action, network, payload) cannot be kept, or null. */
242
+ export function draftBodyProblem(body) {
243
+ if (!isDraftAction(body.action))
244
+ return "bad-action";
245
+ if (typeof body.network !== "string" || !NETWORKS.has(body.network))
246
+ return "bad-network";
247
+ /* The sandbox sells play money; the real network has nothing to top up (the local top_up's rule). */
248
+ if (body.action === "top_up" && body.network === "mainnet")
249
+ return "not-on-mainnet";
250
+ return payloadProblem(body.action, body.payload);
251
+ }
252
+ // ── money ─────────────────────────────────────────────────────────────────
253
+ /**
254
+ * What one ask escrows, in cents: the rewards and the checks paid in PAY, as the pay page and the composer charge
255
+ * it (1 PAY = $1 = 1,000,000 base).
256
+ */
257
+ export function askCents(ask) {
258
+ const feeInPay = ask.checker && !ask.perCheck && (ask.feeDenom ?? "upay") === "upay" ? Number(ask.checkRewardUixo ?? 0) : 0;
259
+ return Math.round(((Number(ask.amountUixo) + feeInPay) * ask.quota) / 1e4);
260
+ }
261
+ /** What a pro ask escrows, in cents: its legs (useCallPay's figure). */
262
+ export const callCents = (call) => Math.round(call.legs.reduce((sum, leg) => sum + Number(leg.escrowBase), 0) / 10_000);
263
+ /** What a draft spends from the person's money, in cents, against the caps. Only posting spends: a take-back, an approval or a cash-out moves money that is already theirs or already held. */
264
+ export function spendCentsOf(action, payload) {
265
+ const family = ACTION_FAMILY[action];
266
+ if (family === "asks")
267
+ return payload.asks.reduce((sum, ask) => sum + askCents(ask), 0);
268
+ if (family === "call")
269
+ return callCents(payload.call);
270
+ return 0;
271
+ }
272
+ export const NO_CAPS = { perAskCents: null, perDayCents: null, perPlanCents: null };
273
+ /**
274
+ * A cap from the environment in dollars (`OPENHANDS_MAX_PER_ASK_USD`), as cents; unset is no cap. A value that is not
275
+ * a plain number is a mistake in the settings: the local package refuses to start on one, and here it caps at
276
+ * nothing (0), so a typo never lifts a limit somebody meant to set.
277
+ */
278
+ export function capCents(raw) {
279
+ if (raw === undefined || raw.trim() === "")
280
+ return null;
281
+ const value = Number(raw.trim());
282
+ return Number.isFinite(value) && value >= 0 ? Math.round(value * 100) : 0;
283
+ }
284
+ const lower = (a, b) => (a === null ? b : b === null ? a : Math.min(a, b));
285
+ /** The caps from the environment. The day's is the lower of the per-day and the every-tool total (`OPENHANDS_MAX_PER_DAY_TOTAL_USD`): a person's drafts share one day. */
286
+ export const capsFrom = (env) => ({
287
+ perAskCents: capCents(env.OPENHANDS_MAX_PER_ASK_USD),
288
+ perDayCents: lower(capCents(env.OPENHANDS_MAX_PER_DAY_USD), capCents(env.OPENHANDS_MAX_PER_DAY_TOTAL_USD)),
289
+ perPlanCents: capCents(env.OPENHANDS_MAX_PER_PLAN_USD)
290
+ });
291
+ export const dollars = (amount) => `$${(amount / 100).toFixed(2)}`;
292
+ /**
293
+ * The same per-ask, per-plan and per-day caps the local package keeps, checked when the draft is made and again
294
+ * when the page starts signing. `spentTodayCents` is what this person's other drafts started in the last day
295
+ * spend. A refusal in plain words, or null.
296
+ */
297
+ export function capsProblem(action, payload, spentTodayCents, caps) {
298
+ const family = ACTION_FAMILY[action];
299
+ if (family !== "asks" && family !== "call")
300
+ return null;
301
+ const each = family === "asks" ? payload.asks.map(askCents) : payload.call.legs.map((leg) => Math.round(Number(leg.escrowBase) / 10_000));
302
+ const total = spendCentsOf(action, payload);
303
+ if (caps.perAskCents !== null && each.some((one) => one > caps.perAskCents))
304
+ return { code: "over-ask-cap", words: `One ask can hold at most ${dollars(caps.perAskCents)} here.` };
305
+ if (action === "fund_plan" && caps.perPlanCents !== null && total > caps.perPlanCents)
306
+ return { code: "over-plan-cap", words: `A plan can cost at most ${dollars(caps.perPlanCents)} here.` };
307
+ if (caps.perDayCents !== null && spentTodayCents + total > caps.perDayCents) {
308
+ const left = Math.max(0, caps.perDayCents - spentTodayCents);
309
+ return { code: "over-day-cap", words: `That goes over today's limit of ${dollars(caps.perDayCents)}. ${dollars(left)} is left for today.` };
310
+ }
311
+ return null;
312
+ }
313
+ // ── links ─────────────────────────────────────────────────────────────────
314
+ /** The page a draft opens on: posting at the pay link, a report on its own page, everything else at `/do/<id>`. */
315
+ export function draftPath(action, id) {
316
+ const family = ACTION_FAMILY[action];
317
+ if (family === "asks" || family === "call")
318
+ return `/pay/${id}`;
319
+ if (family === "report")
320
+ return `/report/${id}`;
321
+ return `/do/${id}`;
322
+ }
323
+ /** An account as a person can tell it apart without the whole of it: `ixo1abcd…wxyz`. */
324
+ export const shortAddress = (address) => (address.length > 14 ? `${address.slice(0, 8)}…${address.slice(-4)}` : address);
325
+ const askLine = (ask) => {
326
+ const base = String(ask.amountUixo);
327
+ const units = /^\d{1,15}$/.test(base) && ask.denom === "upay" ? base.padStart(7, "0") : null;
328
+ /* Exact dollars, never rounded to the cent: a sub-cent reward still shows what is escrowed. */
329
+ const fraction = units?.slice(-6).replace(/0+$/, "").padEnd(2, "0");
330
+ const reward = units ? `$${BigInt(units.slice(0, -6))}.${fraction}` : null;
331
+ return `"${ask.title}": ${ask.quota === 1 ? "one answer" : `up to ${ask.quota} answers`}, ${reward ? `${reward} each` : "reward unavailable"}`;
332
+ };
333
+ /** What a draft does, in the person's words, with the total. */
334
+ export function draftWords(action, payload) {
335
+ const family = ACTION_FAMILY[action];
336
+ if (family === "asks") {
337
+ const asks = payload.asks;
338
+ const total = spendCentsOf(action, payload);
339
+ const title = action === "ask_the_world" ? "Ask the world" : action === "post_cleanup" ? "Post your cleanup" : action === "organise_campaign" ? "Post your campaign" : action === "fund_plan" ? "Fund your plan" : "Post your Ask";
340
+ const lines = asks.length === 1 ? [askLine(asks[0])] : [`${asks.length} Asks:`, ...asks.slice(0, 6).map(askLine), ...(asks.length > 6 ? [`and ${asks.length - 6} more`] : [])];
341
+ return { title, lines: [...lines, ...(asks.some((ask) => ask.checker && ask.perCheck) ? ["Reviews may be billed separately; check the verifier's terms."] : []), "Unused money comes back to you when it closes."], totalCents: total, button: `Pay ${dollars(total)} and post` };
342
+ }
343
+ if (family === "call") {
344
+ const quote = payload.quote;
345
+ const fields = payload.call.fields;
346
+ return {
347
+ title: "Post your Pro Ask",
348
+ lines: [...(fields.title ? [`"${fields.title}"`] : []), `Rewards budget: ${dollars(quote.proReceivesCents)}. Fees: ${dollars(quote.feeCents)}.`],
349
+ totalCents: quote.youPayCents,
350
+ button: `Pay ${dollars(quote.youPayCents)} and post`
351
+ };
352
+ }
353
+ if (family === "takeBack") {
354
+ const asks = payload.asks;
355
+ const name = (ask) => (ask.title ? `"${ask.title}"` : `Ask #${ask.collectionId}`);
356
+ return {
357
+ title: action === "close_plan" ? "Close your plan" : "Close your Ask",
358
+ lines: [
359
+ ...(asks.length === 1 ? [name(asks[0])] : [`${asks.length} Asks`]),
360
+ "It stops taking answers. What no answer used comes back to you.",
361
+ "Money owed for answers already sent stays to pay them."
362
+ ],
363
+ totalCents: null,
364
+ button: action === "close_plan" ? "Close them and take it back" : "Close it and take it back"
365
+ };
366
+ }
367
+ if (family === "approve") {
368
+ /* No figure here: the page reads what approving pays from the ask itself and says it beside these lines. */
369
+ return {
370
+ title: "Approve this report",
371
+ lines: [...(payload.title ? [`Report on "${String(payload.title)}"`] : []), "This is final."],
372
+ totalCents: null,
373
+ button: "Read it and approve"
374
+ };
375
+ }
376
+ if (family === "campaign") {
377
+ return {
378
+ title: "Create your campaign",
379
+ lines: [`"${String(payload.title)}"`, "Two steps, one after the other: the campaign and its requirements, then the link between them.", "Spends only network fees. Nothing is paid to anyone."],
380
+ totalCents: null,
381
+ button: "Create it"
382
+ };
383
+ }
384
+ if (family === "cashOut") {
385
+ const amount = Math.round(Number(payload.amount) * 100);
386
+ return { title: `Cash out ${dollars(amount)}`, lines: ["You check where it goes, then confirm once."], totalCents: amount, button: "Continue" };
387
+ }
388
+ if (family === "topUp") {
389
+ const amount = Number(payload.pay) * 100;
390
+ return { title: `Add ${dollars(amount)} of play money`, lines: ["Practice money for the sandbox. You pay by card."], totalCents: amount, button: `Pay ${dollars(amount)} by card` };
391
+ }
392
+ if (family === "photo")
393
+ return { title: "Your new picture", lines: ["The photo you sent your assistant. It shows on your pro page and your account."], totalCents: null, button: "Use this photo" };
394
+ if (family === "messages")
395
+ return { title: String(payload.title), lines: payload.lines.slice(), totalCents: null, button: "Confirm" };
396
+ const what = payload.title ? `For "${String(payload.title)}"` : `For Ask #${String(payload.collectionId)}`;
397
+ if (payload.text !== undefined || payload.fields !== undefined)
398
+ return { title: "Review your completion", lines: [what, "Review the draft and any files before sending."], totalCents: null, button: "Check and send" };
399
+ return { title: "Send your report", lines: [what, "Review the draft and any files before sending."], totalCents: null, button: "Check and send" };
400
+ }
401
+ /**
402
+ * The page's stage. `signedIn` is the browser's account, `canSign` whether its session can sign the page's words
403
+ * silently (the Auth Hub session key: what the connector's Google login gives); `read` what the store said.
404
+ */
405
+ export function draftStage(signedIn, canSign, read) {
406
+ if (!signedIn)
407
+ return { stage: "sign-in" };
408
+ if (!canSign)
409
+ return { stage: "needs-google" };
410
+ if (read.kind === "loading")
411
+ return { stage: "loading" };
412
+ if (read.kind === "wrong-account")
413
+ return { stage: "wrong-account", mine: shortAddress(signedIn), theirs: read.hint };
414
+ if (read.kind === "expired")
415
+ return { stage: "expired" };
416
+ if (read.kind === "missing")
417
+ return { stage: "missing" };
418
+ if (read.kind === "error")
419
+ return { stage: "error", words: read.words };
420
+ if (read.draft.state === "done")
421
+ return { stage: "done", draft: read.draft };
422
+ if (read.draft.state === "expired")
423
+ return { stage: "expired" };
424
+ return { stage: "ready", draft: read.draft };
425
+ }
426
+ /** The store's answer to a read, as a page reads it. */
427
+ export function readOf(status, body, expectedId) {
428
+ if (status === 200 && body && typeof body.id === "string" && (!expectedId || body.id === expectedId))
429
+ return { kind: "ok", draft: body };
430
+ if (status === 403 && body?.code === "wrong-account")
431
+ return { kind: "wrong-account", hint: typeof body.hint === "string" ? body.hint : null };
432
+ if (status === 410)
433
+ return { kind: "expired" };
434
+ if (status === 404)
435
+ return { kind: "missing" };
436
+ if (status === 401 && body?.code === "stale-proof")
437
+ return { kind: "error", words: "This phone's clock looks wrong. Set it to the right time and try again." };
438
+ return { kind: "error", words: "This page couldn't be loaded just now. Try again in a minute." };
439
+ }
440
+ /* The words a page signs are in actionDraftWords.ts, apart, so a page's first load does not carry the digest code. */
441
+ /** Why a page's result is not one to keep, or null: a plain object, small. */
442
+ export function resultProblem(raw) {
443
+ const result = record(raw);
444
+ if (!result)
445
+ return "bad-result";
446
+ if (new TextEncoder().encode(JSON.stringify(result)).length > MAX_RESULT_BYTES)
447
+ return "bad-result";
448
+ return null;
449
+ }
450
+ //# sourceMappingURL=actionDraft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionDraft.js","sourceRoot":"","sources":["../../../src/data/actionDraft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The words a one-tap draft's page signs (data/actionDraft.ts; docs/MCP.md "One-tap pages"): read the draft, start
3
+ * signing (the caps are checked again), say it is done with its result, or say why it failed, each under the
4
+ * person's own signature. The connector itself never signs these: it makes and reads drafts through the app's vouch
5
+ * for its token's account. Shaped like the invitation and room words (chain/inviteMessages.ts), whose digest and
6
+ * clock this shares; apart from actionDraft.ts so a page's first load does not carry them.
7
+ */
8
+ import { type ProofWords } from "../chain/inviteMessages.ts";
9
+ export declare const DRAFT_ACTS: readonly ["read", "start", "done", "failed", "claim", "mine", "discard", "files", "file"];
10
+ export type DraftAct = (typeof DRAFT_ACTS)[number];
11
+ /** The fields a draft proof digests: everything but the signer and the proof itself. */
12
+ export declare const draftProofBody: (body: Record<string, unknown>) => Record<string, unknown>;
13
+ /** `drafts:<act>:<id>:<signer>:<now>:<digest>`. */
14
+ export declare const draftMessage: (act: DraftAct, id: string, signer: string, now?: number, digest?: string) => string;
15
+ /** The words to sign for a draft act, digest and all. */
16
+ export declare function draftProofWords(act: DraftAct, id: string, signer: string, body: Record<string, unknown>, now?: number): Promise<string>;
17
+ /** Whether the words are this act's, on this draft, by this signer, over this digest, and fresh (15 minutes, as any read). */
18
+ export declare function readDraftMessage(message: string, expected: {
19
+ act: DraftAct;
20
+ id: string;
21
+ signer: string;
22
+ digest: string;
23
+ }, now?: number, maxAgeMs?: number): ProofWords;
24
+ /**
25
+ * On a page a draft hands over to (`/submit/<n>?draft=…` from `/report/<id>`, `/me/cash-out?draft=…` from `/do/<id>`):
26
+ * where to send the person back to when this browser may not carry the draft on here, or null to go on. Signed out,
27
+ * signed in without the Google session, as another account, a link used or expired: back to the draft's own page,
28
+ * which says which in plain words and offers the sign-in that comes back to it. A read that failed for a moment is
29
+ * no reason to stop somebody mid-way.
30
+ */
31
+ export declare function followOnBounceOf(page: string, signedIn: boolean, canSign: boolean, read: {
32
+ kind: string;
33
+ draft?: {
34
+ state: string;
35
+ };
36
+ } | null): string | null;
37
+ //# sourceMappingURL=actionDraftWords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionDraftWords.d.ts","sourceRoot":"","sources":["../../../src/data/actionDraftWords.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAA0C,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIrG,eAAO,MAAM,UAAU,2FAA4F,CAAC;AACpH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,wFAAwF;AACxF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAGpF,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,YAAY,GAAI,KAAK,QAAQ,EAAE,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,YAAgB,EAAE,eAAW,KAAG,MAA0D,CAAC;AAEnK,yDAAyD;AACzD,wBAAsB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjJ;AAED,8HAA8H;AAC9H,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAa,EAAE,QAAQ,SAAwB,GAAG,UAAU,CAIzL;AAGD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,GACvD,MAAM,GAAG,IAAI,CAKf"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The words a one-tap draft's page signs (data/actionDraft.ts; docs/MCP.md "One-tap pages"): read the draft, start
3
+ * signing (the caps are checked again), say it is done with its result, or say why it failed, each under the
4
+ * person's own signature. The connector itself never signs these: it makes and reads drafts through the app's vouch
5
+ * for its token's account. Shaped like the invitation and room words (chain/inviteMessages.ts), whose digest and
6
+ * clock this shares; apart from actionDraft.ts so a page's first load does not carry them.
7
+ */
8
+ import { digestOf, fresh, READ_PROOF_MAX_AGE_MS } from "../chain/inviteMessages.js";
9
+ /* `claim`, `mine` and `discard` are a pay draft's (workers/src/payDrafts.ts): the same words, its own doors.
10
+ * `files` and `file`: a submit_work draft's page lists the files an agent attached and takes each one (data/draftUploads.ts). */
11
+ export const DRAFT_ACTS = ["read", "start", "done", "failed", "claim", "mine", "discard", "files", "file"];
12
+ /** The fields a draft proof digests: everything but the signer and the proof itself. */
13
+ export const draftProofBody = (body) => {
14
+ const { address: _address, proof: _proof, ...rest } = body;
15
+ return rest;
16
+ };
17
+ /** `drafts:<act>:<id>:<signer>:<now>:<digest>`. */
18
+ export const draftMessage = (act, id, signer, now = Date.now(), digest = "") => `drafts:${act}:${id}:${signer}:${now}:${digest}`;
19
+ /** The words to sign for a draft act, digest and all. */
20
+ export async function draftProofWords(act, id, signer, body, now = Date.now()) {
21
+ return draftMessage(act, id, signer, now, await digestOf(draftProofBody(body)));
22
+ }
23
+ /** Whether the words are this act's, on this draft, by this signer, over this digest, and fresh (15 minutes, as any read). */
24
+ export function readDraftMessage(message, expected, now = Date.now(), maxAgeMs = READ_PROOF_MAX_AGE_MS) {
25
+ const parts = message.split(":");
26
+ if (parts.length !== 6 || parts[0] !== "drafts" || parts[1] !== expected.act || parts[2] !== expected.id || parts[3] !== expected.signer || parts[5] !== expected.digest)
27
+ return "mismatch";
28
+ return fresh(parts[4], now, maxAgeMs);
29
+ }
30
+ /* Here, not in actionDraft.ts, so the draft pages' first load does not carry it: only the pages a draft hands over to ask. */
31
+ /**
32
+ * On a page a draft hands over to (`/submit/<n>?draft=…` from `/report/<id>`, `/me/cash-out?draft=…` from `/do/<id>`):
33
+ * where to send the person back to when this browser may not carry the draft on here, or null to go on. Signed out,
34
+ * signed in without the Google session, as another account, a link used or expired: back to the draft's own page,
35
+ * which says which in plain words and offers the sign-in that comes back to it. A read that failed for a moment is
36
+ * no reason to stop somebody mid-way.
37
+ */
38
+ export function followOnBounceOf(page, signedIn, canSign, read) {
39
+ if (!signedIn || !canSign || !read)
40
+ return page;
41
+ if (read.kind === "ok")
42
+ return read.draft?.state === "open" || read.draft?.state === "signing" ? null : page;
43
+ if (read.kind === "error" || read.kind === "loading")
44
+ return null;
45
+ return page;
46
+ }
47
+ //# sourceMappingURL=actionDraftWords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionDraftWords.js","sourceRoot":"","sources":["../../../src/data/actionDraftWords.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAmB,MAAM,4BAA4B,CAAC;AAErG;iIACiI;AACjI,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGpH,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAA6B,EAA2B,EAAE;IACvF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAa,EAAE,EAAU,EAAE,MAAc,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAU,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;AAEnK,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAa,EAAE,EAAU,EAAE,MAAc,EAAE,IAA6B,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9H,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,8HAA8H;AAC9H,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAuE,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,qBAAqB;IAC3K,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAC5L,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,8HAA8H;AAC9H;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,QAAiB,EACjB,OAAgB,EAChB,IAAwD;IAExD,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/data/agent.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,gEAAgE;IAChE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,iFAAiF;IACjF,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAMlI;AAWD,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA0G5E"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/data/agent.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,gEAAgE;IAChE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,iFAAiF;IACjF,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAMlI;AAWD,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA6G5E"}
@@ -1,6 +1,6 @@
1
1
  import { gql } from "./gql.js";
2
2
  import { entityNames } from "./profiles.js";
3
- import { approvalAmount, coinDisplay, evaluationAmount, isPegged } from "./format.js";
3
+ import { evaluationAmount, isPegged, paidAmount, sharedApproval } from "./format.js";
4
4
  import { approvalPaid } from "./types.js";
5
5
  const ADDRESS = /^ixo1[0-9a-z]{20,70}$/;
6
6
  /**
@@ -56,6 +56,8 @@ export async function loadAgent(address) {
56
56
  }
57
57
  /* By the ask's entity — the protocol only ever equalled it on the old shape; see threads.ts. */
58
58
  const titles = await entityNames([...collections.values()].map((collection) => collection.entity));
59
+ /* A pro ask's reward leg is split by the chain: the record says what landed with the person, not the gross (Graeme, #13519 read $1.25 for $1.00). */
60
+ const split = [...collections.values()].some((collection) => sharedApproval(collection.payments)) ? await (await import("../chain/query.js")).feeSplitOrNull().catch(() => null) : null;
59
61
  const jobs = claims.map((claim) => {
60
62
  const collection = collections.get(String(claim.collectionId));
61
63
  const evaluation = claim.evaluationByClaimId;
@@ -69,7 +71,7 @@ export async function loadAgent(address) {
69
71
  proof: evaluation?.verificationProof ?? null,
70
72
  paid,
71
73
  /* The evaluation's own amount is empty in practice — the collection's approval leg is the truth. */
72
- amount: paid ? (coinDisplay(evaluation?.amount) ?? approvalAmount(collection?.payments)) : null
74
+ amount: paid ? (paidAmount(collection?.payments, split, evaluation?.amount)) : null
73
75
  };
74
76
  });
75
77
  const earnedAll = sumBySymbol(jobs.map((job) => job.amount));