@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.9.0",
4
- "git_sha": "2412f1350c8c75dbc179884982228467f4452bf2",
5
- "build_time": "2026-07-27T16:54:03.861Z"
3
+ "version": "0.10.0",
4
+ "git_sha": "14613c1a69d37441adc719248f0a506d7db76da9",
5
+ "build_time": "2026-07-28T23:09:18.070Z"
6
6
  }
@@ -4,6 +4,9 @@ import type { ResolvedCredentials } from "./credentials.js";
4
4
  export interface InteractiveSeams {
5
5
  stdinIsTTY?: boolean;
6
6
  confirm?: (question: string) => Promise<boolean>;
7
+ /** Free-text prompt. Added by F-1074: picking a check from a numbered list and
8
+ * filling its typed parameters needs an answer, not a yes/no. */
9
+ ask?: (question: string) => Promise<string>;
7
10
  }
8
11
  /** The manifest identity fields POSTed to the resolver. */
9
12
  export interface AgentPostBody {
@@ -11,6 +11,7 @@ export function resolveSeams(opts) {
11
11
  return {
12
12
  stdinIsTTY: opts.stdinIsTTY ?? Boolean(process.stdin.isTTY),
13
13
  confirm: opts.confirm ?? promptYesNo,
14
+ ask: opts.ask ?? promptLine,
14
15
  };
15
16
  }
16
17
  async function requestAgent(creds, body) {
@@ -119,3 +120,12 @@ async function promptYesNo(question) {
119
120
  rl.close();
120
121
  }
121
122
  }
123
+ async function promptLine(question) {
124
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
125
+ try {
126
+ return (await new Promise((resolve) => rl.question(question, resolve))).trim();
127
+ }
128
+ finally {
129
+ rl.close();
130
+ }
131
+ }
@@ -0,0 +1,32 @@
1
+ import { type InteractiveSeams } from "./agent-resolver.js";
2
+ export interface RemoteChecks {
3
+ twin: string;
4
+ digest: string;
5
+ checks: Array<{
6
+ id: string;
7
+ template: string;
8
+ substrate: string;
9
+ }>;
10
+ }
11
+ export type HandshakeResult = {
12
+ kind: "match";
13
+ } | {
14
+ kind: "skew";
15
+ message: string;
16
+ } | {
17
+ kind: "unverified";
18
+ note: string;
19
+ };
20
+ export declare function parseArgFlags(pairs: string[]): Record<string, string> | {
21
+ error: string;
22
+ };
23
+ export declare function handshake(twin: string, fetchRemote: (twin: string) => Promise<RemoteChecks>): Promise<HandshakeResult>;
24
+ export interface ChecksAddOptions extends InteractiveSeams {
25
+ check?: string;
26
+ arg: string[];
27
+ apiBaseUrl?: string;
28
+ /** Test seam — defaults to the live GET /v1/checks handshake. */
29
+ fetchRemote?: (twin: string) => Promise<RemoteChecks>;
30
+ credentialsPath?: string;
31
+ }
32
+ export declare function runChecksAddCommand(file: string, opts: ChecksAddOptions): Promise<void>;
@@ -0,0 +1,236 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * `pome checks add <file>` — pick a declared check, fill its typed parameters,
4
+ * and let pome write the English into the task file. The author never types the
5
+ * sentence, so it cannot fail to bind.
6
+ *
7
+ * The digest handshake: this CLI resolves declarations from its own npm pin and
8
+ * the cloud resolves them from a different one. Before writing, ask the cloud
9
+ * for the vocabulary it GRADES against and compare digests.
10
+ * equal → write, silently
11
+ * different → REFUSE, and name which check moved
12
+ * unreachable → write from the local pin with a named note on stderr
13
+ * Offline authoring is real, and the degraded path's worst case is bounded: a
14
+ * stale sentence that keeps a template's literal segments fails at finalize as
15
+ * `corrupted_check_instance:<id>` — named, not a silent unmatched.
16
+ */
17
+ import { readFile, writeFile } from "node:fs/promises";
18
+ import { renderCheck, templateSlots } from "@pome-sh/sdk/checks";
19
+ import { DuplicateCriterionError, MissingCriteriaSectionError, insertCriterion, } from "../task/insertCriterion.js";
20
+ import { readConfigTwins } from "../task/parseTask.js";
21
+ import { resolveSeams } from "./agent-resolver.js";
22
+ import { SUBSTRATE_HELP, checksFor, displaySentence, findCheck, localDigest, pinnedVersion, twinOf, } from "./checks.js";
23
+ import { resolveCredentials } from "./credentials.js";
24
+ export function parseArgFlags(pairs) {
25
+ const args = {};
26
+ for (const pair of pairs) {
27
+ const eq = pair.indexOf("=");
28
+ if (eq <= 0)
29
+ return { error: `--arg must be key=value, got ${JSON.stringify(pair)}` };
30
+ args[pair.slice(0, eq)] = pair.slice(eq + 1);
31
+ }
32
+ return args;
33
+ }
34
+ export async function handshake(twin, fetchRemote) {
35
+ const pin = pinnedVersion(`@pome-sh/twin-${twin}`);
36
+ let remote;
37
+ try {
38
+ remote = await fetchRemote(twin);
39
+ }
40
+ catch (err) {
41
+ return {
42
+ kind: "unverified",
43
+ note: `Not verified against the cloud (${err instanceof Error ? err.message : "unreachable"}). ` +
44
+ `Writing from the local pin: @pome-sh/twin-${twin} ${pin}.`,
45
+ };
46
+ }
47
+ if (localDigest(twin) === remote.digest)
48
+ return { kind: "match" };
49
+ const here = new Map(checksFor(twin).map((check) => [check.id, check.template]));
50
+ const there = new Map(remote.checks.map((check) => [check.id, check.template]));
51
+ const moved = [];
52
+ for (const [id, template] of here) {
53
+ if (!there.has(id))
54
+ moved.push(`${id} — this CLI has it, the cloud does not`);
55
+ else if (there.get(id) !== template) {
56
+ moved.push(`${id} — the sentence differs\n here: ${template}\n cloud: ${there.get(id)}`);
57
+ }
58
+ }
59
+ for (const id of there.keys()) {
60
+ if (!here.has(id))
61
+ moved.push(`${id} — the cloud has it, this CLI does not`);
62
+ }
63
+ return {
64
+ kind: "skew",
65
+ message: `Refusing to write: this CLI and the cloud disagree about ${twin}'s vocabulary, so a ` +
66
+ `sentence written here might not be graded there.\n` +
67
+ moved.map((line) => ` - ${line}`).join("\n") +
68
+ `\n\n local @pome-sh/twin-${twin} ${pin}` +
69
+ `\n Update with \`npm i -g @pome-sh/cli@latest\`. If this CLI is already current, the ` +
70
+ `cloud is behind — that is a deploy, not something you can fix here.`,
71
+ };
72
+ }
73
+ async function liveFetch(creds, twin) {
74
+ const res = await fetch(`${creds.apiBaseUrl}/v1/checks?twin=${encodeURIComponent(twin)}`, {
75
+ headers: { "x-api-key": creds.apiKey },
76
+ });
77
+ if (!res.ok)
78
+ throw new Error(`GET /v1/checks returned ${res.status}`);
79
+ return (await res.json());
80
+ }
81
+ async function pickInteractively(source, seams) {
82
+ // CI is not interactive even when stdin happens to be a TTY — the same guard
83
+ // as agent-resolver's, so a pipeline gets a named refusal, never a hang.
84
+ if (!seams.stdinIsTTY || process.env.CI) {
85
+ console.error("Not an interactive terminal. Pass `--check <id> --arg key=value` " +
86
+ "(run `pome checks <twin>` to see both).");
87
+ process.exitCode = 2;
88
+ return undefined;
89
+ }
90
+ const twins = readConfigTwins(source);
91
+ const available = twins.flatMap((twin) => [...checksFor(twin)]);
92
+ if (available.length === 0) {
93
+ console.error(`No declared checks for this task's twins (${twins.join(", ")}). ` +
94
+ `Use a [model] criterion, or run \`pome checks\` to see which twins declare one.`);
95
+ process.exitCode = 2;
96
+ return undefined;
97
+ }
98
+ console.log("Which check?");
99
+ available.forEach((def, i) => {
100
+ console.log(` ${i + 1}) ${displaySentence(def)}`);
101
+ console.log(` ${def.description}`);
102
+ console.log(` needs: ${SUBSTRATE_HELP[def.substrate] ?? def.substrate}`);
103
+ console.log("");
104
+ });
105
+ const answer = await seams.ask("> ");
106
+ const index = Number.parseInt(answer, 10);
107
+ const picked = Number.isInteger(index) ? available[index - 1] : undefined;
108
+ if (!picked) {
109
+ console.error(`"${answer}" is not one of 1-${available.length}.`);
110
+ process.exitCode = 2;
111
+ return undefined;
112
+ }
113
+ return picked;
114
+ }
115
+ async function promptArgs(def, seams) {
116
+ const args = {};
117
+ for (const name of templateSlots(def.template).params) {
118
+ const type = def.params[name];
119
+ // The example, never the pattern. A regex source is not a prompt.
120
+ const valid = new RegExp(`^${type.pattern}$`);
121
+ for (let attempt = 0; attempt < 3; attempt += 1) {
122
+ const value = await seams.ask(`${name} (e.g. ${type.example})\n> `);
123
+ if (valid.test(value)) {
124
+ args[name] = value;
125
+ break;
126
+ }
127
+ console.error(` not a valid ${name} — it should look like ${type.example}`);
128
+ }
129
+ if (args[name] === undefined)
130
+ return { error: `Gave up on \`${name}\` after three tries.` };
131
+ }
132
+ return args;
133
+ }
134
+ export async function runChecksAddCommand(file, opts) {
135
+ let source;
136
+ try {
137
+ source = await readFile(file, "utf8");
138
+ }
139
+ catch {
140
+ console.error(`Could not read ${file}.`);
141
+ process.exitCode = 2;
142
+ return;
143
+ }
144
+ const seams = resolveSeams(opts);
145
+ let picked;
146
+ if (opts.check) {
147
+ picked = findCheck(opts.check);
148
+ if (!picked) {
149
+ console.error(`Unknown check "${opts.check}". Run \`pome checks <twin>\` to see the declared set; ` +
150
+ `github declares: ${checksFor("github")
151
+ .map((c) => c.id)
152
+ .join(", ")}.`);
153
+ process.exitCode = 2;
154
+ return;
155
+ }
156
+ }
157
+ else {
158
+ picked = await pickInteractively(source, seams);
159
+ if (!picked)
160
+ return; // already reported why
161
+ }
162
+ const parsed = opts.check ? parseArgFlags(opts.arg) : await promptArgs(picked, seams);
163
+ if ("error" in parsed) {
164
+ console.error(parsed.error);
165
+ process.exitCode = 2;
166
+ return;
167
+ }
168
+ const args = parsed;
169
+ const slots = templateSlots(picked.template).params;
170
+ for (const name of slots) {
171
+ const type = picked.params[name];
172
+ const value = args[name];
173
+ if (value === undefined) {
174
+ console.error(`${picked.id} needs a \`${name}\` — add \`--arg ${name}=${type.example}\`.`);
175
+ process.exitCode = 2;
176
+ return;
177
+ }
178
+ if (!new RegExp(`^${type.pattern}$`).test(value)) {
179
+ console.error(`\`${name}\` = ${JSON.stringify(value)} is not valid for ${picked.id}. ` +
180
+ `Example: ${type.example}`);
181
+ process.exitCode = 2;
182
+ return;
183
+ }
184
+ }
185
+ const extra = Object.keys(args).filter((key) => !slots.includes(key));
186
+ if (extra.length > 0) {
187
+ console.error(`${picked.id} does not declare: ${extra.join(", ")}. It takes: ${slots.join(", ")}.`);
188
+ process.exitCode = 2;
189
+ return;
190
+ }
191
+ const twin = twinOf(picked.id);
192
+ const fetchRemote = opts.fetchRemote ??
193
+ (async (t) => liveFetch(await resolveCredentials({
194
+ apiBaseUrl: opts.apiBaseUrl,
195
+ credentialsPath: opts.credentialsPath,
196
+ }), t));
197
+ const gate = await handshake(twin, fetchRemote);
198
+ if (gate.kind === "skew") {
199
+ console.error(gate.message);
200
+ process.exitCode = 2;
201
+ return;
202
+ }
203
+ if (gate.kind === "unverified")
204
+ console.error(gate.note);
205
+ const tagged = readConfigTwins(source).length > 1;
206
+ const line = `- [code${tagged ? `:${twin}` : ""}] ${renderCheck(picked, args)}`;
207
+ if (!opts.check) {
208
+ console.log("");
209
+ console.log("Appending to ## Success Criteria:");
210
+ console.log("");
211
+ console.log(` ${line}`);
212
+ console.log("");
213
+ if (!(await seams.confirm(`Write it? ${line} [Y/n] `))) {
214
+ console.log("Nothing written.");
215
+ return;
216
+ }
217
+ }
218
+ let next;
219
+ try {
220
+ next = insertCriterion(source, line, file);
221
+ }
222
+ catch (err) {
223
+ if (err instanceof MissingCriteriaSectionError || err instanceof DuplicateCriterionError) {
224
+ console.error(err.message);
225
+ process.exitCode = 2;
226
+ return;
227
+ }
228
+ throw err;
229
+ }
230
+ await writeFile(file, next, "utf8");
231
+ console.log(`Wrote ${file}:`);
232
+ console.log(` ${line}`);
233
+ console.log(picked.polarity(args) === "negative"
234
+ ? " negative — this should PASS on an untouched seed; only the examinee can break it."
235
+ : " positive — this should FAIL on an untouched seed; the examinee has to make it true.");
236
+ }
@@ -0,0 +1,21 @@
1
+ import { type CheckDefinition } from "@pome-sh/sdk/checks";
2
+ export type DeclaredCheck = CheckDefinition<unknown, Record<string, string>>;
3
+ export declare function twinsWithChecks(): string[];
4
+ export declare function checksFor(twin: string): readonly DeclaredCheck[];
5
+ export declare function findCheck(id: string): DeclaredCheck | undefined;
6
+ export declare function twinOf(id: string): string | undefined;
7
+ export declare function isKnownTwin(twin: string): boolean;
8
+ /** `` No new labels were created in `<repo>` `` — every slot shown as its own
9
+ * name. Derived from the template, so no `title` field has to exist. */
10
+ export declare function displaySentence(def: DeclaredCheck): string;
11
+ export declare function localDigest(twin: string): string;
12
+ /** Read the pin from OUR OWN manifest. The twin's exports map sends
13
+ * `./package.json` through its `"./*"` wildcard and fails to resolve — and the
14
+ * pin we control is the one that matters anyway. */
15
+ export declare function pinnedVersion(pkg: string): string;
16
+ export declare const SUBSTRATE_HELP: Record<string, string>;
17
+ export declare function argFlagsFor(def: DeclaredCheck): string;
18
+ export interface ChecksCommandOptions {
19
+ json?: boolean;
20
+ }
21
+ export declare function runChecksCommand(twinArg: string | undefined, opts: ChecksCommandOptions): Promise<void>;
@@ -0,0 +1,150 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * `pome checks` — the assertable vocabulary a twin declares.
4
+ *
5
+ * Discovery is offline, like `pome tasks`: the declaration comes from the twin
6
+ * package this CLI is pinned to. That is a SECOND resolution point (pome-cloud's
7
+ * `resolveDeclaredChecks` is the first), accepted so authoring works without a
8
+ * network, and gated by the digest handshake in `checks-add.ts` — which refuses
9
+ * to write a sentence when the two pins disagree.
10
+ */
11
+ import { readFileSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ import { checksDigest, templateSlots } from "@pome-sh/sdk/checks";
14
+ import { GITHUB_CHECKS } from "@pome-sh/twin-github/checks";
15
+ import { resolvePackageRoot } from "./resolve-package-root.js";
16
+ const REGISTRIES = {
17
+ github: GITHUB_CHECKS,
18
+ };
19
+ // Twins that EXIST but declare nothing yet. Listed separately so `pome checks
20
+ // slack` answers "not migrated yet" instead of "no such twin" — a typo and an
21
+ // empty vocabulary are different facts.
22
+ const TWINS_WITHOUT_CHECKS = ["slack", "stripe", "gmail", "linear"];
23
+ export function twinsWithChecks() {
24
+ return Object.keys(REGISTRIES).sort();
25
+ }
26
+ export function checksFor(twin) {
27
+ return REGISTRIES[twin] ?? [];
28
+ }
29
+ export function findCheck(id) {
30
+ for (const checks of Object.values(REGISTRIES)) {
31
+ const hit = checks.find((check) => check.id === id);
32
+ if (hit)
33
+ return hit;
34
+ }
35
+ return undefined;
36
+ }
37
+ export function twinOf(id) {
38
+ for (const [twin, checks] of Object.entries(REGISTRIES)) {
39
+ if (checks.some((check) => check.id === id))
40
+ return twin;
41
+ }
42
+ return undefined;
43
+ }
44
+ export function isKnownTwin(twin) {
45
+ return twinsWithChecks().includes(twin) || TWINS_WITHOUT_CHECKS.includes(twin);
46
+ }
47
+ /** `` No new labels were created in `<repo>` `` — every slot shown as its own
48
+ * name. Derived from the template, so no `title` field has to exist. */
49
+ export function displaySentence(def) {
50
+ const { literals, params } = templateSlots(def.template);
51
+ return params.reduce((out, param, i) => `${out}<${param}>${literals[i + 1]}`, literals[0]);
52
+ }
53
+ export function localDigest(twin) {
54
+ return checksDigest(checksFor(twin));
55
+ }
56
+ /** Read the pin from OUR OWN manifest. The twin's exports map sends
57
+ * `./package.json` through its `"./*"` wildcard and fails to resolve — and the
58
+ * pin we control is the one that matters anyway. */
59
+ export function pinnedVersion(pkg) {
60
+ const root = resolvePackageRoot(import.meta.url);
61
+ if (!root)
62
+ return "unknown";
63
+ try {
64
+ const manifest = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
65
+ return manifest.dependencies?.[pkg] ?? "unknown";
66
+ }
67
+ catch {
68
+ return "unknown";
69
+ }
70
+ }
71
+ export const SUBSTRATE_HELP = {
72
+ final: "the final state",
73
+ "seed+final": "the seed and the final state",
74
+ tape: "the recorded call tape",
75
+ };
76
+ function useColor() {
77
+ return Boolean(process.stdout.isTTY && !process.env.NO_COLOR);
78
+ }
79
+ function dim(s) {
80
+ return useColor() ? `\x1b[2m${s}\x1b[0m` : s;
81
+ }
82
+ function bold(s) {
83
+ return useColor() ? `\x1b[1m${s}\x1b[0m` : s;
84
+ }
85
+ export function argFlagsFor(def) {
86
+ return templateSlots(def.template)
87
+ .params.map((name) => `--arg ${name}=${def.params[name].example}`)
88
+ .join(" ");
89
+ }
90
+ function jsonView(twin) {
91
+ return {
92
+ twin,
93
+ digest: localDigest(twin),
94
+ checks: checksFor(twin).map((def) => ({
95
+ id: def.id,
96
+ template: def.template,
97
+ description: def.description,
98
+ substrate: def.substrate,
99
+ params: templateSlots(def.template).params.map((name) => ({
100
+ name,
101
+ pattern: def.params[name].pattern,
102
+ example: def.params[name].example,
103
+ })),
104
+ })),
105
+ };
106
+ }
107
+ export async function runChecksCommand(twinArg, opts) {
108
+ if (!twinArg) {
109
+ if (opts.json) {
110
+ console.log(JSON.stringify({ twins: twinsWithChecks() }, null, 2));
111
+ return;
112
+ }
113
+ console.log(bold("Pome checks"));
114
+ console.log(dim("Twins that declare an assertable vocabulary."));
115
+ console.log("");
116
+ for (const twin of twinsWithChecks()) {
117
+ console.log(` ${bold(twin)} ${dim(`(${checksFor(twin).length} checks)`)}`);
118
+ }
119
+ console.log("");
120
+ console.log(dim("Run `pome checks <twin>` to list them."));
121
+ return;
122
+ }
123
+ const twin = twinArg.trim();
124
+ if (!isKnownTwin(twin)) {
125
+ console.error(`Unknown twin "${twin}". Twins that declare checks: ${twinsWithChecks().join(", ")}.`);
126
+ process.exitCode = 2;
127
+ return;
128
+ }
129
+ if (opts.json) {
130
+ console.log(JSON.stringify(jsonView(twin), null, 2));
131
+ return;
132
+ }
133
+ const checks = checksFor(twin);
134
+ if (checks.length === 0) {
135
+ console.log(bold(`${twin} — no declared checks yet`));
136
+ console.log(dim(`Its vocabulary has not been migrated. Use [model] criteria for ${twin} for now.`));
137
+ return;
138
+ }
139
+ console.log(`${bold(`${twin} — ${checks.length} declared check${checks.length === 1 ? "" : "s"}`)} ` +
140
+ dim(`(@pome-sh/twin-${twin} ${pinnedVersion(`@pome-sh/twin-${twin}`)})`));
141
+ console.log("");
142
+ for (const def of checks) {
143
+ console.log(` ${bold(def.id)}`);
144
+ console.log(` ${displaySentence(def)}`);
145
+ console.log(` ${dim(def.description)}`);
146
+ console.log(` ${dim(`needs: ${SUBSTRATE_HELP[def.substrate] ?? def.substrate}`)}`);
147
+ console.log(` ${dim(`pome checks add <file> --check ${def.id} ${argFlagsFor(def)}`)}`);
148
+ console.log("");
149
+ }
150
+ }
@@ -17,6 +17,8 @@ import { loginWithClerk } from "./login.js";
17
17
  import { runDocsCommand } from "./docs.js";
18
18
  import { runCompileSeeds } from "./compile-seeds.js";
19
19
  import { runTasksCommand } from "./tasks.js";
20
+ import { runChecksCommand } from "./checks.js";
21
+ import { runChecksAddCommand } from "./checks-add.js";
20
22
  import { runEvalCommand } from "./eval.js";
21
23
  import { copyAnnounceLine, ensureDefaultTask, runYoursFrameLines, trialsPinFallbackLine, } from "./default-task.js";
22
24
  import { findTwin, runnableTasks, } from "./tasks-catalog.js";
@@ -245,6 +247,32 @@ export function createProgram() {
245
247
  };
246
248
  registerTasksCommand("tasks", false);
247
249
  registerTasksCommand("scenarios", true);
250
+ // F-1074 — `pome checks` is a TOP-LEVEL group, not `pome tasks checks`:
251
+ // `pome tasks` already takes `[twin]` positionally, so `tasks checks` would
252
+ // parse "checks" as a twin id, and `pome task` one letter from `pome tasks`
253
+ // is a trap.
254
+ const checks = program
255
+ .command("checks")
256
+ .argument("[twin]", "Twin id (e.g. github). Omit to list twins that declare checks.")
257
+ .option("--json", "Emit the declaration as JSON (for skills and agents).", false)
258
+ .description("Browse the typed checks a twin declares — the closed set [code] criteria come from")
259
+ .action(async (twin, opts) => {
260
+ await runChecksCommand(twin, { json: opts.json });
261
+ });
262
+ checks
263
+ .command("add")
264
+ .argument("<file>", "Task markdown file to append a criterion to")
265
+ .option("--check <id>", "Check id (run `pome checks <twin>` to list them)")
266
+ .option("--arg <key=value>", "One per declared parameter. Repeat the flag.", (value, previous = []) => [...previous, value], [])
267
+ .option("--api-url <url>", "Control-plane URL", process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL)
268
+ .description("Add one [code] criterion by picking a declared check — pome writes the English")
269
+ .action(async (file, opts) => {
270
+ await runChecksAddCommand(file, {
271
+ check: opts.check,
272
+ arg: opts.arg,
273
+ apiBaseUrl: opts.apiUrl,
274
+ });
275
+ });
248
276
  program
249
277
  .command("compile-seeds")
250
278
  .argument("[target]", "Task .md file or directory (defaults to ./tasks)")
@@ -75,7 +75,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
75
75
  }[];
76
76
  statuses: {
77
77
  context: string;
78
- state: "error" | "success" | "failure" | "pending";
78
+ state: "error" | "failure" | "pending" | "success";
79
79
  description: string;
80
80
  }[];
81
81
  number?: number | undefined;
@@ -321,7 +321,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
321
321
  states?: {
322
322
  name: string;
323
323
  id?: string | undefined;
324
- type?: "completed" | "backlog" | "unstarted" | "started" | "canceled" | undefined;
324
+ type?: "backlog" | "unstarted" | "started" | "completed" | "canceled" | undefined;
325
325
  position?: number | undefined;
326
326
  }[] | undefined;
327
327
  }[];
