@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
@@ -0,0 +1,100 @@
1
+ /**
2
+ * otel/legacy-shim — legacy event → `OtelSpanEvent` translation (M1.2 / FDRS-481).
3
+ *
4
+ * The compatibility layer for the transition window: the CLI keeps uploading its
5
+ * current JSONL (no flag day), and OTel-aware downstream (M3 correlation, the
6
+ * native waterfall) reads `OtelSpanEvent`. This shim translates the three legacy
7
+ * variants — `TwinHttpEvent`, `LlmCallEvent`, `ToolUseEvent` — up into spans so
8
+ * legacy and new data share one path.
9
+ *
10
+ * Guarantees:
11
+ * - **Lossless.** The ENTIRE original record is preserved verbatim as a JSON
12
+ * string under `attributes["pome.legacy.record_json"]` — serialized from the
13
+ * raw input BEFORE Zod strips any additive fields (review finding #3). The
14
+ * mapped fields are ALSO written as canonical OTel attributes, from which
15
+ * the typed projections are derived by the SAME projector the schema checks.
16
+ * - **Deterministic.** No clock, no randomness. Same record (+ same `run_id`
17
+ * option) → byte-identical span, every run.
18
+ * - **OTel-correct status** (review findings #5/#9). HTTP client spans: 1xx–3xx
19
+ * leave status UNSET; 4xx/5xx and transport errors are ERROR. (OTel does not
20
+ * set OK on a merely-successful span.)
21
+ *
22
+ * IDs are namespaced `legacy:<source-id>` so a stored span always declares it
23
+ * originated from a pre-OTel record (the canonical schema accepts either real
24
+ * W3C ids or `legacy:` ids).
25
+ *
26
+ * Pinned convention: the shim targets `OTEL_GENAI_SCHEMA_VERSION` (see `./semconv`).
27
+ */
28
+ import { z } from "zod";
29
+ import { type OtelSpanEvent } from "./span-event.js";
30
+ export declare const LEGACY_SHIM_SEMCONV_VERSION: "1.42.0";
31
+ export declare const LEGACY_ATTR_NAMESPACE: "pome.legacy";
32
+ export declare const LEGACY_ID_PREFIX: "legacy:";
33
+ export declare const shimmableLegacyEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
34
+ ts: z.ZodString;
35
+ run_id: z.ZodString;
36
+ twin: z.ZodString;
37
+ request_id: z.ZodString;
38
+ correlation_id: z.ZodOptional<z.ZodString>;
39
+ task_step_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
40
+ scenario_step_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
41
+ step_id: z.ZodNullable<z.ZodString>;
42
+ tool_call_id: z.ZodNullable<z.ZodString>;
43
+ method: z.ZodString;
44
+ path: z.ZodString;
45
+ request_body: z.ZodUnknown;
46
+ status: z.ZodNumber;
47
+ response_body: z.ZodUnknown;
48
+ latency_ms: z.ZodNumber;
49
+ fidelity: z.ZodEnum<{
50
+ semantic: "semantic";
51
+ unsupported: "unsupported";
52
+ }>;
53
+ state_mutation: z.ZodBoolean;
54
+ state_delta: z.ZodNullable<z.ZodObject<{
55
+ before: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
56
+ after: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
57
+ }, z.core.$strip>>;
58
+ idempotency_dedupe: z.ZodOptional<z.ZodBoolean>;
59
+ error: z.ZodNullable<z.ZodString>;
60
+ kind: z.ZodLiteral<"TwinHttpEvent">;
61
+ event_id: z.ZodString;
62
+ parent_id: z.ZodNullable<z.ZodString>;
63
+ }, z.core.$strip>, z.ZodObject<{
64
+ kind: z.ZodLiteral<"LlmCallEvent">;
65
+ host: z.ZodString;
66
+ port: z.ZodNumber;
67
+ latency_ms: z.ZodNumber;
68
+ bytes_in: z.ZodNumber;
69
+ bytes_out: z.ZodNumber;
70
+ url: z.ZodNullable<z.ZodString>;
71
+ method: z.ZodNullable<z.ZodString>;
72
+ status: z.ZodNullable<z.ZodNumber>;
73
+ model: z.ZodNullable<z.ZodString>;
74
+ prompt_tokens: z.ZodNullable<z.ZodNumber>;
75
+ completion_tokens: z.ZodNullable<z.ZodNumber>;
76
+ cost_usd: z.ZodNullable<z.ZodNumber>;
77
+ ts: z.ZodString;
78
+ event_id: z.ZodString;
79
+ parent_id: z.ZodNullable<z.ZodString>;
80
+ }, z.core.$strip>, z.ZodObject<{
81
+ kind: z.ZodLiteral<"ToolUseEvent">;
82
+ tool_use_id: z.ZodString;
83
+ tool_name: z.ZodString;
84
+ input: z.ZodUnknown;
85
+ ts: z.ZodString;
86
+ event_id: z.ZodString;
87
+ parent_id: z.ZodNullable<z.ZodString>;
88
+ }, z.core.$strip>], "kind">;
89
+ export type ShimmableLegacyEvent = z.infer<typeof shimmableLegacyEventSchema>;
90
+ export interface LegacyShimOptions {
91
+ run_id?: string;
92
+ }
93
+ /**
94
+ * Translate a single legacy `TwinHttpEvent` / `LlmCallEvent` / `ToolUseEvent`
95
+ * into a validated `OtelSpanEvent`.
96
+ *
97
+ * Throws a typed `ZodError` if `rawRecord` is not one of those three shapes,
98
+ * or a plain `Error` if an LLM/tool record is missing the required `run_id`.
99
+ */
100
+ export declare function shimLegacyEventToSpan(rawRecord: unknown, options?: LegacyShimOptions): OtelSpanEvent;
@@ -0,0 +1,185 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * otel/legacy-shim — legacy event → `OtelSpanEvent` translation (M1.2 / FDRS-481).
4
+ *
5
+ * The compatibility layer for the transition window: the CLI keeps uploading its
6
+ * current JSONL (no flag day), and OTel-aware downstream (M3 correlation, the
7
+ * native waterfall) reads `OtelSpanEvent`. This shim translates the three legacy
8
+ * variants — `TwinHttpEvent`, `LlmCallEvent`, `ToolUseEvent` — up into spans so
9
+ * legacy and new data share one path.
10
+ *
11
+ * Guarantees:
12
+ * - **Lossless.** The ENTIRE original record is preserved verbatim as a JSON
13
+ * string under `attributes["pome.legacy.record_json"]` — serialized from the
14
+ * raw input BEFORE Zod strips any additive fields (review finding #3). The
15
+ * mapped fields are ALSO written as canonical OTel attributes, from which
16
+ * the typed projections are derived by the SAME projector the schema checks.
17
+ * - **Deterministic.** No clock, no randomness. Same record (+ same `run_id`
18
+ * option) → byte-identical span, every run.
19
+ * - **OTel-correct status** (review findings #5/#9). HTTP client spans: 1xx–3xx
20
+ * leave status UNSET; 4xx/5xx and transport errors are ERROR. (OTel does not
21
+ * set OK on a merely-successful span.)
22
+ *
23
+ * IDs are namespaced `legacy:<source-id>` so a stored span always declares it
24
+ * originated from a pre-OTel record (the canonical schema accepts either real
25
+ * W3C ids or `legacy:` ids).
26
+ *
27
+ * Pinned convention: the shim targets `OTEL_GENAI_SCHEMA_VERSION` (see `./semconv`).
28
+ */
29
+ import { z } from "zod";
30
+ import { llmCallEventSchema, toolUseEventSchema, twinHttpEventSchema, } from "../recorder-events.js";
31
+ import { msToNanos, nanosToIso } from "./nano.js";
32
+ import { projectAttributes, } from "./project.js";
33
+ import { ERROR_TYPE, GEN_AI_OPERATION_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_TOOL_NAME, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, HTTP_REQUEST_METHOD, HTTP_RESPONSE_STATUS_CODE, OTEL_GENAI_SCHEMA_VERSION, SERVER_ADDRESS, SERVER_PORT, URL_FULL, URL_PATH, } from "./semconv.js";
34
+ import { otelSpanEventSchema } from "./span-event.js";
35
+ // The shim targets this pinned GenAI convention version (from M1.1). This
36
+ // re-export makes the pin explicit and testable.
37
+ export const LEGACY_SHIM_SEMCONV_VERSION = OTEL_GENAI_SCHEMA_VERSION;
38
+ // The documented namespace for legacy provenance. `record_json` is the lossless
39
+ // source of truth; `kind` records the originating legacy variant.
40
+ export const LEGACY_ATTR_NAMESPACE = "pome.legacy";
41
+ export const LEGACY_ID_PREFIX = "legacy:";
42
+ const ATTR_LEGACY_KIND = `${LEGACY_ATTR_NAMESPACE}.kind`;
43
+ const ATTR_LEGACY_RECORD_JSON = `${LEGACY_ATTR_NAMESPACE}.record_json`;
44
+ // The legacy variants this shim accepts. Discriminated on `kind`.
45
+ export const shimmableLegacyEventSchema = z.discriminatedUnion("kind", [
46
+ twinHttpEventSchema,
47
+ llmCallEventSchema,
48
+ toolUseEventSchema,
49
+ ]);
50
+ // `legacy:`-namespace a non-OTel source id. Idempotent if already namespaced.
51
+ function legacyId(sourceId) {
52
+ return sourceId.startsWith(LEGACY_ID_PREFIX) ? sourceId : `${LEGACY_ID_PREFIX}${sourceId}`;
53
+ }
54
+ // Resolve the legacy run id used as the trace grouping key.
55
+ function resolveRunId(options, record) {
56
+ if (options.run_id !== undefined) {
57
+ return options.run_id;
58
+ }
59
+ if (record.kind === "TwinHttpEvent") {
60
+ return record.run_id;
61
+ }
62
+ // No run context — LLM/tool rows carry none internally. Refusing here keeps
63
+ // related rows from each landing in their own orphan trace.
64
+ throw new Error(`legacy-shim: ${record.kind} requires options.run_id for trace context`);
65
+ }
66
+ // Drop null/undefined entries so the bag stays a valid attribute record (the
67
+ // attribute schema has no null member — an absent attribute is omitted).
68
+ function buildBag(entries) {
69
+ const bag = {};
70
+ for (const [key, value] of Object.entries(entries)) {
71
+ if (value !== null && value !== undefined)
72
+ bag[key] = value;
73
+ }
74
+ return bag;
75
+ }
76
+ // OTel HTTP client span status: success (incl. redirects) stays UNSET; 4xx/5xx
77
+ // and transport errors are ERROR (review #9). Returns the status + the
78
+ // low-cardinality `error.type` token to stamp on the bag.
79
+ function httpStatus(status, error) {
80
+ if (error !== null)
81
+ return { code: "ERROR", errorType: "network_error" };
82
+ if (status >= 400)
83
+ return { code: "ERROR", errorType: String(status) };
84
+ return { code: "UNSET", errorType: null };
85
+ }
86
+ /**
87
+ * Translate a single legacy `TwinHttpEvent` / `LlmCallEvent` / `ToolUseEvent`
88
+ * into a validated `OtelSpanEvent`.
89
+ *
90
+ * Throws a typed `ZodError` if `rawRecord` is not one of those three shapes,
91
+ * or a plain `Error` if an LLM/tool record is missing the required `run_id`.
92
+ */
93
+ export function shimLegacyEventToSpan(rawRecord, options = {}) {
94
+ const record = shimmableLegacyEventSchema.parse(rawRecord);
95
+ const startMs = Date.parse(record.ts);
96
+ const startNano = msToNanos(startMs);
97
+ const traceId = legacyId(resolveRunId(options, record));
98
+ const spanId = legacyId(record.event_id);
99
+ const parentSpanId = record.parent_id !== null ? legacyId(record.parent_id) : null;
100
+ // Lossless: serialize the RAW input (not the Zod-stripped record) so additive
101
+ // legacy fields survive round-trip.
102
+ const legacyNamespace = {
103
+ [ATTR_LEGACY_KIND]: record.kind,
104
+ [ATTR_LEGACY_RECORD_JSON]: JSON.stringify(rawRecord),
105
+ };
106
+ let name;
107
+ let spanKind;
108
+ let endNano;
109
+ let statusCode;
110
+ let statusMessage;
111
+ let semanticAttrs;
112
+ if (record.kind === "TwinHttpEvent") {
113
+ const status = httpStatus(record.status, record.error);
114
+ // Low-cardinality span name: HTTP method only (the concrete path is a high-
115
+ // cardinality URL, not a route template) — review #4.
116
+ name = record.method;
117
+ spanKind = "CLIENT";
118
+ endNano = msToNanos(startMs + record.latency_ms);
119
+ statusCode = status.code;
120
+ statusMessage = record.error;
121
+ semanticAttrs = buildBag({
122
+ [HTTP_REQUEST_METHOD]: record.method,
123
+ [HTTP_RESPONSE_STATUS_CODE]: record.status,
124
+ [URL_PATH]: record.path,
125
+ [ERROR_TYPE]: status.errorType,
126
+ });
127
+ }
128
+ else if (record.kind === "LlmCallEvent") {
129
+ // Asymmetry vs TwinHttpEvent (intentional, M1): a legacy LlmCallEvent has no
130
+ // transport-error field, so only an HTTP >=400 status drives ERROR here —
131
+ // a connection-level failure with a null status stays UNSET. M3 unifies on
132
+ // real OTel span status; until then LLM rows may under-report errors vs HTTP.
133
+ const errored = record.status !== null && record.status >= 400;
134
+ name = record.model !== null ? `chat ${record.model}` : "chat";
135
+ spanKind = "CLIENT";
136
+ endNano = msToNanos(startMs + record.latency_ms);
137
+ statusCode = errored ? "ERROR" : "UNSET";
138
+ statusMessage = null;
139
+ semanticAttrs = buildBag({
140
+ [GEN_AI_OPERATION_NAME]: "chat",
141
+ [GEN_AI_REQUEST_MODEL]: record.model,
142
+ [GEN_AI_USAGE_INPUT_TOKENS]: record.prompt_tokens,
143
+ [GEN_AI_USAGE_OUTPUT_TOKENS]: record.completion_tokens,
144
+ [HTTP_REQUEST_METHOD]: record.method,
145
+ [HTTP_RESPONSE_STATUS_CODE]: record.status,
146
+ [URL_FULL]: record.url,
147
+ [SERVER_ADDRESS]: record.host,
148
+ [SERVER_PORT]: record.port,
149
+ [ERROR_TYPE]: errored ? String(record.status) : null,
150
+ });
151
+ }
152
+ else {
153
+ // ToolUseEvent
154
+ name = `execute_tool ${record.tool_name}`;
155
+ spanKind = "INTERNAL";
156
+ endNano = null;
157
+ statusCode = "UNSET";
158
+ statusMessage = null;
159
+ semanticAttrs = buildBag({
160
+ [GEN_AI_OPERATION_NAME]: "execute_tool",
161
+ [GEN_AI_TOOL_NAME]: record.tool_name,
162
+ });
163
+ }
164
+ const attributes = { ...semanticAttrs, ...legacyNamespace };
165
+ const candidate = {
166
+ ts: nanosToIso(startNano),
167
+ event_id: spanId,
168
+ parent_id: parentSpanId,
169
+ kind: "OtelSpanEvent",
170
+ trace_id: traceId,
171
+ span_id: spanId,
172
+ parent_span_id: parentSpanId,
173
+ name,
174
+ span_kind: spanKind,
175
+ start_time_unix_nano: startNano,
176
+ end_time_unix_nano: endNano,
177
+ status_code: statusCode,
178
+ status_message: statusMessage,
179
+ ...projectAttributes(attributes),
180
+ attributes,
181
+ };
182
+ // Re-validate so the shim's output is provably a canonical `OtelSpanEvent`.
183
+ return otelSpanEventSchema.parse(candidate);
184
+ }
185
+ //# sourceMappingURL=legacy-shim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-shim.js","sourceRoot":"","sources":["../../src/otel/legacy-shim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * otel/map-span — pure OTel span → `OtelSpanEvent` mapping (M1.1 / FDRS-480).
3
+ *
4
+ * Deterministic: same input → byte-identical event, every run. Has no clock,
5
+ * no randomness; `ts` is derived from the span's start time.
6
+ *
7
+ * Input is a NORMALIZED span: real W3C trace context (lowercase-hex ids) and a
8
+ * flat `attributes` `Record<string, value>`. Decoding raw OTLP/JSON `AnyValue`
9
+ * (`{ stringValue }`, kvlist, bytes) and the `[{ key, value }]` attribute array
10
+ * into this flat record is M2's job (the `@opentelemetry/otlp-transformer`
11
+ * dependency) — keeping M1.1 free of an OTLP decoder keeps the schema
12
+ * self-testable.
13
+ *
14
+ * Round-trip example:
15
+ *
16
+ * mapOtelSpanToEvent({
17
+ * trace_id: "4bf92f3577b34da6a3ce929d0e0e4736",
18
+ * span_id: "00f067aa0ba902b7",
19
+ * name: "chat google/gemini-2.5-flash",
20
+ * start_time_unix_nano: "1700000000000000000",
21
+ * attributes: {
22
+ * "gen_ai.provider.name": "google",
23
+ * "gen_ai.request.model": "gemini-2.5-flash",
24
+ * "gen_ai.usage.input_tokens": 42,
25
+ * },
26
+ * })
27
+ * // → { ts: "2023-11-14T22:13:20.000Z", event_id: "00f067aa0ba902b7", … }
28
+ */
29
+ import { z } from "zod";
30
+ import { type OtelSpanEvent } from "./span-event.js";
31
+ export declare const otelSpanInputSchema: z.ZodObject<{
32
+ trace_id: z.ZodString;
33
+ span_id: z.ZodString;
34
+ parent_span_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ name: z.ZodString;
36
+ kind: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
37
+ UNSPECIFIED: "UNSPECIFIED";
38
+ INTERNAL: "INTERNAL";
39
+ SERVER: "SERVER";
40
+ CLIENT: "CLIENT";
41
+ PRODUCER: "PRODUCER";
42
+ CONSUMER: "CONSUMER";
43
+ }>, z.ZodNumber]>>;
44
+ start_time_unix_nano: z.ZodString;
45
+ end_time_unix_nano: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ status: z.ZodOptional<z.ZodObject<{
47
+ code: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
48
+ UNSET: "UNSET";
49
+ OK: "OK";
50
+ ERROR: "ERROR";
51
+ }>, z.ZodNumber]>>;
52
+ message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
+ }, z.core.$strip>>;
54
+ attributes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>>;
55
+ }, z.core.$strip>;
56
+ export type OtelSpanInput = z.infer<typeof otelSpanInputSchema>;
57
+ /**
58
+ * Map a normalized OTLP span onto a validated `OtelSpanEvent`.
59
+ *
60
+ * Throws a `ZodError` (typed; names the offending field) when the input is
61
+ * malformed — a non-hex `trace_id`, an out-of-range unix-nano, a reversed span
62
+ * (end < start), a non-finite attribute value, etc.
63
+ */
64
+ export declare function mapOtelSpanToEvent(rawSpan: unknown): OtelSpanEvent;
@@ -0,0 +1,112 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * otel/map-span — pure OTel span → `OtelSpanEvent` mapping (M1.1 / FDRS-480).
4
+ *
5
+ * Deterministic: same input → byte-identical event, every run. Has no clock,
6
+ * no randomness; `ts` is derived from the span's start time.
7
+ *
8
+ * Input is a NORMALIZED span: real W3C trace context (lowercase-hex ids) and a
9
+ * flat `attributes` `Record<string, value>`. Decoding raw OTLP/JSON `AnyValue`
10
+ * (`{ stringValue }`, kvlist, bytes) and the `[{ key, value }]` attribute array
11
+ * into this flat record is M2's job (the `@opentelemetry/otlp-transformer`
12
+ * dependency) — keeping M1.1 free of an OTLP decoder keeps the schema
13
+ * self-testable.
14
+ *
15
+ * Round-trip example:
16
+ *
17
+ * mapOtelSpanToEvent({
18
+ * trace_id: "4bf92f3577b34da6a3ce929d0e0e4736",
19
+ * span_id: "00f067aa0ba902b7",
20
+ * name: "chat google/gemini-2.5-flash",
21
+ * start_time_unix_nano: "1700000000000000000",
22
+ * attributes: {
23
+ * "gen_ai.provider.name": "google",
24
+ * "gen_ai.request.model": "gemini-2.5-flash",
25
+ * "gen_ai.usage.input_tokens": 42,
26
+ * },
27
+ * })
28
+ * // → { ts: "2023-11-14T22:13:20.000Z", event_id: "00f067aa0ba902b7", … }
29
+ */
30
+ import { z } from "zod";
31
+ import { nanosToIso } from "./nano.js";
32
+ import { otelAttributeValueSchema, projectAttributes } from "./project.js";
33
+ import { OTEL_SPAN_KINDS, OTEL_STATUS_CODES, otelSpanEventSchema, otelSpanKindSchema, otelStatusCodeSchema, unixNanoSchema, w3cSpanIdSchema, w3cTraceIdSchema, } from "./span-event.js";
34
+ // Normalized OTLP span input. IDs are strict W3C trace context (real OTel
35
+ // always emits hex). `kind` / `status.code` accept either the OTLP integer
36
+ // (0–5 / 0–2) or the name; everything else is already decoded.
37
+ export const otelSpanInputSchema = z.object({
38
+ trace_id: w3cTraceIdSchema,
39
+ span_id: w3cSpanIdSchema,
40
+ parent_span_id: w3cSpanIdSchema.nullable().optional(),
41
+ name: z.string().min(1),
42
+ kind: z.union([otelSpanKindSchema, z.number().int().min(0).max(5)]).optional(),
43
+ start_time_unix_nano: unixNanoSchema,
44
+ end_time_unix_nano: unixNanoSchema.nullable().optional(),
45
+ status: z
46
+ .object({
47
+ code: z.union([otelStatusCodeSchema, z.number().int().min(0).max(2)]).optional(),
48
+ message: z.string().nullable().optional(),
49
+ })
50
+ .optional(),
51
+ attributes: z.record(z.string(), otelAttributeValueSchema).default({}),
52
+ });
53
+ function normalizeSpanKind(kind) {
54
+ if (kind === undefined) {
55
+ // OTel SDKs default an unset kind to INTERNAL.
56
+ return "INTERNAL";
57
+ }
58
+ if (typeof kind === "number") {
59
+ // Bounded 0–5 by `otelSpanInputSchema`; `!` avoids an unreachable branch.
60
+ return OTEL_SPAN_KINDS[kind];
61
+ }
62
+ return kind;
63
+ }
64
+ function normalizeStatusCode(code) {
65
+ if (code === undefined) {
66
+ return "UNSET";
67
+ }
68
+ if (typeof code === "number") {
69
+ // Bounded 0–2 by `otelSpanInputSchema`; `!` avoids an unreachable branch.
70
+ return OTEL_STATUS_CODES[code];
71
+ }
72
+ return code;
73
+ }
74
+ /**
75
+ * Map a normalized OTLP span onto a validated `OtelSpanEvent`.
76
+ *
77
+ * Throws a `ZodError` (typed; names the offending field) when the input is
78
+ * malformed — a non-hex `trace_id`, an out-of-range unix-nano, a reversed span
79
+ * (end < start), a non-finite attribute value, etc.
80
+ */
81
+ export function mapOtelSpanToEvent(rawSpan) {
82
+ const span = otelSpanInputSchema.parse(rawSpan);
83
+ const attributes = span.attributes;
84
+ const parentSpanId = span.parent_span_id ?? null;
85
+ const candidate = {
86
+ ts: nanosToIso(span.start_time_unix_nano),
87
+ // The span id IS the canonical row id for an OTel event; the base
88
+ // parent-chain mirrors span parentage so downstream union readers and M3
89
+ // correlation agree.
90
+ event_id: span.span_id,
91
+ parent_id: parentSpanId,
92
+ kind: "OtelSpanEvent",
93
+ trace_id: span.trace_id,
94
+ span_id: span.span_id,
95
+ parent_span_id: parentSpanId,
96
+ name: span.name,
97
+ span_kind: normalizeSpanKind(span.kind),
98
+ start_time_unix_nano: span.start_time_unix_nano,
99
+ end_time_unix_nano: span.end_time_unix_nano ?? null,
100
+ status_code: normalizeStatusCode(span.status?.code),
101
+ status_message: span.status?.message ?? null,
102
+ // Verbatim bag plus its single-source projection. The schema re-derives the
103
+ // projection and rejects drift, so this is the only place it is computed.
104
+ ...projectAttributes(attributes),
105
+ attributes,
106
+ };
107
+ // Re-validate the assembled event so the canonical model is always schema-
108
+ // valid. This DOES fire for bad input the input schema let through (e.g. a
109
+ // reversed span), surfacing a typed ZodError instead of a silent bad row.
110
+ return otelSpanEventSchema.parse(candidate);
111
+ }
112
+ //# sourceMappingURL=map-span.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-span.js","sourceRoot":"","sources":["../../src/otel/map-span.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * otel/nano — uint64 decimal-string arithmetic + nanosecond↔ISO conversion
3
+ * (M1.1 / FDRS-480).
4
+ *
5
+ * OTLP encodes `*_unix_nano` timestamps as uint64 decimal STRINGS because the
6
+ * values exceed Number.MAX_SAFE_INTEGER. These helpers validate and compare
7
+ * them WITHOUT `BigInt` — the dashboard compiles this source directly under a
8
+ * pre-ES2020 target where `BigInt` literals fail to typecheck (review-era
9
+ * portability fix). Everything here is pure and deterministic.
10
+ */
11
+ export declare const UINT64_MAX = "18446744073709551615";
12
+ /** True iff `value` is a non-negative decimal integer string within uint64. */
13
+ export declare function isUint64(value: string): boolean;
14
+ /**
15
+ * Compare two uint64 decimal strings. Returns <0 if a<b, 0 if equal, >0 if a>b.
16
+ * Assumes both are valid digit strings (callers validate via `isUint64` first).
17
+ */
18
+ export declare function compareUint64(a: string, b: string): number;
19
+ export declare function msToNanos(millis: number): string;
20
+ /**
21
+ * uint64 nanoseconds → ISO-8601 (UTC). Floors to milliseconds by dropping the
22
+ * last 6 decimal digits of the (uint64-validated) integer string. The resulting
23
+ * ms value is within Date's safe range for any valid uint64, so this never
24
+ * throws for input that passed `isUint64`. String-slicing avoids `BigInt`.
25
+ */
26
+ export declare function nanosToIso(unixNano: string): string;
@@ -0,0 +1,61 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * otel/nano — uint64 decimal-string arithmetic + nanosecond↔ISO conversion
4
+ * (M1.1 / FDRS-480).
5
+ *
6
+ * OTLP encodes `*_unix_nano` timestamps as uint64 decimal STRINGS because the
7
+ * values exceed Number.MAX_SAFE_INTEGER. These helpers validate and compare
8
+ * them WITHOUT `BigInt` — the dashboard compiles this source directly under a
9
+ * pre-ES2020 target where `BigInt` literals fail to typecheck (review-era
10
+ * portability fix). Everything here is pure and deterministic.
11
+ */
12
+ // 2^64 - 1. A unix-nano timestamp must fit in a uint64; a longer/larger decimal
13
+ // string is rejected so it can never reach `nanosToIso` and throw a RangeError
14
+ // (review finding #4).
15
+ export const UINT64_MAX = "18446744073709551615";
16
+ // Strip leading zeros, keeping a single "0" for an all-zero string. The
17
+ // `(?=\d)` lookahead guarantees at least one digit remains, so for any digit
18
+ // string (callers validate via the `^\d+$` test first) the result is non-empty.
19
+ // Lets us compare normalized decimals by (length, then lexicographic).
20
+ function normalizeDigits(value) {
21
+ return value.replace(/^0+(?=\d)/, "");
22
+ }
23
+ /** True iff `value` is a non-negative decimal integer string within uint64. */
24
+ export function isUint64(value) {
25
+ if (!/^\d+$/.test(value))
26
+ return false;
27
+ const normalized = normalizeDigits(value);
28
+ if (normalized.length !== UINT64_MAX.length) {
29
+ return normalized.length < UINT64_MAX.length;
30
+ }
31
+ return normalized <= UINT64_MAX;
32
+ }
33
+ /**
34
+ * Compare two uint64 decimal strings. Returns <0 if a<b, 0 if equal, >0 if a>b.
35
+ * Assumes both are valid digit strings (callers validate via `isUint64` first).
36
+ */
37
+ export function compareUint64(a, b) {
38
+ const na = normalizeDigits(a);
39
+ const nb = normalizeDigits(b);
40
+ if (na.length !== nb.length)
41
+ return na.length - nb.length;
42
+ if (na === nb)
43
+ return 0;
44
+ return na < nb ? -1 : 1;
45
+ }
46
+ // Unix-milliseconds → uint64 unix-nanoseconds decimal string. Legacy timestamps
47
+ // are millisecond-precision, so this is exact: append six zeros. Deterministic.
48
+ export function msToNanos(millis) {
49
+ return `${millis}000000`;
50
+ }
51
+ /**
52
+ * uint64 nanoseconds → ISO-8601 (UTC). Floors to milliseconds by dropping the
53
+ * last 6 decimal digits of the (uint64-validated) integer string. The resulting
54
+ * ms value is within Date's safe range for any valid uint64, so this never
55
+ * throws for input that passed `isUint64`. String-slicing avoids `BigInt`.
56
+ */
57
+ export function nanosToIso(unixNano) {
58
+ const millis = Number(unixNano.slice(0, -6) || "0");
59
+ return new Date(millis).toISOString();
60
+ }
61
+ //# sourceMappingURL=nano.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nano.js","sourceRoot":"","sources":["../../src/otel/nano.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,+EAA+E;AAC/E,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAEjD,wEAAwE;AACxE,6EAA6E;AAC7E,gFAAgF;AAChF,uEAAuE;AACvE,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,OAAO,UAAU,IAAI,UAAU,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IAC1D,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,GAAG,MAAM,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACpD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * otel/project — the single attribute→projection function (M1.1 / FDRS-480).
3
+ *
4
+ * The typed `gen_ai_*` / `http_*` / `url_*` / `server_*` / `error_type` fields
5
+ * on an `OtelSpanEvent` are PROJECTIONS of the verbatim `attributes` bag, never
6
+ * an independent source of truth. This module is the ONE place that derivation
7
+ * lives, so:
8
+ * - the span mapper (`map-span.ts`) builds projections from `attributes`,
9
+ * - the legacy shim (`legacy-shim.ts`) builds them the same way, and
10
+ * - the schema (`span-event.ts`) re-derives them in a `superRefine` and
11
+ * rejects any event whose typed fields drift from `attributes`
12
+ * (review finding #4 — projection drift; finding #7 — centralize).
13
+ *
14
+ * Pure and deterministic. Reads only the pinned attribute names from `semconv`.
15
+ */
16
+ import { z } from "zod";
17
+ export declare const otelAttributeValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>;
18
+ export type OtelAttributeValue = z.infer<typeof otelAttributeValueSchema>;
19
+ export type OtelAttributeBag = Record<string, OtelAttributeValue>;
20
+ export declare const OTEL_PROJECTION_KEYS: readonly ["gen_ai_provider_name", "gen_ai_operation_name", "gen_ai_request_model", "gen_ai_agent_name", "gen_ai_agent_id", "gen_ai_tool_name", "gen_ai_usage_input_tokens", "gen_ai_usage_output_tokens", "http_request_method", "http_response_status_code", "url_full", "url_path", "server_address", "server_port", "error_type"];
21
+ export type OtelProjections = {
22
+ gen_ai_provider_name: string | null;
23
+ gen_ai_operation_name: string | null;
24
+ gen_ai_request_model: string | null;
25
+ gen_ai_agent_name: string | null;
26
+ gen_ai_agent_id: string | null;
27
+ gen_ai_tool_name: string | null;
28
+ gen_ai_usage_input_tokens: number | null;
29
+ gen_ai_usage_output_tokens: number | null;
30
+ http_request_method: string | null;
31
+ http_response_status_code: number | null;
32
+ url_full: string | null;
33
+ url_path: string | null;
34
+ server_address: string | null;
35
+ server_port: number | null;
36
+ error_type: string | null;
37
+ };
38
+ /**
39
+ * Derive the flat typed projections from a verbatim attribute bag. Canonical
40
+ * names win; deprecated/pre-1.27 aliases are accepted as fallbacks.
41
+ */
42
+ export declare function projectAttributes(attributes: OtelAttributeBag): OtelProjections;