@pome-sh/cli 0.1.0 → 0.1.1

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 (471) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/src/doctor/checks.js +2 -2
  3. package/node_modules/@pome-sh/sdk/dist/db.d.ts +4 -4
  4. package/node_modules/@pome-sh/sdk/dist/db.js +93 -25
  5. package/node_modules/@pome-sh/sdk/dist/db.js.map +1 -1
  6. package/node_modules/@pome-sh/sdk/package.json +2 -6
  7. package/node_modules/@pome-sh/twin-github/README.md +2 -1
  8. package/node_modules/@pome-sh/twin-github/package.json +2 -3
  9. package/node_modules/@pome-sh/twin-slack/package.json +2 -3
  10. package/node_modules/@pome-sh/twin-stripe/README.md +2 -2
  11. package/node_modules/@pome-sh/twin-stripe/package.json +2 -3
  12. package/package.json +6 -7
  13. package/dist/src/recorder/verdictArtifact.d.ts +0 -71
  14. package/dist/src/recorder/verdictArtifact.js +0 -207
  15. package/dist/src/score/view.d.ts +0 -38
  16. package/dist/src/score/view.js +0 -59
  17. package/dist/src/twin/github/app.d.ts +0 -10
  18. package/dist/src/twin/github/app.js +0 -316
  19. package/dist/src/twin/github/db/migrations.d.ts +0 -2
  20. package/dist/src/twin/github/db/migrations.js +0 -64
  21. package/dist/src/twin/github/db/openDatabase.d.ts +0 -2
  22. package/dist/src/twin/github/db/openDatabase.js +0 -13
  23. package/dist/src/twin/github/db/queries.d.ts +0 -77
  24. package/dist/src/twin/github/db/queries.js +0 -93
  25. package/dist/src/twin/github/domain/seed.d.ts +0 -74
  26. package/dist/src/twin/github/domain/seed.js +0 -104
  27. package/dist/src/twin/github/domain/serializers.d.ts +0 -113
  28. package/dist/src/twin/github/domain/serializers.js +0 -76
  29. package/dist/src/twin/github/types.d.ts +0 -66
  30. package/dist/src/twin/github/types.js +0 -1
  31. package/dist/src/twin-github/app.d.ts +0 -9
  32. package/dist/src/twin-github/app.js +0 -327
  33. package/dist/src/twin-github/auth.d.ts +0 -16
  34. package/dist/src/twin-github/auth.js +0 -142
  35. package/dist/src/twin-github/build-info.d.ts +0 -7
  36. package/dist/src/twin-github/build-info.js +0 -52
  37. package/dist/src/twin-github/db.d.ts +0 -4
  38. package/dist/src/twin-github/db.js +0 -362
  39. package/dist/src/twin-github/domain.d.ts +0 -1649
  40. package/dist/src/twin-github/domain.js +0 -957
  41. package/dist/src/twin-github/errors.d.ts +0 -14
  42. package/dist/src/twin-github/errors.js +0 -34
  43. package/dist/src/twin-github/index.d.ts +0 -9
  44. package/dist/src/twin-github/index.js +0 -7
  45. package/dist/src/twin-github/mcp.d.ts +0 -17
  46. package/dist/src/twin-github/mcp.js +0 -281
  47. package/dist/src/twin-github/recorder.d.ts +0 -2
  48. package/dist/src/twin-github/recorder.js +0 -29
  49. package/dist/src/twin-github/seed.d.ts +0 -74
  50. package/dist/src/twin-github/seed.js +0 -107
  51. package/dist/src/twin-github/serializers.d.ts +0 -449
  52. package/dist/src/twin-github/serializers.js +0 -429
  53. package/dist/src/twin-github/server.d.ts +0 -1
  54. package/dist/src/twin-github/server.js +0 -34
  55. package/dist/src/twin-github/tools.d.ts +0 -1545
  56. package/dist/src/twin-github/tools.js +0 -347
  57. package/dist/src/twin-github/types.d.ts +0 -198
  58. package/dist/src/twin-github/types.js +0 -1
  59. package/dist/src/twin-github/unsupported-envelope.d.ts +0 -10
  60. package/dist/src/twin-github/unsupported-envelope.js +0 -29
  61. package/dist/src/twin-github/util.d.ts +0 -13
  62. package/dist/src/twin-github/util.js +0 -61
  63. package/dist/src/twin-slack/app.d.ts +0 -17
  64. package/dist/src/twin-slack/app.js +0 -683
  65. package/dist/src/twin-slack/auth.d.ts +0 -38
  66. package/dist/src/twin-slack/auth.js +0 -219
  67. package/dist/src/twin-slack/build-info.d.ts +0 -7
  68. package/dist/src/twin-slack/build-info.js +0 -9
  69. package/dist/src/twin-slack/db.d.ts +0 -4
  70. package/dist/src/twin-slack/db.js +0 -213
  71. package/dist/src/twin-slack/domain.d.ts +0 -236
  72. package/dist/src/twin-slack/domain.js +0 -1293
  73. package/dist/src/twin-slack/errors.d.ts +0 -16
  74. package/dist/src/twin-slack/errors.js +0 -60
  75. package/dist/src/twin-slack/index.d.ts +0 -8
  76. package/dist/src/twin-slack/index.js +0 -8
  77. package/dist/src/twin-slack/mcp.d.ts +0 -17
  78. package/dist/src/twin-slack/mcp.js +0 -226
  79. package/dist/src/twin-slack/recorder.d.ts +0 -2
  80. package/dist/src/twin-slack/recorder.js +0 -15
  81. package/dist/src/twin-slack/seed.d.ts +0 -49
  82. package/dist/src/twin-slack/seed.js +0 -139
  83. package/dist/src/twin-slack/serializers.d.ts +0 -141
  84. package/dist/src/twin-slack/serializers.js +0 -377
  85. package/dist/src/twin-slack/tools.d.ts +0 -97
  86. package/dist/src/twin-slack/tools.js +0 -171
  87. package/dist/src/twin-slack/types.d.ts +0 -164
  88. package/dist/src/twin-slack/types.js +0 -1
  89. package/dist/src/twin-slack/unsupported-envelope.d.ts +0 -12
  90. package/dist/src/twin-slack/unsupported-envelope.js +0 -61
  91. package/dist/src/twin-slack/upstream-types.d.ts +0 -19
  92. package/dist/src/twin-slack/upstream-types.js +0 -1
  93. package/dist/src/twin-slack/util.d.ts +0 -31
  94. package/dist/src/twin-slack/util.js +0 -136
  95. package/node_modules/base64-js/LICENSE +0 -21
  96. package/node_modules/base64-js/README.md +0 -34
  97. package/node_modules/base64-js/base64js.min.js +0 -1
  98. package/node_modules/base64-js/index.d.ts +0 -3
  99. package/node_modules/base64-js/index.js +0 -150
  100. package/node_modules/base64-js/package.json +0 -47
  101. package/node_modules/better-sqlite3/LICENSE +0 -21
  102. package/node_modules/better-sqlite3/README.md +0 -99
  103. package/node_modules/better-sqlite3/binding.gyp +0 -38
  104. package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  105. package/node_modules/better-sqlite3/deps/common.gypi +0 -68
  106. package/node_modules/better-sqlite3/deps/copy.js +0 -31
  107. package/node_modules/better-sqlite3/deps/defines.gypi +0 -42
  108. package/node_modules/better-sqlite3/deps/download.sh +0 -123
  109. package/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
  110. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -269395
  111. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -14347
  112. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -739
  113. package/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
  114. package/node_modules/better-sqlite3/deps/test_extension.c +0 -21
  115. package/node_modules/better-sqlite3/lib/database.js +0 -90
  116. package/node_modules/better-sqlite3/lib/index.js +0 -3
  117. package/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  118. package/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  119. package/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  120. package/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  121. package/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  122. package/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  123. package/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  124. package/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  125. package/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  126. package/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  127. package/node_modules/better-sqlite3/lib/util.js +0 -12
  128. package/node_modules/better-sqlite3/package.json +0 -59
  129. package/node_modules/better-sqlite3/src/addon.cpp +0 -47
  130. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -74
  131. package/node_modules/better-sqlite3/src/objects/backup.cpp +0 -120
  132. package/node_modules/better-sqlite3/src/objects/backup.hpp +0 -36
  133. package/node_modules/better-sqlite3/src/objects/database.cpp +0 -417
  134. package/node_modules/better-sqlite3/src/objects/database.hpp +0 -103
  135. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +0 -113
  136. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +0 -50
  137. package/node_modules/better-sqlite3/src/objects/statement.cpp +0 -383
  138. package/node_modules/better-sqlite3/src/objects/statement.hpp +0 -58
  139. package/node_modules/better-sqlite3/src/util/bind-map.cpp +0 -73
  140. package/node_modules/better-sqlite3/src/util/binder.cpp +0 -193
  141. package/node_modules/better-sqlite3/src/util/constants.cpp +0 -172
  142. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +0 -121
  143. package/node_modules/better-sqlite3/src/util/custom-function.cpp +0 -59
  144. package/node_modules/better-sqlite3/src/util/custom-table.cpp +0 -409
  145. package/node_modules/better-sqlite3/src/util/data-converter.cpp +0 -17
  146. package/node_modules/better-sqlite3/src/util/data.cpp +0 -194
  147. package/node_modules/better-sqlite3/src/util/helpers.cpp +0 -109
  148. package/node_modules/better-sqlite3/src/util/macros.cpp +0 -90
  149. package/node_modules/better-sqlite3/src/util/query-macros.cpp +0 -71
  150. package/node_modules/better-sqlite3/src/util/row-builder.cpp +0 -49
  151. package/node_modules/bindings/LICENSE.md +0 -22
  152. package/node_modules/bindings/README.md +0 -98
  153. package/node_modules/bindings/bindings.js +0 -221
  154. package/node_modules/bindings/package.json +0 -28
  155. package/node_modules/bl/.travis.yml +0 -17
  156. package/node_modules/bl/BufferList.js +0 -396
  157. package/node_modules/bl/LICENSE.md +0 -13
  158. package/node_modules/bl/README.md +0 -247
  159. package/node_modules/bl/bl.js +0 -84
  160. package/node_modules/bl/package.json +0 -37
  161. package/node_modules/bl/test/convert.js +0 -21
  162. package/node_modules/bl/test/indexOf.js +0 -492
  163. package/node_modules/bl/test/isBufferList.js +0 -32
  164. package/node_modules/bl/test/test.js +0 -869
  165. package/node_modules/buffer/AUTHORS.md +0 -70
  166. package/node_modules/buffer/LICENSE +0 -21
  167. package/node_modules/buffer/README.md +0 -410
  168. package/node_modules/buffer/index.d.ts +0 -186
  169. package/node_modules/buffer/index.js +0 -1817
  170. package/node_modules/buffer/package.json +0 -96
  171. package/node_modules/chownr/LICENSE +0 -15
  172. package/node_modules/chownr/README.md +0 -3
  173. package/node_modules/chownr/chownr.js +0 -167
  174. package/node_modules/chownr/package.json +0 -29
  175. package/node_modules/decompress-response/index.d.ts +0 -22
  176. package/node_modules/decompress-response/index.js +0 -58
  177. package/node_modules/decompress-response/license +0 -9
  178. package/node_modules/decompress-response/package.json +0 -56
  179. package/node_modules/decompress-response/readme.md +0 -48
  180. package/node_modules/deep-extend/CHANGELOG.md +0 -46
  181. package/node_modules/deep-extend/LICENSE +0 -20
  182. package/node_modules/deep-extend/README.md +0 -91
  183. package/node_modules/deep-extend/index.js +0 -1
  184. package/node_modules/deep-extend/lib/deep-extend.js +0 -150
  185. package/node_modules/deep-extend/package.json +0 -62
  186. package/node_modules/detect-libc/LICENSE +0 -201
  187. package/node_modules/detect-libc/README.md +0 -163
  188. package/node_modules/detect-libc/index.d.ts +0 -14
  189. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  190. package/node_modules/detect-libc/lib/elf.js +0 -39
  191. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  192. package/node_modules/detect-libc/lib/process.js +0 -24
  193. package/node_modules/detect-libc/package.json +0 -44
  194. package/node_modules/end-of-stream/LICENSE +0 -21
  195. package/node_modules/end-of-stream/README.md +0 -54
  196. package/node_modules/end-of-stream/index.js +0 -96
  197. package/node_modules/end-of-stream/package.json +0 -37
  198. package/node_modules/expand-template/.travis.yml +0 -6
  199. package/node_modules/expand-template/LICENSE +0 -21
  200. package/node_modules/expand-template/README.md +0 -43
  201. package/node_modules/expand-template/index.js +0 -26
  202. package/node_modules/expand-template/package.json +0 -29
  203. package/node_modules/expand-template/test.js +0 -67
  204. package/node_modules/file-uri-to-path/.npmignore +0 -1
  205. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  206. package/node_modules/file-uri-to-path/History.md +0 -21
  207. package/node_modules/file-uri-to-path/LICENSE +0 -20
  208. package/node_modules/file-uri-to-path/README.md +0 -74
  209. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  210. package/node_modules/file-uri-to-path/index.js +0 -66
  211. package/node_modules/file-uri-to-path/package.json +0 -32
  212. package/node_modules/file-uri-to-path/test/test.js +0 -24
  213. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  214. package/node_modules/fs-constants/LICENSE +0 -21
  215. package/node_modules/fs-constants/README.md +0 -26
  216. package/node_modules/fs-constants/browser.js +0 -1
  217. package/node_modules/fs-constants/index.js +0 -1
  218. package/node_modules/fs-constants/package.json +0 -19
  219. package/node_modules/github-from-package/.travis.yml +0 -4
  220. package/node_modules/github-from-package/LICENSE +0 -18
  221. package/node_modules/github-from-package/example/package.json +0 -8
  222. package/node_modules/github-from-package/example/url.js +0 -3
  223. package/node_modules/github-from-package/index.js +0 -17
  224. package/node_modules/github-from-package/package.json +0 -30
  225. package/node_modules/github-from-package/readme.markdown +0 -53
  226. package/node_modules/github-from-package/test/a.json +0 -8
  227. package/node_modules/github-from-package/test/b.json +0 -5
  228. package/node_modules/github-from-package/test/c.json +0 -5
  229. package/node_modules/github-from-package/test/d.json +0 -7
  230. package/node_modules/github-from-package/test/e.json +0 -5
  231. package/node_modules/github-from-package/test/url.js +0 -19
  232. package/node_modules/ieee754/LICENSE +0 -11
  233. package/node_modules/ieee754/README.md +0 -51
  234. package/node_modules/ieee754/index.d.ts +0 -10
  235. package/node_modules/ieee754/index.js +0 -85
  236. package/node_modules/ieee754/package.json +0 -52
  237. package/node_modules/inherits/LICENSE +0 -16
  238. package/node_modules/inherits/README.md +0 -42
  239. package/node_modules/inherits/inherits.js +0 -9
  240. package/node_modules/inherits/inherits_browser.js +0 -27
  241. package/node_modules/inherits/package.json +0 -29
  242. package/node_modules/ini/LICENSE +0 -15
  243. package/node_modules/ini/README.md +0 -102
  244. package/node_modules/ini/ini.js +0 -206
  245. package/node_modules/ini/package.json +0 -33
  246. package/node_modules/mimic-response/index.d.ts +0 -17
  247. package/node_modules/mimic-response/index.js +0 -77
  248. package/node_modules/mimic-response/license +0 -9
  249. package/node_modules/mimic-response/package.json +0 -42
  250. package/node_modules/mimic-response/readme.md +0 -78
  251. package/node_modules/minimist/.eslintrc +0 -29
  252. package/node_modules/minimist/.github/FUNDING.yml +0 -12
  253. package/node_modules/minimist/.nycrc +0 -14
  254. package/node_modules/minimist/CHANGELOG.md +0 -298
  255. package/node_modules/minimist/LICENSE +0 -18
  256. package/node_modules/minimist/README.md +0 -121
  257. package/node_modules/minimist/example/parse.js +0 -4
  258. package/node_modules/minimist/index.js +0 -263
  259. package/node_modules/minimist/package.json +0 -75
  260. package/node_modules/minimist/test/all_bool.js +0 -34
  261. package/node_modules/minimist/test/bool.js +0 -177
  262. package/node_modules/minimist/test/dash.js +0 -43
  263. package/node_modules/minimist/test/default_bool.js +0 -37
  264. package/node_modules/minimist/test/dotted.js +0 -24
  265. package/node_modules/minimist/test/kv_short.js +0 -32
  266. package/node_modules/minimist/test/long.js +0 -33
  267. package/node_modules/minimist/test/num.js +0 -38
  268. package/node_modules/minimist/test/parse.js +0 -209
  269. package/node_modules/minimist/test/parse_modified.js +0 -11
  270. package/node_modules/minimist/test/proto.js +0 -64
  271. package/node_modules/minimist/test/short.js +0 -69
  272. package/node_modules/minimist/test/stop_early.js +0 -17
  273. package/node_modules/minimist/test/unknown.js +0 -104
  274. package/node_modules/minimist/test/whitespace.js +0 -10
  275. package/node_modules/mkdirp-classic/LICENSE +0 -21
  276. package/node_modules/mkdirp-classic/README.md +0 -18
  277. package/node_modules/mkdirp-classic/index.js +0 -98
  278. package/node_modules/mkdirp-classic/package.json +0 -18
  279. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
  280. package/node_modules/napi-build-utils/LICENSE +0 -21
  281. package/node_modules/napi-build-utils/README.md +0 -52
  282. package/node_modules/napi-build-utils/index.js +0 -214
  283. package/node_modules/napi-build-utils/index.md +0 -0
  284. package/node_modules/napi-build-utils/package.json +0 -42
  285. package/node_modules/node-abi/LICENSE +0 -21
  286. package/node_modules/node-abi/README.md +0 -54
  287. package/node_modules/node-abi/abi_registry.json +0 -453
  288. package/node_modules/node-abi/index.js +0 -179
  289. package/node_modules/node-abi/package.json +0 -45
  290. package/node_modules/once/LICENSE +0 -15
  291. package/node_modules/once/README.md +0 -79
  292. package/node_modules/once/once.js +0 -42
  293. package/node_modules/once/package.json +0 -33
  294. package/node_modules/prebuild-install/CHANGELOG.md +0 -131
  295. package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  296. package/node_modules/prebuild-install/LICENSE +0 -21
  297. package/node_modules/prebuild-install/README.md +0 -163
  298. package/node_modules/prebuild-install/asset.js +0 -44
  299. package/node_modules/prebuild-install/bin.js +0 -78
  300. package/node_modules/prebuild-install/download.js +0 -142
  301. package/node_modules/prebuild-install/error.js +0 -14
  302. package/node_modules/prebuild-install/help.txt +0 -16
  303. package/node_modules/prebuild-install/index.js +0 -1
  304. package/node_modules/prebuild-install/log.js +0 -33
  305. package/node_modules/prebuild-install/package.json +0 -67
  306. package/node_modules/prebuild-install/proxy.js +0 -35
  307. package/node_modules/prebuild-install/rc.js +0 -64
  308. package/node_modules/prebuild-install/util.js +0 -143
  309. package/node_modules/pump/.github/FUNDING.yml +0 -2
  310. package/node_modules/pump/.travis.yml +0 -5
  311. package/node_modules/pump/LICENSE +0 -21
  312. package/node_modules/pump/README.md +0 -74
  313. package/node_modules/pump/SECURITY.md +0 -5
  314. package/node_modules/pump/empty.js +0 -1
  315. package/node_modules/pump/index.js +0 -86
  316. package/node_modules/pump/package.json +0 -30
  317. package/node_modules/pump/test-browser.js +0 -66
  318. package/node_modules/pump/test-node.js +0 -53
  319. package/node_modules/rc/LICENSE.APACHE2 +0 -15
  320. package/node_modules/rc/LICENSE.BSD +0 -26
  321. package/node_modules/rc/LICENSE.MIT +0 -24
  322. package/node_modules/rc/README.md +0 -227
  323. package/node_modules/rc/browser.js +0 -7
  324. package/node_modules/rc/cli.js +0 -4
  325. package/node_modules/rc/index.js +0 -53
  326. package/node_modules/rc/lib/utils.js +0 -104
  327. package/node_modules/rc/package.json +0 -29
  328. package/node_modules/rc/test/ini.js +0 -16
  329. package/node_modules/rc/test/nested-env-vars.js +0 -50
  330. package/node_modules/rc/test/test.js +0 -59
  331. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  332. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  333. package/node_modules/readable-stream/LICENSE +0 -47
  334. package/node_modules/readable-stream/README.md +0 -106
  335. package/node_modules/readable-stream/errors-browser.js +0 -127
  336. package/node_modules/readable-stream/errors.js +0 -116
  337. package/node_modules/readable-stream/experimentalWarning.js +0 -17
  338. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  339. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  340. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  341. package/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  342. package/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  343. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  344. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  345. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  346. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  347. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  348. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  349. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  350. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  351. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  352. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  353. package/node_modules/readable-stream/package.json +0 -68
  354. package/node_modules/readable-stream/readable-browser.js +0 -9
  355. package/node_modules/readable-stream/readable.js +0 -16
  356. package/node_modules/safe-buffer/LICENSE +0 -21
  357. package/node_modules/safe-buffer/README.md +0 -584
  358. package/node_modules/safe-buffer/index.d.ts +0 -187
  359. package/node_modules/safe-buffer/index.js +0 -65
  360. package/node_modules/safe-buffer/package.json +0 -51
  361. package/node_modules/semver/LICENSE +0 -15
  362. package/node_modules/semver/README.md +0 -680
  363. package/node_modules/semver/bin/semver.js +0 -195
  364. package/node_modules/semver/classes/comparator.js +0 -143
  365. package/node_modules/semver/classes/index.js +0 -7
  366. package/node_modules/semver/classes/range.js +0 -577
  367. package/node_modules/semver/classes/semver.js +0 -350
  368. package/node_modules/semver/functions/clean.js +0 -8
  369. package/node_modules/semver/functions/cmp.js +0 -54
  370. package/node_modules/semver/functions/coerce.js +0 -62
  371. package/node_modules/semver/functions/compare-build.js +0 -9
  372. package/node_modules/semver/functions/compare-loose.js +0 -5
  373. package/node_modules/semver/functions/compare.js +0 -7
  374. package/node_modules/semver/functions/diff.js +0 -60
  375. package/node_modules/semver/functions/eq.js +0 -5
  376. package/node_modules/semver/functions/gt.js +0 -5
  377. package/node_modules/semver/functions/gte.js +0 -5
  378. package/node_modules/semver/functions/inc.js +0 -21
  379. package/node_modules/semver/functions/lt.js +0 -5
  380. package/node_modules/semver/functions/lte.js +0 -5
  381. package/node_modules/semver/functions/major.js +0 -5
  382. package/node_modules/semver/functions/minor.js +0 -5
  383. package/node_modules/semver/functions/neq.js +0 -5
  384. package/node_modules/semver/functions/parse.js +0 -18
  385. package/node_modules/semver/functions/patch.js +0 -5
  386. package/node_modules/semver/functions/prerelease.js +0 -8
  387. package/node_modules/semver/functions/rcompare.js +0 -5
  388. package/node_modules/semver/functions/rsort.js +0 -5
  389. package/node_modules/semver/functions/satisfies.js +0 -12
  390. package/node_modules/semver/functions/sort.js +0 -5
  391. package/node_modules/semver/functions/truncate.js +0 -48
  392. package/node_modules/semver/functions/valid.js +0 -8
  393. package/node_modules/semver/index.js +0 -93
  394. package/node_modules/semver/internal/constants.js +0 -37
  395. package/node_modules/semver/internal/debug.js +0 -11
  396. package/node_modules/semver/internal/identifiers.js +0 -29
  397. package/node_modules/semver/internal/lrucache.js +0 -42
  398. package/node_modules/semver/internal/parse-options.js +0 -17
  399. package/node_modules/semver/internal/re.js +0 -223
  400. package/node_modules/semver/package.json +0 -78
  401. package/node_modules/semver/preload.js +0 -4
  402. package/node_modules/semver/range.bnf +0 -17
  403. package/node_modules/semver/ranges/gtr.js +0 -6
  404. package/node_modules/semver/ranges/intersects.js +0 -9
  405. package/node_modules/semver/ranges/ltr.js +0 -6
  406. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  407. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  408. package/node_modules/semver/ranges/min-version.js +0 -63
  409. package/node_modules/semver/ranges/outside.js +0 -82
  410. package/node_modules/semver/ranges/simplify.js +0 -49
  411. package/node_modules/semver/ranges/subset.js +0 -249
  412. package/node_modules/semver/ranges/to-comparators.js +0 -10
  413. package/node_modules/semver/ranges/valid.js +0 -13
  414. package/node_modules/simple-concat/.travis.yml +0 -3
  415. package/node_modules/simple-concat/LICENSE +0 -20
  416. package/node_modules/simple-concat/README.md +0 -44
  417. package/node_modules/simple-concat/index.js +0 -15
  418. package/node_modules/simple-concat/package.json +0 -47
  419. package/node_modules/simple-concat/test/basic.js +0 -41
  420. package/node_modules/simple-get/.github/dependabot.yml +0 -15
  421. package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  422. package/node_modules/simple-get/LICENSE +0 -20
  423. package/node_modules/simple-get/README.md +0 -333
  424. package/node_modules/simple-get/index.js +0 -108
  425. package/node_modules/simple-get/package.json +0 -67
  426. package/node_modules/string_decoder/LICENSE +0 -48
  427. package/node_modules/string_decoder/README.md +0 -47
  428. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  429. package/node_modules/string_decoder/package.json +0 -34
  430. package/node_modules/strip-json-comments/index.js +0 -70
  431. package/node_modules/strip-json-comments/license +0 -21
  432. package/node_modules/strip-json-comments/package.json +0 -42
  433. package/node_modules/strip-json-comments/readme.md +0 -64
  434. package/node_modules/tar-fs/.travis.yml +0 -6
  435. package/node_modules/tar-fs/LICENSE +0 -21
  436. package/node_modules/tar-fs/README.md +0 -165
  437. package/node_modules/tar-fs/index.js +0 -392
  438. package/node_modules/tar-fs/package.json +0 -46
  439. package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  440. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  441. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  442. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  443. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  444. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  445. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  446. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  447. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  448. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  449. package/node_modules/tar-fs/test/index.js +0 -457
  450. package/node_modules/tar-stream/LICENSE +0 -21
  451. package/node_modules/tar-stream/README.md +0 -168
  452. package/node_modules/tar-stream/extract.js +0 -257
  453. package/node_modules/tar-stream/headers.js +0 -295
  454. package/node_modules/tar-stream/index.js +0 -2
  455. package/node_modules/tar-stream/pack.js +0 -255
  456. package/node_modules/tar-stream/package.json +0 -58
  457. package/node_modules/tar-stream/sandbox.js +0 -11
  458. package/node_modules/tunnel-agent/LICENSE +0 -55
  459. package/node_modules/tunnel-agent/README.md +0 -4
  460. package/node_modules/tunnel-agent/index.js +0 -244
  461. package/node_modules/tunnel-agent/package.json +0 -22
  462. package/node_modules/util-deprecate/History.md +0 -16
  463. package/node_modules/util-deprecate/LICENSE +0 -24
  464. package/node_modules/util-deprecate/README.md +0 -53
  465. package/node_modules/util-deprecate/browser.js +0 -67
  466. package/node_modules/util-deprecate/node.js +0 -6
  467. package/node_modules/util-deprecate/package.json +0 -27
  468. package/node_modules/wrappy/LICENSE +0 -15
  469. package/node_modules/wrappy/README.md +0 -36
  470. package/node_modules/wrappy/package.json +0 -29
  471. package/node_modules/wrappy/wrappy.js +0 -33
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.1.0",
4
- "git_sha": "aa4ca816d3a90491953220fa5e2a3f67ab968a17",
5
- "build_time": "2026-07-10T13:24:30.193Z"
3
+ "version": "0.1.1",
4
+ "git_sha": "304c1dd67a202ab5c6142553736fd9e85b4d8061",
5
+ "build_time": "2026-07-10T18:51:42.983Z"
6
6
  }
