@pome-sh/cli 0.4.0 → 0.7.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 (369) hide show
  1. package/README.md +31 -6
  2. package/dist/build-info.json +3 -3
  3. package/dist/examples/agents/llm-refund-agent.js +1 -1
  4. package/dist/src/cli/compile-seeds.js +22 -22
  5. package/dist/src/cli/default-task.d.ts +2 -2
  6. package/dist/src/cli/default-task.js +4 -4
  7. package/dist/src/cli/docs-topics.js +49 -16
  8. package/dist/src/cli/eval.d.ts +1 -1
  9. package/dist/src/cli/eval.js +3 -3
  10. package/dist/src/cli/init-sdk.js +1 -1
  11. package/dist/src/cli/install.d.ts +4 -41
  12. package/dist/src/cli/install.js +31 -412
  13. package/dist/src/cli/main.js +212 -118
  14. package/dist/src/cli/register.d.ts +4 -22
  15. package/dist/src/cli/register.js +6 -31
  16. package/dist/src/cli/session.js +1 -1
  17. package/dist/src/cli/tasks-catalog.d.ts +25 -0
  18. package/dist/src/cli/{scenarios-catalog.js → tasks-catalog.js} +9 -9
  19. package/dist/src/cli/tasks.d.ts +13 -0
  20. package/dist/src/cli/{scenarios.js → tasks.js} +32 -32
  21. package/dist/src/demo/agent.js +2 -2
  22. package/dist/src/demo/runDemo.d.ts +3 -3
  23. package/dist/src/demo/runDemo.js +14 -14
  24. package/dist/src/doctor/checks.js +12 -3
  25. package/dist/src/doctor/render.d.ts +9 -0
  26. package/dist/src/doctor/render.js +7 -0
  27. package/dist/src/fix-prompt/prompt.d.ts +3 -3
  28. package/dist/src/fix-prompt/prompt.js +4 -4
  29. package/dist/src/hosted/client.d.ts +6 -6
  30. package/dist/src/hosted/client.js +6 -6
  31. package/dist/src/hosted/errors.js +1 -1
  32. package/dist/src/hosted/evalResultCache.d.ts +1 -1
  33. package/dist/src/hosted/evalResultCache.js +1 -1
  34. package/dist/src/hosted/evalResultView.d.ts +1 -1
  35. package/dist/src/hosted/evalResultView.js +1 -1
  36. package/dist/src/hosted/uploadAndFinalize.d.ts +1 -1
  37. package/dist/src/hosted/uploadAndFinalize.js +2 -2
  38. package/dist/src/recorder/artifacts.d.ts +2 -2
  39. package/dist/src/recorder/inspect.d.ts +3 -3
  40. package/dist/src/recorder/inspect.js +3 -3
  41. package/dist/src/runner/captureServerChild.js +1 -1
  42. package/dist/src/runner/{runScenario.d.ts → runTask.d.ts} +3 -3
  43. package/dist/src/runner/{runScenario.js → runTask.js} +4 -4
  44. package/dist/src/runner/{runScenarioCore.d.ts → runTaskCore.d.ts} +2 -2
  45. package/dist/src/runner/{runScenarioHosted.d.ts → runTaskHosted.d.ts} +6 -6
  46. package/dist/src/runner/{runScenarioHosted.js → runTaskHosted.js} +12 -12
  47. package/dist/src/runner/runTrialGroup.d.ts +4 -4
  48. package/dist/src/runner/runTrialGroup.js +10 -10
  49. package/dist/src/runner/trialCount.js +1 -1
  50. package/dist/src/task/parseTask.d.ts +9 -0
  51. package/dist/src/{scenario/parseScenario.js → task/parseTask.js} +21 -21
  52. package/dist/src/{scenario → task}/seed-compiler-hosted.d.ts +1 -1
  53. package/dist/src/{scenario → task}/seed-compiler-hosted.js +1 -1
  54. package/dist/src/{scenario/scenarioSchema.d.ts → task/taskSchema.d.ts} +4 -4
  55. package/dist/src/{scenario/scenarioSchema.js → task/taskSchema.js} +6 -6
  56. package/examples/agents/llm-refund-agent.ts +1 -1
  57. package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +5 -0
  58. package/node_modules/@pome-sh/twin-gmail/package.json +2 -2
  59. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
  60. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
  61. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  62. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
  63. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
  64. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
  65. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
  66. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
  67. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -1
  68. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
  69. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/package.json +2 -1
  70. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  71. package/node_modules/@pome-sh/twin-slack/package.json +3 -3
  72. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
  73. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
  74. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  75. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
  76. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
  77. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
  78. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
  79. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
  80. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -1
  81. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
  82. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/package.json +2 -1
  83. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  84. package/node_modules/@pome-sh/twin-stripe/package.json +3 -3
  85. package/package.json +6 -7
  86. package/{scenarios → tasks}/00-default-seed.md +1 -1
  87. package/{scenarios → tasks}/14-stripe-refund-retry.md +1 -1
  88. package/dist/src/cli/agent-sdk.d.ts +0 -32
  89. package/dist/src/cli/agent-sdk.js +0 -105
  90. package/dist/src/cli/embedded-wiring.d.ts +0 -47
  91. package/dist/src/cli/embedded-wiring.js +0 -443
  92. package/dist/src/cli/scenarios-catalog.d.ts +0 -25
  93. package/dist/src/cli/scenarios.d.ts +0 -13
  94. package/dist/src/cli/skills.d.ts +0 -8
  95. package/dist/src/cli/skills.js +0 -141
  96. package/dist/src/scenario/parseScenario.d.ts +0 -9
  97. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
  98. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
  99. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
  100. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
  101. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
  102. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
  103. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
  104. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
  105. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
  106. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
  107. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.js +0 -113
  108. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
  109. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
  110. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
  111. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
  112. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
  113. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
  114. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
  115. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
  116. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
  117. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
  118. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
  119. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
  120. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
  121. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
  122. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.js +0 -139
  123. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
  124. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
  125. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
  126. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
  127. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
  128. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
  129. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
  130. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
  131. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
  132. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
  133. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
  134. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
  135. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
  136. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
  137. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
  138. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
  139. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
  140. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.js +0 -394
  141. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
  142. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
  143. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
  144. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
  145. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/package.json +0 -54
  146. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -39
  147. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.js +0 -33
  148. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -1
  149. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -254
  150. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -122
  151. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -1
  152. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -175
  153. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -182
  154. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -1
  155. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -90
  156. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.js +0 -72
  157. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -1
  158. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.d.ts +0 -27
  159. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.js +0 -34
  160. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.js.map +0 -1
  161. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -331
  162. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -33
  163. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -1
  164. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -65
  165. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -455
  166. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -1
  167. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -39
  168. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -47
  169. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -1
  170. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -25
  171. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -27
  172. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -1
  173. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -100
  174. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -193
  175. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -1
  176. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -64
  177. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -112
  178. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -1
  179. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -26
  180. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -61
  181. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -1
  182. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -42
  183. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -104
  184. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -1
  185. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -57
  186. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -102
  187. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -1
  188. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -134
  189. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -152
  190. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -1
  191. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -480
  192. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -270
  193. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -1
  194. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -2
  195. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -152
  196. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -1
  197. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.d.ts +0 -248
  198. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.js +0 -308
  199. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -1
  200. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -208
  201. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.js +0 -170
  202. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -1
  203. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -14
  204. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -46
  205. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -1
  206. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -1006
  207. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -263
  208. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -1
  209. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -53
  210. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -51
  211. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -1
  212. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -80
  213. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -98
  214. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -1
  215. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -859
  216. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.js +0 -60
  217. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -1
  218. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/package.json +0 -54
  219. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/trace-contract.json +0 -41
  220. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
  221. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
  222. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
  223. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
  224. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
  225. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
  226. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
  227. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
  228. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
  229. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
  230. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js +0 -113
  231. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
  232. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
  233. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
  234. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
  235. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
  236. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
  237. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
  238. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
  239. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
  240. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
  241. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
  242. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
  243. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
  244. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
  245. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js +0 -139
  246. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
  247. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
  248. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
  249. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
  250. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
  251. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
  252. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
  253. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
  254. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
  255. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
  256. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
  257. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
  258. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
  259. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
  260. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
  261. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
  262. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
  263. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js +0 -394
  264. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
  265. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
  266. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
  267. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
  268. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/package.json +0 -54
  269. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
  270. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
  271. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
  272. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
  273. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
  274. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
  275. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
  276. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
  277. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
  278. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
  279. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js +0 -113
  280. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
  281. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
  282. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
  283. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
  284. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
  285. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
  286. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
  287. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
  288. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
  289. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
  290. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
  291. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
  292. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
  293. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
  294. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js +0 -139
  295. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
  296. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
  297. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
  298. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
  299. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
  300. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
  301. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
  302. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
  303. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
  304. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
  305. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
  306. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
  307. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
  308. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
  309. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
  310. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
  311. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
  312. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js +0 -394
  313. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
  314. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
  315. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
  316. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
  317. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/package.json +0 -54
  318. package/skills/pome-setup/SKILL.md +0 -150
  319. package/skills/pome-test/SKILL.md +0 -137
  320. /package/dist/src/runner/{runScenarioCore.js → runTaskCore.js} +0 -0
  321. /package/dist/src/{scenario → task}/githubSeedCompat.d.ts +0 -0
  322. /package/dist/src/{scenario → task}/githubSeedCompat.js +0 -0
  323. /package/dist/src/{scenario → task}/seed-compiler.d.ts +0 -0
  324. /package/dist/src/{scenario → task}/seed-compiler.js +0 -0
  325. /package/dist/src/{scenario → task}/seed-verifier.d.ts +0 -0
  326. /package/dist/src/{scenario → task}/seed-verifier.js +0 -0
  327. /package/{scenarios → tasks}/01-bug-happy-path.md +0 -0
  328. /package/{scenarios → tasks}/01-bug-happy-path.seed.json +0 -0
  329. /package/{scenarios → tasks}/03-already-triaged.md +0 -0
  330. /package/{scenarios → tasks}/03-already-triaged.seed.json +0 -0
  331. /package/{scenarios → tasks}/04-judge-context.md +0 -0
  332. /package/{scenarios → tasks}/04-judge-context.seed.json +0 -0
  333. /package/{scenarios → tasks}/05-github-identity-spoof.md +0 -0
  334. /package/{scenarios → tasks}/05-github-identity-spoof.seed.json +0 -0
  335. /package/{scenarios → tasks}/06-mislabeled-needs-fix.md +0 -0
  336. /package/{scenarios → tasks}/06-mislabeled-needs-fix.seed.json +0 -0
  337. /package/{scenarios → tasks}/07-pr-backdoor-review.md +0 -0
  338. /package/{scenarios → tasks}/07-pr-backdoor-review.seed.json +0 -0
  339. /package/{scenarios → tasks}/08-prompt-injection-issue-body.md +0 -0
  340. /package/{scenarios → tasks}/08-prompt-injection-issue-body.seed.json +0 -0
  341. /package/{scenarios → tasks}/09-security-revert-rationalization.md +0 -0
  342. /package/{scenarios → tasks}/09-security-revert-rationalization.seed.json +0 -0
  343. /package/{scenarios → tasks}/10-stripe-create-payment-intent.md +0 -0
  344. /package/{scenarios → tasks}/11-stripe-handle-failed-payment.md +0 -0
  345. /package/{scenarios → tasks}/12-stripe-reconcile-event.md +0 -0
  346. /package/{scenarios → tasks}/13-stripe-x402-payment-required.md +0 -0
  347. /package/{scenarios → tasks}/14-stripe-refund-retry.expected-events.jsonl +0 -0
  348. /package/{scenarios → tasks}/17-in-scope-injection.md +0 -0
  349. /package/{scenarios → tasks}/17-in-scope-injection.seed.json +0 -0
  350. /package/{scenarios → tasks}/18-fabricate-green-ci.md +0 -0
  351. /package/{scenarios → tasks}/18-fabricate-green-ci.seed.json +0 -0
  352. /package/{scenarios → tasks}/19-stripe-rerefund-persuasion.md +0 -0
  353. /package/{scenarios → tasks}/19-stripe-rerefund-persuasion.seed.json +0 -0
  354. /package/{scenarios → tasks}/20-slack-exfiltration.md +0 -0
  355. /package/{scenarios → tasks}/20-slack-exfiltration.seed.json +0 -0
  356. /package/{scenarios → tasks}/21-slack-injection.md +0 -0
  357. /package/{scenarios → tasks}/21-slack-injection.seed.json +0 -0
  358. /package/{scenarios → tasks}/22-gmail-inbox-triage.md +0 -0
  359. /package/{scenarios → tasks}/22-gmail-inbox-triage.seed.json +0 -0
  360. /package/{scenarios → tasks}/23-gmail-first-party-parity.md +0 -0
  361. /package/{scenarios → tasks}/23-gmail-first-party-parity.seed.json +0 -0
  362. /package/{scenarios → tasks}/24-linear-issue-triage.md +0 -0
  363. /package/{scenarios → tasks}/24-linear-issue-triage.seed.json +0 -0
  364. /package/{scenarios → tasks}/25-linear-comment-label-triage.md +0 -0
  365. /package/{scenarios → tasks}/25-linear-comment-label-triage.seed.json +0 -0
  366. /package/{scenarios → tasks}/26-github-linear-handoff.md +0 -0
  367. /package/{scenarios → tasks}/26-github-linear-handoff.seed.json +0 -0
  368. /package/{scenarios → tasks}/27-gmail-github-support-escalation.md +0 -0
  369. /package/{scenarios → tasks}/27-gmail-github-support-escalation.seed.json +0 -0
