@pome-sh/cli 0.9.0 → 0.10.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 (427) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/src/cli/agent-resolver.d.ts +3 -0
  3. package/dist/src/cli/agent-resolver.js +10 -0
  4. package/dist/src/cli/checks-add.d.ts +32 -0
  5. package/dist/src/cli/checks-add.js +236 -0
  6. package/dist/src/cli/checks.d.ts +21 -0
  7. package/dist/src/cli/checks.js +150 -0
  8. package/dist/src/cli/main.js +28 -0
  9. package/dist/src/runner/runTask.d.ts +10 -10
  10. package/dist/src/task/insertCriterion.d.ts +15 -0
  11. package/dist/src/task/insertCriterion.js +62 -0
  12. package/dist/src/task/parseTask.d.ts +5 -0
  13. package/dist/src/task/parseTask.js +11 -0
  14. package/dist/src/task/taskSchema.d.ts +4 -4
  15. package/node_modules/@pome-sh/sdk/dist/checks.d.ts +54 -0
  16. package/node_modules/@pome-sh/sdk/dist/checks.js +143 -0
  17. package/node_modules/@pome-sh/sdk/dist/checks.js.map +1 -0
  18. package/node_modules/@pome-sh/sdk/package.json +7 -3
  19. package/node_modules/@pome-sh/twin-github/dist/src/access-control.d.ts +3 -3
  20. package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +21 -0
  21. package/node_modules/@pome-sh/twin-github/dist/src/checks.js +90 -0
  22. package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -0
  23. package/node_modules/@pome-sh/twin-github/dist/src/domain/checks.d.ts +153 -0
  24. package/node_modules/@pome-sh/twin-github/dist/src/domain/checks.js +66 -0
  25. package/node_modules/@pome-sh/twin-github/dist/src/domain/checks.js.map +1 -0
  26. package/node_modules/@pome-sh/twin-github/dist/src/domain/git.d.ts +567 -0
  27. package/node_modules/@pome-sh/twin-github/dist/src/domain/git.js +198 -0
  28. package/node_modules/@pome-sh/twin-github/dist/src/domain/git.js.map +1 -0
  29. package/node_modules/@pome-sh/twin-github/dist/src/{domain.d.ts → domain/github-domain.d.ts} +340 -71
  30. package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.js +794 -0
  31. package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.js.map +1 -0
  32. package/node_modules/@pome-sh/twin-github/dist/src/domain/helpers.d.ts +5 -0
  33. package/node_modules/@pome-sh/twin-github/dist/src/domain/helpers.js +15 -0
  34. package/node_modules/@pome-sh/twin-github/dist/src/domain/helpers.js.map +1 -0
  35. package/node_modules/@pome-sh/twin-github/dist/src/domain/index.d.ts +2 -0
  36. package/node_modules/@pome-sh/twin-github/dist/src/domain/index.js +5 -0
  37. package/node_modules/@pome-sh/twin-github/dist/src/domain/index.js.map +1 -0
  38. package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.d.ts +545 -0
  39. package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.js +272 -0
  40. package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.js.map +1 -0
  41. package/node_modules/@pome-sh/twin-github/dist/src/domain/pulls.d.ts +816 -0
  42. package/node_modules/@pome-sh/twin-github/dist/src/domain/pulls.js +256 -0
  43. package/node_modules/@pome-sh/twin-github/dist/src/domain/pulls.js.map +1 -0
  44. package/node_modules/@pome-sh/twin-github/dist/src/domain/releases.d.ts +160 -0
  45. package/node_modules/@pome-sh/twin-github/dist/src/domain/releases.js +63 -0
  46. package/node_modules/@pome-sh/twin-github/dist/src/domain/releases.js.map +1 -0
  47. package/node_modules/@pome-sh/twin-github/dist/src/domain/repos.d.ts +219 -0
  48. package/node_modules/@pome-sh/twin-github/dist/src/domain/repos.js +131 -0
  49. package/node_modules/@pome-sh/twin-github/dist/src/domain/repos.js.map +1 -0
  50. package/node_modules/@pome-sh/twin-github/dist/src/domain/search.d.ts +252 -0
  51. package/node_modules/@pome-sh/twin-github/dist/src/domain/search.js +83 -0
  52. package/node_modules/@pome-sh/twin-github/dist/src/domain/search.js.map +1 -0
  53. package/node_modules/@pome-sh/twin-github/dist/src/domain/types.d.ts +15 -0
  54. package/node_modules/@pome-sh/twin-github/dist/src/domain/types.js +2 -0
  55. package/node_modules/@pome-sh/twin-github/dist/src/domain/types.js.map +1 -0
  56. package/node_modules/@pome-sh/twin-github/dist/src/index.d.ts +2 -1
  57. package/node_modules/@pome-sh/twin-github/dist/src/index.js +1 -1
  58. package/node_modules/@pome-sh/twin-github/dist/src/index.js.map +1 -1
  59. package/node_modules/@pome-sh/twin-github/dist/src/routes.d.ts +1 -1
  60. package/node_modules/@pome-sh/twin-github/dist/src/seed.d.ts +1 -1
  61. package/node_modules/@pome-sh/twin-github/dist/src/serializers.d.ts +3 -3
  62. package/node_modules/@pome-sh/twin-github/dist/src/tools.d.ts +188 -188
  63. package/node_modules/@pome-sh/twin-github/dist/src/twin.d.ts +1 -1
  64. package/node_modules/@pome-sh/twin-github/dist/src/twin.js +1 -1
  65. package/node_modules/@pome-sh/twin-github/dist/src/twin.js.map +1 -1
  66. package/node_modules/@pome-sh/twin-github/package.json +4 -4
  67. package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/package.json +2 -2
  68. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +35 -0
  69. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/admin-gate.js +103 -0
  70. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +1 -0
  71. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/auth.d.ts +100 -0
  72. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/auth.js +262 -0
  73. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/auth.js.map +1 -0
  74. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/build-info.d.ts +7 -0
  75. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/build-info.js +14 -0
  76. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/build-info.js.map +1 -0
  77. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/db.d.ts +44 -0
  78. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/db.js +113 -0
  79. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/db.js.map +1 -0
  80. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/errors.d.ts +24 -0
  81. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/errors.js +61 -0
  82. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/errors.js.map +1 -0
  83. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +43 -0
  84. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/failure-injection.js +160 -0
  85. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +1 -0
  86. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
  87. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
  88. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
  89. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +8 -0
  90. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity.js +39 -0
  91. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity.js.map +1 -0
  92. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/index.d.ts +372 -0
  93. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/index.js +139 -0
  94. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/index.js.map +1 -0
  95. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +10 -0
  96. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +221 -0
  97. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +1 -0
  98. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/parity.d.ts +61 -0
  99. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/parity.js +123 -0
  100. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
  101. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/recorder.d.ts +120 -0
  102. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/recorder.js +368 -0
  103. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -0
  104. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/redaction.d.ts +1 -0
  105. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/redaction.js +3 -0
  106. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/redaction.js.map +1 -0
  107. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +54 -0
  108. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server-helpers.js +181 -0
  109. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -0
  110. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server.d.ts +46 -0
  111. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server.js +394 -0
  112. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server.js.map +1 -0
  113. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +8 -0
  114. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/tool-context.js +22 -0
  115. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/tool-context.js.map +1 -0
  116. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/package.json +54 -0
  117. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
  118. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
  119. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
  120. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
  121. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
  122. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
  123. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
  124. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
  125. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -0
  126. package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
  127. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/package.json +2 -1
  128. package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  129. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +35 -0
  130. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js +103 -0
  131. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +1 -0
  132. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.d.ts +100 -0
  133. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js +262 -0
  134. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js.map +1 -0
  135. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.d.ts +7 -0
  136. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js +14 -0
  137. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js.map +1 -0
  138. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.d.ts +44 -0
  139. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js +113 -0
  140. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js.map +1 -0
  141. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.d.ts +24 -0
  142. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js +61 -0
  143. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js.map +1 -0
  144. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +43 -0
  145. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js +160 -0
  146. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +1 -0
  147. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
  148. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
  149. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
  150. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +8 -0
  151. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js +39 -0
  152. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js.map +1 -0
  153. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.d.ts +372 -0
  154. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js +139 -0
  155. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js.map +1 -0
  156. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +10 -0
  157. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +221 -0
  158. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +1 -0
  159. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.d.ts +61 -0
  160. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js +123 -0
  161. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
  162. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.d.ts +120 -0
  163. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js +368 -0
  164. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -0
  165. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.d.ts +1 -0
  166. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js +3 -0
  167. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js.map +1 -0
  168. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +54 -0
  169. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js +181 -0
  170. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -0
  171. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.d.ts +46 -0
  172. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js +394 -0
  173. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js.map +1 -0
  174. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +8 -0
  175. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js +22 -0
  176. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js.map +1 -0
  177. package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/package.json +54 -0
  178. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +35 -0
  179. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js +103 -0
  180. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +1 -0
  181. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.d.ts +100 -0
  182. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js +262 -0
  183. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js.map +1 -0
  184. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.d.ts +7 -0
  185. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js +14 -0
  186. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js.map +1 -0
  187. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.d.ts +44 -0
  188. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js +113 -0
  189. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js.map +1 -0
  190. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.d.ts +24 -0
  191. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js +61 -0
  192. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js.map +1 -0
  193. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +43 -0
  194. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js +160 -0
  195. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +1 -0
  196. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
  197. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
  198. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
  199. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +8 -0
  200. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js +39 -0
  201. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js.map +1 -0
  202. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.d.ts +372 -0
  203. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js +139 -0
  204. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js.map +1 -0
  205. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +10 -0
  206. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +221 -0
  207. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +1 -0
  208. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.d.ts +61 -0
  209. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js +123 -0
  210. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
  211. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.d.ts +120 -0
  212. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js +368 -0
  213. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -0
  214. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.d.ts +1 -0
  215. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js +3 -0
  216. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js.map +1 -0
  217. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +54 -0
  218. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js +181 -0
  219. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -0
  220. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.d.ts +46 -0
  221. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js +394 -0
  222. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js.map +1 -0
  223. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +8 -0
  224. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js +22 -0
  225. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js.map +1 -0
  226. package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/package.json +54 -0
  227. package/package.json +3 -3
  228. package/tasks/00-default-seed.md +1 -1
  229. package/tasks/01-bug-happy-path.md +1 -1
  230. package/tasks/03-already-triaged.md +1 -1
  231. package/tasks/06-mislabeled-needs-fix.md +1 -1
  232. package/tasks/17-in-scope-injection.md +1 -1
  233. package/node_modules/@pome-sh/twin-github/dist/src/domain.js +0 -0
  234. package/node_modules/@pome-sh/twin-github/dist/src/domain.js.map +0 -1
  235. package/node_modules/@pome-sh/twin-github/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -1
  236. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -0
  237. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -0
  238. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -0
  239. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -0
  240. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/auth.js +0 -0
  241. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -0
  242. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -0
  243. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/build-info.js +0 -0
  244. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -0
  245. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -0
  246. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/db.js +0 -0
  247. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/db.js.map +0 -0
  248. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -0
  249. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/errors.js +0 -0
  250. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -0
  251. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -0
  252. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -0
  253. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -0
  254. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -0
  255. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -0
  256. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -0
  257. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -0
  258. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -0
  259. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -0
  260. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -0
  261. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/index.js +0 -0
  262. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/index.js.map +0 -0
  263. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -0
  264. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -0
  265. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -0
  266. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -0
  267. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/parity.js +0 -0
  268. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -0
  269. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -0
  270. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/recorder.js +0 -0
  271. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -0
  272. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -0
  273. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/redaction.js +0 -0
  274. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -0
  275. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -0
  276. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -0
  277. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -0
  278. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -0
  279. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server.js +0 -0
  280. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server.js.map +0 -0
  281. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -0
  282. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -0
  283. /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -0
  284. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -0
  285. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/errors.js +0 -0
  286. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -0
  287. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -0
  288. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -0
  289. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -0
  290. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -0
  291. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -0
  292. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -0
  293. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -0
  294. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/identity.js +0 -0
  295. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -0
  296. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/index.d.ts +0 -0
  297. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/index.js +0 -0
  298. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/index.js.map +0 -0
  299. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +0 -0
  300. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/manifest.js +0 -0
  301. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/manifest.js.map +0 -0
  302. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -0
  303. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -0
  304. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -0
  305. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -0
  306. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -0
  307. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -0
  308. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -0
  309. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -0
  310. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -0
  311. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -0
  312. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -0
  313. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -0
  314. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -0
  315. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -0
  316. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -0
  317. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -0
  318. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -0
  319. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -0
  320. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -0
  321. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -0
  322. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -0
  323. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -0
  324. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -0
  325. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -0
  326. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -0
  327. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -0
  328. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -0
  329. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -0
  330. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -0
  331. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -0
  332. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -0
  333. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -0
  334. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -0
  335. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -0
  336. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -0
  337. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -0
  338. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/rest.d.ts +0 -0
  339. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/rest.js +0 -0
  340. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -0
  341. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -0
  342. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/run.js +0 -0
  343. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -0
  344. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -0
  345. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -0
  346. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -0
  347. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -0
  348. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -0
  349. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -0
  350. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -0
  351. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -0
  352. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -0
  353. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -0
  354. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -0
  355. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -0
  356. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -0
  357. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task.js +0 -0
  358. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -0
  359. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/manifest-schema.json +0 -0
  360. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/package.json +0 -0
  361. /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/trace-contract.json +0 -0
  362. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -0
  363. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/errors.js +0 -0
  364. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -0
  365. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -0
  366. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -0
  367. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -0
  368. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -0
  369. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -0
  370. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -0
  371. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -0
  372. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/identity.js +0 -0
  373. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -0
  374. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -0
  375. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -0
  376. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -0
  377. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -0
  378. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -0
  379. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -0
  380. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -0
  381. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -0
  382. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -0
  383. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -0
  384. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -0
  385. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -0
  386. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -0
  387. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -0
  388. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -0
  389. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -0
  390. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -0
  391. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -0
  392. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -0
  393. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -0
  394. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -0
  395. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -0
  396. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -0
  397. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -0
  398. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -0
  399. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -0
  400. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -0
  401. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -0
  402. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -0
  403. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -0
  404. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -0
  405. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -0
  406. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -0
  407. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -0
  408. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -0
  409. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -0
  410. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -0
  411. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/run.js +0 -0
  412. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -0
  413. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -0
  414. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -0
  415. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -0
  416. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -0
  417. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -0
  418. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -0
  419. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -0
  420. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -0
  421. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -0
  422. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -0
  423. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -0
  424. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -0
  425. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -0
  426. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task.js +0 -0
  427. /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -0
