@pome-sh/cli 0.5.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 (359) hide show
  1. package/README.md +4 -4
  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 +4 -2
  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/main.js +200 -89
  12. package/dist/src/cli/register.d.ts +4 -0
  13. package/dist/src/cli/register.js +5 -0
  14. package/dist/src/cli/session.js +1 -1
  15. package/dist/src/cli/tasks-catalog.d.ts +25 -0
  16. package/dist/src/cli/{scenarios-catalog.js → tasks-catalog.js} +9 -9
  17. package/dist/src/cli/tasks.d.ts +13 -0
  18. package/dist/src/cli/{scenarios.js → tasks.js} +32 -32
  19. package/dist/src/demo/agent.js +2 -2
  20. package/dist/src/demo/runDemo.d.ts +3 -3
  21. package/dist/src/demo/runDemo.js +14 -14
  22. package/dist/src/doctor/checks.js +11 -2
  23. package/dist/src/doctor/render.d.ts +9 -0
  24. package/dist/src/doctor/render.js +7 -0
  25. package/dist/src/fix-prompt/prompt.d.ts +3 -3
  26. package/dist/src/fix-prompt/prompt.js +4 -4
  27. package/dist/src/hosted/client.d.ts +6 -6
  28. package/dist/src/hosted/client.js +6 -6
  29. package/dist/src/hosted/errors.js +1 -1
  30. package/dist/src/hosted/evalResultCache.d.ts +1 -1
  31. package/dist/src/hosted/evalResultCache.js +1 -1
  32. package/dist/src/hosted/evalResultView.d.ts +1 -1
  33. package/dist/src/hosted/evalResultView.js +1 -1
  34. package/dist/src/hosted/uploadAndFinalize.d.ts +1 -1
  35. package/dist/src/hosted/uploadAndFinalize.js +2 -2
  36. package/dist/src/recorder/artifacts.d.ts +2 -2
  37. package/dist/src/recorder/inspect.d.ts +3 -3
  38. package/dist/src/recorder/inspect.js +3 -3
  39. package/dist/src/runner/captureServerChild.js +1 -1
  40. package/dist/src/runner/{runScenario.d.ts → runTask.d.ts} +3 -3
  41. package/dist/src/runner/{runScenario.js → runTask.js} +4 -4
  42. package/dist/src/runner/{runScenarioCore.d.ts → runTaskCore.d.ts} +2 -2
  43. package/dist/src/runner/{runScenarioHosted.d.ts → runTaskHosted.d.ts} +6 -6
  44. package/dist/src/runner/{runScenarioHosted.js → runTaskHosted.js} +12 -12
  45. package/dist/src/runner/runTrialGroup.d.ts +4 -4
  46. package/dist/src/runner/runTrialGroup.js +10 -10
  47. package/dist/src/runner/trialCount.js +1 -1
  48. package/dist/src/task/parseTask.d.ts +9 -0
  49. package/dist/src/{scenario/parseScenario.js → task/parseTask.js} +21 -21
  50. package/dist/src/{scenario → task}/seed-compiler-hosted.d.ts +1 -1
  51. package/dist/src/{scenario → task}/seed-compiler-hosted.js +1 -1
  52. package/dist/src/{scenario/scenarioSchema.d.ts → task/taskSchema.d.ts} +4 -4
  53. package/dist/src/{scenario/scenarioSchema.js → task/taskSchema.js} +6 -6
  54. package/examples/agents/llm-refund-agent.ts +1 -1
  55. package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +5 -0
  56. package/node_modules/@pome-sh/twin-gmail/package.json +2 -2
  57. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
  58. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
  59. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  60. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
  61. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
  62. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
  63. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
  64. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
  65. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -1
  66. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
  67. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/package.json +2 -1
  68. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  69. package/node_modules/@pome-sh/twin-slack/package.json +3 -3
  70. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
  71. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
  72. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  73. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
  74. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
  75. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
  76. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
  77. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
  78. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -1
  79. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
  80. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/package.json +2 -1
  81. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  82. package/node_modules/@pome-sh/twin-stripe/package.json +3 -3
  83. package/package.json +6 -6
  84. package/{scenarios → tasks}/00-default-seed.md +1 -1
  85. package/{scenarios → tasks}/14-stripe-refund-retry.md +1 -1
  86. package/dist/src/cli/scenarios-catalog.d.ts +0 -25
  87. package/dist/src/cli/scenarios.d.ts +0 -13
  88. package/dist/src/scenario/parseScenario.d.ts +0 -9
  89. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
  90. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
  91. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
  92. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
  93. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
  94. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
  95. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
  96. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
  97. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
  98. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
  99. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.js +0 -113
  100. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
  101. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
  102. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
  103. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
  104. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
  105. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
  106. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
  107. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
  108. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
  109. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
  110. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
  111. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
  112. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
  113. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
  114. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.js +0 -139
  115. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
  116. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
  117. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
  118. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
  119. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
  120. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
  121. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
  122. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
  123. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
  124. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
  125. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
  126. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
  127. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
  128. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
  129. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
  130. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
  131. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
  132. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.js +0 -394
  133. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
  134. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
  135. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
  136. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
  137. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/package.json +0 -54
  138. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -39
  139. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.js +0 -33
  140. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -1
  141. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -254
  142. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -122
  143. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -1
  144. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -175
  145. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -182
  146. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -1
  147. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -90
  148. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.js +0 -72
  149. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -1
  150. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.d.ts +0 -27
  151. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.js +0 -34
  152. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.js.map +0 -1
  153. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -331
  154. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -33
  155. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -1
  156. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -65
  157. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -455
  158. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -1
  159. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -39
  160. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -47
  161. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -1
  162. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -25
  163. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -27
  164. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -1
  165. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -100
  166. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -193
  167. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -1
  168. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -64
  169. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -112
  170. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -1
  171. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -26
  172. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -61
  173. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -1
  174. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -42
  175. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -104
  176. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -1
  177. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -57
  178. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -102
  179. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -1
  180. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -134
  181. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -152
  182. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -1
  183. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -480
  184. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -270
  185. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -1
  186. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -2
  187. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -152
  188. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -1
  189. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.d.ts +0 -248
  190. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.js +0 -308
  191. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -1
  192. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -208
  193. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.js +0 -170
  194. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -1
  195. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -14
  196. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -46
  197. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -1
  198. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -1006
  199. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -263
  200. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -1
  201. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -53
  202. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -51
  203. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -1
  204. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -80
  205. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -98
  206. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -1
  207. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -859
  208. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.js +0 -60
  209. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -1
  210. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/package.json +0 -54
  211. package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/trace-contract.json +0 -41
  212. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
  213. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
  214. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
  215. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
  216. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
  217. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
  218. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
  219. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
  220. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
  221. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
  222. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js +0 -113
  223. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
  224. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
  225. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
  226. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
  227. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
  228. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
  229. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
  230. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
  231. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
  232. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
  233. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
  234. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
  235. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
  236. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
  237. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js +0 -139
  238. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
  239. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
  240. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
  241. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
  242. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
  243. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
  244. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
  245. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
  246. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
  247. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
  248. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
  249. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
  250. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
  251. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
  252. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
  253. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
  254. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
  255. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js +0 -394
  256. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
  257. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
  258. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
  259. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
  260. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/package.json +0 -54
  261. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
  262. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
  263. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
  264. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
  265. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
  266. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
  267. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
  268. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
  269. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
  270. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
  271. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js +0 -113
  272. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
  273. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
  274. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
  275. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
  276. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
  277. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
  278. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
  279. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
  280. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
  281. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
  282. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
  283. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
  284. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
  285. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
  286. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js +0 -139
  287. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
  288. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
  289. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
  290. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
  291. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
  292. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
  293. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
  294. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
  295. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
  296. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
  297. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
  298. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
  299. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
  300. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
  301. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
  302. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
  303. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
  304. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js +0 -394
  305. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
  306. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
  307. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
  308. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
  309. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/package.json +0 -54
  310. /package/dist/src/runner/{runScenarioCore.js → runTaskCore.js} +0 -0
  311. /package/dist/src/{scenario → task}/githubSeedCompat.d.ts +0 -0
  312. /package/dist/src/{scenario → task}/githubSeedCompat.js +0 -0
  313. /package/dist/src/{scenario → task}/seed-compiler.d.ts +0 -0
  314. /package/dist/src/{scenario → task}/seed-compiler.js +0 -0
  315. /package/dist/src/{scenario → task}/seed-verifier.d.ts +0 -0
  316. /package/dist/src/{scenario → task}/seed-verifier.js +0 -0
  317. /package/{scenarios → tasks}/01-bug-happy-path.md +0 -0
  318. /package/{scenarios → tasks}/01-bug-happy-path.seed.json +0 -0
  319. /package/{scenarios → tasks}/03-already-triaged.md +0 -0
  320. /package/{scenarios → tasks}/03-already-triaged.seed.json +0 -0
  321. /package/{scenarios → tasks}/04-judge-context.md +0 -0
  322. /package/{scenarios → tasks}/04-judge-context.seed.json +0 -0
  323. /package/{scenarios → tasks}/05-github-identity-spoof.md +0 -0
  324. /package/{scenarios → tasks}/05-github-identity-spoof.seed.json +0 -0
  325. /package/{scenarios → tasks}/06-mislabeled-needs-fix.md +0 -0
  326. /package/{scenarios → tasks}/06-mislabeled-needs-fix.seed.json +0 -0
  327. /package/{scenarios → tasks}/07-pr-backdoor-review.md +0 -0
  328. /package/{scenarios → tasks}/07-pr-backdoor-review.seed.json +0 -0
  329. /package/{scenarios → tasks}/08-prompt-injection-issue-body.md +0 -0
  330. /package/{scenarios → tasks}/08-prompt-injection-issue-body.seed.json +0 -0
  331. /package/{scenarios → tasks}/09-security-revert-rationalization.md +0 -0
  332. /package/{scenarios → tasks}/09-security-revert-rationalization.seed.json +0 -0
  333. /package/{scenarios → tasks}/10-stripe-create-payment-intent.md +0 -0
  334. /package/{scenarios → tasks}/11-stripe-handle-failed-payment.md +0 -0
  335. /package/{scenarios → tasks}/12-stripe-reconcile-event.md +0 -0
  336. /package/{scenarios → tasks}/13-stripe-x402-payment-required.md +0 -0
  337. /package/{scenarios → tasks}/14-stripe-refund-retry.expected-events.jsonl +0 -0
  338. /package/{scenarios → tasks}/17-in-scope-injection.md +0 -0
  339. /package/{scenarios → tasks}/17-in-scope-injection.seed.json +0 -0
  340. /package/{scenarios → tasks}/18-fabricate-green-ci.md +0 -0
  341. /package/{scenarios → tasks}/18-fabricate-green-ci.seed.json +0 -0
  342. /package/{scenarios → tasks}/19-stripe-rerefund-persuasion.md +0 -0
  343. /package/{scenarios → tasks}/19-stripe-rerefund-persuasion.seed.json +0 -0
  344. /package/{scenarios → tasks}/20-slack-exfiltration.md +0 -0
  345. /package/{scenarios → tasks}/20-slack-exfiltration.seed.json +0 -0
  346. /package/{scenarios → tasks}/21-slack-injection.md +0 -0
  347. /package/{scenarios → tasks}/21-slack-injection.seed.json +0 -0
  348. /package/{scenarios → tasks}/22-gmail-inbox-triage.md +0 -0
  349. /package/{scenarios → tasks}/22-gmail-inbox-triage.seed.json +0 -0
  350. /package/{scenarios → tasks}/23-gmail-first-party-parity.md +0 -0
  351. /package/{scenarios → tasks}/23-gmail-first-party-parity.seed.json +0 -0
  352. /package/{scenarios → tasks}/24-linear-issue-triage.md +0 -0
  353. /package/{scenarios → tasks}/24-linear-issue-triage.seed.json +0 -0
  354. /package/{scenarios → tasks}/25-linear-comment-label-triage.md +0 -0
  355. /package/{scenarios → tasks}/25-linear-comment-label-triage.seed.json +0 -0
  356. /package/{scenarios → tasks}/26-github-linear-handoff.md +0 -0
  357. /package/{scenarios → tasks}/26-github-linear-handoff.seed.json +0 -0
  358. /package/{scenarios → tasks}/27-gmail-github-support-escalation.md +0 -0
  359. /package/{scenarios → tasks}/27-gmail-github-support-escalation.seed.json +0 -0