@@ -334,7 +334,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
334
334
  }[];
335
335
  projects: {
336
336
  name: string;
337
- state: "completed" | "started" | "canceled" | "planned";
337
+ state: "started" | "completed" | "canceled" | "planned";
338
338
  id?: string | undefined;
339
339
  description?: string | null | undefined;
340
340
  team?: string | undefined;
@@ -394,7 +394,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
394
394
  clientSecret: string;
395
395
  name: string;
396
396
  redirectUris: string[];
397
- actor: "user" | "app";
397
+ actor: "app" | "user";
398
398
  assignable: boolean;
399
399
  mentionable: boolean;
400
400
  id?: string | undefined;
@@ -407,7 +407,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
407
407
  user?: string | undefined;
408
408
  app?: string | undefined;
409
409
  scopes?: string | string[] | undefined;
410
- actor?: "user" | "app" | undefined;
410
+ actor?: "app" | "user" | undefined;
411
411
  sid?: string | undefined;
412
412
  expiresAt?: string | null | undefined;
413
413
  }[];
@@ -470,7 +470,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
470
470
  }[];
471
471
  statuses: {
472
472
  context: string;
473
- state: "error" | "success" | "failure" | "pending";
473
+ state: "error" | "failure" | "pending" | "success";
474
474
  description: string;
475
475
  }[];
