@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
package/README.md CHANGED
@@ -15,16 +15,15 @@ Run `pome --help` (or `pome help <command>`) for the CLI reference, and
15
15
 
16
16
  ## Install
17
17
 
18
- Until the first npm release ships, install from the GitHub source checkout:
19
-
20
18
  ```bash
21
- git clone --depth 1 https://github.com/pome-sh/pome-twins.git
22
- cd pome-twins/cli
23
- npm install # installs deps + runs the `prepare` build
24
- npm install -g .
19
+ npm install -g @pome-sh/cli
25
20
  pome --help
26
21
  ```
27
22
 
23
+ Or run it without installing: `npx @pome-sh/cli <command>` — e.g.
24
+ `npx @pome-sh/cli twin start github` boots a local GitHub twin with nothing
25
+ but Node ≥ 24.
26
+
28
27
  ## Quickstart
29
28
 
30
29
  ```bash
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.1.0",
4
- "git_sha": "aa4ca816d3a90491953220fa5e2a3f67ab968a17",
5
- "build_time": "2026-07-10T13:24:30.193Z"
3
+ "version": "0.2.0",
4
+ "git_sha": "17b5b8731c3f6428580f76916d73f7328b3d3fcc",
5
+ "build_time": "2026-07-16T09:21:08.927Z"
6
6
  }
@@ -26,9 +26,10 @@ import { HostedOrchError, HostedUsageError, exitCodeFor, } from "../hosted/error
26
26
  import { redactJsonl, scoreFromFinalizeResponse, uploadRunBlobs, } from "../hosted/uploadAndFinalize.js";
27
27
  import { readLatestRun, toTwinHttpEvent } from "../recorder/artifacts.js";
28
28
  import { redactEvent, redactSecrets } from "../recorder/redaction.js";
29
- import { markerFor, outcomeOf, runScoreLine, scoreCountsSummary, scoreStatus, } from "../hosted/evalResultView.js";
29
+ import { criterionMarkerLabel, markerFor, outcomeOf, runScoreLine, scoreCountsSummary, scoreStatus, twinSkipSuffix, } from "../hosted/evalResultView.js";
30
30
  import { resolveCredentials } from "./credentials.js";
31
31
  import { normalizeConfigAgentSdk, readProjectConfig, } from "./project-config.js";
32
+ import { isLegacyEventRow } from "../types/shared.js";
32
33
  const EVAL_SESSION_FILE = "eval-session.json";
33
34
  // The eval command has no scenario file (and therefore no per-scenario
34
35
  // threshold); mirror `pome run`'s default binary gate.
@@ -248,15 +249,32 @@ export async function runEval(options) {
248
249
  });
249
250
  // Re-apply wrapping + redaction before anything leaves the machine.
250
251
  // events.jsonl and the state blobs are written pre-redacted (and
251
- // pre-wrapped) by artifacts.ts, but `pome eval` also accepts
252
- // hand-assembled dirs — redaction is idempotent, and toTwinHttpEvent
253
- // passes rows that already carry a `kind` through untouched, so this is
254
- // cheap insurance that exactly mirrors what the hosted runner uploads
255
- // (cloud's FDRS-398 schema gate rejects raw legacy rows).
252
+ // pre-wrapped) by artifacts.ts, but `pome eval` also accepts hand-assembled
253
+ // dirs — redaction is idempotent, so this is cheap insurance that mirrors
254
+ // what the hosted runner uploads (cloud's FDRS-398 schema gate rejects raw
255
+ // legacy rows).
256
+ //
257
+ // Only LEGACY rows (pre-FDRS-398 — no `kind` discriminator) get wrapped into
258
+ // a TwinHttpEvent. Rows that already carry a `kind` (any union member —
259
+ // LlmTurnEvent, ToolUseEvent, LlmCallEvent, …) are preserved as-is: routing
260
+ // them through toTwinHttpEvent re-wraps every non-TwinHttpEvent kind,
261
+ // clobbering `kind` to "TwinHttpEvent" and setting event_id to an absent
262
+ // `request_id` (the pre-F-766 corruption bug).
256
263
  const eventsJsonl = artifacts.eventsJsonl
257
264
  .split("\n")
258
265
  .filter((line) => line.trim().length > 0)
259
- .map((line) => JSON.stringify(redactEvent(toTwinHttpEvent(JSON.parse(line)))))
266
+ .map((line) => {
267
+ const parsed = JSON.parse(line);
268
+ // Already-kinded rows pass through unchanged (redacted). Only legacy
269
+ // rows are wrapped — and we do NOT re-validate kinded rows here: the
270
+ // original path never did, cloud's schema gate is the arbiter, and
271
+ // strict parsing would reject the intentionally-terse hand-assembled
272
+ // dirs `pome eval` also accepts.
273
+ const event = isLegacyEventRow(parsed)
274
+ ? toTwinHttpEvent(parsed)
275
+ : parsed;
276
+ return JSON.stringify(redactEvent(event));
277
+ })
260
278
  .join("\n") + "\n";
261
279
  const blobs = {
262
280
  eventsJsonl,
@@ -399,7 +417,7 @@ export async function runEvalCommand(runDirArg, opts) {
399
417
  if (result.score.results.length > 0) {
400
418
  console.error(` criteria: ${scoreCountsSummary(result.score)}`);
401
419
  for (const criterionResult of result.score.results) {
402
- console.error(` ${markerFor(outcomeOf(criterionResult))} [${criterionResult.criterion.type}] ${criterionResult.criterion.text}`);
420
+ console.error(` ${markerFor(outcomeOf(criterionResult))} ${criterionMarkerLabel(criterionResult.criterion)} ${criterionResult.criterion.text}${twinSkipSuffix(criterionResult)}`);
403
421
  }
404
422
  }
405
423
  if (result.reusedSession) {
@@ -7,9 +7,6 @@ export interface ScaffoldResult {
7
7
  postInstallHint: string;
8
8
  }
9
9
  export declare function writeSdkScaffold(sdk: SupportedSdk): Promise<ScaffoldResult>;
10
- export declare class ClaudeSdkDeferredError extends Error {
11
- constructor();
12
- }
13
10
  export declare class ClaudeManagedDeferredError extends Error {
14
11
  constructor();
15
12
  }
@@ -4,44 +4,137 @@
4
4
  // a minimal-but-runnable starter set so a Claude Agent SDK / OpenAI Agents /
5
5
  // other-framework user reaches a green hosted run in under five minutes.
6
6
  //
7
- // Both `claude` and `claude-managed` are deferral stubs right now:
8
- // - `claude` scaffolds an import from `@pome-sh/adapter-claude-sdk`, which is
9
- // held back from npm until OSS Launch Stage 1. Without the package, the
10
- // scaffolded file dies at `pome run` with "Cannot find module …". Defer
11
- // the flag until the publish unblocks it.
12
- // - `claude-managed` is waiting on Anthropic's Managed Agents API (v2).
13
- // Add new SDKs by appending a writer in SCAFFOLDS below.
14
- //
15
- // See the Claude Agent SDK integration plan (internal docs).
7
+ // `claude-managed` remains deferred (waiting on Anthropic's Managed Agents API).
8
+ // Add new SDKs by appending a case in writeSdkScaffold below.
9
+ import { mkdir, writeFile } from "node:fs/promises";
10
+ import { dirname, join } from "node:path";
16
11
  export const SUPPORTED_SDKS = ["claude", "claude-managed"];
12
+ const CLAUDE_SDK_AGENT_RELATIVE = "examples/agents/claude-sdk-agent.ts";
13
+ const CLAUDE_SDK_AGENT_SOURCE = `\
14
+ // SPDX-License-Identifier: Apache-2.0
15
+ //
16
+ // Scaffolded by \`pome init --sdk claude\`. Minimal Claude Agent SDK starter
17
+ // wired through @pome-sh/adapter-claude-sdk so \`pome run\` captures adapter
18
+ // signals. Swap the tool body for your own agent logic.
19
+
20
+ import { createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
21
+ import { query, tool, withPome } from "@pome-sh/adapter-claude-sdk";
22
+ import { z } from "zod";
23
+
24
+ withPome();
25
+
26
+ const restUrl = process.env.POME_GITHUB_REST_URL;
27
+ const authToken = process.env.POME_AUTH_TOKEN;
28
+ const task =
29
+ process.env.POME_TASK?.trim() ||
30
+ "List open issues in acme/api and summarize their titles.";
31
+
32
+ if (!restUrl) {
33
+ throw new Error(
34
+ "POME_GITHUB_REST_URL is required (injected by \`pome run\`, or set it when driving a twin yourself).",
35
+ );
36
+ }
37
+
38
+ if (process.env.POME_PREFLIGHT === "1") {
39
+ const res = await fetch(\`\${restUrl.replace(/\\/+$/, "")}/rate_limit\`, {
40
+ headers: {
41
+ accept: "application/vnd.github+json",
42
+ ...(authToken ? { authorization: \`Bearer \${authToken}\` } : {}),
43
+ },
44
+ });
45
+ if (!res.ok) {
46
+ throw new Error(\`preflight failed: HTTP \${res.status}\`);
47
+ }
48
+ console.log("preflight ok");
49
+ process.exit(0);
50
+ }
51
+
52
+ const listOpenIssues = tool(
53
+ "list_open_issues",
54
+ "List open issues on the GitHub twin for owner/repo.",
55
+ {
56
+ owner: z.string(),
57
+ repo: z.string(),
58
+ },
59
+ async ({ owner, repo }) => {
60
+ const res = await fetch(
61
+ \`\${restUrl.replace(/\\/+$/, "")}/repos/\${owner}/\${repo}/issues?state=open\`,
62
+ {
63
+ headers: {
64
+ accept: "application/vnd.github+json",
65
+ ...(authToken ? { authorization: \`Bearer \${authToken}\` } : {}),
66
+ },
67
+ },
68
+ );
69
+ const body = await res.text();
70
+ if (!res.ok) {
71
+ return {
72
+ content: [{ type: "text" as const, text: \`HTTP \${res.status}: \${body}\` }],
73
+ isError: true,
74
+ };
75
+ }
76
+ return { content: [{ type: "text" as const, text: body }] };
77
+ },
78
+ );
79
+
80
+ const server = createSdkMcpServer({
81
+ name: "github-twin",
82
+ version: "0.1.0",
83
+ tools: [listOpenIssues],
84
+ });
85
+
86
+ for await (const message of query({
87
+ prompt: task,
88
+ options: {
89
+ permissionMode: "bypassPermissions",
90
+ maxTurns: 10,
91
+ allowedTools: ["list_open_issues"],
92
+ mcpServers: {
93
+ "github-twin": {
94
+ type: "sdk",
95
+ name: "github-twin",
96
+ instance: server.instance,
97
+ },
98
+ },
99
+ },
100
+ })) {
101
+ if (message.type === "result" && message.subtype === "success" && message.result) {
102
+ console.log(message.result);
103
+ }
104
+ }
105
+ `;
17
106
  export async function writeSdkScaffold(sdk) {
18
107
  switch (sdk) {
19
108
  case "claude":
20
- // Deferred — the scaffolded file imports `@pome-sh/adapter-claude-sdk`,
21
- // which is held back from npm until OSS Launch Stage 1. Until then the
22
- // scaffold dies at runtime with "Cannot find module …". Recommend the
23
- // bundled scripted starter (`pome init` without --sdk) for now.
24
- throw new ClaudeSdkDeferredError();
109
+ return writeClaudeSdkScaffold();
25
110
  case "claude-managed":
26
- // Deferred — surface reserved so v2 doesn't churn the flag.
27
111
  throw new ClaudeManagedDeferredError();
28
112
  }
29
113
  }
30
- export class ClaudeSdkDeferredError extends Error {
31
- constructor() {
32
- super("Claude Agent SDK scaffold is gated on the npm publish of " +
33
- "`@pome-sh/adapter-claude-sdk`, tracked under OSS Launch Stage 1. " +
34
- "Run `pome init` (without --sdk) for the bundled scripted starter, " +
35
- "or write your own agent against POME_TASK / POME_GITHUB_REST_URL.");
36
- this.name = "ClaudeSdkDeferredError";
37
- }
114
+ async function writeClaudeSdkScaffold() {
115
+ const path = join(process.cwd(), CLAUDE_SDK_AGENT_RELATIVE);
116
+ await mkdir(dirname(path), { recursive: true });
117
+ await writeFile(path, CLAUDE_SDK_AGENT_SOURCE, "utf8");
118
+ return {
119
+ agentSdkValue: "claude",
120
+ agentCommand: `npx tsx ${CLAUDE_SDK_AGENT_RELATIVE}`,
121
+ exampleAgentRelativePath: CLAUDE_SDK_AGENT_RELATIVE,
122
+ postInstallHint: "Next steps:\n" +
123
+ " 1. npm install @pome-sh/adapter-claude-sdk @anthropic-ai/claude-agent-sdk zod\n" +
124
+ " 2. pome login\n" +
125
+ " 3. pome register agent <name>\n" +
126
+ " 4. pome run scenarios/01-bug-happy-path.md\n" +
127
+ "\n" +
128
+ "See `pome docs getting-started` for a narrative walkthrough.",
129
+ };
38
130
  }
39
131
  export class ClaudeManagedDeferredError extends Error {
40
132
  constructor() {
41
133
  super("Claude Managed Agent is not yet supported — three blockers " +
42
134
  "(no injection point inside Anthropic-hosted runtime, no sidechannel " +
43
135
  "for adapter signals, Managed Agents API still moving). Follow the " +
44
- "tracking issue for v2 timing. For now, use `pome init` (without --sdk).");
136
+ "tracking issue for v2 timing. For now, use `pome init` (without --sdk) " +
137
+ "or `pome init --sdk claude`.");
45
138
  this.name = "ClaudeManagedDeferredError";
46
139
  }
47
140
  }
@@ -1,13 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { serve } from "@hono/node-server";
4
3
  import { Command } from "commander";
5
- import { randomBytes } from "node:crypto";
6
4
  import { existsSync, readFileSync, realpathSync } from "node:fs";
7
- import { cp, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
5
+ import { cp, mkdir, readdir, readFile, rm } from "node:fs/promises";
8
6
  import { dirname, join, relative, resolve } from "node:path";
9
7
  import { fileURLToPath } from "node:url";
10
- import { sign } from "hono/jwt";
11
8
  import { readLatestRun, readMetaSummary, } from "../recorder/artifacts.js";
12
9
  import { LEGACY_EVENTS_MESSAGE, computeTraceHealth, readEventsJsonl, renderEvents, renderTraceHealth, } from "../recorder/inspect.js";
13
10
  import { runScenario } from "../runner/runScenario.js";
@@ -25,12 +22,12 @@ import { runSkillsInstall } from "./skills.js";
25
22
  import { copyAnnounceLine, ensureDefaultTask, runYoursFrameLines, trialsPinFallbackLine, } from "./default-task.js";
26
23
  import { findTwin, runnableScenarios, } from "./scenarios-catalog.js";
27
24
  import { friendlyHostedError, runSessionCreate, runSessionList, runSessionStop, } from "./session.js";
28
- import { runRegisterAgent } from "./register.js";
25
+ import { normalizeRegisterTwins, runRegisterAgent } from "./register.js";
29
26
  import { resolvePackageRoot } from "./resolve-package-root.js";
30
- import { ClaudeManagedDeferredError, ClaudeSdkDeferredError, writeSdkScaffold, } from "./init-sdk.js";
27
+ import { ClaudeManagedDeferredError, writeSdkScaffold, } from "./init-sdk.js";
31
28
  import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, } from "./defaults.js";
32
29
  import { CONFIG_FILE, normalizeConfigAgentCommand, readProjectConfig, writeProjectConfig, } from "./project-config.js";
33
- import { createGitHubCloneApp, openGitHubCloneDatabase, seedGitHubCloneDatabase } from "../twin/githubCloneAdapter.js";
30
+ import { createGitHubCloneApp } from "../twin/githubCloneAdapter.js";
34
31
  import { buildFixPrompt, buildGroupFixPrompt, } from "../fix-prompt/index.js";
35
32
  import { discoverRunSet, loadTrialEvents, } from "../hosted/evalResultCache.js";
36
33
  import { parseScenarioFile } from "../scenario/parseScenario.js";
@@ -83,15 +80,6 @@ export function createProgram() {
83
80
  process.exitCode = 2;
84
81
  return;
85
82
  }
86
- if (sdk === "claude") {
87
- // Deferred until @pome-sh/adapter-claude-sdk publishes to npm
88
- // (OSS Launch Stage 1). The scaffolded file would import a package
89
- // that 404s on `npm install`. Mirror the claude-managed short-circuit:
90
- // bail before touching the filesystem.
91
- console.error(new ClaudeSdkDeferredError().message);
92
- process.exitCode = 2;
93
- return;
94
- }
95
83
  await mkdir("scenarios", { recursive: true });
96
84
  await mkdir("examples/agents", { recursive: true });
97
85
  await mkdir("runs", { recursive: true });
@@ -106,29 +94,19 @@ export function createProgram() {
106
94
  " 3. pome run scenarios/01-bug-happy-path.md\n" +
107
95
  "\n" +
108
96
  "Optional follow-ups:\n" +
109
- " - pome init --sdk claude # scaffold a Claude Agent SDK starter (gated on @pome-sh/adapter-claude-sdk npm publish — see Stage 1)\n" +
97
+ " - pome init --sdk claude # scaffold a Claude Agent SDK starter\n" +
110
98
  " - pome scenarios stripe --copy # add Stripe payment scenarios when needed\n" +
111
99
  "\n" +
112
100
  "See `pome docs getting-started` for a narrative walkthrough.";
113
101
  if (sdk) {
114
- try {
115
- const scaffold = await writeSdkScaffold(sdk);
116
- agentBlock = {
117
- sdk: scaffold.agentSdkValue,
118
- command: scaffold.agentCommand,
119
- };
120
- postInitMessage =
121
- `Pome initialized with --sdk ${sdk}. Scaffolded ${scaffold.exampleAgentRelativePath}.\n` +
122
- scaffold.postInstallHint;
123
- }
124
- catch (err) {
125
- if (err instanceof ClaudeManagedDeferredError) {
126
- console.error(err.message);
127
- process.exitCode = 2;
128
- return;
129
- }
130
- throw err;
131
- }
102
+ const scaffold = await writeSdkScaffold(sdk);
103
+ agentBlock = {
104
+ sdk: scaffold.agentSdkValue,
105
+ command: scaffold.agentCommand,
106
+ };
107
+ postInitMessage =
108
+ `Pome initialized with --sdk ${sdk}. Scaffolded ${scaffold.exampleAgentRelativePath}.\n` +
109
+ scaffold.postInstallHint;
132
110
  }
133
111
  const existingConfig = await readProjectConfig(process.cwd());
134
112
  if (!existingConfig) {
@@ -248,6 +226,7 @@ export function createProgram() {
248
226
  .argument("<name>", "Human-readable agent name (e.g. \"triage-bot\")")
249
227
  .option("--api-url <url>", "Control-plane URL", process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL)
250
228
  .option("--force", "Overwrite an existing agentId in pome.config.json", false)
229
+ .option("--twins <list>", "Comma-separated services this agent may exercise (e.g. github,slack). Default: the cloud's default enablement.")
251
230
  .description("Create a cloud agent under the current team and write agentId to pome.config.json")
252
231
  .action(async (name, opts) => {
253
232
  try {
@@ -255,6 +234,7 @@ export function createProgram() {
255
234
  apiBaseUrl: opts.apiUrl,
256
235
  name,
257
236
  force: opts.force,
237
+ twins: normalizeRegisterTwins(opts.twins),
258
238
  });
259
239
  }
260
240
  catch (err) {
@@ -267,8 +247,8 @@ export function createProgram() {
267
247
  .description("Hosted sandbox sessions (same API as the dashboard Twins page — requires login)");
268
248
  session
269
249
  .command("create")
270
- .description("Create a hosted sandbox session for a twin and print its connection info")
271
- .requiredOption("--twin <name>", "github | stripe")
250
+ .description("Create a hosted sandbox session for one or more twins and print its connection info")
251
+ .requiredOption("--twin <name>", "github | stripe | slack. Repeat the flag for a multi-twin session (e.g. --twin github --twin slack).", (value, previous = []) => [...previous, value])
272
252
  .option("--api-url <url>", "Control-plane URL", process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL)
273
253
  .option("--show-secrets", "Deprecated: secrets are never printed; use --secrets-file", false)
274
254
  .option("--secrets-file <path>", "Write shell exports containing session secrets to a local file with mode 0600")
@@ -283,7 +263,7 @@ export function createProgram() {
283
263
  }
284
264
  await runSessionCreate({
285
265
  apiBaseUrl: opts.apiUrl,
286
- twin: opts.twin,
266
+ twins: opts.twin,
287
267
  showSecrets: opts.showSecrets,
288
268
  format: format,
289
269
  secretsFile: opts.secretsFile,
@@ -769,38 +749,12 @@ export function createProgram() {
769
749
  const twin = program.command("twin").description("Manage local twins");
770
750
  twin
771
751
  .command("start")
772
- .argument("<name>", "Twin name")
773
- .option("--port <port>", "Port to bind", "3333")
774
- .description("Start a standalone twin")
752
+ .argument("<name>", "Twin name (github | slack | stripe)")
753
+ .option("--port <port>", "Port to bind (default: $PORT or 3333)")
754
+ .description("Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)")
775
755
  .action(async (name, options) => {
776
- if (name !== "github")
777
- throw new Error("Only the github twin exists in the MSP.");
778
- await mkdir(".pome", { recursive: true });
779
- const db = await openGitHubCloneDatabase(".pome/github.db");
780
- await seedGitHubCloneDatabase(db);
781
- const port = Number(options.port);
782
- const app = (await createGitHubCloneApp({ db, runId: "standalone" }));
783
- const baseUrl = `http://127.0.0.1:${port}`;
784
- const restUrl = `${baseUrl}/s/standalone`;
785
- const mcpUrl = `${restUrl}/mcp`;
786
- const authSecret = process.env.TWIN_AUTH_SECRET ?? randomBytes(32).toString("hex");
787
- process.env.TWIN_AUTH_SECRET = authSecret;
788
- const token = await sign({ sid: "standalone", team_id: "tm_local", exp: Math.floor(Date.now() / 1000) + 60 * 60 * 24 },
789
- // The secret was just pinned into the env above; the ported twin no
790
- // longer exports resolveAuthSecret (engine-owned, F-682).
791
- authSecret);
792
- serve({ fetch: app.fetch, port, hostname: "127.0.0.1" });
793
- await writeFile(".pome/twin-status.json", JSON.stringify({ name, url: restUrl, rest_url: restUrl, mcp_url: mcpUrl, auth_token: token }, null, 2));
794
- console.log(`Pome ${name} twin listening at ${restUrl}`);
795
- console.log(`POME_GITHUB_REST_URL=${restUrl}`);
796
- console.log(`POME_GITHUB_MCP_URL=${mcpUrl}`);
797
- console.log(`POME_AUTH_TOKEN=${token}`);
798
- // F28 — every `/s/<sid>/*` endpoint requires a Bearer JWT, including
799
- // /s/standalone/healthz. New users curling the printed `${restUrl}`
800
- // get HTTP 401 and assume the twin is broken. The unauth liveness
801
- // probe lives at the root `/healthz`. Print the curl command so
802
- // copy-paste debugging works without a JWT.
803
- console.log(`Health check (no auth): curl ${baseUrl}/healthz`);
756
+ const { runTwinStartCommand } = await import("../twin/twinStart.js");
757
+ await runTwinStartCommand(name, options);
804
758
  });
805
759
  twin
806
760
  .command("reset")
@@ -3,7 +3,16 @@ interface RegisterAgentOptions {
3
3
  apiBaseUrl: string;
4
4
  name: string;
5
5
  force: boolean;
6
+ /** Multi-twin (M3): the services this agent is allowed to exercise. Absent =
7
+ * the server's default enablement. Validated against MOUNTED_TWINS locally
8
+ * for a friendly error before the round-trip. */
9
+ twins?: string[];
6
10
  }
11
+ /** Normalize a `--twins github,slack` comma list to a validated twin array.
12
+ * Validates against MOUNTED_TWINS locally so a typo fails with a friendly
13
+ * error before the network round-trip. Returns undefined for an empty input
14
+ * (the server picks its default enablement). */
15
+ export declare function normalizeRegisterTwins(raw: string | undefined): string[] | undefined;
7
16
  export declare function runRegisterAgent(opts: RegisterAgentOptions): Promise<void>;
8
17
  export interface EnsureAgentRegisteredOptions {
9
18
  apiBaseUrl: string;
@@ -5,13 +5,16 @@
5
5
  // `pome.config.json` so subsequent `pome run` is auto-scoped to it.
6
6
  //
7
7
  // Wire shape (see pome-cloud `docs/05-api-spec.md` and ADR-013):
8
- // POST /v1/agents { name }
9
- // 200 { id: "agt_…", slug, display_name, judge_model }
8
+ // POST /v1/agents { name, twins? }
9
+ // 200 { id: "agt_…", slug, display_name, judge_model, enabled_services? }
10
10
  // 401 invalid_auth | 409 conflict (slug exists) | 422 validation_failed
11
11
  //
12
12
  // The CLI does not invent a slug — server is canonical. We persist whatever
13
- // slug the server returns next to the id.
13
+ // slug the server returns next to the id. Multi-twin (M3): `--twins` narrows
14
+ // the services this agent may exercise; an older cloud that predates the field
15
+ // omits `enabled_services` from its response (we warn but still succeed).
14
16
  import { basename, dirname } from "node:path";
17
+ import { MOUNTED_TWINS } from "@pome-sh/shared-types";
15
18
  import { HostedAuthError, HostedOrchError, } from "../hosted/errors.js";
16
19
  import { resolveCredentials } from "./credentials.js";
17
20
  import { friendlyHostedError } from "./session.js";
@@ -23,10 +26,35 @@ function parseAgentResponse(raw) {
23
26
  typeof raw.slug === "string" &&
24
27
  typeof raw.display_name === "string" &&
25
28
  typeof raw.judge_model === "string") {
26
- return raw;
29
+ const enabled = raw.enabled_services;
30
+ const enabledServices = Array.isArray(enabled) && enabled.every((s) => typeof s === "string")
31
+ ? enabled
32
+ : undefined;
33
+ return { ...raw, enabled_services: enabledServices };
27
34
  }
28
35
  throw new HostedOrchError("POST /v1/agents returned unexpected shape");
29
36
  }
37
+ /** Normalize a `--twins github,slack` comma list to a validated twin array.
38
+ * Validates against MOUNTED_TWINS locally so a typo fails with a friendly
39
+ * error before the network round-trip. Returns undefined for an empty input
40
+ * (the server picks its default enablement). */
41
+ export function normalizeRegisterTwins(raw) {
42
+ if (raw === undefined)
43
+ return undefined;
44
+ const twins = raw
45
+ .split(",")
46
+ .map((t) => t.trim().toLowerCase())
47
+ .filter((t) => t.length > 0);
48
+ if (twins.length === 0)
49
+ return undefined;
50
+ const allowed = new Set(MOUNTED_TWINS);
51
+ const unknown = twins.filter((t) => !allowed.has(t));
52
+ if (unknown.length > 0) {
53
+ throw new Error(`Unknown twin(s) ${unknown.map((t) => `"${t}"`).join(", ")}. Supported: ${MOUNTED_TWINS.join(", ")}.`);
54
+ }
55
+ // De-dupe while preserving order.
56
+ return [...new Set(twins)];
57
+ }
30
58
  /** POST /v1/agents and persist the returned identity into the config read.
31
59
  * Shared by `pome register agent` and `pome install` (FDRS-669). */
32
60
  async function createAndPersistAgent(input) {
@@ -34,13 +62,17 @@ async function createAndPersistAgent(input) {
34
62
  apiBaseUrl: input.apiBaseUrl,
35
63
  credentialsPath: input.credentialsPath,
36
64
  });
65
+ const body = { name: input.name };
66
+ if (input.twins && input.twins.length > 0) {
67
+ body.twins = input.twins;
68
+ }
37
69
  const res = await fetch(`${creds.apiBaseUrl}/v1/agents`, {
38
70
  method: "POST",
39
71
  headers: {
40
72
  "x-api-key": creds.apiKey,
41
73
  "content-type": "application/json",
42
74
  },
43
- body: JSON.stringify({ name: input.name }),
75
+ body: JSON.stringify(body),
44
76
  }).catch((err) => {
45
77
  throw new HostedOrchError(err instanceof Error ? err.message : "network error");
46
78
  });
@@ -81,11 +113,25 @@ export async function runRegisterAgent(opts) {
81
113
  apiBaseUrl: opts.apiBaseUrl,
82
114
  name: opts.name,
83
115
  configRead,
116
+ twins: opts.twins,
84
117
  });
85
118
  const displayName = stripControlCharacters(agent.display_name);
86
119
  console.error(`Registered agent "${displayName}" (${agent.id}, slug=${agent.slug}).`);
87
120
  console.error(`Wrote agentId to ${CONFIG_FILE}.`);
88
121
  console.error(`Judge model: ${agent.judge_model}.`);
122
+ // Multi-twin (M3): echo the services the cloud enabled. An older cloud that
123
+ // predates `enabled_services` omits it — warn so the user knows the twin
124
+ // scoping did not take effect on this control plane.
125
+ if (agent.enabled_services !== undefined) {
126
+ console.error(`Enabled services: ${agent.enabled_services.length > 0 ? agent.enabled_services.join(", ") : "(none)"}.`);
127
+ }
128
+ else if (opts.twins && opts.twins.length > 0) {
129
+ // Only warn when the user asked to scope twins (`--twins`). An older cloud
130
+ // that predates `enabled_services` omits it; without `--twins` there was no
131
+ // scoping request to warn about, so a default `pome register agent` stays
132
+ // quiet (matches origin/main's silence in that path).
133
+ console.error("Enabled services: not reported by this pome cloud (older control plane) — twin scoping may not have taken effect.");
134
+ }
89
135
  }
90
136
  /** Idempotent registration for `pome install`: a repo with an agentId keeps
91
137
  * it (no duplicate agents, no error, same slug); a fresh repo registers
@@ -1,6 +1,12 @@
1
+ export declare function ensureMcpSuffix(url: string): string;
2
+ /** Normalize one-or-more `--twin` flags into a validated, de-duped twin list.
3
+ * Repeated flags stand up an ad-hoc multi-twin session; each is validated
4
+ * against MOUNTED_TWINS for a friendly error before the round-trip. */
5
+ export declare function normalizeSessionTwins(raw: string[]): string[];
1
6
  export declare function runSessionCreate(opts: {
2
7
  apiBaseUrl: string;
3
- twin: string;
8
+ /** One-or-more twins. Repeated `--twin` flags stand up a multi-twin session. */
9
+ twins: string[];
4
10
  showSecrets: boolean;
5
11
  format: "text" | "json" | "env";
6
12
  secretsFile?: string;