@@ -97,8 +97,8 @@ async function checkTwinReachable(_configDir) {
97
97
  });
98
98
  let harness;
99
99
  try {
100
- // Dynamic import: the twin harness pulls in better-sqlite3, which the
101
- // hosted-mode gate must never load better-sqlite3 unnecessarily.
100
+ // Dynamic import: the twin harness pulls in the twin packages and their
101
+ // node:sqlite-backed state, which the hosted-mode gate must never load.
102
102
  const { bootTwin } = await import("../twin/twinHarness.js");
103
103
  harness = await bootTwin({
104
104
  twin: "github",
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Mutation outcome — the shape both better-sqlite3's `RunResult` and
3
- * node:sqlite's `StatementResultingChanges` return, so the M2 swap (F-703)
4
- * keeps this interface as-is.
3
+ * node:sqlite's `StatementResultingChanges` return; `changes` is coerced to
4
+ * number, `lastInsertRowid` may be a bigint for rowids beyond safe-integer
5
+ * range.
5
6
  */
6
7
  export interface TwinRunResult {
7
8
  changes: number;
@@ -15,8 +16,7 @@ export interface TwinStatement {
15
16
  /**
16
17
  * A wrapped transaction function (better-sqlite3's shape). The `.immediate`
17
18
  * variant takes the write lock up front (BEGIN IMMEDIATE) — github's domain
18
- * runs its mutations under it. The M2 node:sqlite implementation backs both
19
- * call forms with explicit BEGIN [IMMEDIATE]/COMMIT/ROLLBACK.
19
+ * runs its mutations under it.
20
20
  */
21
21
  export type TwinTransaction<F extends (...args: never[]) => unknown> = F & {
22
22
  immediate: F;
@@ -1,28 +1,97 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  //
3
- // Engine SQLite driver wrapper (F-681). Twins never import a sqlite driver
4
- // directly they call `openTwinDatabase()` and consume the `TwinDatabase`
5
- // interface below. The interface is a same-shape subset of better-sqlite3
6
- // (prepare/exec/pragma/transaction/close), which is exactly the surface the
7
- // M2 node:sqlite swap (F-703) re-implements: swapping the driver is a change
8
- // to THIS file only. `transaction(fn)` keeps better-sqlite3's shape (returns
9
- // a callable running fn atomically) because twin domain code has dozens of
10
- // call sites relying on it and node:sqlite ships no equivalent — the M2
11
- // implementation backs it with BEGIN IMMEDIATE/COMMIT/ROLLBACK.
12
- //
13
- // The driver is loaded lazily via createRequire so @pome-sh/sdk can declare
14
- // better-sqlite3 as an optional peer dependency: twins that bring their own
15
- // database never pay for (or compile) the native module.
3
+ // Engine SQLite driver wrapper (F-681), backed by node:sqlite since F-703
4
+ // zero native deps, no compiler toolchain at install. Twins never import a
5
+ // sqlite driver directly they call `openTwinDatabase()` and consume the
6
+ // `TwinDatabase` interface below. The interface keeps better-sqlite3's shape
7
+ // (prepare/exec/pragma/transaction/close) because twin domain code has dozens
8
+ // of call sites relying on it; node:sqlite ships no pragma()/transaction()
9
+ // equivalents, so this file emulates them: `pragma()` prepares a `PRAGMA …`
10
+ // statement, `transaction(fn)` (+ `.immediate`) wraps fn in explicit
11
+ // BEGIN [IMMEDIATE]/COMMIT/ROLLBACK at the outermost level and in a SAVEPOINT
12
+ // when called inside an open transaction — better-sqlite3's nesting semantics,
13
+ // which twin-github's seed() relies on (it wraps createIssue et al., each of
14
+ // which opens its own transaction).
16
15
  import { mkdirSync } from "node:fs";
17
- import { createRequire } from "node:module";
18
16
  import { dirname } from "node:path";
19
- let driver;
20
- function loadDriver() {
21
- if (!driver) {
22
- const require = createRequire(import.meta.url);
23
- driver = require("better-sqlite3");
17
+ import { DatabaseSync } from "node:sqlite";
18
+ class NodeSqliteTwinDatabase {
19
+ #db;
20
+ #savepointId = 0;
21
+ constructor(path) {
22
+ this.#db = new DatabaseSync(path);
23
+ }
24
+ prepare(sql) {
25
+ const statement = this.#db.prepare(sql);
26
+ return {
27
+ run: (...params) => {
28
+ const result = statement.run(...params);
29
+ return { changes: Number(result.changes), lastInsertRowid: result.lastInsertRowid };
30
+ },
31
+ get: (...params) => statement.get(...params),
32
+ all: (...params) => statement.all(...params),
33
+ };
34
+ }
35
+ exec(sql) {
36
+ this.#db.exec(sql);
37
+ }
38
+ pragma(statement, options = {}) {
39
+ const rows = this.#db.prepare(`PRAGMA ${statement}`).all();
40
+ if (!options.simple)
41
+ return rows;
42
+ const row = rows[0];
43
+ if (row === undefined)
44
+ return undefined;
45
+ return row[Object.keys(row)[0]];
46
+ }
47
+ transaction(fn) {
48
+ const wrap = (begin) => ((...args) => {
49
+ if (this.#db.isTransaction)
50
+ return this.#nested(fn, args);
51
+ this.#db.exec(begin);
52
+ try {
53
+ const out = fn(...args);
54
+ this.#db.exec("COMMIT");
55
+ return out;
56
+ }
57
+ catch (error) {
58
+ // Certain failures (e.g. ON CONFLICT ROLLBACK) end the transaction
59
+ // themselves — only roll back when one is still open.
60
+ if (this.#db.isTransaction)
61
+ this.#db.exec("ROLLBACK");
62
+ throw error;
63
+ }
64
+ });
65
+ const tx = wrap("BEGIN");
66
+ tx.immediate = wrap("BEGIN IMMEDIATE");
67
+ return tx;
68
+ }
69
+ /**
70
+ * A transaction function called inside an open transaction joins it under a
71
+ * SAVEPOINT (better-sqlite3's semantics): success releases the savepoint,
72
+ * failure rolls back only the inner work. The BEGIN variant is irrelevant
73
+ * here — the outermost transaction already holds the lock mode.
74
+ */
75
+ #nested(fn, args) {
76
+ const name = `_pome_tx_${this.#savepointId++}`;
77
+ this.#db.exec(`SAVEPOINT ${name}`);
78
+ try {
79
+ const out = fn(...args);
80
+ this.#db.exec(`RELEASE ${name}`);
81
+ return out;
82
+ }
83
+ catch (error) {
84
+ if (this.#db.isTransaction) {
85
+ this.#db.exec(`ROLLBACK TO ${name}`);
86
+ this.#db.exec(`RELEASE ${name}`);
87
+ }
88
+ throw error;
89
+ }
90
+ }
91
+ close() {
92
+ if (this.#db.isOpen)
93
+ this.#db.close();
24
94
  }
25
- return driver;
26
95
  }
27
96
  /**
28
97
  * Open a twin database with the pome pragma set applied:
@@ -34,11 +103,10 @@ export function openTwinDatabase(path = ":memory:", options = {}) {
34
103
  if (path !== ":memory:") {
35
104
  mkdirSync(dirname(path), { recursive: true });
36
105
  }
37
- const Database = loadDriver();
38
- const db = new Database(path);
39
- db.pragma("busy_timeout = 5000");
40
- db.pragma("journal_mode = WAL");
41
- db.pragma("foreign_keys = ON");
106
+ const db = new NodeSqliteTwinDatabase(path);
107
+ db.exec("PRAGMA busy_timeout = 5000");
108
+ db.exec("PRAGMA journal_mode = WAL");
109
+ db.exec("PRAGMA foreign_keys = ON");
42
110
  options.migrate?.(db);
43
111
  return db;
44
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,wEAAwE;AACxE,gEAAgE;AAChE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,yDAAyD;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC,IAAI,MAAqC,CAAC;AAE1C,SAAS,UAAU;IACjB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAsB,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAI,GAAG,UAAU,EACjB,UAAmC,EAAE;IAErC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/sdk",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Twin engine for Pome digital twins — defineTwin() + serve(): HTTP mounting, bearer auth, trace recorder, MCP dispatch, SQLite-backed state.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -37,15 +37,11 @@
37
37
  "zod": "^4.1.13"
38
38
  },
39
39
  "peerDependencies": {
40
- "@hono/node-server": "^2.0.8",
41
- "better-sqlite3": "^12.5.0"
40
+ "@hono/node-server": "^2.0.8"
42
41
  },
43
42
  "peerDependenciesMeta": {
44
43
  "@hono/node-server": {
45
44
  "optional": true
46
- },
47
- "better-sqlite3": {
48
- "optional": true
49
45
  }
50
46
  },
51
47
  "engines": {
@@ -105,7 +105,8 @@ that pins and verifies the new signed digest.
105
105
  build regenerates one on each rebuild)
106
106
  - `npm run build` exits 0 and emits `dist/src/server.js`
107
107
  - Built output is loadable under Node 24 — the snapshot runs `runtime: "node24"`.
108
- Uses Node-native `better-sqlite3` (N-API) in the Node 24 runtime image.
108
+ SQLite is the built-in `node:sqlite` (via the sdk's `openTwinDatabase()`,
109
+ F-703) — no native modules, no compiler toolchain.
109
110
 
110
111
  ### Runtime
111
112
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/twin-github",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Deterministic GitHub-shaped twin for agent testing — REST + MCP, SQLite-backed state.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -33,9 +33,8 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@hono/node-server": "^2.0.8",
36
- "@pome-sh/sdk": "0.3.0",
36
+ "@pome-sh/sdk": "0.3.1",
37
37
  "@pome-sh/shared-types": "0.6.0",
38
- "better-sqlite3": "^12.5.0",
39
38
  "hono": "^4.12.27",
40
39
  "zod": "^4.1.13"
41
40
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/twin-slack",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Deterministic Slack Web API twin for agent testing — REST + MCP, SQLite-backed state.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -33,9 +33,8 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@hono/node-server": "^2.0.8",
36
- "@pome-sh/sdk": "0.3.0",
36
+ "@pome-sh/sdk": "0.3.1",
37
37
  "@pome-sh/shared-types": "0.6.0",
38
- "better-sqlite3": "^12.5.0",
39
38
  "hono": "^4.12.27",
40
39
  "zod": "^4.1.13"
41
40
  },
@@ -182,8 +182,8 @@ that pins and verifies the new signed digest.
182
182
  required, the snapshot build regenerates one on each rebuild).
183
183
  - `npm run build` exits 0 and emits `dist/src/server.js`.
184
184
  - Built output is loadable under Node 24 — the snapshot runs
185
- `runtime: "node24"`. Uses Node-native `better-sqlite3` (
186
- fine; we install python3 + make + g++ in the Dockerfile build stage).
185
+ `runtime: "node24"`. SQLite is the built-in `node:sqlite` (via the sdk's
186
+ `openTwinDatabase()`, F-703) no native modules, no compiler toolchain.
187
187
 
188
188
  ### Runtime
189
189
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/twin-stripe",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Deterministic test double for Stripe x402 machine payments — stateful clone agents can drive without burning sandbox quota or real chain gas.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -52,9 +52,8 @@
52
52
  "license": "Apache-2.0",
53
53
  "dependencies": {
54
54
  "@hono/node-server": "^2.0.8",
55
- "@pome-sh/sdk": "0.3.0",
55
+ "@pome-sh/sdk": "0.3.1",
56
56
  "@pome-sh/shared-types": "0.6.0",
57
- "better-sqlite3": "^12.5.0",
58
57
  "hono": "^4.12.27",
59
58
  "zod": "^4.1.13"
60
59
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Digital-twin testing for AI agents — run scenarios against resettable local or hosted twins, record tool calls, and score the result.",
5
5
  "keywords": [
6
6
  "ai",
@@ -52,6 +52,7 @@
52
52
  "test": "vitest run",
53
53
  "test:e2e": "vitest run test/e2e",
54
54
  "gate:no-eval": "node ../scripts/no-eval-in-oss.mjs",
55
+ "gate:no-native": "node ../scripts/no-native-modules.mjs --root .",
55
56
  "gate:recorder-overhead": "tsx scripts/recorder-overhead-gate.ts",
56
57
  "changeset": "changeset",
57
58
  "changeset:version": "changeset version",
@@ -65,13 +66,12 @@
65
66
  "@anthropic-ai/sdk": "^0.110.0",
66
67
  "@hono/node-server": "^2.0.6",
67
68
  "@openrouter/ai-sdk-provider": "^3.0.0",
68
- "@pome-sh/sdk": "0.3.0",
69
+ "@pome-sh/sdk": "0.3.1",
69
70
  "@pome-sh/shared-types": "0.6.0",
70
- "@pome-sh/twin-github": "0.1.1",
71
- "@pome-sh/twin-slack": "0.1.1",
72
- "@pome-sh/twin-stripe": "0.2.1",
71
+ "@pome-sh/twin-github": "0.1.2",
72
+ "@pome-sh/twin-slack": "0.1.2",
73
+ "@pome-sh/twin-stripe": "0.2.2",
73
74
  "ai": "^7.0.18",
74
- "better-sqlite3": "^12.5.0",
75
75
  "commander": "^15.0.0",
76
76
  "hono": "^4.10.7",
77
77
  "yaml": "^2.8.2",
@@ -80,7 +80,6 @@
80
80
  "devDependencies": {
81
81
  "@changesets/changelog-github": "^0.5.1",
82
82
  "@changesets/cli": "^2.31.0",
83
- "@types/better-sqlite3": "^7.6.13",
84
83
  "@types/node": "^26.0.1",
85
84
  "tsx": "^4.21.0",
86
85
  "typescript": "^5.9.3",
@@ -1,71 +0,0 @@
1
- import type { CriterionResult } from "../types/shared.js";
2
- export declare const VERDICT_ARTIFACT_VERSION = 1;
3
- export declare const VERDICT_FILENAME = "verdict.json";
4
- export interface VerdictArtifact {
5
- version: number;
6
- /** Provenance: the only writer is the /finalize response path. */
7
- source: "cloud-finalize";
8
- task_name: string;
9
- /** The scenario path as the run invocation saw it (may move later —
10
- * readers must tolerate a dangling path). */
11
- scenario_path: string;
12
- /** Shared trial-group id (`grp_` + nanoid21); null on single runs. */
13
- group_id: string | null;
14
- session_id: string;
15
- cloud_run_id: string;
16
- cloud_dashboard_url: string;
17
- judge_model: string | null;
18
- /** Cloud-authoritative satisfaction score, 0-100. */
19
- score: number;
20
- pass_threshold: number;
21
- passed: boolean;
22
- criteria_results: CriterionResult[];
23
- duration_ms: number;
24
- finalized_at: string;
25
- }
26
- export interface TrialVerdict {
27
- runDir: string;
28
- verdict: VerdictArtifact;
29
- }
30
- export declare function writeVerdictArtifact(runDir: string, verdict: VerdictArtifact): Promise<void>;
31
- export declare function readVerdictArtifact(runDir: string): Promise<TrialVerdict | null>;
32
- /** Scan an artifacts root for finalized trials — exactly the two-level
33
- * layout `<root>/<task-slug>/<session-id>/verdict.json`. Anything
34
- * unreadable is skipped. */
35
- export declare function scanVerdictArtifacts(artifactsRoot: string): Promise<TrialVerdict[]>;
36
- export interface RunSet {
37
- /** null = a single run that never had a group. */
38
- groupId: string | null;
39
- taskName: string;
40
- /** The scenario path recorded at run time (first trial's). */
41
- scenarioPath: string;
42
- /** Trials sorted by finalized_at ascending. */
43
- trials: TrialVerdict[];
44
- latestFinalizedAt: string;
45
- anyFailed: boolean;
46
- }
47
- /** Group trials into run sets: trials sharing a group_id form one set; a
48
- * null group_id is its own single-run set. */
49
- export declare function groupRunSets(trials: TrialVerdict[]): RunSet[];
50
- /** The newest run set with at least one failed (completed) trial. */
51
- export declare function latestFailedRunSet(sets: RunSet[]): RunSet | null;
52
- export interface RunSetDiscovery {
53
- kind: "trial-dir" | "root";
54
- /** The set to build a fix prompt from (per `kind` semantics: a trial dir
55
- * targets ITS set regardless of outcome; a root targets the latest
56
- * FAILED set). Null when nothing matches. */
57
- set: RunSet | null;
58
- /** Total finalized run sets seen — lets the caller distinguish "no runs
59
- * at all" from "runs exist but none failed". */
60
- totalSets: number;
61
- }
62
- /**
63
- * Resolve what `pome fix-prompt [target]` should read.
64
- * - `target` = a trial run dir (has verdict.json): that trial's whole set —
65
- * the user pointed at it, outcome doesn't matter.
66
- * - `target` = an artifacts root: the latest failed set under it.
67
- */
68
- export declare function discoverRunSet(target: string): Promise<RunSetDiscovery>;
69
- /** Load a trial's captured events.jsonl (raw trace) for prompt assembly.
70
- * Missing/corrupt lines are skipped — the prompt degrades, never throws. */
71
- export declare function loadTrialEvents(runDir: string): Promise<unknown[]>;
@@ -1,207 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // FDRS-644 — the per-trial CLOUD verdict artifact.
3
- //
4
- // Hosted `pome run` persists each finalized trial's cloud verdict payload
5
- // (what /finalize returned and the terminal rendered) as `verdict.json`
6
- // next to the trial's raw trace. This is a provenance-labeled CACHE of the
7
- // cloud judge's output — NOT a local score: the OSS CLI still has no
8
- // scoring engine (FDRS-657 / no-eval-in-oss), score.json is still never
9
- // written, and deleting verdict.json loses nothing the dashboard doesn't
10
- // hold. `pome fix-prompt` reads these to hand grouped failure signatures
11
- // to the user's coding agent without a credentialed cloud round-trip —
12
- // the F0-3 / L5 intent recorded in uploadAndFinalize.ts ("so the CLI can
13
- // render per-criterion verdicts … without a follow-up cloud round-trip").
14
- //
15
- // Artifact-layout knowledge lives HERE and only here:
16
- // <artifacts-root>/<task-slug>/<session-id>/verdict.json
17
- // (runDir shape from recorder/artifacts.ts `writeRunArtifactsCore`).
18
- import { existsSync } from "node:fs";
19
- import { readdir, readFile, writeFile } from "node:fs/promises";
20
- import { join } from "node:path";
21
- export const VERDICT_ARTIFACT_VERSION = 1;
22
- export const VERDICT_FILENAME = "verdict.json";
23
- export async function writeVerdictArtifact(runDir, verdict) {
24
- await writeFile(join(runDir, VERDICT_FILENAME), `${JSON.stringify(verdict, null, 2)}\n`, "utf8");
25
- }
26
- /** Read one trial's verdict.json. Returns null when absent or when the file
27
- * isn't a recognizable verdict artifact (foreign/corrupt files are skipped,
28
- * never thrown on — fix-prompt discovery must survive a messy runs/). */
29
- /** Every field the fix-prompt pipeline dereferences must hold its declared
30
- * shape, or the FILE is rejected — discovery treats a half-recognizable
31
- * verdict.json as foreign rather than crashing downstream on it. */
32
- function isVerdictArtifact(parsed) {
33
- if (typeof parsed !== "object" || parsed === null)
34
- return false;
35
- const v = parsed;
36
- if (v.source !== "cloud-finalize")
37
- return false;
38
- if (typeof v.session_id !== "string")
39
- return false;
40
- if (typeof v.task_name !== "string")
41
- return false;
42
- if (typeof v.scenario_path !== "string")
43
- return false;
44
- if (v.group_id !== null && typeof v.group_id !== "string")
45
- return false;
46
- if (typeof v.finalized_at !== "string")
47
- return false;
48
- if (typeof v.passed !== "boolean")
49
- return false;
50
- if (typeof v.score !== "number")
51
- return false;
52
- if (!Array.isArray(v.criteria_results))
53
- return false;
54
- return v.criteria_results.every((r) => {
55
- if (typeof r !== "object" || r === null)
56
- return false;
57
- const result = r;
58
- const criterion = result.criterion;
59
- return (typeof criterion === "object" &&
60
- criterion !== null &&
61
- typeof criterion.text === "string" &&
62
- typeof result.reason === "string" &&
63
- typeof result.passed === "boolean" &&
64
- typeof result.skipped === "boolean");
65
- });
66
- }
67
- export async function readVerdictArtifact(runDir) {
68
- const path = join(runDir, VERDICT_FILENAME);
69
- let raw;
70
- try {
71
- raw = await readFile(path, "utf8");
72
- }
73
- catch {
74
- return null;
75
- }
76
- try {
77
- const parsed = JSON.parse(raw);
78
- if (!isVerdictArtifact(parsed))
79
- return null;
80
- return { runDir, verdict: parsed };
81
- }
82
- catch {
83
- return null;
84
- }
85
- }
86
- /** Scan an artifacts root for finalized trials — exactly the two-level
87
- * layout `<root>/<task-slug>/<session-id>/verdict.json`. Anything
88
- * unreadable is skipped. */
89
- export async function scanVerdictArtifacts(artifactsRoot) {
90
- const found = [];
91
- let slugs;
92
- try {
93
- slugs = await readdir(artifactsRoot);
94
- }
95
- catch {
96
- return found;
97
- }
98
- for (const slug of slugs) {
99
- const slugDir = join(artifactsRoot, slug);
100
- let runIds;
101
- try {
102
- runIds = await readdir(slugDir);
103
- }
104
- catch {
105
- continue;
106
- }
107
- for (const runId of runIds) {
108
- const trial = await readVerdictArtifact(join(slugDir, runId));
109
- if (trial)
110
- found.push(trial);
111
- }
112
- }
113
- return found;
114
- }
115
- /** Group trials into run sets: trials sharing a group_id form one set; a
116
- * null group_id is its own single-run set. */
117
- export function groupRunSets(trials) {
118
- const byKey = new Map();
119
- for (const trial of trials) {
120
- const key = trial.verdict.group_id ?? `solo:${trial.verdict.session_id}`;
121
- const bucket = byKey.get(key);
122
- if (bucket)
123
- bucket.push(trial);
124
- else
125
- byKey.set(key, [trial]);
126
- }
127
- const sets = [];
128
- for (const bucket of byKey.values()) {
129
- bucket.sort((a, b) => a.verdict.finalized_at.localeCompare(b.verdict.finalized_at));
130
- const last = bucket[bucket.length - 1];
131
- sets.push({
132
- groupId: bucket[0].verdict.group_id,
133
- taskName: bucket[0].verdict.task_name,
134
- scenarioPath: bucket[0].verdict.scenario_path,
135
- trials: bucket,
136
- latestFinalizedAt: last.verdict.finalized_at,
137
- anyFailed: bucket.some((t) => !t.verdict.passed),
138
- });
139
- }
140
- sets.sort((a, b) => a.latestFinalizedAt.localeCompare(b.latestFinalizedAt));
141
- return sets;
142
- }
143
- /** The newest run set with at least one failed (completed) trial. */
144
- export function latestFailedRunSet(sets) {
145
- for (let i = sets.length - 1; i >= 0; i -= 1) {
146
- if (sets[i].anyFailed)
147
- return sets[i];
148
- }
149
- return null;
150
- }
151
- /**
152
- * Resolve what `pome fix-prompt [target]` should read.
153
- * - `target` = a trial run dir (has verdict.json): that trial's whole set —
154
- * the user pointed at it, outcome doesn't matter.
155
- * - `target` = an artifacts root: the latest failed set under it.
156
- */
157
- export async function discoverRunSet(target) {
158
- const anchor = await readVerdictArtifact(target);
159
- if (anchor) {
160
- // Trial dir → its set. Layout is <root>/<slug>/<runId>, so the root is
161
- // two levels up; a moved/isolated dir degrades to a set of one.
162
- const root = join(target, "..", "..");
163
- const sets = groupRunSets(await scanVerdictArtifacts(root));
164
- const own = sets.find((s) => (anchor.verdict.group_id !== null &&
165
- s.groupId === anchor.verdict.group_id) ||
166
- (anchor.verdict.group_id === null &&
167
- s.trials.length === 1 &&
168
- s.trials[0].verdict.session_id === anchor.verdict.session_id)) ?? groupRunSets([anchor])[0];
169
- return { kind: "trial-dir", set: own, totalSets: Math.max(sets.length, 1) };
170
- }
171
- if (!existsSync(target))
172
- return { kind: "root", set: null, totalSets: 0 };
173
- const sets = groupRunSets(await scanVerdictArtifacts(target));
174
- return {
175
- kind: "root",
176
- set: latestFailedRunSet(sets),
177
- totalSets: sets.length,
178
- };
179
- }
180
- /** Load a trial's captured events.jsonl (raw trace) for prompt assembly.
181
- * Missing/corrupt lines are skipped — the prompt degrades, never throws. */
182
- export async function loadTrialEvents(runDir) {
183
- let raw;
184
- try {
185
- raw = await readFile(join(runDir, "events.jsonl"), "utf8");
186
- }
187
- catch {
188
- return [];
189
- }
190
- const events = [];
191
- for (const line of raw.split("\n")) {
192
- const trimmed = line.trim();
193
- if (!trimmed)
194
- continue;
195
- try {
196
- const parsed = JSON.parse(trimmed);
197
- // Valid JSON but not an event object (`null`, `3`, `"x"`) is corrupt
198
- // for our purposes — renderEvent dereferences fields on it.
199
- if (typeof parsed === "object" && parsed !== null)
200
- events.push(parsed);
201
- }
202
- catch {
203
- // skip corrupt row
204
- }
205
- }
206
- return events;
207
- }
@@ -1,38 +0,0 @@
1
- import type { z } from "zod";
2
- import type { criterionSchema } from "../types/shared.js";
3
- type WireCriterion = z.infer<typeof criterionSchema>;
4
- export type CriterionOutcome = "passed" | "failed" | "skipped" | "errored";
5
- export type CriterionResult = {
6
- criterion: WireCriterion;
7
- outcome?: CriterionOutcome;
8
- passed: boolean;
9
- skipped: boolean;
10
- reason: string;
11
- confidence?: number;
12
- judge_model?: string;
13
- judge_tokens_in?: number;
14
- judge_tokens_out?: number;
15
- judge_has_usage?: boolean;
16
- };
17
- export type Score = {
18
- satisfaction: number;
19
- passed: number;
20
- failed: number;
21
- skipped: number;
22
- errored: number;
23
- total_required: number;
24
- evaluated: boolean;
25
- can_pass: boolean;
26
- results: CriterionResult[];
27
- judge_model: string | null;
28
- judge_tokens_in: number | null;
29
- judge_tokens_out: number | null;
30
- };
31
- export declare function outcomeOf(result: CriterionResult): CriterionOutcome;
32
- export type ScoreStatus = "pass" | "fail" | "unevaluated";
33
- export declare function scoreStatus(score: Score, passThreshold: number): ScoreStatus;
34
- export declare function scenarioPassed(score: Score, passThreshold: number): boolean;
35
- export declare function markerFor(outcome: CriterionOutcome): string;
36
- export declare function scoreCountsSummary(score: Score): string;
37
- export declare function runScoreLine(score: Score, passThreshold: number, unevaluatedNumericLabel: string): string;
38
- export {};