@pome-sh/cli 0.1.1 → 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 (277) 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/hosted/client.d.ts +41 -5
  13. package/dist/src/hosted/client.js +333 -19
  14. package/dist/src/hosted/errors.d.ts +11 -1
  15. package/dist/src/hosted/errors.js +8 -1
  16. package/dist/src/hosted/evalResultView.d.ts +2 -0
  17. package/dist/src/hosted/evalResultView.js +22 -0
  18. package/dist/src/hosted/uploadAndFinalize.d.ts +18 -1
  19. package/dist/src/hosted/uploadAndFinalize.js +51 -3
  20. package/dist/src/recorder/inspect.js +20 -2
  21. package/dist/src/runner/mergeAdapterSignals.js +2 -2
  22. package/dist/src/runner/ports.js +3 -0
  23. package/dist/src/runner/runScenario.d.ts +79 -2
  24. package/dist/src/runner/runScenario.js +94 -36
  25. package/dist/src/runner/runScenarioHosted.d.ts +37 -0
  26. package/dist/src/runner/runScenarioHosted.js +257 -58
  27. package/dist/src/runner/runTrialGroup.d.ts +1 -3
  28. package/dist/src/runner/runTrialGroup.js +1 -3
  29. package/dist/src/scenario/parseScenario.d.ts +5 -0
  30. package/dist/src/scenario/parseScenario.js +135 -8
  31. package/dist/src/scenario/scenarioSchema.d.ts +200 -3
  32. package/dist/src/scenario/scenarioSchema.js +12 -1
  33. package/dist/src/twin/twinHarness.d.ts +10 -0
  34. package/dist/src/twin/twinHarness.js +6 -2
  35. package/dist/src/twin/twinStart.d.ts +19 -0
  36. package/dist/src/twin/twinStart.js +156 -0
  37. package/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
  38. package/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
  39. package/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
  40. package/node_modules/@pome-sh/sdk/dist/parity.d.ts +55 -0
  41. package/node_modules/@pome-sh/sdk/dist/parity.js +112 -0
  42. package/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
  43. package/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +15 -0
  44. package/node_modules/@pome-sh/sdk/dist/server-helpers.js +96 -0
  45. package/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -1
  46. package/node_modules/@pome-sh/sdk/dist/server.d.ts +1 -1
  47. package/node_modules/@pome-sh/sdk/dist/server.js +9 -7
  48. package/node_modules/@pome-sh/sdk/dist/server.js.map +1 -1
  49. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/errors.d.ts +39 -0
  50. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/errors.js +33 -0
  51. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/errors.js.map +1 -0
  52. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/evaluator-hooks.d.ts +13 -0
  53. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/evaluator-hooks.js +6 -0
  54. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/evaluator-hooks.js.map +1 -0
  55. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +215 -0
  56. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +83 -0
  57. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +1 -0
  58. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +175 -0
  59. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/github-access-control.js +182 -0
  60. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +1 -0
  61. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/identity.d.ts +90 -0
  62. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/identity.js +72 -0
  63. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/identity.js.map +1 -0
  64. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/index.d.ts +27 -0
  65. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/index.js +34 -0
  66. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -0
  67. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +286 -0
  68. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +33 -0
  69. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +1 -0
  70. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +65 -0
  71. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +455 -0
  72. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +1 -0
  73. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +39 -0
  74. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +47 -0
  75. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +1 -0
  76. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +25 -0
  77. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/index.js +27 -0
  78. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +1 -0
  79. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +100 -0
  80. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +185 -0
  81. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -0
  82. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +64 -0
  83. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +112 -0
  84. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +1 -0
  85. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +26 -0
  86. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/nano.js +61 -0
  87. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +1 -0
  88. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +42 -0
  89. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/project.js +96 -0
  90. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +1 -0
  91. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +51 -0
  92. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +74 -0
  93. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +1 -0
  94. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +134 -0
  95. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +152 -0
  96. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +1 -0
  97. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +418 -0
  98. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/recorder-events.js +234 -0
  99. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -0
  100. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +2 -0
  101. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/redaction.js +152 -0
  102. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/redaction.js.map +1 -0
  103. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/rest.d.ts +198 -0
  104. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/rest.js +225 -0
  105. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -0
  106. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/run.d.ts +201 -0
  107. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/run.js +166 -0
  108. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/run.js.map +1 -0
  109. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +446 -0
  110. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/seed-state.js +167 -0
  111. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +1 -0
  112. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +53 -0
  113. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/sessions.js +51 -0
  114. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/sessions.js.map +1 -0
  115. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +66 -0
  116. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task-vocab.js +84 -0
  117. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +1 -0
  118. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task.d.ts +483 -0
  119. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task.js +60 -0
  120. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/dist/task.js.map +1 -0
  121. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/package.json +54 -0
  122. package/node_modules/@pome-sh/sdk/node_modules/@pome-sh/shared-types/trace-contract.json +41 -0
  123. package/node_modules/@pome-sh/sdk/package.json +6 -2
  124. package/node_modules/@pome-sh/shared-types/dist/errors.d.ts +39 -0
  125. package/node_modules/@pome-sh/shared-types/dist/errors.js +33 -0
  126. package/node_modules/@pome-sh/shared-types/dist/errors.js.map +1 -0
  127. package/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +252 -0
  128. package/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +122 -0
  129. package/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +1 -0
  130. package/node_modules/@pome-sh/shared-types/dist/identity.d.ts +90 -0
  131. package/node_modules/@pome-sh/shared-types/dist/identity.js +72 -0
  132. package/node_modules/@pome-sh/shared-types/dist/identity.js.map +1 -0
  133. package/node_modules/@pome-sh/shared-types/dist/index.d.ts +13 -1353
  134. package/node_modules/@pome-sh/shared-types/dist/index.js +14 -568
  135. package/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  136. package/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +45 -0
  137. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +8 -0
  138. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -1
  139. package/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +7 -0
  140. package/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +1 -1
  141. package/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +62 -0
  142. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js +36 -0
  143. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -1
  144. package/node_modules/@pome-sh/shared-types/dist/rest.d.ts +245 -0
  145. package/node_modules/@pome-sh/shared-types/dist/rest.js +303 -0
  146. package/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -0
  147. package/node_modules/@pome-sh/shared-types/dist/run.d.ts +7 -0
  148. package/node_modules/@pome-sh/shared-types/dist/run.js +4 -0
  149. package/node_modules/@pome-sh/shared-types/dist/run.js.map +1 -1
  150. package/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +14 -0
  151. package/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +46 -0
  152. package/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +1 -0
  153. package/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +446 -0
  154. package/node_modules/@pome-sh/shared-types/dist/seed-state.js +167 -0
  155. package/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +1 -0
  156. package/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +53 -0
  157. package/node_modules/@pome-sh/shared-types/dist/sessions.js +51 -0
  158. package/node_modules/@pome-sh/shared-types/dist/sessions.js.map +1 -0
  159. package/node_modules/@pome-sh/shared-types/dist/task.d.ts +485 -0
  160. package/node_modules/@pome-sh/shared-types/dist/task.js +60 -0
  161. package/node_modules/@pome-sh/shared-types/dist/task.js.map +1 -0
  162. package/node_modules/@pome-sh/shared-types/package.json +2 -1
  163. package/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  164. package/node_modules/@pome-sh/twin-github/FIDELITY.md +127 -67
  165. package/node_modules/@pome-sh/twin-github/README.md +3 -7
  166. package/node_modules/@pome-sh/twin-github/dist/examples/claude-github-agent.js +4 -20
  167. package/node_modules/@pome-sh/twin-github/dist/examples/claude-github-agent.js.map +1 -1
  168. package/node_modules/@pome-sh/twin-github/dist/src/access-control.d.ts +3 -3
  169. package/node_modules/@pome-sh/twin-github/dist/src/domain.d.ts +141 -3
  170. package/node_modules/@pome-sh/twin-github/dist/src/domain.js +0 -0
  171. package/node_modules/@pome-sh/twin-github/dist/src/domain.js.map +1 -1
  172. package/node_modules/@pome-sh/twin-github/dist/src/routes.js +2 -0
  173. package/node_modules/@pome-sh/twin-github/dist/src/routes.js.map +1 -1
  174. package/node_modules/@pome-sh/twin-github/dist/src/seed.d.ts +1 -1
  175. package/node_modules/@pome-sh/twin-github/dist/src/serializers.d.ts +2 -2
  176. package/node_modules/@pome-sh/twin-github/dist/src/server.js +7 -6
  177. package/node_modules/@pome-sh/twin-github/dist/src/server.js.map +1 -1
  178. package/node_modules/@pome-sh/twin-github/dist/src/tools.d.ts +168 -18
  179. package/node_modules/@pome-sh/twin-github/dist/src/tools.js +23 -0
  180. package/node_modules/@pome-sh/twin-github/dist/src/tools.js.map +1 -1
  181. package/node_modules/@pome-sh/twin-github/fidelity.inventory.json +773 -0
  182. package/node_modules/@pome-sh/twin-github/package.json +5 -4
  183. package/node_modules/@pome-sh/twin-slack/FIDELITY.md +121 -35
  184. package/node_modules/@pome-sh/twin-slack/README.md +2 -6
  185. package/node_modules/@pome-sh/twin-slack/dist/scripts/fidelity-parity.d.ts +1 -0
  186. package/node_modules/@pome-sh/twin-slack/dist/scripts/fidelity-parity.js +92 -0
  187. package/node_modules/@pome-sh/twin-slack/dist/scripts/fidelity-parity.js.map +1 -0
  188. package/node_modules/@pome-sh/twin-slack/dist/scripts/smoke.js +3 -3
  189. package/node_modules/@pome-sh/twin-slack/dist/scripts/smoke.js.map +1 -1
  190. package/node_modules/@pome-sh/twin-slack/dist/scripts/validate-mcp.js +1 -1
  191. package/node_modules/@pome-sh/twin-slack/dist/scripts/validate-mcp.js.map +1 -1
  192. package/node_modules/@pome-sh/twin-slack/dist/src/server.js +7 -6
  193. package/node_modules/@pome-sh/twin-slack/dist/src/server.js.map +1 -1
  194. package/node_modules/@pome-sh/twin-slack/dist/src/tools.d.ts +30 -4
  195. package/node_modules/@pome-sh/twin-slack/dist/src/tools.js +48 -1
  196. package/node_modules/@pome-sh/twin-slack/dist/src/tools.js.map +1 -1
  197. package/node_modules/@pome-sh/twin-slack/fidelity.inventory.json +377 -0
  198. package/node_modules/@pome-sh/twin-slack/package.json +5 -4
  199. package/node_modules/@pome-sh/twin-stripe/FIDELITY.md +151 -50
  200. package/node_modules/@pome-sh/twin-stripe/README.md +42 -45
  201. package/node_modules/@pome-sh/twin-stripe/dist/scripts/fidelity-parity.d.ts +1 -0
  202. package/node_modules/@pome-sh/twin-stripe/dist/scripts/fidelity-parity.js +186 -0
  203. package/node_modules/@pome-sh/twin-stripe/dist/scripts/fidelity-parity.js.map +1 -0
  204. package/node_modules/@pome-sh/twin-stripe/dist/scripts/smoke.js +8 -4
  205. package/node_modules/@pome-sh/twin-stripe/dist/scripts/smoke.js.map +1 -1
  206. package/node_modules/@pome-sh/twin-stripe/dist/src/db.js +26 -2
  207. package/node_modules/@pome-sh/twin-stripe/dist/src/db.js.map +1 -1
  208. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/billing.d.ts +101 -0
  209. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/billing.js +195 -0
  210. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/billing.js.map +1 -0
  211. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/charges.d.ts +15 -1
  212. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/charges.js +17 -5
  213. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/charges.js.map +1 -1
  214. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/customers.d.ts +47 -0
  215. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/customers.js +103 -0
  216. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/customers.js.map +1 -0
  217. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/events.d.ts +1 -1
  218. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/events.js.map +1 -1
  219. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/index.d.ts +6 -0
  220. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/index.js +3 -0
  221. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/index.js.map +1 -1
  222. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-intents.d.ts +61 -2
  223. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-intents.js +214 -52
  224. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-intents.js.map +1 -1
  225. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-methods.d.ts +45 -0
  226. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-methods.js +159 -0
  227. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/payment-methods.js.map +1 -0
  228. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/refunds.d.ts +6 -0
  229. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/refunds.js +16 -0
  230. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/refunds.js.map +1 -1
  231. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/schema.d.ts +1 -0
  232. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/schema.js +144 -1
  233. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/schema.js.map +1 -1
  234. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/stripe-domain.d.ts +420 -43
  235. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/stripe-domain.js +442 -13
  236. package/node_modules/@pome-sh/twin-stripe/dist/src/domain/stripe-domain.js.map +1 -1
  237. package/node_modules/@pome-sh/twin-stripe/dist/src/errors.d.ts +19 -0
  238. package/node_modules/@pome-sh/twin-stripe/dist/src/errors.js +15 -1
  239. package/node_modules/@pome-sh/twin-stripe/dist/src/errors.js.map +1 -1
  240. package/node_modules/@pome-sh/twin-stripe/dist/src/ids.d.ts +2 -0
  241. package/node_modules/@pome-sh/twin-stripe/dist/src/ids.js +2 -0
  242. package/node_modules/@pome-sh/twin-stripe/dist/src/ids.js.map +1 -1
  243. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.d.ts +8 -0
  244. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.js +105 -1
  245. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.js.map +1 -1
  246. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/billing.d.ts +4 -0
  247. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/billing.js +117 -0
  248. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/billing.js.map +1 -0
  249. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/customers.d.ts +4 -0
  250. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/customers.js +47 -0
  251. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/customers.js.map +1 -0
  252. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/index.js +6 -0
  253. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/index.js.map +1 -1
  254. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-intents.js +28 -102
  255. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-intents.js.map +1 -1
  256. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-methods.d.ts +4 -0
  257. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-methods.js +33 -0
  258. package/node_modules/@pome-sh/twin-stripe/dist/src/routes/payment-methods.js.map +1 -0
  259. package/node_modules/@pome-sh/twin-stripe/dist/src/seed.d.ts +10 -8
  260. package/node_modules/@pome-sh/twin-stripe/dist/src/seed.js +3 -2
  261. package/node_modules/@pome-sh/twin-stripe/dist/src/seed.js.map +1 -1
  262. package/node_modules/@pome-sh/twin-stripe/dist/src/serializers.d.ts +181 -21
  263. package/node_modules/@pome-sh/twin-stripe/dist/src/serializers.js +257 -34
  264. package/node_modules/@pome-sh/twin-stripe/dist/src/serializers.js.map +1 -1
  265. package/node_modules/@pome-sh/twin-stripe/dist/src/server.js +7 -6
  266. package/node_modules/@pome-sh/twin-stripe/dist/src/server.js.map +1 -1
  267. package/node_modules/@pome-sh/twin-stripe/dist/src/tools.d.ts +107 -5
  268. package/node_modules/@pome-sh/twin-stripe/dist/src/tools.js +139 -6
  269. package/node_modules/@pome-sh/twin-stripe/dist/src/tools.js.map +1 -1
  270. package/node_modules/@pome-sh/twin-stripe/dist/src/types.d.ts +73 -0
  271. package/node_modules/@pome-sh/twin-stripe/dist/src/upstream-types.d.ts +8 -0
  272. package/node_modules/@pome-sh/twin-stripe/dist/src/x402.js +6 -1
  273. package/node_modules/@pome-sh/twin-stripe/dist/src/x402.js.map +1 -1
  274. package/node_modules/@pome-sh/twin-stripe/fidelity.inventory.json +425 -0
  275. package/node_modules/@pome-sh/twin-stripe/package.json +5 -4
  276. package/package.json +8 -8
  277. package/skills/pome-setup/SKILL.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../../src/domain/payment-intents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../../src/domain/payment-intents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { PaymentMethodRow, TwinStripeDatabase } from "../types.js";
