diff --git a/CHANGELOG.md b/CHANGELOG.md index 38dfb57db..897bb18f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Docs: https://docs.clawd.bot ### Changes - Deps: update workspace + memory-lancedb dependencies. +- Dev: use tsgo for dev/watch builds by default; set `CLAWDBOT_TS_COMPILER=tsc` to opt out. - Repo: remove the Peekaboo git submodule now that the SPM release is used. - Update: sync plugin sources on channel switches and update npm-installed plugins during `clawdbot update`. - Plugins: share npm plugin update logic between `clawdbot update` and `clawdbot plugins update`. diff --git a/package.json b/package.json index b0539a474..f21bef51f 100644 --- a/package.json +++ b/package.json @@ -210,6 +210,7 @@ "@types/proper-lockfile": "^4.1.4", "@types/qrcode-terminal": "^0.12.2", "@types/ws": "^8.18.1", + "@typescript/native-preview": "7.0.0-dev.20260120.1", "@vitest/coverage-v8": "^4.0.17", "docx-preview": "^0.3.7", "lit": "^3.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 893c14dc3..0e0d3ab29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -202,6 +202,9 @@ importers: '@types/ws': specifier: ^8.18.1 version: 8.18.1 + '@typescript/native-preview': + specifier: 7.0.0-dev.20260120.1 + version: 7.0.0-dev.20260120.1 '@vitest/coverage-v8': specifier: ^4.0.17 version: 4.0.17(@vitest/browser@4.0.17(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.17))(vitest@4.0.17) @@ -2530,6 +2533,45 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-r3pWFuR2H7mn6ScwpH5jJljKQqKto0npVuJSk6pRwFwexpTyxOGmJTZJ1V0AWiisaNxU2+CNAqWFJSJYIE/QTg==} + cpu: [arm64] + os: [darwin] + + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-cuC1+wLbUP+Ip2UT94G134fqRdp5w3b3dhcCO6/FQ4yXxvRNyv/WK+upHBUFDaeSOeHgDTyO9/QFYUWwC4If1A==} + cpu: [x64] + os: [darwin] + + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-zZGvEGY7wcHYefMZ87KNmvjN3NLIhsCMHEpHZiGCS3khKf+8z6ZsanrzCjOTodvL01VPyBzHxV1EtkSxAcLiQg==} + cpu: [arm64] + os: [linux] + + '@typescript/native-preview-linux-arm@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-vN6OYVySol/kQZjJGmAzd6L30SyVlCgmCXS8WjUYtE5clN0YrzQHop16RK29fYZHMxpkOniVBtRPxUYQANZBlQ==} + cpu: [arm] + os: [linux] + + '@typescript/native-preview-linux-x64@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-JBfNhWd/asd5MDeS3VgRvE24pGKBkmvLub6tsux6ypr+Yhy+o0WaAEzVpmlRYZUqss2ai5tvOu4dzPBXzZAtFw==} + cpu: [x64] + os: [linux] + + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-tTndRtYCq2xwgE0VkTi9ACNiJaV43+PqvBqCxk8ceYi3X36Ve+CCnwlZfZJ4k9NxZthtrAwF/kUmpC9iIYbq1w==} + cpu: [arm64] + os: [win32] + + '@typescript/native-preview-win32-x64@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-oZia7hFL6k9pVepfonuPI86Jmyz6WlJKR57tWCDwRNmpA7odxuTq1PbvcYgy1z4+wHF1nnKKJY0PMAiq6ac18w==} + cpu: [x64] + os: [win32] + + '@typescript/native-preview@7.0.0-dev.20260120.1': + resolution: {integrity: sha512-nnEf37C9ue7OBRnF2zmV/OCBmV5Y7T/K4mCHa+nxgiXcF/1w8sA0cgdFl+gHQ0mysqUJ+Bu5btAMeWgpLyjrgg==} + hasBin: true + '@typespec/ts-http-runtime@0.3.2': resolution: {integrity: sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==} engines: {node: '>=20.0.0'} @@ -7699,6 +7741,37 @@ snapshots: dependencies: '@types/node': 25.0.9 + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview-linux-arm@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview-linux-x64@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview-win32-x64@7.0.0-dev.20260120.1': + optional: true + + '@typescript/native-preview@7.0.0-dev.20260120.1': + optionalDependencies: + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260120.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260120.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20260120.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260120.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20260120.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260120.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20260120.1 + '@typespec/ts-http-runtime@0.3.2': dependencies: http-proxy-agent: 7.0.2 diff --git a/scripts/run-node.mjs b/scripts/run-node.mjs index 0bcd2b74f..33492d5ee 100644 --- a/scripts/run-node.mjs +++ b/scripts/run-node.mjs @@ -7,6 +7,8 @@ import process from "node:process"; const args = process.argv.slice(2); const env = { ...process.env }; const cwd = process.cwd(); +const compiler = env.CLAWDBOT_TS_COMPILER === "tsc" ? "tsc" : "tsgo"; +const projectArgs = ["--project", "tsconfig.json"]; const distRoot = path.join(cwd, "dist"); const distEntry = path.join(distRoot, "entry.js"); @@ -113,7 +115,7 @@ if (!shouldBuild()) { runNode(); } else { logRunner("Building TypeScript (dist is stale)."); - const build = spawn("pnpm", ["exec", "tsc", "-p", "tsconfig.json"], { + const build = spawn("pnpm", ["exec", compiler, ...projectArgs], { cwd, env, stdio: "inherit", diff --git a/scripts/watch-node.mjs b/scripts/watch-node.mjs index c91a389af..7ed210853 100644 --- a/scripts/watch-node.mjs +++ b/scripts/watch-node.mjs @@ -5,8 +5,10 @@ import process from "node:process"; const args = process.argv.slice(2); const env = { ...process.env }; const cwd = process.cwd(); +const compiler = env.CLAWDBOT_TS_COMPILER === "tsc" ? "tsc" : "tsgo"; +const projectArgs = ["--project", "tsconfig.json"]; -const initialBuild = spawnSync("pnpm", ["exec", "tsc", "-p", "tsconfig.json"], { +const initialBuild = spawnSync("pnpm", ["exec", compiler, ...projectArgs], { cwd, env, stdio: "inherit", @@ -16,7 +18,12 @@ if (initialBuild.status !== 0) { process.exit(initialBuild.status ?? 1); } -const tsc = spawn("pnpm", ["exec", "tsc", "--watch", "--preserveWatchOutput"], { +const watchArgs = + compiler === "tsc" + ? [...projectArgs, "--watch", "--preserveWatchOutput"] + : [...projectArgs, "--watch"]; + +const compilerProcess = spawn("pnpm", ["exec", compiler, ...watchArgs], { cwd, env, stdio: "inherit", @@ -34,14 +41,14 @@ function cleanup(code = 0) { if (exiting) return; exiting = true; nodeProcess.kill("SIGTERM"); - tsc.kill("SIGTERM"); + compilerProcess.kill("SIGTERM"); process.exit(code); } process.on("SIGINT", () => cleanup(130)); process.on("SIGTERM", () => cleanup(143)); -tsc.on("exit", (code) => { +compilerProcess.on("exit", (code) => { if (exiting) return; cleanup(code ?? 1); });