@@ -0,0 +1,46 @@
1
+ import { Hono } from "hono";
2
+ import { type TwinDefinition } from "./index.js";
3
+ import { type RecorderStore } from "./recorder.js";
4
+ export { TwinBootError, ensureTwinAuthSecret, isLoopbackHost, created, ok } from "./server-helpers.js";
5
+ export { createRecorderHandle, createRecorderStore, createFileBackedRecorderStore, resolveRecorderStore, toTwinHttpEventRow, POME_RECORDER_EVENTS_PATH, } from "./recorder.js";
6
+ export type { RecorderStore, RecorderStoreOptions, FileBackedRecorderStoreOptions, ErrorEnvelopeFn, } from "./recorder.js";
7
+ export { bearerAuth, requireAdminAuth, resolveAuthSecret } from "./auth.js";
8
+ export { createAdminGate, setClientIp } from "./admin-gate.js";
9
+ export type { AdminGateOptions } from "./admin-gate.js";
10
+ export { TwinError, UnknownToolError } from "./errors.js";
11
+ export { redactEvent, redactSecrets } from "./redaction.js";
12
+ export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionMiddleware, failureInjectionRuleSchema, } from "./failure-injection.js";
13
+ export type { FailureInjectionMiddlewareOptions, FailureInjectionMode, FailureInjectionOverride, FailureInjectionRule, FailureInjectionStore, } from "./failure-injection.js";
14
+ export { PROVIDER_SHAPED_TEAM_ID, formTokenResolver, mintProviderToken, queryTokenResolver, verifyProviderToken, } from "./auth.js";
15
+ export type { AuthEnvelope, BearerAuthOptions, MintProviderTokenOptions, ProviderTokenSpec, SessionClaims, SessionValue, TokenResolver, UnauthorizedKind, } from "./auth.js";
16
+ export { twinBuildInfo } from "./build-info.js";
17
+ export type { TwinBuildInfo } from "./build-info.js";
18
+ export interface ServeOptions<TDb = unknown, TSeed = unknown> {
19
+ /** Optional. When set, `serve()` binds a Node HTTP server. */
20
+ port?: number;
21
+ /** Bind hostname. Defaults to "127.0.0.1". */
22
+ hostname?: string;
23
+ /** Opaque database handle forwarded to `definition.domain({ db })`. */
24
+ db?: TDb;
25
+ /** Initial seed forwarded to `definition.domain({ seed })`. Validated against `definition.seed` if provided. */
26
+ seed?: TSeed;
27
+ /** Custom recorder store. Defaults to `resolveRecorderStore()` (durable when `POME_RECORDER_EVENTS_PATH` is set). */
28
+ recorder?: RecorderStore;
29
+ /** Run identifier embedded in every recorder event. Defaults to "local". */
30
+ runId?: string;
31
+ }
32
+ export declare function createApp<TDb, TSeed, TDomain>(definition: TwinDefinition<TDb, TSeed, TDomain>, options?: ServeOptions<TDb, TSeed>): Hono;
33
+ export interface ServeResult {
34
+ app: Hono;
35
+ /**
36
+ * Stop the bound HTTP server (if any), then flush+close the recorder store
37
+ * so durable tapes drain before process exit (F-698).
38
+ */
39
+ close(): Promise<void>;
40
+ }
41
+ /**
42
+ * Build the app and bind a Node HTTP server. If `port` is omitted, no
43
+ * server is bound — `close()` still flushes the recorder store.
44
+ */
45
+ export declare function serve<TDb, TSeed, TDomain>(definition: TwinDefinition<TDb, TSeed, TDomain>, options?: ServeOptions<TDb, TSeed>): Promise<ServeResult>;
46
+ /** Engine-owned `/_pome/*` route names a twin's `pomeRoutes` may not shadow. */
@@ -0,0 +1,394 @@
1
+ // file-size: server engine intentionally centralizes TwinDefinition boot, reserved routes, recorder shutdown, and auth wiring.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ //
4
+ // `@pome-sh/sdk/server` — boot a `TwinDefinition` into a Hono app and
5
+ // optionally bind a Node HTTP server. `createApp()` returns the bare app
6
+ // (no port binding) for tests; `serve()` wraps it with `@hono/node-server`.
7
+ //
8
+ // Auto-mounted routes:
9
+ // GET /healthz (root, no auth)
10
+ // POST /admin/reset (localhost-only)
11
+ // POST /admin/seed (localhost-only)
12
+ // GET /s/:sid/healthz (bearer)
13
+ // GET /s/:sid/_pome/health (bearer)
14
+ // GET /s/:sid/_pome/state (bearer)
15
+ // GET /s/:sid/_pome/events (bearer)
16
+ // GET /s/:sid/mcp/tools (bearer)
17
+ // POST /s/:sid/mcp/tools/:name (bearer)
18
+ // POST /s/:sid/mcp/call (bearer)
19
+ //
20
+ // User routes registered via `definition.routes(app, ctx)` are mounted under
21
+ // `/s/:sid/*`. The SDK refuses to boot if any user route shadows the
22
+ // `/_pome/*` or `/mcp/*` prefixes (OQ-B6 invariant).
23
+ import { Hono } from "hono";
24
+ import { z } from "zod";
25
+ import { toolInputSchema, toolListExtras, } from "./index.js";
26
+ import { bearerAuth, requireAdminAuth } from "./auth.js";
27
+ import { createAdminGate } from "./admin-gate.js";
28
+ import { makeToolCallContext } from "./tool-context.js";
29
+ import { twinBuildInfo } from "./build-info.js";
30
+ import { handleMcpJsonRpc, mcpMethodNotAllowed } from "./mcp-jsonrpc.js";
31
+ import { createRecorderHandle, resolveRecorderStore } from "./recorder.js";
32
+ import { redactSecrets } from "./redaction.js";
33
+ import { TwinError, envelopeFor } from "./errors.js";
34
+ import { POME_CORE_ROUTE_NAMES, TwinBootError, assertUniqueToolNames, ensureTwinAuthSecret, findTool, isLoopbackHost, makeDeltaSink, readJson, shadowedPrefix, } from "./server-helpers.js";
35
+ // Public boot surface consumed by twin entrypoints
36
+ // (`import { ensureTwinAuthSecret, serve } from "@pome-sh/sdk/server"`).
37
+ export { TwinBootError, ensureTwinAuthSecret, isLoopbackHost, created, ok } from "./server-helpers.js";
38
+ export { createRecorderHandle, createRecorderStore, createFileBackedRecorderStore, resolveRecorderStore, toTwinHttpEventRow, POME_RECORDER_EVENTS_PATH, } from "./recorder.js";
39
+ export { bearerAuth, requireAdminAuth, resolveAuthSecret } from "./auth.js";
40
+ // Alternate serving bridges (anything that isn't @hono/node-server) must feed
41
+ // the gate the transport-level peer address via setClientIp from an upstream
42
+ // middleware; createAdminGate lets custom twins mount the gate with their own
43
+ // 403 envelope. See the SECURITY note on setClientIp — never derive the value
44
+ // from request headers.
45
+ export { createAdminGate, setClientIp } from "./admin-gate.js";
46
+ export { TwinError, UnknownToolError } from "./errors.js";
47
+ export { redactEvent, redactSecrets } from "./redaction.js";
48
+ export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionMiddleware, failureInjectionRuleSchema, } from "./failure-injection.js";
49
+ export { PROVIDER_SHAPED_TEAM_ID, formTokenResolver, mintProviderToken, queryTokenResolver, verifyProviderToken, } from "./auth.js";
50
+ export { twinBuildInfo } from "./build-info.js";
51
+ const jsonRecord = z.record(z.string(), z.unknown());
52
+ export function createApp(definition, options = {}) {
53
+ // 1. Validate + build seed
54
+ let seed;
55
+ if (options.seed !== undefined) {
56
+ if (definition.seed) {
57
+ seed = definition.seed.parse(options.seed);
58
+ }
59
+ else {
60
+ seed = options.seed;
61
+ }
62
+ }
63
+ // 2. Build domain
64
+ const domain = definition.domain({ db: options.db, seed });
65
+ // 3. Build recorder. The manifest's `errorEnvelope` (if set) is forwarded
66
+ // here so API-mirroring twins control their error shape without
67
+ // bypassing the recorder middleware.
68
+ const runId = options.runId ?? "local";
69
+ const recorder = createRecorderHandle({
70
+ runId,
71
+ twin: definition.id,
72
+ store: options.recorder ?? resolveRecorderStore(),
73
+ errorEnvelope: definition.errorEnvelope,
74
+ stampToolCallId: definition.stampToolCallId,
75
+ recordingProjection: definition.recordingProjection,
76
+ });
77
+ // 4. Boot-time invariant: user routes must not shadow reserved prefixes.
78
+ const userApp = new Hono();
79
+ if (definition.routes) {
80
+ definition.routes(userApp, { domain, recorder, runId, twin: definition.id });
81
+ for (const route of userApp.routes) {
82
+ const shadowed = shadowedPrefix(route.path);
83
+ if (shadowed) {
84
+ throw new TwinBootError(`Twin "${definition.id}" route ${route.method} ${route.path} shadows reserved SDK prefix ${shadowed}/*`);
85
+ }
86
+ }
87
+ }
88
+ // 5. Tool name uniqueness sanity (defineTwin already enforces, but a
89
+ // test that hand-builds a TwinDefinition could bypass it).
90
+ assertUniqueToolNames(definition.tools, definition.id);
91
+ // 6. Build root app
92
+ const root = new Hono();
93
+ // Contract core: {ok, twin, implementation, tools, runtime}. Extras
94
+ // default to the pre-F-681 fields; a twin with a frozen healthz shape
95
+ // supplies its own (possibly empty) extras via `definition.healthz`.
96
+ const healthzExtras = definition.healthz ??
97
+ (() => ({ version: definition.version, fidelity: definition.fidelity.default }));
98
+ root.get("/healthz", (c) => c.json({
99
+ ok: true,
100
+ twin: definition.id,
101
+ implementation: definition.implementation ?? `${definition.id}_clone`,
102
+ tools: definition.tools.length,
103
+ runtime: twinBuildInfo(definition.packageName ?? `@pome-sh/twin-${definition.id}`),
104
+ ...healthzExtras(),
105
+ }));
106
+ // Per-twin body reader for the engine-owned JSON surfaces. Default is
107
+ // strict JSON (malformed → SyntaxError into the twin's errorEnvelope);
108
+ // twins with frozen tolerant/form parsing (slack, stripe) declare theirs.
109
+ const readBody = definition.bodyReader ?? ((c) => readJson(c.req.raw));
110
+ // 7. Admin sub-app. Gate mechanism is the engine's; a twin with a frozen
111
+ // 403 body declares it via `admin.forbidden` (F-683).
112
+ const adminForbidden = definition.admin?.forbidden;
113
+ const adminApp = new Hono();
114
+ adminApp.use("*", adminForbidden
115
+ ? createAdminGate({
116
+ forbidden: () => {
117
+ const envelope = adminForbidden();
118
+ return Response.json(envelope.body, { status: envelope.status });
119
+ },
120
+ })
121
+ : requireAdminAuth());
122
+ const adminEnvelope = definition.admin?.errorEnvelope;
123
+ // stripe pin: its pre-port recorder never saw admin traffic, so
124
+ // admin.recorded=false serves the same handlers without emitting events.
125
+ const wrapAdmin = definition.admin?.recorded !== false
126
+ ? (fn) => recorder.handle({ mutation: true, errorEnvelope: adminEnvelope }, fn)
127
+ : (fn) => async (c) => {
128
+ try {
129
+ const result = await fn(c);
130
+ return c.json(result.body, result.status);
131
+ }
132
+ catch (err) {
133
+ const envelope = (adminEnvelope ?? definition.errorEnvelope ?? envelopeFor)(err);
134
+ return c.json(envelope.body, envelope.status);
135
+ }
136
+ };
137
+ adminApp.post("/reset", wrapAdmin(async () => {
138
+ if (!definition.admin?.reset) {
139
+ throw new TwinError("admin.reset is not configured for this twin", 501);
140
+ }
141
+ const delta = makeDeltaSink();
142
+ const body = (await definition.admin.reset({ domain, reportDelta: delta.report })) ?? { ok: true };
143
+ return { status: 200, body, delta: delta.value() };
144
+ }));
145
+ adminApp.post("/seed", wrapAdmin(async (c) => {
146
+ if (!definition.admin?.seed) {
147
+ throw new TwinError("admin.seed is not configured for this twin", 501);
148
+ }
149
+ if (!definition.seed) {
150
+ throw new TwinError("Twin manifest has no `seed` schema; cannot accept POST /admin/seed", 501);
151
+ }
152
+ const raw = await readBody(c);
153
+ const parsed = definition.seed.parse(raw);
154
+ const delta = makeDeltaSink();
155
+ const body = (await definition.admin.seed({ domain, seed: parsed, reportDelta: delta.report })) ?? { ok: true };
156
+ return { status: 200, body, delta: delta.value() };
157
+ }));
158
+ root.route("/admin", adminApp);
159
+ // 8. Session sub-app. Auth mechanism is the engine's; the twin's declared
160
+ // shape (F-712) rides in via `definition.auth`.
161
+ const session = new Hono();
162
+ session.use("*", bearerAuth(definition.auth));
163
+ // Session-wide middleware slot — the pre-port `session.use("*")` position,
164
+ // mounted BEFORE the engine's MCP / `/_pome/*` routes so twin middleware
165
+ // (stripe failure-injection, idempotency) covers MCP dispatch too.
166
+ if (definition.middleware) {
167
+ definition.middleware(session, { domain, recorder, runId, twin: definition.id });
168
+ }
169
+ // Per-session healthz is contract-frozen per twin: github/slack answer
170
+ // 200 {ok, sid}; stripe has NO such route (falls to the 501 catch-all).
171
+ if (definition.sessionHealthz !== false) {
172
+ session.get("/healthz", (c) => c.json({ ok: true, sid: c.req.param("sid") }));
173
+ }
174
+ // `pomeHealth` extras replace the default {version, fidelity} for twins
175
+ // with a frozen per-session health shape (slack: bare {ok, twin};
176
+ // github: no version; stripe adds recorder counters).
177
+ const pomeHealthExtras = definition.pomeHealth ??
178
+ (() => ({ version: definition.version, fidelity: definition.fidelity.default }));
179
+ session.get("/_pome/health", (c) => c.json({
180
+ ok: true,
181
+ twin: definition.id,
182
+ ...pomeHealthExtras({ recorder }),
183
+ }));
184
+ // NOT recorder-wrapped: no pre-port twin recorded /_pome/state fetches on
185
+ // the tape (F-683 review pin) — the export is a read-side probe, and
186
+ // recording it would embed the full state as an event response_body.
187
+ session.get("/_pome/state", async (c) => {
188
+ try {
189
+ if (!definition.state) {
190
+ throw new TwinError("state introspection is not configured for this twin", 501);
191
+ }
192
+ const session = c.get("session");
193
+ const state = await definition.state({ domain, session });
194
+ // Central redaction: the state export feeds cloud-side scoring and the
195
+ // CLI trace; a twin must not be able to leak secrets by omission.
196
+ return c.json(redactSecrets(state));
197
+ }
198
+ catch (err) {
199
+ const envelope = (definition.errorEnvelope ?? envelopeFor)(err);
200
+ return c.json(envelope.body, envelope.status);
201
+ }
202
+ });
203
+ session.get("/_pome/events", (c) => c.json(recorder.events()));
204
+ // 8b. Extra per-twin `/_pome/*` routes (github's frozen
205
+ // GET /s/:sid/_pome/access-control, F-682). Registered after the core
206
+ // routes so the platform surface can never be shadowed; core names are
207
+ // rejected outright at boot.
208
+ if (definition.pomeRoutes) {
209
+ for (const [name, handler] of Object.entries(definition.pomeRoutes)) {
210
+ if (POME_CORE_ROUTE_NAMES.has(name)) {
211
+ throw new TwinBootError(`Twin "${definition.id}" pome route "/_pome/${name}" shadows a reserved engine route`);
212
+ }
213
+ session.get(`/_pome/${name}`, async (c) => c.json((await handler({ domain }))));
214
+ }
215
+ }
216
+ // 9. MCP routes from tool registry. `/mcp` is the streamable-HTTP
217
+ // JSON-RPC endpoint (stateless — GET/DELETE answer 405); `/mcp/tools`,
218
+ // `/mcp/tools/:name`, `/mcp/call` are the legacy dispatch surface.
219
+ session.post("/mcp", (c) => handleMcpJsonRpc(c, { definition, domain, recorder, runId }));
220
+ session.get("/mcp", (c) => mcpMethodNotAllowed(c));
221
+ session.delete("/mcp", (c) => mcpMethodNotAllowed(c));
222
+ session.get("/mcp/tools", (c) => c.json({
223
+ tools: definition.tools.map((tool) => ({
224
+ name: tool.name,
225
+ description: tool.description,
226
+ input_schema: toolInputSchema(tool),
227
+ ...toolListExtras(tool),
228
+ })),
229
+ }));
230
+ session.post("/mcp/tools/:name", recorder.handle({ mutation: false }, async (c) => {
231
+ const name = c.req.param("name") ?? "";
232
+ const tool = findTool(definition, name);
233
+ const args = await readBody(c);
234
+ const parsed = tool.schema.parse(args ?? {});
235
+ const call = makeToolCallContext(c);
236
+ const result = await tool.handler(domain, parsed, call.ctx);
237
+ const delta = call.delta();
238
+ const mutation = tool.mutation && (!call.reportedDelta() || delta !== null);
239
+ return { status: 200, body: result, mutation, delta };
240
+ }));
241
+ session.post("/mcp/call", recorder.handle({ mutation: false }, async (c) => {
242
+ const raw = await readBody(c);
243
+ let call;
244
+ if (definition.legacyMcp?.aliases) {
245
+ // Frozen slack surface: {name}/{params} alias {tool}/{arguments};
246
+ // a body naming no tool answers the twin's own envelope (400
247
+ // invalid_arguments) instead of the strict-parse error.
248
+ const rec = (raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {});
249
+ const name = rec.tool ?? rec.name;
250
+ if (typeof name !== "string" || name.length === 0) {
251
+ const missing = definition.legacyMcp.missingTool;
252
+ if (missing) {
253
+ const envelope = missing();
254
+ return { status: envelope.status, body: envelope.body };
255
+ }
256
+ z.object({ tool: z.string().min(1) }).parse(rec); // throws the strict-parse error
257
+ }
258
+ call = {
259
+ tool: name,
260
+ arguments: (rec.arguments ?? rec.params ?? {}),
261
+ };
262
+ }
263
+ else {
264
+ call = z
265
+ .object({ tool: z.string().min(1), arguments: jsonRecord.default({}) })
266
+ .parse(raw);
267
+ }
268
+ const tool = findTool(definition, call.tool);
269
+ const parsed = tool.schema.parse(call.arguments);
270
+ const toolCall = makeToolCallContext(c);
271
+ const result = await tool.handler(domain, parsed, toolCall.ctx);
272
+ const delta = toolCall.delta();
273
+ const mutation = tool.mutation && (!toolCall.reportedDelta() || delta !== null);
274
+ return { status: 200, body: result, mutation, delta };
275
+ }));
276
+ // 10. User routes
277
+ if (definition.routes) {
278
+ session.route("/", userApp);
279
+ }
280
+ // 11. Catch-all for unsupported surfaces. Recorder records
281
+ // fidelity:"unsupported" and returns 501 so unmatched routes surface
282
+ // as a fidelity-gap signal in the trace instead of silently 404'ing.
283
+ // Not opt-out per OQ-B6: every community twin auto-surfaces fidelity
284
+ // gaps in the trace.
285
+ session.all("*", recorder.handle({ mutation: false, fidelity: "unsupported" }, async (c) => {
286
+ const ctx = { method: c.req.method, path: new URL(c.req.url).pathname };
287
+ if (definition.unsupported)
288
+ return definition.unsupported(ctx);
289
+ return {
290
+ status: 501,
291
+ body: {
292
+ message: `Endpoint not modeled by twin "${definition.id}".`,
293
+ fidelity: "unsupported",
294
+ method: ctx.method,
295
+ path: ctx.path,
296
+ },
297
+ };
298
+ }));
299
+ root.route("/s/:sid", session);
300
+ // 11b. SDK-compat root mount (stripe F3, F-684): the same session router
301
+ // answers at the root path. Root /healthz + /admin/* were registered
302
+ // first and stay first-match; unknown root paths hit the twin's auth
303
+ // wall (bearerAuth answers 401 before the 501 catch-all). Pair with
304
+ // `auth.requirePathSid: false` so the bearer alone resolves the sid.
305
+ if (definition.mountSessionAtRoot) {
306
+ root.route("/", session);
307
+ }
308
+ // 12. Footgun warning: clean-state-per-test workflows rely on
309
+ // /admin/reset. Warn loudly if a twin ships without it so authors
310
+ // don't discover the gap mid-CI-debug.
311
+ if (!definition.admin?.reset) {
312
+ console.warn(`[@pome-sh/sdk] twin "${definition.id}" has no admin.reset configured — POST /admin/reset returns 501. Most CI workflows rely on this for clean-state-per-test.`);
313
+ }
314
+ return root;
315
+ }
316
+ /**
317
+ * Build the app and bind a Node HTTP server. If `port` is omitted, no
318
+ * server is bound — `close()` still flushes the recorder store.
319
+ */
320
+ export async function serve(definition, options = {}) {
321
+ const hostname = options.hostname ?? "127.0.0.1";
322
+ // Contract boot guard: a twin must never serve real traffic with the dev
323
+ // fallback secret. Since F-708 a non-loopback bind with no env-injected
324
+ // secret self-generates + persists one instead of refusing to boot; a
325
+ // failed generation still throws before the app is built, so the process
326
+ // exits non-zero without ever listening.
327
+ if (options.port !== undefined && !isLoopbackHost(hostname)) {
328
+ ensureTwinAuthSecret(definition.id, hostname);
329
+ }
330
+ // Resolve the store once so `close()` can flush the same instance the app
331
+ // records into (durable when POME_RECORDER_EVENTS_PATH is set).
332
+ const store = options.recorder ?? resolveRecorderStore();
333
+ const app = createApp(definition, { ...options, recorder: store });
334
+ const closeRecorder = async () => {
335
+ await store.flush?.();
336
+ await store.close?.();
337
+ };
338
+ if (options.port === undefined) {
339
+ return { app, close: closeRecorder };
340
+ }
341
+ const { serve: nodeServe } = await import("@hono/node-server");
342
+ const server = await new Promise((resolve) => {
343
+ const bound = nodeServe({
344
+ fetch: app.fetch,
345
+ port: options.port,
346
+ hostname,
347
+ }, () => resolve(bound));
348
+ });
349
+ let closed = false;
350
+ const close = async () => {
351
+ if (closed) {
352
+ await closeRecorder();
353
+ return;
354
+ }
355
+ closed = true;
356
+ unregisterServeShutdown(close);
357
+ await new Promise((resolve, reject) => {
358
+ server.close((err) => (err ? reject(err) : resolve()));
359
+ });
360
+ await closeRecorder();
361
+ };
362
+ // Twin boot scripts (`await serve(...)`) never call close() themselves.
363
+ // Drain the durable recorder on graceful process signals so hosted twins
364
+ // with POME_RECORDER_EVENTS_PATH set do not lose the last accepted events.
365
+ // Shared registry: every served twin flushes before a single process.exit,
366
+ // so multi-twin processes cannot lose sibling recorder tapes.
367
+ registerServeShutdown(close);
368
+ return { app, close };
369
+ }
370
+ /** Active `serve({ port })` close hooks — drained together on SIGINT/SIGTERM. */
371
+ const serveShutdownHooks = new Set();
372
+ let serveSignalHandlersInstalled = false;
373
+ function registerServeShutdown(close) {
374
+ serveShutdownHooks.add(close);
375
+ if (serveSignalHandlersInstalled)
376
+ return;
377
+ serveSignalHandlersInstalled = true;
378
+ const onSignal = () => {
379
+ void (async () => {
380
+ const hooks = [...serveShutdownHooks];
381
+ serveShutdownHooks.clear();
382
+ await Promise.allSettled(hooks.map((hook) => hook()));
383
+ process.exit(0);
384
+ })();
385
+ };
386
+ process.once("SIGINT", onSignal);
387
+ process.once("SIGTERM", onSignal);
388
+ }
389
+ function unregisterServeShutdown(close) {
390
+ serveShutdownHooks.delete(close);
391
+ }
392
+ // ─── Helpers ────────────────────────────────────────────────────────────────
393
+ /** Engine-owned `/_pome/*` route names a twin's `pomeRoutes` may not shadow. */
394
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Context } from "hono";
2
+ import type { RecorderEvent, ToolCallContext } from "./index.js";
3
+ export declare function makeToolCallContext(c: Context): {
4
+ ctx: ToolCallContext;
5
+ delta: () => RecorderEvent["state_delta"];
6
+ /** True once the handler invoked `reportDelta` (including with `null`). */
7
+ reportedDelta: () => boolean;
8
+ };
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ //
3
+ // Per-call ToolCallContext factory shared by every MCP dispatch surface
4
+ // (server.ts legacy routes + mcp-jsonrpc.ts tools/call). Exposes the
5
+ // authenticated session and captures a handler-reported state delta for the
6
+ // recorded event (F-683).
7
+ export function makeToolCallContext(c) {
8
+ let reported = null;
9
+ let didReport = false;
10
+ return {
11
+ ctx: {
12
+ session: c.get("session"),
13
+ reportDelta: (delta) => {
14
+ reported = delta;
15
+ didReport = true;
16
+ },
17
+ },
18
+ delta: () => reported,
19
+ reportedDelta: () => didReport,
20
+ };
21
+ }
22
+ //# sourceMappingURL=tool-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../src/tool-context.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,4EAA4E;AAC5E,0BAA0B;AAM1B,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAM5C,IAAI,QAAQ,GAAiC,IAAI,CAAC;IAClD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO;QACL,GAAG,EAAE;YACH,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAA6B;YACrD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrB,QAAQ,GAAG,KAAK,CAAC;gBACjB,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;SACF;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@pome-sh/sdk",
3
+ "version": "0.5.1",
4
+ "description": "Twin engine for Pome digital twins — defineTwin() + serve(): HTTP mounting, bearer auth, trace recorder, MCP dispatch, SQLite-backed state.",
5
+ "private": false,
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./server": {
15
+ "types": "./dist/server.d.ts",
16
+ "default": "./dist/server.js"
17
+ },
18
+ "./parity": {
19
+ "types": "./dist/parity.d.ts",
20
+ "default": "./dist/parity.js"
21
+ }
22
+ },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/pome-sh/digital-twins.git",
29
+ "directory": "packages/sdk"
30
+ },
31
+ "homepage": "https://github.com/pome-sh/digital-twins/tree/main/packages/sdk",
32
+ "bugs": {
33
+ "url": "https://github.com/pome-sh/digital-twins/issues"
34
+ },
35
+ "files": [
36
+ "dist"
37
+ ],
38
+ "dependencies": {
39
+ "@pome-sh/shared-types": "0.12.0",
40
+ "hono": "^4.12.27",
41
+ "zod": "^4.1.13"
42
+ },
43
+ "peerDependencies": {
44
+ "@hono/node-server": "^2.0.8"
45
+ },
46
+ "peerDependenciesMeta": {
47
+ "@hono/node-server": {
48
+ "optional": true
49
+ }
50
+ },
51
+ "engines": {
52
+ "node": ">=24"
53
+ }
54
+ }
@@ -0,0 +1,35 @@
1
+ import type { Context, MiddlewareHandler } from "hono";
2
+ /** Context variable consulted first by getClientIp(). */
3
+ export declare const CLIENT_IP_VAR = "pomeClientIp";
4
+ /**
5
+ * Explicitly record the peer address for this request. Alternate serving
6
+ * bridges (or tests) call this from an upstream middleware so the gate never
7
+ * reaches into runtime-private internals.
8
+ *
9
+ * SECURITY: the value passed here MUST be the transport-level peer address
10
+ * (the socket's remote address as reported by the serving bridge). It takes
11
+ * precedence over getConnInfo, so deriving it from any request-controlled
12
+ * input — X-Forwarded-For or any other client-supplied header — would make
13
+ * the loopback-only admin gate spoofable by whoever sets that header. If you
14
+ * are behind a reverse proxy, use TWIN_ADMIN_TOKEN instead of trying to
15
+ * recover the "real" client IP.
16
+ */
17
+ export declare function setClientIp(c: Context, ip: string): void;
18
+ /**
19
+ * Runtime-neutral client-IP accessor (FDRS-587). Resolution order:
20
+ * 1. Explicit override set via setClientIp() (alternate bridges / tests).
21
+ * 2. The node serving bridge's official getConnInfo helper.
22
+ * 3. undefined — no live socket (e.g. app.request() in-process tests).
23
+ */
24
+ export declare function getClientIp(c: Context): Promise<string | undefined>;
25
+ export declare function isLoopbackAddress(remote: string): boolean;
26
+ export interface AdminGateOptions {
27
+ /** 403 response factory so each twin keeps its own error envelope. */
28
+ forbidden?: () => Response;
29
+ }
30
+ /**
31
+ * Admin endpoint protection shared by every twin (FDRS-616). Each twin's
32
+ * auth.ts wraps this with its own `forbidden` envelope. Semantics are
33
+ * identical to the per-twin requireAdminAuth() copies this replaces.
34
+ */
35
+ export declare function createAdminGate(options?: AdminGateOptions): MiddlewareHandler;