2
+ export type CreatePaymentMethodInput = {
3
+ type?: unknown;
4
+ card?: {
5
+ number?: unknown;
6
+ exp_month?: unknown;
7
+ exp_year?: unknown;
8
+ cvc?: unknown;
9
+ } | null;
10
+ };
11
+ export type ListCustomerPaymentMethodsInput = {
12
+ limit?: number;
13
+ starting_after?: string;
14
+ ending_before?: string;
15
+ type?: string;
16
+ };
17
+ export declare class PaymentMethodsDomain {
18
+ readonly db: TwinStripeDatabase;
19
+ constructor(db: TwinStripeDatabase);
20
+ create(accountId: string, input: CreatePaymentMethodInput): PaymentMethodRow;
21
+ getById(accountId: string, id: string): PaymentMethodRow | null;
22
+ requireById(accountId: string, id: string): PaymentMethodRow;
23
+ /**
24
+ * Attach to a customer. Caller has already resolved the customer as live.
25
+ * Stripe rules: one customer per PM, and a previously-detached PM may
26
+ * never be reattached.
27
+ */
28
+ attach(accountId: string, id: string, customerId: string): PaymentMethodRow;
29
+ detach(accountId: string, id: string): PaymentMethodRow;
30
+ /** All PMs currently attached to a customer (no pagination — used by
31
+ * customer deletion to emit one detached event per PM). */
32
+ allAttachedToCustomer(accountId: string, customerId: string): PaymentMethodRow[];
33
+ listForCustomer(accountId: string, customerId: string, input: ListCustomerPaymentMethodsInput): {
34
+ rows: PaymentMethodRow[];
35
+ hasMore: boolean;
36
+ limit: number;
37
+ };
38
+ }
39
+ export type CardDecline = {
40
+ code: "card_declined" | "expired_card" | "incorrect_cvc";
41
+ decline_code: string;
42
+ message: string;
43
+ };
44
+ /** The decline a confirm attempt with this PM must produce, or null for a good card. */
45
+ export declare function declineForFingerprint(fingerprint: string): CardDecline | null;
@@ -0,0 +1,159 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ //
3
+ // Payment methods domain — F-732 (M5 card-on-file chain).
4
+ //
5
+ // Card-only in this milestone (card PIs land in F-731). The PAN is never
6
+ // stored: creation derives brand/last4/fingerprint and drops the number.
7
+ // Attach/detach carries Stripe's lifecycle rules — one customer per PM,
8
+ // and a detached PM can never be reattached.
9
+ import { createHash } from "node:crypto";
10
+ import { TwinError } from "../errors.js";
11
+ import { newId } from "../ids.js";
12
+ import { nowUnix } from "../util.js";
13
+ import { ensureStripeTables } from "./schema.js";
14
+ import { listPaginated } from "./payment-intents.js";
15
+ export class PaymentMethodsDomain {
16
+ db;
17
+ constructor(db) {
18
+ this.db = db;
19
+ ensureStripeTables(db);
20
+ }
21
+ create(accountId, input) {
22
+ if (typeof input.type !== "string" || input.type.length === 0) {
23
+ throw new TwinError("invalid_request_error", "parameter_missing", "Missing required param: type.", { param: "type", statusCode: 400 });
24
+ }
25
+ if (input.type !== "card") {
26
+ throw new TwinError("invalid_request_error", "parameter_invalid_string", `payment method type must be "card" for v1 of this twin (got '${input.type}').`, { param: "type", statusCode: 400 });
27
+ }
28
+ const card = input.card;
29
+ if (!card || typeof card !== "object") {
30
+ throw new TwinError("invalid_request_error", "parameter_missing", "Missing required param: card.", { param: "card", statusCode: 400 });
31
+ }
32
+ const number = typeof card.number === "string" ? card.number.replace(/[\s-]/g, "") : "";
33
+ if (!/^\d{12,19}$/.test(number) || !passesLuhn(number)) {
34
+ throw new TwinError("card_error", "incorrect_number", "Your card number is incorrect.", {
35
+ param: "card[number]",
36
+ statusCode: 402,
37
+ });
38
+ }
39
+ const expMonth = Number(card.exp_month);
40
+ if (!Number.isInteger(expMonth) || expMonth < 1 || expMonth > 12) {
41
+ throw new TwinError("card_error", "invalid_expiry_month", "Your card's expiration month is invalid.", { param: "card[exp_month]", statusCode: 402 });
42
+ }
43
+ const expYear = Number(card.exp_year);
44
+ const now = new Date(nowUnix() * 1000);
45
+ const currentYear = now.getUTCFullYear();
46
+ if (!Number.isInteger(expYear) || expYear < currentYear) {
47
+ throw new TwinError("card_error", "invalid_expiry_year", "Your card's expiration year is invalid.", { param: "card[exp_year]", statusCode: 402 });
48
+ }
49
+ // Cards expire at end-of-month: the current month is still valid, a past
50
+ // month of the current year is not.
51
+ if (expYear === currentYear && expMonth < now.getUTCMonth() + 1) {
52
+ throw new TwinError("card_error", "invalid_expiry_month", "Your card's expiration month is invalid.", { param: "card[exp_month]", statusCode: 402 });
53
+ }
54
+ const id = newId("payment_method");
55
+ this.db
56
+ .prepare(`INSERT INTO payment_methods (
57
+ id, account_id, type, card_brand, card_last4, card_exp_month,
58
+ card_exp_year, card_fingerprint, customer_id, detached, created
59
+ ) VALUES (?, ?, 'card', ?, ?, ?, ?, ?, NULL, 0, ?)`)
60
+ .run(id, accountId, brandFromNumber(number), number.slice(-4), expMonth, expYear,
61
+ // Stable per PAN, like Stripe's card fingerprint — but derived, so
62
+ // the PAN itself is never persisted anywhere.
63
+ fingerprintOf(number), nowUnix());
64
+ return this.requireById(accountId, id);
65
+ }
66
+ getById(accountId, id) {
67
+ return (this.db
68
+ .prepare("SELECT * FROM payment_methods WHERE id = ? AND account_id = ?")
69
+ .get(id, accountId) ?? null);
70
+ }
71
+ requireById(accountId, id) {
72
+ const row = this.getById(accountId, id);
73
+ if (!row) {
74
+ throw new TwinError("invalid_request_error", "resource_missing", `No such payment_method: '${id}'.`, { param: "payment_method", statusCode: 404 });
75
+ }
76
+ return row;
77
+ }
78
+ /**
79
+ * Attach to a customer. Caller has already resolved the customer as live.
80
+ * Stripe rules: one customer per PM, and a previously-detached PM may
81
+ * never be reattached.
82
+ */
83
+ attach(accountId, id, customerId) {
84
+ const pm = this.requireById(accountId, id);
85
+ if (pm.customer_id) {
86
+ throw new TwinError("invalid_request_error", "payment_method_already_attached", "This PaymentMethod has already been attached to a customer.", { param: "payment_method", statusCode: 400 });
87
+ }
88
+ if (pm.detached) {
89
+ throw new TwinError("invalid_request_error", "payment_method_previously_detached", "A payment method that has been previously detached from a customer may not be reattached.", { param: "payment_method", statusCode: 400 });
90
+ }
91
+ this.db
92
+ .prepare("UPDATE payment_methods SET customer_id = ? WHERE id = ? AND account_id = ?")
93
+ .run(customerId, id, accountId);
94
+ return this.requireById(accountId, id);
95
+ }
96
+ detach(accountId, id) {
97
+ const pm = this.requireById(accountId, id);
98
+ if (!pm.customer_id) {
99
+ throw new TwinError("invalid_request_error", "payment_method_not_attached", "The payment method you provided is not attached to a customer.", { param: "payment_method", statusCode: 400 });
100
+ }
101
+ this.db
102
+ .prepare("UPDATE payment_methods SET customer_id = NULL, detached = 1 WHERE id = ? AND account_id = ?")
103
+ .run(id, accountId);
104
+ return this.requireById(accountId, id);
105
+ }
106
+ /** All PMs currently attached to a customer (no pagination — used by
107
+ * customer deletion to emit one detached event per PM). */
108
+ allAttachedToCustomer(accountId, customerId) {
109
+ return this.db
110
+ .prepare("SELECT * FROM payment_methods WHERE customer_id = ? AND account_id = ?")
111
+ .all(customerId, accountId);
112
+ }
113
+ listForCustomer(accountId, customerId, input) {
114
+ return listPaginated(this.db, "payment_methods", accountId, input, [
115
+ { sql: "customer_id = ?", args: [customerId] },
116
+ ]);
117
+ }
118
+ }
119
+ const MAGIC_DECLINES = [
120
+ ["4000000000000002", { code: "card_declined", decline_code: "generic_decline", message: "Your card was declined." }],
121
+ ["4000000000009995", { code: "card_declined", decline_code: "insufficient_funds", message: "Your card has insufficient funds." }],
122
+ ["4000000000000069", { code: "expired_card", decline_code: "expired_card", message: "Your card has expired." }],
123
+ ["4000000000000127", { code: "incorrect_cvc", decline_code: "incorrect_cvc", message: "Your card's security code is incorrect." }],
124
+ ];
125
+ const DECLINE_BY_FINGERPRINT = new Map(MAGIC_DECLINES.map(([pan, decline]) => [fingerprintOf(pan), decline]));
126
+ function fingerprintOf(number) {
127
+ return createHash("sha256").update(number).digest("hex").slice(0, 16);
128
+ }
129
+ /** The decline a confirm attempt with this PM must produce, or null for a good card. */
130
+ export function declineForFingerprint(fingerprint) {
131
+ return DECLINE_BY_FINGERPRINT.get(fingerprint) ?? null;
132
+ }
133
+ function passesLuhn(number) {
134
+ let sum = 0;
135
+ let double = false;
136
+ for (let i = number.length - 1; i >= 0; i--) {
137
+ let digit = number.charCodeAt(i) - 48;
138
+ if (double) {
139
+ digit *= 2;
140
+ if (digit > 9)
141
+ digit -= 9;
142
+ }
143
+ sum += digit;
144
+ double = !double;
145
+ }
146
+ return sum % 10 === 0;
147
+ }
148
+ function brandFromNumber(number) {
149
+ if (/^4/.test(number))
150
+ return "visa";
151
+ if (/^(5[1-5]|2[2-7])/.test(number))
152
+ return "mastercard";
153
+ if (/^3[47]/.test(number))
154
+ return "amex";
155
+ if (/^6(011|5)/.test(number))
156
+ return "discover";
157
+ return "unknown";
158
+ }
159
+ //# sourceMappingURL=payment-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-methods.js","sourceRoot":"","sources":["../../../src/domain/payment-methods.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,12 @@ export declare class RefundsDomain {
31
31
  * emit the recorder `state_delta`.
