@ixo/openhands-sdk 0.4.0 → 0.5.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 (510) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/campaign/cleanup.js +1 -1
  3. package/dist/cjs/campaign/cleanup.js.map +1 -1
  4. package/dist/cjs/campaign/funding.d.ts.map +1 -1
  5. package/dist/cjs/campaign/funding.js +1 -1
  6. package/dist/cjs/campaign/funding.js.map +1 -1
  7. package/dist/cjs/campaign/pool.js +3 -3
  8. package/dist/cjs/campaign/pool.js.map +1 -1
  9. package/dist/cjs/campaign/record.d.ts.map +1 -1
  10. package/dist/cjs/campaign/record.js +1 -1
  11. package/dist/cjs/campaign/record.js.map +1 -1
  12. package/dist/cjs/campaign/spot.d.ts.map +1 -1
  13. package/dist/cjs/campaign/spot.js +2 -1
  14. package/dist/cjs/campaign/spot.js.map +1 -1
  15. package/dist/cjs/campaign/spots.js +4 -4
  16. package/dist/cjs/campaign/spots.js.map +1 -1
  17. package/dist/cjs/campaign/treasurySends.d.ts.map +1 -1
  18. package/dist/cjs/campaign/treasurySends.js +3 -3
  19. package/dist/cjs/campaign/treasurySends.js.map +1 -1
  20. package/dist/cjs/chain/ask.d.ts +17 -0
  21. package/dist/cjs/chain/ask.d.ts.map +1 -1
  22. package/dist/cjs/chain/ask.js +27 -10
  23. package/dist/cjs/chain/ask.js.map +1 -1
  24. package/dist/cjs/chain/broadcast.d.ts.map +1 -1
  25. package/dist/cjs/chain/broadcast.js +6 -4
  26. package/dist/cjs/chain/broadcast.js.map +1 -1
  27. package/dist/cjs/chain/claimVerdict.d.ts +26 -0
  28. package/dist/cjs/chain/claimVerdict.d.ts.map +1 -0
  29. package/dist/cjs/chain/claimVerdict.js +33 -0
  30. package/dist/cjs/chain/claimVerdict.js.map +1 -0
  31. package/dist/cjs/chain/delegate.d.ts +46 -3
  32. package/dist/cjs/chain/delegate.d.ts.map +1 -1
  33. package/dist/cjs/chain/delegate.js +68 -6
  34. package/dist/cjs/chain/delegate.js.map +1 -1
  35. package/dist/cjs/chain/entityShape.d.ts +6 -0
  36. package/dist/cjs/chain/entityShape.d.ts.map +1 -1
  37. package/dist/cjs/chain/entityShape.js +24 -4
  38. package/dist/cjs/chain/entityShape.js.map +1 -1
  39. package/dist/cjs/chain/env.d.ts +1 -0
  40. package/dist/cjs/chain/env.d.ts.map +1 -1
  41. package/dist/cjs/chain/env.js +9 -1
  42. package/dist/cjs/chain/env.js.map +1 -1
  43. package/dist/cjs/chain/inviteMessages.d.ts +183 -0
  44. package/dist/cjs/chain/inviteMessages.d.ts.map +1 -0
  45. package/dist/cjs/chain/inviteMessages.js +289 -0
  46. package/dist/cjs/chain/inviteMessages.js.map +1 -0
  47. package/dist/cjs/chain/inviteProof.d.ts +121 -0
  48. package/dist/cjs/chain/inviteProof.d.ts.map +1 -0
  49. package/dist/cjs/chain/inviteProof.js +297 -0
  50. package/dist/cjs/chain/inviteProof.js.map +1 -0
  51. package/dist/cjs/chain/lane.d.ts +148 -0
  52. package/dist/cjs/chain/lane.d.ts.map +1 -0
  53. package/dist/cjs/chain/lane.js +220 -0
  54. package/dist/cjs/chain/lane.js.map +1 -0
  55. package/dist/cjs/chain/money.d.ts +12 -4
  56. package/dist/cjs/chain/money.d.ts.map +1 -1
  57. package/dist/cjs/chain/money.js +20 -7
  58. package/dist/cjs/chain/money.js.map +1 -1
  59. package/dist/cjs/chain/oracle.d.ts +2 -0
  60. package/dist/cjs/chain/oracle.d.ts.map +1 -1
  61. package/dist/cjs/chain/oracle.js +1 -1
  62. package/dist/cjs/chain/oracle.js.map +1 -1
  63. package/dist/cjs/chain/orgReviewBilling.js +1 -1
  64. package/dist/cjs/chain/orgReviewBilling.js.map +1 -1
  65. package/dist/cjs/chain/payoutTerms.d.ts.map +1 -1
  66. package/dist/cjs/chain/payoutTerms.js +1 -1
  67. package/dist/cjs/chain/payoutTerms.js.map +1 -1
  68. package/dist/cjs/chain/personReview.d.ts +218 -0
  69. package/dist/cjs/chain/personReview.d.ts.map +1 -0
  70. package/dist/cjs/chain/personReview.js +379 -0
  71. package/dist/cjs/chain/personReview.js.map +1 -0
  72. package/dist/cjs/chain/postFee.d.ts +11 -0
  73. package/dist/cjs/chain/postFee.d.ts.map +1 -0
  74. package/dist/cjs/chain/postFee.js +14 -0
  75. package/dist/cjs/chain/postFee.js.map +1 -0
  76. package/dist/cjs/chain/query.d.ts +55 -2
  77. package/dist/cjs/chain/query.d.ts.map +1 -1
  78. package/dist/cjs/chain/query.js +144 -8
  79. package/dist/cjs/chain/query.js.map +1 -1
  80. package/dist/cjs/chain/reviewBilling.d.ts +3 -27
  81. package/dist/cjs/chain/reviewBilling.d.ts.map +1 -1
  82. package/dist/cjs/chain/reviewBilling.js +5 -112
  83. package/dist/cjs/chain/reviewBilling.js.map +1 -1
  84. package/dist/cjs/chain.d.ts +2 -2
  85. package/dist/cjs/chain.d.ts.map +1 -1
  86. package/dist/cjs/chain.js +7 -2
  87. package/dist/cjs/chain.js.map +1 -1
  88. package/dist/cjs/config.d.ts +11 -2
  89. package/dist/cjs/config.d.ts.map +1 -1
  90. package/dist/cjs/config.js +5 -1
  91. package/dist/cjs/config.js.map +1 -1
  92. package/dist/cjs/data/agent.d.ts +2 -0
  93. package/dist/cjs/data/agent.d.ts.map +1 -1
  94. package/dist/cjs/data/agent.js +1 -0
  95. package/dist/cjs/data/agent.js.map +1 -1
  96. package/dist/cjs/data/board/assemble.d.ts +7 -2
  97. package/dist/cjs/data/board/assemble.d.ts.map +1 -1
  98. package/dist/cjs/data/board/assemble.js +76 -10
  99. package/dist/cjs/data/board/assemble.js.map +1 -1
  100. package/dist/cjs/data/board/facts.d.ts +2 -0
  101. package/dist/cjs/data/board/facts.d.ts.map +1 -1
  102. package/dist/cjs/data/board/facts.js +2 -1
  103. package/dist/cjs/data/board/facts.js.map +1 -1
  104. package/dist/cjs/data/board/read.d.ts +27 -3
  105. package/dist/cjs/data/board/read.d.ts.map +1 -1
  106. package/dist/cjs/data/board/read.js +122 -8
  107. package/dist/cjs/data/board/read.js.map +1 -1
  108. package/dist/cjs/data/board/types.d.ts +77 -5
  109. package/dist/cjs/data/board/types.d.ts.map +1 -1
  110. package/dist/cjs/data/board/types.js +5 -3
  111. package/dist/cjs/data/board/types.js.map +1 -1
  112. package/dist/cjs/data/checkers.d.ts +169 -0
  113. package/dist/cjs/data/checkers.d.ts.map +1 -0
  114. package/dist/cjs/data/checkers.js +354 -0
  115. package/dist/cjs/data/checkers.js.map +1 -0
  116. package/dist/cjs/data/checkersRead.d.ts +58 -0
  117. package/dist/cjs/data/checkersRead.d.ts.map +1 -0
  118. package/dist/cjs/data/checkersRead.js +263 -0
  119. package/dist/cjs/data/checkersRead.js.map +1 -0
  120. package/dist/cjs/data/denoms.d.ts.map +1 -1
  121. package/dist/cjs/data/denoms.js +1 -0
  122. package/dist/cjs/data/denoms.js.map +1 -1
  123. package/dist/cjs/data/docUrls.d.ts +2 -0
  124. package/dist/cjs/data/docUrls.d.ts.map +1 -1
  125. package/dist/cjs/data/docUrls.js +4 -1
  126. package/dist/cjs/data/docUrls.js.map +1 -1
  127. package/dist/cjs/data/docs.d.ts +3 -1
  128. package/dist/cjs/data/docs.d.ts.map +1 -1
  129. package/dist/cjs/data/docs.js +15 -2
  130. package/dist/cjs/data/docs.js.map +1 -1
  131. package/dist/cjs/data/engine.d.ts.map +1 -1
  132. package/dist/cjs/data/engine.js +12 -5
  133. package/dist/cjs/data/engine.js.map +1 -1
  134. package/dist/cjs/data/engineUrl.js +1 -1
  135. package/dist/cjs/data/engineUrl.js.map +1 -1
  136. package/dist/cjs/data/envelope.d.ts +18 -0
  137. package/dist/cjs/data/envelope.d.ts.map +1 -1
  138. package/dist/cjs/data/envelope.js +16 -1
  139. package/dist/cjs/data/envelope.js.map +1 -1
  140. package/dist/cjs/data/format.d.ts +18 -0
  141. package/dist/cjs/data/format.d.ts.map +1 -1
  142. package/dist/cjs/data/format.js +32 -2
  143. package/dist/cjs/data/format.js.map +1 -1
  144. package/dist/cjs/data/index.d.ts +2 -2
  145. package/dist/cjs/data/index.d.ts.map +1 -1
  146. package/dist/cjs/data/index.js +2 -1
  147. package/dist/cjs/data/index.js.map +1 -1
  148. package/dist/cjs/data/install.d.ts +63 -33
  149. package/dist/cjs/data/install.d.ts.map +1 -1
  150. package/dist/cjs/data/install.js +88 -45
  151. package/dist/cjs/data/install.js.map +1 -1
  152. package/dist/cjs/data/openness.d.ts +14 -1
  153. package/dist/cjs/data/openness.d.ts.map +1 -1
  154. package/dist/cjs/data/openness.js +14 -26
  155. package/dist/cjs/data/openness.js.map +1 -1
  156. package/dist/cjs/data/queue.d.ts +26 -0
  157. package/dist/cjs/data/queue.d.ts.map +1 -1
  158. package/dist/cjs/data/queue.js +57 -12
  159. package/dist/cjs/data/queue.js.map +1 -1
  160. package/dist/cjs/data/receipt.d.ts +19 -0
  161. package/dist/cjs/data/receipt.d.ts.map +1 -1
  162. package/dist/cjs/data/receipt.js +22 -5
  163. package/dist/cjs/data/receipt.js.map +1 -1
  164. package/dist/cjs/data/threads.d.ts +2 -0
  165. package/dist/cjs/data/threads.d.ts.map +1 -1
  166. package/dist/cjs/data/threads.js +3 -1
  167. package/dist/cjs/data/threads.js.map +1 -1
  168. package/dist/cjs/data/traceWords.js +1 -1
  169. package/dist/cjs/data/traceWords.js.map +1 -1
  170. package/dist/cjs/data/types.d.ts +6 -1
  171. package/dist/cjs/data/types.d.ts.map +1 -1
  172. package/dist/cjs/data/types.js.map +1 -1
  173. package/dist/cjs/data/whyReceipt.d.ts.map +1 -1
  174. package/dist/cjs/data/whyReceipt.js +10 -1
  175. package/dist/cjs/data/whyReceipt.js.map +1 -1
  176. package/dist/cjs/data/work.d.ts +5 -0
  177. package/dist/cjs/data/work.d.ts.map +1 -1
  178. package/dist/cjs/data/work.js +11 -5
  179. package/dist/cjs/data/work.js.map +1 -1
  180. package/dist/cjs/discovery.d.ts +64 -0
  181. package/dist/cjs/discovery.d.ts.map +1 -0
  182. package/dist/cjs/discovery.js +85 -0
  183. package/dist/cjs/discovery.js.map +1 -0
  184. package/dist/cjs/envRead.d.ts +1 -1
  185. package/dist/cjs/envRead.d.ts.map +1 -1
  186. package/dist/cjs/envRead.js +2 -1
  187. package/dist/cjs/envRead.js.map +1 -1
  188. package/dist/cjs/given.d.ts +14 -0
  189. package/dist/cjs/given.d.ts.map +1 -1
  190. package/dist/cjs/given.js +14 -2
  191. package/dist/cjs/given.js.map +1 -1
  192. package/dist/cjs/network.d.ts +3 -1
  193. package/dist/cjs/network.d.ts.map +1 -1
  194. package/dist/cjs/network.js +11 -3
  195. package/dist/cjs/network.js.map +1 -1
  196. package/dist/cjs/rubric/bridge.d.ts +8 -0
  197. package/dist/cjs/rubric/bridge.d.ts.map +1 -1
  198. package/dist/cjs/rubric/bridge.js +107 -8
  199. package/dist/cjs/rubric/bridge.js.map +1 -1
  200. package/dist/cjs/rubric/call.d.ts +35 -8
  201. package/dist/cjs/rubric/call.d.ts.map +1 -1
  202. package/dist/cjs/rubric/call.js +62 -20
  203. package/dist/cjs/rubric/call.js.map +1 -1
  204. package/dist/cjs/rubric/callTag.d.ts +5 -0
  205. package/dist/cjs/rubric/callTag.d.ts.map +1 -0
  206. package/dist/cjs/rubric/callTag.js +17 -0
  207. package/dist/cjs/rubric/callTag.js.map +1 -0
  208. package/dist/cjs/rubric/compose.d.ts.map +1 -1
  209. package/dist/cjs/rubric/compose.js +5 -3
  210. package/dist/cjs/rubric/compose.js.map +1 -1
  211. package/dist/cjs/rubric/draft.d.ts +9 -1
  212. package/dist/cjs/rubric/draft.d.ts.map +1 -1
  213. package/dist/cjs/rubric/draft.js +24 -2
  214. package/dist/cjs/rubric/draft.js.map +1 -1
  215. package/dist/cjs/rubric/gateMet.d.ts +17 -0
  216. package/dist/cjs/rubric/gateMet.d.ts.map +1 -1
  217. package/dist/cjs/rubric/gateMet.js +36 -3
  218. package/dist/cjs/rubric/gateMet.js.map +1 -1
  219. package/dist/cjs/rubric/leg.js +3 -3
  220. package/dist/cjs/rubric/leg.js.map +1 -1
  221. package/dist/cjs/rubric/marketPlan.d.ts +2 -0
  222. package/dist/cjs/rubric/marketPlan.d.ts.map +1 -1
  223. package/dist/cjs/rubric/marketPlan.js.map +1 -1
  224. package/dist/cjs/rubric/planAsk.d.ts +23 -0
  225. package/dist/cjs/rubric/planAsk.d.ts.map +1 -0
  226. package/dist/cjs/rubric/planAsk.js +24 -0
  227. package/dist/cjs/rubric/planAsk.js.map +1 -0
  228. package/dist/cjs/rubric/report.d.ts +208 -0
  229. package/dist/cjs/rubric/report.d.ts.map +1 -0
  230. package/dist/cjs/rubric/report.js +384 -0
  231. package/dist/cjs/rubric/report.js.map +1 -0
  232. package/dist/cjs/rubric/reportLine.d.ts +31 -0
  233. package/dist/cjs/rubric/reportLine.d.ts.map +1 -0
  234. package/dist/cjs/rubric/reportLine.js +45 -0
  235. package/dist/cjs/rubric/reportLine.js.map +1 -0
  236. package/dist/cjs/rubric/reportTemplate.d.ts +30 -0
  237. package/dist/cjs/rubric/reportTemplate.d.ts.map +1 -0
  238. package/dist/cjs/rubric/reportTemplate.js +78 -0
  239. package/dist/cjs/rubric/reportTemplate.js.map +1 -0
  240. package/dist/cjs/rubric/share.d.ts +46 -0
  241. package/dist/cjs/rubric/share.d.ts.map +1 -0
  242. package/dist/cjs/rubric/share.js +65 -0
  243. package/dist/cjs/rubric/share.js.map +1 -0
  244. package/dist/cjs/rubric/terms.d.ts +76 -2
  245. package/dist/cjs/rubric/terms.d.ts.map +1 -1
  246. package/dist/cjs/rubric/terms.js +84 -4
  247. package/dist/cjs/rubric/terms.js.map +1 -1
  248. package/dist/cjs/verification/profile.d.ts +28 -0
  249. package/dist/cjs/verification/profile.d.ts.map +1 -0
  250. package/dist/cjs/verification/profile.js +126 -0
  251. package/dist/cjs/verification/profile.js.map +1 -0
  252. package/dist/cjs/verification/schema.d.ts +54 -0
  253. package/dist/cjs/verification/schema.d.ts.map +1 -0
  254. package/dist/cjs/verification/schema.js +49 -0
  255. package/dist/cjs/verification/schema.js.map +1 -0
  256. package/dist/esm/campaign/cleanup.js +1 -1
  257. package/dist/esm/campaign/cleanup.js.map +1 -1
  258. package/dist/esm/campaign/funding.d.ts.map +1 -1
  259. package/dist/esm/campaign/funding.js +2 -2
  260. package/dist/esm/campaign/funding.js.map +1 -1
  261. package/dist/esm/campaign/pool.js +3 -3
  262. package/dist/esm/campaign/pool.js.map +1 -1
  263. package/dist/esm/campaign/record.d.ts.map +1 -1
  264. package/dist/esm/campaign/record.js +2 -2
  265. package/dist/esm/campaign/record.js.map +1 -1
  266. package/dist/esm/campaign/spot.d.ts.map +1 -1
  267. package/dist/esm/campaign/spot.js +2 -1
  268. package/dist/esm/campaign/spot.js.map +1 -1
  269. package/dist/esm/campaign/spots.js +4 -4
  270. package/dist/esm/campaign/spots.js.map +1 -1
  271. package/dist/esm/campaign/treasurySends.d.ts.map +1 -1
  272. package/dist/esm/campaign/treasurySends.js +4 -4
  273. package/dist/esm/campaign/treasurySends.js.map +1 -1
  274. package/dist/esm/chain/ask.d.ts +17 -0
  275. package/dist/esm/chain/ask.d.ts.map +1 -1
  276. package/dist/esm/chain/ask.js +29 -12
  277. package/dist/esm/chain/ask.js.map +1 -1
  278. package/dist/esm/chain/broadcast.d.ts.map +1 -1
  279. package/dist/esm/chain/broadcast.js +7 -5
  280. package/dist/esm/chain/broadcast.js.map +1 -1
  281. package/dist/esm/chain/claimVerdict.d.ts +26 -0
  282. package/dist/esm/chain/claimVerdict.d.ts.map +1 -0
  283. package/dist/esm/chain/claimVerdict.js +30 -0
  284. package/dist/esm/chain/claimVerdict.js.map +1 -0
  285. package/dist/esm/chain/delegate.d.ts +46 -3
  286. package/dist/esm/chain/delegate.d.ts.map +1 -1
  287. package/dist/esm/chain/delegate.js +60 -5
  288. package/dist/esm/chain/delegate.js.map +1 -1
  289. package/dist/esm/chain/entityShape.d.ts +6 -0
  290. package/dist/esm/chain/entityShape.d.ts.map +1 -1
  291. package/dist/esm/chain/entityShape.js +20 -3
  292. package/dist/esm/chain/entityShape.js.map +1 -1
  293. package/dist/esm/chain/env.d.ts +1 -0
  294. package/dist/esm/chain/env.d.ts.map +1 -1
  295. package/dist/esm/chain/env.js +7 -0
  296. package/dist/esm/chain/env.js.map +1 -1
  297. package/dist/esm/chain/inviteMessages.d.ts +183 -0
  298. package/dist/esm/chain/inviteMessages.d.ts.map +1 -0
  299. package/dist/esm/chain/inviteMessages.js +246 -0
  300. package/dist/esm/chain/inviteMessages.js.map +1 -0
  301. package/dist/esm/chain/inviteProof.d.ts +121 -0
  302. package/dist/esm/chain/inviteProof.d.ts.map +1 -0
  303. package/dist/esm/chain/inviteProof.js +278 -0
  304. package/dist/esm/chain/inviteProof.js.map +1 -0
  305. package/dist/esm/chain/lane.d.ts +148 -0
  306. package/dist/esm/chain/lane.d.ts.map +1 -0
  307. package/dist/esm/chain/lane.js +170 -0
  308. package/dist/esm/chain/lane.js.map +1 -0
  309. package/dist/esm/chain/money.d.ts +12 -4
  310. package/dist/esm/chain/money.d.ts.map +1 -1
  311. package/dist/esm/chain/money.js +19 -7
  312. package/dist/esm/chain/money.js.map +1 -1
  313. package/dist/esm/chain/oracle.d.ts +2 -0
  314. package/dist/esm/chain/oracle.d.ts.map +1 -1
  315. package/dist/esm/chain/oracle.js +1 -1
  316. package/dist/esm/chain/oracle.js.map +1 -1
  317. package/dist/esm/chain/orgReviewBilling.js +1 -1
  318. package/dist/esm/chain/orgReviewBilling.js.map +1 -1
  319. package/dist/esm/chain/payoutTerms.d.ts.map +1 -1
  320. package/dist/esm/chain/payoutTerms.js +1 -1
  321. package/dist/esm/chain/payoutTerms.js.map +1 -1
  322. package/dist/esm/chain/personReview.d.ts +218 -0
  323. package/dist/esm/chain/personReview.d.ts.map +1 -0
  324. package/dist/esm/chain/personReview.js +322 -0
  325. package/dist/esm/chain/personReview.js.map +1 -0
  326. package/dist/esm/chain/postFee.d.ts +11 -0
  327. package/dist/esm/chain/postFee.d.ts.map +1 -0
  328. package/dist/esm/chain/postFee.js +11 -0
  329. package/dist/esm/chain/postFee.js.map +1 -0
  330. package/dist/esm/chain/query.d.ts +55 -2
  331. package/dist/esm/chain/query.d.ts.map +1 -1
  332. package/dist/esm/chain/query.js +136 -8
  333. package/dist/esm/chain/query.js.map +1 -1
  334. package/dist/esm/chain/reviewBilling.d.ts +3 -27
  335. package/dist/esm/chain/reviewBilling.d.ts.map +1 -1
  336. package/dist/esm/chain/reviewBilling.js +5 -108
  337. package/dist/esm/chain/reviewBilling.js.map +1 -1
  338. package/dist/esm/chain.d.ts +2 -2
  339. package/dist/esm/chain.d.ts.map +1 -1
  340. package/dist/esm/chain.js +2 -2
  341. package/dist/esm/chain.js.map +1 -1
  342. package/dist/esm/config.d.ts +11 -2
  343. package/dist/esm/config.d.ts.map +1 -1
  344. package/dist/esm/config.js +6 -2
  345. package/dist/esm/config.js.map +1 -1
  346. package/dist/esm/data/agent.d.ts +2 -0
  347. package/dist/esm/data/agent.d.ts.map +1 -1
  348. package/dist/esm/data/agent.js +1 -0
  349. package/dist/esm/data/agent.js.map +1 -1
  350. package/dist/esm/data/board/assemble.d.ts +7 -2
  351. package/dist/esm/data/board/assemble.d.ts.map +1 -1
  352. package/dist/esm/data/board/assemble.js +73 -9
  353. package/dist/esm/data/board/assemble.js.map +1 -1
  354. package/dist/esm/data/board/facts.d.ts +2 -0
  355. package/dist/esm/data/board/facts.d.ts.map +1 -1
  356. package/dist/esm/data/board/facts.js +2 -1
  357. package/dist/esm/data/board/facts.js.map +1 -1
  358. package/dist/esm/data/board/read.d.ts +27 -3
  359. package/dist/esm/data/board/read.d.ts.map +1 -1
  360. package/dist/esm/data/board/read.js +123 -10
  361. package/dist/esm/data/board/read.js.map +1 -1
  362. package/dist/esm/data/board/types.d.ts +77 -5
  363. package/dist/esm/data/board/types.d.ts.map +1 -1
  364. package/dist/esm/data/board/types.js +5 -3
  365. package/dist/esm/data/board/types.js.map +1 -1
  366. package/dist/esm/data/checkers.d.ts +169 -0
  367. package/dist/esm/data/checkers.d.ts.map +1 -0
  368. package/dist/esm/data/checkers.js +304 -0
  369. package/dist/esm/data/checkers.js.map +1 -0
  370. package/dist/esm/data/checkersRead.d.ts +58 -0
  371. package/dist/esm/data/checkersRead.d.ts.map +1 -0
  372. package/dist/esm/data/checkersRead.js +252 -0
  373. package/dist/esm/data/checkersRead.js.map +1 -0
  374. package/dist/esm/data/denoms.d.ts.map +1 -1
  375. package/dist/esm/data/denoms.js +1 -0
  376. package/dist/esm/data/denoms.js.map +1 -1
  377. package/dist/esm/data/docUrls.d.ts +2 -0
  378. package/dist/esm/data/docUrls.d.ts.map +1 -1
  379. package/dist/esm/data/docUrls.js +2 -0
  380. package/dist/esm/data/docUrls.js.map +1 -1
  381. package/dist/esm/data/docs.d.ts +3 -1
  382. package/dist/esm/data/docs.d.ts.map +1 -1
  383. package/dist/esm/data/docs.js +15 -2
  384. package/dist/esm/data/docs.js.map +1 -1
  385. package/dist/esm/data/engine.d.ts.map +1 -1
  386. package/dist/esm/data/engine.js +12 -5
  387. package/dist/esm/data/engine.js.map +1 -1
  388. package/dist/esm/data/engineUrl.js +2 -2
  389. package/dist/esm/data/engineUrl.js.map +1 -1
  390. package/dist/esm/data/envelope.d.ts +18 -0
  391. package/dist/esm/data/envelope.d.ts.map +1 -1
  392. package/dist/esm/data/envelope.js +14 -0
  393. package/dist/esm/data/envelope.js.map +1 -1
  394. package/dist/esm/data/format.d.ts +18 -0
  395. package/dist/esm/data/format.d.ts.map +1 -1
  396. package/dist/esm/data/format.js +28 -1
  397. package/dist/esm/data/format.js.map +1 -1
  398. package/dist/esm/data/index.d.ts +2 -2
  399. package/dist/esm/data/index.d.ts.map +1 -1
  400. package/dist/esm/data/index.js +1 -1
  401. package/dist/esm/data/index.js.map +1 -1
  402. package/dist/esm/data/install.d.ts +63 -33
  403. package/dist/esm/data/install.d.ts.map +1 -1
  404. package/dist/esm/data/install.js +81 -44
  405. package/dist/esm/data/install.js.map +1 -1
  406. package/dist/esm/data/openness.d.ts +14 -1
  407. package/dist/esm/data/openness.d.ts.map +1 -1
  408. package/dist/esm/data/openness.js +14 -26
  409. package/dist/esm/data/openness.js.map +1 -1
  410. package/dist/esm/data/queue.d.ts +26 -0
  411. package/dist/esm/data/queue.d.ts.map +1 -1
  412. package/dist/esm/data/queue.js +50 -9
  413. package/dist/esm/data/queue.js.map +1 -1
  414. package/dist/esm/data/receipt.d.ts +19 -0
  415. package/dist/esm/data/receipt.d.ts.map +1 -1
  416. package/dist/esm/data/receipt.js +20 -4
  417. package/dist/esm/data/receipt.js.map +1 -1
  418. package/dist/esm/data/threads.d.ts +2 -0
  419. package/dist/esm/data/threads.d.ts.map +1 -1
  420. package/dist/esm/data/threads.js +3 -1
  421. package/dist/esm/data/threads.js.map +1 -1
  422. package/dist/esm/data/traceWords.js +1 -1
  423. package/dist/esm/data/traceWords.js.map +1 -1
  424. package/dist/esm/data/types.d.ts +6 -1
  425. package/dist/esm/data/types.d.ts.map +1 -1
  426. package/dist/esm/data/types.js.map +1 -1
  427. package/dist/esm/data/whyReceipt.d.ts.map +1 -1
  428. package/dist/esm/data/whyReceipt.js +10 -1
  429. package/dist/esm/data/whyReceipt.js.map +1 -1
  430. package/dist/esm/data/work.d.ts +5 -0
  431. package/dist/esm/data/work.d.ts.map +1 -1
  432. package/dist/esm/data/work.js +11 -5
  433. package/dist/esm/data/work.js.map +1 -1
  434. package/dist/esm/discovery.d.ts +64 -0
  435. package/dist/esm/discovery.d.ts.map +1 -0
  436. package/dist/esm/discovery.js +74 -0
  437. package/dist/esm/discovery.js.map +1 -0
  438. package/dist/esm/envRead.d.ts +1 -1
  439. package/dist/esm/envRead.d.ts.map +1 -1
  440. package/dist/esm/envRead.js +1 -1
  441. package/dist/esm/envRead.js.map +1 -1
  442. package/dist/esm/given.d.ts +14 -0
  443. package/dist/esm/given.d.ts.map +1 -1
  444. package/dist/esm/given.js +11 -1
  445. package/dist/esm/given.js.map +1 -1
  446. package/dist/esm/network.d.ts +3 -1
  447. package/dist/esm/network.d.ts.map +1 -1
  448. package/dist/esm/network.js +10 -3
  449. package/dist/esm/network.js.map +1 -1
  450. package/dist/esm/rubric/bridge.d.ts +8 -0
  451. package/dist/esm/rubric/bridge.d.ts.map +1 -1
  452. package/dist/esm/rubric/bridge.js +105 -7
  453. package/dist/esm/rubric/bridge.js.map +1 -1
  454. package/dist/esm/rubric/call.d.ts +35 -8
  455. package/dist/esm/rubric/call.d.ts.map +1 -1
  456. package/dist/esm/rubric/call.js +57 -16
  457. package/dist/esm/rubric/call.js.map +1 -1
  458. package/dist/esm/rubric/callTag.d.ts +5 -0
  459. package/dist/esm/rubric/callTag.d.ts.map +1 -0
  460. package/dist/esm/rubric/callTag.js +12 -0
  461. package/dist/esm/rubric/callTag.js.map +1 -0
  462. package/dist/esm/rubric/compose.d.ts.map +1 -1
  463. package/dist/esm/rubric/compose.js +5 -3
  464. package/dist/esm/rubric/compose.js.map +1 -1
  465. package/dist/esm/rubric/draft.d.ts +9 -1
  466. package/dist/esm/rubric/draft.d.ts.map +1 -1
  467. package/dist/esm/rubric/draft.js +23 -2
  468. package/dist/esm/rubric/draft.js.map +1 -1
  469. package/dist/esm/rubric/gateMet.d.ts +17 -0
  470. package/dist/esm/rubric/gateMet.d.ts.map +1 -1
  471. package/dist/esm/rubric/gateMet.js +34 -2
  472. package/dist/esm/rubric/gateMet.js.map +1 -1
  473. package/dist/esm/rubric/leg.js +4 -4
  474. package/dist/esm/rubric/leg.js.map +1 -1
  475. package/dist/esm/rubric/marketPlan.d.ts +2 -0
  476. package/dist/esm/rubric/marketPlan.d.ts.map +1 -1
  477. package/dist/esm/rubric/marketPlan.js.map +1 -1
  478. package/dist/esm/rubric/planAsk.d.ts +23 -0
  479. package/dist/esm/rubric/planAsk.d.ts.map +1 -0
  480. package/dist/esm/rubric/planAsk.js +20 -0
  481. package/dist/esm/rubric/planAsk.js.map +1 -0
  482. package/dist/esm/rubric/report.d.ts +208 -0
  483. package/dist/esm/rubric/report.d.ts.map +1 -0
  484. package/dist/esm/rubric/report.js +371 -0
  485. package/dist/esm/rubric/report.js.map +1 -0
  486. package/dist/esm/rubric/reportLine.d.ts +31 -0
  487. package/dist/esm/rubric/reportLine.d.ts.map +1 -0
  488. package/dist/esm/rubric/reportLine.js +40 -0
  489. package/dist/esm/rubric/reportLine.js.map +1 -0
  490. package/dist/esm/rubric/reportTemplate.d.ts +30 -0
  491. package/dist/esm/rubric/reportTemplate.d.ts.map +1 -0
  492. package/dist/esm/rubric/reportTemplate.js +74 -0
  493. package/dist/esm/rubric/reportTemplate.js.map +1 -0
  494. package/dist/esm/rubric/share.d.ts +46 -0
  495. package/dist/esm/rubric/share.d.ts.map +1 -0
  496. package/dist/esm/rubric/share.js +58 -0
  497. package/dist/esm/rubric/share.js.map +1 -0
  498. package/dist/esm/rubric/terms.d.ts +76 -2
  499. package/dist/esm/rubric/terms.d.ts.map +1 -1
  500. package/dist/esm/rubric/terms.js +78 -3
  501. package/dist/esm/rubric/terms.js.map +1 -1
  502. package/dist/esm/verification/profile.d.ts +28 -0
  503. package/dist/esm/verification/profile.d.ts.map +1 -0
  504. package/dist/esm/verification/profile.js +122 -0
  505. package/dist/esm/verification/profile.js.map +1 -0
  506. package/dist/esm/verification/schema.d.ts +54 -0
  507. package/dist/esm/verification/schema.d.ts.map +1 -0
  508. package/dist/esm/verification/schema.js +46 -0
  509. package/dist/esm/verification/schema.js.map +1 -0
  510. package/package.json +22 -2
