diff --git a/package.json b/package.json index 9977b88..3286362 100644 --- a/package.json +++ b/package.json @@ -37,36 +37,36 @@ "definition": "dist/index.d.ts" }, "dependencies": { - "@anthropic-ai/claude-agent-sdk": "~0.2.19", - "@anthropic-ai/sdk": "^0.71.2", - "@clack/core": "^0.5.0", - "@clack/prompts": "0.11.0", + "@anthropic-ai/claude-agent-sdk": "~0.2.62", + "@anthropic-ai/sdk": "^0.78.0", + "@clack/core": "^1.0.1", + "@clack/prompts": "1.0.1", "@napi-rs/keyring": "^1.2.0", "chalk": "^5.6.2", "diff": "^8.0.3", "fast-glob": "^3.3.3", - "ink": "^6.6.0", + "ink": "^6.8.0", "opn": "^5.4.0", - "react": "^19.2.3", - "semver": "^7.7.3", + "react": "^19.2.4", + "semver": "^7.7.4", "uuid": "^13.0.0", - "xstate": "^5.25.1", + "xstate": "^5.28.0", "yargs": "^18.0.0", - "zod": "^4.3.5" + "zod": "^4.3.6" }, "devDependencies": { "@statelyai/inspect": "^0.4.0", "@types/node": "~22.19.7", "@types/opn": "5.1.0", - "@types/react": "^19.2.9", + "@types/react": "^19.2.14", "@types/semver": "^7.7.1", "@types/yargs": "^17.0.35", "@vitest/coverage-v8": "^4.0.18", "@vitest/ui": "^4.0.18", - "dotenv": "^17.2.3", + "dotenv": "^17.3.1", "oxfmt": "^0.35.0", "oxlint": "^1.50.0", - "p-limit": "^7.2.0", + "p-limit": "^7.3.0", "tsx": "^4.20.3", "typescript": "^5.9.3", "vitest": "^4.0.18" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a16285c..ef656d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,17 +9,17 @@ importers: .: dependencies: '@anthropic-ai/claude-agent-sdk': - specifier: ~0.2.19 - version: 0.2.19(zod@4.3.5) + specifier: ~0.2.62 + version: 0.2.62(zod@4.3.6) '@anthropic-ai/sdk': - specifier: ^0.71.2 - version: 0.71.2(zod@4.3.5) + specifier: ^0.78.0 + version: 0.78.0(zod@4.3.6) '@clack/core': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^1.0.1 + version: 1.0.1 '@clack/prompts': - specifier: 0.11.0 - version: 0.11.0 + specifier: 1.0.1 + version: 1.0.1 '@napi-rs/keyring': specifier: ^1.2.0 version: 1.2.0 @@ -33,33 +33,33 @@ importers: specifier: ^3.3.3 version: 3.3.3 ink: - specifier: ^6.6.0 - version: 6.6.0(@types/react@19.2.9)(react@19.2.3) + specifier: ^6.8.0 + version: 6.8.0(@types/react@19.2.14)(react@19.2.4) opn: specifier: ^5.4.0 version: 5.5.0 react: - specifier: ^19.2.3 - version: 19.2.3 + specifier: ^19.2.4 + version: 19.2.4 semver: - specifier: ^7.7.3 - version: 7.7.3 + specifier: ^7.7.4 + version: 7.7.4 uuid: specifier: ^13.0.0 version: 13.0.0 xstate: - specifier: ^5.25.1 - version: 5.25.1 + specifier: ^5.28.0 + version: 5.28.0 yargs: specifier: ^18.0.0 version: 18.0.0 zod: - specifier: ^4.3.5 - version: 4.3.5 + specifier: ^4.3.6 + version: 4.3.6 devDependencies: '@statelyai/inspect': specifier: ^0.4.0 - version: 0.4.0(ws@8.19.0)(xstate@5.25.1) + version: 0.4.0(ws@8.19.0)(xstate@5.28.0) '@types/node': specifier: ~22.19.7 version: 22.19.7 @@ -67,8 +67,8 @@ importers: specifier: 5.1.0 version: 5.1.0 '@types/react': - specifier: ^19.2.9 - version: 19.2.9 + specifier: ^19.2.14 + version: 19.2.14 '@types/semver': specifier: ^7.7.1 version: 7.7.1 @@ -82,8 +82,8 @@ importers: specifier: ^4.0.18 version: 4.0.18(vitest@4.0.18) dotenv: - specifier: ^17.2.3 - version: 17.2.3 + specifier: ^17.3.1 + version: 17.3.1 oxfmt: specifier: ^0.35.0 version: 0.35.0 @@ -91,8 +91,8 @@ importers: specifier: ^1.50.0 version: 1.50.0 p-limit: - specifier: ^7.2.0 - version: 7.2.0 + specifier: ^7.3.0 + version: 7.3.0 tsx: specifier: ^4.20.3 version: 4.21.0 @@ -240,14 +240,18 @@ packages: resolution: {integrity: sha512-jsElTJ0sQ4wHRz+C45tfect76BwbTbgkgKByOzpCN9xG61N5V6u/glvg1CsNJhq2xJIFpKHSwG3D2wPPuEYOrQ==} engines: {node: '>=18'} + '@alcalzone/ansi-tokenize@0.2.5': + resolution: {integrity: sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==} + engines: {node: '>=18'} + '@anthropic-ai/claude-agent-sdk@0.2.12': resolution: {integrity: sha512-lto5qlffODYa3He4jbSVdXtPCWVWUxEqWFj+8mWp4tSnY6tMsQBXjwalm7Bz8YgBsEbrCZrceYMcKSw0eL7H+A==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^4.0.0 - '@anthropic-ai/claude-agent-sdk@0.2.19': - resolution: {integrity: sha512-DjaX4t3Swjt5PcsZt6krcp5TfBTRxVuUZhkY6L8WWF8kZBJFuuEd5akNg486XRskTXGuwLmitxp0wHB1hJ9muw==} + '@anthropic-ai/claude-agent-sdk@0.2.62': + resolution: {integrity: sha512-exRJ2djKP6erRpUrtnVf5iXzqeS9dAie9d1ghODZVVXdLqieSqCpaAhZhe0hL1yvP33OL0J5CgT9RAyPzhYY9A==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^4.0.0 @@ -255,8 +259,8 @@ packages: '@anthropic-ai/sdk@0.40.1': resolution: {integrity: sha512-DJMWm8lTEM9Lk/MSFL+V+ugF7jKOn0M2Ujvb5fN8r2nY14aHbGPZ1k6sgjL+tpJ3VuOGJNG+4R83jEpOuYPv8w==} - '@anthropic-ai/sdk@0.71.2': - resolution: {integrity: sha512-TGNDEUuEstk/DKu0/TflXAEt+p+p/WhTlFzEnoosvbaDU2LTjm42igSdlL0VijrKpWejtOKxX0b8A7uc+XiSAQ==} + '@anthropic-ai/sdk@0.78.0': + resolution: {integrity: sha512-PzQhR715td/m1UaaN5hHXjYB8Gl2lF9UVhrrGrZeysiF6Rb74Wc9GCB8hzLdzmQtBd1qe89F9OptgB9Za1Ib5w==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -301,9 +305,15 @@ packages: '@clack/core@0.5.0': resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + '@clack/core@1.0.1': + resolution: {integrity: sha512-WKeyK3NOBwDOzagPR5H08rFk9D/WuN705yEbuZvKqlkmoLM2woKtXb10OO2k1NoSU4SFG947i2/SCYh+2u5e4g==} + '@clack/prompts@0.11.0': resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@clack/prompts@1.0.1': + resolution: {integrity: sha512-/42G73JkuYdyWZ6m8d/CJtBrGl1Hegyc7Fy78m5Ob+jF85TOUmLR5XLce/U3LxYAw0kJ8CT5aI99RIvPHcGp/Q==} + '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} @@ -481,52 +491,104 @@ packages: cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.33.5': resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.0.4': resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.0.4': resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.0.4': resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -534,6 +596,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -541,6 +610,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -548,6 +624,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -555,6 +638,13 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -562,12 +652,35 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-x64@0.33.5': resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + '@inquirer/confirm@5.1.13': resolution: {integrity: sha512-EkCtvp67ICIVVzjsquUiVSd+V5HRGOGQfsqA4E4vMWhYnB7InUL0pa0TIWt1i+OfP16Gkds8CdIu6yGZwOM1Yw==} engines: {node: '>=18'} @@ -577,6 +690,15 @@ packages: '@types/node': optional: true + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/core@10.1.14': resolution: {integrity: sha512-Ma+ZpOJPewtIYl6HZHZckeX1STvDnHTCB2GVINNUlSEn2Am6LddWwfPkIGY0IUFVjUUrr/93XlBwTK6mfLjf0A==} engines: {node: '>=18'} @@ -586,10 +708,32 @@ packages: '@types/node': optional: true + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/figures@1.0.12': resolution: {integrity: sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==} engines: {node: '>=18'} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.7': resolution: {integrity: sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==} engines: {node: '>=18'} @@ -616,6 +760,10 @@ packages: resolution: {integrity: sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==} engines: {node: '>=18'} + '@mswjs/interceptors@0.39.8': + resolution: {integrity: sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==} + engines: {node: '>=18'} + '@napi-rs/keyring-darwin-arm64@1.2.0': resolution: {integrity: sha512-CA83rDeyONDADO25JLZsh3eHY8yTEtm/RS6ecPsY+1v+dSawzT9GywBMu2r6uOp1IEhQs/xAfxgybGAFr17lSA==} engines: {node: '>= 10'} @@ -1336,6 +1484,9 @@ packages: '@types/opn@5.1.0': resolution: {integrity: sha512-TNPrB7Y1xl06zDI0aGyqkgxjhIev3oJ+cdqlZ52MTAHauWpEL/gIUdHebIfRHFZk9IqSBpE2ci1DT48iZH81yg==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/react@19.2.9': resolution: {integrity: sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==} @@ -1457,6 +1608,10 @@ packages: resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1465,6 +1620,10 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1473,6 +1632,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -1581,6 +1744,10 @@ packages: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1701,6 +1868,10 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1724,6 +1895,10 @@ packages: resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + graphql@16.13.0: + resolution: {integrity: sha512-uSisMYERbaB9bkA9M4/4dnqyktaEkf1kMHNKq/7DHyxVeWqHQ2mBmVqm5u6/FVHwF3iCNalKcg82Zfl+tffWoA==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1773,6 +1948,19 @@ packages: react-devtools-core: optional: true + ink@6.8.0: + resolution: {integrity: sha512-sbl1RdLOgkO9isK42WCZlJCFN9hb++sX9dsklOvfd1YQ3bQ2AiFu12Q6tFlr0HvEUvzraJntQCCpfEoUe9DSzA==} + engines: {node: '>=20'} + peerDependencies: + '@types/react': '>=19.0.0' + react: '>=19.0.0' + react-devtools-core: '>=6.1.2' + peerDependenciesMeta: + '@types/react': + optional: true + react-devtools-core: + optional: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1785,6 +1973,10 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1948,8 +2140,8 @@ packages: oxlint-tsgolint: optional: true - p-limit@7.2.0: - resolution: {integrity: sha512-ATHLtwoTNDloHRFFxFJdHnG6n2WUeFjaR8XQMFdKIv0xkXjrER8/iG9iu265jOM95zXHAfv9oTkqhrfbIzosrQ==} + p-limit@7.3.0: + resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} engines: {node: '>=20'} partysocket@0.0.25: @@ -2016,6 +2208,10 @@ packages: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2058,6 +2254,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2079,6 +2280,14 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2112,6 +2321,10 @@ packages: resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} engines: {node: '>=20'} + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2120,6 +2333,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + superjson@1.13.3: resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==} engines: {node: '>=10'} @@ -2128,6 +2345,14 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + terminal-size@4.0.1: + resolution: {integrity: sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ==} + engines: {node: '>=18'} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -2178,6 +2403,10 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.4.4: + resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} + engines: {node: '>=20'} + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -2334,6 +2563,10 @@ packages: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} + widest-line@6.0.0: + resolution: {integrity: sha512-U89AsyEeAsyoF0zVJBkG9zBgekjgjK7yk9sje3F4IQpXBJ10TF6ByLlIfjMhcmHMJgHZI4KHt4rdNfktzxIAMA==} + engines: {node: '>=20'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -2361,6 +2594,9 @@ packages: xstate@5.25.1: resolution: {integrity: sha512-oyvsNH5pF2qkHmiHEMdWqc3OjDtoZOH2MTAI35r01f/ZQWOD+VLOiYqo65UgQET0XMA5s9eRm8fnsIo+82biEw==} + xstate@5.28.0: + resolution: {integrity: sha512-Iaqq6ZrUzqeUtA3hC5LQKZfR8ZLzEFTImMHJM3jWEdVvXWdKvvVLXZEiNQWm3SCA9ZbEou/n5rcsna1wb9t28A==} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -2394,12 +2630,19 @@ packages: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + yoga-layout@3.2.1: resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} zod@4.3.5: resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + snapshots: '@alcalzone/ansi-tokenize@0.2.3': @@ -2407,6 +2650,11 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + '@alcalzone/ansi-tokenize@0.2.5': + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.1.0 + '@anthropic-ai/claude-agent-sdk@0.2.12(zod@4.3.5)': dependencies: zod: 4.3.5 @@ -2420,18 +2668,19 @@ snapshots: '@img/sharp-linuxmusl-x64': 0.33.5 '@img/sharp-win32-x64': 0.33.5 - '@anthropic-ai/claude-agent-sdk@0.2.19(zod@4.3.5)': + '@anthropic-ai/claude-agent-sdk@0.2.62(zod@4.3.6)': dependencies: - zod: 4.3.5 + zod: 4.3.6 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 '@anthropic-ai/sdk@0.40.1': dependencies: @@ -2445,11 +2694,11 @@ snapshots: transitivePeerDependencies: - encoding - '@anthropic-ai/sdk@0.71.2(zod@4.3.5)': + '@anthropic-ai/sdk@0.78.0(zod@4.3.6)': dependencies: json-schema-to-ts: 3.1.1 optionalDependencies: - zod: 4.3.5 + zod: 4.3.6 '@babel/helper-string-parser@7.27.1': {} @@ -2489,12 +2738,23 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 + '@clack/core@1.0.1': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@clack/prompts@0.11.0': dependencies: '@clack/core': 0.5.0 picocolors: 1.1.1 sisteransi: 1.0.5 + '@clack/prompts@1.0.1': + dependencies: + '@clack/core': 1.0.1 + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@esbuild/aix-ppc64@0.27.2': optional: true @@ -2594,60 +2854,125 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + '@img/sharp-libvips-linux-arm@1.0.5': optional: true + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + '@img/sharp-libvips-linux-x64@1.0.4': optional: true + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + '@img/sharp-linux-arm@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + '@img/sharp-linux-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + '@img/sharp-win32-x64@0.33.5': optional: true + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@inquirer/ansi@1.0.2': + optional: true + '@inquirer/confirm@5.1.13(@types/node@22.0.3)': dependencies: '@inquirer/core': 10.1.14(@types/node@22.0.3) @@ -2656,10 +2981,10 @@ snapshots: '@types/node': 22.0.3 optional: true - '@inquirer/confirm@5.1.13(@types/node@22.19.7)': + '@inquirer/confirm@5.1.21(@types/node@22.19.7)': dependencies: - '@inquirer/core': 10.1.14(@types/node@22.19.7) - '@inquirer/type': 3.0.7(@types/node@22.19.7) + '@inquirer/core': 10.3.2(@types/node@22.19.7) + '@inquirer/type': 3.0.10(@types/node@22.19.7) optionalDependencies: '@types/node': 22.19.7 optional: true @@ -2678,16 +3003,16 @@ snapshots: '@types/node': 22.0.3 optional: true - '@inquirer/core@10.1.14(@types/node@22.19.7)': + '@inquirer/core@10.3.2(@types/node@22.19.7)': dependencies: - '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.19.7) - ansi-escapes: 4.3.2 + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.19.7) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 22.19.7 optional: true @@ -2695,16 +3020,19 @@ snapshots: '@inquirer/figures@1.0.12': optional: true - '@inquirer/type@3.0.7(@types/node@22.0.3)': - optionalDependencies: - '@types/node': 22.0.3 + '@inquirer/figures@1.0.15': optional: true - '@inquirer/type@3.0.7(@types/node@22.19.7)': + '@inquirer/type@3.0.10(@types/node@22.19.7)': optionalDependencies: '@types/node': 22.19.7 optional: true + '@inquirer/type@3.0.7(@types/node@22.0.3)': + optionalDependencies: + '@types/node': 22.0.3 + optional: true + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -2726,6 +3054,16 @@ snapshots: strict-event-emitter: 0.5.1 optional: true + '@mswjs/interceptors@0.39.8': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + optional: true + '@napi-rs/keyring-darwin-arm64@1.2.0': optional: true @@ -3264,6 +3602,18 @@ snapshots: transitivePeerDependencies: - ws + '@statelyai/inspect@0.4.0(ws@8.19.0)(xstate@5.28.0)': + dependencies: + fast-safe-stringify: 2.1.1 + isomorphic-ws: 5.0.0(ws@8.19.0) + partysocket: 0.0.25 + safe-stable-stringify: 2.5.0 + superjson: 1.13.3 + uuid: 9.0.1 + xstate: 5.28.0 + transitivePeerDependencies: + - ws + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -3297,6 +3647,10 @@ snapshots: dependencies: '@types/node': 22.19.7 + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + '@types/react@19.2.9': dependencies: csstype: 3.2.3 @@ -3463,16 +3817,24 @@ snapshots: dependencies: environment: 1.1.0 + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} + assertion-error@2.0.1: {} ast-v8-to-istanbul@0.3.10: @@ -3508,8 +3870,8 @@ snapshots: cli-truncate@5.1.1: dependencies: - slice-ansi: 7.1.0 - string-width: 8.1.0 + slice-ansi: 7.1.2 + string-width: 8.2.0 cli-width@4.1.0: optional: true @@ -3561,6 +3923,8 @@ snapshots: dotenv@17.2.3: {} + dotenv@17.3.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -3685,6 +4049,8 @@ snapshots: get-east-asian-width@1.3.0: {} + get-east-asian-width@1.5.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -3716,6 +4082,9 @@ snapshots: graphql@16.11.0: optional: true + graphql@16.13.0: + optional: true + has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -3780,6 +4149,40 @@ snapshots: - bufferutil - utf-8-validate + ink@6.8.0(@types/react@19.2.14)(react@19.2.4): + dependencies: + '@alcalzone/ansi-tokenize': 0.2.5 + ansi-escapes: 7.3.0 + ansi-styles: 6.2.1 + auto-bind: 5.0.1 + chalk: 5.6.2 + cli-boxes: 3.0.0 + cli-cursor: 4.0.0 + cli-truncate: 5.1.1 + code-excerpt: 4.0.0 + es-toolkit: 1.44.0 + indent-string: 5.0.0 + is-in-ci: 2.0.0 + patch-console: 2.0.0 + react: 19.2.4 + react-reconciler: 0.33.0(react@19.2.4) + scheduler: 0.27.0 + signal-exit: 3.0.7 + slice-ansi: 8.0.0 + stack-utils: 2.0.6 + string-width: 8.2.0 + terminal-size: 4.0.1 + type-fest: 5.4.4 + widest-line: 6.0.0 + wrap-ansi: 9.0.0 + ws: 8.19.0 + yoga-layout: 3.2.1 + optionalDependencies: + '@types/react': 19.2.14 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -3788,6 +4191,10 @@ snapshots: dependencies: get-east-asian-width: 1.3.0 + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.5.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -3845,7 +4252,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 math-intrinsics@1.1.0: {} @@ -3901,13 +4308,13 @@ snapshots: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.13(@types/node@22.19.7) - '@mswjs/interceptors': 0.39.2 + '@inquirer/confirm': 5.1.21(@types/node@22.19.7) + '@mswjs/interceptors': 0.39.8 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.6 - graphql: 16.11.0 + graphql: 16.13.0 headers-polyfill: 4.0.3 is-node-process: 1.2.0 outvariant: 1.4.3 @@ -3992,7 +4399,7 @@ snapshots: '@oxlint/binding-win32-ia32-msvc': 1.50.0 '@oxlint/binding-win32-x64-msvc': 1.50.0 - p-limit@7.2.0: + p-limit@7.3.0: dependencies: yocto-queue: 1.2.2 @@ -4069,8 +4476,15 @@ snapshots: react: 19.2.3 scheduler: 0.27.0 + react-reconciler@0.33.0(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + react@19.2.3: {} + react@19.2.4: {} + require-directory@2.1.1: {} require-in-the-middle@8.0.1: @@ -4133,6 +4547,8 @@ snapshots: semver@7.7.3: {} + semver@7.7.4: {} + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -4153,6 +4569,16 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + source-map-js@1.2.1: {} stack-utils@2.0.6: @@ -4186,6 +4612,11 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 + string-width@8.2.0: + dependencies: + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -4194,6 +4625,10 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + superjson@1.13.3: dependencies: copy-anything: 3.0.5 @@ -4202,6 +4637,10 @@ snapshots: dependencies: has-flag: 4.0.0 + tagged-tag@1.0.0: {} + + terminal-size@4.0.1: {} + tinybench@2.9.0: {} tinyexec@1.0.2: {} @@ -4245,6 +4684,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.4.4: + dependencies: + tagged-tag: 1.0.0 + typescript@5.9.3: {} undici-types@5.26.5: {} @@ -4429,6 +4872,10 @@ snapshots: dependencies: string-width: 7.2.0 + widest-line@6.0.0: + dependencies: + string-width: 8.2.0 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -4452,6 +4899,8 @@ snapshots: xstate@5.25.1: {} + xstate@5.28.0: {} + y18n@5.0.8: {} yaml@2.7.1: {} @@ -4484,6 +4933,11 @@ snapshots: yoctocolors-cjs@2.1.2: optional: true + yoctocolors-cjs@2.1.3: + optional: true + yoga-layout@3.2.1: {} zod@4.3.5: {} + + zod@4.3.6: {} diff --git a/src/commands/env.ts b/src/commands/env.ts index 9124d25..85e6d68 100644 --- a/src/commands/env.ts +++ b/src/commands/env.ts @@ -5,8 +5,8 @@ import type { CliConfig } from '../lib/config-store.js'; const ENV_NAME_REGEX = /^[a-z0-9\-_]+$/; -function validateEnvName(name: string): string | undefined { - if (!ENV_NAME_REGEX.test(name)) { +function validateEnvName(name: string | undefined): string | undefined { + if (!name || !ENV_NAME_REGEX.test(name)) { return 'Name must contain only lowercase letters, numbers, hyphens, and underscores'; } return undefined; diff --git a/src/lib/agent-interface.ts b/src/lib/agent-interface.ts index 640b81b..649f53d 100644 --- a/src/lib/agent-interface.ts +++ b/src/lib/agent-interface.ts @@ -17,6 +17,13 @@ import { ensureValidToken } from './token-refresh.js'; import type { InstallerEventEmitter } from './events.js'; import { startCredentialProxy, type CredentialProxyHandle } from './credential-proxy.js'; import { getAuthkitDomain, getCliAuthClientId } from './settings.js'; +import type { + SDKMessage, + SDKUserMessage, + Options as AgentSDKOptions, + PermissionResult, + query as queryFn, +} from '@anthropic-ai/claude-agent-sdk'; // File content cache for computing edit diffs const fileContentCache = new Map(); @@ -29,19 +36,14 @@ const pendingToolCalls = new Map { +let _sdkModule: { query: typeof queryFn } | null = null; +async function getSDKModule(): Promise<{ query: typeof queryFn }> { if (!_sdkModule) { _sdkModule = await import('@anthropic-ai/claude-agent-sdk'); } return _sdkModule; } -// Using `any` because typed imports from ESM modules require import attributes -// syntax which prettier cannot parse. See PR discussion for details. -type SDKMessage = any; -type McpServersConfig = any; - export const AgentSignals = { /** Signal emitted when the agent reports progress to the user */ STATUS: '[STATUS]', @@ -85,7 +87,7 @@ export interface RetryConfig { */ export type AgentRunConfig = { workingDirectory: string; - mcpServers: McpServersConfig; + mcpServers: AgentSDKOptions['mcpServers']; model: string; allowedTools: string[]; sdkEnv: Record; @@ -223,10 +225,7 @@ function matchesAllowedPrefix(command: string): boolean { * - Piping to tail/head for output limiting is allowed * - Stderr redirection (2>&1) is allowed */ -export function installerCanUseTool( - toolName: string, - input: Record, -): { behavior: 'allow'; updatedInput: Record } | { behavior: 'deny'; message: string } { +export function installerCanUseTool(toolName: string, input: Record): PermissionResult { // Allow all non-Bash tools if (toolName !== 'Bash') { return { behavior: 'allow', updatedInput: input }; @@ -530,11 +529,11 @@ export async function runAgent( } resetTurnSignal(); - const createPromptStream = async function* () { + const createPromptStream = async function* (): AsyncGenerator { yield { - type: 'user', + type: 'user' as const, session_id: '', - message: { role: 'user', content: prompt }, + message: { role: 'user' as const, content: prompt }, parent_tool_use_id: null, }; @@ -592,9 +591,9 @@ export async function runAgent( permissionMode: 'acceptEdits', mcpServers: agentConfig.mcpServers, env: agentConfig.sdkEnv, - canUseTool: (toolName: string, input: unknown) => { + canUseTool: (toolName, input) => { logInfo('canUseTool called:', { toolName, input }); - const result = installerCanUseTool(toolName, input as Record); + const result = installerCanUseTool(toolName, input); logInfo('canUseTool result:', result); return Promise.resolve(result); }, @@ -825,21 +824,6 @@ function handleSDKMessage( break; } - case 'tool': { - // This case may not be used by the current SDK, keeping for compatibility - const toolName = message.tool as string; - const input = message.input as Record | undefined; - - if (toolName === 'Read' && message.content) { - const filePath = input?.file_path as string; - if (filePath && typeof message.content === 'string') { - fileContentCache.set(filePath, message.content); - } - } - - break; - } - case 'result': { if (message.subtype === 'success') { logInfo('Agent completed successfully'); diff --git a/src/utils/clack-utils.ts b/src/utils/clack-utils.ts index 1ab3091..ed25652 100644 --- a/src/utils/clack-utils.ts +++ b/src/utils/clack-utils.ts @@ -563,7 +563,7 @@ export async function getOrAskForWorkOSCredentials( apiKey = (await abortIfCancelled( clack.password({ message: 'Enter your WorkOS API Key', - validate: (value: string) => { + validate: (value) => { if (!value) return 'API Key is required'; if (!value.startsWith('sk_')) { return 'API Key should start with sk_'; @@ -581,7 +581,7 @@ export async function getOrAskForWorkOSCredentials( clack.text({ message: 'Enter your WorkOS Client ID', placeholder: 'client_...', - validate: (value: string) => { + validate: (value) => { if (!value) return 'Client ID is required'; if (!value.startsWith('client_')) { return 'Client ID should start with client_'; diff --git a/tests/evals/agent-executor.ts b/tests/evals/agent-executor.ts index 46c2a72..9af2451 100644 --- a/tests/evals/agent-executor.ts +++ b/tests/evals/agent-executor.ts @@ -9,6 +9,7 @@ import { quickCheckValidateAndFormat } from '../../src/lib/validation/quick-chec import { runAgent, type AgentRunConfig, type RetryConfig } from '../../src/lib/agent-interface.js'; import type { InstallerOptions } from '../../src/utils/types.js'; import type { ToolCall, LatencyMetrics } from './types.js'; +import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk'; export interface AgentResult { success: boolean; @@ -147,7 +148,10 @@ export class AgentExecutor { }; const prodRetryConfig: RetryConfig | undefined = config.enabled - ? { maxRetries: config.maxRetries, validateAndFormat: quickCheckValidateAndFormat } + ? { + maxRetries: config.maxRetries, + validateAndFormat: quickCheckValidateAndFormat, + } : undefined; try { @@ -164,10 +168,20 @@ export class AgentExecutor { const latencyMetrics = this.latencyTracker.finish(); const correctionAttempts = result.retryCount ?? 0; - const base = { output: collectedOutput.join('\n'), toolCalls, latencyMetrics, correctionAttempts }; + const base = { + output: collectedOutput.join('\n'), + toolCalls, + latencyMetrics, + correctionAttempts, + }; if (result.error) { - return { ...base, success: false, error: result.errorMessage ?? String(result.error), selfCorrected: false }; + return { + ...base, + success: false, + error: result.errorMessage ?? String(result.error), + selfCorrected: false, + }; } return { ...base, success: true, selfCorrected: correctionAttempts > 0 }; @@ -202,11 +216,7 @@ Use the \`${skillName}\` skill to integrate WorkOS AuthKit into this application Begin by invoking the ${skillName} skill.`; } - /** - * Observe SDK messages for latency tracking and output collection. - * This is called via the onMessage hook — production handleSDKMessage runs first. - */ - private trackMessage(message: any, toolCalls: ToolCall[], collectedOutput: string[], label: string): void { + private trackMessage(message: SDKMessage, toolCalls: ToolCall[], collectedOutput: string[], label: string): void { if (message.type === 'assistant') { this.latencyTracker.endToolCall();