32
32
  */
33
33
  create(accountId: string, input: CreateRefundInput): CreateRefundResult;
34
+ /**
35
+ * Backfill the ledger link after StripeDomain mints the refund's balance
36
+ * transaction (the txn needs the refund row's id/amount first, so the two
37
+ * inserts can't be reordered). Runs inside the coordinator's transaction.
38
+ */
39
+ linkBalanceTransaction(accountId: string, id: string, balanceTransactionId: string): RefundRow;
34
40
  getById(accountId: string, id: string): RefundRow | null;
35
41
  requireById(accountId: string, id: string): RefundRow;
36
42
  list(accountId: string, input: ListRefundsInput): {
@@ -35,6 +35,11 @@ export class RefundsDomain {
35
35
  }
36
36
  const tx = this.db.transaction(() => {
37
37
  const charge = this.requireCharge(accountId, input.charge);
38
+ // F-731 mints `failed` charges for declined card attempts; real
39
+ // Stripe refuses to refund a charge that never captured.
40
+ if (charge.status !== "succeeded") {
41
+ throw new TwinError("invalid_request_error", "charge_not_refundable", `This charge (${charge.id}) has a status of '${charge.status}' and cannot be refunded.`, { param: "charge", statusCode: 400 });
42
+ }
38
43
  const refundable = charge.amount - charge.amount_refunded;
39
44
  const amount = input.amount ?? refundable;
40
45
  if (amount <= 0 || amount > refundable) {
@@ -59,6 +64,17 @@ export class RefundsDomain {
59
64
  });
60
65
  return tx();
61
66
  }
67
+ /**
68
+ * Backfill the ledger link after StripeDomain mints the refund's balance
69
+ * transaction (the txn needs the refund row's id/amount first, so the two
70
+ * inserts can't be reordered). Runs inside the coordinator's transaction.
71
+ */
72
+ linkBalanceTransaction(accountId, id, balanceTransactionId) {
73
+ this.db
74
+ .prepare("UPDATE refunds SET balance_transaction_id = ? WHERE id = ? AND account_id = ?")
75
+ .run(balanceTransactionId, id, accountId);
76
+ return this.requireById(accountId, id);
77
+ }
62
78
  getById(accountId, id) {
63
79
  return (this.db
64
80
  .prepare("SELECT * FROM refunds WHERE id = ? AND account_id = ?")
@@ -1 +1 @@
1
- {"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../../src/domain/refunds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../../src/domain/refunds.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ import type { TwinStripeDatabase } from "../types.js";
4
4
  * (test helpers, AGENT-A's `db.ts` migration, etc.).
5
5
  */
6
6
  export declare function ensureStripeTables(db: TwinStripeDatabase): void;
7
+ export declare function ensureMigratedColumns(db: TwinStripeDatabase): void;
7
8
  /** Drop-and-recreate Stripe-domain tables. Used by `/admin/reset`. */
8
9
  export declare function resetStripeTables(db: TwinStripeDatabase): void;
@@ -26,7 +26,10 @@ CREATE TABLE IF NOT EXISTS payment_intents (
26
26
  created INTEGER NOT NULL,
27
27
  updated INTEGER NOT NULL,
28
28
  canceled_at INTEGER,
29
- captured_at INTEGER
29
+ captured_at INTEGER,
30
+ payment_method_id TEXT,
31
+ customer_id TEXT,
32
+ last_payment_error_json TEXT
30
33
  );
31
34
 
32
35
  CREATE INDEX IF NOT EXISTS idx_payment_intents_created ON payment_intents(created);
@@ -45,6 +48,12 @@ CREATE TABLE IF NOT EXISTS charges (
45
48
  captured INTEGER NOT NULL DEFAULT 0,
46
49
  currency TEXT NOT NULL,
47
50
  created INTEGER NOT NULL,
51
+ payment_method_id TEXT,
52
+ payment_method_details_json TEXT,
53
+ failure_code TEXT,
54
+ failure_decline_code TEXT,
55
+ failure_message TEXT,
56
+ customer_id TEXT,
48
57
  FOREIGN KEY (payment_intent_id) REFERENCES payment_intents(id) ON DELETE CASCADE
49
58
  );
50
59
 
@@ -95,6 +104,7 @@ CREATE TABLE IF NOT EXISTS refunds (
95
104
  currency TEXT NOT NULL,
96
105
  status TEXT NOT NULL,
97
106
  reason TEXT,
107
+ balance_transaction_id TEXT,
98
108
  idempotency_key TEXT,
99
109
  created INTEGER NOT NULL,
100
110
  FOREIGN KEY (charge_id) REFERENCES charges(id) ON DELETE CASCADE
@@ -104,14 +114,110 @@ CREATE INDEX IF NOT EXISTS idx_refunds_charge ON refunds(charge_id);
104
114
  CREATE INDEX IF NOT EXISTS idx_refunds_payment_intent ON refunds(payment_intent_id);
105
115
  CREATE INDEX IF NOT EXISTS idx_refunds_created ON refunds(created);
106
116
  CREATE INDEX IF NOT EXISTS idx_refunds_account_id ON refunds(account_id);
117
+
118
+ CREATE TABLE IF NOT EXISTS customers (
119
+ id TEXT PRIMARY KEY,
120
+ account_id TEXT NOT NULL,
121
+ name TEXT,
122
+ email TEXT,
123
+ description TEXT,
124
+ phone TEXT,
125
+ metadata_json TEXT NOT NULL DEFAULT '{}',
126
+ deleted INTEGER NOT NULL DEFAULT 0,
127
+ created INTEGER NOT NULL
128
+ );
129
+
130
+ CREATE INDEX IF NOT EXISTS idx_customers_created ON customers(created);
131
+ CREATE INDEX IF NOT EXISTS idx_customers_email ON customers(email);
132
+ CREATE INDEX IF NOT EXISTS idx_customers_account_id ON customers(account_id);
133
+
134
+ CREATE TABLE IF NOT EXISTS payment_methods (
135
+ id TEXT PRIMARY KEY,
136
+ account_id TEXT NOT NULL,
137
+ type TEXT NOT NULL,
138
+ card_brand TEXT NOT NULL,
139
+ card_last4 TEXT NOT NULL,
140
+ card_exp_month INTEGER NOT NULL,
141
+ card_exp_year INTEGER NOT NULL,
142
+ card_fingerprint TEXT NOT NULL,
143
+ customer_id TEXT,
144
+ detached INTEGER NOT NULL DEFAULT 0,
145
+ created INTEGER NOT NULL
146
+ );
147
+
148
+ CREATE INDEX IF NOT EXISTS idx_payment_methods_customer ON payment_methods(customer_id);
149
+ CREATE INDEX IF NOT EXISTS idx_payment_methods_created ON payment_methods(created);
150
+ CREATE INDEX IF NOT EXISTS idx_payment_methods_account_id ON payment_methods(account_id);
151
+
152
+ -- F-734 billing tables (warm surfaces, shape tier): plain stored rows served
153
+ -- back in Stripe shape. No invoices table — invoices are reads-only and
154
+ -- nothing in the twin mints one (loud shape divergence, see FIDELITY.md).
155
+
156
+ CREATE TABLE IF NOT EXISTS products (
157
+ id TEXT PRIMARY KEY,
158
+ account_id TEXT NOT NULL,
159
+ name TEXT NOT NULL,
160
+ description TEXT,
161
+ active INTEGER NOT NULL DEFAULT 1,
162
+ metadata_json TEXT NOT NULL DEFAULT '{}',
163
+ created INTEGER NOT NULL,
164
+ updated INTEGER NOT NULL
165
+ );
166
+
167
+ CREATE INDEX IF NOT EXISTS idx_products_created ON products(created);
168
+ CREATE INDEX IF NOT EXISTS idx_products_account_id ON products(account_id);
169
+
170
+ CREATE TABLE IF NOT EXISTS prices (
171
+ id TEXT PRIMARY KEY,
172
+ account_id TEXT NOT NULL,
173
+ product_id TEXT NOT NULL,
174
+ currency TEXT NOT NULL,
175
+ unit_amount INTEGER,
176
+ recurring_interval TEXT,
177
+ recurring_interval_count INTEGER,
178
+ active INTEGER NOT NULL DEFAULT 1,
179
+ nickname TEXT,
180
+ lookup_key TEXT,
181
+ metadata_json TEXT NOT NULL DEFAULT '{}',
182
+ created INTEGER NOT NULL
183
+ );
184
+
185
+ CREATE INDEX IF NOT EXISTS idx_prices_created ON prices(created);
186
+ CREATE INDEX IF NOT EXISTS idx_prices_product ON prices(product_id);
187
+ CREATE INDEX IF NOT EXISTS idx_prices_account_id ON prices(account_id);
188
+
189
+ CREATE TABLE IF NOT EXISTS subscriptions (
190
+ id TEXT PRIMARY KEY,
191
+ account_id TEXT NOT NULL,
192
+ customer_id TEXT NOT NULL,
193
+ status TEXT NOT NULL,
194
+ items_json TEXT NOT NULL,
195
+ cancel_at_period_end INTEGER NOT NULL DEFAULT 0,
196
+ canceled_at INTEGER,
197
+ ended_at INTEGER,
198
+ metadata_json TEXT NOT NULL DEFAULT '{}',
199
+ created INTEGER NOT NULL
200
+ );
201
+
202
+ CREATE INDEX IF NOT EXISTS idx_subscriptions_created ON subscriptions(created);
203
+ CREATE INDEX IF NOT EXISTS idx_subscriptions_customer ON subscriptions(customer_id);
204
+ CREATE INDEX IF NOT EXISTS idx_subscriptions_account_id ON subscriptions(account_id);
107
205
  `;
108
206
  // Delete order matters for foreign-key cascades: refunds → charges → PIs.
207
+ // payment_methods reference customers by plain column (no FK), but clear
208
+ // them before customers anyway so a mid-reset read never sees an attached
209
+ // PM whose customer row is gone.
109
210
  const STRIPE_TABLES = [
110
211
  "refunds",
111
212
  "events",
112
213
  "balance_transactions",
113
214
  "charges",
114
215
  "payment_intents",
216
+ "payment_methods",
217
+ "customers",
218
+ "subscriptions",
219
+ "prices",
220
+ "products",
115
221
  ];
116
222
  /**
117
223
  * Ensure the Stripe domain tables exist. Idempotent. Call once per fresh DB
@@ -122,6 +228,43 @@ export function ensureStripeTables(db) {
122
228
  db.pragma("journal_mode = WAL");
123
229
  db.pragma("foreign_keys = ON");
124
230
  db.exec(STRIPE_TABLES_SQL);
231
+ ensureMigratedColumns(db);
232
+ }
233
+ // Columns added after a table first shipped. CREATE IF NOT EXISTS never
234
+ // alters an existing table, so a DB file minted earlier (STRIPE_CLONE_DB
235
+ // pointing at an old snapshot) needs the columns added in place.
236
+ // Idempotent; exported so db.ts's migrate() patches old files even without
237
+ // a domain constructor. F-731 added the card-mode columns; F-733 links
238
+ // refunds to their ledger entry.
239
+ const MIGRATED_COLUMNS = {
240
+ payment_intents: [
241
+ ["payment_method_id", "payment_method_id TEXT"],
242
+ ["customer_id", "customer_id TEXT"],
243
+ ["last_payment_error_json", "last_payment_error_json TEXT"],
244
+ ],
245
+ charges: [
246
+ ["payment_method_id", "payment_method_id TEXT"],
247
+ ["payment_method_details_json", "payment_method_details_json TEXT"],
248
+ ["failure_code", "failure_code TEXT"],
249
+ ["failure_decline_code", "failure_decline_code TEXT"],
250
+ ["failure_message", "failure_message TEXT"],
251
+ ["customer_id", "customer_id TEXT"],
252
+ ],
253
+ refunds: [["balance_transaction_id", "balance_transaction_id TEXT"]],
254
+ };
255
+ export function ensureMigratedColumns(db) {
256
+ for (const [table, columns] of Object.entries(MIGRATED_COLUMNS)) {
257
+ const existing = new Set(db.prepare(`SELECT name FROM pragma_table_info(?)`).all(table).map((row) => row.name));
258
+ // A table this migration knows about but the DB doesn't have yet is
259
+ // created later (db.ts's chassis migrate() runs before the domain DDL);
260
+ // its CREATE TABLE already carries the column.
261
+ if (existing.size === 0)
262
+ continue;
263
+ for (const [column, ddl] of columns) {
264
+ if (!existing.has(column))
265
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${ddl};`);
266
+ }
267
+ }
125
268
  }
126
269
  /** Drop-and-recreate Stripe-domain tables. Used by `/admin/reset`. */
127
270
  export function resetStripeTables(db) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/domain/schema.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,oDAAoD;AACpD,EAAE;AACF,oEAAoE;AACpE,4EAA4E;AAC5E,wEAAwE;AACxE,0EAA0E;AAC1E,EAAE;AACF,wEAAwE;AAIxE,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGzB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,aAAa,GAAG;IACpB,SAAS;IACT,QAAQ;IACR,sBAAsB;IACtB,SAAS;IACT,iBAAiB;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAsB;IACvD,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,EAAsB;IACtD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,EAAE,CAAC,IAAI,CAAC,eAAe,KAAK,GAAG,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/domain/schema.ts"],"names":[],"mappings":"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"}