From e72972def23207dc21ac2422be71c52aca7213ed Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 5 Aug 2026 14:59:30 -0700 Subject: [PATCH 01/16] Add eslint settings for TS import parser and resolver (#37) * Add settings for import parser and resolver * ci: Format code * Add "eslint-import-resolver-typescript": "^4.4.5", * Fix name * ci: Format code --------- Co-authored-by: Seam Bot --- eslint.config.ts | 32 ++- package-lock.json | 553 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 3 files changed, 583 insertions(+), 3 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index e1f108f..ca287da 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -22,6 +22,16 @@ export default [ 'unused-imports': unusedImports, import: importPlugin, }, + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + typescript: { + project: './tsconfig.json', + }, + }, + }, rules: { '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-import-type-side-effects': 'error', @@ -31,9 +41,25 @@ export default [ fixStyle: 'inline-type-imports', }, ], - 'import/extensions': ['error', 'ignorePackages'], 'import/no-duplicates': ['error', { 'prefer-inline': true }], - 'import/no-relative-parent-imports': 'error', + 'import/no-cycle': [ + 'error', + { + ignoreExternal: true, + }, + ], + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['..', '../**'], + message: + 'Import by path alias instead, e.g., lib/foo/bar.js or test/fixtures/blueprint.js.', + }, + ], + }, + ], 'unused-imports/no-unused-imports': 'error', 'unused-imports/no-unused-vars': [ 'error', @@ -61,7 +87,7 @@ export default [ ['^node:'], ['^@?\\w'], ['@seamapi/makenew-tsmodule'], - ['^lib/'], + ['^lib/', '^test/'], ['^'], ['^\\.'], ], diff --git a/package-lock.json b/package-lock.json index b2d5616..146cdda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "c8": "^12.0.0", "del-cli": "^7.0.0", "eslint": "^9.31.0", + "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-import": "^2.32.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-unused-imports": "^4.1.4", @@ -50,6 +51,40 @@ "node": ">=20" } }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.28.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", @@ -786,6 +821,28 @@ "node": ">=18" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", + "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -887,6 +944,17 @@ "eslint": ">=8.40.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -1224,6 +1292,349 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", + "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", + "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", + "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", + "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", + "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", + "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", + "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", + "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", + "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", + "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", + "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", + "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", + "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", + "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", + "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", + "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", + "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-openharmony-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", + "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", + "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", + "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", + "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", + "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@vercel/nft": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.10.2.tgz", @@ -2897,6 +3308,31 @@ "eslint": ">=6.0.0" } }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", @@ -2919,6 +3355,41 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.5.tgz", + "integrity": "sha512-nbE5XLph6TLtGYcu/U6e6ZVXyKBhbDWK5cLGk76eJ7NdZpwf1P9EFkpt1Z01mNZNrrilsAYWKH6zUkL4reoXbw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, "node_modules/eslint-module-utils": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz", @@ -4296,6 +4767,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -5330,6 +5811,22 @@ "url": "https://github.com/sponsors/raouldeheer" } }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6710,6 +7207,16 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -7232,6 +7739,14 @@ "strip-bom": "^3.0.0" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, "node_modules/tsx": { "version": "4.23.1", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.1.tgz", @@ -7432,6 +7947,44 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unrs-resolver": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz", + "integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.4" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.12.2", + "@unrs/resolver-binding-android-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-x64": "1.12.2", + "@unrs/resolver-binding-freebsd-x64": "1.12.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.12.2", + "@unrs/resolver-binding-linux-loong64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-loong64-musl": "1.12.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.12.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-musl": "1.12.2", + "@unrs/resolver-binding-openharmony-arm64": "1.12.2", + "@unrs/resolver-binding-wasm32-wasi": "1.12.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.12.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.12.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.12.2" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/package.json b/package.json index 796f473..94e61fb 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "c8": "^12.0.0", "del-cli": "^7.0.0", "eslint": "^9.31.0", + "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-import": "^2.32.0", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-unused-imports": "^4.1.4", From c64d898696666db659406eb98a286b61e60b63dd Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Wed, 5 Aug 2026 22:00:02 +0000 Subject: [PATCH 02/16] 3.0.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 146cdda..d3193e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.4", + "version": "3.0.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.4", + "version": "3.0.5", "license": "SEE LICENSE IN LICENSE.txt", "devDependencies": { "@types/node": "^24.10.9", diff --git a/package.json b/package.json index 94e61fb..a37f752 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.4", + "version": "3.0.5", "description": "Package skeleton for a TypeScript module.", "type": "module", "main": "index.js", From 09272cbea50935c26fbf5066e525d520e761d98a Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 5 Aug 2026 21:48:20 -0700 Subject: [PATCH 03/16] Add workflow to prune stale branches --- .github/workflows/prune.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/prune.yml diff --git a/.github/workflows/prune.yml b/.github/workflows/prune.yml new file mode 100644 index 0000000..146f2b8 --- /dev/null +++ b/.github/workflows/prune.yml @@ -0,0 +1,22 @@ +--- +name: Prune + +on: + workflow_dispatch: {} + schedule: + - cron: "0 15 * * 3" + +jobs: + tag: + name: Prune Branches + runs-on: 'ubuntu-latest' + timeout-minutes: 30 + permissions: + pull-requests: read + contents: write + steps: + - name: Prune stale branches + uses: balvajs/delete-stale-branches@v2 + with: + dry-run: false + days-to-delete: 7 From 573a2d833c257fc8c1838b7ae4361e3b485e258d Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Thu, 6 Aug 2026 04:49:04 +0000 Subject: [PATCH 04/16] 3.0.6 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d3193e0..31d75c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.5", + "version": "3.0.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.5", + "version": "3.0.6", "license": "SEE LICENSE IN LICENSE.txt", "devDependencies": { "@types/node": "^24.10.9", diff --git a/package.json b/package.json index a37f752..fc6d6f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.5", + "version": "3.0.6", "description": "Package skeleton for a TypeScript module.", "type": "module", "main": "index.js", From 2b9a19783d3837f272d81f86a42951bbf187d6d9 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 5 Aug 2026 21:51:42 -0700 Subject: [PATCH 05/16] Fix format --- .github/workflows/prune.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prune.yml b/.github/workflows/prune.yml index 146f2b8..562d16c 100644 --- a/.github/workflows/prune.yml +++ b/.github/workflows/prune.yml @@ -4,7 +4,7 @@ name: Prune on: workflow_dispatch: {} schedule: - - cron: "0 15 * * 3" + - cron: '0 15 * * 3' jobs: tag: From 7d2ec2edcfbd60c4bb25dc9a2ad39c1ec2ec568a Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Thu, 6 Aug 2026 04:52:22 +0000 Subject: [PATCH 06/16] 3.0.7 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31d75c5..75cb921 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.6", + "version": "3.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.6", + "version": "3.0.7", "license": "SEE LICENSE IN LICENSE.txt", "devDependencies": { "@types/node": "^24.10.9", diff --git a/package.json b/package.json index fc6d6f7..69b9d9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.6", + "version": "3.0.7", "description": "Package skeleton for a TypeScript module.", "type": "module", "main": "index.js", From 56a9cac18764509decfd00a3b0dd6e06b628685f Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 5 Aug 2026 23:02:15 -0700 Subject: [PATCH 07/16] Enable semantic-release to use prerelease channels --- .github/workflows/version.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index d84f3b7..a19d071 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -35,3 +35,15 @@ jobs: node_auth_token: ${{ secrets.GH_TOKEN }} - name: Cut ${{ github.event.inputs.version }} version run: npm version --sign-git-tag=true ${{ github.event.inputs.version }} + - name: Record prerelease channel + env: + VERSION: ${{ github.event.inputs.version }} + run: | + case "$VERSION" in + *-*) channel="${VERSION#*-}"; channel="${channel%%.*}" ;; + *) echo "Stable release, no channel note required."; exit 0 ;; + esac + git notes --ref semantic-release add \ + --message "{\"channels\":[\"$channel\"]}" "v$VERSION^{commit}" + git push origin refs/notes/semantic-release + echo "Recorded v$VERSION on the '$channel' channel." From 0cd6f12fa15a74f462d5f4ef70150412a73da661 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Thu, 6 Aug 2026 11:03:06 -0700 Subject: [PATCH 08/16] Fetch git notes before adding semantic release note Fetch git notes before adding a new note for the version. --- .github/workflows/version.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index a19d071..92cc4f4 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -43,7 +43,8 @@ jobs: *-*) channel="${VERSION#*-}"; channel="${channel%%.*}" ;; *) echo "Stable release, no channel note required."; exit 0 ;; esac - git notes --ref semantic-release add \ + git fetch origin "+refs/notes/semantic-release:refs/notes/semantic-release" || true + git notes --ref semantic-release add --force \ --message "{\"channels\":[\"$channel\"]}" "v$VERSION^{commit}" git push origin refs/notes/semantic-release echo "Recorded v$VERSION on the '$channel' channel." From cd2326cace964fddd4414fc4a95de5a059843bfe Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 11 Aug 2026 17:00:47 -0700 Subject: [PATCH 09/16] Disable AVA worker threads --- ava.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ava.config.js b/ava.config.js index 89d4d66..b7f98c5 100644 --- a/ava.config.js +++ b/ava.config.js @@ -6,5 +6,6 @@ export default () => { }, extensions: ['ts'], nodeArguments: ['--import=tsx'], + workerThreads: false, } } From ddb090f7f0179517b56759815a9d2b37e7ee4d0c Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Wed, 12 Aug 2026 00:01:23 +0000 Subject: [PATCH 10/16] 3.0.8 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 75cb921..669a492 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.7", + "version": "3.0.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.7", + "version": "3.0.8", "license": "SEE LICENSE IN LICENSE.txt", "devDependencies": { "@types/node": "^24.10.9", diff --git a/package.json b/package.json index 69b9d9a..41ea052 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.7", + "version": "3.0.8", "description": "Package skeleton for a TypeScript module.", "type": "module", "main": "index.js", From 0701e0247217c3bbbbf474ca06c4be78d7238311 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 12 Aug 2026 12:15:30 -0700 Subject: [PATCH 11/16] Enable require(esm) --- package-lock.json | 2 +- package.json | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 669a492..0d46278 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "typescript": "^6.0.3" }, "engines": { - "node": ">=22.11.0", + "node": ">=22.12.0", "npm": ">=10.0.0" } }, diff --git a/package.json b/package.json index 41ea052..be96a94 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,8 @@ "types": "index.d.ts", "exports": { ".": { - "import": { - "types": "./index.d.ts", - "default": "./index.js" - } + "types": "./index.d.ts", + "default": "./index.js" } }, "module": "index.js", @@ -59,13 +57,13 @@ "report": "c8 report" }, "engines": { - "node": ">=22.11.0", + "node": ">=22.12.0", "npm": ">=10.0.0" }, "devEngines": { "runtime": { "name": "node", - "version": "^24.11.0 || ^22.11.0" + "version": "^24.11.0 || ^22.12.0" }, "packageManager": { "name": "npm", From 4ab33bb261c4938dd198aa13d5def7eb13a0afe4 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Wed, 12 Aug 2026 19:17:37 +0000 Subject: [PATCH 12/16] 3.0.9 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d46278..446e4f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.8", + "version": "3.0.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.8", + "version": "3.0.9", "license": "SEE LICENSE IN LICENSE.txt", "devDependencies": { "@types/node": "^24.10.9", diff --git a/package.json b/package.json index be96a94..4ae4845 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seamapi/makenew-tsmodule", - "version": "3.0.8", + "version": "3.0.9", "description": "Package skeleton for a TypeScript module.", "type": "module", "main": "index.js", From 64b101bfb4b2e021510b56cb91907f10dfa17a5a Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 12 Aug 2026 15:47:25 -0700 Subject: [PATCH 13/16] Update cli --- package-lock.json | 326 +++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 221 insertions(+), 107 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94e5085..5270ee7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.231.0", "license": "MIT", "dependencies": { - "@seamapi/cli": "^0.7.0", + "@seamapi/cli": "0.24.1", "@seamapi/http": "2.2.0", "@seamapi/webhook": "1.4.0" }, @@ -82,9 +82,9 @@ } }, "node_modules/@anthropic-ai/claude-agent-sdk-darwin-arm64": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.220.tgz", - "integrity": "sha512-7VxlbEosK7DODiOnsjoVd0DSJzbnaPrM2jelMHI0y8zx1UnLS3WC6EFUXbvy74F2sXqEznh2tzn7EKWInaRN6Q==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.229.tgz", + "integrity": "sha512-yVrJwSG9ur001ggDHKPUHlRuHKwbi2ETfby+4wlktRcQ5sAXqcSeS6B4T+IsXk8NDDHKXbCxpAPnCB5dz1Ac9g==", "cpu": [ "arm64" ], @@ -95,9 +95,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-darwin-x64": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.220.tgz", - "integrity": "sha512-X9RwDsSmbF6ultKZroaip+DL8WRgC64gHbrAwrRlAFSPNZV7zmJyP2ur8rW7KrxqmtuehdMMkw8+SAC/6hD2PA==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.229.tgz", + "integrity": "sha512-MOhOwgh9fqnX/rqeVJzy+NNFx+xXX2Kej/jx33xTV+4J5aJ2H1SwjZ+r3f/k1MMQmPvkrE0GHnMYrpu4hfvZ5Q==", "cpu": [ "x64" ], @@ -108,9 +108,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.220.tgz", - "integrity": "sha512-WkROPwWskqhKR9XgnmseHQ6rLi9zM9qt57IWoToIjL/eXOqDWipp7JXZ1L5ud+LrA42dunHPZfBwD/vXZ+A7LA==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.229.tgz", + "integrity": "sha512-xSPUmKNik7HEYsbdUFywbjvGzUth0P2KohetJixSOrBha63ZRun449ssEHU55VX3qH+YO5ENn129l5TGFzMNGQ==", "cpu": [ "arm64" ], @@ -124,9 +124,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64-musl": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.220.tgz", - "integrity": "sha512-OHoZOZ8Cf2TBr6oXIXPwyvUxj9jrq2w8E4poA8dMpacXszcPSPiCQCMuuOh4aWJzfeJE1+TtWxhKMVb2csXyZQ==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.229.tgz", + "integrity": "sha512-S0XcKhUXLFdEv1Pq+aYiV7fDlTa/n+bajBNkKv12eUzjCUFsM/TfSyU5shnkQg9y7NtoB4owK/rezm5hHD1ybg==", "cpu": [ "arm64" ], @@ -140,9 +140,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.220.tgz", - "integrity": "sha512-tkTJFnpR9VifvWX2fmkCAPkT6+8Wk/gVu8B5jsVekKZPiZoWRHmMXO30BnZn+f0TZhgYP+82PSX3S8crH1kn+w==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.229.tgz", + "integrity": "sha512-Cs0NxWVL/Up8kEh//P2cE+3VHrDxoSmWUP3EvI/GU+1RRGZPDD80UN1Rvl3TMC5QPMq+IYPjh1yncnxZ6j8aNw==", "cpu": [ "x64" ], @@ -156,9 +156,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.220.tgz", - "integrity": "sha512-K+FWj+LcGhC1Z7wqeWoLxm1iemcba5xKpLLFVwYm4V6HyMx3ruYd/2r2TiQtjT+JWeNFWIys0ScHiItR6vWAiA==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.229.tgz", + "integrity": "sha512-9gJsr0elKyV21ln+Mza5kYiSAsqSAWFiHuaT+MiXAycBK73UbzRVLBg87dajkGagg6H1u5ZtPSkqNXzA2xArmA==", "cpu": [ "x64" ], @@ -172,9 +172,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-win32-arm64": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.220.tgz", - "integrity": "sha512-rIwgq0UwQExWl6KrHUyC4w5KwpL9l6nd95aUTx6RitexaAuEw//xtfTVLnuE4hDDQZFkzEwpdKc3nxDWoGcUbA==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.229.tgz", + "integrity": "sha512-2fkljxQweZUa41RrlhLh+VdZrJ4kYzEBHGD8sc+Xy2bjkF8T4GTmsE8eKSWN3NfSCQOLHgK7Bxfm6+2n88WJMg==", "cpu": [ "arm64" ], @@ -185,9 +185,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-win32-x64": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.220.tgz", - "integrity": "sha512-MuOuXhbr66HlGaWXD2f3w0k2PsvmnbkwcUZ0dAe2poFLdl72GC2dapwwOBefxm9QmoNqk9+jmv/dSKGOVWyvLw==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.229.tgz", + "integrity": "sha512-2M2/KHJTGqzduA8eRZDu1vWSFkMqKl9JZMqJmaJ2THIR2g7jBUAzK0B57UzkO9uQXoXWFH7P91OSKKGA4rwfwQ==", "cpu": [ "x64" ], @@ -198,9 +198,9 @@ ] }, "node_modules/@anthropic-ai/sdk": { - "version": "0.115.0", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.115.0.tgz", - "integrity": "sha512-BJrFIVyjNuU8lfDyIJTvlRYzgQg+zEl78BxE7fq8esULsGz9IRQvGtW5spq3tydmtjQb/GFdooKGdGsetpx+lQ==", + "version": "0.116.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.116.0.tgz", + "integrity": "sha512-4UEapYQ+epLEMsAuLZDvW8ExVSOtHD8a7zTyLzhw0H9RXJ1eilPgmqhjwgcdg22diwx13spw6fJ4rONZ+bS7Ww==", "license": "MIT", "peer": true, "dependencies": { @@ -229,6 +229,34 @@ "node": ">=6.9.0" } }, + "node_modules/@clack/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.4.3.tgz", + "integrity": "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@clack/prompts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.7.0.tgz", + "integrity": "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.4.3", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, "node_modules/@emnapi/core": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", @@ -850,9 +878,9 @@ } }, "node_modules/@hono/node-server": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.0.12.tgz", - "integrity": "sha512-eWpQYr67tqJLeaSUl0Q+TquuYfUdTibpOJlUMV2FfUP7+KqCC5TufnwnlXL6mobZBJbGAYRd7ZvEBDCbLInjhg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.0.tgz", + "integrity": "sha512-XovyyCCnBzW+zKu+z/zq8hwNs4KOR5rEMAOxo2f40Q5xoOI37IMm6MIg2COOUtUApo0i6850MTBKH2u4QLGIqg==", "license": "MIT", "peer": true, "engines": { @@ -939,6 +967,18 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz", @@ -1072,9 +1112,9 @@ "license": "MIT" }, "node_modules/@seamapi/blueprint": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@seamapi/blueprint/-/blueprint-1.2.0.tgz", - "integrity": "sha512-+fomtVD/VGJavEpOtVZD+3ZxUYgTXAS4DreNqbsNl0R1qS0wiIdJ40AmE9dgLnY1cHCfPNBmf1z//FdvCqHhrw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@seamapi/blueprint/-/blueprint-1.5.0.tgz", + "integrity": "sha512-UhLlcfgxUbnxoi4GoL45Kwvz3d9kfu64enYmdGYHWDbya1lpvBF5E9NVP52OOR9OjSZpQFyIg9mUV1rjgjTyUA==", "license": "MIT", "dependencies": { "change-case": "^5.4.4", @@ -1086,21 +1126,23 @@ } }, "node_modules/@seamapi/cli": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@seamapi/cli/-/cli-0.7.0.tgz", - "integrity": "sha512-bizW0EpkNajoS45OIEApaLZMIPqLBeVRejqza/G3enenhhfiETc+AoQSoFzNOSOk7lG16LFrOPcHoEENPTN8ew==", + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/@seamapi/cli/-/cli-0.24.1.tgz", + "integrity": "sha512-GtDsm9DzZ8M745Q5p1HROE+I0JvyECRtz2LrenKdUNq5cKHt0uo5KL2VTlKBRwJZ20gXhWEx5HetdUupuPBXUA==", "license": "MIT", "dependencies": { - "@seamapi/blueprint": "^1.1.0", + "@clack/prompts": "^1.7.0", + "@seamapi/blueprint": "1.5.0", "@seamapi/http": "2.2.0", - "@seamapi/wizard": "0.5.2", + "@seamapi/wizard": "0.8.0", "chalk": "^6.0.0", "command-line-usage": "^7.0.4", "configstore": "^8.0.0", + "env-paths": "^4.0.0", "minimist": "^1.2.8", "nanospinner": "^1.2.2", "open": "^11.0.0", - "prompts": "^2.4.2" + "tar": "^7.5.22" }, "bin": { "seam": "bin/cli.js" @@ -1157,9 +1199,9 @@ } }, "node_modules/@seamapi/wizard": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@seamapi/wizard/-/wizard-0.5.2.tgz", - "integrity": "sha512-zqZjGxN7Np24J9USS6BeGewMAVdDNYwOseOVqMzHSXwbvxLO29yCRv+sfT9RwQr+Y+uI3APK61Qgp7XTkBADvA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@seamapi/wizard/-/wizard-0.8.0.tgz", + "integrity": "sha512-ZwGOu+NiAi16If7bXg87nfoifTery9HRPOfz5Faeed0rcjx/km0Eliw7/YdMiiFTf6slGIFoFDXuEomoeNDmXQ==", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.3.216", @@ -1179,22 +1221,22 @@ } }, "node_modules/@seamapi/wizard/node_modules/@anthropic-ai/claude-agent-sdk": { - "version": "0.3.220", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.220.tgz", - "integrity": "sha512-glc7SdwPkOkLw8oxwLo9PKTdLJGqW/PIR4urWXFoRtX9YllwozsEVc5Tc1+EvLSkfrsxPJqQWqOgpjUOQXf1oA==", + "version": "0.3.229", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.229.tgz", + "integrity": "sha512-ZxSFO7cNSz7jqsOmoGkBtvMT4JGWb2a8PUe6doAydZXH6mm6FsoUf+duSUm2rDrbv7OMoD8HDGwNZv5P3woE3w==", "license": "SEE LICENSE IN README.md", "engines": { "node": ">=18.0.0" }, "optionalDependencies": { - "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.220", - "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.220", - "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.220", - "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.220", - "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.220", - "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.220", - "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.220", - "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.220" + "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.229", + "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.229", + "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.229", + "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.229", + "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.229", + "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.229", + "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.229", + "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.229" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.93.0", @@ -2791,6 +2833,15 @@ "node": ">= 6" } }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cli-boxes": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-4.0.1.tgz", @@ -2850,9 +2901,9 @@ } }, "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", "license": "MIT", "peer": true, "engines": { @@ -3495,6 +3546,21 @@ "node": ">=10.13.0" } }, + "node_modules/env-paths": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", + "license": "MIT", + "dependencies": { + "is-safe-filename": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", @@ -4352,9 +4418,9 @@ } }, "node_modules/eventsource-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", - "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", + "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", "license": "MIT", "peer": true, "engines": { @@ -4419,9 +4485,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.1.tgz", - "integrity": "sha512-0D493aP61w0TJ2A0wy27riRsO7FMQ7FK+KUHOKCSfPvYo0R55aiC6emCVgFUeShH0fq0ICPVzNcgoS+BsbXQCA==", + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.2.tgz", + "integrity": "sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==", "license": "MIT", "peer": true, "dependencies": { @@ -4558,10 +4624,25 @@ "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", "license": "Unlicense" }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, "node_modules/fast-uri": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", - "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "funding": [ { "type": "github", @@ -4575,6 +4656,15 @@ "license": "BSD-3-Clause", "peer": true }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -5252,9 +5342,9 @@ } }, "node_modules/hono": { - "version": "4.12.32", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.32.tgz", - "integrity": "sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.1.tgz", + "integrity": "sha512-kdJoFVv2xmayw6cY09H7AbMJMt8Jn5jdlEdXsP7AGBdF2DIptVlKlOLKXP41yPip4/a3yQPv9gVcJYI8YY04dw==", "license": "MIT", "peer": true, "engines": { @@ -5526,9 +5616,9 @@ } }, "node_modules/ink/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", "license": "MIT", "peer": true, "engines": { @@ -5631,9 +5721,9 @@ } }, "node_modules/ip-address": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.3.1.tgz", - "integrity": "sha512-1e9d3kb97NHJTIJDZW9rKqW2h6+dFa50Dy0fpPSMQp2ADje5gvKsXmdiK6dwY5t76TaTt5+P5N1Y/LoToIxP6g==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz", + "integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==", "license": "MIT", "peer": true, "engines": { @@ -6347,9 +6437,9 @@ } }, "node_modules/jose": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.4.tgz", - "integrity": "sha512-N8acGzVsQy6M/fjFcxtysNc4Q379TcM5dM/qKkNtsHFji88yANnXTr7BLeP75iPnFwBfQzM/jg2BZ9+HZrHCZA==", + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.8.tgz", + "integrity": "sha512-Bsdjwm3Qsd/P0jR+BHDe3LytDfY7WBq2HmCCLIwuVRHMuEC9ae7/R474GIUdF1NgCyZjzVo/A9DOiOBtXq8ZoQ==", "license": "MIT", "peer": true, "funding": { @@ -6490,15 +6580,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/landlubber": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/landlubber/-/landlubber-2.0.0.tgz", @@ -6794,6 +6875,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -7708,19 +7810,6 @@ "dev": true, "license": "MIT" }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -8992,6 +9081,22 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/tar": { + "version": "7.5.22", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz", + "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/terminal-size": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/terminal-size/-/terminal-size-4.0.1.tgz", @@ -9756,9 +9861,9 @@ } }, "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", "license": "MIT", "peer": true, "engines": { @@ -9845,9 +9950,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.21.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz", - "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==", + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "license": "MIT", "peer": true, "engines": { @@ -9914,6 +10019,15 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/yargs": { "version": "17.7.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", diff --git a/package.json b/package.json index 4fdce68..d624b33 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ } }, "dependencies": { - "@seamapi/cli": "^0.7.0", + "@seamapi/cli": "0.24.1", "@seamapi/http": "2.2.0", "@seamapi/webhook": "1.4.0" }, From 7b85860f9b555a296941fca20b478bc6f5a3e2bd Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 12 Aug 2026 15:47:36 -0700 Subject: [PATCH 14/16] Update http --- package-lock.json | 19 +++++++++++++++++-- package.json | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5270ee7..eeadf8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@seamapi/cli": "0.24.1", - "@seamapi/http": "2.2.0", + "@seamapi/http": "2.3.1", "@seamapi/webhook": "1.4.0" }, "bin": { @@ -1152,7 +1152,7 @@ "npm": ">=10.0.0" } }, - "node_modules/@seamapi/http": { + "node_modules/@seamapi/cli/node_modules/@seamapi/http": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@seamapi/http/-/http-2.2.0.tgz", "integrity": "sha512-Uc4xGaR7Yi5nKLvYSn9YoZxrXuzwJ6AXi28RZGYSQ15VEzIYf9AdsakVJrLr1cznky0OHglgZKPzCK66h5JhyQ==", @@ -1167,6 +1167,21 @@ "npm": ">=10.9.4" } }, + "node_modules/@seamapi/http": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@seamapi/http/-/http-2.3.1.tgz", + "integrity": "sha512-GE90TkUoejuaDDR4xyq3RlZh/6fEjY/tjZ36yGjzWWLY4ho9067wmE83rFrUcObTVEW+WyFHUGMHlvM9M0f24A==", + "license": "MIT", + "dependencies": { + "@seamapi/url-search-params-serializer": "^3.0.0", + "axios": "^1.9.0", + "axios-retry": "^4.4.2" + }, + "engines": { + "node": ">=22.12.0", + "npm": ">=10.0.0" + } + }, "node_modules/@seamapi/url-search-params-serializer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@seamapi/url-search-params-serializer/-/url-search-params-serializer-3.0.0.tgz", diff --git a/package.json b/package.json index d624b33..6eda057 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ }, "dependencies": { "@seamapi/cli": "0.24.1", - "@seamapi/http": "2.2.0", + "@seamapi/http": "2.3.1", "@seamapi/webhook": "1.4.0" }, "devDependencies": { From ba0ec4849da993c011272ceb4772515ae04bb598 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 12 Aug 2026 15:47:54 -0700 Subject: [PATCH 15/16] Update webhook --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index eeadf8e..7c51566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@seamapi/cli": "0.24.1", "@seamapi/http": "2.3.1", - "@seamapi/webhook": "1.4.0" + "@seamapi/webhook": "1.4.1" }, "bin": { "seam": "bin/seam.js" @@ -1193,16 +1193,16 @@ } }, "node_modules/@seamapi/webhook": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@seamapi/webhook/-/webhook-1.4.0.tgz", - "integrity": "sha512-YJVGLIYuvuAn1rha+08Ksrw/JzUmRP6h66Wf1GTIX4wOseKz8tiwZSuK9TiH25+6fUtkOQ/705b9qkW7CrQGLw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@seamapi/webhook/-/webhook-1.4.1.tgz", + "integrity": "sha512-pnxOX0xLropCvrQOYXvLOreAw6K8zEUkhdeUKuHkLgesn+saDzpJ6oKnf8JkKM3h3d+JALAOsmGaXIzEwQve5Q==", "license": "MIT", "dependencies": { "svix": "^1.15.0" }, "engines": { - "node": ">=22.11.0", - "npm": ">=10.9.4" + "node": ">=22.12.0", + "npm": ">=10.0.0" }, "peerDependencies": { "@seamapi/http": "^2.0.0" diff --git a/package.json b/package.json index 6eda057..9d96b5c 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "dependencies": { "@seamapi/cli": "0.24.1", "@seamapi/http": "2.3.1", - "@seamapi/webhook": "1.4.0" + "@seamapi/webhook": "1.4.1" }, "devDependencies": { "@types/node": "^24.10.9", From 1d588b88046cd755cb76de0574067bf166c35810 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Wed, 12 Aug 2026 22:48:38 +0000 Subject: [PATCH 16/16] ci: Generate code --- README.md | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 204 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4b38ee7..49bde04 100644 --- a/README.md +++ b/README.md @@ -53,12 +53,18 @@ Instead, it builds on a core set of Seam modules: - [Advanced Usage](#advanced-usage) - [Additional Options](#additional-options) - [Setting the endpoint](#setting-the-endpoint) + - [Setting the request timeout](#setting-the-request-timeout) - [Configuring the Axios Client](#configuring-the-axios-client) - [Using the Axios Client](#using-the-axios-client) - [Overriding the Client](#overriding-the-client) - [Alternative endpoint path interface](#alternative-endpoint-path-interface) - [Inspecting the Request](#inspecting-the-request) - [Command Line Interface](#command-line-interface) + - [Output](#output) + - [Pagination](#pagination-1) + - [JSON](#json) + - [Selecting an endpoint and a workspace](#selecting-an-endpoint-and-a-workspace) + - [Environment variables](#environment-variables) - [Receiving Webhooks](#receiving-webhooks) - [Development and Testing](#development-and-testing) - [Quickstart](#quickstart) @@ -468,6 +474,7 @@ the constructor takes some advanced options that affect behavior. const seam = new Seam({ apiKey: 'your-api-key', endpoint: 'https://example.com', + timeout: 30000, axiosOptions: {}, axiosRetryOptions: {}, }) @@ -479,6 +486,7 @@ these options may be passed in as the last argument. ```ts const seam = Seam.fromApiKey('some-api-key', { endpoint: 'https://example.com', + timeout: 30000, axiosOptions: {}, axiosRetryOptions: {}, }) @@ -492,6 +500,22 @@ This option corresponds to the Axios `baseURL` setting. Either pass the `endpoint` option, or set the `SEAM_ENDPOINT` environment variable. +#### Setting the request timeout + +Requests time out after 30 seconds by default. +Pass the `timeout` option, in milliseconds, to override this: + +```ts +const seam = new Seam({ + apiKey: 'your-api-key', + timeout: 60000, +}) +``` + +Set `timeout` to `0` to disable the timeout entirely. +A request that times out rejects with an Axios `ETIMEDOUT` error, +and is retried according to the retry options. + #### Configuring the Axios Client The Axios client and retry behavior may be configured with custom initiation options @@ -552,9 +576,19 @@ const devices = await request.execute() ### Command Line Interface -Every `seam` command is interactive and will prompt you for any missing -required properties with helpful suggestions. To avoid automatic behavior, -pass `-y`. +Every `seam` command makes its request as soon as every required property is +given. When something is missing, the CLI prompts you for it with helpful +suggestions. + +Pass `--interactive` (or `-i`) to always be prompted to review and edit +properties before the request is made. The prompt is prefilled with whatever +you passed as arguments, so this is the way to add optional properties, or to +check a request before making it. + +For scripts and CI, pass `--non-interactive` (or `-y`) to never be prompted. +The command must then be complete: if the command itself is ambiguous, or any +required property is missing, the CLI exits with an error naming what is +missing instead of asking for it. To take a project from zero to a working Seam integration, run the [Seam Wizard] from the project's root: @@ -581,7 +615,19 @@ seam connect-webviews create # List devices in your workspace seam devices list -MY_DOOR=$(seam devices get --name "Front Door" --id-only) +# Review and edit filters before listing devices +seam devices list --interactive + +# List devices, failing instead of prompting +seam devices list --non-interactive + +# Fails with: Missing required parameter for /locks/unlock_door: --device-id +seam locks unlock-door --non-interactive + +# Fails with: Unknown parameter for /devices/list: --limitt +seam devices list --limitt 5 + +MY_DOOR=$(seam devices get --name "Front Door" | jq -r '.device.device_id') # Unlock a lock seam locks unlock-door --device-id $MY_DOOR @@ -593,6 +639,160 @@ seam access-codes create --code "1234" --name "My Code" seam access-codes list --device-id $MY_DOOR ``` +### Output + +Only the response is written to stdout, so any command may be piped or +redirected. Prompts, progress, and other information are written to stderr. + +The response is trimmed to the response key and pagination: no other top level +fields are reported. + +```bash +# The response, and nothing else, ends up in the file +seam devices list > devices.json + +# Prompts and progress still show up in the terminal +seam devices list | jq '.devices[].device_id' +``` + +### Pagination + +Every command that paginates accepts `--page-cursor` to select a page of +results, alongside `--limit` for the size of that page. Each response reports +its `pagination`, whose `next_page_cursor` is the cursor for the page after it. + +```bash +# The first page, and the cursor for the next one +seam devices list --limit 2 | jq '.pagination.next_page_cursor' + +# The page after it +seam devices list --limit 2 --page-cursor "$CURSOR" +``` + +A cursor is opaque: pass it back exactly as it was reported, and do not build +one yourself. Run `seam --help` to see whether a command paginates. + +### JSON + +Request params may be piped or redirected in as a JSON object. Params given as +arguments win over params read from stdin. + +An argument the command does not accept is an error, so a typo is reported +rather than sent. Params read from stdin are passed through as given, so +anything the API itself accepts may be sent that way. + +```bash +# Read params from a file +seam locks unlock-door < params.json + +# Or from another program +echo '{"device_id": "'"$MY_DOOR"'"}' | seam locks unlock-door + +# --device-id wins over any device_id in params.json +seam devices list --limit 5 < params.json +``` + +Pass `--json` to write the response as JSON. It is enabled automatically +whenever stdout is not a terminal, so piping and redirecting produce JSON +without passing anything. Pass `--no-json` to opt out and get the pretty +format instead. + +```bash +# Both write JSON +seam devices list --json +seam devices list | jq + +# Pretty printed, even though it is piped +seam devices list --no-json | less +``` + +Without a terminal to prompt on, the CLI behaves as though +`--non-interactive` was given: rather than waiting for an answer nobody can +give, it exits with an error naming what is missing. + +```bash +$ echo '{}' | seam locks unlock-door +Missing required parameter for /locks/unlock_door: --device-id +``` + +An error exits non-zero. A request that fails reports its `error` on stdout, +so it can be inspected from a pipe; anything else is written to stderr only. + +### Selecting an endpoint and a workspace + +Two settings say where commands go, and one command each stores them: + +```bash +# Every later command runs against this endpoint +seam select endpoint https://connect.getseam.com + +# ...and this workspace +seam select workspace $MY_WORKSPACE +``` + +Run either without a value to pick one interactively. + +To send a single command somewhere else, pass `--endpoint` or +`--workspace-id` to that command. They override what is selected for that one +invocation and store nothing: + +```bash +# List devices in another workspace, without switching to it +seam devices list --workspace-id $OTHER_WORKSPACE + +# Run one command against a local Seam Connect instance +seam devices list --endpoint http://localhost:3020 + +# Log in to another endpoint: the token is stored for that endpoint, +# and the selected one is left alone +seam login --endpoint http://localhost:3020 --token $LOCAL_KEY +``` + +Because the two flags never store anything, they are refused on the commands +that do: `seam select endpoint --endpoint ` is an error, and the value +belongs after the command instead. + +### Environment variables + +Everything `seam login`, `seam select workspace`, and `seam select endpoint` +store may be given in the environment instead: + +- `SEAM_CLI_TOKEN`: a Personal Access Token or API Key, +- `SEAM_CLI_WORKSPACE_ID`: the workspace requests are made against, +- `SEAM_CLI_ENDPOINT`: the Seam API endpoint requests are made to. + +Any of them, all of them, or none of them may be set. Each one wins over the +corresponding stored value and is in turn overridden by `--endpoint` or +`--workspace-id`, which makes them useful for CI or for working against +another workspace for a whole shell. + +```bash +# One command against another workspace +SEAM_CLI_WORKSPACE_ID=$OTHER_WORKSPACE seam devices list + +# No login needed: authenticate from the environment +export SEAM_CLI_TOKEN=$SEAM_API_KEY +seam devices list + +# Work against a local Seam Connect instance +SEAM_CLI_ENDPOINT=http://localhost:3020 seam devices list +``` + +An API Key is scoped to a single workspace, so it needs no workspace id. A +Personal Access Token works across workspaces, so it needs one from +`--workspace-id`, `SEAM_CLI_WORKSPACE_ID`, or `seam select workspace`. + +The command that would store an overridden value fails rather than storing +something the environment ignores: `seam login` and `seam logout` while +`SEAM_CLI_TOKEN` is set, `seam select workspace` while +`SEAM_CLI_WORKSPACE_ID` is set, and `seam select endpoint` while +`SEAM_CLI_ENDPOINT` is set. Unset the variable to use those commands. + +```bash +$ SEAM_CLI_TOKEN=$SEAM_API_KEY seam login +Cannot log in while SEAM_CLI_TOKEN is set: it overrides what would be stored. Unset SEAM_CLI_TOKEN to log in. +``` + ### Receiving Webhooks The Seam API implements webhooks using [Svix](https://www.svix.com).