@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.
- package/dist/build-info.json +3 -3
- package/dist/src/doctor/checks.js +2 -2
- package/node_modules/@pome-sh/sdk/dist/db.d.ts +4 -4
- package/node_modules/@pome-sh/sdk/dist/db.js +93 -25
- package/node_modules/@pome-sh/sdk/dist/db.js.map +1 -1
- package/node_modules/@pome-sh/sdk/package.json +2 -6
- package/node_modules/@pome-sh/twin-github/README.md +2 -1
- package/node_modules/@pome-sh/twin-github/package.json +2 -3
- package/node_modules/@pome-sh/twin-slack/package.json +2 -3
- package/node_modules/@pome-sh/twin-stripe/README.md +2 -2
- package/node_modules/@pome-sh/twin-stripe/package.json +2 -3
- package/package.json +6 -7
- package/dist/src/recorder/verdictArtifact.d.ts +0 -71
- package/dist/src/recorder/verdictArtifact.js +0 -207
- package/dist/src/score/view.d.ts +0 -38
- package/dist/src/score/view.js +0 -59
- package/dist/src/twin/github/app.d.ts +0 -10
- package/dist/src/twin/github/app.js +0 -316
- package/dist/src/twin/github/db/migrations.d.ts +0 -2
- package/dist/src/twin/github/db/migrations.js +0 -64
- package/dist/src/twin/github/db/openDatabase.d.ts +0 -2
- package/dist/src/twin/github/db/openDatabase.js +0 -13
- package/dist/src/twin/github/db/queries.d.ts +0 -77
- package/dist/src/twin/github/db/queries.js +0 -93
- package/dist/src/twin/github/domain/seed.d.ts +0 -74
- package/dist/src/twin/github/domain/seed.js +0 -104
- package/dist/src/twin/github/domain/serializers.d.ts +0 -113
- package/dist/src/twin/github/domain/serializers.js +0 -76
- package/dist/src/twin/github/types.d.ts +0 -66
- package/dist/src/twin/github/types.js +0 -1
- package/dist/src/twin-github/app.d.ts +0 -9
- package/dist/src/twin-github/app.js +0 -327
- package/dist/src/twin-github/auth.d.ts +0 -16
- package/dist/src/twin-github/auth.js +0 -142
- package/dist/src/twin-github/build-info.d.ts +0 -7
- package/dist/src/twin-github/build-info.js +0 -52
- package/dist/src/twin-github/db.d.ts +0 -4
- package/dist/src/twin-github/db.js +0 -362
- package/dist/src/twin-github/domain.d.ts +0 -1649
- package/dist/src/twin-github/domain.js +0 -957
- package/dist/src/twin-github/errors.d.ts +0 -14
- package/dist/src/twin-github/errors.js +0 -34
- package/dist/src/twin-github/index.d.ts +0 -9
- package/dist/src/twin-github/index.js +0 -7
- package/dist/src/twin-github/mcp.d.ts +0 -17
- package/dist/src/twin-github/mcp.js +0 -281
- package/dist/src/twin-github/recorder.d.ts +0 -2
- package/dist/src/twin-github/recorder.js +0 -29
- package/dist/src/twin-github/seed.d.ts +0 -74
- package/dist/src/twin-github/seed.js +0 -107
- package/dist/src/twin-github/serializers.d.ts +0 -449
- package/dist/src/twin-github/serializers.js +0 -429
- package/dist/src/twin-github/server.d.ts +0 -1
- package/dist/src/twin-github/server.js +0 -34
- package/dist/src/twin-github/tools.d.ts +0 -1545
- package/dist/src/twin-github/tools.js +0 -347
- package/dist/src/twin-github/types.d.ts +0 -198
- package/dist/src/twin-github/types.js +0 -1
- package/dist/src/twin-github/unsupported-envelope.d.ts +0 -10
- package/dist/src/twin-github/unsupported-envelope.js +0 -29
- package/dist/src/twin-github/util.d.ts +0 -13
- package/dist/src/twin-github/util.js +0 -61
- package/dist/src/twin-slack/app.d.ts +0 -17
- package/dist/src/twin-slack/app.js +0 -683
- package/dist/src/twin-slack/auth.d.ts +0 -38
- package/dist/src/twin-slack/auth.js +0 -219
- package/dist/src/twin-slack/build-info.d.ts +0 -7
- package/dist/src/twin-slack/build-info.js +0 -9
- package/dist/src/twin-slack/db.d.ts +0 -4
- package/dist/src/twin-slack/db.js +0 -213
- package/dist/src/twin-slack/domain.d.ts +0 -236
- package/dist/src/twin-slack/domain.js +0 -1293
- package/dist/src/twin-slack/errors.d.ts +0 -16
- package/dist/src/twin-slack/errors.js +0 -60
- package/dist/src/twin-slack/index.d.ts +0 -8
- package/dist/src/twin-slack/index.js +0 -8
- package/dist/src/twin-slack/mcp.d.ts +0 -17
- package/dist/src/twin-slack/mcp.js +0 -226
- package/dist/src/twin-slack/recorder.d.ts +0 -2
- package/dist/src/twin-slack/recorder.js +0 -15
- package/dist/src/twin-slack/seed.d.ts +0 -49
- package/dist/src/twin-slack/seed.js +0 -139
- package/dist/src/twin-slack/serializers.d.ts +0 -141
- package/dist/src/twin-slack/serializers.js +0 -377
- package/dist/src/twin-slack/tools.d.ts +0 -97
- package/dist/src/twin-slack/tools.js +0 -171
- package/dist/src/twin-slack/types.d.ts +0 -164
- package/dist/src/twin-slack/types.js +0 -1
- package/dist/src/twin-slack/unsupported-envelope.d.ts +0 -12
- package/dist/src/twin-slack/unsupported-envelope.js +0 -61
- package/dist/src/twin-slack/upstream-types.d.ts +0 -19
- package/dist/src/twin-slack/upstream-types.js +0 -1
- package/dist/src/twin-slack/util.d.ts +0 -31
- package/dist/src/twin-slack/util.js +0 -136
- package/node_modules/base64-js/LICENSE +0 -21
- package/node_modules/base64-js/README.md +0 -34
- package/node_modules/base64-js/base64js.min.js +0 -1
- package/node_modules/base64-js/index.d.ts +0 -3
- package/node_modules/base64-js/index.js +0 -150
- package/node_modules/base64-js/package.json +0 -47
- package/node_modules/better-sqlite3/LICENSE +0 -21
- package/node_modules/better-sqlite3/README.md +0 -99
- package/node_modules/better-sqlite3/binding.gyp +0 -38
- package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/node_modules/better-sqlite3/deps/common.gypi +0 -68
- package/node_modules/better-sqlite3/deps/copy.js +0 -31
- package/node_modules/better-sqlite3/deps/defines.gypi +0 -42
- package/node_modules/better-sqlite3/deps/download.sh +0 -123
- package/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -269395
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -14347
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -739
- package/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
- package/node_modules/better-sqlite3/deps/test_extension.c +0 -21
- package/node_modules/better-sqlite3/lib/database.js +0 -90
- package/node_modules/better-sqlite3/lib/index.js +0 -3
- package/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
- package/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
- package/node_modules/better-sqlite3/lib/methods/function.js +0 -31
- package/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
- package/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
- package/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
- package/node_modules/better-sqlite3/lib/methods/table.js +0 -189
- package/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
- package/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
- package/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
- package/node_modules/better-sqlite3/lib/util.js +0 -12
- package/node_modules/better-sqlite3/package.json +0 -59
- package/node_modules/better-sqlite3/src/addon.cpp +0 -47
- package/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -74
- package/node_modules/better-sqlite3/src/objects/backup.cpp +0 -120
- package/node_modules/better-sqlite3/src/objects/backup.hpp +0 -36
- package/node_modules/better-sqlite3/src/objects/database.cpp +0 -417
- package/node_modules/better-sqlite3/src/objects/database.hpp +0 -103
- package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +0 -113
- package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +0 -50
- package/node_modules/better-sqlite3/src/objects/statement.cpp +0 -383
- package/node_modules/better-sqlite3/src/objects/statement.hpp +0 -58
- package/node_modules/better-sqlite3/src/util/bind-map.cpp +0 -73
- package/node_modules/better-sqlite3/src/util/binder.cpp +0 -193
- package/node_modules/better-sqlite3/src/util/constants.cpp +0 -172
- package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +0 -121
- package/node_modules/better-sqlite3/src/util/custom-function.cpp +0 -59
- package/node_modules/better-sqlite3/src/util/custom-table.cpp +0 -409
- package/node_modules/better-sqlite3/src/util/data-converter.cpp +0 -17
- package/node_modules/better-sqlite3/src/util/data.cpp +0 -194
- package/node_modules/better-sqlite3/src/util/helpers.cpp +0 -109
- package/node_modules/better-sqlite3/src/util/macros.cpp +0 -90
- package/node_modules/better-sqlite3/src/util/query-macros.cpp +0 -71
- package/node_modules/better-sqlite3/src/util/row-builder.cpp +0 -49
- package/node_modules/bindings/LICENSE.md +0 -22
- package/node_modules/bindings/README.md +0 -98
- package/node_modules/bindings/bindings.js +0 -221
- package/node_modules/bindings/package.json +0 -28
- package/node_modules/bl/.travis.yml +0 -17
- package/node_modules/bl/BufferList.js +0 -396
- package/node_modules/bl/LICENSE.md +0 -13
- package/node_modules/bl/README.md +0 -247
- package/node_modules/bl/bl.js +0 -84
- package/node_modules/bl/package.json +0 -37
- package/node_modules/bl/test/convert.js +0 -21
- package/node_modules/bl/test/indexOf.js +0 -492
- package/node_modules/bl/test/isBufferList.js +0 -32
- package/node_modules/bl/test/test.js +0 -869
- package/node_modules/buffer/AUTHORS.md +0 -70
- package/node_modules/buffer/LICENSE +0 -21
- package/node_modules/buffer/README.md +0 -410
- package/node_modules/buffer/index.d.ts +0 -186
- package/node_modules/buffer/index.js +0 -1817
- package/node_modules/buffer/package.json +0 -96
- package/node_modules/chownr/LICENSE +0 -15
- package/node_modules/chownr/README.md +0 -3
- package/node_modules/chownr/chownr.js +0 -167
- package/node_modules/chownr/package.json +0 -29
- package/node_modules/decompress-response/index.d.ts +0 -22
- package/node_modules/decompress-response/index.js +0 -58
- package/node_modules/decompress-response/license +0 -9
- package/node_modules/decompress-response/package.json +0 -56
- package/node_modules/decompress-response/readme.md +0 -48
- package/node_modules/deep-extend/CHANGELOG.md +0 -46
- package/node_modules/deep-extend/LICENSE +0 -20
- package/node_modules/deep-extend/README.md +0 -91
- package/node_modules/deep-extend/index.js +0 -1
- package/node_modules/deep-extend/lib/deep-extend.js +0 -150
- package/node_modules/deep-extend/package.json +0 -62
- package/node_modules/detect-libc/LICENSE +0 -201
- package/node_modules/detect-libc/README.md +0 -163
- package/node_modules/detect-libc/index.d.ts +0 -14
- package/node_modules/detect-libc/lib/detect-libc.js +0 -313
- package/node_modules/detect-libc/lib/elf.js +0 -39
- package/node_modules/detect-libc/lib/filesystem.js +0 -51
- package/node_modules/detect-libc/lib/process.js +0 -24
- package/node_modules/detect-libc/package.json +0 -44
- package/node_modules/end-of-stream/LICENSE +0 -21
- package/node_modules/end-of-stream/README.md +0 -54
- package/node_modules/end-of-stream/index.js +0 -96
- package/node_modules/end-of-stream/package.json +0 -37
- package/node_modules/expand-template/.travis.yml +0 -6
- package/node_modules/expand-template/LICENSE +0 -21
- package/node_modules/expand-template/README.md +0 -43
- package/node_modules/expand-template/index.js +0 -26
- package/node_modules/expand-template/package.json +0 -29
- package/node_modules/expand-template/test.js +0 -67
- package/node_modules/file-uri-to-path/.npmignore +0 -1
- package/node_modules/file-uri-to-path/.travis.yml +0 -30
- package/node_modules/file-uri-to-path/History.md +0 -21
- package/node_modules/file-uri-to-path/LICENSE +0 -20
- package/node_modules/file-uri-to-path/README.md +0 -74
- package/node_modules/file-uri-to-path/index.d.ts +0 -2
- package/node_modules/file-uri-to-path/index.js +0 -66
- package/node_modules/file-uri-to-path/package.json +0 -32
- package/node_modules/file-uri-to-path/test/test.js +0 -24
- package/node_modules/file-uri-to-path/test/tests.json +0 -13
- package/node_modules/fs-constants/LICENSE +0 -21
- package/node_modules/fs-constants/README.md +0 -26
- package/node_modules/fs-constants/browser.js +0 -1
- package/node_modules/fs-constants/index.js +0 -1
- package/node_modules/fs-constants/package.json +0 -19
- package/node_modules/github-from-package/.travis.yml +0 -4
- package/node_modules/github-from-package/LICENSE +0 -18
- package/node_modules/github-from-package/example/package.json +0 -8
- package/node_modules/github-from-package/example/url.js +0 -3
- package/node_modules/github-from-package/index.js +0 -17
- package/node_modules/github-from-package/package.json +0 -30
- package/node_modules/github-from-package/readme.markdown +0 -53
- package/node_modules/github-from-package/test/a.json +0 -8
- package/node_modules/github-from-package/test/b.json +0 -5
- package/node_modules/github-from-package/test/c.json +0 -5
- package/node_modules/github-from-package/test/d.json +0 -7
- package/node_modules/github-from-package/test/e.json +0 -5
- package/node_modules/github-from-package/test/url.js +0 -19
- package/node_modules/ieee754/LICENSE +0 -11
- package/node_modules/ieee754/README.md +0 -51
- package/node_modules/ieee754/index.d.ts +0 -10
- package/node_modules/ieee754/index.js +0 -85
- package/node_modules/ieee754/package.json +0 -52
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/ini/LICENSE +0 -15
- package/node_modules/ini/README.md +0 -102
- package/node_modules/ini/ini.js +0 -206
- package/node_modules/ini/package.json +0 -33
- package/node_modules/mimic-response/index.d.ts +0 -17
- package/node_modules/mimic-response/index.js +0 -77
- package/node_modules/mimic-response/license +0 -9
- package/node_modules/mimic-response/package.json +0 -42
- package/node_modules/mimic-response/readme.md +0 -78
- package/node_modules/minimist/.eslintrc +0 -29
- package/node_modules/minimist/.github/FUNDING.yml +0 -12
- package/node_modules/minimist/.nycrc +0 -14
- package/node_modules/minimist/CHANGELOG.md +0 -298
- package/node_modules/minimist/LICENSE +0 -18
- package/node_modules/minimist/README.md +0 -121
- package/node_modules/minimist/example/parse.js +0 -4
- package/node_modules/minimist/index.js +0 -263
- package/node_modules/minimist/package.json +0 -75
- package/node_modules/minimist/test/all_bool.js +0 -34
- package/node_modules/minimist/test/bool.js +0 -177
- package/node_modules/minimist/test/dash.js +0 -43
- package/node_modules/minimist/test/default_bool.js +0 -37
- package/node_modules/minimist/test/dotted.js +0 -24
- package/node_modules/minimist/test/kv_short.js +0 -32
- package/node_modules/minimist/test/long.js +0 -33
- package/node_modules/minimist/test/num.js +0 -38
- package/node_modules/minimist/test/parse.js +0 -209
- package/node_modules/minimist/test/parse_modified.js +0 -11
- package/node_modules/minimist/test/proto.js +0 -64
- package/node_modules/minimist/test/short.js +0 -69
- package/node_modules/minimist/test/stop_early.js +0 -17
- package/node_modules/minimist/test/unknown.js +0 -104
- package/node_modules/minimist/test/whitespace.js +0 -10
- package/node_modules/mkdirp-classic/LICENSE +0 -21
- package/node_modules/mkdirp-classic/README.md +0 -18
- package/node_modules/mkdirp-classic/index.js +0 -98
- package/node_modules/mkdirp-classic/package.json +0 -18
- package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
- package/node_modules/napi-build-utils/LICENSE +0 -21
- package/node_modules/napi-build-utils/README.md +0 -52
- package/node_modules/napi-build-utils/index.js +0 -214
- package/node_modules/napi-build-utils/index.md +0 -0
- package/node_modules/napi-build-utils/package.json +0 -42
- package/node_modules/node-abi/LICENSE +0 -21
- package/node_modules/node-abi/README.md +0 -54
- package/node_modules/node-abi/abi_registry.json +0 -453
- package/node_modules/node-abi/index.js +0 -179
- package/node_modules/node-abi/package.json +0 -45
- package/node_modules/once/LICENSE +0 -15
- package/node_modules/once/README.md +0 -79
- package/node_modules/once/once.js +0 -42
- package/node_modules/once/package.json +0 -33
- package/node_modules/prebuild-install/CHANGELOG.md +0 -131
- package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
- package/node_modules/prebuild-install/LICENSE +0 -21
- package/node_modules/prebuild-install/README.md +0 -163
- package/node_modules/prebuild-install/asset.js +0 -44
- package/node_modules/prebuild-install/bin.js +0 -78
- package/node_modules/prebuild-install/download.js +0 -142
- package/node_modules/prebuild-install/error.js +0 -14
- package/node_modules/prebuild-install/help.txt +0 -16
- package/node_modules/prebuild-install/index.js +0 -1
- package/node_modules/prebuild-install/log.js +0 -33
- package/node_modules/prebuild-install/package.json +0 -67
- package/node_modules/prebuild-install/proxy.js +0 -35
- package/node_modules/prebuild-install/rc.js +0 -64
- package/node_modules/prebuild-install/util.js +0 -143
- package/node_modules/pump/.github/FUNDING.yml +0 -2
- package/node_modules/pump/.travis.yml +0 -5
- package/node_modules/pump/LICENSE +0 -21
- package/node_modules/pump/README.md +0 -74
- package/node_modules/pump/SECURITY.md +0 -5
- package/node_modules/pump/empty.js +0 -1
- package/node_modules/pump/index.js +0 -86
- package/node_modules/pump/package.json +0 -30
- package/node_modules/pump/test-browser.js +0 -66
- package/node_modules/pump/test-node.js +0 -53
- package/node_modules/rc/LICENSE.APACHE2 +0 -15
- package/node_modules/rc/LICENSE.BSD +0 -26
- package/node_modules/rc/LICENSE.MIT +0 -24
- package/node_modules/rc/README.md +0 -227
- package/node_modules/rc/browser.js +0 -7
- package/node_modules/rc/cli.js +0 -4
- package/node_modules/rc/index.js +0 -53
- package/node_modules/rc/lib/utils.js +0 -104
- package/node_modules/rc/package.json +0 -29
- package/node_modules/rc/test/ini.js +0 -16
- package/node_modules/rc/test/nested-env-vars.js +0 -50
- package/node_modules/rc/test/test.js +0 -59
- package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/node_modules/readable-stream/LICENSE +0 -47
- package/node_modules/readable-stream/README.md +0 -106
- package/node_modules/readable-stream/errors-browser.js +0 -127
- package/node_modules/readable-stream/errors.js +0 -116
- package/node_modules/readable-stream/experimentalWarning.js +0 -17
- package/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
- package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
- package/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
- package/node_modules/readable-stream/lib/_stream_transform.js +0 -190
- package/node_modules/readable-stream/lib/_stream_writable.js +0 -641
- package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
- package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
- package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
- package/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
- package/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
- package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
- package/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/node_modules/readable-stream/package.json +0 -68
- package/node_modules/readable-stream/readable-browser.js +0 -9
- package/node_modules/readable-stream/readable.js +0 -16
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -65
- package/node_modules/safe-buffer/package.json +0 -51
- package/node_modules/semver/LICENSE +0 -15
- package/node_modules/semver/README.md +0 -680
- package/node_modules/semver/bin/semver.js +0 -195
- package/node_modules/semver/classes/comparator.js +0 -143
- package/node_modules/semver/classes/index.js +0 -7
- package/node_modules/semver/classes/range.js +0 -577
- package/node_modules/semver/classes/semver.js +0 -350
- package/node_modules/semver/functions/clean.js +0 -8
- package/node_modules/semver/functions/cmp.js +0 -54
- package/node_modules/semver/functions/coerce.js +0 -62
- package/node_modules/semver/functions/compare-build.js +0 -9
- package/node_modules/semver/functions/compare-loose.js +0 -5
- package/node_modules/semver/functions/compare.js +0 -7
- package/node_modules/semver/functions/diff.js +0 -60
- package/node_modules/semver/functions/eq.js +0 -5
- package/node_modules/semver/functions/gt.js +0 -5
- package/node_modules/semver/functions/gte.js +0 -5
- package/node_modules/semver/functions/inc.js +0 -21
- package/node_modules/semver/functions/lt.js +0 -5
- package/node_modules/semver/functions/lte.js +0 -5
- package/node_modules/semver/functions/major.js +0 -5
- package/node_modules/semver/functions/minor.js +0 -5
- package/node_modules/semver/functions/neq.js +0 -5
- package/node_modules/semver/functions/parse.js +0 -18
- package/node_modules/semver/functions/patch.js +0 -5
- package/node_modules/semver/functions/prerelease.js +0 -8
- package/node_modules/semver/functions/rcompare.js +0 -5
- package/node_modules/semver/functions/rsort.js +0 -5
- package/node_modules/semver/functions/satisfies.js +0 -12
- package/node_modules/semver/functions/sort.js +0 -5
- package/node_modules/semver/functions/truncate.js +0 -48
- package/node_modules/semver/functions/valid.js +0 -8
- package/node_modules/semver/index.js +0 -93
- package/node_modules/semver/internal/constants.js +0 -37
- package/node_modules/semver/internal/debug.js +0 -11
- package/node_modules/semver/internal/identifiers.js +0 -29
- package/node_modules/semver/internal/lrucache.js +0 -42
- package/node_modules/semver/internal/parse-options.js +0 -17
- package/node_modules/semver/internal/re.js +0 -223
- package/node_modules/semver/package.json +0 -78
- package/node_modules/semver/preload.js +0 -4
- package/node_modules/semver/range.bnf +0 -17
- package/node_modules/semver/ranges/gtr.js +0 -6
- package/node_modules/semver/ranges/intersects.js +0 -9
- package/node_modules/semver/ranges/ltr.js +0 -6
- package/node_modules/semver/ranges/max-satisfying.js +0 -27
- package/node_modules/semver/ranges/min-satisfying.js +0 -26
- package/node_modules/semver/ranges/min-version.js +0 -63
- package/node_modules/semver/ranges/outside.js +0 -82
- package/node_modules/semver/ranges/simplify.js +0 -49
- package/node_modules/semver/ranges/subset.js +0 -249
- package/node_modules/semver/ranges/to-comparators.js +0 -10
- package/node_modules/semver/ranges/valid.js +0 -13
- package/node_modules/simple-concat/.travis.yml +0 -3
- package/node_modules/simple-concat/LICENSE +0 -20
- package/node_modules/simple-concat/README.md +0 -44
- package/node_modules/simple-concat/index.js +0 -15
- package/node_modules/simple-concat/package.json +0 -47
- package/node_modules/simple-concat/test/basic.js +0 -41
- package/node_modules/simple-get/.github/dependabot.yml +0 -15
- package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
- package/node_modules/simple-get/LICENSE +0 -20
- package/node_modules/simple-get/README.md +0 -333
- package/node_modules/simple-get/index.js +0 -108
- package/node_modules/simple-get/package.json +0 -67
- package/node_modules/string_decoder/LICENSE +0 -48
- package/node_modules/string_decoder/README.md +0 -47
- package/node_modules/string_decoder/lib/string_decoder.js +0 -296
- package/node_modules/string_decoder/package.json +0 -34
- package/node_modules/strip-json-comments/index.js +0 -70
- package/node_modules/strip-json-comments/license +0 -21
- package/node_modules/strip-json-comments/package.json +0 -42
- package/node_modules/strip-json-comments/readme.md +0 -64
- package/node_modules/tar-fs/.travis.yml +0 -6
- package/node_modules/tar-fs/LICENSE +0 -21
- package/node_modules/tar-fs/README.md +0 -165
- package/node_modules/tar-fs/index.js +0 -392
- package/node_modules/tar-fs/package.json +0 -46
- package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
- package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
- package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/node_modules/tar-fs/test/index.js +0 -457
- package/node_modules/tar-stream/LICENSE +0 -21
- package/node_modules/tar-stream/README.md +0 -168
- package/node_modules/tar-stream/extract.js +0 -257
- package/node_modules/tar-stream/headers.js +0 -295
- package/node_modules/tar-stream/index.js +0 -2
- package/node_modules/tar-stream/pack.js +0 -255
- package/node_modules/tar-stream/package.json +0 -58
- package/node_modules/tar-stream/sandbox.js +0 -11
- package/node_modules/tunnel-agent/LICENSE +0 -55
- package/node_modules/tunnel-agent/README.md +0 -4
- package/node_modules/tunnel-agent/index.js +0 -244
- package/node_modules/tunnel-agent/package.json +0 -22
- package/node_modules/util-deprecate/History.md +0 -16
- package/node_modules/util-deprecate/LICENSE +0 -24
- package/node_modules/util-deprecate/README.md +0 -53
- package/node_modules/util-deprecate/browser.js +0 -67
- package/node_modules/util-deprecate/node.js +0 -6
- package/node_modules/util-deprecate/package.json +0 -27
- package/node_modules/wrappy/LICENSE +0 -15
- package/node_modules/wrappy/README.md +0 -36
- package/node_modules/wrappy/package.json +0 -29
- package/node_modules/wrappy/wrappy.js +0 -33
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare class TwinError extends Error {
|
|
2
|
-
readonly status: number;
|
|
3
|
-
readonly errors?: unknown[] | undefined;
|
|
4
|
-
constructor(message: string, status: number, errors?: unknown[] | undefined);
|
|
5
|
-
}
|
|
6
|
-
export declare function githubError(message: string, status: number, errors?: unknown[]): {
|
|
7
|
-
errors?: unknown[] | undefined;
|
|
8
|
-
message: string;
|
|
9
|
-
documentation_url: string;
|
|
10
|
-
status: number;
|
|
11
|
-
};
|
|
12
|
-
export declare function notFound(message?: string): never;
|
|
13
|
-
export declare function conflict(message: string): never;
|
|
14
|
-
export declare function validationFailed(field: string, code: string, value?: unknown): never;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
export class TwinError extends Error {
|
|
3
|
-
status;
|
|
4
|
-
errors;
|
|
5
|
-
constructor(message, status, errors) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.status = status;
|
|
8
|
-
this.errors = errors;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
export function githubError(message, status, errors) {
|
|
12
|
-
return {
|
|
13
|
-
message,
|
|
14
|
-
documentation_url: "https://docs.github.com/rest",
|
|
15
|
-
status,
|
|
16
|
-
...(errors ? { errors } : {})
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export function notFound(message = "Not Found") {
|
|
20
|
-
throw new TwinError(message, 404);
|
|
21
|
-
}
|
|
22
|
-
export function conflict(message) {
|
|
23
|
-
throw new TwinError(message, 409);
|
|
24
|
-
}
|
|
25
|
-
export function validationFailed(field, code, value) {
|
|
26
|
-
throw new TwinError("Validation Failed", 422, [
|
|
27
|
-
{
|
|
28
|
-
resource: "Request",
|
|
29
|
-
field,
|
|
30
|
-
code,
|
|
31
|
-
...(value === undefined ? {} : { value })
|
|
32
|
-
}
|
|
33
|
-
]);
|
|
34
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { createGitHubCloneApp } from "./app.js";
|
|
2
|
-
export { bearerAuth, localhostOnly, resolveAuthSecret } from "./auth.js";
|
|
3
|
-
export type { SessionClaims } from "./auth.js";
|
|
4
|
-
export { openGitHubCloneDatabase, resetDatabase } from "./db.js";
|
|
5
|
-
export { GitHubDomain } from "./domain.js";
|
|
6
|
-
export { defaultSeedState, parseSeed } from "./seed.js";
|
|
7
|
-
export { executeTool, listTools, toolDefinitions } from "./tools.js";
|
|
8
|
-
export type { GitHubCloneAppOptions } from "./app.js";
|
|
9
|
-
export type { GitHubCloneDatabase, GitHubStateSeed, Recorder } from "./types.js";
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
export { createGitHubCloneApp } from "./app.js";
|
|
3
|
-
export { bearerAuth, localhostOnly, resolveAuthSecret } from "./auth.js";
|
|
4
|
-
export { openGitHubCloneDatabase, resetDatabase } from "./db.js";
|
|
5
|
-
export { GitHubDomain } from "./domain.js";
|
|
6
|
-
export { defaultSeedState, parseSeed } from "./seed.js";
|
|
7
|
-
export { executeTool, listTools, toolDefinitions } from "./tools.js";
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Context } from "hono";
|
|
2
|
-
import type { GitHubDomain } from "./domain.js";
|
|
3
|
-
import type { Recorder } from "./types.js";
|
|
4
|
-
export type McpDeps = {
|
|
5
|
-
domain: GitHubDomain;
|
|
6
|
-
recorder?: Recorder;
|
|
7
|
-
runId: string;
|
|
8
|
-
};
|
|
9
|
-
export declare function mcpMethodNotAllowed(c: Context): Response & import("hono").TypedResponse<{
|
|
10
|
-
jsonrpc: string;
|
|
11
|
-
id: null;
|
|
12
|
-
error: {
|
|
13
|
-
code: number;
|
|
14
|
-
message: string;
|
|
15
|
-
};
|
|
16
|
-
}, 405, "json">;
|
|
17
|
-
export declare function handleMcpRequest(c: Context, deps: McpDeps): Promise<Response>;
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
//
|
|
3
|
-
// Real MCP JSON-RPC endpoint (Streamable HTTP, stateless tools-only).
|
|
4
|
-
//
|
|
5
|
-
// Wire contract: POST /s/:sid/mcp with JSON-RPC 2.0 body. We implement
|
|
6
|
-
// the minimum subset required by `@modelcontextprotocol/sdk`'s
|
|
7
|
-
// `Client` + `StreamableHTTPClientTransport`:
|
|
8
|
-
// - initialize (request) → server info + capabilities
|
|
9
|
-
// - notifications/* (notif) → HTTP 202, empty body
|
|
10
|
-
// - ping (request) → result: {}
|
|
11
|
-
// - tools/list (request) → { tools: [...] } with camelCase inputSchema
|
|
12
|
-
// - tools/call (request) → { content: [{type:"text",text:JSON}], isError? }
|
|
13
|
-
//
|
|
14
|
-
// Recorder parity: every successful `tools/call` produces one RecorderEvent
|
|
15
|
-
// whose request_body is `{ tool, arguments }` and whose response_body is the
|
|
16
|
-
// raw domain return value — byte-identical to what the legacy
|
|
17
|
-
// POST /s/:sid/mcp/call route records. Transport framing (JSON-RPC envelope)
|
|
18
|
-
// is intentionally NOT recorded; downstream analytics/replay dispatch on
|
|
19
|
-
// "tool X called with args Y" regardless of whether the request came in
|
|
20
|
-
// over MCP, the legacy custom route, or a REST shim.
|
|
21
|
-
//
|
|
22
|
-
// Stateless: each POST is independent. No Mcp-Session-Id, no SSE, no
|
|
23
|
-
// server→client notifications. GET/DELETE return 405.
|
|
24
|
-
import { z } from "zod";
|
|
25
|
-
import { TwinError } from "./errors.js";
|
|
26
|
-
import { executeTool, isMutatingTool, listToolsForMcp, toolDefinitions } from "./tools.js";
|
|
27
|
-
import { requestId } from "./util.js";
|
|
28
|
-
import { twinBuildInfo } from "./build-info.js";
|
|
29
|
-
// JSON-RPC 2.0 error codes (https://www.jsonrpc.org/specification)
|
|
30
|
-
const PARSE_ERROR = -32700;
|
|
31
|
-
const INVALID_REQUEST = -32600;
|
|
32
|
-
const METHOD_NOT_FOUND = -32601;
|
|
33
|
-
const INVALID_PARAMS = -32602;
|
|
34
|
-
const INTERNAL_ERROR = -32603;
|
|
35
|
-
// Latest MCP protocol version this server speaks. The MCP handshake says the
|
|
36
|
-
// server MAY echo the client's requested version if it supports it, otherwise
|
|
37
|
-
// reply with a version the server supports. We echo when the client requests
|
|
38
|
-
// a known-shaped string; otherwise fall back to this.
|
|
39
|
-
const DEFAULT_PROTOCOL_VERSION = "2025-06-18";
|
|
40
|
-
const SUPPORTED_PROTOCOL_VERSIONS = new Set([
|
|
41
|
-
"2024-11-05",
|
|
42
|
-
"2025-03-26",
|
|
43
|
-
"2025-06-18"
|
|
44
|
-
]);
|
|
45
|
-
// Hono GET/DELETE handler — Streamable HTTP requires both to exist; in
|
|
46
|
-
// stateless mode the only sensible answer is 405.
|
|
47
|
-
export function mcpMethodNotAllowed(c) {
|
|
48
|
-
return c.json({ jsonrpc: "2.0", id: null, error: { code: METHOD_NOT_FOUND, message: "Method not allowed in stateless mode" } }, 405, { Allow: "POST" });
|
|
49
|
-
}
|
|
50
|
-
export async function handleMcpRequest(c, deps) {
|
|
51
|
-
// Body must be JSON. Failure → parse error per JSON-RPC.
|
|
52
|
-
let body;
|
|
53
|
-
try {
|
|
54
|
-
body = await c.req.json();
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return jsonRpcErrorResponse(null, PARSE_ERROR, "Problems parsing JSON");
|
|
58
|
-
}
|
|
59
|
-
// Batch: process each, return array of responses (omitting notifications).
|
|
60
|
-
if (Array.isArray(body)) {
|
|
61
|
-
if (body.length === 0) {
|
|
62
|
-
return jsonRpcErrorResponse(null, INVALID_REQUEST, "Invalid Request");
|
|
63
|
-
}
|
|
64
|
-
const out = [];
|
|
65
|
-
for (const message of body) {
|
|
66
|
-
const response = await dispatch(message, deps, c);
|
|
67
|
-
if (response)
|
|
68
|
-
out.push(response);
|
|
69
|
-
}
|
|
70
|
-
// If every message was a notification → 202 with empty body.
|
|
71
|
-
if (out.length === 0)
|
|
72
|
-
return new Response(null, { status: 202 });
|
|
73
|
-
return Response.json(out, {
|
|
74
|
-
status: 200,
|
|
75
|
-
headers: { "content-type": "application/json" }
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
// Single message.
|
|
79
|
-
const response = await dispatch(body, deps, c);
|
|
80
|
-
if (!response)
|
|
81
|
-
return new Response(null, { status: 202 });
|
|
82
|
-
// Pick HTTP status from the JSON-RPC payload kind: error → still 200 per spec
|
|
83
|
-
// (errors travel inside the envelope), except for parse/invalid-request which
|
|
84
|
-
// are signaled by the dispatch path itself.
|
|
85
|
-
return Response.json(response, {
|
|
86
|
-
status: 200,
|
|
87
|
-
headers: { "content-type": "application/json" }
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
// Returns null for notifications (no response). Returns a JSON-RPC response
|
|
91
|
-
// envelope otherwise.
|
|
92
|
-
async function dispatch(message, deps, c) {
|
|
93
|
-
if (!isObject(message)) {
|
|
94
|
-
return errorEnvelope(null, INVALID_REQUEST, "Invalid Request");
|
|
95
|
-
}
|
|
96
|
-
if (message.jsonrpc !== "2.0" || typeof message.method !== "string") {
|
|
97
|
-
return errorEnvelope(idOf(message), INVALID_REQUEST, "Invalid Request");
|
|
98
|
-
}
|
|
99
|
-
const method = message.method;
|
|
100
|
-
const params = isObject(message.params) ? message.params : {};
|
|
101
|
-
// Notification: no `id` → MUST NOT respond. Caller turns this into HTTP 202.
|
|
102
|
-
// Per MCP, `notifications/initialized` and `notifications/cancelled` are the
|
|
103
|
-
// most common; the right behavior is to swallow silently. Any unknown
|
|
104
|
-
// notification is also swallowed (notifications cannot return errors).
|
|
105
|
-
const rawId = message.id;
|
|
106
|
-
if (rawId === undefined || rawId === null) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
if (typeof rawId !== "string" && typeof rawId !== "number") {
|
|
110
|
-
return errorEnvelope(null, INVALID_REQUEST, "Invalid Request: id must be string or number");
|
|
111
|
-
}
|
|
112
|
-
const id = rawId;
|
|
113
|
-
try {
|
|
114
|
-
switch (method) {
|
|
115
|
-
case "initialize":
|
|
116
|
-
return { jsonrpc: "2.0", id, result: buildInitializeResult(params) };
|
|
117
|
-
case "ping":
|
|
118
|
-
return { jsonrpc: "2.0", id, result: {} };
|
|
119
|
-
case "tools/list":
|
|
120
|
-
return { jsonrpc: "2.0", id, result: { tools: listToolsForMcp() } };
|
|
121
|
-
case "tools/call":
|
|
122
|
-
return await handleToolsCall(id, params, deps, c);
|
|
123
|
-
default:
|
|
124
|
-
return errorEnvelope(id, METHOD_NOT_FOUND, `Method not found: ${method}`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
return errorEnvelope(id, INTERNAL_ERROR, err instanceof Error ? err.message : "Internal error");
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
function buildInitializeResult(params) {
|
|
132
|
-
const requested = typeof params.protocolVersion === "string" ? params.protocolVersion : undefined;
|
|
133
|
-
const protocolVersion = requested && SUPPORTED_PROTOCOL_VERSIONS.has(requested) ? requested : DEFAULT_PROTOCOL_VERSION;
|
|
134
|
-
return {
|
|
135
|
-
protocolVersion,
|
|
136
|
-
capabilities: {
|
|
137
|
-
tools: { listChanged: false }
|
|
138
|
-
},
|
|
139
|
-
serverInfo: {
|
|
140
|
-
name: "twin-github",
|
|
141
|
-
version: twinBuildInfo().version
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
async function handleToolsCall(id, params, deps, c) {
|
|
146
|
-
const name = params.name;
|
|
147
|
-
const args = params.arguments === undefined || params.arguments === null
|
|
148
|
-
? {}
|
|
149
|
-
: isObject(params.arguments)
|
|
150
|
-
? params.arguments
|
|
151
|
-
: undefined;
|
|
152
|
-
if (typeof name !== "string" || name.length === 0 || args === undefined) {
|
|
153
|
-
return errorEnvelope(id, INVALID_PARAMS, "Invalid params: expected { name: string, arguments?: object }");
|
|
154
|
-
}
|
|
155
|
-
if (!toolDefinitions.some((t) => t.name === name)) {
|
|
156
|
-
// Per MCP convention, an unknown tool surfaces as a tool-call error
|
|
157
|
-
// (isError: true) rather than a JSON-RPC error, so the client sees it
|
|
158
|
-
// alongside other tool errors.
|
|
159
|
-
return {
|
|
160
|
-
jsonrpc: "2.0",
|
|
161
|
-
id,
|
|
162
|
-
result: makeToolErrorResult(`Unknown tool: ${name}`)
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
const started = Date.now();
|
|
166
|
-
const recordedRequestBody = { tool: name, arguments: args };
|
|
167
|
-
let delta = null;
|
|
168
|
-
let status = 200;
|
|
169
|
-
let responseBody = null;
|
|
170
|
-
let toolError = null;
|
|
171
|
-
let mcpResult;
|
|
172
|
-
try {
|
|
173
|
-
const value = executeTool(deps.domain, name, args, (d) => {
|
|
174
|
-
delta = d;
|
|
175
|
-
});
|
|
176
|
-
responseBody = value;
|
|
177
|
-
mcpResult = { content: [{ type: "text", text: jsonText(value) }] };
|
|
178
|
-
}
|
|
179
|
-
catch (err) {
|
|
180
|
-
if (err instanceof TwinError) {
|
|
181
|
-
status = err.status;
|
|
182
|
-
const ghError = {
|
|
183
|
-
message: err.message,
|
|
184
|
-
documentation_url: "https://docs.github.com/rest",
|
|
185
|
-
status: err.status,
|
|
186
|
-
...(err.errors ? { errors: err.errors } : {})
|
|
187
|
-
};
|
|
188
|
-
responseBody = ghError;
|
|
189
|
-
toolError = err.message;
|
|
190
|
-
mcpResult = { content: [{ type: "text", text: jsonText(ghError) }], isError: true };
|
|
191
|
-
}
|
|
192
|
-
else if (err instanceof z.ZodError) {
|
|
193
|
-
status = 422;
|
|
194
|
-
const ghError = {
|
|
195
|
-
message: "Validation Failed",
|
|
196
|
-
documentation_url: "https://docs.github.com/rest",
|
|
197
|
-
status: 422,
|
|
198
|
-
errors: err.issues.map((issue) => ({
|
|
199
|
-
resource: "Request",
|
|
200
|
-
field: issue.path.join("."),
|
|
201
|
-
code: issue.code
|
|
202
|
-
}))
|
|
203
|
-
};
|
|
204
|
-
responseBody = ghError;
|
|
205
|
-
toolError = "Validation Failed";
|
|
206
|
-
mcpResult = { content: [{ type: "text", text: jsonText(ghError) }], isError: true };
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
status = 500;
|
|
210
|
-
const message = err instanceof Error ? err.message : "Internal Server Error";
|
|
211
|
-
const ghError = { message, documentation_url: "https://docs.github.com/rest", status: 500 };
|
|
212
|
-
responseBody = ghError;
|
|
213
|
-
toolError = message;
|
|
214
|
-
mcpResult = { content: [{ type: "text", text: jsonText(ghError) }], isError: true };
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
recordToolCall(c, deps, {
|
|
218
|
-
started,
|
|
219
|
-
status,
|
|
220
|
-
requestBody: recordedRequestBody,
|
|
221
|
-
responseBody,
|
|
222
|
-
mutation: status < 400 && isMutatingTool(name),
|
|
223
|
-
stateDelta: status < 400 ? delta : null,
|
|
224
|
-
error: toolError
|
|
225
|
-
});
|
|
226
|
-
return { jsonrpc: "2.0", id, result: mcpResult };
|
|
227
|
-
}
|
|
228
|
-
function recordToolCall(c, deps, fields) {
|
|
229
|
-
if (!deps.recorder)
|
|
230
|
-
return;
|
|
231
|
-
const reqId = requestId();
|
|
232
|
-
const correlationHeader = c.req.header("x-pome-correlation-id") ?? null;
|
|
233
|
-
deps.recorder.record({
|
|
234
|
-
ts: new Date().toISOString(),
|
|
235
|
-
run_id: deps.runId,
|
|
236
|
-
twin: "github",
|
|
237
|
-
request_id: reqId,
|
|
238
|
-
// FDRS-402: see app.ts respond() for the rationale.
|
|
239
|
-
correlation_id: correlationHeader ?? reqId,
|
|
240
|
-
scenario_step_id: c.req.header("x-pome-scenario-step-id") ?? null,
|
|
241
|
-
step_id: null,
|
|
242
|
-
tool_call_id: correlationHeader,
|
|
243
|
-
method: c.req.method,
|
|
244
|
-
path: new URL(c.req.url).pathname,
|
|
245
|
-
request_body: fields.requestBody,
|
|
246
|
-
status: fields.status,
|
|
247
|
-
response_body: fields.responseBody,
|
|
248
|
-
latency_ms: Date.now() - fields.started,
|
|
249
|
-
fidelity: "semantic",
|
|
250
|
-
state_mutation: fields.mutation,
|
|
251
|
-
state_delta: fields.stateDelta,
|
|
252
|
-
error: fields.error
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
function makeToolErrorResult(message) {
|
|
256
|
-
return {
|
|
257
|
-
content: [{ type: "text", text: jsonText({ message }) }],
|
|
258
|
-
isError: true
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
function errorEnvelope(id, code, message) {
|
|
262
|
-
return { jsonrpc: "2.0", id, error: { code, message } };
|
|
263
|
-
}
|
|
264
|
-
function jsonRpcErrorResponse(id, code, message) {
|
|
265
|
-
return Response.json(errorEnvelope(id, code, message), {
|
|
266
|
-
status: 200,
|
|
267
|
-
headers: { "content-type": "application/json" }
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
function idOf(message) {
|
|
271
|
-
const id = message.id;
|
|
272
|
-
if (typeof id === "string" || typeof id === "number")
|
|
273
|
-
return id;
|
|
274
|
-
return null;
|
|
275
|
-
}
|
|
276
|
-
function isObject(value) {
|
|
277
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
278
|
-
}
|
|
279
|
-
function jsonText(value) {
|
|
280
|
-
return JSON.stringify(value);
|
|
281
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { redactSecrets } from "../recorder/redaction.js";
|
|
2
|
-
// In-memory, run-scoped recorder for the twin pod. Events live for the
|
|
3
|
-
// lifetime of the machine — discarded when Fly destroys the pod (DELETE
|
|
4
|
-
// /v1/sessions/:id or 30-min TTL). This is intentional: the trace is
|
|
5
|
-
// fetched once via GET /_pome/events at end-of-run by the CLI; any
|
|
6
|
-
// post-mortem inspection happens via the cloud-side trace blob the CLI
|
|
7
|
-
// uploads after.
|
|
8
|
-
//
|
|
9
|
-
// Memory cap: bounded by session timeout × max-rps. A 30-min session at
|
|
10
|
-
// 10 rps × ~500B per event ≈ 9 MB. Comfortably below the pod's 256 MB.
|
|
11
|
-
//
|
|
12
|
-
// Centralized secret redaction (FDRS-402): request_body / response_body run
|
|
13
|
-
// through the CLI's shared `redactSecrets` here so every call site benefits
|
|
14
|
-
// without each route remembering to do it.
|
|
15
|
-
export function createRecorder() {
|
|
16
|
-
const items = [];
|
|
17
|
-
return {
|
|
18
|
-
record(event) {
|
|
19
|
-
items.push({
|
|
20
|
-
...event,
|
|
21
|
-
request_body: redactSecrets(event.request_body),
|
|
22
|
-
response_body: redactSecrets(event.response_body),
|
|
23
|
-
});
|
|
24
|
-
},
|
|
25
|
-
events() {
|
|
26
|
-
return [...items];
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import type { GitHubStateSeed } from "./types.js";
|
|
3
|
-
export declare const seedSchema: z.ZodObject<{
|
|
4
|
-
users: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
5
|
-
login: z.ZodString;
|
|
6
|
-
type: z.ZodDefault<z.ZodEnum<{
|
|
7
|
-
User: "User";
|
|
8
|
-
Organization: "Organization";
|
|
9
|
-
}>>;
|
|
10
|
-
name: z.ZodDefault<z.ZodString>;
|
|
11
|
-
}, z.core.$strip>>>;
|
|
12
|
-
repositories: z.ZodArray<z.ZodObject<{
|
|
13
|
-
owner: z.ZodString;
|
|
14
|
-
name: z.ZodString;
|
|
15
|
-
description: z.ZodDefault<z.ZodString>;
|
|
16
|
-
private: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
-
default_branch: z.ZodDefault<z.ZodString>;
|
|
18
|
-
collaborators: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
19
|
-
labels: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
20
|
-
name: z.ZodString;
|
|
21
|
-
color: z.ZodDefault<z.ZodString>;
|
|
22
|
-
description: z.ZodDefault<z.ZodString>;
|
|
23
|
-
}, z.core.$strip>>>;
|
|
24
|
-
files: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
25
|
-
path: z.ZodString;
|
|
26
|
-
content: z.ZodString;
|
|
27
|
-
branch: z.ZodOptional<z.ZodString>;
|
|
28
|
-
}, z.core.$strip>>>;
|
|
29
|
-
issues: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
30
|
-
number: z.ZodOptional<z.ZodNumber>;
|
|
31
|
-
title: z.ZodString;
|
|
32
|
-
body: z.ZodDefault<z.ZodString>;
|
|
33
|
-
state: z.ZodDefault<z.ZodEnum<{
|
|
34
|
-
open: "open";
|
|
35
|
-
closed: "closed";
|
|
36
|
-
}>>;
|
|
37
|
-
labels: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
38
|
-
assignees: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
39
|
-
}, z.core.$strip>>>;
|
|
40
|
-
pull_requests: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
41
|
-
number: z.ZodOptional<z.ZodNumber>;
|
|
42
|
-
title: z.ZodString;
|
|
43
|
-
body: z.ZodDefault<z.ZodString>;
|
|
44
|
-
head: z.ZodString;
|
|
45
|
-
base: z.ZodDefault<z.ZodString>;
|
|
46
|
-
state: z.ZodDefault<z.ZodEnum<{
|
|
47
|
-
open: "open";
|
|
48
|
-
closed: "closed";
|
|
49
|
-
}>>;
|
|
50
|
-
author: z.ZodOptional<z.ZodString>;
|
|
51
|
-
reviews: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
52
|
-
author: z.ZodString;
|
|
53
|
-
state: z.ZodDefault<z.ZodEnum<{
|
|
54
|
-
APPROVED: "APPROVED";
|
|
55
|
-
CHANGES_REQUESTED: "CHANGES_REQUESTED";
|
|
56
|
-
COMMENTED: "COMMENTED";
|
|
57
|
-
}>>;
|
|
58
|
-
body: z.ZodDefault<z.ZodString>;
|
|
59
|
-
}, z.core.$strip>>>;
|
|
60
|
-
statuses: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
61
|
-
context: z.ZodDefault<z.ZodString>;
|
|
62
|
-
state: z.ZodDefault<z.ZodEnum<{
|
|
63
|
-
error: "error";
|
|
64
|
-
success: "success";
|
|
65
|
-
failure: "failure";
|
|
66
|
-
pending: "pending";
|
|
67
|
-
}>>;
|
|
68
|
-
description: z.ZodDefault<z.ZodString>;
|
|
69
|
-
}, z.core.$strip>>>;
|
|
70
|
-
}, z.core.$strip>>>;
|
|
71
|
-
}, z.core.$strip>>;
|
|
72
|
-
}, z.core.$strip>;
|
|
73
|
-
export declare function parseSeed(input: unknown): GitHubStateSeed;
|
|
74
|
-
export declare function defaultSeedState(): GitHubStateSeed;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
export const seedSchema = z.object({
|
|
4
|
-
users: z
|
|
5
|
-
.array(z.object({
|
|
6
|
-
login: z.string().min(1),
|
|
7
|
-
type: z.enum(["User", "Organization"]).default("User"),
|
|
8
|
-
name: z.string().default("")
|
|
9
|
-
}))
|
|
10
|
-
.default([]),
|
|
11
|
-
repositories: z.array(z.object({
|
|
12
|
-
owner: z.string().min(1),
|
|
13
|
-
name: z.string().min(1),
|
|
14
|
-
description: z.string().default(""),
|
|
15
|
-
private: z.boolean().default(false),
|
|
16
|
-
default_branch: z.string().min(1).default("main"),
|
|
17
|
-
collaborators: z.array(z.string().min(1)).default([]),
|
|
18
|
-
labels: z
|
|
19
|
-
.array(z.object({
|
|
20
|
-
name: z.string().min(1),
|
|
21
|
-
color: z.string().default("ededed"),
|
|
22
|
-
description: z.string().default("")
|
|
23
|
-
}))
|
|
24
|
-
.default([]),
|
|
25
|
-
files: z.array(z.object({ path: z.string().min(1), content: z.string(), branch: z.string().optional() })).default([]),
|
|
26
|
-
issues: z
|
|
27
|
-
.array(z.object({
|
|
28
|
-
number: z.number().int().positive().optional(),
|
|
29
|
-
title: z.string().min(1),
|
|
30
|
-
body: z.string().default(""),
|
|
31
|
-
state: z.enum(["open", "closed"]).default("open"),
|
|
32
|
-
labels: z.array(z.string().min(1)).default([]),
|
|
33
|
-
assignees: z.array(z.string().min(1)).default([])
|
|
34
|
-
}))
|
|
35
|
-
.default([]),
|
|
36
|
-
pull_requests: z
|
|
37
|
-
.array(z.object({
|
|
38
|
-
number: z.number().int().positive().optional(),
|
|
39
|
-
title: z.string().min(1),
|
|
40
|
-
body: z.string().default(""),
|
|
41
|
-
head: z.string().min(1),
|
|
42
|
-
base: z.string().min(1).default("main"),
|
|
43
|
-
state: z.enum(["open", "closed"]).default("open"),
|
|
44
|
-
author: z.string().min(1).optional(),
|
|
45
|
-
// Reviews seeded on this PR. `state` mirrors GitHub's review
|
|
46
|
-
// state enum; `author` must exist in the user/collaborator set.
|
|
47
|
-
reviews: z
|
|
48
|
-
.array(z.object({
|
|
49
|
-
author: z.string().min(1),
|
|
50
|
-
state: z.enum(["APPROVED", "CHANGES_REQUESTED", "COMMENTED"]).default("APPROVED"),
|
|
51
|
-
body: z.string().default("")
|
|
52
|
-
}))
|
|
53
|
-
.default([]),
|
|
54
|
-
// Commit statuses applied to this PR's head SHA. Wired into the
|
|
55
|
-
// commit_statuses table so get_pull_request_status and the merge
|
|
56
|
-
// path see them without needing a separate setup call.
|
|
57
|
-
statuses: z
|
|
58
|
-
.array(z.object({
|
|
59
|
-
context: z.string().min(1).default("ci/build"),
|
|
60
|
-
state: z.enum(["error", "failure", "pending", "success"]).default("success"),
|
|
61
|
-
description: z.string().default("")
|
|
62
|
-
}))
|
|
63
|
-
.default([])
|
|
64
|
-
}))
|
|
65
|
-
.default([])
|
|
66
|
-
}))
|
|
67
|
-
});
|
|
68
|
-
export function parseSeed(input) {
|
|
69
|
-
return seedSchema.parse(input);
|
|
70
|
-
}
|
|
71
|
-
export function defaultSeedState() {
|
|
72
|
-
return {
|
|
73
|
-
users: [
|
|
74
|
-
{ login: "acme", type: "Organization", name: "Acme" },
|
|
75
|
-
{ login: "alice", type: "User", name: "Alice" },
|
|
76
|
-
{ login: "bob", type: "User", name: "Bob" },
|
|
77
|
-
{ login: "pome-agent", type: "User", name: "Pome Agent" }
|
|
78
|
-
],
|
|
79
|
-
repositories: [
|
|
80
|
-
{
|
|
81
|
-
owner: "acme",
|
|
82
|
-
name: "api",
|
|
83
|
-
description: "Example API service used by GitHub twin tests.",
|
|
84
|
-
default_branch: "main",
|
|
85
|
-
collaborators: ["alice", "bob", "pome-agent"],
|
|
86
|
-
labels: [
|
|
87
|
-
{ name: "bug", color: "d73a4a", description: "Something is not working" },
|
|
88
|
-
{ name: "feature", color: "a2eeef", description: "New feature or request" },
|
|
89
|
-
{ name: "question", color: "d876e3", description: "More information needed" }
|
|
90
|
-
],
|
|
91
|
-
files: [
|
|
92
|
-
{ path: "README.md", content: "# Acme API\n\nA seeded repository for local GitHub twin tests.\n" },
|
|
93
|
-
{ path: "src/index.ts", content: "export function handler() {\n return 'ok';\n}\n" }
|
|
94
|
-
],
|
|
95
|
-
issues: [
|
|
96
|
-
{
|
|
97
|
-
number: 1,
|
|
98
|
-
title: "500 error on POST /orders after deploy",
|
|
99
|
-
body: "Started failing right after the 14:00 deploy. Stack trace points to OrderController#create.",
|
|
100
|
-
labels: ["bug"],
|
|
101
|
-
assignees: []
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
};
|
|
107
|
-
}
|