@pome-sh/cli 0.1.0 → 0.2.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 (738) hide show
  1. package/README.md +5 -6
  2. package/dist/build-info.json +3 -3
  3. package/dist/src/cli/eval.js +26 -8
  4. package/dist/src/cli/init-sdk.d.ts +0 -3
  5. package/dist/src/cli/init-sdk.js +117 -24
  6. package/dist/src/cli/main.js +23 -69
  7. package/dist/src/cli/register.d.ts +9 -0
  8. package/dist/src/cli/register.js +51 -5
  9. package/dist/src/cli/session.d.ts +7 -1
  10. package/dist/src/cli/session.js +87 -27
  11. package/dist/src/demo/runDemo.js +3 -2
  12. package/dist/src/doctor/checks.js +2 -2
  13. package/dist/src/hosted/client.d.ts +41 -5
  14. package/dist/src/hosted/client.js +333 -19
  15. package/dist/src/hosted/errors.d.ts +11 -1
  16. package/dist/src/hosted/errors.js +8 -1
  17. package/dist/src/hosted/evalResultView.d.ts +2 -0
  18. package/dist/src/hosted/evalResultView.js +22 -0
  19. package/dist/src/hosted/uploadAndFinalize.d.ts +18 -1
  20. package/dist/src/hosted/uploadAndFinalize.js +51 -3
  21. package/dist/src/recorder/inspect.js +20 -2
  22. package/dist/src/runner/mergeAdapterSignals.js +2 -2
  23. package/dist/src/runner/ports.js +3 -0
  24. package/dist/src/runner/runScenario.d.ts +79 -2
  25. package/dist/src/runner/runScenario.js +94 -36
  26. package/dist/src/runner/runScenarioHosted.d.ts +37 -0
  27. package/dist/src/runner/runScenarioHosted.js +257 -58
  28. package/dist/src/runner/runTrialGroup.d.ts +1 -3
  29. package/dist/src/runner/runTrialGroup.js +1 -3
  30. package/dist/src/scenario/parseScenario.d.ts +5 -0
  31. package/dist/src/scenario/parseScenario.js +135 -8
  32. package/dist/src/scenario/scenarioSchema.d.ts +200 -3
  33. package/dist/src/scenario/scenarioSchema.js +12 -1
  34. package/dist/src/twin/twinHarness.d.ts +10 -0
  35. package/dist/src/twin/twinHarness.js +6 -2
  36. package/dist/src/twin/twinStart.d.ts +19 -0
  37. package/dist/src/twin/twinStart.js +156 -0
  38. package/node_modules/@pome-sh/sdk/dist/db.d.ts +4 -4
  39. package/node_modules/@pome-sh/sdk/dist/db.js +93 -25
  40. package/node_modules/@pome-sh/sdk/dist/db.js.map +1 -1
  41. package/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
  42. package/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
  43. package/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
  44. package/node_modules/@pome-sh/sdk/dist/parity.d.ts +55 -0
  45. package/node_modules/@pome-sh/sdk/dist/parity.js +112 -0
  46. package/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
  47. package/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +15 -0
  48. package/node_modules/@pome-sh/sdk/dist/server-helpers.js +96 -0
  49. package/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -1
  50. package/node_modules/@pome-sh/sdk/dist/server.d.ts +1 -1
  51. package/node_modules/@pome-sh/sdk/dist/server.js +9 -7
  52. package/node_modules/@pome-sh/sdk/dist/server.js.map +1 -1
  53. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/errors.d.ts +39 -0
  54. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/errors.js +33 -0
  55. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/errors.js.map +1 -0
  56. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/evaluator-hooks.d.ts +13 -0
  57. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/evaluator-hooks.js +6 -0
  58. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/evaluator-hooks.js.map +1 -0
  59. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +215 -0
  60. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +83 -0
  61. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +1 -0
  62. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +175 -0
  63. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/github-access-control.js +182 -0
  64. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +1 -0
  65. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/identity.d.ts +90 -0
  66. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/identity.js +72 -0
  67. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/identity.js.map +1 -0
  68. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/index.d.ts +27 -0
  69. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/index.js +34 -0
  70. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -0
  71. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +286 -0
  72. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +33 -0
  73. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +1 -0
  74. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +65 -0
  75. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +455 -0
  76. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +1 -0
  77. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +39 -0
  78. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +47 -0
  79. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +1 -0
  80. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +25 -0
  81. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/index.js +27 -0
  82. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +1 -0
  83. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +100 -0
  84. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +185 -0
  85. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -0
  86. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +64 -0
  87. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +112 -0
  88. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +1 -0
  89. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +26 -0
  90. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/nano.js +61 -0
  91. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +1 -0
  92. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +42 -0
  93. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/project.js +96 -0
  94. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +1 -0
  95. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +51 -0
  96. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +74 -0
  97. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +1 -0
  98. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +134 -0
  99. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +152 -0
  100. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +1 -0
  101. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +418 -0
  102. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/recorder-events.js +234 -0
  103. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -0
  104. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +2 -0
  105. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/redaction.js +152 -0
  106. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/redaction.js.map +1 -0
  107. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/rest.d.ts +198 -0
  108. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/rest.js +225 -0
  109. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -0
  110. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/run.d.ts +201 -0
  111. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/run.js +166 -0
  112. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/run.js.map +1 -0
  113. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +446 -0
  114. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/seed-state.js +167 -0
  115. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +1 -0
  116. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +53 -0
  117. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/sessions.js +51 -0
  118. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/sessions.js.map +1 -0
  119. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +66 -0
  120. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task-vocab.js +84 -0
  121. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +1 -0
  122. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task.d.ts +483 -0
  123. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task.js +60 -0
  124. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task.js.map +1 -0
  125. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/package.json +54 -0
  126. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/trace-contract.json +41 -0
  127. package/node_modules/@pome-sh/sdk/package.json +7 -7
  128. package/node_modules/@pome-sh/shared-types/dist/errors.d.ts +39 -0
  129. package/node_modules/@pome-sh/shared-types/dist/errors.js +33 -0
  130. package/node_modules/@pome-sh/shared-types/dist/errors.js.map +1 -0
  131. package/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +252 -0
  132. package/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +122 -0
  133. package/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +1 -0
  134. package/node_modules/@pome-sh/shared-types/dist/identity.d.ts +90 -0
  135. package/node_modules/@pome-sh/shared-types/dist/identity.js +72 -0
  136. package/node_modules/@pome-sh/shared-types/dist/identity.js.map +1 -0
  137. package/node_modules/@pome-sh/shared-types/dist/index.d.ts +13 -1353
  138. package/node_modules/@pome-sh/shared-types/dist/index.js +14 -568
  139. package/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  140. package/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +45 -0
  141. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +8 -0
  142. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -1
  143. package/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +7 -0
  144. package/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +1 -1
  145. package/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +62 -0
  146. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js +36 -0
  147. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -1
  148. package/node_modules/@pome-sh/shared-types/dist/rest.d.ts +245 -0
  149. package/node_modules/@pome-sh/shared-types/dist/rest.js +303 -0
  150. package/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -0
  151. package/node_modules/@pome-sh/shared-types/dist/run.d.ts +7 -0
  152. package/node_modules/@pome-sh/shared-types/dist/run.js +4 -0
  153. package/node_modules/@pome-sh/shared-types/dist/run.js.map +1 -1
  154. package/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +14 -0
  155. package/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +46 -0
  156. package/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +1 -0
  157. package/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +446 -0
  158. package/node_modules/@pome-sh/shared-types/dist/seed-state.js +167 -0
  159. package/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +1 -0
  160. package/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +53 -0
  161. package/node_modules/@pome-sh/shared-types/dist/sessions.js +51 -0
  162. package/node_modules/@pome-sh/shared-types/dist/sessions.js.map +1 -0
  163. package/node_modules/@pome-sh/shared-types/dist/task.d.ts +485 -0
  164. package/node_modules/@pome-sh/shared-types/dist/task.js +60 -0
  165. package/node_modules/@pome-sh/shared-types/dist/task.js.map +1 -0
  166. package/node_modules/@pome-sh/shared-types/package.json +2 -1
  167. package/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  168. package/node_modules/@pome-sh/twin-github/FIDELITY.md +127 -67
  169. package/node_modules/@pome-sh/twin-github/README.md +5 -8
  170. package/node_modules/@pome-sh/twin-github/dist/examples/claude-github-agent.js +4 -20
  171. package/node_modules/@pome-sh/twin-github/dist/examples/claude-github-agent.js.map +1 -1
  172. package/node_modules/@pome-sh/twin-github/dist/src/access-control.d.ts +3 -3
  173. package/node_modules/@pome-sh/twin-github/dist/src/domain.d.ts +141 -3
  174. package/node_modules/@pome-sh/twin-github/dist/src/domain.js +0 -0
  175. package/node_modules/@pome-sh/twin-github/dist/src/domain.js.map +1 -1
  176. package/node_modules/@pome-sh/twin-github/dist/src/routes.js +2 -0
  177. package/node_modules/@pome-sh/twin-github/dist/src/routes.js.map +1 -1
  178. package/node_modules/@pome-sh/twin-github/dist/src/seed.d.ts +1 -1
  179. package/node_modules/@pome-sh/twin-github/dist/src/serializers.d.ts +2 -2
  180. package/node_modules/@pome-sh/twin-github/dist/src/server.js +7 -6
  181. package/node_modules/@pome-sh/twin-github/dist/src/server.js.map +1 -1
  182. package/node_modules/@pome-sh/twin-github/dist/src/tools.d.ts +168 -18
  183. package/node_modules/@pome-sh/twin-github/dist/src/tools.js +23 -0
  184. package/node_modules/@pome-sh/twin-github/dist/src/tools.js.map +1 -1
  185. package/node_modules/@pome-sh/twin-github/fidelity.inventory.json +773 -0
  186. package/node_modules/@pome-sh/twin-github/package.json +5 -5
  187. package/node_modules/@pome-sh/twin-slack/FIDELITY.md +121 -35
  188. package/node_modules/@pome-sh/twin-slack/README.md +2 -6
  189. package/node_modules/@pome-sh/twin-slack/dist/scripts/fidelity-parity.js +92 -0
  190. package/node_modules/@pome-sh/twin-slack/dist/scripts/fidelity-parity.js.map +1 -0
  191. package/node_modules/@pome-sh/twin-slack/dist/scripts/smoke.js +3 -3
  192. package/node_modules/@pome-sh/twin-slack/dist/scripts/smoke.js.map +1 -1
  193. package/node_modules/@pome-sh/twin-slack/dist/scripts/validate-mcp.js +1 -1
  194. package/node_modules/@pome-sh/twin-slack/dist/scripts/validate-mcp.js.map +1 -1
  195. package/node_modules/@pome-sh/twin-slack/dist/src/server.js +7 -6
  196. package/node_modules/@pome-sh/twin-slack/dist/src/server.js.map +1 -1
  197. package/node_modules/@pome-sh/twin-slack/dist/src/tools.d.ts +30 -4
  198. package/node_modules/@pome-sh/twin-slack/dist/src/tools.js +48 -1
  199. package/node_modules/@pome-sh/twin-slack/dist/src/tools.js.map +1 -1
  200. package/node_modules/@pome-sh/twin-slack/fidelity.inventory.json +377 -0
  201. package/node_modules/@pome-sh/twin-slack/package.json +5 -5
  202. package/node_modules/@pome-sh/twin-stripe/FIDELITY.md +151 -50
  203. package/node_modules/@pome-sh/twin-stripe/README.md +44 -47
  204. package/node_modules/@pome-sh/twin-stripe/dist/scripts/fidelity-parity.js +186 -0
  205. package/node_modules/@pome-sh/twin-stripe/dist/scripts/fidelity-parity.js.map +1 -0
  206. package/node_modules/@pome-sh/twin-stripe/dist/scripts/smoke.js +8 -4
  207. package/node_modules/@pome-sh/twin-stripe/dist/scripts/smoke.js.map +1 -1
  208. package/node_modules/@pome-sh/twin-stripe/dist/src/db.js +26 -2
  209. package/node_modules/@pome-sh/twin-stripe/dist/src/db.js.map +1 -1
  210. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/billing.d.ts +101 -0
  211. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/billing.js +195 -0
  212. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/billing.js.map +1 -0
  213. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/charges.d.ts +15 -1
  214. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/charges.js +17 -5
  215. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/charges.js.map +1 -1
  216. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/customers.d.ts +47 -0
  217. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/customers.js +103 -0
  218. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/customers.js.map +1 -0
  219. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/events.d.ts +1 -1
  220. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/events.js.map +1 -1
  221. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/index.d.ts +6 -0
  222. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/index.js +3 -0
  223. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/index.js.map +1 -1
  224. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-intents.d.ts +61 -2
  225. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-intents.js +214 -52
  226. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-intents.js.map +1 -1
  227. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-methods.d.ts +45 -0
  228. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-methods.js +159 -0
  229. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-methods.js.map +1 -0
  230. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/refunds.d.ts +6 -0
  231. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/refunds.js +16 -0
  232. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/refunds.js.map +1 -1
  233. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/schema.d.ts +1 -0
  234. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/schema.js +144 -1
  235. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/schema.js.map +1 -1
  236. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/stripe-domain.d.ts +420 -43
  237. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/stripe-domain.js +442 -13
  238. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/stripe-domain.js.map +1 -1
  239. package/node_modules/@pome-sh/twin-stripe/dist/src/errors.d.ts +19 -0
  240. package/node_modules/@pome-sh/twin-stripe/dist/src/errors.js +15 -1
  241. package/node_modules/@pome-sh/twin-stripe/dist/src/errors.js.map +1 -1
  242. package/node_modules/@pome-sh/twin-stripe/dist/src/ids.d.ts +2 -0
  243. package/node_modules/@pome-sh/twin-stripe/dist/src/ids.js +2 -0
  244. package/node_modules/@pome-sh/twin-stripe/dist/src/ids.js.map +1 -1
  245. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.d.ts +8 -0
  246. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.js +105 -1
  247. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.js.map +1 -1
  248. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/billing.d.ts +4 -0
  249. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/billing.js +117 -0
  250. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/billing.js.map +1 -0
  251. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/customers.d.ts +4 -0
  252. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/customers.js +47 -0
  253. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/customers.js.map +1 -0
  254. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/index.js +6 -0
  255. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/index.js.map +1 -1
  256. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-intents.js +28 -102
  257. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-intents.js.map +1 -1
  258. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-methods.d.ts +4 -0
  259. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-methods.js +33 -0
  260. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-methods.js.map +1 -0
  261. package/node_modules/@pome-sh/twin-stripe/dist/src/seed.d.ts +10 -8
  262. package/node_modules/@pome-sh/twin-stripe/dist/src/seed.js +3 -2
  263. package/node_modules/@pome-sh/twin-stripe/dist/src/seed.js.map +1 -1
  264. package/node_modules/@pome-sh/twin-stripe/dist/src/serializers.d.ts +181 -21
  265. package/node_modules/@pome-sh/twin-stripe/dist/src/serializers.js +257 -34
  266. package/node_modules/@pome-sh/twin-stripe/dist/src/serializers.js.map +1 -1
  267. package/node_modules/@pome-sh/twin-stripe/dist/src/server.js +7 -6
  268. package/node_modules/@pome-sh/twin-stripe/dist/src/server.js.map +1 -1
  269. package/node_modules/@pome-sh/twin-stripe/dist/src/tools.d.ts +107 -5
  270. package/node_modules/@pome-sh/twin-stripe/dist/src/tools.js +139 -6
  271. package/node_modules/@pome-sh/twin-stripe/dist/src/tools.js.map +1 -1
  272. package/node_modules/@pome-sh/twin-stripe/dist/src/types.d.ts +73 -0
  273. package/node_modules/@pome-sh/twin-stripe/dist/src/upstream-types.d.ts +8 -0
  274. package/node_modules/@pome-sh/twin-stripe/dist/src/x402.js +6 -1
  275. package/node_modules/@pome-sh/twin-stripe/dist/src/x402.js.map +1 -1
  276. package/node_modules/@pome-sh/twin-stripe/fidelity.inventory.json +425 -0
  277. package/node_modules/@pome-sh/twin-stripe/package.json +5 -5
  278. package/package.json +9 -10
  279. package/skills/pome-setup/SKILL.md +1 -1
  280. package/dist/src/recorder/verdictArtifact.d.ts +0 -71
  281. package/dist/src/recorder/verdictArtifact.js +0 -207
  282. package/dist/src/score/view.d.ts +0 -38
  283. package/dist/src/score/view.js +0 -59
  284. package/dist/src/twin/github/app.d.ts +0 -10
  285. package/dist/src/twin/github/app.js +0 -316
  286. package/dist/src/twin/github/db/migrations.d.ts +0 -2
  287. package/dist/src/twin/github/db/migrations.js +0 -64
  288. package/dist/src/twin/github/db/openDatabase.d.ts +0 -2
  289. package/dist/src/twin/github/db/openDatabase.js +0 -13
  290. package/dist/src/twin/github/db/queries.d.ts +0 -77
  291. package/dist/src/twin/github/db/queries.js +0 -93
  292. package/dist/src/twin/github/domain/seed.d.ts +0 -74
  293. package/dist/src/twin/github/domain/seed.js +0 -104
  294. package/dist/src/twin/github/domain/serializers.d.ts +0 -113
  295. package/dist/src/twin/github/domain/serializers.js +0 -76
  296. package/dist/src/twin/github/types.d.ts +0 -66
  297. package/dist/src/twin/github/types.js +0 -1
  298. package/dist/src/twin-github/app.d.ts +0 -9
  299. package/dist/src/twin-github/app.js +0 -327
  300. package/dist/src/twin-github/auth.d.ts +0 -16
  301. package/dist/src/twin-github/auth.js +0 -142
  302. package/dist/src/twin-github/build-info.d.ts +0 -7
  303. package/dist/src/twin-github/build-info.js +0 -52
  304. package/dist/src/twin-github/db.d.ts +0 -4
  305. package/dist/src/twin-github/db.js +0 -362
  306. package/dist/src/twin-github/domain.d.ts +0 -1649
  307. package/dist/src/twin-github/domain.js +0 -957
  308. package/dist/src/twin-github/errors.d.ts +0 -14
  309. package/dist/src/twin-github/errors.js +0 -34
  310. package/dist/src/twin-github/index.d.ts +0 -9
  311. package/dist/src/twin-github/index.js +0 -7
  312. package/dist/src/twin-github/mcp.d.ts +0 -17
  313. package/dist/src/twin-github/mcp.js +0 -281
  314. package/dist/src/twin-github/recorder.d.ts +0 -2
  315. package/dist/src/twin-github/recorder.js +0 -29
  316. package/dist/src/twin-github/seed.d.ts +0 -74
  317. package/dist/src/twin-github/seed.js +0 -107
  318. package/dist/src/twin-github/serializers.d.ts +0 -449
  319. package/dist/src/twin-github/serializers.js +0 -429
  320. package/dist/src/twin-github/server.js +0 -34
  321. package/dist/src/twin-github/tools.d.ts +0 -1545
  322. package/dist/src/twin-github/tools.js +0 -347
  323. package/dist/src/twin-github/types.d.ts +0 -198
  324. package/dist/src/twin-github/unsupported-envelope.d.ts +0 -10
  325. package/dist/src/twin-github/unsupported-envelope.js +0 -29
  326. package/dist/src/twin-github/util.d.ts +0 -13
  327. package/dist/src/twin-github/util.js +0 -61
  328. package/dist/src/twin-slack/app.d.ts +0 -17
  329. package/dist/src/twin-slack/app.js +0 -683
  330. package/dist/src/twin-slack/auth.d.ts +0 -38
  331. package/dist/src/twin-slack/auth.js +0 -219
  332. package/dist/src/twin-slack/build-info.d.ts +0 -7
  333. package/dist/src/twin-slack/build-info.js +0 -9
  334. package/dist/src/twin-slack/db.d.ts +0 -4
  335. package/dist/src/twin-slack/db.js +0 -213
  336. package/dist/src/twin-slack/domain.d.ts +0 -236
  337. package/dist/src/twin-slack/domain.js +0 -1293
  338. package/dist/src/twin-slack/errors.d.ts +0 -16
  339. package/dist/src/twin-slack/errors.js +0 -60
  340. package/dist/src/twin-slack/index.d.ts +0 -8
  341. package/dist/src/twin-slack/index.js +0 -8
  342. package/dist/src/twin-slack/mcp.d.ts +0 -17
  343. package/dist/src/twin-slack/mcp.js +0 -226
  344. package/dist/src/twin-slack/recorder.d.ts +0 -2
  345. package/dist/src/twin-slack/recorder.js +0 -15
  346. package/dist/src/twin-slack/seed.d.ts +0 -49
  347. package/dist/src/twin-slack/seed.js +0 -139
  348. package/dist/src/twin-slack/serializers.d.ts +0 -141
  349. package/dist/src/twin-slack/serializers.js +0 -377
  350. package/dist/src/twin-slack/tools.d.ts +0 -97
  351. package/dist/src/twin-slack/tools.js +0 -171
  352. package/dist/src/twin-slack/types.d.ts +0 -164
  353. package/dist/src/twin-slack/types.js +0 -1
  354. package/dist/src/twin-slack/unsupported-envelope.d.ts +0 -12
  355. package/dist/src/twin-slack/unsupported-envelope.js +0 -61
  356. package/dist/src/twin-slack/upstream-types.d.ts +0 -19
  357. package/dist/src/twin-slack/upstream-types.js +0 -1
  358. package/dist/src/twin-slack/util.d.ts +0 -31
  359. package/dist/src/twin-slack/util.js +0 -136
  360. package/node_modules/base64-js/LICENSE +0 -21
  361. package/node_modules/base64-js/README.md +0 -34
  362. package/node_modules/base64-js/base64js.min.js +0 -1
  363. package/node_modules/base64-js/index.d.ts +0 -3
  364. package/node_modules/base64-js/index.js +0 -150
  365. package/node_modules/base64-js/package.json +0 -47
  366. package/node_modules/better-sqlite3/LICENSE +0 -21
  367. package/node_modules/better-sqlite3/README.md +0 -99
  368. package/node_modules/better-sqlite3/binding.gyp +0 -38
  369. package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  370. package/node_modules/better-sqlite3/deps/common.gypi +0 -68
  371. package/node_modules/better-sqlite3/deps/copy.js +0 -31
  372. package/node_modules/better-sqlite3/deps/defines.gypi +0 -42
  373. package/node_modules/better-sqlite3/deps/download.sh +0 -123
  374. package/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
  375. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -269395
  376. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -14347
  377. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -739
  378. package/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
  379. package/node_modules/better-sqlite3/deps/test_extension.c +0 -21
  380. package/node_modules/better-sqlite3/lib/database.js +0 -90
  381. package/node_modules/better-sqlite3/lib/index.js +0 -3
  382. package/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  383. package/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  384. package/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  385. package/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  386. package/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  387. package/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  388. package/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  389. package/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  390. package/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  391. package/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  392. package/node_modules/better-sqlite3/lib/util.js +0 -12
  393. package/node_modules/better-sqlite3/package.json +0 -59
  394. package/node_modules/better-sqlite3/src/addon.cpp +0 -47
  395. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -74
  396. package/node_modules/better-sqlite3/src/objects/backup.cpp +0 -120
  397. package/node_modules/better-sqlite3/src/objects/backup.hpp +0 -36
  398. package/node_modules/better-sqlite3/src/objects/database.cpp +0 -417
  399. package/node_modules/better-sqlite3/src/objects/database.hpp +0 -103
  400. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +0 -113
  401. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +0 -50
  402. package/node_modules/better-sqlite3/src/objects/statement.cpp +0 -383
  403. package/node_modules/better-sqlite3/src/objects/statement.hpp +0 -58
  404. package/node_modules/better-sqlite3/src/util/bind-map.cpp +0 -73
  405. package/node_modules/better-sqlite3/src/util/binder.cpp +0 -193
  406. package/node_modules/better-sqlite3/src/util/constants.cpp +0 -172
  407. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +0 -121
  408. package/node_modules/better-sqlite3/src/util/custom-function.cpp +0 -59
  409. package/node_modules/better-sqlite3/src/util/custom-table.cpp +0 -409
  410. package/node_modules/better-sqlite3/src/util/data-converter.cpp +0 -17
  411. package/node_modules/better-sqlite3/src/util/data.cpp +0 -194
  412. package/node_modules/better-sqlite3/src/util/helpers.cpp +0 -109
  413. package/node_modules/better-sqlite3/src/util/macros.cpp +0 -90
  414. package/node_modules/better-sqlite3/src/util/query-macros.cpp +0 -71
  415. package/node_modules/better-sqlite3/src/util/row-builder.cpp +0 -49
  416. package/node_modules/bindings/LICENSE.md +0 -22
  417. package/node_modules/bindings/README.md +0 -98
  418. package/node_modules/bindings/bindings.js +0 -221
  419. package/node_modules/bindings/package.json +0 -28
  420. package/node_modules/bl/.travis.yml +0 -17
  421. package/node_modules/bl/BufferList.js +0 -396
  422. package/node_modules/bl/LICENSE.md +0 -13
  423. package/node_modules/bl/README.md +0 -247
  424. package/node_modules/bl/bl.js +0 -84
  425. package/node_modules/bl/package.json +0 -37
  426. package/node_modules/bl/test/convert.js +0 -21
  427. package/node_modules/bl/test/indexOf.js +0 -492
  428. package/node_modules/bl/test/isBufferList.js +0 -32
  429. package/node_modules/bl/test/test.js +0 -869
  430. package/node_modules/buffer/AUTHORS.md +0 -70
  431. package/node_modules/buffer/LICENSE +0 -21
  432. package/node_modules/buffer/README.md +0 -410
  433. package/node_modules/buffer/index.d.ts +0 -186
  434. package/node_modules/buffer/index.js +0 -1817
  435. package/node_modules/buffer/package.json +0 -96
  436. package/node_modules/chownr/LICENSE +0 -15
  437. package/node_modules/chownr/README.md +0 -3
  438. package/node_modules/chownr/chownr.js +0 -167
  439. package/node_modules/chownr/package.json +0 -29
  440. package/node_modules/decompress-response/index.d.ts +0 -22
  441. package/node_modules/decompress-response/index.js +0 -58
  442. package/node_modules/decompress-response/license +0 -9
  443. package/node_modules/decompress-response/package.json +0 -56
  444. package/node_modules/decompress-response/readme.md +0 -48
  445. package/node_modules/deep-extend/CHANGELOG.md +0 -46
  446. package/node_modules/deep-extend/LICENSE +0 -20
  447. package/node_modules/deep-extend/README.md +0 -91
  448. package/node_modules/deep-extend/index.js +0 -1
  449. package/node_modules/deep-extend/lib/deep-extend.js +0 -150
  450. package/node_modules/deep-extend/package.json +0 -62
  451. package/node_modules/detect-libc/LICENSE +0 -201
  452. package/node_modules/detect-libc/README.md +0 -163
  453. package/node_modules/detect-libc/index.d.ts +0 -14
  454. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  455. package/node_modules/detect-libc/lib/elf.js +0 -39
  456. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  457. package/node_modules/detect-libc/lib/process.js +0 -24
  458. package/node_modules/detect-libc/package.json +0 -44
  459. package/node_modules/end-of-stream/LICENSE +0 -21
  460. package/node_modules/end-of-stream/README.md +0 -54
  461. package/node_modules/end-of-stream/index.js +0 -96
  462. package/node_modules/end-of-stream/package.json +0 -37
  463. package/node_modules/expand-template/.travis.yml +0 -6
  464. package/node_modules/expand-template/LICENSE +0 -21
  465. package/node_modules/expand-template/README.md +0 -43
  466. package/node_modules/expand-template/index.js +0 -26
  467. package/node_modules/expand-template/package.json +0 -29
  468. package/node_modules/expand-template/test.js +0 -67
  469. package/node_modules/file-uri-to-path/.npmignore +0 -1
  470. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  471. package/node_modules/file-uri-to-path/History.md +0 -21
  472. package/node_modules/file-uri-to-path/LICENSE +0 -20
  473. package/node_modules/file-uri-to-path/README.md +0 -74
  474. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  475. package/node_modules/file-uri-to-path/index.js +0 -66
  476. package/node_modules/file-uri-to-path/package.json +0 -32
  477. package/node_modules/file-uri-to-path/test/test.js +0 -24
  478. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  479. package/node_modules/fs-constants/LICENSE +0 -21
  480. package/node_modules/fs-constants/README.md +0 -26
  481. package/node_modules/fs-constants/browser.js +0 -1
  482. package/node_modules/fs-constants/index.js +0 -1
  483. package/node_modules/fs-constants/package.json +0 -19
  484. package/node_modules/github-from-package/.travis.yml +0 -4
  485. package/node_modules/github-from-package/LICENSE +0 -18
  486. package/node_modules/github-from-package/example/package.json +0 -8
  487. package/node_modules/github-from-package/example/url.js +0 -3
  488. package/node_modules/github-from-package/index.js +0 -17
  489. package/node_modules/github-from-package/package.json +0 -30
  490. package/node_modules/github-from-package/readme.markdown +0 -53
  491. package/node_modules/github-from-package/test/a.json +0 -8
  492. package/node_modules/github-from-package/test/b.json +0 -5
  493. package/node_modules/github-from-package/test/c.json +0 -5
  494. package/node_modules/github-from-package/test/d.json +0 -7
  495. package/node_modules/github-from-package/test/e.json +0 -5
  496. package/node_modules/github-from-package/test/url.js +0 -19
  497. package/node_modules/ieee754/LICENSE +0 -11
  498. package/node_modules/ieee754/README.md +0 -51
  499. package/node_modules/ieee754/index.d.ts +0 -10
  500. package/node_modules/ieee754/index.js +0 -85
  501. package/node_modules/ieee754/package.json +0 -52
  502. package/node_modules/inherits/LICENSE +0 -16
  503. package/node_modules/inherits/README.md +0 -42
  504. package/node_modules/inherits/inherits.js +0 -9
  505. package/node_modules/inherits/inherits_browser.js +0 -27
  506. package/node_modules/inherits/package.json +0 -29
  507. package/node_modules/ini/LICENSE +0 -15
  508. package/node_modules/ini/README.md +0 -102
  509. package/node_modules/ini/ini.js +0 -206
  510. package/node_modules/ini/package.json +0 -33
  511. package/node_modules/mimic-response/index.d.ts +0 -17
  512. package/node_modules/mimic-response/index.js +0 -77
  513. package/node_modules/mimic-response/license +0 -9
  514. package/node_modules/mimic-response/package.json +0 -42
  515. package/node_modules/mimic-response/readme.md +0 -78
  516. package/node_modules/minimist/.eslintrc +0 -29
  517. package/node_modules/minimist/.github/FUNDING.yml +0 -12
  518. package/node_modules/minimist/.nycrc +0 -14
  519. package/node_modules/minimist/CHANGELOG.md +0 -298
  520. package/node_modules/minimist/LICENSE +0 -18
  521. package/node_modules/minimist/README.md +0 -121
  522. package/node_modules/minimist/example/parse.js +0 -4
  523. package/node_modules/minimist/index.js +0 -263
  524. package/node_modules/minimist/package.json +0 -75
  525. package/node_modules/minimist/test/all_bool.js +0 -34
  526. package/node_modules/minimist/test/bool.js +0 -177
  527. package/node_modules/minimist/test/dash.js +0 -43
  528. package/node_modules/minimist/test/default_bool.js +0 -37
  529. package/node_modules/minimist/test/dotted.js +0 -24
  530. package/node_modules/minimist/test/kv_short.js +0 -32
  531. package/node_modules/minimist/test/long.js +0 -33
  532. package/node_modules/minimist/test/num.js +0 -38
  533. package/node_modules/minimist/test/parse.js +0 -209
  534. package/node_modules/minimist/test/parse_modified.js +0 -11
  535. package/node_modules/minimist/test/proto.js +0 -64
  536. package/node_modules/minimist/test/short.js +0 -69
  537. package/node_modules/minimist/test/stop_early.js +0 -17
  538. package/node_modules/minimist/test/unknown.js +0 -104
  539. package/node_modules/minimist/test/whitespace.js +0 -10
  540. package/node_modules/mkdirp-classic/LICENSE +0 -21
  541. package/node_modules/mkdirp-classic/README.md +0 -18
  542. package/node_modules/mkdirp-classic/index.js +0 -98
  543. package/node_modules/mkdirp-classic/package.json +0 -18
  544. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
  545. package/node_modules/napi-build-utils/LICENSE +0 -21
  546. package/node_modules/napi-build-utils/README.md +0 -52
  547. package/node_modules/napi-build-utils/index.js +0 -214
  548. package/node_modules/napi-build-utils/index.md +0 -0
  549. package/node_modules/napi-build-utils/package.json +0 -42
  550. package/node_modules/node-abi/LICENSE +0 -21
  551. package/node_modules/node-abi/README.md +0 -54
  552. package/node_modules/node-abi/abi_registry.json +0 -453
  553. package/node_modules/node-abi/index.js +0 -179
  554. package/node_modules/node-abi/package.json +0 -45
  555. package/node_modules/once/LICENSE +0 -15
  556. package/node_modules/once/README.md +0 -79
  557. package/node_modules/once/once.js +0 -42
  558. package/node_modules/once/package.json +0 -33
  559. package/node_modules/prebuild-install/CHANGELOG.md +0 -131
  560. package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  561. package/node_modules/prebuild-install/LICENSE +0 -21
  562. package/node_modules/prebuild-install/README.md +0 -163
  563. package/node_modules/prebuild-install/asset.js +0 -44
  564. package/node_modules/prebuild-install/bin.js +0 -78
  565. package/node_modules/prebuild-install/download.js +0 -142
  566. package/node_modules/prebuild-install/error.js +0 -14
  567. package/node_modules/prebuild-install/help.txt +0 -16
  568. package/node_modules/prebuild-install/index.js +0 -1
  569. package/node_modules/prebuild-install/log.js +0 -33
  570. package/node_modules/prebuild-install/package.json +0 -67
  571. package/node_modules/prebuild-install/proxy.js +0 -35
  572. package/node_modules/prebuild-install/rc.js +0 -64
  573. package/node_modules/prebuild-install/util.js +0 -143
  574. package/node_modules/pump/.github/FUNDING.yml +0 -2
  575. package/node_modules/pump/.travis.yml +0 -5
  576. package/node_modules/pump/LICENSE +0 -21
  577. package/node_modules/pump/README.md +0 -74
  578. package/node_modules/pump/SECURITY.md +0 -5
  579. package/node_modules/pump/empty.js +0 -1
  580. package/node_modules/pump/index.js +0 -86
  581. package/node_modules/pump/package.json +0 -30
  582. package/node_modules/pump/test-browser.js +0 -66
  583. package/node_modules/pump/test-node.js +0 -53
  584. package/node_modules/rc/LICENSE.APACHE2 +0 -15
  585. package/node_modules/rc/LICENSE.BSD +0 -26
  586. package/node_modules/rc/LICENSE.MIT +0 -24
  587. package/node_modules/rc/README.md +0 -227
  588. package/node_modules/rc/browser.js +0 -7
  589. package/node_modules/rc/cli.js +0 -4
  590. package/node_modules/rc/index.js +0 -53
  591. package/node_modules/rc/lib/utils.js +0 -104
  592. package/node_modules/rc/package.json +0 -29
  593. package/node_modules/rc/test/ini.js +0 -16
  594. package/node_modules/rc/test/nested-env-vars.js +0 -50
  595. package/node_modules/rc/test/test.js +0 -59
  596. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  597. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  598. package/node_modules/readable-stream/LICENSE +0 -47
  599. package/node_modules/readable-stream/README.md +0 -106
  600. package/node_modules/readable-stream/errors-browser.js +0 -127
  601. package/node_modules/readable-stream/errors.js +0 -116
  602. package/node_modules/readable-stream/experimentalWarning.js +0 -17
  603. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  604. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  605. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  606. package/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  607. package/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  608. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  609. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  610. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  611. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  612. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  613. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  614. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  615. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  616. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  617. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  618. package/node_modules/readable-stream/package.json +0 -68
  619. package/node_modules/readable-stream/readable-browser.js +0 -9
  620. package/node_modules/readable-stream/readable.js +0 -16
  621. package/node_modules/safe-buffer/LICENSE +0 -21
  622. package/node_modules/safe-buffer/README.md +0 -584
  623. package/node_modules/safe-buffer/index.d.ts +0 -187
  624. package/node_modules/safe-buffer/index.js +0 -65
  625. package/node_modules/safe-buffer/package.json +0 -51
  626. package/node_modules/semver/LICENSE +0 -15
  627. package/node_modules/semver/README.md +0 -680
  628. package/node_modules/semver/bin/semver.js +0 -195
  629. package/node_modules/semver/classes/comparator.js +0 -143
  630. package/node_modules/semver/classes/index.js +0 -7
  631. package/node_modules/semver/classes/range.js +0 -577
  632. package/node_modules/semver/classes/semver.js +0 -350
  633. package/node_modules/semver/functions/clean.js +0 -8
  634. package/node_modules/semver/functions/cmp.js +0 -54
  635. package/node_modules/semver/functions/coerce.js +0 -62
  636. package/node_modules/semver/functions/compare-build.js +0 -9
  637. package/node_modules/semver/functions/compare-loose.js +0 -5
  638. package/node_modules/semver/functions/compare.js +0 -7
  639. package/node_modules/semver/functions/diff.js +0 -60
  640. package/node_modules/semver/functions/eq.js +0 -5
  641. package/node_modules/semver/functions/gt.js +0 -5
  642. package/node_modules/semver/functions/gte.js +0 -5
  643. package/node_modules/semver/functions/inc.js +0 -21
  644. package/node_modules/semver/functions/lt.js +0 -5
  645. package/node_modules/semver/functions/lte.js +0 -5
  646. package/node_modules/semver/functions/major.js +0 -5
  647. package/node_modules/semver/functions/minor.js +0 -5
  648. package/node_modules/semver/functions/neq.js +0 -5
  649. package/node_modules/semver/functions/parse.js +0 -18
  650. package/node_modules/semver/functions/patch.js +0 -5
  651. package/node_modules/semver/functions/prerelease.js +0 -8
  652. package/node_modules/semver/functions/rcompare.js +0 -5
  653. package/node_modules/semver/functions/rsort.js +0 -5
  654. package/node_modules/semver/functions/satisfies.js +0 -12
  655. package/node_modules/semver/functions/sort.js +0 -5
  656. package/node_modules/semver/functions/truncate.js +0 -48
  657. package/node_modules/semver/functions/valid.js +0 -8
  658. package/node_modules/semver/index.js +0 -93
  659. package/node_modules/semver/internal/constants.js +0 -37
  660. package/node_modules/semver/internal/debug.js +0 -11
  661. package/node_modules/semver/internal/identifiers.js +0 -29
  662. package/node_modules/semver/internal/lrucache.js +0 -42
  663. package/node_modules/semver/internal/parse-options.js +0 -17
  664. package/node_modules/semver/internal/re.js +0 -223
  665. package/node_modules/semver/package.json +0 -78
  666. package/node_modules/semver/preload.js +0 -4
  667. package/node_modules/semver/range.bnf +0 -17
  668. package/node_modules/semver/ranges/gtr.js +0 -6
  669. package/node_modules/semver/ranges/intersects.js +0 -9
  670. package/node_modules/semver/ranges/ltr.js +0 -6
  671. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  672. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  673. package/node_modules/semver/ranges/min-version.js +0 -63
  674. package/node_modules/semver/ranges/outside.js +0 -82
  675. package/node_modules/semver/ranges/simplify.js +0 -49
  676. package/node_modules/semver/ranges/subset.js +0 -249
  677. package/node_modules/semver/ranges/to-comparators.js +0 -10
  678. package/node_modules/semver/ranges/valid.js +0 -13
  679. package/node_modules/simple-concat/.travis.yml +0 -3
  680. package/node_modules/simple-concat/LICENSE +0 -20
  681. package/node_modules/simple-concat/README.md +0 -44
  682. package/node_modules/simple-concat/index.js +0 -15
  683. package/node_modules/simple-concat/package.json +0 -47
  684. package/node_modules/simple-concat/test/basic.js +0 -41
  685. package/node_modules/simple-get/.github/dependabot.yml +0 -15
  686. package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  687. package/node_modules/simple-get/LICENSE +0 -20
  688. package/node_modules/simple-get/README.md +0 -333
  689. package/node_modules/simple-get/index.js +0 -108
  690. package/node_modules/simple-get/package.json +0 -67
  691. package/node_modules/string_decoder/LICENSE +0 -48
  692. package/node_modules/string_decoder/README.md +0 -47
  693. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  694. package/node_modules/string_decoder/package.json +0 -34
  695. package/node_modules/strip-json-comments/index.js +0 -70
  696. package/node_modules/strip-json-comments/license +0 -21
  697. package/node_modules/strip-json-comments/package.json +0 -42
  698. package/node_modules/strip-json-comments/readme.md +0 -64
  699. package/node_modules/tar-fs/.travis.yml +0 -6
  700. package/node_modules/tar-fs/LICENSE +0 -21
  701. package/node_modules/tar-fs/README.md +0 -165
  702. package/node_modules/tar-fs/index.js +0 -392
  703. package/node_modules/tar-fs/package.json +0 -46
  704. package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  705. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  706. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  707. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  708. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  709. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  710. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  711. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  712. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  713. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  714. package/node_modules/tar-fs/test/index.js +0 -457
  715. package/node_modules/tar-stream/LICENSE +0 -21
  716. package/node_modules/tar-stream/README.md +0 -168
  717. package/node_modules/tar-stream/extract.js +0 -257
  718. package/node_modules/tar-stream/headers.js +0 -295
  719. package/node_modules/tar-stream/index.js +0 -2
  720. package/node_modules/tar-stream/pack.js +0 -255
  721. package/node_modules/tar-stream/package.json +0 -58
  722. package/node_modules/tar-stream/sandbox.js +0 -11
  723. package/node_modules/tunnel-agent/LICENSE +0 -55
  724. package/node_modules/tunnel-agent/README.md +0 -4
  725. package/node_modules/tunnel-agent/index.js +0 -244
  726. package/node_modules/tunnel-agent/package.json +0 -22
  727. package/node_modules/util-deprecate/History.md +0 -16
  728. package/node_modules/util-deprecate/LICENSE +0 -24
  729. package/node_modules/util-deprecate/README.md +0 -53
  730. package/node_modules/util-deprecate/browser.js +0 -67
  731. package/node_modules/util-deprecate/node.js +0 -6
  732. package/node_modules/util-deprecate/package.json +0 -27
  733. package/node_modules/wrappy/LICENSE +0 -15
  734. package/node_modules/wrappy/README.md +0 -36
  735. package/node_modules/wrappy/package.json +0 -29
  736. package/node_modules/wrappy/wrappy.js +0 -33
  737. /package/{dist/src/twin-github/server.d.ts → node_modules/@pome-sh/twin-slack/dist/scripts/fidelity-parity.d.ts} +0 -0
  738. /package/{dist/src/twin-github/types.js → node_modules/@pome-sh/twin-stripe/dist/scripts/fidelity-parity.d.ts} +0 -0