@@ -0,0 +1,208 @@
1
+ /**
2
+ * `openhands-report/1`: an answer handed over as a structured review report (IXO-5698).
3
+ *
4
+ * One shape for every report ask, whatever is being reviewed:
5
+ * - the summary and its context: the product, its build, the date, the environment, who and what it is for, what was
6
+ * in scope, and the outcome in a sentence;
7
+ * - steps, each with a stable id, what was done, what was expected and observed, and a result (passed, failed,
8
+ * blocked, not tested, excluded);
9
+ * - findings, each with a stable id, the steps it came from, what was observed against what was expected, the impact,
10
+ * a severity with why, how to reproduce it (a blocker may say instead why it cannot be reproduced: the person
11
+ * weighs it), and how sure the reviewer is;
12
+ * - recommendations, each with a priority, the findings it answers, who should act, and when it counts as done;
13
+ * - limitations, as plain lines, and any extra sections the poster asked for by name.
14
+ * Evidence is referred to by file id, and every id must be a file handed over with the report.
15
+ *
16
+ * Plain TypeScript, no schema library: the reader rides into the browser (the reviewer card, the receipt) and the
17
+ * validator into the MCP; both are small. Every problem is said in words a person can act on.
18
+ */
19
+ import type { ReportRequirement } from "./reportLine.ts";
20
+ export { REPORT_CHECK_ID, reportCheckText, requiredSections, type ReportRequirement } from "./reportLine.ts";
21
+ export declare const REPORT_KIND = "openhands-report/1";
22
+ export type StepResult = "passed" | "failed" | "blocked" | "not_tested" | "excluded";
23
+ export type Severity = "blocker" | "major" | "minor";
24
+ export type Priority = "high" | "medium" | "low";
25
+ export interface ReportStep {
26
+ id: string;
27
+ what: string;
28
+ expected?: string;
29
+ observed?: string;
30
+ result: StepResult;
31
+ notes?: string;
32
+ evidence?: string[];
33
+ }
34
+ export interface ReportFinding {
35
+ id: string;
36
+ title: string;
37
+ /** The step ids it came from. */
38
+ steps?: string[];
39
+ observed: string;
40
+ expected: string;
41
+ impact: string;
42
+ severity: Severity;
43
+ severity_why: string;
44
+ how_to_reproduce?: string;
45
+ /** A blocker only: what is missing to reproduce it. The person weighs it. */
46
+ cannot_reproduce?: string;
47
+ /** How sure the reviewer is, and what would settle it. */
48
+ uncertainty?: string;
49
+ advice?: string;
50
+ evidence?: string[];
51
+ }
52
+ export interface ReportRecommendation {
53
+ text: string;
54
+ priority: Priority;
55
+ /** The finding ids it answers. */
56
+ findings?: string[];
57
+ /** Who should act on it (a team, a role). */
58
+ target?: string;
59
+ /** An observable condition that says it is done. */
60
+ done_when: string;
61
+ advice?: string;
62
+ }
63
+ export interface Report {
64
+ kind?: typeof REPORT_KIND;
65
+ summary: {
66
+ product: string;
67
+ build?: string;
68
+ date: string;
69
+ environment?: string;
70
+ target?: string;
71
+ scope: string;
72
+ outcome: string;
73
+ };
74
+ steps: ReportStep[];
75
+ findings: ReportFinding[];
76
+ recommendations: ReportRecommendation[];
77
+ limitations: string[];
78
+ /** The poster's extra required sections, by the heading they named. */
79
+ sections?: Record<string, string>;
80
+ }
81
+ /** A file handed over with an answer (envelope `files`): what the report's evidence ids point at. */
82
+ export interface ReportFile {
83
+ id: string;
84
+ url: string;
85
+ sha256: string;
86
+ mediaType: string;
87
+ name: string;
88
+ }
89
+ export declare const REPORT_LIMITS: {
90
+ /** The whole report as JSON. */
91
+ readonly bytes: 100000;
92
+ readonly short: 300;
93
+ readonly text: 4000;
94
+ readonly longText: 8000;
95
+ readonly steps: 100;
96
+ readonly findings: 100;
97
+ readonly lines: 50;
98
+ readonly evidence: 12;
99
+ readonly links: 50;
100
+ readonly sections: 10;
101
+ readonly heading: 60;
102
+ /** Extra sections a poster may require. */
103
+ readonly required: 5;
104
+ };
105
+ export declare const STEP_RESULTS: readonly StepResult[];
106
+ export declare const SEVERITIES: readonly Severity[];
107
+ export declare const PRIORITIES: readonly Priority[];
108
+ /** A file, step or finding id. */
109
+ export declare const FILE_ID: RegExp;
110
+ /**
111
+ * Everything wrong with a report for this ask, in plain words; empty when it is good. `fileIds` are the ids of the
112
+ * files handed over with it (every evidence id must be one of them). Ids are unique and every link resolves.
113
+ */
114
+ export declare function reportProblems(raw: unknown, requirement: ReportRequirement | null | undefined, fileIds?: readonly string[]): string[];
115
+ /**
116
+ * The report as the answer's words (`deliverable`): its JSON in one fixed order, the kind first and the extra sections
117
+ * last, so the ask's shape check can tell a section heading from any other key (bridge.ts).
118
+ */
119
+ export declare const reportText: (report: Report) => string;
120
+ /** Plain JSON keys, in the order a reader takes them: the bridge's shape gate looks for each. */
121
+ export declare const REPORT_KEYS: readonly ["summary", "steps", "findings", "recommendations", "limitations"];
122
+ /** Whether an answer's file may be shown from this URL (see `STORED`): every answer reader asks the same question. */
123
+ export declare const isStoredFile: (url: unknown) => url is string;
124
+ /**
125
+ * What a reader shows: the report read tolerantly into plain strings and lists (nothing it does not know survives),
126
+ * and the files it may show. `reportSections` turns it into headed text for the places that only print text.
127
+ */
128
+ export interface ReportDoc {
129
+ summary: {
130
+ product: string;
131
+ build?: string;
132
+ date: string;
133
+ environment?: string;
134
+ target?: string;
135
+ scope: string;
136
+ outcome: string;
137
+ };
138
+ steps: {
139
+ id: string;
140
+ what: string;
141
+ expected?: string;
142
+ observed?: string;
143
+ result: string;
144
+ notes?: string;
145
+ evidence: string[];
146
+ }[];
147
+ findings: {
148
+ id: string;
149
+ title: string;
150
+ steps: string[];
151
+ observed?: string;
152
+ expected?: string;
153
+ impact?: string;
154
+ severity: string;
155
+ severity_why?: string;
156
+ how_to_reproduce?: string;
157
+ cannot_reproduce?: string;
158
+ uncertainty?: string;
159
+ advice?: string;
160
+ evidence: string[];
161
+ }[];
162
+ recommendations: {
163
+ text: string;
164
+ priority: string;
165
+ findings: string[];
166
+ target?: string;
167
+ done_when?: string;
168
+ advice?: string;
169
+ }[];
170
+ limitations: string[];
171
+ /** The poster's extra sections, in the order given. */
172
+ sections: {
173
+ title: string;
174
+ text: string;
175
+ }[];
176
+ }
177
+ export interface ReportView {
178
+ doc: ReportDoc;
179
+ files: ReportFile[];
180
+ }
181
+ export declare const said: (value: unknown) => string;
182
+ /**
183
+ * The display parser: an answer envelope (or a bare report) → its report and its files, or null when it carries none.
184
+ * Tolerant: a reader shows what is there, the validator is where shape is enforced.
185
+ */
186
+ export declare function readReport(envelope: unknown): ReportView | null;
187
+ /** The report as headed text, in reading order: for the places that only print text (a share card, an old reader). */
188
+ export declare function reportSections(report: ReportDoc): {
189
+ title: string;
190
+ text: string;
191
+ }[];
192
+ /** One answer to an expert checker's form, as a page shows it: its question's label and its value, or its files. */
193
+ export interface FormAnswer {
194
+ label: string;
195
+ value?: string;
196
+ files?: {
197
+ name: string;
198
+ mediaType: string;
199
+ url: string;
200
+ }[];
201
+ }
202
+ /**
203
+ * An answer to an expert ask (`checkEnvelope` in data/checkers.ts), read back into labelled answers: each answer's label is recovered from
204
+ * the `deliverable` lines `checkEnvelope` wrote ("Label: value", in the answers' order), so it needs no form. Null when
205
+ * the envelope is not one (its lines and its answers do not line up). File answers keep only files on IXO's own stores.
206
+ */
207
+ export declare function formAnswersOf(envelope: unknown): FormAnswer[] | null;
208
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/rubric/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,371 @@
1
+ /**
2
+ * `openhands-report/1`: an answer handed over as a structured review report (IXO-5698).
3
+ *
4
+ * One shape for every report ask, whatever is being reviewed:
5
+ * - the summary and its context: the product, its build, the date, the environment, who and what it is for, what was
6
+ * in scope, and the outcome in a sentence;
7
+ * - steps, each with a stable id, what was done, what was expected and observed, and a result (passed, failed,
8
+ * blocked, not tested, excluded);
9
+ * - findings, each with a stable id, the steps it came from, what was observed against what was expected, the impact,
10
+ * a severity with why, how to reproduce it (a blocker may say instead why it cannot be reproduced: the person
11
+ * weighs it), and how sure the reviewer is;
12
+ * - recommendations, each with a priority, the findings it answers, who should act, and when it counts as done;
13
+ * - limitations, as plain lines, and any extra sections the poster asked for by name.
14
+ * Evidence is referred to by file id, and every id must be a file handed over with the report.
15
+ *
16
+ * Plain TypeScript, no schema library: the reader rides into the browser (the reviewer card, the receipt) and the
17
+ * validator into the MCP; both are small. Every problem is said in words a person can act on.
18
+ */
19
+ export { REPORT_CHECK_ID, reportCheckText, requiredSections } from "./reportLine.js";
20
+ export const REPORT_KIND = "openhands-report/1";
21
+ export const REPORT_LIMITS = {
22
+ /** The whole report as JSON. */
23
+ bytes: 100_000,
24
+ short: 300,
25
+ text: 4_000,
26
+ longText: 8_000,
27
+ steps: 100,
28
+ findings: 100,
29
+ lines: 50,
30
+ evidence: 12,
31
+ links: 50,
32
+ sections: 10,
33
+ heading: 60,
34
+ /** Extra sections a poster may require. */
35
+ required: 5
36
+ };
37
+ export const STEP_RESULTS = ["passed", "failed", "blocked", "not_tested", "excluded"];
38
+ export const SEVERITIES = ["blocker", "major", "minor"];
39
+ export const PRIORITIES = ["high", "medium", "low"];
40
+ /** A file, step or finding id. */
41
+ export const FILE_ID = /^[A-Za-z0-9_-]{1,64}$/;
42
+ const isText = (value, max) => typeof value === "string" && value.trim().length > 0 && value.length <= max;
43
+ const obj = (value) => (value !== null && typeof value === "object" && !Array.isArray(value) ? value : null);
44
+ /**
45
+ * Everything wrong with a report for this ask, in plain words; empty when it is good. `fileIds` are the ids of the
46
+ * files handed over with it (every evidence id must be one of them). Ids are unique and every link resolves.
47
+ */
48
+ export function reportProblems(raw, requirement, fileIds = []) {
49
+ const problems = [];
50
+ /* The Expert Review rules (reportLine.ts `v`): every finding has evidence and a way to reproduce it, and the limitations are said. */
51
+ const review = requirement?.v === 2;
52
+ const report = obj(raw);
53
+ if (!report)
54
+ return ["The report must be an object with summary, steps, findings, recommendations and limitations."];
55
+ let size = 0;
56
+ try {
57
+ size = new TextEncoder().encode(JSON.stringify(report)).byteLength;
58
+ }
59
+ catch {
60
+ return ["The report could not be read as JSON."];
61
+ }
62
+ if (size > REPORT_LIMITS.bytes)
63
+ problems.push(`The report is ${Math.ceil(size / 1000)} kB; keep it under ${REPORT_LIMITS.bytes / 1000} kB.`);
64
+ if (report.kind !== undefined && report.kind !== REPORT_KIND)
65
+ problems.push(`The report's kind must be "${REPORT_KIND}".`);
66
+ const text = (where, value, what, max = REPORT_LIMITS.text, required = true) => {
67
+ if (value === undefined && !required)
68
+ return;
69
+ if (!isText(value, max))
70
+ problems.push(`${where}: ${what}, up to ${max} characters.`);
71
+ };
72
+ /** A list of ids that must each be one of `known`. */
73
+ const links = (where, value, known, what) => {
74
+ if (value === undefined)
75
+ return;
76
+ if (!Array.isArray(value) || value.length > REPORT_LIMITS.links)
77
+ return void problems.push(`${where}: ${what} is a list of ids.`);
78
+ for (const id of value)
79
+ if (typeof id !== "string" || !known.has(id))
80
+ problems.push(`${where}: "${String(id).slice(0, 40)}" is not one of the ${what}.`);
81
+ };
82
+ const files = new Set(fileIds);
83
+ const evidence = (where, value) => {
84
+ if (value === undefined)
85
+ return;
86
+ if (!Array.isArray(value) || value.length > REPORT_LIMITS.evidence)
87
+ return void problems.push(`${where}: evidence is a list of at most ${REPORT_LIMITS.evidence} file ids.`);
88
+ for (const id of value) {
89
+ if (typeof id !== "string" || !FILE_ID.test(id))
90
+ problems.push(`${where}: "${String(id).slice(0, 40)}" is not a file id (letters, digits, - and _).`);
91
+ else if (!files.has(id))
92
+ problems.push(`${where}: evidence "${id}" is not one of the attached files.`);
93
+ }
94
+ };
95
+ /** Each entry's id: present, well formed, and not used twice. */
96
+ const ids = (entries, name) => {
97
+ const seen = new Set();
98
+ entries.forEach((raw, index) => {
99
+ const id = obj(raw)?.id;
100
+ if (typeof id !== "string" || !FILE_ID.test(id))
101
+ problems.push(`${name} ${index + 1}: give it an id (letters, digits, - and _), so others can point at it.`);
102
+ else if (seen.has(id))
103
+ problems.push(`${name} ${index + 1}: the id "${id}" is used twice.`);
104
+ else
105
+ seen.add(id);
106
+ });
107
+ return seen;
108
+ };
109
+ const summary = obj(report.summary);
110
+ if (!summary)
111
+ problems.push("Add a summary: the product, the date, what was in scope and the outcome.");
112
+ else {
113
+ text("Summary", summary.product, "say which product, link or build was reviewed", REPORT_LIMITS.short);
114
+ text("Summary", summary.date, "give the date of the review", 40);
115
+ text("Summary", summary.scope, "say what was in scope");
116
+ text("Summary", summary.outcome, "give the outcome in a short sentence", REPORT_LIMITS.short);
117
+ text("Summary", summary.build, "the build is optional text", REPORT_LIMITS.short, false);
118
+ text("Summary", summary.environment, "the environment is optional text", REPORT_LIMITS.short, false);
119
+ text("Summary", summary.target, "who and what it is for is optional text", REPORT_LIMITS.short, false);
120
+ }
121
+ let stepIds = new Set();
122
+ if (!Array.isArray(report.steps) || report.steps.length === 0)
123
+ problems.push("Add the steps you took, each with its result.");
124
+ else if (report.steps.length > REPORT_LIMITS.steps)
125
+ problems.push(`Keep it to ${REPORT_LIMITS.steps} steps.`);
126
+ else {
127
+ stepIds = ids(report.steps, "Step");
128
+ report.steps.forEach((raw, index) => {
129
+ const step = obj(raw);
130
+ const where = `Step ${index + 1}`;
131
+ if (!step)
132
+ return void problems.push(`${where} must say what you did and its result.`);
133
+ text(where, step.what, "say what you did");
134
+ if (!STEP_RESULTS.includes(step.result))
135
+ problems.push(`${where}: the result must be passed, failed, blocked, not_tested or excluded.`);
136
+ /* What was looked for and what was seen, wherever the step was actually done. */
137
+ const done = step.result !== "not_tested" && step.result !== "excluded";
138
+ text(where, step.expected, "say what you expected", REPORT_LIMITS.text, done);
139
+ text(where, step.observed, "say what you observed", REPORT_LIMITS.text, done);
140
+ text(where, step.notes, "notes are optional text", REPORT_LIMITS.text, false);
141
+ evidence(where, step.evidence);
142
+ });
143
+ }
144
+ let findingIds = new Set();
145
+ if (!Array.isArray(report.findings))
146
+ problems.push("Add findings: a list, empty when you found nothing.");
147
+ else if (report.findings.length > REPORT_LIMITS.findings)
148
+ problems.push(`Keep it to ${REPORT_LIMITS.findings} findings.`);
149
+ else {
150
+ findingIds = ids(report.findings, "Finding");
151
+ report.findings.forEach((raw, index) => {
152
+ const finding = obj(raw);
153
+ const where = `Finding ${index + 1}`;
154
+ if (!finding)
155
+ return void problems.push(`${where} must have a title and a severity.`);
156
+ text(where, finding.title, "give it a short title", REPORT_LIMITS.short);
157
+ links(where, finding.steps, stepIds, "steps");
158
+ text(where, finding.observed, "say what you observed");
159
+ text(where, finding.expected, "say what you expected");
160
+ text(where, finding.impact, "say what it does to the person using it");
161
+ if (!SEVERITIES.includes(finding.severity))
162
+ problems.push(`${where}: the severity must be blocker, major or minor.`);
163
+ text(where, finding.severity_why, "say why it is that severe");
164
+ text(where, finding.how_to_reproduce, "how to reproduce is optional text", REPORT_LIMITS.text, false);
165
+ text(where, finding.cannot_reproduce, "what is missing to reproduce it is optional text", REPORT_LIMITS.text, false);
166
+ text(where, finding.uncertainty, "how sure you are is optional text", REPORT_LIMITS.text, false);
167
+ text(where, finding.advice, "advice is optional text", REPORT_LIMITS.text, false);
168
+ if (finding.severity === "major" && finding.how_to_reproduce === undefined)
169
+ problems.push(`${where} is major: say how to reproduce it.`);
170
+ if (finding.severity === "blocker" && finding.how_to_reproduce === undefined && finding.cannot_reproduce === undefined)
171
+ problems.push(`${where} is a blocker: say how to reproduce it, or under cannot_reproduce what is missing to reproduce it.`);
172
+ if (finding.cannot_reproduce !== undefined && finding.severity !== "blocker")
173
+ problems.push(`${where}: only a blocker may say it cannot be reproduced; say how to reproduce it.`);
174
+ if (review && finding.severity === "minor" && finding.how_to_reproduce === undefined)
175
+ problems.push(`${where}: say how to reproduce it.`);
176
+ if (review && (!Array.isArray(finding.evidence) || finding.evidence.length === 0))
177
+ problems.push(`${where}: attach its evidence (a screenshot, recording or trace) and name the file under evidence.`);
178
+ evidence(where, finding.evidence);
179
+ });
180
+ }
181
+ /* No evidence anywhere is the one shape a review is refused for outright (bridge.ts), so it is said before it is filed. */
182
+ const cited = [report.steps, report.findings].some((entries) => Array.isArray(entries) && entries.some((one) => Array.isArray(obj(one)?.evidence) && obj(one).evidence.length > 0));
183
+ if (review && !cited)
184
+ problems.push("Attach your evidence: at least one screenshot, recording or trace, named under a step's or a finding's evidence.");
185
+ if (!Array.isArray(report.recommendations))
186
+ problems.push("Add recommendations: a list, empty when there are none.");
187
+ else if (report.recommendations.length > REPORT_LIMITS.lines)
188
+ problems.push(`Keep it to ${REPORT_LIMITS.lines} recommendations.`);
189
+ else
190
+ report.recommendations.forEach((raw, index) => {
191
+ const recommendation = obj(raw);
192
+ const where = `Recommendation ${index + 1}`;
193
+ if (!recommendation)
194
+ return void problems.push(`${where} must say what to do, its priority and when it is done.`);
195
+ text(where, recommendation.text, "say what to do");
196
+ if (!PRIORITIES.includes(recommendation.priority))
197
+ problems.push(`${where}: the priority must be high, medium or low.`);
198
+ links(where, recommendation.findings, findingIds, "findings");
199
+ text(where, recommendation.target, "who should act is optional text", REPORT_LIMITS.short, false);
200
+ text(where, recommendation.done_when, "say what you would see once it is done");
201
+ text(where, recommendation.advice, "advice is optional text", REPORT_LIMITS.text, false);
202
+ });
203
+ if (review && Array.isArray(report.limitations) && report.limitations.length === 0)
204
+ problems.push("Add limitations: what you could not test, or why the result may not hold.");
205
+ else if (!Array.isArray(report.limitations))
206
+ problems.push("Add limitations: a list of short lines, empty when there are none.");
207
+ else if (report.limitations.length > REPORT_LIMITS.lines || report.limitations.some((one) => !isText(one, REPORT_LIMITS.text)))
208
+ problems.push(`Limitations: at most ${REPORT_LIMITS.lines} lines of text.`);
209
+ const sections = report.sections === undefined ? {} : obj(report.sections);
210
+ if (!sections)
211
+ problems.push("Sections: an object of heading → text.");
212
+ else {
213
+ const entries = Object.entries(sections);
214
+ if (entries.length > REPORT_LIMITS.sections)
215
+ problems.push(`Keep it to ${REPORT_LIMITS.sections} extra sections.`);
216
+ for (const [heading, value] of entries) {
217
+ if (!heading.trim() || heading.length > REPORT_LIMITS.heading)
218
+ problems.push(`Section "${heading.slice(0, 40)}": a heading is 1..${REPORT_LIMITS.heading} characters.`);
219
+ if (!isText(value, REPORT_LIMITS.longText))
220
+ problems.push(`Section "${heading.slice(0, 40)}": write it out, up to ${REPORT_LIMITS.longText} characters.`);
221
+ }
222
+ for (const wanted of requirement?.sections ?? [])
223
+ if (!isText(sections[wanted], REPORT_LIMITS.longText))
224
+ problems.push(`This ask requires the section "${wanted}". Add it under sections.`);
225
+ }
226
+ return problems;
227
+ }
228
+ /**
229
+ * The report as the answer's words (`deliverable`): its JSON in one fixed order, the kind first and the extra sections
230
+ * last, so the ask's shape check can tell a section heading from any other key (bridge.ts).
231
+ */
232
+ export const reportText = (report) => JSON.stringify({
233
+ kind: REPORT_KIND,
234
+ summary: report.summary,
235
+ steps: report.steps,
236
+ findings: report.findings,
237
+ recommendations: report.recommendations,
238
+ limitations: report.limitations,
239
+ ...(report.sections ? { sections: report.sections } : {})
240
+ });
241
+ /** Plain JSON keys, in the order a reader takes them: the bridge's shape gate looks for each. */
242
+ export const REPORT_KEYS = ["summary", "steps", "findings", "recommendations", "limitations"];
243
+ /**
244
+ * Where a report's files may be shown from: IXO's own content-addressed stores only (the gateway's `/ipfs/<cid>`, the
245
+ * Vault's `/public/cid/<cid>`). A claim can be filed by anyone, and a file at any other URL would let the answerer
246
+ * swap it after the approval, or learn who opened it.
247
+ */
248
+ const STORED = /^https:\/\/(ipfs\.gateway\.ixo\.world\/ipfs|(?:devnet\.|testnet\.)?vfs\.ixo\.earth\/public\/cid)\/b[a-z2-7]{20,}$/;
249
+ /** Whether an answer's file may be shown from this URL (see `STORED`): every answer reader asks the same question. */
250
+ export const isStoredFile = (url) => typeof url === "string" && STORED.test(url);
251
+ /** The words a reader sees for a result. */
252
+ const SAID = { not_tested: "not tested", excluded: "left out on purpose" };
253
+ export const said = (value) => SAID[String(value)] ?? String(value ?? "");
254
+ const line = (label, value) => (value === undefined || value === null || value === "" ? "" : `\n${label}: ${String(value)}`);
255
+ const named = (label, value) => (value.length ? `\n${label}: ${value.join(", ")}` : "");
256
+ const each = (list, draw) => (list.length ? list.map(draw).join("\n\n") : "None");
257
+ /** A text field, or nothing. */
258
+ const str = (value) => (typeof value === "string" && value.trim() ? value : undefined);
259
+ /** A list of short strings (ids, lines); anything else in it is dropped. */
260
+ const strs = (value) => (Array.isArray(value) ? value.filter((one) => typeof one === "string" && one.trim().length > 0) : []);
261
+ /** Present keys only, so an optional field that is absent stays absent. */
262
+ const some = (value) => Object.fromEntries(Object.entries(value).filter(([, one]) => one !== undefined));
263
+ const list = (value) => (Array.isArray(value) ? value.map((one) => obj(one) ?? {}) : []);
264
+ /**
265
+ * The display parser: an answer envelope (or a bare report) → its report and its files, or null when it carries none.
266
+ * Tolerant: a reader shows what is there, the validator is where shape is enforced.
267
+ */
268
+ export function readReport(envelope) {
269
+ const doc = obj(envelope);
270
+ const report = obj(doc?.report) ?? (doc?.kind === REPORT_KIND ? doc : null);
271
+ if (!report)
272
+ return null;
273
+ const summary = obj(report.summary) ?? {};
274
+ const read = {
275
+ summary: some({ product: str(summary.product) ?? "", build: str(summary.build), date: str(summary.date) ?? "", environment: str(summary.environment), target: str(summary.target), scope: str(summary.scope) ?? "", outcome: str(summary.outcome) ?? "" }),
276
+ steps: list(report.steps).map((step, index) => some({ id: str(step.id) ?? `step-${index + 1}`, what: str(step.what) ?? "", expected: str(step.expected), observed: str(step.observed), result: str(step.result) ?? "", notes: str(step.notes), evidence: strs(step.evidence) })),
277
+ findings: list(report.findings).map((finding, index) => some({
278
+ id: str(finding.id) ?? `finding-${index + 1}`,
279
+ title: str(finding.title) ?? "",
280
+ steps: strs(finding.steps),
281
+ observed: str(finding.observed),
282
+ expected: str(finding.expected),
283
+ impact: str(finding.impact),
284
+ severity: str(finding.severity) ?? "",
285
+ severity_why: str(finding.severity_why),
286
+ how_to_reproduce: str(finding.how_to_reproduce),
287
+ cannot_reproduce: str(finding.cannot_reproduce),
288
+ uncertainty: str(finding.uncertainty),
289
+ advice: str(finding.advice),
290
+ evidence: strs(finding.evidence)
291
+ })),
292
+ recommendations: list(report.recommendations).map((one) => some({ text: str(one.text) ?? "", priority: str(one.priority) ?? "", findings: strs(one.findings), target: str(one.target), done_when: str(one.done_when), advice: str(one.advice) })),
293
+ limitations: strs(report.limitations),
294
+ sections: Object.entries(obj(report.sections) ?? {}).map(([title, value]) => ({ title, text: String(value) }))
295
+ };
296
+ const files = (Array.isArray(doc?.files) ? doc.files : [])
297
+ .map(obj)
298
+ .filter((one) => one !== null && typeof one.id === "string" && typeof one.url === "string" && STORED.test(one.url))
299
+ .slice(0, 24)
300
+ .map((one) => ({ id: String(one.id), url: String(one.url), sha256: String(one.sha256 ?? ""), mediaType: String(one.mediaType ?? "application/octet-stream"), name: String(one.name ?? one.id) }));
301
+ return { doc: read, files };
302
+ }
303
+ /** The report as headed text, in reading order: for the places that only print text (a share card, an old reader). */
304
+ export function reportSections(report) {
305
+ const { summary } = report;
306
+ return [
307
+ {
308
+ title: "Summary",
309
+ text: `What was checked: ${summary.product}${line("Build", summary.build)}${line("Date", summary.date)}${line("Where", summary.environment)}${line("For", summary.target)}${line("Scope", summary.scope)}${line("Outcome", summary.outcome)}`
310
+ },
311
+ {
312
+ title: "Steps",
313
+ text: each(report.steps, (step, index) => `${index + 1}. ${step.what} — ${said(step.result)}${line("Expected", step.expected)}${line("Seen", step.observed)}${line("Notes", step.notes)}${named("Evidence", step.evidence)}`)
314
+ },
315
+ {
316
+ title: "Findings",
317
+ text: each(report.findings, (finding, index) => `${index + 1}. [${said(finding.severity)}] ${finding.title}${line("Why that severe", finding.severity_why)}${named("From steps", finding.steps)}${line("Expected", finding.expected)}${line("Seen", finding.observed)}${line("Impact", finding.impact)}${line("How to reproduce", finding.how_to_reproduce)}${line("Can't reproduce because", finding.cannot_reproduce)}${line("How sure", finding.uncertainty)}${line("Advice", finding.advice)}${named("Evidence", finding.evidence)}`)
318
+ },
319
+ {
320
+ title: "Recommendations",
321
+ text: each(report.recommendations, (one, index) => `${index + 1}. [${said(one.priority)}] ${one.text}${named("For findings", one.findings)}${line("Who", one.target)}${line("Done when", one.done_when)}${line("Advice", one.advice)}`)
322
+ },
323
+ { title: "Limitations", text: report.limitations.length ? report.limitations.map((one) => `• ${one}`).join("\n") : "None" },
324
+ ...report.sections
325
+ ];
326
+ }
327
+ /** The Openhands envelope's own fields: everything else at the root of an expert answer is a form answer. */
328
+ const ENVELOPE_KEYS = new Set(["v", "collectionId", "ts", "submitter", "delegate", "alias", "via", "deliverable"]);
329
+ /**
330
+ * An answer to an expert ask (`checkEnvelope` in data/checkers.ts), read back into labelled answers: each answer's label is recovered from
331
+ * the `deliverable` lines `checkEnvelope` wrote ("Label: value", in the answers' order), so it needs no form. Null when
332
+ * the envelope is not one (its lines and its answers do not line up). File answers keep only files on IXO's own stores.
333
+ */
334
+ export function formAnswersOf(envelope) {
335
+ if (!envelope || typeof envelope !== "object" || Array.isArray(envelope))
336
+ return null;
337
+ const doc = envelope;
338
+ const deliverable = typeof doc.deliverable === "string" ? doc.deliverable : null;
339
+ const keys = Object.keys(doc).filter((key) => !ENVELOPE_KEYS.has(key));
340
+ if (!deliverable || !keys.length || keys.length > 50)
341
+ return null;
342
+ const out = [];
343
+ let at = 0;
344
+ for (const key of keys) {
345
+ const value = doc[key];
346
+ const isFiles = Array.isArray(value) && value.every((one) => one && typeof one === "object" && typeof one.name === "string");
347
+ const said = isFiles ? value.map((one) => one.name).join(", ") : typeof value === "boolean" ? (value ? "yes" : "no") : typeof value === "string" || typeof value === "number" ? String(value) : null;
348
+ if (said === null)
349
+ return null;
350
+ /* "Label: said", then a line break or the end. */
351
+ let found = deliverable.indexOf(`: ${said}`, at);
352
+ while (found !== -1 && !(found + 2 + said.length === deliverable.length || deliverable[found + 2 + said.length] === "\n"))
353
+ found = deliverable.indexOf(`: ${said}`, found + 1);
354
+ if (found === -1)
355
+ return null;
356
+ const label = deliverable.slice(at, found).trim();
357
+ if (!label || label.includes("\n"))
358
+ return null;
359
+ at = found + 2 + said.length + 1;
360
+ if (isFiles) {
361
+ const files = value
362
+ .filter((one) => isStoredFile(one.content))
363
+ .map((one) => ({ name: one.name.replace(/\s+/g, " ").trim().slice(0, 80) || "file", mediaType: typeof one.type === "string" ? one.type.slice(0, 80) : "application/octet-stream", url: one.content }));
364
+ out.push({ label, files });
365
+ }
366
+ else
367
+ out.push({ label, value: said });
368
+ }
369
+ return at >= deliverable.length ? out : null;
370
+ }
371
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/rubric/report.ts"],"names":[],"mappings":"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"}