476
476
  number?: number | undefined;
@@ -716,7 +716,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
716
716
  states?: {
717
717
  name: string;
718
718
  id?: string | undefined;
719
- type?: "completed" | "backlog" | "unstarted" | "started" | "canceled" | undefined;
719
+ type?: "backlog" | "unstarted" | "started" | "completed" | "canceled" | undefined;
720
720
  position?: number | undefined;
721
721
  }[] | undefined;
722
722
  }[];
@@ -729,7 +729,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
729
729
  }[];
730
730
  projects: {
731
731
  name: string;
732
- state: "completed" | "started" | "canceled" | "planned";
732
+ state: "started" | "completed" | "canceled" | "planned";
733
733
  id?: string | undefined;
734
734
  description?: string | null | undefined;
735
735
  team?: string | undefined;
@@ -789,7 +789,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
789
789
  clientSecret: string;
790
790
  name: string;
791
791
  redirectUris: string[];
792
- actor: "user" | "app";
792
+ actor: "app" | "user";
793
793
  assignable: boolean;
794
794
  mentionable: boolean;
795
795
  id?: string | undefined;
@@ -802,7 +802,7 @@ export declare function runTask(options: RunTaskOptions): Promise<{
802
802
  user?: string | undefined;
803
803
  app?: string | undefined;
804
804
  scopes?: string | string[] | undefined;
805
- actor?: "user" | "app" | undefined;
805
+ actor?: "app" | "user" | undefined;
806
806
  sid?: string | undefined;
807
807
  expiresAt?: string | null | undefined;
808
808
  }[];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * F-1074 — append one rendered criterion to a task file's `## Success Criteria`,
3
+ * touching nothing else.
4
+ *
5
+ * It does NOT parse and re-serialize the markdown. Re-serializing is how the
6
+ * readable artifact drifts, and the north-star check on this ticket is that it
7
+ * does not: authoring a criterion changes exactly one line.
8
+ */
9
+ export declare class MissingCriteriaSectionError extends Error {
10
+ constructor(path: string);
11
+ }
12
+ export declare class DuplicateCriterionError extends Error {
13
+ constructor(path: string, line: string);
14
+ }
15
+ export declare function insertCriterion(source: string, line: string, path?: string): string;