@@ -1,207 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // FDRS-644 — the per-trial CLOUD verdict artifact.
3
- //
4
- // Hosted `pome run` persists each finalized trial's cloud verdict payload
5
- // (what /finalize returned and the terminal rendered) as `verdict.json`
6
- // next to the trial's raw trace. This is a provenance-labeled CACHE of the
7
- // cloud judge's output — NOT a local score: the OSS CLI still has no
8
- // scoring engine (FDRS-657 / no-eval-in-oss), score.json is still never
9
- // written, and deleting verdict.json loses nothing the dashboard doesn't
10
- // hold. `pome fix-prompt` reads these to hand grouped failure signatures
11
- // to the user's coding agent without a credentialed cloud round-trip —
12
- // the F0-3 / L5 intent recorded in uploadAndFinalize.ts ("so the CLI can
13
- // render per-criterion verdicts … without a follow-up cloud round-trip").
14
- //
15
- // Artifact-layout knowledge lives HERE and only here:
16
- // <artifacts-root>/<task-slug>/<session-id>/verdict.json
17
- // (runDir shape from recorder/artifacts.ts `writeRunArtifactsCore`).
18
- import { existsSync } from "node:fs";
19
- import { readdir, readFile, writeFile } from "node:fs/promises";
20
- import { join } from "node:path";
21
- export const VERDICT_ARTIFACT_VERSION = 1;
22
- export const VERDICT_FILENAME = "verdict.json";
23
- export async function writeVerdictArtifact(runDir, verdict) {
24
- await writeFile(join(runDir, VERDICT_FILENAME), `${JSON.stringify(verdict, null, 2)}\n`, "utf8");
25
- }
26
- /** Read one trial's verdict.json. Returns null when absent or when the file
27
- * isn't a recognizable verdict artifact (foreign/corrupt files are skipped,
28
- * never thrown on — fix-prompt discovery must survive a messy runs/). */
29
- /** Every field the fix-prompt pipeline dereferences must hold its declared
30
- * shape, or the FILE is rejected — discovery treats a half-recognizable
31
- * verdict.json as foreign rather than crashing downstream on it. */
32
- function isVerdictArtifact(parsed) {
33
- if (typeof parsed !== "object" || parsed === null)
34
- return false;
35
- const v = parsed;
36
- if (v.source !== "cloud-finalize")
37
- return false;
38
- if (typeof v.session_id !== "string")
39
- return false;
40
- if (typeof v.task_name !== "string")
41
- return false;
42
- if (typeof v.scenario_path !== "string")
43
- return false;
44
- if (v.group_id !== null && typeof v.group_id !== "string")
45
- return false;
46
- if (typeof v.finalized_at !== "string")
47
- return false;
48
- if (typeof v.passed !== "boolean")
49
- return false;
50
- if (typeof v.score !== "number")
51
- return false;
52
- if (!Array.isArray(v.criteria_results))
53
- return false;
54
- return v.criteria_results.every((r) => {
55
- if (typeof r !== "object" || r === null)
56
- return false;
57
- const result = r;
58
- const criterion = result.criterion;
59
- return (typeof criterion === "object" &&
60
- criterion !== null &&
61
- typeof criterion.text === "string" &&
62
- typeof result.reason === "string" &&
63
- typeof result.passed === "boolean" &&
64
- typeof result.skipped === "boolean");
65
- });
66
- }
67
- export async function readVerdictArtifact(runDir) {
68
- const path = join(runDir, VERDICT_FILENAME);
69
- let raw;
70
- try {
71
- raw = await readFile(path, "utf8");
72
- }
73
- catch {
74
- return null;
75
- }
76
- try {
77
- const parsed = JSON.parse(raw);
78
- if (!isVerdictArtifact(parsed))
79
- return null;
80
- return { runDir, verdict: parsed };
81
- }
82
- catch {
83
- return null;
84
- }
85
- }
86
- /** Scan an artifacts root for finalized trials — exactly the two-level
87
- * layout `<root>/<task-slug>/<session-id>/verdict.json`. Anything
88
- * unreadable is skipped. */
89
- export async function scanVerdictArtifacts(artifactsRoot) {
90
- const found = [];
91
- let slugs;
92
- try {
93
- slugs = await readdir(artifactsRoot);
94
- }
95
- catch {
96
- return found;
97
- }
98
- for (const slug of slugs) {
99
- const slugDir = join(artifactsRoot, slug);
100
- let runIds;
101
- try {
102
- runIds = await readdir(slugDir);
103
- }
104
- catch {
105
- continue;
106
- }
107
- for (const runId of runIds) {
108
- const trial = await readVerdictArtifact(join(slugDir, runId));
109
- if (trial)
110
- found.push(trial);
111
- }
112
- }
113
- return found;
114
- }
115
- /** Group trials into run sets: trials sharing a group_id form one set; a
116
- * null group_id is its own single-run set. */
117
- export function groupRunSets(trials) {
118
- const byKey = new Map();
119
- for (const trial of trials) {
120
- const key = trial.verdict.group_id ?? `solo:${trial.verdict.session_id}`;
121
- const bucket = byKey.get(key);
122
- if (bucket)
123
- bucket.push(trial);
124
- else
125
- byKey.set(key, [trial]);
126
- }
127
- const sets = [];
128
- for (const bucket of byKey.values()) {
129
- bucket.sort((a, b) => a.verdict.finalized_at.localeCompare(b.verdict.finalized_at));
130
- const last = bucket[bucket.length - 1];
131
- sets.push({
132
- groupId: bucket[0].verdict.group_id,
133
- taskName: bucket[0].verdict.task_name,
134
- scenarioPath: bucket[0].verdict.scenario_path,
135
- trials: bucket,
136
- latestFinalizedAt: last.verdict.finalized_at,
137
- anyFailed: bucket.some((t) => !t.verdict.passed),
138
- });
139
- }
140
- sets.sort((a, b) => a.latestFinalizedAt.localeCompare(b.latestFinalizedAt));
141
- return sets;
142
- }
143
- /** The newest run set with at least one failed (completed) trial. */
144
- export function latestFailedRunSet(sets) {
145
- for (let i = sets.length - 1; i >= 0; i -= 1) {
146
- if (sets[i].anyFailed)
147
- return sets[i];
148
- }
149
- return null;
150
- }
151
- /**
152
- * Resolve what `pome fix-prompt [target]` should read.
153
- * - `target` = a trial run dir (has verdict.json): that trial's whole set —
154
- * the user pointed at it, outcome doesn't matter.
155
- * - `target` = an artifacts root: the latest failed set under it.
156
- */
157
- export async function discoverRunSet(target) {
158
- const anchor = await readVerdictArtifact(target);
159
- if (anchor) {
160
- // Trial dir → its set. Layout is <root>/<slug>/<runId>, so the root is
161
- // two levels up; a moved/isolated dir degrades to a set of one.
162
- const root = join(target, "..", "..");
163
- const sets = groupRunSets(await scanVerdictArtifacts(root));
164
- const own = sets.find((s) => (anchor.verdict.group_id !== null &&
165
- s.groupId === anchor.verdict.group_id) ||
166
- (anchor.verdict.group_id === null &&
167
- s.trials.length === 1 &&
168
- s.trials[0].verdict.session_id === anchor.verdict.session_id)) ?? groupRunSets([anchor])[0];
169
- return { kind: "trial-dir", set: own, totalSets: Math.max(sets.length, 1) };
170
- }
171
- if (!existsSync(target))
172
- return { kind: "root", set: null, totalSets: 0 };
173
- const sets = groupRunSets(await scanVerdictArtifacts(target));
174
- return {
175
- kind: "root",
176
- set: latestFailedRunSet(sets),
177
- totalSets: sets.length,
178
- };
179
- }
180
- /** Load a trial's captured events.jsonl (raw trace) for prompt assembly.
181
- * Missing/corrupt lines are skipped — the prompt degrades, never throws. */
182
- export async function loadTrialEvents(runDir) {
183
- let raw;
184
- try {
185
- raw = await readFile(join(runDir, "events.jsonl"), "utf8");
186
- }
187
- catch {
188
- return [];
189
- }
190
- const events = [];
191
- for (const line of raw.split("\n")) {
192
- const trimmed = line.trim();
193
- if (!trimmed)
194
- continue;
195
- try {
196
- const parsed = JSON.parse(trimmed);
197
- // Valid JSON but not an event object (`null`, `3`, `"x"`) is corrupt
198
- // for our purposes — renderEvent dereferences fields on it.
199
- if (typeof parsed === "object" && parsed !== null)
200
- events.push(parsed);
201
- }
202
- catch {
203
- // skip corrupt row
204
- }
205
- }
206
- return events;
207
- }
@@ -1,38 +0,0 @@
1
- import type { z } from "zod";
2
- import type { criterionSchema } from "../types/shared.js";
3
- type WireCriterion = z.infer<typeof criterionSchema>;
4
- export type CriterionOutcome = "passed" | "failed" | "skipped" | "errored";
5
- export type CriterionResult = {
6
- criterion: WireCriterion;
7
- outcome?: CriterionOutcome;
8
- passed: boolean;
9
- skipped: boolean;
10
- reason: string;
11
- confidence?: number;
12
- judge_model?: string;
13
- judge_tokens_in?: number;
14
- judge_tokens_out?: number;
15
- judge_has_usage?: boolean;
16
- };
17
- export type Score = {
18
- satisfaction: number;
19
- passed: number;
20
- failed: number;
21
- skipped: number;
22
- errored: number;
23
- total_required: number;
24
- evaluated: boolean;
25
- can_pass: boolean;
26
- results: CriterionResult[];
27
- judge_model: string | null;
28
- judge_tokens_in: number | null;
29
- judge_tokens_out: number | null;
30
- };
31
- export declare function outcomeOf(result: CriterionResult): CriterionOutcome;
32
- export type ScoreStatus = "pass" | "fail" | "unevaluated";
33
- export declare function scoreStatus(score: Score, passThreshold: number): ScoreStatus;
34
- export declare function scenarioPassed(score: Score, passThreshold: number): boolean;
35
- export declare function markerFor(outcome: CriterionOutcome): string;
36
- export declare function scoreCountsSummary(score: Score): string;
37
- export declare function runScoreLine(score: Score, passThreshold: number, unevaluatedNumericLabel: string): string;
38
- export {};
@@ -1,59 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- //
3
- // Cloud-verdict DISPLAY model + pure label/render helpers (FDRS-656/657).
4
- //
5
- // The OSS CLI is CAPTURE-ONLY: it never computes a score, never runs a judge,
6
- // and never correlates locally. Every helper here operates on a score object
7
- // that ORIGINATES FROM THE CLOUD (a hosted `pome run` /finalize response, or a
8
- // `pome eval` upload verdict — see `scoreFromFinalizeResponse`). Nothing in
9
- // this module derives a verdict from twin state, events, or a judge call.
10
- //
11
- // This is the relocation of the former `src/evaluator/score.ts` + the
12
- // verdict-rendering half of `src/cli/render.ts`. The local scoring engine
13
- // (`scoreResults`, the deterministic matchers, the BYOK LLM judge) was deleted
14
- // under FDRS-657; only the pure display model survives, moved out of the
15
- // `evaluator/` tree so the `no-eval-in-oss` gate can assert that tree is gone.
16
- // Derive the four-state outcome from a cloud result. Prefers the explicit
17
- // `outcome` field; falls back to the legacy passed/skipped booleans. PURE.
18
- export function outcomeOf(result) {
19
- if (result.outcome)
20
- return result.outcome;
21
- if (result.skipped)
22
- return "skipped";
23
- return result.passed ? "passed" : "failed";
24
- }
25
- // Single source of truth for "did this run pass?", applied to a CLOUD score.
26
- // Encodes the A5 guard: a run is only a PASS when it was evaluated, every
27
- // required criterion was evaluated (can_pass), AND satisfaction cleared the
28
- // threshold. PURE — no computation of the score itself.
29
- export function scoreStatus(score, passThreshold) {
30
- if (!score.evaluated || !score.can_pass)
31
- return "unevaluated";
32
- return score.satisfaction >= passThreshold ? "pass" : "fail";
33
- }
34
- export function scenarioPassed(score, passThreshold) {
35
- return scoreStatus(score, passThreshold) === "pass";
36
- }
37
- // FDRS-591/611 per-criterion marker: ✓ passed, ✗ failed, - skipped, ! errored.
38
- export function markerFor(outcome) {
39
- switch (outcome) {
40
- case "passed":
41
- return "✓";
42
- case "failed":
43
- return "✗";
44
- case "errored":
45
- return "!";
46
- default:
47
- return "-";
48
- }
49
- }
50
- export function scoreCountsSummary(score) {
51
- return `${score.passed ?? 0} passed, ${score.failed ?? 0} failed, ${score.skipped ?? 0} skipped, ${score.errored ?? 0} errored`;
52
- }
53
- export function runScoreLine(score, passThreshold, unevaluatedNumericLabel) {
54
- const status = scoreStatus(score, passThreshold);
55
- if (status === "unevaluated") {
56
- return `score: un-evaluated (cannot pass) — ${scoreCountsSummary(score)}; ${unevaluatedNumericLabel}: ${score.satisfaction}/100`;
57
- }
58
- return `score: ${score.satisfaction}/100`;
59
- }
@@ -1,10 +0,0 @@
1
- import { Hono } from "hono";
2
- import type { GitHubTwinDatabase, Recorder, SeedState } from "./types.js";
3
- type AppOptions = {
4
- db?: GitHubTwinDatabase;
5
- seed?: SeedState;
6
- recorder?: Recorder;
7
- runId?: string;
8
- };
9
- export declare function createGitHubTwinApp(options?: AppOptions): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
10
- export {};
@@ -1,316 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- import { Hono } from "hono";
3
- import { z } from "zod";
4
- import { createRequestId } from "../../recorder/recorder.js";
5
- import { openGitHubTwinDatabase } from "./db/openDatabase.js";
6
- import { addIssueLabel, createComment, createLabel, deleteIssueLabel, exportState, getIssue, getLabel, getRepo, hasCollaborator, listCollaborators, listIssueLabels, listIssues, listLabels, seedDatabase, updateIssue } from "./db/queries.js";
7
- import { defaultSeedState } from "./domain/seed.js";
8
- import { collaboratorJson, commentJson, issueJson, labelJson, repoJson } from "./domain/serializers.js";
9
- const issuePatchSchema = z.object({
10
- title: z.string().min(1).optional(),
11
- body: z.string().optional(),
12
- state: z.enum(["open", "closed"]).optional(),
13
- assignee: z.string().nullable().optional(),
14
- assignees: z.array(z.string().min(1)).optional()
15
- });
16
- const createCommentSchema = z.object({
17
- body: z.string().min(1)
18
- });
19
- const createLabelSchema = z.object({
20
- name: z.string().min(1),
21
- color: z.string().default("ededed"),
22
- description: z.string().default("")
23
- });
24
- const addLabelsSchema = z.object({
25
- labels: z.array(z.string().min(1)).min(1)
26
- });
27
- const addAssigneesSchema = z.object({
28
- assignees: z.array(z.string().min(1)).min(1)
29
- });
30
- export function createGitHubTwinApp(options = {}) {
31
- const db = options.db ?? openGitHubTwinDatabase();
32
- if (!options.db) {
33
- seedDatabase(db, options.seed ?? defaultSeedState());
34
- }
35
- const recorder = options.recorder;
36
- const runId = options.runId ?? "local";
37
- const app = new Hono();
38
- app.get("/_pome/health", (c) => c.json({
39
- ok: true,
40
- twin: "github",
41
- fidelity: "semantic"
42
- }));
43
- app.get("/_pome/state", (c) => c.json(exportState(db)));
44
- app.get("/_pome/events", (c) => c.json(recorder?.events() ?? []));
45
- app.get("/repos/:owner/:repo", (c) => {
46
- const started = Date.now();
47
- const repo = getRepoForRequest(c, db);
48
- if (!repo) {
49
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
50
- }
51
- return respond(c, recorder, runId, started, null, 200, repoJson(repo), false);
52
- });
53
- app.get("/repos/:owner/:repo/issues", (c) => {
54
- const started = Date.now();
55
- const repo = getRepoForRequest(c, db);
56
- if (!repo) {
57
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
58
- }
59
- const issues = listIssues(db, repo.id).map((issue) => issueJson(issue, listIssueLabels(db, repo.id, issue.number), repo));
60
- return respond(c, recorder, runId, started, null, 200, issues, false);
61
- });
62
- app.get("/repos/:owner/:repo/issues/:number", (c) => {
63
- const started = Date.now();
64
- const found = getIssueForRequest(c, db);
65
- if (!found.repo) {
66
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
67
- }
68
- if (!found.issue) {
69
- return respond(c, recorder, runId, started, null, 404, githubError("Issue not found", 404), false);
70
- }
71
- const body = issueJson(found.issue, listIssueLabels(db, found.repo.id, found.issue.number), found.repo);
72
- return respond(c, recorder, runId, started, null, 200, body, false);
73
- });
74
- app.patch("/repos/:owner/:repo/issues/:number", async (c) => {
75
- const started = Date.now();
76
- const parsed = await parseBody(c, issuePatchSchema);
77
- if (!parsed.ok) {
78
- return respond(c, recorder, runId, started, parsed.raw, parsed.status, parsed.body, false);
79
- }
80
- const found = getIssueForRequest(c, db);
81
- if (!found.repo) {
82
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Not Found", 404), false);
83
- }
84
- if (!found.issue) {
85
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Issue not found", 404), false);
86
- }
87
- const requestedAssignee = parsed.data.assignee ?? parsed.data.assignees?.[0];
88
- if (requestedAssignee && !hasCollaborator(db, found.repo.id, requestedAssignee)) {
89
- return respond(c, recorder, runId, started, parsed.raw, 422, githubError("Validation Failed", 422, [
90
- { resource: "Issue", field: "assignees", code: "invalid" }
91
- ]), false);
92
- }
93
- const issue = updateIssue(db, found.repo.id, found.issue.number, {
94
- title: parsed.data.title,
95
- body: parsed.data.body,
96
- state: parsed.data.state,
97
- assignee_login: requestedAssignee
98
- });
99
- const body = issueJson(issue, listIssueLabels(db, found.repo.id, found.issue.number), found.repo);
100
- return respond(c, recorder, runId, started, parsed.raw, 200, body, true);
101
- });
102
- app.post("/repos/:owner/:repo/issues/:number/comments", async (c) => {
103
- const started = Date.now();
104
- const parsed = await parseBody(c, createCommentSchema);
105
- if (!parsed.ok) {
106
- return respond(c, recorder, runId, started, parsed.raw, parsed.status, parsed.body, false);
107
- }
108
- const found = getIssueForRequest(c, db);
109
- if (!found.repo) {
110
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Not Found", 404), false);
111
- }
112
- if (!found.issue) {
113
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Issue not found", 404), false);
114
- }
115
- const comment = createComment(db, found.repo.id, found.issue.number, parsed.data.body);
116
- return respond(c, recorder, runId, started, parsed.raw, 201, commentJson(comment, found.repo, found.issue.number), true);
117
- });
118
- app.get("/repos/:owner/:repo/labels", (c) => {
119
- const started = Date.now();
120
- const repo = getRepoForRequest(c, db);
121
- if (!repo) {
122
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
123
- }
124
- return respond(c, recorder, runId, started, null, 200, listLabels(db, repo.id).map(labelJson), false);
125
- });
126
- app.post("/repos/:owner/:repo/labels", async (c) => {
127
- const started = Date.now();
128
- const parsed = await parseBody(c, createLabelSchema);
129
- if (!parsed.ok) {
130
- return respond(c, recorder, runId, started, parsed.raw, parsed.status, parsed.body, false);
131
- }
132
- const repo = getRepoForRequest(c, db);
133
- if (!repo) {
134
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Not Found", 404), false);
135
- }
136
- if (getLabel(db, repo.id, parsed.data.name)) {
137
- return respond(c, recorder, runId, started, parsed.raw, 422, githubError("Validation Failed", 422, [
138
- { resource: "Label", field: "name", code: "already_exists" }
139
- ]), false);
140
- }
141
- const label = createLabel(db, repo.id, parsed.data.name, parsed.data.color, parsed.data.description);
142
- return respond(c, recorder, runId, started, parsed.raw, 201, labelJson(label), true);
143
- });
144
- app.get("/repos/:owner/:repo/issues/:number/labels", (c) => {
145
- const started = Date.now();
146
- const found = getIssueForRequest(c, db);
147
- if (!found.repo) {
148
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
149
- }
150
- if (!found.issue) {
151
- return respond(c, recorder, runId, started, null, 404, githubError("Issue not found", 404), false);
152
- }
153
- return respond(c, recorder, runId, started, null, 200, listIssueLabels(db, found.repo.id, found.issue.number).map(labelJson), false);
154
- });
155
- app.post("/repos/:owner/:repo/issues/:number/labels", async (c) => {
156
- const started = Date.now();
157
- const parsed = await parseBody(c, addLabelsSchema);
158
- if (!parsed.ok) {
159
- return respond(c, recorder, runId, started, parsed.raw, parsed.status, parsed.body, false);
160
- }
161
- const found = getIssueForRequest(c, db);
162
- if (!found.repo) {
163
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Not Found", 404), false);
164
- }
165
- if (!found.issue) {
166
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Issue not found", 404), false);
167
- }
168
- for (const labelName of parsed.data.labels) {
169
- if (!getLabel(db, found.repo.id, labelName)) {
170
- return respond(c, recorder, runId, started, parsed.raw, 422, githubError("Validation Failed", 422, [
171
- { resource: "Label", field: "name", code: "missing", value: labelName }
172
- ]), false);
173
- }
174
- }
175
- for (const labelName of parsed.data.labels) {
176
- addIssueLabel(db, found.repo.id, found.issue.number, labelName);
177
- }
178
- return respond(c, recorder, runId, started, parsed.raw, 200, listIssueLabels(db, found.repo.id, found.issue.number).map(labelJson), true);
179
- });
180
- app.delete("/repos/:owner/:repo/issues/:number/labels/:name", (c) => {
181
- const started = Date.now();
182
- const found = getIssueForRequest(c, db);
183
- if (!found.repo) {
184
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
185
- }
186
- if (!found.issue) {
187
- return respond(c, recorder, runId, started, null, 404, githubError("Issue not found", 404), false);
188
- }
189
- const changes = deleteIssueLabel(db, found.repo.id, found.issue.number, c.req.param("name"));
190
- if (!changes) {
191
- return respond(c, recorder, runId, started, null, 404, githubError("Label not found", 404), false);
192
- }
193
- return respond(c, recorder, runId, started, null, 200, listIssueLabels(db, found.repo.id, found.issue.number).map(labelJson), true);
194
- });
195
- app.get("/repos/:owner/:repo/collaborators", (c) => {
196
- const started = Date.now();
197
- const repo = getRepoForRequest(c, db);
198
- if (!repo) {
199
- return respond(c, recorder, runId, started, null, 404, githubError("Not Found", 404), false);
200
- }
201
- return respond(c, recorder, runId, started, null, 200, listCollaborators(db, repo.id).map(collaboratorJson), false);
202
- });
203
- app.post("/repos/:owner/:repo/issues/:number/assignees", async (c) => {
204
- const started = Date.now();
205
- const parsed = await parseBody(c, addAssigneesSchema);
206
- if (!parsed.ok) {
207
- return respond(c, recorder, runId, started, parsed.raw, parsed.status, parsed.body, false);
208
- }
209
- const found = getIssueForRequest(c, db);
210
- if (!found.repo) {
211
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Not Found", 404), false);
212
- }
213
- if (!found.issue) {
214
- return respond(c, recorder, runId, started, parsed.raw, 404, githubError("Issue not found", 404), false);
215
- }
216
- const assignee = parsed.data.assignees[0];
217
- if (!hasCollaborator(db, found.repo.id, assignee)) {
218
- return respond(c, recorder, runId, started, parsed.raw, 422, githubError("Validation Failed", 422, [
219
- { resource: "Issue", field: "assignees", code: "invalid", value: assignee }
220
- ]), false);
221
- }
222
- const issue = updateIssue(db, found.repo.id, found.issue.number, { assignee_login: assignee });
223
- return respond(c, recorder, runId, started, parsed.raw, 201, issueJson(issue, listIssueLabels(db, found.repo.id, issue.number), found.repo), true);
224
- });
225
- app.all("*", (c) => {
226
- const started = Date.now();
227
- return respond(c, recorder, runId, started, null, 404, {
228
- message: "This endpoint is not supported by this twin.",
229
- fidelity: "unsupported",
230
- supported_endpoints: [
231
- "GET /repos/:owner/:repo",
232
- "GET /repos/:owner/:repo/issues",
233
- "GET /repos/:owner/:repo/issues/:number",
234
- "PATCH /repos/:owner/:repo/issues/:number",
235
- "POST /repos/:owner/:repo/issues/:number/comments",
236
- "GET /repos/:owner/:repo/labels",
237
- "POST /repos/:owner/:repo/labels",
238
- "GET /repos/:owner/:repo/issues/:number/labels",
239
- "POST /repos/:owner/:repo/issues/:number/labels",
240
- "DELETE /repos/:owner/:repo/issues/:number/labels/:name",
241
- "GET /repos/:owner/:repo/collaborators",
242
- "POST /repos/:owner/:repo/issues/:number/assignees"
243
- ]
244
- }, false, "unsupported");
245
- });
246
- return app;
247
- }
248
- function getRepoForRequest(c, db) {
249
- const owner = c.req.param("owner");
250
- const repo = c.req.param("repo");
251
- if (!owner || !repo)
252
- return undefined;
253
- return getRepo(db, owner, repo);
254
- }
255
- function getIssueForRequest(c, db) {
256
- const repo = getRepoForRequest(c, db);
257
- const issueNumber = Number(c.req.param("number"));
258
- return {
259
- repo,
260
- issue: repo && Number.isInteger(issueNumber) ? getIssue(db, repo.id, issueNumber) : undefined
261
- };
262
- }
263
- function githubError(message, status, errors) {
264
- return {
265
- message,
266
- documentation_url: "https://docs.github.com/rest",
267
- status,
268
- ...(errors ? { errors } : {})
269
- };
270
- }
271
- async function parseBody(c, schema) {
272
- let raw;
273
- try {
274
- raw = await c.req.json();
275
- }
276
- catch {
277
- return {
278
- ok: false,
279
- status: 400,
280
- body: githubError("Problems parsing JSON", 400),
281
- raw: null
282
- };
283
- }
284
- const parsed = schema.safeParse(raw);
285
- if (!parsed.success) {
286
- return {
287
- ok: false,
288
- status: 422,
289
- body: githubError("Validation Failed", 422, parsed.error.issues.map((issue) => ({
290
- resource: "Request",
291
- field: issue.path.join("."),
292
- code: issue.code
293
- }))),
294
- raw
295
- };
296
- }
297
- return { ok: true, data: parsed.data, raw };
298
- }
299
- function respond(c, recorder, runId, started, requestBody, status, responseBody, stateMutation, fidelity = "semantic") {
300
- recorder?.record({
301
- ts: new Date().toISOString(),
302
- run_id: runId,
303
- twin: "github",
304
- request_id: createRequestId(),
305
- method: c.req.method,
306
- path: new URL(c.req.url).pathname,
307
- request_body: requestBody,
308
- status,
309
- response_body: responseBody,
310
- latency_ms: Date.now() - started,
311
- fidelity,
312
- state_mutation: stateMutation,
313
- error: status >= 400 ? responseBody.message ?? "request failed" : null
314
- });
315
- return c.json(responseBody, status);
316
- }
@@ -1,2 +0,0 @@
1
- import type { GitHubTwinDatabase } from "../types.js";
2
- export declare function migrate(db: GitHubTwinDatabase): void;