@@ -1,139 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // `@pome-sh/sdk` — public surface for community twin authors.
3
- // `defineTwin()` returns data booted by `serve()` from `@pome-sh/sdk/server`.
4
- // The SDK enforces recording, mutation, and reserved-route invariants.
5
- import { z } from "zod";
6
- import { recorderEventSchema, recorderFidelitySchema, } from "@pome-sh/shared-types";
7
- export { recorderEventSchema, recorderFidelitySchema };
8
- export { openTwinDatabase } from "./db.js";
9
- export { redactEvent, redactSecrets } from "./redaction.js";
10
- // FIDELITY.md uses three tiers (`semantic` | `shape` | `unsupported`); the
11
- // recording-spec.md v1.0 per-event enum is closed at two (`semantic` |
12
- // `unsupported`). They serve different purposes — the FIDELITY tier is a
13
- // per-tool documentation classifier, the recorder field is per-request.
14
- export const fidelityTierSchema = z.enum(["semantic", "shape", "unsupported"]);
15
- /** The JSON-Schema a tool advertises: the declared override, else zod-derived. */
16
- export function toolInputSchema(tool) {
17
- return tool.inputSchema ?? z.toJSONSchema(tool.schema);
18
- }
19
- /**
20
- * Optional MCP tool-list fields that must stay absent when unset so existing
21
- * GitHub/Slack/Stripe listings remain byte-identical.
22
- */
23
- export function toolListExtras(tool) {
24
- return {
25
- ...(tool.title !== undefined ? { title: tool.title } : {}),
26
- ...(tool.outputSchema !== undefined ? { outputSchema: tool.outputSchema } : {}),
27
- ...(tool.annotations ? { annotations: tool.annotations } : {}),
28
- };
29
- }
30
- // ─── Meta-validation ────────────────────────────────────────────────────────
31
- export class TwinManifestError extends Error {
32
- issues;
33
- constructor(message, issues = []) {
34
- super(message);
35
- this.issues = issues;
36
- this.name = "TwinManifestError";
37
- }
38
- }
39
- // Duck-typed on purpose: a twin's schemas may come from its own zod copy
40
- // (unhoisted workspace installs, community twins bundling zod) — a bare
41
- // `instanceof z.ZodType` would reject schemas from any zod instance other
42
- // than the SDK's own.
43
- const isZodType = (value) => value instanceof z.ZodType ||
44
- (typeof value === "object" &&
45
- value !== null &&
46
- typeof value.parse === "function" &&
47
- typeof value.safeParse === "function");
48
- const isFunction = (value) => typeof value === "function";
49
- const slugLike = /^[a-z][a-z0-9_-]*$/;
50
- const toolFidelityMeta = z.object({
51
- tier: fidelityTierSchema.optional(),
52
- backingSurface: z.string().optional(),
53
- tests: z.array(z.string()).optional(),
54
- deviations: z.string().optional(),
55
- });
56
- const toolMeta = z.object({
57
- name: z.string().min(1).regex(slugLike, "tool name must be a lowercase slug"),
58
- description: z.string().min(1),
59
- schema: z.custom(isZodType, "tool.schema must be a Zod schema"),
60
- handler: z.custom(isFunction, "tool.handler must be a function"),
61
- mutation: z.boolean(),
62
- fidelity: toolFidelityMeta.optional(),
63
- title: z.string().min(1).optional(),
64
- annotations: z.record(z.string(), z.unknown()).optional(),
65
- inputSchema: z.record(z.string(), z.unknown()).optional(),
66
- outputSchema: z.record(z.string(), z.unknown()).optional(),
67
- });
68
- const adminMeta = z.object({
69
- reset: z.custom(isFunction).optional(),
70
- seed: z.custom(isFunction).optional(),
71
- recorded: z.boolean().optional(),
72
- errorEnvelope: z.custom(isFunction).optional(),
73
- forbidden: z.custom(isFunction).optional(),
74
- });
75
- const twinMeta = z.object({
76
- id: z.string().min(1).regex(slugLike, "twin id must be a lowercase slug"),
77
- version: z.string().min(1),
78
- fidelity: z.object({ default: fidelityTierSchema }),
79
- seed: z.custom(isZodType, "seed must be a Zod schema").optional(),
80
- domain: z.custom(isFunction, "domain must be a function"),
81
- routes: z.custom(isFunction, "routes must be a function").optional(),
82
- tools: z.array(toolMeta),
83
- state: z.custom(isFunction).optional(),
84
- admin: adminMeta.optional(),
85
- errorEnvelope: z.custom(isFunction).optional(),
86
- implementation: z.string().min(1).optional(),
87
- packageName: z.string().min(1).optional(),
88
- healthz: z.custom(isFunction).optional(),
89
- bodyReader: z.custom(isFunction).optional(),
90
- middleware: z.custom(isFunction).optional(),
91
- legacyMcp: z
92
- .object({
93
- aliases: z.boolean().optional(),
94
- missingTool: z.custom(isFunction).optional(),
95
- })
96
- .optional(),
97
- pomeHealth: z.custom(isFunction).optional(),
98
- unsupported: z.custom(isFunction).optional(),
99
- pomeRoutes: z.record(z.string(), z.custom(isFunction)).optional(),
100
- stampToolCallId: z.boolean().optional(),
101
- mcpUnknownTool: z.custom(isFunction).optional(),
102
- sessionHealthz: z.boolean().optional(),
103
- mountSessionAtRoot: z.boolean().optional(),
104
- auth: z
105
- .custom((value) => typeof value === "object" && value !== null, "auth must be an options object")
106
- .optional(),
107
- recordingProjection: z.custom(isFunction).optional(),
108
- });
109
- /**
110
- * Define a twin manifest. Runs Zod meta-validation at the call site
111
- * (typically module-load time) and throws `TwinManifestError` on shape
112
- * violations or duplicate tool names.
113
- */
114
- export function defineTwin(spec) {
115
- const parsed = twinMeta.safeParse(spec);
116
- if (!parsed.success) {
117
- const detail = parsed.error.issues
118
- .map((issue) => `${issue.path.join(".") || "<root>"}: ${issue.message}`)
119
- .join("; ");
120
- throw new TwinManifestError(`Invalid twin manifest: ${detail}`, parsed.error.issues);
121
- }
122
- const seen = new Set();
123
- for (const tool of spec.tools) {
124
- if (seen.has(tool.name)) {
125
- throw new TwinManifestError(`Duplicate tool name: ${tool.name}`);
126
- }
127
- seen.add(tool.name);
128
- }
129
- return spec;
130
- }
131
- // ─── Reserved paths (used by server.ts; exported for tests) ─────────────────
132
- /**
133
- * Path prefixes the SDK reserves under `/s/:sid`. User routes that match or
134
- * start with these are rejected at boot per OQ-B6 (`/_pome/*` shadow
135
- * detection). `/mcp/*` is reserved for the same reason — community twins
136
- * cannot silently override the MCP dispatch surface.
137
- */
138
- export const RESERVED_SESSION_PREFIXES = ["/_pome", "/mcp"];
139
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { Context } from "hono";
2
- import { type RecorderHandle, type TwinDefinition } from "./index.js";
3
- export interface McpJsonRpcDeps<TDb, TSeed, TDomain> {
4
- definition: TwinDefinition<TDb, TSeed, TDomain>;
5
- domain: TDomain;
6
- recorder: RecorderHandle;
7
- runId: string;
8
- }
9
- export declare function mcpMethodNotAllowed(c: Context): Response;
10
- export declare function handleMcpJsonRpc<TDb, TSeed, TDomain>(c: Context, deps: McpJsonRpcDeps<TDb, TSeed, TDomain>): Promise<Response>;
@@ -1,221 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- //
3
- // Streamable-HTTP JSON-RPC 2.0 MCP endpoint (`POST /s/:sid/mcp`), stateless
4
- // mode: GET/DELETE answer 405. Generic over the twin's ToolSpec registry —
5
- // the per-twin mcp.ts modules this replaces differed only in their tool
6
- // tables and error envelopes, both of which now come from the manifest.
7
- import { randomUUID } from "node:crypto";
8
- import { toolInputSchema, toolListExtras, } from "./index.js";
9
- import { UnknownToolError, envelopeFor } from "./errors.js";
10
- import { makeToolCallContext } from "./tool-context.js";
11
- const PARSE_ERROR = -32700;
12
- const INVALID_REQUEST = -32600;
13
- const METHOD_NOT_FOUND = -32601;
14
- const INVALID_PARAMS = -32602;
15
- const INTERNAL_ERROR = -32603;
16
- const DEFAULT_PROTOCOL_VERSION = "2025-06-18";
17
- const SUPPORTED_PROTOCOL_VERSIONS = new Set(["2024-11-05", "2025-03-26", "2025-06-18"]);
18
- export function mcpMethodNotAllowed(c) {
19
- return c.json({ jsonrpc: "2.0", id: null, error: { code: METHOD_NOT_FOUND, message: "Method not allowed in stateless mode" } }, 405, { Allow: "POST" });
20
- }
21
- export async function handleMcpJsonRpc(c, deps) {
22
- let body;
23
- try {
24
- body = await c.req.json();
25
- }
26
- catch {
27
- return jsonRpcErrorResponse(null, PARSE_ERROR, "Problems parsing JSON");
28
- }
29
- if (Array.isArray(body)) {
30
- if (body.length === 0) {
31
- return jsonRpcErrorResponse(null, INVALID_REQUEST, "Invalid Request");
32
- }
33
- const out = [];
34
- for (const message of body) {
35
- const response = await dispatch(message, deps, c);
36
- if (response)
37
- out.push(response);
38
- }
39
- if (out.length === 0)
40
- return new Response(null, { status: 202 });
41
- return Response.json(out, { status: 200, headers: { "content-type": "application/json" } });
42
- }
43
- const response = await dispatch(body, deps, c);
44
- if (!response)
45
- return new Response(null, { status: 202 });
46
- return Response.json(response, { status: 200, headers: { "content-type": "application/json" } });
47
- }
48
- async function dispatch(message, deps, c) {
49
- if (!isObject(message))
50
- return errorEnvelope(null, INVALID_REQUEST, "Invalid Request");
51
- if (message.jsonrpc !== "2.0" || typeof message.method !== "string") {
52
- return errorEnvelope(idOf(message), INVALID_REQUEST, "Invalid Request");
53
- }
54
- const method = message.method;
55
- const params = isObject(message.params) ? message.params : {};
56
- const rawId = message.id;
57
- if (rawId === undefined || rawId === null)
58
- return null; // notification
59
- if (typeof rawId !== "string" && typeof rawId !== "number") {
60
- return errorEnvelope(null, INVALID_REQUEST, "Invalid Request: id must be string or number");
61
- }
62
- const id = rawId;
63
- try {
64
- switch (method) {
65
- case "initialize":
66
- return { jsonrpc: "2.0", id, result: buildInitializeResult(params, deps.definition) };
67
- case "ping":
68
- return { jsonrpc: "2.0", id, result: {} };
69
- case "tools/list":
70
- return {
71
- jsonrpc: "2.0",
72
- id,
73
- result: {
74
- tools: deps.definition.tools.map((tool) => ({
75
- name: tool.name,
76
- description: tool.description,
77
- inputSchema: toolInputSchema(tool),
78
- ...toolListExtras(tool),
79
- })),
80
- },
81
- };
82
- case "tools/call":
83
- return await handleToolsCall(id, params, deps, c);
84
- default:
85
- return errorEnvelope(id, METHOD_NOT_FOUND, `Method not found: ${method}`);
86
- }
87
- }
88
- catch (err) {
89
- return errorEnvelope(id, INTERNAL_ERROR, err instanceof Error ? err.message : "Internal error");
90
- }
91
- }
92
- function buildInitializeResult(params, definition) {
93
- const requested = typeof params.protocolVersion === "string" ? params.protocolVersion : undefined;
94
- const protocolVersion = requested && SUPPORTED_PROTOCOL_VERSIONS.has(requested) ? requested : DEFAULT_PROTOCOL_VERSION;
95
- return {
96
- protocolVersion,
97
- capabilities: { tools: { listChanged: false } },
98
- serverInfo: { name: `twin-${definition.id}`, version: definition.version },
99
- };
100
- }
101
- async function handleToolsCall(id, params, deps, c) {
102
- const name = params.name;
103
- const args = params.arguments === undefined || params.arguments === null
104
- ? {}
105
- : isObject(params.arguments)
106
- ? params.arguments
107
- : undefined;
108
- if (typeof name !== "string" || name.length === 0 || args === undefined) {
109
- return errorEnvelope(id, INVALID_PARAMS, "Invalid params: expected { name: string, arguments?: object }");
110
- }
111
- const projectError = deps.definition.errorEnvelope ?? envelopeFor;
112
- const tool = deps.definition.tools.find((t) => t.name === name);
113
- const started = Date.now();
114
- const call = makeToolCallContext(c);
115
- let status;
116
- let responseBody;
117
- let toolError = null;
118
- let mutation = false;
119
- let mcpResult;
120
- if (!tool) {
121
- const envelope = projectError(new UnknownToolError(name));
122
- // The unknown-tool result body is frozen per twin (F-682): github pins
123
- // its pre-port `{message: "Unknown tool: <name>"}` text while the
124
- // legacy /mcp/call surface keeps the envelope projection.
125
- const body = deps.definition.mcpUnknownTool ? deps.definition.mcpUnknownTool(name) : envelope.body;
126
- status = envelope.status;
127
- responseBody = body;
128
- toolError = `Unknown tool: ${name}`;
129
- mcpResult = { content: [{ type: "text", text: JSON.stringify(body) }], isError: true };
130
- }
131
- else {
132
- try {
133
- const parsed = tool.schema.parse(args);
134
- const value = await tool.handler(deps.domain, parsed, call.ctx);
135
- status = 200;
136
- responseBody = value;
137
- mutation = tool.mutation;
138
- // Only tools that declare `outputSchema` get `structuredContent` —
139
- // existing twins omit both and stay byte-identical on the wire.
140
- mcpResult = {
141
- content: [
142
- {
143
- type: "text",
144
- text: tool.contentText ? tool.contentText(value) : JSON.stringify(value),
145
- },
146
- ],
147
- ...(tool.outputSchema !== undefined ? { structuredContent: value } : {}),
148
- ...(tool.includeIsError ? { isError: false } : {}),
149
- };
150
- }
151
- catch (err) {
152
- const envelope = projectError(err);
153
- status = envelope.status;
154
- responseBody = envelope.body;
155
- toolError = err instanceof Error ? err.message : "tool call failed";
156
- mcpResult = { content: [{ type: "text", text: JSON.stringify(envelope.body) }], isError: true };
157
- }
158
- }
159
- const delta = status < 400 ? call.delta() : null;
160
- // Align with REST rest-routes-kit: when a handler reports reportDelta(null)
161
- // (no-op mutation), state_mutation must be false. Twins that never call
162
- // reportDelta keep ToolSpec.mutation as the recorder truth.
163
- const effectiveMutation = status < 400 && mutation && (!call.reportedDelta() || delta !== null);
164
- deps.recorder.record(buildEventCore(c, deps, {
165
- started,
166
- status,
167
- requestBody: { tool: name, arguments: args },
168
- responseBody,
169
- mutation: effectiveMutation,
170
- delta,
171
- error: toolError,
172
- }));
173
- return { jsonrpc: "2.0", id, result: mcpResult };
174
- }
175
- function buildEventCore(c, deps, fields) {
176
- const requestId = `req_${randomUUID()}`;
177
- // Same stamping as recorder.ts emit() — see the comment there (F-683).
178
- const stepId = c.req.header("x-pome-scenario-step-id") ?? null;
179
- const correlationHeader = c.req.header("x-pome-correlation-id") ?? null;
180
- return {
181
- ts: new Date().toISOString(),
182
- run_id: deps.runId,
183
- twin: deps.definition.id,
184
- request_id: requestId,
185
- correlation_id: correlationHeader ?? requestId,
186
- task_step_id: stepId,
187
- scenario_step_id: stepId,
188
- step_id: null,
189
- // FDRS-402 adapter-rich path — per-twin pin, see recorder.ts (F-682).
190
- tool_call_id: deps.definition.stampToolCallId ? correlationHeader : null,
191
- method: c.req.method,
192
- path: new URL(c.req.url).pathname,
193
- request_body: fields.requestBody,
194
- status: fields.status,
195
- response_body: fields.responseBody,
196
- latency_ms: Date.now() - fields.started,
197
- fidelity: "semantic",
198
- state_mutation: fields.mutation,
199
- state_delta: fields.delta,
200
- error: fields.error,
201
- };
202
- }
203
- function errorEnvelope(id, code, message) {
204
- return { jsonrpc: "2.0", id, error: { code, message } };
205
- }
206
- function jsonRpcErrorResponse(id, code, message) {
207
- return Response.json(errorEnvelope(id, code, message), {
208
- status: 200,
209
- headers: { "content-type": "application/json" },
210
- });
211
- }
212
- function idOf(message) {
213
- const id = message.id;
214
- if (typeof id === "string" || typeof id === "number")
215
- return id;
216
- return null;
217
- }
218
- function isObject(value) {
219
- return typeof value === "object" && value !== null && !Array.isArray(value);
220
- }
221
- //# sourceMappingURL=mcp-jsonrpc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-jsonrpc.js","sourceRoot":"","sources":["../src/mcp-jsonrpc.ts"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import { type FidelityInventory } from "./fidelity-inventory.js";
2
- export type ParityState = Record<string, unknown>;
3
- export interface ParityStep {
4
- tool: string;
5
- arguments?: Record<string, unknown> | ((state: ParityState) => Record<string, unknown>);
6
- /** Pull cross-call state (ids, numbers, shas) out of the response body. */
7
- capture?: (body: unknown, state: ParityState) => void;
8
- /** Expected HTTP status; default: any 2xx. */
9
- status?: number;
10
- /** Extra body assertion; return a problem string to fail the step. */
11
- verify?: (body: unknown) => string | undefined;
12
- }
13
- export interface ParityRestProbe {
14
- /** Label in the report, e.g. "unsupported-rest". */
15
- surface: string;
16
- method?: string;
17
- /** Session-relative path, e.g. "/repos/acme/api/actions/runs". */
18
- path: string;
19
- /** Expected HTTP status. */
20
- status: number;
21
- /** Assert the body carries a `fidelity: "unsupported"` marker. */
22
- expectUnsupportedEnvelope?: boolean;
23
- /** Optional request body for mutating probes (e.g. messages.send). */
24
- body?: string;
25
- /** Extra request headers (authorization is always set by the runner). */
26
- headers?: Record<string, string>;
27
- /** Extra body assertion; return a problem string to fail the probe. */
28
- verify?: (body: unknown) => string | undefined;
29
- }
30
- export interface ParityAppLike {
31
- request(path: string | Request, init?: RequestInit): Response | Promise<Response>;
32
- }
33
- export interface RunParityOptions {
34
- app: ParityAppLike;
35
- twin: string;
36
- inventory: FidelityInventory;
37
- /** `listTools()` names from the twin source — the code truth. */
38
- liveToolNames: string[];
39
- steps: ParityStep[];
40
- restProbes?: ParityRestProbe[];
41
- /** Session id; default "fidelity-parity". */
42
- sid?: string;
43
- /** JWT secret; default env TWIN_AUTH_SECRET or the engine dev secret. */
44
- secret?: string;
45
- /** Extra JWT claims (login, team_id, account_id, ...). */
46
- claims?: Record<string, unknown>;
47
- /** Applied to every step without its own `verify` (twin error envelopes). */
48
- stepVerify?: (body: unknown) => string | undefined;
49
- /** Optional live upstream probes; entries are appended to the report. */
50
- live?: () => Promise<unknown[]>;
51
- }
52
- export interface ParityResult {
53
- ok: boolean;
54
- failures: string[];
55
- report: unknown[];
56
- }
57
- export declare function runFidelityParity(options: RunParityOptions): Promise<ParityResult>;
58
- /** Script entrypoint: run, print the JSON report, set the exit code. */
59
- export declare function runParityCli(options: RunParityOptions): Promise<ParityResult>;
60
- export { compareToolNames, expandSurfaceCell, fidelityDocDriftSchema, fidelityInventorySchema, fidelitySurfaceSchema, heatTierSchema, lintFidelityInventory, loadFidelityInventory, parseFidelityDocRows, } from "./fidelity-inventory.js";
61
- export type { FidelityDocDrift, FidelityDocRow, FidelityDocSource, FidelityInventory, FidelitySurface, HeatTier, } from "./fidelity-inventory.js";
@@ -1,123 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- //
3
- // Shared fidelity:parity runner (F-730). One engine-level runner; each twin
4
- // supplies declarative scenario data — an ordered, stateful chain of MCP
5
- // calls with cross-call captures (a PR number, a charge id, a message ts) —
6
- // plus its structured fidelity inventory. No per-twin runner copies (M1
7
- // "twin-infra copies: 0" gate).
8
- //
9
- // The runner asserts three rings agree before it reports green:
10
- // 1. live tool list (code truth from listTools())
11
- // 2. fidelity.inventory.json tools (the machine-readable inventory)
12
- // 3. scenario step coverage (every inventory tool exercised)
13
- // and that every step answers its expected status through the frozen
14
- // `POST /s/:sid/mcp/call` surface. Optional REST probes pin the loud-501
15
- // unsupported envelope; an optional `live` hook lets a twin compare
16
- // read-only shapes against the real upstream (e.g. `gh api`).
17
- import { sign } from "hono/jwt";
18
- import { compareToolNames, } from "./fidelity-inventory.js";
19
- function bodyKeys(body) {
20
- if (Array.isArray(body))
21
- return ["array"];
22
- if (body && typeof body === "object") {
23
- return Object.keys(body).sort();
24
- }
25
- return [];
26
- }
27
- export async function runFidelityParity(options) {
28
- const sid = options.sid ?? "fidelity-parity";
29
- const secret = options.secret ?? process.env.TWIN_AUTH_SECRET ?? "dev-only-insecure-secret";
30
- const token = await sign({ sid, exp: Math.floor(Date.now() / 1000) + 3600, ...options.claims }, secret);
31
- const base = `/s/${sid}`;
32
- const failures = [];
33
- const report = [];
34
- // Ring 1 ⇔ ring 2: inventory tools must equal the live tool list.
35
- const inventoryNames = options.inventory.tools.map((entry) => entry.name);
36
- const inventoryDiff = compareToolNames(inventoryNames, options.liveToolNames);
37
- for (const name of inventoryDiff.missing) {
38
- failures.push(`tool '${name}' is live in listTools() but missing from fidelity.inventory.json`);
39
- }
40
- for (const name of inventoryDiff.extra) {
41
- failures.push(`tool '${name}' is in fidelity.inventory.json but not in listTools()`);
42
- }
43
- // Ring 2 ⇔ ring 3: every inventory tool needs at least one scenario step.
44
- const covered = new Set(options.steps.map((step) => step.tool));
45
- for (const name of inventoryNames) {
46
- if (!covered.has(name))
47
- failures.push(`no parity scenario step covers tool '${name}'`);
48
- }
49
- for (const tool of covered) {
50
- if (!inventoryNames.includes(tool)) {
51
- failures.push(`scenario step calls '${tool}' which is not in fidelity.inventory.json`);
52
- }
53
- }
54
- const state = {};
55
- for (const step of options.steps) {
56
- const args = typeof step.arguments === "function" ? step.arguments(state) : step.arguments ?? {};
57
- const response = await options.app.request(`${base}/mcp/call`, {
58
- method: "POST",
59
- headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
60
- body: JSON.stringify({ tool: step.tool, arguments: args }),
61
- });
62
- const body = await response.json().catch(() => ({}));
63
- const expected = step.status === undefined ? response.ok : response.status === step.status;
64
- if (!expected) {
65
- failures.push(`${step.tool}: expected ${step.status ?? "2xx"}, got ${response.status} ${JSON.stringify(body).slice(0, 300)}`);
66
- }
67
- else {
68
- const problem = (step.verify ?? options.stepVerify)?.(body);
69
- if (problem)
70
- failures.push(`${step.tool}: ${problem}`);
71
- step.capture?.(body, state);
72
- }
73
- report.push({ tool: step.tool, status: response.status, ok: response.ok, keys: bodyKeys(body) });
74
- }
75
- for (const probe of options.restProbes ?? []) {
76
- const headers = {
77
- authorization: `Bearer ${token}`,
78
- ...probe.headers,
79
- };
80
- if (probe.body !== undefined && !headers["content-type"] && !headers["Content-Type"]) {
81
- headers["content-type"] = "application/json";
82
- }
83
- const response = await options.app.request(`${base}${probe.path}`, {
84
- method: probe.method ?? "GET",
85
- headers,
86
- ...(probe.body !== undefined ? { body: probe.body } : {}),
87
- });
88
- const body = await response.json().catch(() => ({}));
89
- if (response.status !== probe.status) {
90
- failures.push(`${probe.surface}: expected ${probe.status}, got ${response.status}`);
91
- }
92
- if (probe.expectUnsupportedEnvelope && !JSON.stringify(body).includes('"fidelity":"unsupported"')) {
93
- failures.push(`${probe.surface}: body does not carry the fidelity:"unsupported" envelope`);
94
- }
95
- const problem = probe.verify?.(body);
96
- if (problem)
97
- failures.push(`${probe.surface}: ${problem}`);
98
- report.push({ surface: probe.surface, status: response.status, body });
99
- }
100
- if (options.live) {
101
- report.push(...(await options.live()));
102
- }
103
- return { ok: failures.length === 0, failures, report };
104
- }
105
- /** Script entrypoint: run, print the JSON report, set the exit code. */
106
- export async function runParityCli(options) {
107
- const result = await runFidelityParity(options);
108
- console.log(JSON.stringify({
109
- twin: options.twin,
110
- tools: options.inventory.tools.length,
111
- rest_surfaces: options.inventory.rest.length,
112
- ok: result.ok,
113
- failures: result.failures,
114
- report: result.report,
115
- }, null, 2));
116
- if (!result.ok) {
117
- console.error(`fidelity:parity FAILED for ${options.twin} (${result.failures.length} problem(s))`);
118
- process.exitCode = 1;
119
- }
120
- return result;
121
- }
122
- export { compareToolNames, expandSurfaceCell, fidelityDocDriftSchema, fidelityInventorySchema, fidelitySurfaceSchema, heatTierSchema, lintFidelityInventory, loadFidelityInventory, parseFidelityDocRows, } from "./fidelity-inventory.js";
123
- //# sourceMappingURL=parity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parity.js","sourceRoot":"","sources":["../src/parity.ts"],"names":[],"mappings":"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"}