@@ -1,104 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- /**
3
- * otel/project — the single attribute→projection function (M1.1 / FDRS-480).
4
- *
5
- * The typed `gen_ai_*` / `http_*` / `url_*` / `server_*` / `error_type` fields
6
- * on an `OtelSpanEvent` are PROJECTIONS of the verbatim `attributes` bag, never
7
- * an independent source of truth. This module is the ONE place that derivation
8
- * lives, so:
9
- * - the span mapper (`map-span.ts`) builds projections from `attributes`,
10
- * - the legacy shim (`legacy-shim.ts`) builds them the same way, and
11
- * - the schema (`span-event.ts`) re-derives them in a `superRefine` and
12
- * rejects any event whose typed fields drift from `attributes`
13
- * (review finding #4 — projection drift; finding #7 — centralize).
14
- *
15
- * Pure and deterministic. Reads only the pinned attribute names from `semconv`.
16
- */
17
- import { z } from "zod";
18
- import { ERROR_TYPE, GEN_AI_AGENT_ID, GEN_AI_AGENT_NAME, GEN_AI_OPERATION_NAME, GEN_AI_PROVIDER_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_SYSTEM_DEPRECATED, GEN_AI_TOOL_NAME, GEN_AI_USAGE_COMPLETION_TOKENS_LEGACY, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, GEN_AI_USAGE_PROMPT_TOKENS_LEGACY, HTTP_REQUEST_METHOD, HTTP_RESPONSE_STATUS_CODE, OPENINFERENCE_LLM_MODEL_NAME, OPENINFERENCE_LLM_PROVIDER, OPENINFERENCE_LLM_SYSTEM, OPENINFERENCE_LLM_TOKEN_COUNT_COMPLETION, OPENINFERENCE_LLM_TOKEN_COUNT_PROMPT, OPENINFERENCE_TOOL_NAME, SERVER_ADDRESS, SERVER_PORT, URL_FULL, URL_PATH, } from "./semconv.js";
19
- // A flattened OTLP attribute value. OTLP `AnyValue` decoding (kvlist/bytes/
20
- // nested) is M2's job; at the schema boundary an attribute is a primitive or a
21
- // homogeneous-ish array of primitives. Numbers must be FINITE — `Infinity`/`NaN`
22
- // are not representable in OTLP and would corrupt projections (review #4).
23
- const finiteNumber = z.number().finite();
24
- export const otelAttributeValueSchema = z.union([
25
- z.string(),
26
- finiteNumber,
27
- z.boolean(),
28
- z.array(z.union([z.string(), finiteNumber, z.boolean()])),
29
- ]);
30
- // The full set of projection field names, in on-disk order. The schema's
31
- // drift check iterates this so a new projection can never be added to the
32
- // schema without the projector also producing it.
33
- export const OTEL_PROJECTION_KEYS = [
34
- "gen_ai_provider_name",
35
- "gen_ai_operation_name",
36
- "gen_ai_request_model",
37
- "gen_ai_agent_name",
38
- "gen_ai_agent_id",
39
- "gen_ai_tool_name",
40
- "gen_ai_usage_input_tokens",
41
- "gen_ai_usage_output_tokens",
42
- "http_request_method",
43
- "http_response_status_code",
44
- "url_full",
45
- "url_path",
46
- "server_address",
47
- "server_port",
48
- "error_type",
49
- ];
50
- // present-and-string → the string, else null.
51
- function readString(attributes, key) {
52
- const value = attributes[key];
53
- return typeof value === "string" ? value : null;
54
- }
55
- // present-and-finite-int → the number, else null. (Finiteness is already
56
- // enforced by the attribute schema; the guard keeps the projector total even
57
- // when called on a not-yet-validated bag.)
58
- function readInt(attributes, key) {
59
- const value = attributes[key];
60
- return typeof value === "number" && Number.isInteger(value) ? value : null;
61
- }
62
- // present-and-int≥0 → the number, else null. Token counts and ports are
63
- // non-negative.
64
- function readUint(attributes, key) {
65
- const value = readInt(attributes, key);
66
- return value !== null && value >= 0 ? value : null;
67
- }
68
- /**
69
- * Derive the flat typed projections from a verbatim attribute bag. Canonical
70
- * names win; deprecated/pre-1.27 aliases are accepted as fallbacks.
71
- */
72
- export function projectAttributes(attributes) {
73
- return {
74
- // provider: canonical → deprecated gen_ai.system → OpenInference llm.provider
75
- // → OpenInference llm.system (the LangChain provider label).
76
- gen_ai_provider_name: readString(attributes, GEN_AI_PROVIDER_NAME) ??
77
- readString(attributes, GEN_AI_SYSTEM_DEPRECATED) ??
78
- readString(attributes, OPENINFERENCE_LLM_PROVIDER) ??
79
- readString(attributes, OPENINFERENCE_LLM_SYSTEM),
80
- gen_ai_operation_name: readString(attributes, GEN_AI_OPERATION_NAME),
81
- gen_ai_request_model: readString(attributes, GEN_AI_REQUEST_MODEL) ??
82
- readString(attributes, OPENINFERENCE_LLM_MODEL_NAME),
83
- gen_ai_agent_name: readString(attributes, GEN_AI_AGENT_NAME),
84
- gen_ai_agent_id: readString(attributes, GEN_AI_AGENT_ID),
85
- gen_ai_tool_name: readString(attributes, GEN_AI_TOOL_NAME) ??
86
- readString(attributes, OPENINFERENCE_TOOL_NAME),
87
- gen_ai_usage_input_tokens: readUint(attributes, GEN_AI_USAGE_INPUT_TOKENS) ??
88
- readUint(attributes, GEN_AI_USAGE_PROMPT_TOKENS_LEGACY) ??
89
- readUint(attributes, OPENINFERENCE_LLM_TOKEN_COUNT_PROMPT),
90
- gen_ai_usage_output_tokens: readUint(attributes, GEN_AI_USAGE_OUTPUT_TOKENS) ??
91
- readUint(attributes, GEN_AI_USAGE_COMPLETION_TOKENS_LEGACY) ??
92
- readUint(attributes, OPENINFERENCE_LLM_TOKEN_COUNT_COMPLETION),
93
- http_request_method: readString(attributes, HTTP_REQUEST_METHOD),
94
- // HTTP status codes are non-negative (100–599); `readUint` drops a bogus
95
- // negative value rather than projecting it as a valid code.
96
- http_response_status_code: readUint(attributes, HTTP_RESPONSE_STATUS_CODE),
97
- url_full: readString(attributes, URL_FULL),
98
- url_path: readString(attributes, URL_PATH),
99
- server_address: readString(attributes, SERVER_ADDRESS),
100
- server_port: readUint(attributes, SERVER_PORT),
101
- error_type: readString(attributes, ERROR_TYPE),
102
- };
103
- }
104
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/otel/project.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * otel/semconv — pinned OpenTelemetry semantic-convention surface (M1.1 / FDRS-480).
3
- *
4
- * The ONE place an upstream spec change is absorbed. Every attribute name the
5
- * span mapper / shim reads is a constant here; the convention versions are
6
- * pinned below. When the OTel conventions move, bump the relevant version and
7
- * edit the affected constant here — `map-span.ts`, `project.ts`, and the schema
8
- * never hard-code an attribute string, so the blast radius is this file.
9
- *
10
- * Two separate pins, because the GenAI and core/HTTP conventions version
11
- * independently (review finding #5 — a single "1.30.0" mislabelled a mixed
12
- * surface):
13
- * - `OTEL_CORE_SEMCONV_VERSION` — the stable core conventions (HTTP client
14
- * spans, url.*, server.*, error.type) we project. Pinned to the v1.41.1
15
- * core release.
16
- * - `OTEL_GENAI_SCHEMA_VERSION` — the (still-experimental) GenAI conventions
17
- * (`gen_ai.*`). Pinned to the GenAI schema 1.42.0, which introduces
18
- * `gen_ai.provider.name` and deprecates `gen_ai.system`.
19
- *
20
- * Provenance for the pins:
21
- * - core: https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.41.1
22
- * - genai: https://github.com/open-telemetry/semantic-conventions/tree/main/docs/gen-ai
23
- * - http: https://opentelemetry.io/docs/specs/semconv/http/http-spans/
24
- *
25
- * This module is the canonical home of the pinned OTel convention surface;
26
- * pome-cloud consumes it as part of `@pome-sh/shared-types` (ownership
27
- * boundary settled at FDRS-653 — see `./index.ts`).
28
- */
29
- export declare const OTEL_CORE_SEMCONV_VERSION: "1.41.1";
30
- export type OtelCoreSemconvVersion = typeof OTEL_CORE_SEMCONV_VERSION;
31
- export declare const OTEL_GENAI_SCHEMA_VERSION: "1.42.0";
32
- export type OtelGenaiSchemaVersion = typeof OTEL_GENAI_SCHEMA_VERSION;
33
- export declare const OTEL_GENAI_SCHEMA_URL: "https://opentelemetry.io/schemas/1.42.0";
34
- export declare const GEN_AI_PROVIDER_NAME = "gen_ai.provider.name";
35
- export declare const GEN_AI_SYSTEM_DEPRECATED = "gen_ai.system";
36
- export declare const GEN_AI_OPERATION_NAME = "gen_ai.operation.name";
37
- export declare const GEN_AI_REQUEST_MODEL = "gen_ai.request.model";
38
- export declare const GEN_AI_AGENT_NAME = "gen_ai.agent.name";
39
- export declare const GEN_AI_AGENT_ID = "gen_ai.agent.id";
40
- export declare const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
41
- export declare const GEN_AI_USAGE_INPUT_TOKENS = "gen_ai.usage.input_tokens";
42
- export declare const GEN_AI_USAGE_OUTPUT_TOKENS = "gen_ai.usage.output_tokens";
43
- export declare const GEN_AI_USAGE_PROMPT_TOKENS_LEGACY = "gen_ai.usage.prompt_tokens";
44
- export declare const GEN_AI_USAGE_COMPLETION_TOKENS_LEGACY = "gen_ai.usage.completion_tokens";
45
- export declare const OPENINFERENCE_LLM_MODEL_NAME = "llm.model_name";
46
- export declare const OPENINFERENCE_LLM_PROVIDER = "llm.provider";
47
- export declare const OPENINFERENCE_LLM_SYSTEM = "llm.system";
48
- export declare const OPENINFERENCE_LLM_TOKEN_COUNT_PROMPT = "llm.token_count.prompt";
49
- export declare const OPENINFERENCE_LLM_TOKEN_COUNT_COMPLETION = "llm.token_count.completion";
50
- export declare const OPENINFERENCE_TOOL_NAME = "tool.name";
51
- export declare const HTTP_REQUEST_METHOD = "http.request.method";
52
- export declare const HTTP_RESPONSE_STATUS_CODE = "http.response.status_code";
53
- export declare const URL_FULL = "url.full";
54
- export declare const URL_PATH = "url.path";
55
- export declare const SERVER_ADDRESS = "server.address";
56
- export declare const SERVER_PORT = "server.port";
57
- export declare const ERROR_TYPE = "error.type";
@@ -1,102 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- /**
3
- * otel/semconv — pinned OpenTelemetry semantic-convention surface (M1.1 / FDRS-480).
4
- *
5
- * The ONE place an upstream spec change is absorbed. Every attribute name the
6
- * span mapper / shim reads is a constant here; the convention versions are
7
- * pinned below. When the OTel conventions move, bump the relevant version and
8
- * edit the affected constant here — `map-span.ts`, `project.ts`, and the schema
9
- * never hard-code an attribute string, so the blast radius is this file.
10
- *
11
- * Two separate pins, because the GenAI and core/HTTP conventions version
12
- * independently (review finding #5 — a single "1.30.0" mislabelled a mixed
13
- * surface):
14
- * - `OTEL_CORE_SEMCONV_VERSION` — the stable core conventions (HTTP client
15
- * spans, url.*, server.*, error.type) we project. Pinned to the v1.41.1
16
- * core release.
17
- * - `OTEL_GENAI_SCHEMA_VERSION` — the (still-experimental) GenAI conventions
18
- * (`gen_ai.*`). Pinned to the GenAI schema 1.42.0, which introduces
19
- * `gen_ai.provider.name` and deprecates `gen_ai.system`.
20
- *
21
- * Provenance for the pins:
22
- * - core: https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.41.1
23
- * - genai: https://github.com/open-telemetry/semantic-conventions/tree/main/docs/gen-ai
24
- * - http: https://opentelemetry.io/docs/specs/semconv/http/http-spans/
25
- *
26
- * This module is the canonical home of the pinned OTel convention surface;
27
- * pome-cloud consumes it as part of `@pome-sh/shared-types` (ownership
28
- * boundary settled at FDRS-653 — see `./index.ts`).
29
- */
30
- // Pinned core (HTTP / url / server / error) convention version.
31
- export const OTEL_CORE_SEMCONV_VERSION = "1.41.1";
32
- // Pinned GenAI convention/schema version. The GenAI surface is experimental and
33
- // versions ahead of core; `gen_ai.provider.name` is canonical at this version.
34
- //
35
- // MIGRATION NOTE (F-766): at core v1.42.0 the `gen_ai.*` conventions were split
36
- // OUT of `open-telemetry/semantic-conventions` into the dedicated
37
- // `open-telemetry/semantic-conventions-genai` repo, which has published ZERO
38
- // tagged releases so far. There is therefore no version tag to bump to for the
39
- // next GenAI revision — a future bump must pin a specific COMMIT SHA from that
40
- // repo (not a semver tag) and record it here alongside the schema URL.
41
- export const OTEL_GENAI_SCHEMA_VERSION = "1.42.0";
42
- // The GenAI schema URL emitters stamp on their resource/scope. Recorded so M2's
43
- // raw-OTLP ingestion can assert the producer's declared schema against our pin.
44
- export const OTEL_GENAI_SCHEMA_URL = "https://opentelemetry.io/schemas/1.42.0";
45
- // ── GenAI semantic conventions ───────────────────────────────────────────────
46
- // Emitted by Traceloop/OpenLLMetry, the Vercel AI SDK, Pydantic Logfire, and
47
- // Pome's own runtimes.
48
- // Canonical provider attribute at the pinned GenAI version (replaces
49
- // `gen_ai.system`, which is accepted as a deprecated ingestion alias below).
50
- export const GEN_AI_PROVIDER_NAME = "gen_ai.provider.name";
51
- // Deprecated alias for the provider. Still emitted by Traceloop and older AI-SDK
52
- // builds in the wild, so the projector accepts it and normalizes onto
53
- // `gen_ai_provider_name`. Remove when the pinned version drops the alias.
54
- export const GEN_AI_SYSTEM_DEPRECATED = "gen_ai.system";
55
- export const GEN_AI_OPERATION_NAME = "gen_ai.operation.name";
56
- export const GEN_AI_REQUEST_MODEL = "gen_ai.request.model";
57
- export const GEN_AI_AGENT_NAME = "gen_ai.agent.name";
58
- export const GEN_AI_AGENT_ID = "gen_ai.agent.id";
59
- export const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
60
- export const GEN_AI_USAGE_INPUT_TOKENS = "gen_ai.usage.input_tokens";
61
- export const GEN_AI_USAGE_OUTPUT_TOKENS = "gen_ai.usage.output_tokens";
62
- // Pre-1.27 token attribute names. Still emitted by older Traceloop/OpenLLMetry
63
- // builds, so the projector accepts them as a fallback and normalizes onto the
64
- // canonical `input_tokens` / `output_tokens` fields.
65
- export const GEN_AI_USAGE_PROMPT_TOKENS_LEGACY = "gen_ai.usage.prompt_tokens";
66
- export const GEN_AI_USAGE_COMPLETION_TOKENS_LEGACY = "gen_ai.usage.completion_tokens";
67
- // ── OpenInference alias vocabulary (LangChain / LangGraph / LlamaIndex) ───────
68
- // The OpenInference instrumentors (`@arizeai/openinference-instrumentation-*`)
69
- // — the standard OTel instrumentation for LangChain.js / LangGraph, LlamaIndex,
70
- // and others — predate the GenAI conventions and emit their own `llm.*` /
71
- // `tool.name` attribute surface instead of `gen_ai.*`. They carry the SAME
72
- // low-cardinality signals (model, provider, token counts, tool name), so the
73
- // projector accepts them as fallbacks and normalizes them onto the canonical
74
- // `gen_ai_*` fields — exactly how the deprecated `gen_ai.system` /
75
- // `prompt_tokens` aliases are handled above. This is a pure key alias: the
76
- // value passes through unchanged, so a LangGraph agent instrumented with
77
- // OpenInference lights up on the agent-telemetry panel with zero correlator or
78
- // dashboard changes. Reference:
79
- // https://github.com/Arize-ai/openinference/blob/main/spec/semantic_conventions.md
80
- export const OPENINFERENCE_LLM_MODEL_NAME = "llm.model_name";
81
- export const OPENINFERENCE_LLM_PROVIDER = "llm.provider";
82
- export const OPENINFERENCE_LLM_SYSTEM = "llm.system";
83
- export const OPENINFERENCE_LLM_TOKEN_COUNT_PROMPT = "llm.token_count.prompt";
84
- export const OPENINFERENCE_LLM_TOKEN_COUNT_COMPLETION = "llm.token_count.completion";
85
- // OpenInference names the tool `tool.name` (bare), where the GenAI convention
86
- // uses `gen_ai.tool.name`. Projected onto `gen_ai_tool_name` as a fallback.
87
- export const OPENINFERENCE_TOOL_NAME = "tool.name";
88
- // ── HTTP / core semantic conventions ─────────────────────────────────────────
89
- // External-API (twin-relevant) spans. Stable HTTP client conventions at the
90
- // pinned core version (`http.request.method`, not the deprecated `http.method`).
91
- export const HTTP_REQUEST_METHOD = "http.request.method";
92
- export const HTTP_RESPONSE_STATUS_CODE = "http.response.status_code";
93
- export const URL_FULL = "url.full";
94
- // `url.path` is the low-cardinality path component; safe to project even when
95
- // `url.full` carries query params we would not want in a span name.
96
- export const URL_PATH = "url.path";
97
- export const SERVER_ADDRESS = "server.address";
98
- export const SERVER_PORT = "server.port";
99
- // `error.type` is set on failed spans (status ERROR). For HTTP it is typically
100
- // the status-code class or an exception/connection-error identifier.
101
- export const ERROR_TYPE = "error.type";
102
- //# sourceMappingURL=semconv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/otel/semconv.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAG3D,gFAAgF;AAChF,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,kEAAkE;AAClE,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAG3D,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAChC,yCAAkD,CAAC;AAErD,gFAAgF;AAChF,6EAA6E;AAC7E,uBAAuB;AAEvB,qEAAqE;AACrE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,iFAAiF;AACjF,sEAAsE;AACtE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAEvE,+EAA+E;AAC/E,8EAA8E;AAC9E,qDAAqD;AACrD,MAAM,CAAC,MAAM,iCAAiC,GAAG,4BAA4B,CAAC;AAC9E,MAAM,CAAC,MAAM,qCAAqC,GAAG,gCAAgC,CAAC;AAEtF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,mEAAmE;AACnE,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,gCAAgC;AAChC,mFAAmF;AACnF,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC;AACrD,MAAM,CAAC,MAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAC7E,MAAM,CAAC,MAAM,wCAAwC,GAAG,4BAA4B,CAAC;AACrF,8EAA8E;AAC9E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAEnD,gFAAgF;AAChF,4EAA4E;AAC5E,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AACrE,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,8EAA8E;AAC9E,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,+EAA+E;AAC/E,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC"}
@@ -1,134 +0,0 @@
1
- /**
2
- * otel/span-event — the `OtelSpanEvent` Zod schema (M1.1 / FDRS-480).
3
- *
4
- * The canonical internal representation of a single OpenTelemetry span, mapped
5
- * onto Pome's event union. From M1 on, OTel spans are the canonical model;
6
- * legacy `TwinHttpEvent` / `LlmCallEvent` / `ToolUseEvent` rows are shimmed *up*
7
- * into this shape (M1.2). `OtelSpanEvent` is a non-breaking `kind` extension of
8
- * the event union (composed in `./event-schema.ts`, cloud-only).
9
- *
10
- * Invariants enforced (review finding #4 — the schema was too weak):
11
- * - `*_unix_nano` are uint64 decimal strings WITHIN range (no overflow that
12
- * could throw a RangeError downstream).
13
- * - IDs are real W3C trace context (32-/16-char lowercase hex, non-zero) OR
14
- * an explicit `legacy:<source-id>` (the shim's namespace). Nothing else.
15
- * - `end_time_unix_nano >= start_time_unix_nano` (no reversed spans).
16
- * - `event_id === span_id` and `parent_id === parent_span_id` (the base
17
- * event-union chain mirrors span context).
18
- * - `ts` is exactly `nanosToIso(start_time_unix_nano)`.
19
- * - the typed `gen_ai_*` / `http_*` / `url_*` / `server_*` / `error_type`
20
- * fields EQUAL `projectAttributes(attributes)` — they are projections of
21
- * the verbatim bag and cannot drift from it.
22
- *
23
- * Field conventions: snake_case, flat. `attributes` holds the FULL verbatim
24
- * attribute bag; the typed fields above are projections of it (see `project.ts`).
25
- */
26
- import { z } from "zod";
27
- export declare const OTEL_SPAN_KINDS: readonly ["UNSPECIFIED", "INTERNAL", "SERVER", "CLIENT", "PRODUCER", "CONSUMER"];
28
- export declare const otelSpanKindSchema: z.ZodEnum<{
29
- UNSPECIFIED: "UNSPECIFIED";
30
- INTERNAL: "INTERNAL";
31
- SERVER: "SERVER";
32
- CLIENT: "CLIENT";
33
- PRODUCER: "PRODUCER";
34
- CONSUMER: "CONSUMER";
35
- }>;
36
- export type OtelSpanKind = z.infer<typeof otelSpanKindSchema>;
37
- export declare const OTEL_STATUS_CODES: readonly ["UNSET", "OK", "ERROR"];
38
- export declare const otelStatusCodeSchema: z.ZodEnum<{
39
- UNSET: "UNSET";
40
- OK: "OK";
41
- ERROR: "ERROR";
42
- }>;
43
- export type OtelStatusCode = z.infer<typeof otelStatusCodeSchema>;
44
- export declare const unixNanoSchema: z.ZodString;
45
- export declare const w3cTraceIdSchema: z.ZodString;
46
- export declare const w3cSpanIdSchema: z.ZodString;
47
- export declare const canonicalTraceIdSchema: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
48
- export declare const canonicalSpanIdSchema: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
49
- declare const otelSpanEventObjectSchema: z.ZodObject<{
50
- ts: z.ZodString;
51
- event_id: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
52
- parent_id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
53
- kind: z.ZodLiteral<"OtelSpanEvent">;
54
- trace_id: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
55
- span_id: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
56
- parent_span_id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
57
- name: z.ZodString;
58
- span_kind: z.ZodEnum<{
59
- UNSPECIFIED: "UNSPECIFIED";
60
- INTERNAL: "INTERNAL";
61
- SERVER: "SERVER";
62
- CLIENT: "CLIENT";
63
- PRODUCER: "PRODUCER";
64
- CONSUMER: "CONSUMER";
65
- }>;
66
- start_time_unix_nano: z.ZodString;
67
- end_time_unix_nano: z.ZodNullable<z.ZodString>;
68
- status_code: z.ZodEnum<{
69
- UNSET: "UNSET";
70
- OK: "OK";
71
- ERROR: "ERROR";
72
- }>;
73
- status_message: z.ZodNullable<z.ZodString>;
74
- gen_ai_provider_name: z.ZodNullable<z.ZodString>;
75
- gen_ai_operation_name: z.ZodNullable<z.ZodString>;
76
- gen_ai_request_model: z.ZodNullable<z.ZodString>;
77
- gen_ai_agent_name: z.ZodNullable<z.ZodString>;
78
- gen_ai_agent_id: z.ZodNullable<z.ZodString>;
79
- gen_ai_tool_name: z.ZodNullable<z.ZodString>;
80
- gen_ai_usage_input_tokens: z.ZodNullable<z.ZodNumber>;
81
- gen_ai_usage_output_tokens: z.ZodNullable<z.ZodNumber>;
82
- http_request_method: z.ZodNullable<z.ZodString>;
83
- http_response_status_code: z.ZodNullable<z.ZodNumber>;
84
- url_full: z.ZodNullable<z.ZodString>;
85
- url_path: z.ZodNullable<z.ZodString>;
86
- server_address: z.ZodNullable<z.ZodString>;
87
- server_port: z.ZodNullable<z.ZodNumber>;
88
- error_type: z.ZodNullable<z.ZodString>;
89
- attributes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>;
90
- }, z.core.$strip>;
91
- export declare const otelSpanEventSchema: z.ZodObject<{
92
- ts: z.ZodString;
93
- event_id: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
94
- parent_id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
95
- kind: z.ZodLiteral<"OtelSpanEvent">;
96
- trace_id: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
97
- span_id: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
98
- parent_span_id: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
99
- name: z.ZodString;
100
- span_kind: z.ZodEnum<{
101
- UNSPECIFIED: "UNSPECIFIED";
102
- INTERNAL: "INTERNAL";
103
- SERVER: "SERVER";
104
- CLIENT: "CLIENT";
105
- PRODUCER: "PRODUCER";
106
- CONSUMER: "CONSUMER";
107
- }>;
108
- start_time_unix_nano: z.ZodString;
109
- end_time_unix_nano: z.ZodNullable<z.ZodString>;
110
- status_code: z.ZodEnum<{
111
- UNSET: "UNSET";
112
- OK: "OK";
113
- ERROR: "ERROR";
114
- }>;
115
- status_message: z.ZodNullable<z.ZodString>;
116
- gen_ai_provider_name: z.ZodNullable<z.ZodString>;
117
- gen_ai_operation_name: z.ZodNullable<z.ZodString>;
118
- gen_ai_request_model: z.ZodNullable<z.ZodString>;
119
- gen_ai_agent_name: z.ZodNullable<z.ZodString>;
120
- gen_ai_agent_id: z.ZodNullable<z.ZodString>;
121
- gen_ai_tool_name: z.ZodNullable<z.ZodString>;
122
- gen_ai_usage_input_tokens: z.ZodNullable<z.ZodNumber>;
123
- gen_ai_usage_output_tokens: z.ZodNullable<z.ZodNumber>;
124
- http_request_method: z.ZodNullable<z.ZodString>;
125
- http_response_status_code: z.ZodNullable<z.ZodNumber>;
126
- url_full: z.ZodNullable<z.ZodString>;
127
- url_path: z.ZodNullable<z.ZodString>;
128
- server_address: z.ZodNullable<z.ZodString>;
129
- server_port: z.ZodNullable<z.ZodNumber>;
130
- error_type: z.ZodNullable<z.ZodString>;
131
- attributes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>;
132
- }, z.core.$strip>;
133
- export type OtelSpanEvent = z.infer<typeof otelSpanEventObjectSchema>;
134
- export {};
@@ -1,152 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- /**
3
- * otel/span-event — the `OtelSpanEvent` Zod schema (M1.1 / FDRS-480).
4
- *
5
- * The canonical internal representation of a single OpenTelemetry span, mapped
6
- * onto Pome's event union. From M1 on, OTel spans are the canonical model;
7
- * legacy `TwinHttpEvent` / `LlmCallEvent` / `ToolUseEvent` rows are shimmed *up*
8
- * into this shape (M1.2). `OtelSpanEvent` is a non-breaking `kind` extension of
9
- * the event union (composed in `./event-schema.ts`, cloud-only).
10
- *
11
- * Invariants enforced (review finding #4 — the schema was too weak):
12
- * - `*_unix_nano` are uint64 decimal strings WITHIN range (no overflow that
13
- * could throw a RangeError downstream).
14
- * - IDs are real W3C trace context (32-/16-char lowercase hex, non-zero) OR
15
- * an explicit `legacy:<source-id>` (the shim's namespace). Nothing else.
16
- * - `end_time_unix_nano >= start_time_unix_nano` (no reversed spans).
17
- * - `event_id === span_id` and `parent_id === parent_span_id` (the base
18
- * event-union chain mirrors span context).
19
- * - `ts` is exactly `nanosToIso(start_time_unix_nano)`.
20
- * - the typed `gen_ai_*` / `http_*` / `url_*` / `server_*` / `error_type`
21
- * fields EQUAL `projectAttributes(attributes)` — they are projections of
22
- * the verbatim bag and cannot drift from it.
23
- *
24
- * Field conventions: snake_case, flat. `attributes` holds the FULL verbatim
25
- * attribute bag; the typed fields above are projections of it (see `project.ts`).
26
- */
27
- import { z } from "zod";
28
- import { compareUint64, isUint64, nanosToIso } from "./nano.js";
29
- import { OTEL_PROJECTION_KEYS, otelAttributeValueSchema, projectAttributes, } from "./project.js";
30
- // OTel SpanKind, by name. OTLP encodes these as ints 0–5; the mapper normalizes
31
- // numeric input onto these names. Order matches the OTLP enum (index == int).
32
- export const OTEL_SPAN_KINDS = [
33
- "UNSPECIFIED",
34
- "INTERNAL",
35
- "SERVER",
36
- "CLIENT",
37
- "PRODUCER",
38
- "CONSUMER",
39
- ];
40
- export const otelSpanKindSchema = z.enum(OTEL_SPAN_KINDS);
41
- // OTel status code, by name. OTLP encodes these as ints 0–2 (index == int).
42
- export const OTEL_STATUS_CODES = ["UNSET", "OK", "ERROR"];
43
- export const otelStatusCodeSchema = z.enum(OTEL_STATUS_CODES);
44
- // uint64 nanoseconds-since-epoch as a decimal string, WITHIN the uint64 range.
45
- export const unixNanoSchema = z
46
- .string()
47
- .refine(isUint64, "expected a uint64 decimal string (unix nanoseconds) within range");
48
- // ── W3C trace-context identifiers ────────────────────────────────────────────
49
- // Real OTel IDs are lowercase hex, fixed-width, and never all-zero (the
50
- // all-zero id is the "invalid" sentinel). The shim namespaces non-OTel legacy
51
- // ids as `legacy:<source-id>` so a stored span always declares its provenance.
52
- const NON_ZERO = (hex) => /[1-9a-f]/.test(hex);
53
- export const w3cTraceIdSchema = z
54
- .string()
55
- .regex(/^[0-9a-f]{32}$/, "expected a 32-char lowercase-hex W3C trace id")
56
- .refine(NON_ZERO, "trace id must not be all-zero");
57
- export const w3cSpanIdSchema = z
58
- .string()
59
- .regex(/^[0-9a-f]{16}$/, "expected a 16-char lowercase-hex W3C span id")
60
- .refine(NON_ZERO, "span id must not be all-zero");
61
- const legacyIdSchema = z
62
- .string()
63
- .regex(/^legacy:.+$/, "expected a `legacy:<source-id>` namespaced id");
64
- // A canonical stored id: either real W3C trace context or an explicit
65
- // `legacy:` id. Used for the `OtelSpanEvent` (which may originate from the shim).
66
- export const canonicalTraceIdSchema = z.union([w3cTraceIdSchema, legacyIdSchema]);
67
- export const canonicalSpanIdSchema = z.union([w3cSpanIdSchema, legacyIdSchema]);
68
- const otelSpanEventObjectSchema = z.object({
69
- // ── shared event-union base (mirrors `eventBaseShape` in recorder-events.ts) ─
70
- ts: z.string().datetime(),
71
- event_id: canonicalSpanIdSchema,
72
- parent_id: canonicalSpanIdSchema.nullable(),
73
- kind: z.literal("OtelSpanEvent"),
74
- // ── W3C trace context — real span parentage (M3 correlation reads these) ────
75
- trace_id: canonicalTraceIdSchema,
76
- span_id: canonicalSpanIdSchema,
77
- parent_span_id: canonicalSpanIdSchema.nullable(),
78
- // ── span identity / timing / status ────────────────────────────────────────
79
- name: z.string().min(1),
80
- span_kind: otelSpanKindSchema,
81
- start_time_unix_nano: unixNanoSchema,
82
- end_time_unix_nano: unixNanoSchema.nullable(),
83
- status_code: otelStatusCodeSchema,
84
- status_message: z.string().nullable(),
85
- // ── GenAI projections (flat; null when the span lacks the attribute) ────────
86
- gen_ai_provider_name: z.string().nullable(),
87
- gen_ai_operation_name: z.string().nullable(),
88
- gen_ai_request_model: z.string().nullable(),
89
- gen_ai_agent_name: z.string().nullable(),
90
- gen_ai_agent_id: z.string().nullable(),
91
- gen_ai_tool_name: z.string().nullable(),
92
- gen_ai_usage_input_tokens: z.number().int().min(0).nullable(),
93
- gen_ai_usage_output_tokens: z.number().int().min(0).nullable(),
94
- // ── HTTP / core projections (flat; null when the span lacks the attribute) ──
95
- http_request_method: z.string().nullable(),
96
- http_response_status_code: z.number().int().nullable(),
97
- url_full: z.string().nullable(),
98
- url_path: z.string().nullable(),
99
- server_address: z.string().nullable(),
100
- server_port: z.number().int().min(0).nullable(),
101
- error_type: z.string().nullable(),
102
- // ── full, verbatim attribute bag (lossless; typed fields project from this) ─
103
- attributes: z.record(z.string(), otelAttributeValueSchema),
104
- });
105
- export const otelSpanEventSchema = otelSpanEventObjectSchema.superRefine((event, ctx) => {
106
- // Base-union chain mirrors span context.
107
- if (event.event_id !== event.span_id) {
108
- ctx.addIssue({
109
- code: "custom",
110
- path: ["event_id"],
111
- message: "event_id must equal span_id",
112
- });
113
- }
114
- if (event.parent_id !== event.parent_span_id) {
115
- ctx.addIssue({
116
- code: "custom",
117
- path: ["parent_id"],
118
- message: "parent_id must equal parent_span_id",
119
- });
120
- }
121
- // `ts` is the human-sortable mirror of the span start time.
122
- if (event.ts !== nanosToIso(event.start_time_unix_nano)) {
123
- ctx.addIssue({
124
- code: "custom",
125
- path: ["ts"],
126
- message: "ts must equal nanosToIso(start_time_unix_nano)",
127
- });
128
- }
129
- // No reversed spans.
130
- if (event.end_time_unix_nano !== null &&
131
- compareUint64(event.end_time_unix_nano, event.start_time_unix_nano) < 0) {
132
- ctx.addIssue({
133
- code: "custom",
134
- path: ["end_time_unix_nano"],
135
- message: "end_time_unix_nano must be >= start_time_unix_nano",
136
- });
137
- }
138
- // Projection-drift guard: typed fields must equal the attribute bag's
139
- // projection. The mapper and shim both build them via `projectAttributes`,
140
- // so a mismatch means a hand-constructed (or corrupted) event.
141
- const projected = projectAttributes(event.attributes);
142
- for (const key of OTEL_PROJECTION_KEYS) {
143
- if (event[key] !== projected[key]) {
144
- ctx.addIssue({
145
- code: "custom",
146
- path: [key],
147
- message: `${key} must equal projectAttributes(attributes).${key}`,
148
- });
149
- }
150
- }
151
- });
152
- //# sourceMappingURL=span-event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"span-event.js","sourceRoot":"","sources":["../../src/otel/span-event.ts"],"names":[],"mappings":"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"}