From d78e5716763af85cac66af6010e76725e3d6f1a3 Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 19:21:50 -0400 Subject: [PATCH 01/11] forgotten commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6595bce2..415be5d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "occode", - "version": "0.2.6", + "version": "3.2.37", "private": true, "description": "OCcode — branded cross-platform IDE wrapper with OpenClaw extension", "workspaces": [ From b8ee4c04f628c250bfbf6d3b12d7ceaf24771a31 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 31 Mar 2026 00:41:48 +0000 Subject: [PATCH 02/11] =?UTF-8?q?ci:=20consolidate=20macOS=20build=20jobs?= =?UTF-8?q?=20into=20a=20matrix=20across=20runners=2014=E2=80=9326?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merges separate build-macos and build-macos-x64 jobs into a single matrix job. Drops retired macos-13 (EOL Dec 2025); adds macos-26 / macos-26-intel (GA Feb 2026). Uses macos-15-intel for x64 builds. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/build-macos.yml | 191 ++++++++---------------------- 1 file changed, 52 insertions(+), 139 deletions(-) diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 6f5ece76..06ca91dd 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -10,7 +10,44 @@ on: jobs: build-macos: - runs-on: macos-latest + # Available runners as of March 2026: + # Retired: macos-11 (2024), macos-12 (Jan 2025), macos-13 (Dec 2025) + # Active: macos-14 (arm64), macos-15 (arm64), macos-26 (arm64, GA Feb 2026) + # macos-15-intel / macos-26-intel for x64 (replaces retired macos-13) + # macos-14 deprecation begins July 2026 — remove that entry then. + strategy: + fail-fast: false + matrix: + include: + # x64 (Intel) builds — macos-13 retired; use -intel variants + - runner: macos-15-intel + arch: x64 + make_target: build-macos-x64 + vscode_arch: x64 + output_dir: VSCode-darwin-x64 + - runner: macos-26-intel + arch: x64 + make_target: build-macos-x64 + vscode_arch: x64 + output_dir: VSCode-darwin-x64 + # arm64 (Apple Silicon) builds + - runner: macos-14 + arch: arm64 + make_target: build-macos-arm64 + vscode_arch: arm64 + output_dir: VSCode-darwin-arm64 + - runner: macos-15 + arch: arm64 + make_target: build-macos-arm64 + vscode_arch: arm64 + output_dir: VSCode-darwin-arm64 + - runner: macos-26 + arch: arm64 + make_target: build-macos-arm64 + vscode_arch: arm64 + output_dir: VSCode-darwin-arm64 + + runs-on: ${{ matrix.runner }} timeout-minutes: 120 permissions: contents: write @@ -43,8 +80,8 @@ jobs: console.log('Stamped version =>', tag, 'commit =>', sha); " - - name: Build macOS (arm64) - run: make build-macos-arm64 + - name: Build macOS (${{ matrix.arch }}) + run: make ${{ matrix.make_target }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 @@ -70,18 +107,16 @@ jobs: - name: Sign app env: CODESIGN_IDENTITY: "Developer ID Application: HITL, Inc (SQZ9VHYXJ3)" - # gulp outputs to path.dirname(root) = $GITHUB_WORKSPACE/apps/VSCode-darwin-arm64 AGENT_BUILDDIRECTORY: ${{ github.workspace }}/apps AGENT_TEMPDIRECTORY: ${{ runner.temp }} - VSCODE_ARCH: arm64 + VSCODE_ARCH: ${{ matrix.vscode_arch }} working-directory: apps/editor run: node build/darwin/sign.js "$GITHUB_WORKSPACE/apps" - name: Zip signed app run: | - APP_DIR="$GITHUB_WORKSPACE/apps/VSCode-darwin-arm64" - cd "$APP_DIR" - zip -Xry "$RUNNER_TEMP/OCcode-darwin-arm64-${GITHUB_REF_NAME}.zip" "OCcode.app" + cd "$GITHUB_WORKSPACE/apps/${{ matrix.output_dir }}" + zip -Xry "$RUNNER_TEMP/OCcode-${{ matrix.output_dir }}-${GITHUB_REF_NAME}.zip" "OCcode.app" - name: Notarize env: @@ -91,11 +126,10 @@ jobs: APPLE_API_KEY_ISSUER: ${{ secrets.APPLE_API_KEY_ISSUER }} APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }} run: | - # Write the .p8 key file mkdir -p ~/.appstoreconnect/private_keys echo "$APPLE_API_KEY_P8" > ~/.appstoreconnect/private_keys/AuthKey_${APPLE_API_KEY_ID}.p8 - xcrun notarytool submit "$RUNNER_TEMP/OCcode-darwin-arm64-${GITHUB_REF_NAME}.zip" \ + xcrun notarytool submit "$RUNNER_TEMP/OCcode-${{ matrix.output_dir }}-${GITHUB_REF_NAME}.zip" \ --key ~/.appstoreconnect/private_keys/AuthKey_${APPLE_API_KEY_ID}.p8 \ --key-id "$APPLE_API_KEY_ID" \ --issuer "$APPLE_API_KEY_ISSUER" \ @@ -104,152 +138,31 @@ jobs: - name: Staple notarization ticket run: | - xcrun stapler staple "$GITHUB_WORKSPACE/apps/VSCode-darwin-arm64/OCcode.app" + xcrun stapler staple "$GITHUB_WORKSPACE/apps/${{ matrix.output_dir }}/OCcode.app" - name: Re-zip stapled app run: | - cd "$GITHUB_WORKSPACE/apps/VSCode-darwin-arm64" - zip -Xry "$RUNNER_TEMP/OCcode-darwin-arm64-${GITHUB_REF_NAME}-signed.zip" "OCcode.app" + cd "$GITHUB_WORKSPACE/apps/${{ matrix.output_dir }}" + zip -Xry "$RUNNER_TEMP/OCcode-${{ matrix.output_dir }}-${GITHUB_REF_NAME}-signed.zip" "OCcode.app" - name: Verify signature run: | - codesign -dv --deep --verbose=4 "$GITHUB_WORKSPACE/apps/VSCode-darwin-arm64/OCcode.app" 2>&1 - spctl -a -vvv -t install "$GITHUB_WORKSPACE/apps/VSCode-darwin-arm64/OCcode.app" 2>&1 + codesign -dv --deep --verbose=4 "$GITHUB_WORKSPACE/apps/${{ matrix.output_dir }}/OCcode.app" 2>&1 + spctl -a -vvv -t install "$GITHUB_WORKSPACE/apps/${{ matrix.output_dir }}/OCcode.app" 2>&1 - name: Upload signed app artifact uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 continue-on-error: true with: - name: OCcode-darwin-arm64-${{ github.ref_name }}-signed - path: ${{ runner.temp }}/OCcode-darwin-arm64-${{ github.ref_name }}-signed.zip + name: OCcode-${{ matrix.output_dir }}-${{ matrix.runner }}-${{ github.ref_name }}-signed + path: ${{ runner.temp }}/OCcode-${{ matrix.output_dir }}-${{ github.ref_name }}-signed.zip retention-days: 30 - name: Create GitHub Release (on tag) if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b with: - files: ${{ runner.temp }}/OCcode-darwin-arm64-${{ github.ref_name }}-signed.zip - name: OCcode ${{ github.ref_name }} - draft: false - prerelease: false - - build-macos-x64: - runs-on: macos-13 # last Intel-based GitHub Actions runner - timeout-minutes: 120 - permissions: - contents: write - - steps: - - name: Checkout - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 - with: - submodules: recursive - - - name: Setup Node.js - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 - with: - node-version: '20.18.2' - - - name: Stamp release version in product.json - if: startsWith(github.ref, 'refs/tags/') - working-directory: apps/editor - run: | - node -e " - const fs = require('fs'); - const p = JSON.parse(fs.readFileSync('product.json', 'utf8')); - const tag = process.env.GITHUB_REF_NAME; - const sha = process.env.GITHUB_SHA ? process.env.GITHUB_SHA.slice(0, 7) : tag; - p.occRelease = tag; - p.voidVersion = tag; - p.commit = sha; - p.date = new Date().toISOString(); - fs.writeFileSync('product.json', JSON.stringify(p, null, '\t')); - console.log('Stamped version =>', tag, 'commit =>', sha); - " - - - name: Build macOS (x64) - run: make build-macos-x64 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_OPTIONS: --max-old-space-size=7168 - - - name: Import certificate to keychain - env: - P12_BASE64: ${{ secrets.APPLE_CERTIFICATE_P12_BASE64 }} - P12_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - run: | - KEYCHAIN_PATH=$RUNNER_TEMP/buildagent.keychain - CERT_PATH=$RUNNER_TEMP/developer-id.p12 - - echo "$P12_BASE64" | base64 --decode -o "$CERT_PATH" - - security create-keychain -p "keychain-password" "$KEYCHAIN_PATH" - security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH" - security unlock-keychain -p "keychain-password" "$KEYCHAIN_PATH" - security import "$CERT_PATH" -k "$KEYCHAIN_PATH" -P "$P12_PASSWORD" -T /usr/bin/codesign - security list-keychain -d user -s "$KEYCHAIN_PATH" - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "keychain-password" "$KEYCHAIN_PATH" - - - name: Sign app - env: - CODESIGN_IDENTITY: "Developer ID Application: HITL, Inc (SQZ9VHYXJ3)" - AGENT_BUILDDIRECTORY: ${{ github.workspace }}/apps - AGENT_TEMPDIRECTORY: ${{ runner.temp }} - VSCODE_ARCH: x64 - working-directory: apps/editor - run: node build/darwin/sign.js "$GITHUB_WORKSPACE/apps" - - - name: Zip signed app - run: | - APP_DIR="$GITHUB_WORKSPACE/apps/VSCode-darwin-x64" - cd "$APP_DIR" - zip -Xry "$RUNNER_TEMP/OCcode-darwin-x64-${GITHUB_REF_NAME}.zip" "OCcode.app" - - - name: Notarize - env: - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} - APPLE_API_KEY_ISSUER: ${{ secrets.APPLE_API_KEY_ISSUER }} - APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }} - run: | - mkdir -p ~/.appstoreconnect/private_keys - echo "$APPLE_API_KEY_P8" > ~/.appstoreconnect/private_keys/AuthKey_${APPLE_API_KEY_ID}.p8 - - xcrun notarytool submit "$RUNNER_TEMP/OCcode-darwin-x64-${GITHUB_REF_NAME}.zip" \ - --key ~/.appstoreconnect/private_keys/AuthKey_${APPLE_API_KEY_ID}.p8 \ - --key-id "$APPLE_API_KEY_ID" \ - --issuer "$APPLE_API_KEY_ISSUER" \ - --wait \ - --timeout 30m - - - name: Staple notarization ticket - run: | - xcrun stapler staple "$GITHUB_WORKSPACE/apps/VSCode-darwin-x64/OCcode.app" - - - name: Re-zip stapled app - run: | - cd "$GITHUB_WORKSPACE/apps/VSCode-darwin-x64" - zip -Xry "$RUNNER_TEMP/OCcode-darwin-x64-${GITHUB_REF_NAME}-signed.zip" "OCcode.app" - - - name: Verify signature - run: | - codesign -dv --deep --verbose=4 "$GITHUB_WORKSPACE/apps/VSCode-darwin-x64/OCcode.app" 2>&1 - spctl -a -vvv -t install "$GITHUB_WORKSPACE/apps/VSCode-darwin-x64/OCcode.app" 2>&1 - - - name: Upload signed app artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 - continue-on-error: true - with: - name: OCcode-darwin-x64-${{ github.ref_name }}-signed - path: ${{ runner.temp }}/OCcode-darwin-x64-${{ github.ref_name }}-signed.zip - retention-days: 30 - - - name: Create GitHub Release (on tag) - if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b - with: - files: ${{ runner.temp }}/OCcode-darwin-x64-${{ github.ref_name }}-signed.zip + files: ${{ runner.temp }}/OCcode-${{ matrix.output_dir }}-${{ github.ref_name }}-signed.zip name: OCcode ${{ github.ref_name }} draft: false prerelease: false From b88b8aa7532caf43e854b9f2ae0effc5955cbeb2 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 31 Mar 2026 01:10:50 +0000 Subject: [PATCH 03/11] chore(release): 3.2.38 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17229359..5426ce40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.37) (2026-03-31) + ## [3.2.38](https://github.com/damoahdominic/occ/compare/v3.2.37...v3.2.38) (2026-03-30) ## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.36...v3.2.37) (2026-03-30) From 219e56f201c9e3a3cf2920005abe4519d172678c Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 21:11:53 -0400 Subject: [PATCH 04/11] chore(release): 3.2.37 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5426ce40..caa1a642 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. See [commit ## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.37) (2026-03-31) +## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.37) (2026-03-31) + ## [3.2.38](https://github.com/damoahdominic/occ/compare/v3.2.37...v3.2.38) (2026-03-30) ## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.36...v3.2.37) (2026-03-30) From 5f32f68338343af7bb4b6554b44a105532029fb9 Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 21:12:24 -0400 Subject: [PATCH 05/11] chore(release): 3.2.39 --- CHANGELOG.md | 2 ++ version.txt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index caa1a642..e5024119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [3.2.39](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.39) (2026-03-31) + ## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.37) (2026-03-31) ## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.37) (2026-03-31) diff --git a/version.txt b/version.txt index 7834f421..00645c83 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -3.2.38 \ No newline at end of file +3.2.39 \ No newline at end of file From 3cf0e0133d8ea7fd3e6e037eeda7183c3b382aec Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 21:14:14 -0400 Subject: [PATCH 06/11] chore: track versioning config --- .versionrc.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .versionrc.json diff --git a/.versionrc.json b/.versionrc.json new file mode 100644 index 00000000..c4979166 --- /dev/null +++ b/.versionrc.json @@ -0,0 +1,12 @@ +{ + "bumpFiles": [ + { + "filename": "version.txt", + "type": "plain-text" + }, + { + "filename": "package.json", + "type": "json" + } + ] +} From e7822dbdd488315fd90f84e514f5df72628fbb20 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 31 Mar 2026 01:20:03 +0000 Subject: [PATCH 07/11] chore: ignore extension out/ dirs and package-lock files Untracks openclaw/out/ from the index and adds gitignore rules for all extensions' compiled output and lock files. Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 2 + .../extensions/openclaw/out/extension.js | 779 --- .../extensions/openclaw/out/extension.js.map | 1 - .../openclaw/out/panels/config-path.js | 79 - .../openclaw/out/panels/config-path.js.map | 1 - .../extensions/openclaw/out/panels/config.js | 605 --- .../openclaw/out/panels/config.js.map | 1 - .../extensions/openclaw/out/panels/home.js | 4520 ----------------- .../openclaw/out/panels/home.js.map | 1 - .../openclaw/out/panels/onboarding.js | 355 -- .../openclaw/out/panels/onboarding.js.map | 1 - .../extensions/openclaw/out/panels/setup.js | 653 --- .../openclaw/out/panels/setup.js.map | 1 - .../extensions/openclaw/out/panels/status.js | 909 ---- .../openclaw/out/panels/status.js.map | 1 - .../extensions/openclaw/package-lock.json | 59 - 16 files changed, 2 insertions(+), 7966 deletions(-) delete mode 100644 apps/editor/extensions/openclaw/out/extension.js delete mode 100644 apps/editor/extensions/openclaw/out/extension.js.map delete mode 100644 apps/editor/extensions/openclaw/out/panels/config-path.js delete mode 100644 apps/editor/extensions/openclaw/out/panels/config-path.js.map delete mode 100644 apps/editor/extensions/openclaw/out/panels/config.js delete mode 100644 apps/editor/extensions/openclaw/out/panels/config.js.map delete mode 100644 apps/editor/extensions/openclaw/out/panels/home.js delete mode 100644 apps/editor/extensions/openclaw/out/panels/home.js.map delete mode 100644 apps/editor/extensions/openclaw/out/panels/onboarding.js delete mode 100644 apps/editor/extensions/openclaw/out/panels/onboarding.js.map delete mode 100644 apps/editor/extensions/openclaw/out/panels/setup.js delete mode 100644 apps/editor/extensions/openclaw/out/panels/setup.js.map delete mode 100644 apps/editor/extensions/openclaw/out/panels/status.js delete mode 100644 apps/editor/extensions/openclaw/out/panels/status.js.map delete mode 100644 apps/editor/extensions/openclaw/package-lock.json diff --git a/.gitignore b/.gitignore index cbc1d97c..721e725d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ node_modules/ out/ dist/ +apps/editor/extensions/**/out/ +apps/editor/extensions/**/package-lock.json *.vsix .DS_Store apps/editor/.build/ diff --git a/apps/editor/extensions/openclaw/out/extension.js b/apps/editor/extensions/openclaw/out/extension.js deleted file mode 100644 index 8a81cdcf..00000000 --- a/apps/editor/extensions/openclaw/out/extension.js +++ /dev/null @@ -1,779 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.activate = activate; -exports.deactivate = deactivate; -const vscode = __importStar(require("vscode")); -const os = __importStar(require("os")); -const fs = __importStar(require("fs")); -const path = __importStar(require("path")); -const http = __importStar(require("http")); -const home_1 = require("./panels/home"); -const status_1 = require("./panels/status"); -const config_1 = require("./panels/config"); -const DEFAULT_GATEWAY_PORT = 18789; -function getConfiguredGatewayPort() { - try { - const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - const raw = fs.readFileSync(configPath, 'utf-8'); - const config = JSON.parse(raw); - const gateway = config['gateway']; - const p = gateway?.['port'] ?? config['port'] ?? config['gateway_port'] ?? config['gatewayPort']; - const n = typeof p === 'string' ? parseInt(p, 10) : typeof p === 'number' ? p : NaN; - return Number.isFinite(n) && n > 0 && n < 65536 ? n : DEFAULT_GATEWAY_PORT; - } - catch { - return DEFAULT_GATEWAY_PORT; - } -} -/** Returns true if the OpenClaw web server is reachable. */ -function isWebServerReachable() { - const port = getConfiguredGatewayPort(); - const url = `http://localhost:${port}/`; - return new Promise(resolve => { - const req = http.get(url, { timeout: 3000 }, res => { - res.resume(); - resolve(res.statusCode !== undefined && res.statusCode < 500); - }); - req.on('error', () => resolve(false)); - req.on('timeout', () => { req.destroy(); resolve(false); }); - }); -} -/** - * Writes a complete, authoritative activity-bar container list that keeps - * only Explorer and Search visible and hides everything else (SCM, Debug, - * Extensions, Remote Explorer, etc.). - * - * Writing a FULL list — rather than patching the existing one — is the only - * reliable way to override VS Code's built-in defaults on fresh installs where - * `pinnedViewContainers` is empty. - */ -async function hideActivityBarItems(context) { - // Bumped to V8 — also disables debug-auto-launch and merge-conflict. - const APPLIED_KEY = 'activityBarHiddenConfiguredV8'; - if (context.globalState.get(APPLIED_KEY, false)) { - return; - } - try { - const config = vscode.workspace.getConfiguration(); - // Disable git entirely — users don't need it and it causes the SCM button - // to reappear even after hiding it via pinnedViewContainers. - await config.update('git.enabled', false, vscode.ConfigurationTarget.Global); - await config.update('git.decorations.enabled', false, vscode.ConfigurationTarget.Global); - // Disable built-in extensions that are missing compiled output in this fork - // and throw "Cannot find module" activation errors in the notification area. - for (const ext of [ - 'vscode.git-base', 'vscode.git', 'vscode.github', - 'vscode.typescript-language-features', 'vscode.emmet', - 'vscode.debug-auto-launch', 'vscode.merge-conflict', - ]) { - try { - await vscode.commands.executeCommand('workbench.extensions.disableExtension', ext); - } - catch { /* non-fatal */ } - } - // Complete authoritative list of all standard VS Code activity-bar containers. - // Only Explorer and Search stay visible; everything else is hidden. - const authoritative = [ - { id: 'workbench.view.explorer', pinned: true, visible: true, order: 0 }, - { id: 'workbench.view.search', pinned: true, visible: true, order: 1 }, - { id: 'workbench.view.scm', pinned: false, visible: false, order: 2 }, - { id: 'workbench.view.debug', pinned: false, visible: false, order: 3 }, - { id: 'workbench.view.extensions', pinned: false, visible: false, order: 4 }, - { id: 'workbench.view.remote', pinned: false, visible: false, order: 5 }, - ]; - // Preserve any extra containers the user may have added (e.g. third-party - // extensions) so we don't accidentally remove them. - const existing = config.get('workbench.activityBar.pinnedViewContainers') ?? []; - const knownIds = new Set(authoritative.map(c => c.id)); - for (const c of existing) { - if (!knownIds.has(c.id)) { - authoritative.push({ ...c }); - } - } - await config.update('workbench.activityBar.pinnedViewContainers', authoritative, vscode.ConfigurationTarget.Global); - await context.globalState.update(APPLIED_KEY, true); - } - catch { - // Non-fatal — settings.json defaults already cover most cases. - } -} -/** - * Opens ~/.openclaw as a named workspace — but only if OpenClaw is already installed. - * - * Strategy: - * - ~/.occ is OCcode's internal state directory. It is never opened as a workspace. - * - ~/.openclaw is OpenClaw's directory, created by OpenClaw after it installs. - * We open it as the workspace so users can browse their config files. - * If it doesn't exist yet (pre-install), we do nothing. - * - The .code-workspace file lives in ~/.occ so we don't pollute ~/.openclaw. - * The workspace file points at ~/.openclaw as the folder using an absolute path. - */ -const WORKSPACE_FILENAME = 'My OpenClaw Workspace.code-workspace'; -async function openOpenClawFolder() { - // Ensure ~/.occ exists — OCcode's internal state directory. - const occPath = path.join(os.homedir(), '.occ'); - if (!fs.existsSync(occPath)) { - fs.mkdirSync(occPath, { recursive: true }); - } - // Only open the workspace if OpenClaw is already installed. - const openclawPath = path.join(os.homedir(), '.openclaw'); - if (!fs.existsSync(openclawPath)) { - // OpenClaw not installed — clean up any stale workspace file so VS Code - // doesn't keep opening the workspace with a missing folder on next restart. - const staleWorkspaceFile = path.join(occPath, WORKSPACE_FILENAME); - try { - if (fs.existsSync(staleWorkspaceFile)) { - fs.unlinkSync(staleWorkspaceFile); - } - } - catch { /* non-fatal */ } - return; - } - // Workspace file lives in ~/.occ, points at ~/.openclaw as the folder. - const workspaceFilePath = path.join(occPath, WORKSPACE_FILENAME); - let needsWrite = !fs.existsSync(workspaceFilePath); - if (!needsWrite) { - try { - const parsed = JSON.parse(fs.readFileSync(workspaceFilePath, 'utf-8')); - if (!Array.isArray(parsed?.folders) || parsed.folders.length === 0) { - needsWrite = true; - } - } - catch { - needsWrite = true; - } - } - if (needsWrite) { - fs.writeFileSync(workspaceFilePath, JSON.stringify({ - folders: [{ path: openclawPath }], - settings: { - 'files.exclude': { '*.code-workspace': true }, - 'workbench.sideBar.visible': false, - }, - }, null, '\t')); - } - // If we're already inside this workspace, nothing more to do. - const workspaceFileUri = vscode.Uri.file(workspaceFilePath); - if (vscode.workspace.workspaceFile?.fsPath === workspaceFileUri.fsPath) { - return; - } - // Open the workspace — reloads the window once, then VS Code remembers it. - await vscode.commands.executeCommand('vscode.openFolder', workspaceFileUri); -} -// ── Inference balance status bar ────────────────────────────────────────────── -const BACKEND_BALANCE_KEY = 'occBackendBalanceV1'; // cached backend balance — persists across restarts -const OCC_JWT_KEY = 'occJwtV1'; // JWT stored directly in extension storage — no renderer IPC needed -function initBalanceBar(context) { - // Restore cached backend balance so status bar shows the correct value immediately on startup - const cachedBackendBalance = context.globalState.get(BACKEND_BALANCE_KEY, null); - let backendBalance = cachedBackendBalance; - let displayedBalance = cachedBackendBalance; // tracks what's visually shown - let animTimer; - let backendPollTimer; - let countdownTimer; - // Burn rate tracking — keep last 3 readings to compute $/ms spend rate - const readings = []; - let burnRatePerMs = 0; - const bar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 16); - bar.command = 'openclaw.balance.details'; - bar.name = 'OCC Credits'; - context.subscriptions.push(bar); - function renderBalance(value, counting = false) { - bar.text = `$(credit-card) $${value.toFixed(4)}${counting && burnRatePerMs > 0 ? ' ▼' : ''}`; - const tip = new vscode.MarkdownString(undefined, true); - tip.isTrusted = true; - tip.appendMarkdown(`**OCC Credits**\n\n**$${value.toFixed(4)}** remaining\n\n_[Get More Credits](https://occ.mba.sh/credits)_`); - bar.color = value > 1 ? undefined : value > 0.2 - ? new vscode.ThemeColor('statusBarItem.warningForeground') - : new vscode.ThemeColor('statusBarItem.errorForeground'); - bar.backgroundColor = value > 1 ? undefined : value > 0.2 - ? new vscode.ThemeColor('statusBarItem.warningBackground') - : new vscode.ThemeColor('statusBarItem.errorBackground'); - bar.tooltip = tip; - bar.show(); - // Keep popover in sync with the footer at the same cadence (250ms countdown + animation ticks) - try { - home_1.HomePanel.currentPanel?.postBalanceUpdate(value); - } - catch { /* non-fatal */ } - } - function stopCountdown() { - if (countdownTimer) { - clearInterval(countdownTimer); - countdownTimer = undefined; - } - } - function startCountdown() { - stopCountdown(); - if (burnRatePerMs <= 0 || displayedBalance === null) - return; - countdownTimer = setInterval(() => { - if (displayedBalance === null) - return; - displayedBalance = Math.max(0, displayedBalance - burnRatePerMs * 250); - renderBalance(displayedBalance, true); - }, 250); - } - function animateTo(from, to) { - stopCountdown(); // pause countdown while animating to real value - if (animTimer !== undefined) { - clearInterval(animTimer); - } - const DURATION = 380; - const STEP = 1000 / 60; - const start = Date.now(); - animTimer = setInterval(() => { - const elapsed = Date.now() - start; - const t = Math.min(elapsed / DURATION, 1); - const eased = 1 - Math.pow(1 - t, 3); - const current = from + (to - from) * eased; - displayedBalance = current; - renderBalance(current); - if (t >= 1) { - clearInterval(animTimer); - animTimer = undefined; - displayedBalance = to; - renderBalance(to); - // Resume countdown after animation settles - startCountdown(); - } - }, STEP); - } - function updateBurnRate(newBalance) { - const now = Date.now(); - readings.push({ balance: newBalance, time: now }); - if (readings.length > 3) - readings.shift(); - if (readings.length >= 2) { - const oldest = readings[0]; - const newest = readings[readings.length - 1]; - const delta = oldest.balance - newest.balance; // positive = spending - const elapsed = newest.time - oldest.time; - burnRatePerMs = elapsed > 0 && delta > 0 ? delta / elapsed : 0; - } - } - async function fetchAndUpdateBackendBalance() { - try { - // Read JWT from extension's own globalState first. - // FALLBACK: if extension globalState has no JWT (e.g. user signed in before this session - // synced, or the extension was reloaded), read from occLegacyJwt in VS Code settings and - // backfill extension globalState so future reads work without IPC. - let jwt = context.globalState.get(OCC_JWT_KEY, ''); - if (!jwt) { - try { - const legacyJwt = await vscode.commands.executeCommand('occ.auth.getLegacyJwt'); - if (legacyJwt) { - jwt = legacyJwt; - await context.globalState.update(OCC_JWT_KEY, jwt); - } - } - catch { /* renderer not ready yet — will retry on next poll */ } - } - if (!jwt) { - // Truly not signed in — hide bar entirely and clear any cached balance - if (backendPollTimer) { - clearInterval(backendPollTimer); - backendPollTimer = undefined; - } - if (animTimer !== undefined) { - clearInterval(animTimer); - animTimer = undefined; - } - stopCountdown(); - backendBalance = null; - displayedBalance = null; - readings.length = 0; - burnRatePerMs = 0; - void context.globalState.update(BACKEND_BALANCE_KEY, null); - bar.hide(); - return; - } - const r = await fetch('https://occ.mba.sh/api/v1/me', { headers: { Authorization: `Bearer ${jwt}` } }); - if (r.ok) { - const data = await r.json(); - const newBalance = Number(data.balance_usd) || 0; - const moltpilotKey = data.api_keys?.moltpilotKey ?? ''; - // Guard: only sync back if the JWT wasn't cleared while the fetch was in-flight. - // Without this check, an in-flight poll completing after sign-out would re-log the user in. - const currentJwt = context.globalState.get(OCC_JWT_KEY, ''); - if (currentJwt !== jwt) { - return; - } - // Sync JWT + keys to renderer settings so ocFreeModel works - vscode.commands.executeCommand('occ.auth.setLegacyJwt', jwt); - vscode.commands.executeCommand('occ.auth.setMoltpilotKey', moltpilotKey); - // Cache user profile for the accounts button avatar - vscode.commands.executeCommand('occ.auth.setUserInfo', data.email ?? '', data.picture ?? ''); - updateBurnRate(newBalance); - const prev = displayedBalance ?? newBalance; - backendBalance = newBalance; - void context.globalState.update(BACKEND_BALANCE_KEY, newBalance); - animateTo(prev, newBalance); - // Self-healing: restart the poll timer after every successful fetch so the - // interval resets cleanly and polling survives network blips or missed starts. - startBackendPolling(); - // Report OS platform to backend once per install so the admin dashboard has reliable data. - const OS_REPORTED_KEY = 'occ.osPlatformReported'; - if (!context.globalState.get(OS_REPORTED_KEY)) { - const platformMap = { darwin: 'macOS', win32: 'Windows', linux: 'Linux' }; - const osPlatform = platformMap[process.platform] || process.platform; - fetch('https://occ.mba.sh/api/v1/me/platform', { - method: 'PATCH', - headers: { Authorization: `Bearer ${jwt}`, 'Content-Type': 'application/json' }, - body: JSON.stringify({ os_platform: osPlatform }), - }).then(resp => { - if (resp.ok) { - void context.globalState.update(OS_REPORTED_KEY, true); - } - }).catch(() => { }); - } - } - else if (r.status === 401) { - // JWT expired or invalid — clear it, clear moltpilot key, and hide bar - void context.globalState.update(OCC_JWT_KEY, ''); - vscode.commands.executeCommand('occ.auth.setMoltpilotKey', ''); - if (backendPollTimer) { - clearInterval(backendPollTimer); - backendPollTimer = undefined; - } - stopCountdown(); - backendBalance = null; - displayedBalance = null; - readings.length = 0; - burnRatePerMs = 0; - void context.globalState.update(BACKEND_BALANCE_KEY, null); - bar.hide(); - } - } - catch { /* network error — keep current display, next poll will retry */ } - } - function startBackendPolling() { - if (backendPollTimer) - clearInterval(backendPollTimer); - backendPollTimer = setInterval(() => void fetchAndUpdateBackendBalance(), 5000); - } - // Show immediately if we have a cached balance (signed-in returning user) - if (backendBalance !== null) { - renderBalance(backendBalance); - } - // Fetch immediately on startup — also attempt JWT fallback from renderer settings. - // Small delay so the renderer (IVoidSettingsService) finishes loading before we call - // occ.auth.getLegacyJwt, which reads from it. - setTimeout(() => void fetchAndUpdateBackendBalance(), 2000); - context.subscriptions.push(vscode.commands.registerCommand('openclaw.balance.spend', (_amount) => { - // no-op when signed in (backend tracks balance); kept for API compatibility - }), vscode.commands.registerCommand('openclaw.balance.details', () => { - if (backendBalance !== null) { - vscode.window.showInformationMessage(`OCC Credits · $${backendBalance.toFixed(4)} remaining`, 'Get More Credits').then(sel => { - if (sel === 'Get More Credits') { - vscode.env.openExternal(vscode.Uri.parse('https://occ.mba.sh/credits')); - } - }); - } - }), - // Called whenever JWT changes (sign-in or sign-out) — refreshes display immediately. - // Also used by openclaw.jwt.set as the trigger after updating extension storage. - vscode.commands.registerCommand('openclaw.balance.refresh', () => { - void fetchAndUpdateBackendBalance(); - }), - // Called from the renderer (sidebarActions.ts occ.auth.setLegacyJwt) to sync the JWT - // into extension-host storage so fetchAndUpdateBackendBalance can read it without IPC. - vscode.commands.registerCommand('openclaw.jwt.set', async (token) => { - await context.globalState.update(OCC_JWT_KEY, token ?? ''); - // Stop polling immediately on sign-out so no more in-flight fetches can re-set the JWT - if (!token && backendPollTimer) { - clearInterval(backendPollTimer); - backendPollTimer = undefined; - } - void fetchAndUpdateBackendBalance(); - }), - // Smoke test: verifies JWT, moltpilot key, OCC key, balance, and inference tracking. - // Results open in a new editor tab (Output panel removed from this fork). - vscode.commands.registerCommand('openclaw.smokeTest', async () => { - const lines = []; - const log = (msg) => lines.push(msg); - log('=== OCC Smoke Test ==='); - log(`Time: ${new Date().toISOString()}`); - log(''); - // 1. JWT - let jwt = context.globalState.get(OCC_JWT_KEY, ''); - log(`[1] JWT in extension globalState (occJwtV1): ${jwt ? 'OK present (' + jwt.substring(0, 20) + '...)' : 'MISSING'}`); - // Check what the renderer has for occLegacyJwt — this is what voidSettingsService reads - try { - const legacyJwt = await vscode.commands.executeCommand('occ.auth.getLegacyJwt'); - log(` occLegacyJwt in renderer settings: ${legacyJwt ? 'OK present (' + legacyJwt.substring(0, 20) + '...)' : 'MISSING <-- this causes MoltPilot to use shared key!'}`); - if (!jwt && legacyJwt) { - jwt = legacyJwt; - await context.globalState.update(OCC_JWT_KEY, jwt); - } - } - catch { - log(' occLegacyJwt check: renderer not ready'); - } - if (!jwt) { - lines.push('\nNot signed in — cannot proceed.'); - } - else { - // 2. /api/v1/me — balance + keys (before) - log('\n[2] Calling occ.mba.sh/api/v1/me (before)...'); - let balanceBefore = 0; - let moltpilotKey = ''; - let occKey = ''; - try { - const r = await fetch('https://occ.mba.sh/api/v1/me', { headers: { Authorization: `Bearer ${jwt}` } }); - if (r.ok) { - const d = await r.json(); - balanceBefore = Number(d.balance_usd) || 0; - moltpilotKey = d.api_keys?.moltpilotKey ?? ''; - occKey = d.api_keys?.occKey ?? ''; - log(` Status: 200 OK`); - log(` Email: ${d.email ?? '(not returned)'}`); - log(` Balance: $${balanceBefore.toFixed(6)}`); - log(` MoltpilotKey: ${moltpilotKey ? 'OK ' + moltpilotKey.substring(0, 12) + '...' : 'MISSING'}`); - log(` OccKey: ${occKey ? 'OK ' + occKey.substring(0, 12) + '...' : 'MISSING'}`); - } - else { - log(` HTTP ${r.status} -- JWT may be expired`); - } - } - catch (e) { - log(` Network error: ${e}`); - } - const inferenceTest = async (label, key) => { - log(`\n[${label}] Inference test with ${label} (model: occ-legacy)...`); - try { - const resp = await fetch('https://occ.mba.sh/v1/chat/completions', { - method: 'POST', - headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${key}` }, - body: JSON.stringify({ model: 'occ-legacy', stream: false, messages: [{ role: 'user', content: 'Say: SMOKE_OK' }], max_tokens: 20 }), - }); - const rawText = await resp.text(); - log(` HTTP ${resp.status}`); - log(` Raw (first 500): ${rawText.substring(0, 500)}`); - if (resp.ok) { - try { - const d = JSON.parse(rawText); - log(` Reply: ${(d.choices?.[0]?.message?.content ?? d.choices?.[0]?.text ?? '(no content)').trim()}`); - } - catch { - log(` (response is not JSON — likely SSE stream)`); - } - } - } - catch (e) { - log(` Network error: ${e}`); - } - }; - // 3. MoltPilot key - if (moltpilotKey) { - await inferenceTest('MoltPilot key', moltpilotKey); - } - else { - log('\n[3] SKIP -- no MoltpilotKey'); - } - // 4. OCC key - if (occKey) { - await inferenceTest('OCC key', occKey); - } - else { - log('\n[4] SKIP -- no occKey returned by API'); - } - // 5. Re-check balance after inference calls - log('\n[5] Re-checking balance (after 10s to allow backend to settle)...'); - await new Promise(res => setTimeout(res, 10000)); - try { - const r = await fetch('https://occ.mba.sh/api/v1/me', { headers: { Authorization: `Bearer ${jwt}` } }); - if (r.ok) { - const d = await r.json(); - const balanceAfter = Number(d.balance_usd) || 0; - const delta = balanceBefore - balanceAfter; - log(` Balance before: $${balanceBefore.toFixed(6)}`); - log(` Balance after: $${balanceAfter.toFixed(6)}`); - log(` Delta: ${delta > 0 ? '-$' + delta.toFixed(6) + ' -- usage IS tracked' : delta === 0 ? '$0 -- no change yet (check again in 30s)' : '+$' + Math.abs(delta).toFixed(6) + ' -- balance went up?'}`); - } - } - catch (e) { - log(` Network error: ${e}`); - } - } - log('\n=== Done ==='); - // Open results in a new editor tab - const doc = await vscode.workspace.openTextDocument({ content: lines.join('\n'), language: 'plaintext' }); - await vscode.window.showTextDocument(doc, { preview: false, viewColumn: vscode.ViewColumn.One }); - }), { dispose: () => { if (backendPollTimer) - clearInterval(backendPollTimer); stopCountdown(); } }); - return () => { }; // spend is a no-op — kept so call sites don't break -} -async function activate(context) { - // Inference balance bar (shown at bottom-right, tracks $1.00 free budget). - const spendBalance = initBalanceBar(context); - // Apply hidden activity bar items on first activation on this machine. - await hideActivityBarItems(context); - // Open ~/.openclaw as "My OpenClaw Workspace" (may reload the window once). - await openOpenClawFolder(); - // Close the Explorer sidebar on startup — the user opens it explicitly when needed. - // Use a short delay so the workbench has finished restoring its layout first. - setTimeout(() => { - vscode.commands.executeCommand('workbench.action.closeSidebar'); - }, 500); - // Deep-link URI handler: occode://openclaw.home/auth?token= - // Scheme "occode" is set in product.json "urlProtocol": "occode". - // OCC.MBA.SH fires this redirect after the user signs up / logs in. - context.subscriptions.push(vscode.window.registerUriHandler({ - handleUri(uri) { - if (uri.path === '/auth') { - const params = new URLSearchParams(uri.query); - const token = params.get('token'); - if (token) { - // Store JWT in extension-host storage immediately (no renderer IPC needed). - void context.globalState.update(OCC_JWT_KEY, token).then(() => { - // Also sync to renderer settings service (for chat / other renderer consumers). - vscode.commands.executeCommand('occ.auth.setLegacyJwt', token); - }); - } - } - }, - })); - context.subscriptions.push(vscode.commands.registerCommand('openclaw.home', () => { - home_1.HomePanel.createOrShow(context.extensionUri); - }), vscode.commands.registerCommand('openclaw.configure', async () => { - const reachable = await isWebServerReachable(); - if (reachable) { - const dashInfo = (0, config_1.getDashboardUrl)(); - const url = dashInfo?.url ?? `http://localhost:${getConfiguredGatewayPort()}/`; - await vscode.env.openExternal(vscode.Uri.parse(url)); - } - else { - // Web server not running — ask the AI to start it - const port = getConfiguredGatewayPort(); - const configUrl = `http://localhost:${port}/`; - const message = `The OpenClaw web configuration server is not running at ${configUrl}.\n\n` + - `Please start it now by running the OpenClaw gateway in the terminal:\n` + - `\`\`\`\nopenclaw gateway start\n\`\`\`\n\n` + - `Once it is running, the configuration UI will open at ${configUrl} in your browser.`; - await vscode.commands.executeCommand('void.openChatWithMessage', message); - spendBalance(); - } - }), vscode.commands.registerCommand('openclaw.aiFixConfig', () => { - const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - let configContent; - try { - configContent = fs.readFileSync(configPath, 'utf-8'); - } - catch { - vscode.window.showErrorMessage('openclaw.json not found at ~/.openclaw/openclaw.json. Please create it first.'); - return; - } - const message = `Please review my openclaw.json configuration below, identify any issues ` + - `(syntax errors, missing required fields, invalid values, etc.), ` + - `and provide a corrected version with an explanation of what you changed.\n\n` + - `\`\`\`json\n${configContent}\n\`\`\``; - vscode.commands.executeCommand('void.openChatWithMessage', message); - spendBalance(); - }), vscode.commands.registerCommand('openclaw.install', () => { - void home_1.HomePanel.runInstall(context.extensionUri, process.platform, process.arch, process.env.SHELL ?? ''); - }), vscode.commands.registerCommand('openclaw.openWorkspace', () => { - void openOpenClawFolder(); - }), vscode.commands.registerCommand('openclaw.status', () => { - status_1.StatusPanel.createOrShow(context.extensionUri); - }), vscode.commands.registerCommand('openclaw.configureTUI', async () => { - // On Windows, Electron may not inherit the full user PATH, so resolve the - // openclaw binary the same way the home panel does (via HomePanel._findOpenClawPath). - // Fall back to the plain shell command if the panel hasn't been created yet. - const terminal = vscode.window.createTerminal({ - name: 'OpenClaw Configure', - location: vscode.TerminalLocation.Editor, - }); - terminal.show(); - if (process.platform === 'win32') { - // Use `cmd /c openclaw configure` so Windows resolves .cmd shims correctly - terminal.sendText('cmd /c openclaw configure', true); - } - else { - terminal.sendText('openclaw configure', true); - } - })); - // ── openclaw.runWithSudo — secure sudo tool for MoltPilot ────────────────── - // Shows a native password dialog (no terminal prompt), pipes to sudo -S. - // Called by the run_with_sudo builtin tool in toolsService.ts. - context.subscriptions.push(vscode.commands.registerCommand('openclaw.runWithSudo', async (command, reason) => { - const password = await vscode.window.showInputBox({ - password: true, - prompt: `MoltPilot needs elevated access — ${reason}`, - placeHolder: 'Enter your system password', - ignoreFocusOut: true, - }); - if (!password) - return { result: 'User cancelled the password prompt.', exitCode: 1 }; - return new Promise(resolve => { - const child = require('child_process').spawn('sudo', ['-S', 'bash', '-c', command], { - stdio: ['pipe', 'pipe', 'pipe'], - }); - child.stdin?.write(password + '\n'); - child.stdin?.end(); - let out = ''; - child.stdout?.on('data', (d) => { out += d.toString(); }); - child.stderr?.on('data', (d) => { out += d.toString(); }); - child.on('close', (code) => resolve({ result: out.trim() || '(no output)', exitCode: code ?? 1 })); - child.on('error', (err) => resolve({ result: err.message, exitCode: 1 })); - }); - })); - // ── Anonymous install ping (fires once per install, no personal data) ── - const PING_KEY = 'aptabasePingedV1'; - if (!context.globalState.get(PING_KEY)) { - void context.globalState.update(PING_KEY, true); - const osName = process.platform === 'darwin' ? 'macOS' : process.platform === 'win32' ? 'Windows' : 'Linux'; - const version = vscode.extensions.getExtension('openclaw.home')?.packageJSON?.version ?? 'unknown'; - fetch('https://api.aptabase.com/v0/events', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'App-Key': 'A-US-4013869858', - }, - body: JSON.stringify({ - timestamp: new Date().toISOString(), - sessionId: Math.random().toString(36).slice(2), - eventName: 'install', - systemProps: { - osName, - appVersion: version, - sdkVersion: 'manual-1.0', - }, - props: {}, - }), - }).catch(() => { }); // silent — never block the app - } - // ── System status for MoltPilot system prompt ────────────────────────────── - context.subscriptions.push(vscode.commands.registerCommand('openclaw.getSystemStatus', async () => { - const homedir = os.homedir(); - const configPath = path.join(homedir, '.openclaw', 'openclaw.json'); - const installed = fs.existsSync(configPath); - let config = {}; - if (installed) { - try { - config = JSON.parse(fs.readFileSync(configPath, 'utf-8')); - } - catch { } - } - // Determine gateway port - const port = (() => { - const p = config['port'] ?? config['gateway_port'] ?? config['gatewayPort']; - if (p === undefined) - return 18789; - const n = Number(p); - return Number.isFinite(n) && n > 0 && n < 65536 ? n : 18789; - })(); - // Check if gateway is reachable - const gatewayRunning = await new Promise(resolve => { - const req = http.get(`http://localhost:${port}/`, { timeout: 2000 }, res => { - res.resume(); - resolve(res.statusCode !== undefined && res.statusCode < 500); - }); - req.on('error', () => resolve(false)); - req.on('timeout', () => { req.destroy(); resolve(false); }); - }); - // Check if an AI provider/model is configured - const hasAiModel = installed && !!(config['auth_choice'] || config['openai_api_key'] || config['anthropic_api_key'] || - config['openrouter_api_key'] || config['gemini_api_key'] || config['api_key'] || - config['custom_api_key'] || config['model'] || config['provider']); - // Check connected messaging channels (openclaw.json may have a 'channels' object) - const channelsRaw = config['channels']; - let channelNames = []; - if (channelsRaw && typeof channelsRaw === 'object' && !Array.isArray(channelsRaw)) { - channelNames = Object.entries(channelsRaw) - .filter(([, v]) => { - if (!v) - return false; - // If the channel is an object, require enabled !== false - if (typeof v === 'object' && v['enabled'] === false) - return false; - return true; - }) - .map(([k]) => k); - } - const hasChannels = channelNames.length > 0; - // Check if agents are configured — read AGENTS.md from workspace dir - const workspaceDir = (() => { - const fallback = path.join(homedir, '.openclaw', 'workspace'); - try { - const ws = config['workspace']; - if (typeof ws === 'string' && ws.trim()) { - return ws.startsWith('~') ? path.join(homedir, ws.slice(1)) : ws; - } - } - catch { } - return fallback; - })(); - let agentNames = []; - try { - const content = fs.readFileSync(path.join(workspaceDir, 'AGENTS.md'), 'utf-8'); - // Parse agent names from markdown headings (# or ##), skip generic "Agents" title - agentNames = content.split('\n') - .filter(l => /^#{1,2}\s+\S/.test(l)) - .map(l => l.replace(/^#{1,2}\s+/, '').trim()) - .filter(n => n.length > 0 && !/^agents?$/i.test(n)); - } - catch { } - const hasAgents = agentNames.length > 0; - return { installed, gatewayRunning, hasAgents, agentNames, hasAiModel, hasChannels, channelNames }; - })); - // ── Walkthrough commands ──────────────────────────────────────────────────── - context.subscriptions.push(vscode.commands.registerCommand('occ.onboarding.chooseMoltPilot', async () => { - await context.globalState.update('occ.aiPreference', 'moltpilot'); - vscode.env.openExternal(vscode.Uri.parse('https://occ.mba.sh/signup?ref=occ-editor')); - }), vscode.commands.registerCommand('occ.onboarding.chooseBYOK', async () => { - const providers = ['Anthropic Claude', 'OpenAI', 'OpenRouter', 'Google Gemini', 'Ollama']; - const pick = await vscode.window.showQuickPick(providers, { - placeHolder: 'Which provider would you like to use?', - }); - if (pick) { - await context.globalState.update('occ.aiPreference', pick.toLowerCase().replace(/\s+/g, '-')); - vscode.window.showInformationMessage(`${pick} selected — you'll enter your API key when you install OpenClaw from OCC Home.`); - } - }), vscode.commands.registerCommand('occ.onboarding.darkTheme', async () => { - await vscode.workspace.getConfiguration('workbench').update('colorTheme', 'OpenClaw Dark', vscode.ConfigurationTarget.Global); - }), vscode.commands.registerCommand('occ.onboarding.lightTheme', async () => { - await vscode.workspace.getConfiguration('workbench').update('colorTheme', 'OpenClaw Light', vscode.ConfigurationTarget.Global); - })); - // Auto-show OCC Home on startup (after activation settles). - setTimeout(() => { - home_1.HomePanel.createOrShow(context.extensionUri); - }, 500); -} -function deactivate() { - (0, config_1.stopConfigProxy)(); -} -//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/extension.js.map b/apps/editor/extensions/openclaw/out/extension.js.map deleted file mode 100644 index e68c63d5..00000000 --- a/apps/editor/extensions/openclaw/out/extension.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/config-path.js b/apps/editor/extensions/openclaw/out/panels/config-path.js deleted file mode 100644 index 9c084fc3..00000000 --- a/apps/editor/extensions/openclaw/out/panels/config-path.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.overrideConfigPath = overrideConfigPath; -exports.resolveConfigPath = resolveConfigPath; -exports.getDefaultConfigPath = getDefaultConfigPath; -const os = __importStar(require("os")); -const path = __importStar(require("path")); -const vscode = __importStar(require("vscode")); -let customPath; -const DEFAULT_PATH = path.join(os.homedir(), ".openclaw", "openclaw.json"); -function expandHome(targetPath) { - if (!targetPath) - return targetPath; - if (targetPath.startsWith("~")) { - return path.join(os.homedir(), targetPath.slice(1)); - } - return targetPath; -} -function normalizePath(targetPath) { - if (!targetPath) - return targetPath; - const expanded = expandHome(targetPath); - if (process.platform === "win32" && expanded) { - return expanded.replace(/\\/g, "/"); - } - return expanded; -} -function overrideConfigPath(p) { - customPath = p ? normalizePath(p) : undefined; -} -function resolveConfigPath() { - if (customPath) - return customPath; - const fromSettings = vscode.workspace.getConfiguration("openclaw").get("configPath"); - if (fromSettings) { - customPath = normalizePath(fromSettings); - if (customPath) { - return customPath; - } - } - return DEFAULT_PATH; -} -function getDefaultConfigPath() { - return DEFAULT_PATH; -} -//# sourceMappingURL=config-path.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/config-path.js.map b/apps/editor/extensions/openclaw/out/panels/config-path.js.map deleted file mode 100644 index 85e41f33..00000000 --- a/apps/editor/extensions/openclaw/out/panels/config-path.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"config-path.js","sourceRoot":"","sources":["../../src/panels/config-path.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,gDAEC;AAED,8CAUC;AAED,oDAEC;AA1CD,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AAEjC,IAAI,UAA8B,CAAC;AACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AAE3E,SAAS,UAAU,CAAC,UAA8B;IAChD,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,UAA8B;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC;IACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,kBAAkB,CAAC,CAAqB;IACtD,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,SAAgB,iBAAiB;IAC/B,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAS,YAAY,CAAC,CAAC;IAC7F,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,YAAY,CAAC;AACtB,CAAC"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/config.js b/apps/editor/extensions/openclaw/out/panels/config.js deleted file mode 100644 index 44543a22..00000000 --- a/apps/editor/extensions/openclaw/out/panels/config.js +++ /dev/null @@ -1,605 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConfigPanel = void 0; -exports.getOrStartConfigProxy = getOrStartConfigProxy; -exports.stopConfigProxy = stopConfigProxy; -exports.getDashboardUrl = getDashboardUrl; -const vscode = __importStar(require("vscode")); -const http = __importStar(require("http")); -const os = __importStar(require("os")); -const path = __importStar(require("path")); -const DEFAULT_GATEWAY_PORT = 18789; -// ── Proxy ───────────────────────────────────────────────────────────────────── -// Reverse-proxy that strips X-Frame-Options and CSP frame-ancestors so the -// page can load inside a VS Code webview iframe. -let _proxyServer; -let _proxyPort; -let _proxyTargetPort = DEFAULT_GATEWAY_PORT; -function getOrStartConfigProxy(targetPort = DEFAULT_GATEWAY_PORT) { - // Restart proxy if target port changed - if (_proxyServer && _proxyPort && _proxyTargetPort === targetPort) - return Promise.resolve(_proxyPort); - if (_proxyServer) { - _proxyServer.close(); - _proxyServer = undefined; - _proxyPort = undefined; - } - _proxyTargetPort = targetPort; - return new Promise((resolve, reject) => { - const server = http.createServer((req, res) => { - const targetPath = req.url ?? '/'; - const options = { - hostname: '127.0.0.1', - port: _proxyTargetPort, - path: targetPath, - method: req.method, - headers: { ...req.headers, host: `localhost:${_proxyTargetPort}` }, - }; - const proxyReq = http.request(options, proxyRes => { - const headers = { ...proxyRes.headers }; - // Remove headers that prevent iframe embedding. - delete headers['x-frame-options']; - const csp = headers['content-security-policy']; - if (typeof csp === 'string') { - const cleaned = csp - .split(';') - .map(d => d.trim()) - .filter(d => !/^frame-ancestors/i.test(d)) - .join('; ') - .trim() - .replace(/;$/, ''); - if (cleaned) { - headers['content-security-policy'] = cleaned; - } - else { - delete headers['content-security-policy']; - } - } - const contentType = headers['content-type'] ?? ''; - const isHtml = contentType.includes('text/html'); - if (isHtml) { - // Collect the full response so we can inject the clipboard bridge script. - const chunks = []; - proxyRes.on('data', (chunk) => chunks.push(chunk)); - proxyRes.on('end', () => { - let body = Buffer.concat(chunks).toString('utf-8'); - // Clipboard bridge injected into the gateway page. - // KEY INSIGHT: keyboard events inside a focused cross-origin iframe never - // bubble to the parent document. So the iframe must intercept its own keys - // and use postMessage to ask the parent (outer webview) for clipboard access, - // since navigator.clipboard requires HTTPS and the gateway runs on HTTP. - const bridge = ` - - - - - -
- - - -
${src}
- -
- - - -`; - } - _loadingHtml() { - return `Loading OpenClaw Configuration…`; - } - _errorHtml(msg) { - return `

Cannot connect to OpenClaw gateway

Make sure it is running (port ${DEFAULT_GATEWAY_PORT})

${msg}

`; - } -} -exports.ConfigPanel = ConfigPanel; -//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/config.js.map b/apps/editor/extensions/openclaw/out/panels/config.js.map deleted file mode 100644 index b69413e3..00000000 --- a/apps/editor/extensions/openclaw/out/panels/config.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/panels/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/home.js b/apps/editor/extensions/openclaw/out/panels/home.js deleted file mode 100644 index 576f8137..00000000 --- a/apps/editor/extensions/openclaw/out/panels/home.js +++ /dev/null @@ -1,4520 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HomePanel = void 0; -const vscode = __importStar(require("vscode")); -const cp = __importStar(require("child_process")); -const fs = __importStar(require("fs")); -const http = __importStar(require("http")); -const https = __importStar(require("https")); -const os = __importStar(require("os")); -const path = __importStar(require("path")); -// ── Persistent diagnostics log ──────────────────────────────────────────────── -const LOG_PATH = path.join(os.homedir(), '.openclaw', 'occ-home.log'); -const LOG_MAX_BYTES = 512 * 1024; // 500 KB — rotate when exceeded -/** - * Append timestamped text to ~/.openclaw/occ-home.log. - * Creates the file (and directory) on first use. Rotates by dropping the - * oldest half of lines when the file exceeds LOG_MAX_BYTES. Never throws. - */ -// Strip ANSI/VT escape sequences (e.g. colour codes from npm/openclaw output) -const _ansiRe = /\x1b(\[[0-9;]*[A-Za-z]|[^[])/g; -function writeLog(text) { - try { - const dir = path.dirname(LOG_PATH); - if (!fs.existsSync(dir)) - fs.mkdirSync(dir, { recursive: true }); - // Rotate if oversized - if (fs.existsSync(LOG_PATH) && fs.statSync(LOG_PATH).size > LOG_MAX_BYTES) { - const lines = fs.readFileSync(LOG_PATH, 'utf-8').split('\n'); - fs.writeFileSync(LOG_PATH, lines.slice(Math.floor(lines.length / 2)).join('\n'), 'utf-8'); - } - const ts = new Date().toISOString(); - const clean = text.replace(_ansiRe, ''); - // Stamp every non-empty line; leave blank lines unstamped - const stamped = clean - .split('\n') - .map(l => (l.trim() ? `[${ts}] ${l}` : l)) - .join('\n'); - fs.appendFileSync(LOG_PATH, stamped, 'utf-8'); - } - catch { /* non-fatal */ } -} -// ── OCC Legacy model constants ──────────────────────────────────────────────── -const OCC_LEGACY_MODEL_ID = 'occ-legacy'; -const OCC_LEGACY_MODEL_NAME = 'occ-legacy'; -const OCC_LEGACY_BASE_URL = 'https://occ.mba.sh/v1'; -const OCC_LEGACY_API = 'openai-completions'; -const OCC_LEGACY_COST = { - input: 0.0000006, - output: 0.000003, - cacheRead: 0.0000001, - cacheWrite: 0, -}; -const OCC_LEGACY_CONTEXT_WINDOW = 262144; -const OCC_LEGACY_MAX_TOKENS = 262144; -/** - * Resolves the directory where OpenClaw stores its workspace files - * (AGENTS.md, IDENTITY.md, USER.md, TOOLS.md, MEMORY.md, SOUL.md, HEARTBEAT.md). - * - * Reads the `workspace` field from ~/.openclaw/openclaw.json if present. - * Falls back to ~/.openclaw/workspace/ if the field is absent or unreadable. - * Expands a leading ~ to the home directory. - */ -function getOpenClawWorkspaceDir() { - const fallback = path.join(os.homedir(), '.openclaw', 'workspace'); - try { - const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - const raw = fs.readFileSync(configPath, 'utf-8'); - const config = JSON.parse(raw); - const ws = config['workspace']; - if (typeof ws === 'string' && ws.trim()) { - return ws.startsWith('~') - ? path.join(os.homedir(), ws.slice(1)) - : ws; - } - } - catch { - // openclaw.json missing or unreadable — use fallback - } - return fallback; -} -class HomePanel { - constructor(panel, extensionUri) { - this._disposables = []; - this._commandAction = null; - this._sidebarOpen = false; // tracks chat sidebar open state across webview reloads - this._pollTick = 0; - this._lastJwt = ''; - this._lastInstalledVersion = null; - this._autoUpdateTriggered = false; // fire at most once per panel session - this._closeSidebarOnGatewayStart = false; // close sidebar once gateway reaches running after first install - this._panel = panel; - this._extensionUri = extensionUri; - this._outputChannel = vscode.window.createOutputChannel('OpenClaw Gateway'); - const iconUri = this._panel.webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, 'media', 'icon.png')); - this._panel.webview.html = this._getLoadingHtml(iconUri.toString()); - void this._update(); - this._panel.onDidDispose(() => this.dispose(), null, this._disposables); - // Re-check installation whenever the panel becomes visible again. - this._panel.onDidChangeViewState(e => { - if (e.webviewPanel.visible) { - void this._update(); - } - }, null, this._disposables); - // Watch ~/.openclaw/openclaw.json for when OpenClaw first initialises. - const configWatcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(path.join(os.homedir(), '.openclaw')), 'openclaw.json'), false, true, false); - configWatcher.onDidCreate(() => void this._update(), null, this._disposables); - configWatcher.onDidDelete(() => void this._update(), null, this._disposables); - this._disposables.push(configWatcher); - // Also watch home dir for ~/.openclaw itself being created (npm install done). - const homeWatcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(os.homedir()), '.openclaw'), false, true, false); - homeWatcher.onDidCreate(() => void this._update(), null, this._disposables); - homeWatcher.onDidDelete(() => void this._update(), null, this._disposables); - this._disposables.push(homeWatcher); - this._panel.webview.onDidReceiveMessage(msg => { - if (msg.command === 'gatewayAction') { - void this._handleGatewayAction(msg.action); - } - else if (msg.command === 'checkVersion') { - void this._checkLatestVersion(); - } - else if (msg.command === 'runUpdate') { - void vscode.commands.executeCommand('void.openChatWithMessage', 'Please run `openclaw update` to upgrade OpenClaw to the latest version.', 'agent'); - } - else if (msg.command === 'runSetup') { - void this._runSetup(msg); - } - else if (msg.command === 'autoSetupSkipped') { - setTimeout(() => { - HomePanel.refresh(); - void vscode.commands.executeCommand('openclaw.openWorkspace'); - setTimeout(() => { - vscode.commands.executeCommand('void.openChatWithMessage', 'Run `openclaw gateway start` to start the OpenClaw gateway.', 'agent'); - }, 1000); - }, 500); - } - else if (msg.command === 'verifyCliBeforeSetup') { - // After install, verify the CLI is actually findable before auto-configuring. - // First: use the path we captured immediately after npm install (most reliable). - const storedPath = HomePanel._installedCliPath; - if (storedPath && fs.existsSync(storedPath)) { - try { - this._panel.webview.postMessage({ type: 'proceedAutoSetup' }); - } - catch { } - return; - } - // Fallback: full PATH-based search. - void this._testOpenClawCli().then(result => { - if (result.ok) { - try { - this._panel.webview.postMessage({ type: 'proceedAutoSetup' }); - } - catch { } - } - else { - try { - this._panel.webview.postMessage({ - type: 'installLog', - text: '\n⚠️ OpenClaw was installed but could not be found in PATH.\n' + - ' Please restart OCCode to pick up the new PATH.\n' - }); - } - catch { } - void this._update(); - } - }); - } - else if (msg.command === 'sudoPassword') { - // Password modal submitted or cancelled from the webview. - HomePanel._pendingPasswordResolve?.(msg.password); - HomePanel._pendingPasswordResolve = undefined; - } - else if (msg.command === 'toggleChat') { - const cmd = this._sidebarOpen ? 'void.sidebar.close' : 'void.sidebar.open'; - void vscode.commands.executeCommand(cmd).then(async () => { - // Let the sidebar finish opening/closing, then read real state. - await new Promise(r => setTimeout(r, 150)); - this._sidebarOpen = await vscode.commands.executeCommand('void.sidebar.isVisible').then(v => !!v, () => this._sidebarOpen); - try { - this._panel.webview.postMessage({ type: 'chatState', open: this._sidebarOpen }); - } - catch { } - }); - } - else if (msg.command === 'signIn') { - void vscode.env.openExternal(vscode.Uri.parse('https://occ.mba.sh/login?ref=occ-editor')); - } - else if (msg.command === 'openDashboard') { - void vscode.env.openExternal(vscode.Uri.parse('https://occ.mba.sh/dashboard')); - } - else if (msg.command === 'signOut') { - // Clear JWT, moltpilot key, and extension-host globalState - void vscode.commands.executeCommand('occ.auth.setLegacyJwt', ''); - void vscode.commands.executeCommand('occ.auth.setMoltpilotKey', ''); - void vscode.commands.executeCommand('openclaw.jwt.set', ''); - } - else if (msg.command === 'openUrl') { - vscode.env.openExternal(vscode.Uri.parse(msg.url)); - } - else if (msg.command === 'openConfigFile') { - const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - vscode.commands.executeCommand('vscode.open', vscode.Uri.file(configPath)); - } - else if (msg.command === 'openLogs') { - if (!fs.existsSync(LOG_PATH)) { - vscode.window.showInformationMessage('No log file yet — logs are created when install or setup runs.'); - } - else { - vscode.commands.executeCommand('vscode.open', vscode.Uri.file(LOG_PATH)); - } - } - else if (msg.command === 'openWorkspaceFile') { - const allowed = new Set(['AGENTS.md', 'IDENTITY.md', 'USER.md', 'MEMORY.md', 'SOUL.md', 'HEARTBEAT.md']); - const file = msg.file; - if (!allowed.has(file)) - return; - const workspaceDir = getOpenClawWorkspaceDir(); - const filePath = path.join(workspaceDir, file); - if (!fs.existsSync(filePath)) { - if (file === 'MEMORY.md') { - // Auto-create MEMORY.md with a scaffolded long-term agent memory template - const scaffold = [ - '# Agent Long-Term Memory', - '', - 'This file is the persistent long-term memory for the AI agent embedded in OCcode.', - 'The agent reads this file at the start of every session to recall important context,', - 'preferences, and decisions made in previous conversations.', - '', - '---', - '', - '## About This File', - '', - '- **Purpose**: Stores facts, decisions, and context that should persist across agent sessions.', - '- **Owner**: You — edit freely to add, update, or remove entries.', - '- **Format**: Plain Markdown. Keep entries concise and well-organised.', - '', - '## User Preferences', - '', - '', - '', - '## Project Context', - '', - '', - '', - '## Recurring Solutions', - '', - '', - '', - '## Notes', - '', - '', - ].join('\n'); - fs.mkdirSync(workspaceDir, { recursive: true }); - fs.writeFileSync(filePath, scaffold, 'utf8'); - } - else { - vscode.window.showWarningMessage(`${file} not found in ${workspaceDir}. OpenClaw may not have initialised its workspace yet.`); - return; - } - } - vscode.commands.executeCommand('vscode.open', vscode.Uri.file(filePath)); - } - else if (msg.command === 'openclaw.uninstall') { - void this._runUninstall(); - } - else if (msg.command === 'openclaw.setupBetterMemory') { - void this._runCassSetup(); - } - else if (msg.command === 'void.openChatWithMessage') { - const args = msg.args; - if (args && args.length > 0) { - void vscode.commands.executeCommand('void.openChatWithMessage', args[0], 'agent'); - } - } - else if (msg.command) { - vscode.commands.executeCommand(msg.command); - } - }, null, this._disposables); - } - static createOrShow(extensionUri) { - if (HomePanel.currentPanel) { - HomePanel.currentPanel._panel.reveal(); - return; - } - const panel = vscode.window.createWebviewPanel('openclawHome', 'OCC Home', vscode.ViewColumn.One, { enableScripts: true, localResourceRoots: [ - vscode.Uri.joinPath(extensionUri, 'media'), - ] }); - HomePanel.currentPanel = new HomePanel(panel, extensionUri); - } - /** Push a live balance update to the webview popover — called from extension.ts balance poller. */ - postBalanceUpdate(amount) { - try { - this._panel.webview.postMessage({ type: 'balanceUpdate', amount }); - } - catch { /* non-fatal */ } - } - /** Re-run CLI detection and redraw — called after install completes. */ - static refresh() { - if (HomePanel.currentPanel) { - void HomePanel.currentPanel._update(); - } - } - /** - * Fully silent install — no terminal is ever opened. - * Output is streamed line-by-line to the home panel webview. - * If sudo is needed, a VS Code password dialog is shown. - * On any failure the AI is invoked immediately with full context. - */ - static async runInstall(extensionUri, platform, arch, shell) { - HomePanel.createOrShow(extensionUri); - const panel = HomePanel.currentPanel; - if (!panel) - return; - const post = (msg) => { try { - panel._panel.webview.postMessage(msg); - } - catch { } }; - let fullLog = ''; - const tee = (text) => { fullLog += text; post({ type: 'installLog', text }); writeLog(text); }; - writeLog(`\n=== runInstall START platform=${platform} arch=${arch} ===\n`); - post({ type: 'installState', state: 'running' }); - const env = panel._buildExecEnv(); - const isPermError = (s) => /EACCES|permission denied|EPERM|not permitted|Need sudo access|needs to be an Administrator/i.test(s); - // Quick command check helper (no output, just exit code) - const cmdExists = (cmd) => new Promise(resolve => cp.exec(cmd, { env, timeout: 5000, windowsHide: true }, err => resolve(!err))); - // Spawn a command silently and stream output to the panel. - const runCaptured = (cmd, args, opts = {}) => new Promise(resolve => { - const child = cp.spawn(cmd, args, { env, stdio: ['ignore', 'pipe', 'pipe'], ...opts }); - child.stdout?.on('data', (d) => tee(d.toString())); - child.stderr?.on('data', (d) => tee(d.toString())); - child.on('close', code => resolve({ code: code ?? 1 })); - child.on('error', err => { tee(`\nError: ${err.message}\n`); resolve({ code: 1 }); }); - }); - // Ask for sudo password via in-webview modal, cache with `sudo -S -v`, return success. - const cacheSudo = async (_prompt) => { - const password = await new Promise(resolve => { - HomePanel._pendingPasswordResolve = resolve; - post({ type: 'requestPassword' }); - }); - if (!password) - return false; - tee('Verifying credentials...\n'); - return new Promise(resolve => { - const child = cp.spawn('sudo', ['-S', '-v'], { env, stdio: ['pipe', 'pipe', 'pipe'] }); - child.stdin?.write(password + '\n'); - child.stdin?.end(); - child.on('close', code => resolve(code === 0)); - child.on('error', () => resolve(false)); - }); - }; - // Fix ~/.openclaw ownership after any sudo-based install. - // Uses `sudo -n` (non-interactive) which succeeds as long as the cached sudo session - // from cacheSudo() is still valid (~15 min default). Safe to call even when sudo - // wasn't used — chown is a no-op when the directory is already user-owned. - const fixOpenclawPermissions = async () => { - if (platform === 'win32') - return; - const openclawDir = path.join(os.homedir(), '.openclaw'); - if (!fs.existsSync(openclawDir)) - return; - try { - const username = os.userInfo().username; - tee('Fixing .openclaw folder ownership...\n'); - await runCaptured('sudo', ['-n', 'chown', '-R', username, openclawDir]); - await runCaptured('chmod', ['700', openclawDir]); - tee('✅ Permissions set (700, owned by you)\n'); - } - catch { /* non-fatal */ } - }; - const failCancelled = () => { - post({ type: 'installState', state: 'cancelled' }); - }; - const fail = async () => { - writeLog('=== runInstall END failed ===\n'); - post({ type: 'installState', state: 'failed' }); - const platformDesc = platform === 'darwin' ? 'macOS' : platform === 'win32' ? 'Windows' : `Linux (${arch})`; - await vscode.commands.executeCommand('void.openChatWithMessage', [ - `OpenClaw installation failed on **${platformDesc}**.`, - ``, `**System info:**`, - `- Node.js: \`${process.version}\``, - `- Shell: \`${shell || 'unknown'}\``, - ``, `**Full output:**`, `\`\`\``, fullLog.trim(), `\`\`\``, ``, - `Please diagnose what went wrong and provide exact steps to fix it on this platform.`, - `If Node.js or npm is missing, explain how to install them first.`, - ].join('\n')); - void vscode.commands.executeCommand('openclaw.balance.spend'); - }; - // After a successful npm install, find the binary's absolute path immediately - // (before PATH settles) so verifyCliBeforeSetup can use it directly. - const captureInstalledPath = async () => { - if (platform === 'win32') - return; // Windows uses cmd shims; handled by _testOpenClawCli - const candidates = []; - // 1. Ask npm where its global prefix is (same env as the install used) - const prefixResult = await new Promise(resolve => { - cp.exec('npm config get prefix', { env, timeout: 5000 }, (err, stdout) => resolve(err ? '' : (stdout || '').trim())); - }); - if (prefixResult) - candidates.push(path.join(prefixResult, 'bin', 'openclaw')); - // 2. Hard-coded common macOS/Linux paths - const home = os.homedir(); - candidates.push('/usr/local/bin/openclaw', '/opt/homebrew/bin/openclaw', path.join(home, '.local', 'bin', 'openclaw'), path.join(home, '.npm-global', 'bin', 'openclaw'), path.join(home, '.openclaw', 'bin', 'openclaw')); - // 3. nvm versions (newest first) - const nvmVersionsDir = path.join(home, '.nvm', 'versions', 'node'); - if (fs.existsSync(nvmVersionsDir)) { - fs.readdirSync(nvmVersionsDir) - .sort((a, b) => b.localeCompare(a, undefined, { numeric: true })) - .forEach(ver => candidates.push(path.join(nvmVersionsDir, ver, 'bin', 'openclaw'))); - } - const found = candidates.find(c => c && fs.existsSync(c)); - if (found) { - HomePanel._installedCliPath = found; - tee(` ✓ Binary found at ${found}\n`); - } - }; - const succeed = async () => { - await captureInstalledPath(); - tee('\n✅ Installed successfully!\n'); - writeLog('=== runInstall END ok ===\n'); - post({ type: 'installState', state: 'done' }); - // Webview drives the post-install navigation via autoSetupSkipped or wizardLog done - }; - // ══════════════════════════════════════════════════════════════════════════ - // PREREQUISITE CHECKS + PROACTIVE SUDO — run BEFORE any install attempt - // ══════════════════════════════════════════════════════════════════════════ - tee('Checking prerequisites...\n'); - if (platform === 'darwin') { - // macOS: check Xcode Command Line Tools - const xcodeOk = await new Promise(resolve => cp.exec('xcode-select -p', { env, timeout: 5000 }, (err, stdout) => { - resolve(!err && !!stdout?.toString().trim()); - })); - if (!xcodeOk) { - post({ type: 'xcodeRequired' }); - return; - } - tee(' ✓ Xcode Command Line Tools\n'); - } - if (platform === 'win32') { - // Windows: check Node.js exists; auto-install if missing (no UAC required) - let nodeOk = await cmdExists('node --version'); - if (!nodeOk) { - const nodeVersion = '20.18.2'; - const nodeArch = arch === 'arm64' ? 'arm64' : 'x64'; - const zipName = `node-v${nodeVersion}-win-${nodeArch}.zip`; - const zipUrl = `https://nodejs.org/dist/v${nodeVersion}/${zipName}`; - const localAppData = process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local'); - const installDir = path.join(localAppData, 'Programs', 'nodejs'); - const tmpZip = path.join(os.tmpdir(), zipName); - const tmpExtract = path.join(os.tmpdir(), `occ-node-${Date.now()}`); - tee(` ⚠ Node.js not found — downloading v${nodeVersion} (${nodeArch})...\n`); - const dlR = await runCaptured('powershell', [ - '-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', - `$ProgressPreference='SilentlyContinue'; Invoke-WebRequest -UseBasicParsing '${zipUrl}' -OutFile '${tmpZip}'`, - ], { windowsHide: true, shell: true }); - if (dlR.code !== 0) { - tee(' ❌ Failed to download Node.js. Check your internet connection.\n'); - await fail(); - return; - } - tee(` Extracting...\n`); - // Pre-compute the inner folder name (avoids | pipe which cmd.exe would intercept) - const innerDir = path.join(tmpExtract, `node-v${nodeVersion}-win-${nodeArch}`); - const exR = await runCaptured('powershell', [ - '-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', - `$ProgressPreference='SilentlyContinue'; ` + - `Expand-Archive -Path '${tmpZip}' -DestinationPath '${tmpExtract}' -Force; ` + - `if (Test-Path '${installDir}') { Remove-Item '${installDir}' -Recurse -Force }; ` + - `Move-Item '${innerDir}' '${installDir}'`, - ], { windowsHide: true, shell: true }); - try { - fs.unlinkSync(tmpZip); - } - catch { } - if (exR.code !== 0) { - tee(' ❌ Failed to extract Node.js.\n'); - await fail(); - return; - } - // Make new Node.js dir visible to all subsequent commands in this install run - env.PATH = [installDir, env.PATH || ''].filter(Boolean).join(';'); - env.Path = env.PATH; - nodeOk = await cmdExists('node --version'); - if (!nodeOk) { - tee(' ❌ Node.js install did not complete properly.\n'); - await fail(); - return; - } - tee(` ✓ Node.js v${nodeVersion} installed to ${installDir}\n`); - } - else { - tee(' ✓ Node.js found\n'); - } - } - const npmOk = await cmdExists('npm --version'); - if (npmOk) { - tee(' ✓ npm found\n'); - } - else if (platform === 'win32') { - tee(' ❌ npm not found after Node.js install — unexpected.\n'); - await fail(); - return; - } - else { - tee(' ⚠ npm not found — will attempt to install Node.js\n'); - } - // Proactive sudo detection (macOS / Linux only) - let sudoCached = false; - if (platform !== 'win32') { - let needsSudo = false; - if (npmOk) { - const prefixResult = await new Promise(resolve => cp.exec('npm config get prefix', { env, timeout: 5000 }, (err, stdout) => resolve(err ? '' : stdout?.toString().trim() || ''))); - if (prefixResult) { - try { - const gBin = path.join(prefixResult, 'bin'); - const gLib = path.join(prefixResult, 'lib'); - if (fs.existsSync(gBin)) - fs.accessSync(gBin, fs.constants.W_OK); - if (fs.existsSync(gLib)) - fs.accessSync(gLib, fs.constants.W_OK); - } - catch { - needsSudo = true; - } - } - } - else { - // No npm — will need to install Node.js, likely needs sudo - for (const dir of ['/usr/local/bin', '/usr/local/lib']) { - try { - if (fs.existsSync(dir)) - fs.accessSync(dir, fs.constants.W_OK); - } - catch { - needsSudo = true; - break; - } - } - } - if (needsSudo) { - tee('\n Administrator password required for installation.\n'); - const sudoOk = await cacheSudo('Enter your system password to install OpenClaw'); - if (!sudoOk) { - tee(' Incorrect password or cancelled.\n'); - failCancelled(); - return; - } - tee(' ✓ Credentials verified\n'); - sudoCached = true; - } - else { - tee(' ✓ Write access OK\n'); - } - } - tee('\n'); - // ── Step 1: try npm install -g openclaw ─────────────────────────────────── - if (npmOk) { - tee('Installing openclaw via npm...\n'); - const spawnOpts = platform === 'win32' ? { shell: true, windowsHide: true } : {}; - const npmArgs = ['install', '-g', 'openclaw']; - const r1 = sudoCached - ? await runCaptured('sudo', ['-E', 'npm', ...npmArgs]) - : await runCaptured('npm', npmArgs, spawnOpts); - if (r1.code === 0) { - if (sudoCached) - await fixOpenclawPermissions(); - await succeed(); - return; - } - // If sudo wasn't cached and we hit permission error, ask now (fallback) - if (!sudoCached && platform !== 'win32' && isPermError(fullLog)) { - tee('\nPermission error — elevated access required.\n'); - const ok = await cacheSudo('Enter your system password to install OpenClaw'); - if (!ok) { - tee('Incorrect password or cancelled.\n'); - failCancelled(); - return; - } - sudoCached = true; - tee('Retrying with elevated permissions...\n'); - const r2 = await runCaptured('sudo', ['-E', 'npm', 'install', '-g', 'openclaw']); - if (r2.code === 0) { - await fixOpenclawPermissions(); - await succeed(); - return; - } - } - tee('\nnpm install did not succeed — trying full installer script...\n'); - } - else if (platform !== 'win32') { - // ── Unix: npm not found — silent Node.js install (no terminal) ────────── - // Step A: try nvm (no sudo, no password needed) - const nvmSh = path.join(os.homedir(), '.nvm', 'nvm.sh'); - if (fs.existsSync(nvmSh)) { - tee('nvm detected — installing Node.js LTS...\n'); - const nvmR = await runCaptured('bash', ['-c', - `. "${nvmSh}" && nvm install --lts && nvm use --lts && npm install -g openclaw` - ]); - if (nvmR.code === 0) { - await fixOpenclawPermissions(); - await succeed(); - return; - } - tee('nvm install failed — falling back to system install...\n'); - } - // Step B: ensure sudo is cached (may already be from proactive check above) - if (!sudoCached) { - tee('\nNode.js is required. Your password is needed once to install it.\n'); - const sudoOk = await cacheSudo('Enter your password to install Node.js'); - if (!sudoOk) { - tee('Incorrect password or cancelled.\n'); - failCancelled(); - return; - } - sudoCached = true; - } - if (platform === 'darwin') { - // macOS: download official Node.js universal pkg, install silently with cached sudo - const nodeVersion = '20.18.2'; - const pkgUrl = `https://nodejs.org/dist/v${nodeVersion}/node-v${nodeVersion}.pkg`; - const pkgPath = `/tmp/.occ-node-${nodeVersion}.pkg`; - tee(`Downloading Node.js v${nodeVersion}...\n`); - const dlR = await runCaptured('curl', ['-fsSL', pkgUrl, '-o', pkgPath]); - if (dlR.code !== 0) { - try { - fs.unlinkSync(pkgPath); - } - catch { } - await fail(); - return; - } - tee('Installing Node.js (this may take a moment)...\n'); - const instR = await runCaptured('sudo', ['-n', 'installer', '-pkg', pkgPath, '-target', '/']); - try { - fs.unlinkSync(pkgPath); - } - catch { /* non-fatal */ } - if (instR.code !== 0) { - await fail(); - return; - } - } - else { - // Linux: detect package manager and install Node.js LTS via nodesource - const hasCmdSync = (cmd) => { - try { - cp.execSync(`which ${cmd}`, { env, stdio: 'ignore' }); - return true; - } - catch { - return false; - } - }; - tee('Installing Node.js via package manager...\n'); - let pkgResult; - if (hasCmdSync('apt-get')) { - pkgResult = await runCaptured('sudo', ['-n', 'bash', '-c', - 'curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs' - ]); - } - else if (hasCmdSync('dnf')) { - pkgResult = await runCaptured('sudo', ['-n', 'bash', '-c', - 'curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - && dnf install -y nodejs' - ]); - } - else if (hasCmdSync('yum')) { - pkgResult = await runCaptured('sudo', ['-n', 'bash', '-c', - 'curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - && yum install -y nodejs' - ]); - } - if (!pkgResult) { - tee('No supported package manager found (tried apt-get, dnf, yum).\n'); - await fail(); - return; - } - if (pkgResult.code !== 0) { - await fail(); - return; - } - } - // Step C: npm is now installed — find it and install openclaw - tee('Installing OpenClaw...\n'); - const npmCandidates = ['/usr/local/bin/npm', '/usr/bin/npm']; - const npmBin = npmCandidates.find(p => fs.existsSync(p)) ?? 'npm'; - const npmR1 = await runCaptured(npmBin, ['install', '-g', 'openclaw']); - if (npmR1.code === 0) { - await fixOpenclawPermissions(); - await succeed(); - return; - } - // Global prefix dir may be root-owned — retry with cached sudo - if (isPermError(fullLog)) { - const npmR2 = await runCaptured('sudo', ['-n', npmBin, 'install', '-g', 'openclaw']); - if (npmR2.code === 0) { - await fixOpenclawPermissions(); - await succeed(); - return; - } - } - await fail(); - return; - } - else { - tee('npm not found — running full installer script...\n'); - } - // ── Step 2: full install script ── (npm found but failed, or Windows no npm) - if (platform === 'win32') { - tee('Running PowerShell installer...\n'); - const psArgs = [ - '-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', - `$ErrorActionPreference='Stop'; $ProgressPreference='SilentlyContinue'; ` + - `Invoke-WebRequest -UseBasicParsing https://openclaw.ai/install.ps1 | Invoke-Expression`, - ]; - const r = await runCaptured('powershell', psArgs, { windowsHide: true }); - if (r.code === 0) { - await succeed(); - return; - } - } - else { - // npm was found but install failed — try the openclaw installer script - tee('Running install script...\n'); - const r1 = await runCaptured('bash', ['-c', 'curl -fsSL https://openclaw.ai/install.sh | bash']); - if (r1.code === 0) { - await fixOpenclawPermissions(); - await succeed(); - return; - } - if (isPermError(fullLog)) { - tee('\nPermission error in installer — elevated access required.\n'); - const ok = await cacheSudo('Enter your system password to complete installation'); - if (!ok) { - tee('Incorrect password or cancelled.\n'); - failCancelled(); - return; - } - tee('Retrying with elevated permissions...\n'); - const r2 = await runCaptured('sudo', ['-E', 'bash', '-c', 'curl -fsSL https://openclaw.ai/install.sh | bash']); - if (r2.code === 0) { - await fixOpenclawPermissions(); - await succeed(); - return; - } - } - } - await fail(); - } - dispose() { - HomePanel.currentPanel = undefined; - this._stopPolling(); - if (this._uninstallCloseWatcher !== undefined) { - clearInterval(this._uninstallCloseWatcher); - this._uninstallCloseWatcher = undefined; - } - if (this._uninstallCloseSidebarTimer !== undefined) { - clearTimeout(this._uninstallCloseSidebarTimer); - this._uninstallCloseSidebarTimer = undefined; - } - this._outputChannel.dispose(); - this._panel.dispose(); - this._disposables.forEach(d => d.dispose()); - } - async _update() { - const openclawDir = path.join(os.homedir(), '.openclaw'); - const dirExists = fs.existsSync(openclawDir); - // Silently fix ownership if ~/.openclaw was created as root (e.g. after a sudo install). - // sudo -n is non-interactive — only succeeds if a sudo session is still cached; otherwise a no-op. - if (dirExists && process.platform !== 'win32') { - try { - const stat = fs.statSync(openclawDir); - if (stat.uid !== process.getuid()) { - const username = os.userInfo().username; - cp.exec(`sudo -n chown -R ${username}:${username} ${openclawDir} && chmod 700 ${openclawDir}`); - } - } - catch { /* non-fatal */ } - } - const cliCheck = await this._testOpenClawCli(); - writeLog(`[cli-check] ok=${cliCheck.ok} cmd="${cliCheck.command}" output="${(cliCheck.output ?? '').trim()}"\n`); - const configFile = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - const isConfigured = fs.existsSync(configFile); - const isInstalled = isConfigured; // config file is the sole source of truth — a leftover binary without config is not "installed" - this._lastInstalledState = isInstalled; - this._lastInstalledVersion = cliCheck.ok ? (cliCheck.output ?? '').trim() : null; - const iconUri = this._panel.webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, 'media', 'icon.png')); - const occJwt = await vscode.commands.executeCommand('occ.auth.getLegacyJwt').then(r => r ?? '', () => ''); - this._lastJwt = occJwt; - // Fetch user info from extension host (avoids CORS — webview origin is vscode-webview://) - let occUser = null; - if (occJwt) { - try { - const r = await fetch('https://occ.mba.sh/api/v1/me', { - headers: { Authorization: `Bearer ${occJwt}` }, - }); - if (r.ok) - occUser = await r.json(); - } - catch { /* network error — leave null */ } - } - // Show unified setup view when OpenClaw is not fully configured yet. - if (!isConfigured) { - this._panel.webview.html = this._getSetupHtml(isInstalled, iconUri.toString(), occUser); - this._autoUpdateTriggered = false; // reset so check fires when they reach the dashboard - } - else { - const emojiBaseUri = this._panel.webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, 'media', 'emojis')).toString(); - // Read AI model info from openclaw.json - let aiModelName = ''; - try { - const raw = fs.readFileSync(configFile, 'utf-8'); - const cfg = JSON.parse(raw); - const primaryModel = cfg - ?.agents?.defaults?.model?.primary ?? ''; - if (primaryModel) { - const slashIdx = primaryModel.indexOf('/'); - const providerId = slashIdx >= 0 ? primaryModel.slice(0, slashIdx) : ''; - const modelId = slashIdx >= 0 ? primaryModel.slice(slashIdx + 1) : primaryModel; - const providers = cfg - ?.models?.providers ?? {}; - const providerModels = providers[providerId]?.models ?? []; - const modelDef = providerModels.find((m) => m.id === modelId); - aiModelName = modelDef?.name ?? primaryModel; - } - } - catch { /* openclaw.json unreadable or missing fields */ } - this._panel.webview.html = this._getHtml(isInstalled, dirExists, cliCheck, iconUri.toString(), occJwt, occUser, emojiBaseUri, aiModelName); - // One-shot version check: fires the first time the user lands on the full dashboard. - // If the installed version is outdated, MoltPilot auto-starts the update. - if (!this._autoUpdateTriggered) { - this._autoUpdateTriggered = true; - setTimeout(() => void this._autoUpdateIfOutdated(), 3000); - } - } - // Kick off gateway status polling now that the webview is ready. - this._startPolling(); - // Auto-check version on every load so the banner is always current. - // Small delay so the webview JS finishes loading before the postMessage arrives. - if (isInstalled) { - setTimeout(() => { - try { - this._panel.webview.postMessage({ type: 'autoCheckVersion' }); - } - catch { } - void this._checkLatestVersion(); - }, 800); - } - } - // ── Gateway status helpers ───────────────────────────────────────────────── - /** - * Reads the gateway port from ~/.openclaw/openclaw.json. - * Falls back to 18789 if the file is missing or the field is absent. - */ - _getConfiguredPort() { - try { - const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - const raw = fs.readFileSync(configPath, 'utf-8'); - const config = JSON.parse(raw); - const gateway = config['gateway']; - const p = gateway?.['port'] ?? config['port'] ?? config['gateway_port'] ?? config['gatewayPort']; - const n = typeof p === 'string' ? parseInt(p, 10) : typeof p === 'number' ? p : NaN; - return Number.isFinite(n) && n > 0 && n < 65536 ? n : 18789; - } - catch { - return 18789; - } - } - /** Raw HTTP probe against the configured port — no _commandAction guard. Used by the polling loop. */ - _checkGatewayStatusRaw() { - const port = this._getConfiguredPort(); - return new Promise(resolve => { - const req = http.get(`http://localhost:${port}/`, { timeout: 2000 }, res => { - res.resume(); - resolve(res.statusCode !== undefined && res.statusCode < 500 ? 'running' : 'errored'); - }); - req.on('error', (err) => { - resolve(err.code === 'ECONNREFUSED' ? 'stopped' : 'errored'); - }); - req.on('timeout', () => { req.destroy(); resolve('stopped'); }); - }); - } - async _checkGatewayStatus() { - if (this._commandAction) { - return this._commandAction === 'start' ? 'starting' - : this._commandAction === 'stop' ? 'stopping' - : 'restarting'; - } - return this._checkGatewayStatusRaw(); - } - /** - * Fast synchronous check — ~/.openclaw/openclaw.json is the single - * definitive signal that OpenClaw is installed and initialised. - */ - _quickInstallCheck() { - // Config file is the sole source of truth — no config means not installed, - // even if the binary is still on PATH. - return fs.existsSync(path.join(os.homedir(), '.openclaw', 'openclaw.json')); - } - _startPolling() { - this._stopPolling(); - this._pollTick = 0; - const tick = async () => { - if (!HomePanel.currentPanel) - return; - this._pollTick++; - // Every 2 ticks (~4s): quick existsSync check on known binary paths. - // No process spawn — just cheap stat calls. If the result differs from - // the last known state, do a full _update() to confirm and re-render. - if (this._pollTick % 2 === 0) { - const nowInstalled = this._quickInstallCheck(); - if (nowInstalled !== this._lastInstalledState) { - void this._update(); - return; - } - } - // Every 15 ticks (~30s): re-fetch CLI version fresh via login shell — no cache. - // Always push the latest value and refresh the update banner. - if (this._pollTick % 15 === 0) { - void this._testOpenClawCli().then(result => { - const current = result.ok ? (result.output ?? '').trim() : null; - const changed = current !== this._lastInstalledVersion; - this._lastInstalledVersion = current; - // Always push fresh version to the CLI row span. - try { - this._panel.webview.postMessage({ type: 'cliVersion', text: current ?? 'not found', ok: result.ok }); - } - catch { } - // Refresh the update banner whenever the version changed. - if (changed) { - try { - this._panel.webview.postMessage({ type: 'autoCheckVersion' }); - } - catch { } - void this._checkLatestVersion(); - } - }); - } - const [status, aiRunning, sidebarVisible, jwt] = await Promise.all([ - this._checkGatewayStatus(), - vscode.commands.executeCommand('void.getIsRunning').then(v => !!v, () => false), - vscode.commands.executeCommand('void.sidebar.isVisible').then(v => !!v, () => this._sidebarOpen), - vscode.commands.executeCommand('occ.auth.getLegacyJwt').then(r => r ?? '', () => ''), - ]); - this._sidebarOpen = sidebarVisible; - // Don't overwrite the intermediary status while a gateway command is in progress. - if (!this._commandAction) { - try { - this._panel.webview.postMessage({ type: 'gatewayStatus', status }); - } - catch { } - } - // After first-install setup: close the sidebar once the gateway is confirmed running. - if (this._closeSidebarOnGatewayStart && status === 'running') { - this._closeSidebarOnGatewayStart = false; - void vscode.commands.executeCommand('void.sidebar.close'); - } - try { - this._panel.webview.postMessage({ type: 'aiRunning', running: aiRunning }); - } - catch { } - try { - this._panel.webview.postMessage({ type: 'chatState', open: this._sidebarOpen }); - } - catch { } - // Full re-render if JWT changed (e.g. deep-link auth arrived while panel was open). - // We do a full _update() so the extension host fetches /api/v1/me fresh (avoids webview CORS). - if (jwt !== this._lastJwt) { - void this._update(); - return; - } - }; - void tick(); - this._pollingTimer = setInterval(tick, 2000); - } - _stopPolling() { - if (this._pollingTimer !== undefined) { - clearInterval(this._pollingTimer); - this._pollingTimer = undefined; - } - } - /** - * Polls the actual gateway HTTP status until the expected state is reached - * or the timeout expires. Streams live status updates to the webview while - * waiting so the UI stays accurate (still "Starting…" etc.). - */ - async _handleGatewayAction(action) { - const intermediary = action === 'start' ? 'starting' : action === 'stop' ? 'stopping' : 'restarting'; - const expectedState = action === 'stop' ? 'stopped' : 'running'; - this._commandAction = action; - try { - this._panel.webview.postMessage({ type: 'gatewayStatus', status: intermediary }); - } - catch { } - // Hand off to AI — it will run the command and handle any errors - const verb = action === 'restart' ? 'restart' : action; - const osInfo = `${process.platform} ${os.release()} (${process.arch})`; - const port = this._getConfiguredPort(); - const portCheckCmd = process.platform === 'win32' - ? `netstat -ano | findstr :${port}` - : `lsof -iTCP:${port} -sTCP:LISTEN -n -P 2>/dev/null || ss -tlnp 2>/dev/null | grep :${port}`; - const aiMessage = [ - `Please ${verb} the OpenClaw gateway.`, - '', - `Run the following command in your terminal:`, - '```', - `openclaw gateway ${action}`, - '```', - '', - `Environment: ${osInfo}`, - `Configured gateway port: ${port}`, - '', - `After running the command, verify the gateway has reached the expected state by checking`, - `whether port ${port} is ${expectedState === 'running' ? 'actively listening' : 'no longer listening'}:`, - '```', - portCheckCmd, - '```', - '', - `The gateway is confirmed ${expectedState === 'running' ? 'running' : 'stopped'} when port ${port} ` + - `${expectedState === 'running' ? 'shows an active LISTEN entry' : 'shows no LISTEN entry'}.`, - `If the command fails or the port does not reach the expected state, diagnose and fix the issue.`, - ].join('\n'); - await vscode.commands.executeCommand('void.openChatWithMessage', aiMessage, 'agent'); - void vscode.commands.executeCommand('openclaw.balance.spend'); - // Poll in the background until gateway reaches expected state - this._pollUntilState(expectedState, intermediary); - } - _pollUntilState(expected, intermediary, maxWaitMs = 180000) { - const deadline = Date.now() + maxWaitMs; - const tick = async () => { - if (Date.now() > deadline) { - this._commandAction = null; - try { - this._panel.webview.postMessage({ type: 'gatewayStatus', status: await this._checkGatewayStatus() }); - } - catch { } - return; - } - // Use raw status check, bypassing _commandAction guard - const status = await this._checkGatewayStatusRaw(); - if (status === expected) { - this._commandAction = null; - try { - this._panel.webview.postMessage({ type: 'gatewayStatus', status }); - } - catch { } - } - else { - try { - this._panel.webview.postMessage({ type: 'gatewayStatus', status: intermediary }); - } - catch { } - setTimeout(tick, 4000); - } - }; - setTimeout(tick, 4000); - } - // ── Version check ────────────────────────────────────────────────────────── - /** Fetches the latest openclaw version from the npm registry. */ - _fetchLatestVersion() { - return new Promise(resolve => { - // Try npm registry first — openclaw is published there. - const req = https.get({ hostname: 'registry.npmjs.org', path: '/openclaw/latest', headers: { Accept: 'application/json' } }, res => { - let data = ''; - res.on('data', (c) => (data += c)); - res.on('end', () => { - try { - resolve(JSON.parse(data).version ?? null); - } - catch { - resolve(null); - } - }); - }); - req.setTimeout(6000, () => { req.destroy(); resolve(null); }); - req.on('error', () => resolve(null)); - }); - } - async _checkLatestVersion() { - const post = (html) => { - try { - this._panel.webview.postMessage({ type: 'versionResult', html }); - } - catch { } - }; - const [cliCheck, latest] = await Promise.all([ - this._testOpenClawCli(), - this._fetchLatestVersion(), - ]); - if (!latest) { - post(`Could not reach version server — check your connection.`); - return; - } - const installed = cliCheck.ok ? (cliCheck.output ?? '').trim() : null; - if (!installed) { - post(`Latest: ${latest} — OpenClaw CLI not detected locally.`); - return; - } - // Extract the bare version number from any format: - // "OpenClaw 2026.3.12 (6472949)" → "2026.3.12" - // "v2026.3.12" → "2026.3.12" - // "2026.3.12-beta.1" → "2026.3.12" - const norm = (v) => { - const match = v.match(/\d+\.\d+(?:\.\d+)*/); - return match ? match[0] : v.replace(/^v/i, '').split(/[-+(]/)[0].trim(); - }; - if (norm(installed) === norm(latest)) { - post(`✓ Up to date — ${installed}`); - } - else { - post(`Update available: ${latest} — you have ${installed}.` + - ``); - } - } - async _autoUpdateIfOutdated() { - try { - const [cliCheck, latest] = await Promise.all([ - this._testOpenClawCli(), - this._fetchLatestVersion(), - ]); - if (!cliCheck.ok || !latest) - return; - const norm = (v) => { const m = v.match(/\d+\.\d+(?:\.\d+)*/); return m ? m[0] : v.replace(/^v/i, '').split(/[-+(]/)[0].trim(); }; - const installed = (cliCheck.output ?? '').trim(); - if (norm(installed) === norm(latest)) - return; // already up to date - void vscode.commands.executeCommand('void.openChatWithMessage', `OpenClaw is installed but version ${installed} is not the latest (${latest}). Please update it now.\n\n` + - `Run: openclaw update --yes --non-interactive\n\n` + - `If that command is not available, use: npm install -g openclaw@latest\n\n` + - `After updating, verify with: openclaw --version`, 'agent'); - } - catch { /* best-effort */ } - } - _getLoadingHtml(iconUri) { - return ` - - - - - - - - -

Welcome to OpenClaw Code

-

Cursor for OpenClaw

-
-
- Checking environment -
- -`; - } - // ── Setup wizard ─────────────────────────────────────────────────────────── - async _runSetup(data) { - const post = (msg) => { try { - this._panel.webview.postMessage(msg); - } - catch { } }; - const wizardPost = (text, done, ok) => { - writeLog(text); - post({ type: 'wizardLog', text, done, ok }); - }; - const env = this._buildExecEnv(); - // openclaw requires Node.js >= 22. Check the active version and auto-install - // via nvm if needed — the editor pins v20, so users may only have v20 active. - if (process.platform !== 'win32') { - const nodeVerRaw = await new Promise(resolve => { - cp.exec('node --version', { env, timeout: 5000 }, (err, stdout) => resolve((stdout || '').toString().trim())); - }); - const nodeMinor = parseInt((nodeVerRaw.match(/^v?(\d+)/) || [])[1] || '0', 10); - if (nodeMinor < 22) { - const nvmSh = path.join(os.homedir(), '.nvm', 'nvm.sh'); - if (fs.existsSync(nvmSh)) { - wizardPost(`Node.js ${nodeVerRaw || 'unknown'} detected — openclaw requires v22+. Installing Node.js 22 via nvm...\n`, false, false); - const nvmR = await new Promise(resolve => { - const child = cp.spawn('bash', ['-c', - `. "${nvmSh}" && nvm install 22 && nvm use 22 && nvm alias default 22` - ], { env, stdio: ['ignore', 'pipe', 'pipe'] }); - child.stdout?.on('data', (d) => wizardPost(d.toString(), false, false)); - child.stderr?.on('data', (d) => wizardPost(d.toString(), false, false)); - child.on('close', code => resolve(code ?? 1)); - child.on('error', () => resolve(1)); - }); - if (nvmR === 0) { - // Rebuild env so the new Node 22 bin is on PATH - const nvmVersionsDir = path.join(os.homedir(), '.nvm', 'versions', 'node'); - const v22dirs = fs.existsSync(nvmVersionsDir) - ? fs.readdirSync(nvmVersionsDir).filter(v => /^v?22/.test(v)) - : []; - if (v22dirs.length > 0) { - const v22bin = path.join(nvmVersionsDir, v22dirs[0], 'bin'); - env.PATH = [v22bin, env.PATH || ''].filter(Boolean).join(':'); - env.Path = env.PATH; - } - wizardPost(' ✓ Node.js 22 ready.\n', false, false); - } - else { - wizardPost(' ⚠️ Node.js 22 install via nvm failed. Setup may fail.\n', false, false); - } - } - else { - wizardPost(`⚠️ Node.js ${nodeVerRaw || 'v20'} is active but openclaw requires v22+.\n Please install Node.js 22 (e.g. via https://nodejs.org) and restart OCCode.\n`, true, false); - return; - } - } - } - const cliPath = await this._findOpenClawPath() ?? 'openclaw'; - const port = data.port && /^\d+$/.test(data.port) ? data.port : '18789'; - const isFree = data.provider === 'free'; - // Map provider choice to openclaw flags. - const providerFlags = { - free: [ - '--auth-choice', 'custom-api-key', - '--custom-base-url', 'https://occ.mba.sh/v1', - '--custom-api-key', data.apiKey, - '--custom-model-id', 'occ-legacy', - '--custom-compatibility', 'openai', - ], - anthropic: ['--auth-choice', 'apiKey', '--anthropic-api-key', data.apiKey], - openai: ['--auth-choice', 'openai-api-key', '--openai-api-key', data.apiKey], - openrouter: ['--auth-choice', 'openrouter-api-key', '--openrouter-api-key', data.apiKey], - gemini: ['--auth-choice', 'gemini-api-key', '--gemini-api-key', data.apiKey], - ollama: [ - '--auth-choice', 'custom-api-key', - '--custom-base-url', data.apiKey || 'http://localhost:11434', - '--custom-api-key', 'ollama', - '--custom-model-id', 'llama3', - '--custom-compatibility', 'openai', - ], - }; - const flags = providerFlags[data.provider]; - if (!flags) { - wizardPost('Unknown provider selected.\n', true, false); - return; - } - const args = [ - 'onboard', - '--non-interactive', '--accept-risk', - '--flow', 'quickstart', - '--gateway-auth', 'token', - '--gateway-port', port, - '--skip-channels', '--skip-skills', '--skip-health', - ...flags, - ]; - writeLog(`\n=== _runSetup START provider=${data.provider} port=${port} ===\n`); - wizardPost(isFree ? 'Installing Inference for MoltPilot...\nInstalling Inference for your new OpenClaw...\n' : 'Installing Inference for your new OpenClaw...\n', false, false); - await new Promise(resolve => { - const child = cp.spawn(cliPath, args, { - env, - stdio: ['ignore', 'pipe', 'pipe'], - ...(process.platform === 'win32' ? { shell: true, windowsHide: true } : {}), - }); - child.stdout?.on('data', (d) => wizardPost(d.toString(), false, false)); - child.stderr?.on('data', (d) => wizardPost(d.toString(), false, false)); - child.on('close', code => { - const ok = code === 0; - writeLog(`=== _runSetup END code=${code} ===\n`); - wizardPost(ok ? '\n✅ Setup complete!\n' : `\nSetup exited with code ${code}.\n`, true, ok); - if (ok) { - if (isFree) { - // Write local free-tier marker (no remote enforcement). - try { - const occDir = path.join(os.homedir(), '.occ'); - if (!fs.existsSync(occDir)) - fs.mkdirSync(occDir, { recursive: true }); - fs.writeFileSync(path.join(occDir, 'moltpilot-tier.json'), JSON.stringify({ tier: 'free', grantedAt: new Date().toISOString(), limitUsd: 1.00 })); - } - catch { /* non-fatal */ } - // Patch openclaw.json to inject correct cost/context metadata for occ-legacy. - // openclaw onboard writes the model with null/zero values; we fix them here. - try { - const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json'); - const raw = fs.readFileSync(configPath, 'utf-8'); - const cfg = JSON.parse(raw); - // Recursively find any model object with id === OCC_LEGACY_MODEL_ID and patch it. - const patchModel = (obj) => { - if (!obj || typeof obj !== 'object') - return false; - if (Array.isArray(obj)) { - for (const item of obj) { - if (patchModel(item)) - return true; - } - return false; - } - const o = obj; - if (o['id'] === OCC_LEGACY_MODEL_ID) { - o['name'] = OCC_LEGACY_MODEL_NAME; - o['reasoning'] = false; - o['input'] = ['text']; - o['cost'] = { ...OCC_LEGACY_COST }; - o['contextWindow'] = OCC_LEGACY_CONTEXT_WINDOW; - o['maxTokens'] = OCC_LEGACY_MAX_TOKENS; - return true; - } - for (const v of Object.values(o)) { - patchModel(v); - } - return false; - }; - patchModel(cfg); - fs.writeFileSync(configPath, JSON.stringify(cfg, null, 2)); - } - catch { /* non-fatal — openclaw.json may not exist yet */ } - } - setTimeout(() => { - HomePanel.refresh(); - if (isFree) { - vscode.commands.executeCommand('openclaw.openWorkspace'); - } - // Give the dashboard time to render, then open a new chat asking AI to start the gateway. - // Set flag so the sidebar auto-closes once the gateway is confirmed running. - setTimeout(() => { - this._closeSidebarOnGatewayStart = true; - vscode.commands.executeCommand('void.openChatWithMessage', 'Run `openclaw gateway start` to start the OpenClaw gateway.', 'agent'); - }, 1000); - }, 1500); - } - resolve(); - }); - child.on('error', err => { - wizardPost(`Error: ${err.message}\n`, true, false); - resolve(); - }); - }); - } - // ── Uninstall ────────────────────────────────────────────────────────────── - _schedulePostUninstallClose() { - if (this._uninstallCloseWatcher !== undefined) - return; - const maxWaitMs = 90000; - const pollMs = 2000; - const closeDelayMs = 3000; - const started = Date.now(); - let wasRunning = false; - this._uninstallCloseWatcher = setInterval(async () => { - if (Date.now() - started > maxWaitMs) { - clearInterval(this._uninstallCloseWatcher); - this._uninstallCloseWatcher = undefined; - return; - } - const isRunning = await vscode.commands.executeCommand('void.getIsRunning') - .then(v => !!v, () => false); - if (isRunning) { - wasRunning = true; - return; - } - if (!wasRunning) - return; - clearInterval(this._uninstallCloseWatcher); - this._uninstallCloseWatcher = undefined; - this._uninstallCloseSidebarTimer = setTimeout(() => { - this._uninstallCloseSidebarTimer = undefined; - vscode.commands.executeCommand('void.sidebar.close'); - }, closeDelayMs); - }, pollMs); - } - // AI-only: hand everything to MoltPilot immediately. - // MoltPilot is instructed to stop all running OpenClaw processes first - // (to release lock files), then perform full uninstall using run_with_sudo - // where elevation is required. - async _runUninstall() { - const post = (msg) => { try { - this._panel.webview.postMessage(msg); - } - catch { } }; - post({ type: 'uninstallLog', text: 'Handing off to AI for uninstall…\n', done: true, ok: true }); - setTimeout(() => { - post({ type: 'uninstallDone' }); - vscode.commands.executeCommand('void.openChatWithMessage', 'Uninstall OpenClaw. No sudo.\n1. cd $HOME\n2. pkill -9 -f openclaw\n3. openclaw uninstall --all --yes --non-interactive\nConfirm each step ran OK, then tell the user it\'s done.', 'agent'); - this._schedulePostUninstallClose(); - // Workspace cleanup (removing ~/.openclaw folder and .code-workspace file) is handled - // by openOpenClawFolder() on the next startup — manipulating workspace state here - // triggers VS Code to modify/reload the workspace, which can cause the extension to - // re-activate and open a duplicate OCC Home tab. - }, 1200); - } - async _runCassSetup() { - const post = (msg) => { try { - this._panel.webview.postMessage(msg); - } - catch { } }; - const home = os.homedir(); - const env = this._buildExecEnv(); - const isWin = process.platform === 'win32'; - const runCmd = (cmd, args, opts = {}) => new Promise(resolve => { - const child = cp.spawn(cmd, args, { env, stdio: ['ignore', 'pipe', 'pipe'], ...opts }); - let out = ''; - child.stdout?.on('data', (d) => { const s = d.toString(); out += s; post({ type: 'wizardLog', text: s, done: false, ok: false }); }); - child.stderr?.on('data', (d) => { const s = d.toString(); out += s; post({ type: 'wizardLog', text: s, done: false, ok: false }); }); - child.on('close', code => resolve({ code: code ?? 1, output: out })); - child.on('error', err => resolve({ code: 1, output: err.message })); - }); - post({ type: 'wizardLog', text: 'Setting up CASS (Coding Agent Session Search)...\n\n', done: false, ok: false }); - // ══════════════════════════════════════════════════════════════════════════ - // Phase 1 — Deterministic: detect platform, download & stage the binary - // ══════════════════════════════════════════════════════════════════════════ - // ── Step 1: Detect platform ─────────────────────────────────────────────── - post({ type: 'wizardLog', text: '① Detecting platform...\n', done: false, ok: false }); - const isMac = process.platform === 'darwin'; - const isArm = process.arch === 'arm64'; - let assetName; - if (isWin) { - assetName = 'cass-windows-amd64.zip'; - } - else if (isMac) { - assetName = 'cass-darwin-arm64.tar.gz'; - } - else { - assetName = isArm ? 'cass-linux-arm64.tar.gz' : 'cass-linux-amd64.tar.gz'; - } - post({ type: 'wizardLog', text: ` Platform: ${process.platform}/${process.arch} → ${assetName}\n`, done: false, ok: false }); - // ── Step 2: Download the binary ─────────────────────────────────────────── - post({ type: 'wizardLog', text: '\n② Downloading CASS v0.2.2 binary...\n', done: false, ok: false }); - const occDir = path.join(home, '.occ'); - const stagingDir = path.join(occDir, 'cass-staging'); - if (!fs.existsSync(occDir)) - fs.mkdirSync(occDir, { recursive: true }); - try { - fs.rmSync(stagingDir, { recursive: true, force: true }); - } - catch { } - fs.mkdirSync(stagingDir, { recursive: true }); - const downloadPath = path.join(occDir, assetName); - try { - fs.unlinkSync(downloadPath); - } - catch { } - const downloadUrl = `https://github.com/Dicklesworthstone/coding_agent_session_search/releases/download/v0.2.2/${assetName}`; - const downloadOk = await new Promise(resolve => { - const file = fs.createWriteStream(downloadPath); - const download = (url) => { - const mod = url.startsWith('https') ? require('https') : require('http'); - mod.get(url, (res) => { - if (res.statusCode === 301 || res.statusCode === 302) { - download(res.headers.location); - return; - } - if (res.statusCode !== 200) { - resolve(false); - return; - } - res.pipe(file); - file.on('finish', () => { file.close(); resolve(true); }); - }).on('error', () => resolve(false)); - }; - download(downloadUrl); - }); - if (!downloadOk) { - post({ type: 'wizardLog', text: '\n❌ Failed to download CASS binary. Check your internet connection.\n', done: true, ok: false }); - return; - } - post({ type: 'wizardLog', text: ' Downloaded.\n', done: false, ok: false }); - // ── Step 3: Extract to staging dir ──────────────────────────────────────── - post({ type: 'wizardLog', text: '\n③ Extracting to staging directory...\n', done: false, ok: false }); - if (isWin) { - await runCmd('powershell', ['-NoProfile', '-Command', `Expand-Archive -Path '${downloadPath}' -DestinationPath '${stagingDir}' -Force`], { shell: true }); - } - else { - await runCmd('tar', ['-xzf', downloadPath, '-C', stagingDir]); - } - // Clean up the downloaded archive - try { - fs.unlinkSync(downloadPath); - } - catch { } - // Verify the binary exists in staging - const stagedBinary = isWin - ? path.join(stagingDir, 'cass.exe') - : path.join(stagingDir, 'cass'); - // The binary might be nested — try to find it - if (!fs.existsSync(stagedBinary)) { - const findBinary = (dir, name) => { - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - if (entry.isFile() && entry.name === name) - return path.join(dir, entry.name); - if (entry.isDirectory()) { - const r = findBinary(path.join(dir, entry.name), name); - if (r) - return r; - } - } - return null; - }; - const found = findBinary(stagingDir, isWin ? 'cass.exe' : 'cass'); - if (found) { - fs.copyFileSync(found, stagedBinary); - } - else { - post({ type: 'wizardLog', text: '\n❌ Could not find CASS binary in the downloaded archive.\n', done: true, ok: false }); - return; - } - } - post({ type: 'wizardLog', text: ` ✅ Binary staged at ${stagedBinary}\n`, done: false, ok: false }); - // ══════════════════════════════════════════════════════════════════════════ - // Phase 2 — Hand off to MoltPilot for AI-assisted installation - // ══════════════════════════════════════════════════════════════════════════ - post({ type: 'wizardLog', text: '\n✅ Download complete — handing off to MoltPilot for installation...\n', done: true, ok: true }); - const binaryName = isWin ? 'cass.exe' : 'cass'; - const handoffMessage = isWin - ? `CASS binary has been downloaded and staged at ~/.occ/cass-staging/${binaryName}. - -Please complete the installation: -1. Create ~/.occ/bin/ if it doesn't exist and move the binary there -2. Add ~/.occ/bin/ to the user's PATH if not already present -3. Run \`cass health --json\` to verify it works -4. Run \`cass index --full --json\` to build the initial index -5. Update ~/.openclaw/agents/main/AGENTS.md with a CASS section if not already present — add instructions to use \`cass search "" --robot --limit 5\` before starting tasks -6. Restart the OpenClaw gateway with \`openclaw gateway restart\` -7. Run a smoke test: \`cass search "test" --robot --limit 1\` - -The binary is already downloaded — do NOT re-download or compile anything.` - : `CASS binary has been downloaded and staged at ~/.occ/cass-staging/${binaryName}. - -Please complete the installation: -1. Create ~/.local/bin/ if it doesn't exist and move the binary there -2. Make it executable: chmod +x ~/.local/bin/cass -3. Run \`cass health --json\` to verify it works -4. Run \`cass index --full --json\` to build the initial index -5. Update ~/.openclaw/agents/main/AGENTS.md with a CASS section if not already present — add instructions to use \`cass search "" --robot --limit 5\` before starting tasks -6. Restart the OpenClaw gateway with \`openclaw gateway restart\` -7. Run a smoke test: \`cass search "test" --robot --limit 1\` - -The binary is already downloaded — do NOT re-download or compile anything.`; - setTimeout(() => { - vscode.commands.executeCommand('void.openChatWithMessage', handoffMessage, 'agent'); - }, 1200); - // Refresh panel - setTimeout(() => HomePanel.refresh(), 2500); - } - _getSetupHtml(isInstalled, iconUri, occUser = null) { - // Render user area statically (avoids JS innerHTML escaping issues) - let userAreaHtml; - if (!occUser) { - userAreaHtml = ``; - } - else { - const initial = (occUser.email || '?')[0].toUpperCase(); - const safeEmail = occUser.email.replace(/"/g, '"').replace(/` - : initial; - userAreaHtml = ` -
- -
-
-
${avatarImg}
-
${safeEmail}
-
- -
- -
-
`; - } - const providers = [ - { id: 'anthropic', label: 'Anthropic Claude', hint: 'console.anthropic.com/settings/keys', placeholder: 'sk-ant-...' }, - { id: 'openai', label: 'OpenAI', hint: 'platform.openai.com/api-keys', placeholder: 'sk-...' }, - { id: 'openrouter', label: 'OpenRouter', hint: 'openrouter.ai/settings/keys', placeholder: 'sk-or-...' }, - { id: 'gemini', label: 'Google Gemini', hint: 'aistudio.google.com/apikey', placeholder: 'AIza...' }, - ]; - const providerCards = providers.map(p => ``).join('\n '); - return ` - - - - - - - - -
${userAreaHtml}
- - - -
Set up OpenClaw
-
Follow the steps below to get started
- - -
-
-
${isInstalled ? '✓' : '1'}
-
Install
OpenClaw
-
-
-
2
-
Configure
AI Model
-
-
-
3
-
Ready
-
-
- - -
- -
- - - - - - - - - - - - - - -
-
-
Working
- - - -
- - - - - - -`; - } - _getWizardHtml(iconUri, occUser = null) { - // Render user area statically (avoids JS innerHTML escaping issues) - let userAreaHtml; - if (!occUser) { - userAreaHtml = ``; - } - else { - const initial = (occUser.email || '?')[0].toUpperCase(); - const safeEmail = occUser.email.replace(/"/g, '"').replace(/` - : initial; - userAreaHtml = ` -
- -
-
-
${avatarImg}
-
${safeEmail}
-
- -
- -
-
`; - } - const providers = [ - { id: 'anthropic', label: 'Anthropic Claude', hint: 'console.anthropic.com/settings/keys', placeholder: 'sk-ant-...' }, - { id: 'openai', label: 'OpenAI', hint: 'platform.openai.com/api-keys', placeholder: 'sk-...' }, - { id: 'openrouter', label: 'OpenRouter', hint: 'openrouter.ai/settings/keys', placeholder: 'sk-or-...' }, - { id: 'gemini', label: 'Google Gemini', hint: 'aistudio.google.com/apikey', placeholder: 'AIza...' }, - ]; - const providerCards = providers.map(p => ``).join('\n '); - return ` - - - - - - - - -
- ${userAreaHtml} -
- - -
- -
- - -
-
- - - - - - - - - - - - -`; - } - _getHtml(isInstalled, dirExists, cliCheck, iconUri, occJwt = '', occUser = null, emojiBaseUri = '', aiModelName = '') { - // Render user area statically (avoids JS innerHTML escaping / runtime errors) - let userAreaHtml; - if (!occUser) { - userAreaHtml = ``; - } - else { - const initial = (occUser.email || '?')[0].toUpperCase(); - const safeEmail = occUser.email.replace(/"/g, '"').replace(/` - : initial; - const popoverAvatar = occUser.picture - ? `` - : initial; - const balance = '$' + parseFloat(String(occUser.balance_usd || 0)).toFixed(2); - const keysHtml = (occUser.api_keys && occUser.api_keys.occKey) ? ` -
-
API Key
-
- OpenClaw - ${occUser.api_keys.occKey.slice(0, 8)}···${occUser.api_keys.occKey.slice(-4)} - -
-
-
` : ''; - userAreaHtml = ` -
- -
-
-
${popoverAvatar}
-
${safeEmail}
-
${balance} credits
-
- -
- ${keysHtml} - -
-
`; - } - const statusIcon = isInstalled ? '✅' : '⚠️'; - const statusText = isInstalled ? 'OpenClaw detected' : 'OpenClaw not found'; - const statusClass = isInstalled ? 'detected' : 'not-found'; - const buttonLabel = isInstalled ? 'Open Web Control' : 'Install OpenClaw'; - const buttonCommand = isInstalled ? 'openclaw.configure' : 'openclaw.install'; - const dirText = dirExists ? 'found' : 'missing'; - const dirClass = dirExists ? 'ok' : 'warn'; - const cliText = cliCheck.ok ? (cliCheck.output || 'ok') : (cliCheck.output || cliCheck.error || 'not found'); - const cliClass = cliCheck.ok ? 'ok' : 'warn'; - const cliHint = cliCheck.ok ? '' : ` (tried: ${cliCheck.command})`; - // ── Lucide icons (inline SVG, no CDN needed) ────────────────────────────── - const ic = (d, size = 13, opacity = '0.55') => `${d}`; - const icFolder = ic(''); - const icTerminal = ic(''); - const icServer = ic(''); - const icBot = ic(''); - const icChip = ic('', 13); - // Button icons — slightly larger, full opacity - const icSettings = ic('', 15, '0.9'); - const icDownload = ic('', 15, '0.9'); - const icRefreshCw = ic('', 14, '0.85'); - const icTerminalBtn = ic('', 15, '0.9'); - const icBtnPrimary = isInstalled ? icSettings : icDownload; - return ` - - - - - - - - -
- - ${isInstalled ? `
- - -
` : ''} - - - ${isInstalled ? ` - - -
${userAreaHtml}
-
- - -
-
- -

Under Development

-

This app isn't ready yet — but you can help build it.
Copy the message below and post it in the MBA community.

-
- I want to contribute to [App] - -
-

-
- - -
-
-
- - -
-
-

Uninstall OpenClaw?

-

This will remove the CLI, stop the gateway, and clean up all config files. This cannot be undone.

-
- - -
-
-
- - -
-
-

🔐 Administrator Password Required

-

OpenClaw needs elevated permissions to install globally.
Your password is used once and never stored.

- -
- - -
-
-
- - - - - ${isInstalled ? ` - -

Welcome to OpenClaw Code

-
-
- ${icFolder} - Config (~/.openclaw/openclaw.json) - ${dirText} -
-
- ${icTerminal} - CLI (openclaw --version) - ${cliText}${cliHint} -
-
- ${icServer} - Gateway - - - Checking… - - -
- ${aiModelName ? ` -
- ${icChip} - AI Model - ${aiModelName} -
` : ''} -
- ${icBot} - MoltPilot - - - - Idle - - -
-
-
- ${['AGENTS.md', 'IDENTITY.md', 'USER.md', 'MEMORY.md', 'SOUL.md', 'HEARTBEAT.md'].map(f => `${f}`).join('\n ')} -
-
- - - -
- ` : ` -
- -
- - -
-
- `} - - - -`; - } - async _testOpenClawCli() { - if (process.platform === 'win32') { - // ── 1. Find openclaw.mjs (checks npm prefix + version-manager paths) ────── - const mjs = await this._findWindowsOpenClawMjs(); - if (mjs) { - // ── 2. Find node.exe (PATH-first, then nvm/Volta/scoop, then hardcoded) ── - const nodeExe = await this._findWindowsNodeExe(); - if (nodeExe) { - return this._spawnNodeMjs(nodeExe, mjs, `"${nodeExe}" "${mjs}" --version`); - } - } - // ── 3. .cmd / .exe shim fallback (npm prefix + scoop shims) ────────────── - const cmdPath = await this._findWindowsOpenClawCmd(); - if (cmdPath) { - return new Promise(resolve => { - cp.execFile('cmd.exe', ['/c', cmdPath, '--version'], { timeout: 30000, windowsHide: true, maxBuffer: 1024 * 1024 }, (error, stdout, stderr) => { - if (error) { - const timedOut = error.signal === 'SIGTERM' || error.code == null; - resolve({ - ok: false, - error: timedOut ? 'Timed out' : (stderr?.toString().trim() || `Exit ${error.code}`), - command: `${cmdPath} --version`, - }); - } - else { - resolve({ ok: true, output: (stdout || stderr || '').toString().trim(), command: `${cmdPath} --version` }); - } - }); - }); - } - return { ok: false, error: 'openclaw not found', command: 'openclaw --version' }; - } - // ── Mac / Linux ────────────────────────────────────────────────────────────── - // Strategy: source nvm/nvm.sh first so the nvm-managed binary takes priority - // over any stale system install (e.g. /usr/local/bin/openclaw). Falls back to - // enumerating ~/.nvm/versions/node/*/bin/openclaw (newest version first), - // then the existing path-based search. - const home = os.homedir(); - const nvmSh = path.join(home, '.nvm', 'nvm.sh'); - // 1. Try sourcing nvm so it activates the default alias / current version. - if (fs.existsSync(nvmSh)) { - const nvmCmd = `bash -c '. "${nvmSh}" 2>/dev/null && openclaw --version 2>&1'`; - const nvmResult = await new Promise(resolve => { - cp.exec(nvmCmd, { timeout: 10000, maxBuffer: 1024 * 1024 }, (error, stdout) => { - const out = (stdout || '').toString().trim(); - // Extract just the version line (ignores nvm banner noise) - const line = out.split('\n').find(l => /\d/.test(l) && !l.startsWith('nvm') && !l.startsWith('Now')) || ''; - if (!error && line) { - resolve({ ok: true, output: line.trim(), command: nvmCmd }); - } - else { - resolve({ ok: false, error: out || error?.message || 'not found', command: nvmCmd }); - } - }); - }); - if (nvmResult.ok) - return nvmResult; - } - // 2. Enumerate ~/.nvm/versions/node/*/bin/openclaw — newest node version first. - const nvmVersionsDir = path.join(home, '.nvm', 'versions', 'node'); - if (fs.existsSync(nvmVersionsDir)) { - const nodeVersions = fs.readdirSync(nvmVersionsDir) - .sort((a, b) => b.localeCompare(a, undefined, { numeric: true })); // newest first - for (const ver of nodeVersions) { - const candidate = path.join(nvmVersionsDir, ver, 'bin', 'openclaw'); - if (fs.existsSync(candidate)) { - const result = await new Promise(resolve => { - cp.execFile(candidate, ['--version'], { timeout: 10000, maxBuffer: 1024 * 1024 }, (error, stdout, stderr) => { - const out = (stdout || stderr || '').toString().trim(); - if (error || !out) - resolve({ ok: false, error: out || error?.message, command: `${candidate} --version` }); - else - resolve({ ok: true, output: out, command: `${candidate} --version` }); - }); - }); - if (result.ok) - return result; - } - } - } - // 3. Fall back to path-based search. - const cliPath = await this._findOpenClawPath(); - if (!cliPath) { - return { ok: false, error: 'openclaw not found', command: 'openclaw --version' }; - } - return new Promise(resolve => { - cp.execFile(cliPath, ['--version'], { timeout: 15000, maxBuffer: 1024 * 1024, env: this._buildExecEnv() }, (error, stdout, stderr) => { - if (error) { - resolve({ ok: false, error: stderr?.toString().trim() || error.message || `Exit ${error.code}`, command: `${cliPath} --version` }); - } - else { - resolve({ ok: true, output: (stdout || stderr || '').toString().trim(), command: `${cliPath} --version` }); - } - }); - }); - } - /** - * Finds openclaw.mjs in the npm global prefix (dynamic) and common - * version-manager install paths so any Node setup is covered. - */ - async _findWindowsOpenClawMjs() { - const home = os.homedir(); - const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming'); - const localAppData = process.env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'); - // Ask npm where its global prefix lives — covers custom prefixes / nvm / fnm - const prefixResult = await this._runCommand('npm config get prefix', 3000); - const npmPrefix = (prefixResult.stdout || '').trim().replace(/['"]/g, ''); - const candidates = [ - npmPrefix ? path.join(npmPrefix, 'node_modules', 'openclaw', 'openclaw.mjs') : '', - path.join(appData, 'npm', 'node_modules', 'openclaw', 'openclaw.mjs'), - // scoop (nodejs / nodejs-lts) - path.join(home, 'scoop', 'apps', 'nodejs', 'current', 'node_modules', 'openclaw', 'openclaw.mjs'), - path.join(home, 'scoop', 'apps', 'nodejs-lts', 'current', 'node_modules', 'openclaw', 'openclaw.mjs'), - // Volta - path.join(localAppData, 'Volta', 'tools', 'image', 'packages', 'openclaw', 'lib', 'node_modules', 'openclaw', 'openclaw.mjs'), - ].filter(Boolean); - return candidates.find(p => fs.existsSync(p)); - } - /** - * Finds the real node.exe for Windows. - * Strategy: PATH lookup first (handles nvm-windows, fnm, Volta shims, winget, - * and standard installs), then version-manager directories, then hardcoded paths. - */ - async _findWindowsNodeExe() { - const home = os.homedir(); - const programFiles = process.env.ProgramFiles || 'C:\\Program Files'; - const localAppData = process.env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'); - // 1. PATH lookup — most reliable; works for nvm-windows, fnm, Volta shims, - // winget, and standard installers without any special-casing. - try { - const found = await new Promise((resolve, reject) => cp.exec('where node.exe', { timeout: 3000, windowsHide: true }, (err, stdout) => err ? reject(err) : resolve(stdout.trim().split(/\r?\n/)[0]?.trim() || ''))); - // Skip if the path belongs to VSCodium / VS Code / Electron (wrong node) - if (found && fs.existsSync(found) && !/vscodium|vscode|electron/i.test(found)) { - return found; - } - } - catch { } - // 2. nvm-windows — %NVM_HOME%\\node.exe - const nvmHome = process.env.NVM_HOME; - if (nvmHome && fs.existsSync(nvmHome)) { - try { - const versions = fs.readdirSync(nvmHome) - .filter(e => /^\d+\.\d+\.\d+$/.test(e)) - .sort((a, b) => b.localeCompare(a, undefined, { numeric: true })); - for (const v of versions.slice(0, 5)) { - const p = path.join(nvmHome, v, 'node.exe'); - if (fs.existsSync(p)) - return p; - } - } - catch { } - } - // 3. Volta — %LOCALAPPDATA%\Volta\tools\image\node\\node.exe - const voltaNodeDir = path.join(localAppData, 'Volta', 'tools', 'image', 'node'); - if (fs.existsSync(voltaNodeDir)) { - try { - const versions = fs.readdirSync(voltaNodeDir) - .filter(e => /^\d+\.\d+\.\d+$/.test(e)) - .sort((a, b) => b.localeCompare(a, undefined, { numeric: true })); - for (const v of versions.slice(0, 5)) { - const p = path.join(voltaNodeDir, v, 'node.exe'); - if (fs.existsSync(p)) - return p; - } - } - catch { } - } - // 4. scoop (nodejs / nodejs-lts) - for (const app of ['nodejs', 'nodejs-lts']) { - const p = path.join(home, 'scoop', 'apps', app, 'current', 'node.exe'); - if (fs.existsSync(p)) - return p; - } - // 5. Standard installer, chocolatey, winget fallbacks - const hardcoded = [ - path.join(programFiles, 'nodejs', 'node.exe'), - 'C:\\Program Files\\nodejs\\node.exe', - 'C:\\Program Files (x86)\\nodejs\\node.exe', - path.join(localAppData, 'Programs', 'nodejs', 'node.exe'), - 'C:\\ProgramData\\chocolatey\\bin\\node.exe', - 'C:\\tools\\nodejs\\node.exe', - ]; - return hardcoded.find(p => fs.existsSync(p)); - } - /** - * Finds openclaw.cmd / .exe shim using the npm global prefix (dynamic) - * and common fallback locations including scoop shims. - */ - async _findWindowsOpenClawCmd() { - const home = os.homedir(); - const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming'); - const prefixResult = await this._runCommand('npm config get prefix', 3000); - const npmPrefix = (prefixResult.stdout || '').trim().replace(/['"]/g, ''); - const candidates = [ - npmPrefix ? path.join(npmPrefix, 'openclaw.cmd') : '', - npmPrefix ? path.join(npmPrefix, 'openclaw.exe') : '', - path.join(appData, 'npm', 'openclaw.cmd'), - path.join(appData, 'npm', 'openclaw.exe'), - // scoop shims - path.join(home, 'scoop', 'shims', 'openclaw.cmd'), - path.join(home, 'scoop', 'shims', 'openclaw.exe'), - ].filter(Boolean); - return candidates.find(p => fs.existsSync(p)); - } - /** Spawns ` --version` and resolves with the result. */ - _spawnNodeMjs(nodeExe, mjs, display) { - return new Promise(resolve => { - const child = cp.spawn(nodeExe, [mjs, '--version'], { - windowsHide: true, - stdio: ['ignore', 'pipe', 'pipe'], - }); - let stdout = ''; - let stderr = ''; - child.stdout?.on('data', d => (stdout += d)); - child.stderr?.on('data', d => (stderr += d)); - const timer = setTimeout(() => child.kill('SIGTERM'), 30000); - child.on('close', (code, signal) => { - clearTimeout(timer); - if (signal === 'SIGTERM' || code === null) { - resolve({ ok: false, error: 'Timed out after 30s', command: display }); - } - else if (code !== 0) { - resolve({ ok: false, error: stderr.trim() || `Exit ${code}`, command: display }); - } - else { - resolve({ ok: true, output: (stdout || stderr).trim(), command: display }); - } - }); - child.on('error', err => { - clearTimeout(timer); - resolve({ ok: false, error: err.message, command: display }); - }); - }); - } - async _findOpenClawPath() { - const cfgPath = vscode.workspace.getConfiguration('openclaw').get('cliPath'); - if (cfgPath && fs.existsSync(cfgPath)) - return cfgPath; - const envPath = process.env.OPENCLAW_CLI; - if (envPath && fs.existsSync(envPath)) - return envPath; - if (process.platform === 'win32') { - const appData = process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'); - const candidates = [ - path.join(appData, 'npm', 'openclaw.cmd'), - path.join(appData, 'npm', 'openclaw.exe'), - path.join(appData, 'npm', 'openclaw.bat'), - path.join(appData, 'npm', 'openclaw.ps1'), - ]; - for (const candidate of candidates) { - if (fs.existsSync(candidate)) - return candidate; - } - } - if (process.platform === 'win32') { - for (const probe of ['openclaw.cmd', 'openclaw.exe', 'openclaw.bat', 'openclaw.ps1', 'openclaw']) { - const result = await this._runCommand(`where ${probe}`, 2000); - if (!result.error && !result.notFound) { - const out = (result.stdout || '').trim(); - if (out) { - const candidates = out - .split(/\r?\n/) - .map(l => l.trim().replace(/^"+|"+$/g, '')) - .filter(Boolean); - for (const candidate of candidates) { - const resolved = this._resolveWindowsCliPath(candidate); - if (fs.existsSync(resolved)) - return resolved; - } - } - } - } - } - else { - const result = await this._runCommand('which openclaw', 2000); - if (!result.error && !result.notFound) { - const out = (result.stdout || '').trim(); - if (out) { - const candidates = out - .split(/\r?\n/) - .map(l => l.trim().replace(/^"+|"+$/g, '')) - .filter(Boolean); - for (const candidate of candidates) { - const resolved = this._resolveWindowsCliPath(candidate); - if (fs.existsSync(resolved)) - return resolved; - } - } - } - } - const npmCandidates = await this._getNpmGlobalCliCandidates(); - for (const candidate of npmCandidates) { - if (fs.existsSync(candidate)) - return candidate; - } - const fallback = this._getCandidateCliPaths(); - for (const candidate of fallback) { - if (fs.existsSync(candidate)) - return candidate; - } - return undefined; - } - _getCandidateCliPaths() { - const home = os.homedir(); - if (process.platform === 'win32') { - const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming'); - const localAppData = process.env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'); - const programFiles = process.env.ProgramFiles || 'C:\\Program Files'; - return [ - path.join(appData, 'npm', 'openclaw.cmd'), - path.join(appData, 'npm', 'openclaw.exe'), - path.join(appData, 'npm', 'openclaw.bat'), - path.join(appData, 'npm', 'openclaw.ps1'), - path.join(localAppData, 'Programs', 'OpenClaw', 'openclaw.exe'), - path.join(localAppData, 'OpenClaw', 'openclaw.exe'), - path.join(programFiles, 'OpenClaw', 'openclaw.exe'), - path.join(programFiles, 'OpenClaw', 'bin', 'openclaw.exe'), - path.join(localAppData, 'Microsoft', 'WindowsApps', 'openclaw.exe'), - path.join(home, '.openclaw', 'bin', 'openclaw.exe'), - ]; - } - return [ - '/usr/local/bin/openclaw', - '/opt/homebrew/bin/openclaw', - path.join(home, '.local', 'bin', 'openclaw'), - path.join(home, '.npm-global', 'bin', 'openclaw'), - path.join(home, '.openclaw', 'bin', 'openclaw'), - ]; - } - async _getNpmGlobalCliCandidates() { - const result = await this._runCommand('npm config get prefix', 2000); - const prefix = (result.stdout || '').trim(); - if (!prefix) - return []; - if (process.platform === 'win32') { - const base = this._resolveWindowsCliPath(path.join(prefix, 'openclaw')); - return [ - `${base}.cmd`, - `${base}.exe`, - `${base}.bat`, - `${base}.ps1`, - base, - ]; - } - return [path.join(prefix, 'bin', 'openclaw')]; - } - _resolveWindowsCliPath(candidate) { - if (process.platform !== 'win32') - return candidate; - const cleaned = candidate.replace(/^"+|"+$/g, ''); - if (fs.existsSync(cleaned)) - return cleaned; - if (path.extname(cleaned)) - return cleaned; - const exts = ['.cmd', '.exe', '.bat', '.ps1']; - for (const ext of exts) { - const withExt = `${cleaned}${ext}`; - if (fs.existsSync(withExt)) - return withExt; - } - return cleaned; - } - _getPreferredWindowsCmdPath(candidate) { - if (process.platform !== 'win32') - return candidate; - const appData = process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'); - const shim = path.join(appData, 'npm', 'openclaw.cmd'); - if (fs.existsSync(shim)) - return shim; - return candidate; - } - _runCommand(cmd, timeoutMs) { - const env = this._buildExecEnv(); - return new Promise(resolve => { - cp.exec(cmd, { timeout: timeoutMs, windowsHide: true, maxBuffer: 1024 * 1024, env }, (error, stdout, stderr) => { - const result = { stdout: stdout?.toString() || '', stderr: stderr?.toString() || '' }; - if (error) { - result.error = error.message || 'Command failed'; - const text = `${result.stderr}\n${result.error}`.toLowerCase(); - result.notFound = - error.code === 'ENOENT' || - text.includes('not recognized as an internal or external command') || - text.includes('command not found'); - } - resolve(result); - }); - }); - } - _buildExecEnv() { - const env = { ...process.env }; - const basePath = env.PATH || env.Path || ''; - const extra = []; - if (process.platform === 'win32') { - const appData = env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'); - if (appData) - extra.push(path.join(appData, 'npm')); - if (env.ProgramFiles) - extra.push(path.join(env.ProgramFiles, 'nodejs')); - if (env.LOCALAPPDATA) - extra.push(path.join(env.LOCALAPPDATA, 'Programs', 'nodejs')); - const systemRoot = env.SystemRoot || env.WINDIR; - if (systemRoot) - extra.push(path.join(systemRoot, 'System32')); - } - else { - extra.push('/usr/local/bin', '/opt/homebrew/bin'); - extra.push(path.join(os.homedir(), '.local', 'bin')); - extra.push(path.join(os.homedir(), '.npm-global', 'bin')); - extra.push(path.join(os.homedir(), '.openclaw', 'bin')); - // Add nvm-managed Node.js paths (newest version first) - const nvmDir = process.env.NVM_DIR || path.join(os.homedir(), '.nvm'); - const nvmVersionsDir = path.join(nvmDir, 'versions', 'node'); - if (fs.existsSync(nvmVersionsDir)) { - try { - const versions = fs.readdirSync(nvmVersionsDir) - .filter(e => /^v?\d+/.test(e)) - .sort((a, b) => b.localeCompare(a, undefined, { numeric: true })); - for (const v of versions.slice(0, 3)) { - extra.push(path.join(nvmVersionsDir, v, 'bin')); - } - } - catch { /* non-fatal */ } - } - // Add fnm paths (popular Node version manager on macOS) - const fnmDir = path.join(os.homedir(), '.local', 'share', 'fnm', 'node-versions'); - if (fs.existsSync(fnmDir)) { - try { - const versions = fs.readdirSync(fnmDir) - .filter(e => /^v?\d+/.test(e)) - .sort((a, b) => b.localeCompare(a, undefined, { numeric: true })); - for (const v of versions.slice(0, 3)) { - extra.push(path.join(fnmDir, v, 'installation', 'bin')); - } - } - catch { /* non-fatal */ } - } - // Homebrew Node.js (macOS) - if (process.platform === 'darwin') { - extra.push('/opt/homebrew/opt/node/bin'); - extra.push('/usr/local/opt/node/bin'); - } - } - const sep = process.platform === 'win32' ? ';' : ':'; - env.PATH = [...extra, basePath].filter(Boolean).join(sep); - env.Path = env.PATH; - return env; - } -} -exports.HomePanel = HomePanel; -//# sourceMappingURL=home.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/home.js.map b/apps/editor/extensions/openclaw/out/panels/home.js.map deleted file mode 100644 index d7a75bef..00000000 --- a/apps/editor/extensions/openclaw/out/panels/home.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/panels/home.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/onboarding.js b/apps/editor/extensions/openclaw/out/panels/onboarding.js deleted file mode 100644 index cba7567a..00000000 --- a/apps/editor/extensions/openclaw/out/panels/onboarding.js +++ /dev/null @@ -1,355 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.OnboardingPanel = void 0; -const vscode = __importStar(require("vscode")); -/** - * First-run onboarding panel. - * Shows once on first launch — choose AI preference + theme. - * Completely separate from OCC Home. - * After completion it marks occ.onboardingDone = true and opens OCC Home. - */ -class OnboardingPanel { - /** Show onboarding if it hasn't been completed yet. Returns true if shown. */ - static showIfNeeded(context, extensionUri) { - const done = context.globalState.get(OnboardingPanel.ONBOARDING_DONE_KEY) ?? false; - if (done) { - return false; - } - OnboardingPanel._show(context, extensionUri); - return true; - } - /** Force-show (e.g. from a "Redo onboarding" command). */ - static show(context, extensionUri) { - OnboardingPanel._show(context, extensionUri); - } - static _show(context, extensionUri) { - if (OnboardingPanel._panel) { - OnboardingPanel._panel.reveal(); - return; - } - const panel = vscode.window.createWebviewPanel('occOnboarding', 'Welcome to OCC', vscode.ViewColumn.One, { enableScripts: true, localResourceRoots: [vscode.Uri.joinPath(extensionUri, 'media')] }); - OnboardingPanel._panel = panel; - const iconUri = panel.webview.asWebviewUri(vscode.Uri.joinPath(extensionUri, 'media', 'icon.png')); - panel.webview.html = OnboardingPanel._getHtml(iconUri.toString()); - panel.webview.onDidReceiveMessage(async (msg) => { - if (msg.command === 'setTheme') { - await vscode.workspace.getConfiguration('workbench').update('colorTheme', msg.theme, vscode.ConfigurationTarget.Global); - } - else if (msg.command === 'occOnboarding') { - const aiPreference = msg.aiPreference; - if (aiPreference) { - await context.globalState.update(OnboardingPanel.AI_PREFERENCE_KEY, aiPreference); - } - await context.globalState.update(OnboardingPanel.ONBOARDING_DONE_KEY, true); - panel.dispose(); - // Open OCC Home after a short delay so the panel close animation finishes. - setTimeout(() => { - vscode.commands.executeCommand('openclaw.home'); - }, 200); - } - }); - panel.onDidDispose(() => { OnboardingPanel._panel = undefined; }); - } - static _getHtml(iconUri) { - const providers = [ - { id: 'anthropic', label: 'Anthropic Claude', hint: 'console.anthropic.com/settings/keys', placeholder: 'sk-ant-...' }, - { id: 'openai', label: 'OpenAI', hint: 'platform.openai.com/api-keys', placeholder: 'sk-...' }, - { id: 'openrouter', label: 'OpenRouter', hint: 'openrouter.ai/settings/keys', placeholder: 'sk-or-...' }, - { id: 'gemini', label: 'Google Gemini', hint: 'aistudio.google.com/apikey', placeholder: 'AIza...' }, - ]; - const providerCards = providers.map(p => ``).join('\n '); - return ` - - - - - - - - -

Welcome to OCC

-

Let's get you set up in a few quick steps.

- - -
-

Choose your AI

-

How do you want to power your AI assistant?

-
- -
-
$5 free to start
-
MoltPilot's AI Brain, powered by MBA.sh.
Sign up required. No card needed.
- -
- -
-
-
- -
-
- -
-
- -
-
- -
-
-
Use your own API key. Always free. No account needed.
- -
-
-
- - - - - - - - - - - - -`; - } -} -exports.OnboardingPanel = OnboardingPanel; -OnboardingPanel.ONBOARDING_DONE_KEY = 'occ.onboardingDone'; -OnboardingPanel.AI_PREFERENCE_KEY = 'occ.aiPreference'; -//# sourceMappingURL=onboarding.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/onboarding.js.map b/apps/editor/extensions/openclaw/out/panels/onboarding.js.map deleted file mode 100644 index 2e523ac8..00000000 --- a/apps/editor/extensions/openclaw/out/panels/onboarding.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/panels/onboarding.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/setup.js b/apps/editor/extensions/openclaw/out/panels/setup.js deleted file mode 100644 index c7e7aa57..00000000 --- a/apps/editor/extensions/openclaw/out/panels/setup.js +++ /dev/null @@ -1,653 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConfigPanel = void 0; -const vscode = __importStar(require("vscode")); -const fs = __importStar(require("fs")); -const path = __importStar(require("path")); -const config_path_1 = require("./config-path"); -function sanitizeJson5(input) { - return input - .replace(/\/\*[\s\S]*?\*\//g, "") - .replace(/(^|[^:])\/\/.*$/gm, "$1") - .replace(/,\s*(\}|\])/g, "$1"); -} -function readOpenClawConfig(configPath) { - try { - const contents = fs.readFileSync(configPath, "utf-8"); - return JSON.parse(sanitizeJson5(contents)); - } - catch (error) { - console.warn("[OpenClaw] Unable to read openclaw.json:", error); - return null; - } -} -function readOpenClawConfigRaw(configPath) { - try { - return fs.readFileSync(configPath, "utf-8"); - } - catch (error) { - console.warn("[OpenClaw] Unable to read raw openclaw.json:", error); - return getDefaultConfig(); - } -} -function getDefaultConfig() { - return `{ - // OpenClaw configuration - "agents": { - "list": [] - }, - "channels": {}, - "automation": { - "cronJobs": [] - }, - "gateway": { - "port": 3000, - "host": "localhost" - } -}`; -} -function buildControlCenterData(configPath) { - const rawConfig = readOpenClawConfig(configPath); - if (!rawConfig) { - // Return empty state if no config exists or is invalid - return { - agents: [], - channels: [], - automation: { cronJobs: [] }, - maintenance: { doctor: { status: "healthy" } }, - }; - } - const agents = rawConfig?.agents?.list?.map((a) => ({ id: a.id || "unknown" })) ?? []; - const channelsConfig = rawConfig?.channels ?? {}; - const channels = Object.entries(channelsConfig).map(([channelKey, channelData]) => { - const enabled = channelData?.enabled ?? false; - return { - channel: channelKey, - description: `${channelKey} surface configuration`, - accounts: [ - { - id: `${channelKey}-primary`, - title: `${channelKey} · Primary`, - status: enabled ? "connected" : "needs-relink" - }, - ], - }; - }); - const cronJobs = rawConfig?.automation?.cronJobs ?? []; - return { - agents, - channels, - automation: { - cronJobs: cronJobs.map((j) => ({ - status: j?.status === "paused" ? "paused" : "enabled" - })), - }, - maintenance: { - doctor: { status: "healthy" }, - }, - }; -} -function getNonce() { - let text = ""; - const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for (let i = 0; i < 32; i += 1) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} -class ConfigPanel { - static createOrShow(extensionUri) { - if (ConfigPanel.currentPanel) { - ConfigPanel.currentPanel.dispose(); - } - const panel = vscode.window.createWebviewPanel("openclawConfigV2", "OpenClaw Configuration", vscode.ViewColumn.Two, { - enableScripts: true, - retainContextWhenHidden: false, - localResourceRoots: [vscode.Uri.joinPath(extensionUri, "media")], - }); - ConfigPanel.currentPanel = new ConfigPanel(panel, extensionUri); - } - constructor(panel, extensionUri) { - this._disposables = []; - this._lastModified = 0; - this._panel = panel; - this._extensionUri = extensionUri; - this._panel.onDidDispose(() => this.dispose(), null, this._disposables); - // Set up file watcher for auto-refresh - this._setupFileWatcher(); - this._panel.webview.onDidReceiveMessage((message) => { - // Webview signals it has loaded the external script and is ready for data - if (message?.command === "ready") { - void this._panel.webview.postMessage({ - command: "init", - data: buildControlCenterData((0, config_path_1.resolveConfigPath)()), - config: readOpenClawConfigRaw((0, config_path_1.resolveConfigPath)()), - }); - return; - } - if (message?.command === "refresh") { - void this._update(); - return; - } - if (message?.command === "openclaw.channelAdd") { - this._openChannelInstallerTerminal(); - return; - } - if (message?.command === "openclaw.saveConfig") { - const configPath = (0, config_path_1.resolveConfigPath)(); - const text = message?.text || ""; - try { - // Validate JSON5 before saving - JSON.parse(sanitizeJson5(text)); - // Ensure directory exists - const configDir = path.dirname(configPath); - if (!fs.existsSync(configDir)) { - fs.mkdirSync(configDir, { recursive: true }); - } - // Write the config - fs.writeFileSync(configPath, text, "utf-8"); - console.log("[OpenClaw] Config saved to:", configPath); - this._panel.webview.postMessage({ command: "openclaw.saveResult", ok: true }); - // Refresh the view with new data - void this._update(); - } - catch (err) { - console.error("[OpenClaw] Failed to save config:", err); - this._panel.webview.postMessage({ - command: "openclaw.saveResult", - ok: false, - error: err.message || "Failed to save configuration" - }); - } - return; - } - if (message?.command === "openclaw.runCommand") { - const input = String(message?.text ?? "").trim(); - if (!input) - return; - const terminal = vscode.window.createTerminal("openclaw command console"); - terminal.show(); - const command = input.startsWith("openclaw") ? input : "openclaw " + input; - terminal.sendText(command, true); - return; - } - if (message?.command === "openclaw.channelPair") { - const channelName = String(message?.channel ?? "").trim(); - const terminal = vscode.window.createTerminal("openclaw pair " + (channelName || 'channel')); - terminal.show(); - terminal.sendText("openclaw channels pair " + (channelName || ''), true); - return; - } - if (message?.command === "openclaw.channelConfigure") { - const channelName = String(message?.channel ?? "").trim(); - vscode.window.showInformationMessage("Configure " + (channelName || "channel") + " — edit the config JSON in the Advanced Configuration tab."); - return; - } - if (message?.command === "openclaw.viewStatus") { - vscode.commands.executeCommand("openclaw.status"); - return; - } - if (message?.command === "openclaw.aiFixConfig") { - vscode.commands.executeCommand("openclaw.aiFixConfig"); - return; - } - }); - void this._update(); - } - dispose() { - ConfigPanel.currentPanel = undefined; - this._panel.dispose(); - while (this._disposables.length) { - const disposable = this._disposables.pop(); - if (disposable) { - disposable.dispose(); - } - } - } - async _update() { - const configPath = (0, config_path_1.resolveConfigPath)(); - const data = buildControlCenterData(configPath); - const rawConfig = readOpenClawConfigRaw(configPath); - this._panel.webview.html = this._getHtml(data, rawConfig); - } - _setupFileWatcher() { - const configPath = (0, config_path_1.resolveConfigPath)(); - // Watch the config file for changes - this._fileWatcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(path.dirname(configPath)), path.basename(configPath))); - // Debounced refresh on change - const debouncedRefresh = this._debounce(() => { - const stats = fs.statSync(configPath); - if (stats.mtimeMs > this._lastModified) { - this._lastModified = stats.mtimeMs; - console.log("[OpenClaw] Config file changed, refreshing..."); - void this._pushRefresh(); - } - }, 300); - this._fileWatcher.onDidChange(debouncedRefresh, null, this._disposables); - this._fileWatcher.onDidCreate(debouncedRefresh, null, this._disposables); - // Set initial modified time - try { - const stats = fs.statSync(configPath); - this._lastModified = stats.mtimeMs; - } - catch { - this._lastModified = 0; - } - } - _debounce(fn, ms) { - let timer; - return () => { - clearTimeout(timer); - timer = setTimeout(fn, ms); - }; - } - async _pushRefresh() { - const configPath = (0, config_path_1.resolveConfigPath)(); - const data = buildControlCenterData(configPath); - const rawConfig = readOpenClawConfigRaw(configPath); - await this._panel.webview.postMessage({ - command: "refresh", - data, - config: rawConfig, - }); - } - _openChannelInstallerTerminal() { - const terminal = vscode.window.createTerminal("openclaw channel installer"); - terminal.show(); - terminal.sendText("openclaw channels add", true); - } - _getHtml(data, rawConfig) { - const webview = this._panel.webview; - // External script loaded via webview URI — this is the ONLY reliable way - // to run JS in modern VS Code / VSCodium because the frame-level CSP requires - // resources to come from webview.cspSource (extension media folder). - const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "media", "setup-panel.js")); - const csp = [ - `default-src 'none'`, - `style-src ${webview.cspSource} 'unsafe-inline'`, - `script-src ${webview.cspSource}`, - `connect-src ${webview.cspSource} https:`, - `img-src ${webview.cspSource} https: data:`, - `font-src ${webview.cspSource} https:`, - ].join("; "); - const serialized = JSON.stringify(data).replace(/ channel.accounts.some((account) => account.status === "connected")).length; - const channelCount = data.channels.length; - const channelCards = data.channels - .map((channel, index) => { - const connected = channel.accounts.some((account) => account.status === "connected"); - const needsReview = channel.accounts.some((account) => account.status === "needs-relink"); - const status = connected ? "Connected" : needsReview ? "Needs review" : "Not connected"; - const chipClass = connected ? "chip-good" : needsReview ? "chip-warn" : "chip-bad"; - const accountChips = channel.accounts - .map((account) => '' + account.title + '') - .join(""); - return ` -
-
-
-
${channel.channel}
-
${channel.description}
-
-
- - ${status} -
-
-
${accountChips}
-
- - -
-
- `; - }) - .join(""); - const baseStyles = ` - :root { - color-scheme: dark; - --accent: #ef4444; - --accent-hover: #dc2626; - --bg: #0b0a0a; - --bg-card: #151111; - --bg-elevated: #1d1414; - --border: #3a1f1f; - --text: #f8f2f2; - --text-muted: #b9a8a8; - --chip-good: #22c55e; - --chip-warn: #f59e0b; - --chip-bad: #ef4444; - } - body { - margin: 0; - background: var(--bg); - color: var(--text); - font-family: var(--vscode-font-family, "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif); - } - * { box-sizing: border-box; } - #app { min-height: 100vh; } - .container { max-width: 1440px; margin: 0 auto; padding: 24px; } - - /* Header */ - .header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; } - .header-title { display: flex; align-items: center; gap: 12px; font-size: 20px; font-weight: 600; } - .header-dot { height: 10px; width: 10px; border-radius: 999px; background: var(--accent); display: inline-block; } - .header-meta { font-size: 12px; color: var(--text-muted); } - - /* Tabs */ - .tabs { display: flex; gap: 8px; margin-bottom: 20px; border-bottom: 1px solid var(--border); padding-bottom: 12px; } - .tab { border: none; cursor: pointer; border-radius: 8px; padding: 8px 16px; font-size: 13px; background: transparent; color: var(--text-muted); transition: all 0.2s; } - .tab:hover { background: var(--bg-elevated); color: var(--text); } - .tab.active { background: var(--accent); color: #081018; font-weight: 600; } - - /* Tab Content */ - .tab-panel { display: none; } - .tab-panel.active { display: block; } - - /* Panel Layout */ - .panel-grid { display: grid; gap: 20px; grid-template-columns: 1fr 320px; } - .panel { border-radius: 16px; background: var(--bg-card); padding: 20px; } - .panel h2 { margin: 0 0 16px 0; font-size: 18px; font-weight: 600; } - .panel-subtitle { margin: -12px 0 20px 0; font-size: 13px; color: var(--text-muted); } - - /* Buttons */ - .btn-primary { border: none; cursor: pointer; background: var(--accent); color: #081018; padding: 10px 16px; border-radius: 8px; font-size: 12px; font-weight: 600; transition: background 0.2s; } - .btn-primary:hover { background: var(--accent-hover); } - .btn-secondary { border: 1px solid var(--border); background: transparent; color: var(--text-muted); padding: 6px 12px; border-radius: 8px; font-size: 11px; cursor: pointer; transition: all 0.2s; } - .btn-secondary:hover { border-color: var(--accent); color: var(--text); } - .btn-sm { padding: 4px 10px; font-size: 11px; } - .btn-block { width: 100%; margin-top: 12px; } - - /* Channel Cards */ - .channel-list { display: grid; gap: 12px; } - .channel-card { border-radius: 12px; border: 1px solid var(--border); background: var(--bg-elevated); padding: 16px; transition: border-color 0.2s; } - .channel-card:hover { border-color: var(--accent); } - .channel-card.active { border-color: var(--accent); background: var(--bg-card); } - .card-row { display: flex; justify-content: space-between; gap: 12px; align-items: center; } - .card-title { font-size: 14px; font-weight: 600; text-transform: capitalize; } - .card-sub { margin-top: 4px; font-size: 12px; color: var(--text-muted); } - .card-actions { margin-top: 12px; display: flex; gap: 8px; } - - /* Status Chips */ - .status-chip { display: flex; align-items: center; gap: 6px; border-radius: 999px; background: var(--bg); padding: 4px 10px; font-size: 11px; color: var(--text); } - .dot { width: 6px; height: 6px; border-radius: 999px; display: inline-block; } - .chip-good { background: var(--chip-good); } - .chip-warn { background: var(--chip-warn); } - .chip-bad { background: var(--chip-bad); } - - /* Pills */ - .pill-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; } - .pill { padding: 4px 10px; border-radius: 999px; background: var(--bg-card); font-size: 11px; color: var(--text-muted); } - .pill.clickable { cursor: pointer; transition: all 0.2s; } - .pill.clickable:hover { background: var(--accent); color: #081018; } - - /* JSON Editor */ - .json-editor { width: 100%; min-height: 400px; resize: vertical; border-radius: 12px; border: 1px solid var(--border); background: var(--bg-elevated); color: var(--text); padding: 16px; font-size: 13px; line-height: 1.6; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; tab-size: 2; } - .json-editor:focus { outline: none; border-color: var(--accent); } - .editor-toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } - .editor-status { display: flex; align-items: center; gap: 12px; font-size: 12px; margin-bottom: 10px; } - .status-badge { padding: 4px 10px; border-radius: 999px; font-size: 11px; font-weight: 500; } - .status-badge.ok { background: var(--chip-good); color: #0f172a; } - .status-badge.err { background: var(--chip-bad); color: white; } - .status-badge.warn { background: var(--chip-warn); color: #0f172a; } - - /* Command Console */ - .console-layout { display: grid; gap: 20px; grid-template-columns: 1fr 280px; } - .command-input-wrap { display: flex; gap: 12px; margin-bottom: 16px; } - .command-input { flex: 1; border-radius: 10px; border: 1px solid var(--border); background: var(--bg-elevated); color: var(--text); padding: 12px 16px; font-size: 13px; font-family: ui-monospace, monospace; } - .command-input:focus { outline: none; border-color: var(--accent); } - .quick-commands h3 { margin: 0 0 12px 0; font-size: 13px; color: var(--text-muted); font-weight: 500; } - .quick-grid { display: grid; gap: 8px; } - .quick-btn { text-align: left; padding: 10px 12px; border-radius: 8px; border: 1px solid var(--border); background: var(--bg-elevated); color: var(--text); font-size: 12px; cursor: pointer; transition: all 0.2s; } - .quick-btn:hover { border-color: var(--accent); background: var(--bg-card); } - .quick-btn strong { display: block; font-size: 12px; margin-bottom: 2px; } - .quick-btn span { display: block; font-size: 11px; color: var(--text-muted); } - - /* Sidebar */ - .sidebar h3 { margin: 0 0 12px 0; font-size: 13px; color: var(--text-muted); font-weight: 500; } - .info-card { padding: 12px; border-radius: 10px; background: var(--bg-elevated); margin-bottom: 12px; } - .info-card h4 { margin: 0 0 6px 0; font-size: 12px; color: var(--text); } - .info-card p { margin: 0; font-size: 11px; color: var(--text-muted); line-height: 1.5; } - .connection-status { display: flex; align-items: center; gap: 8px; padding: 12px; border-radius: 10px; background: var(--bg-elevated); margin-top: 16px; } - - .panel-header-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; } - .empty-state { color: var(--text-muted); text-align: center; padding: 40px; } - .status-text { font-size: 12px; } - .hint-text { font-size: 11px; color: var(--text-muted); margin-right: 8px; } - .recent-row { margin-bottom: 16px; } - - /* ── Responsive ──────────────────────────────────────────── */ - - /* Collapse sidebars on medium-width panels */ - @media (max-width: 820px) { - .panel-grid { grid-template-columns: 1fr; } - .console-layout { grid-template-columns: 1fr; } - .sidebar { order: -1; } - /* Make quick-commands horizontal on medium */ - .quick-grid { grid-template-columns: repeat(2, 1fr); } - } - - /* Compact spacing on narrow panels */ - @media (max-width: 640px) { - .container { padding: 14px; } - .tabs { gap: 4px; padding-bottom: 10px; flex-wrap: wrap; } - .tab { padding: 6px 10px; font-size: 12px; } - .panel { padding: 14px; border-radius: 12px; } - .panel h2 { font-size: 15px; } - .panel-grid { gap: 14px; } - .console-layout { gap: 14px; } - .header-title { font-size: 17px; } - .json-editor { min-height: 260px; } - .quick-grid { grid-template-columns: 1fr; } - .command-input-wrap { flex-wrap: wrap; } - .command-input { min-width: 0; width: 100%; } - .card-row { flex-wrap: wrap; } - } - - /* Very narrow panels (sidebar panel view) */ - @media (max-width: 400px) { - .container { padding: 10px; } - .tabs { gap: 4px; } - .tab { padding: 5px 8px; font-size: 11px; border-radius: 6px; } - .panel { padding: 10px; border-radius: 10px; } - .panel h2 { font-size: 14px; margin-bottom: 12px; } - .header { gap: 8px; margin-bottom: 14px; } - .header-title { font-size: 15px; gap: 8px; } - .channel-card { padding: 12px; } - .card-actions { flex-wrap: wrap; } - .btn-primary, .btn-secondary { font-size: 11px; } - .editor-toolbar { flex-wrap: wrap; gap: 8px; } - .editor-toolbar > div { flex: 1 1 100%; } - .panel-header-row { flex-wrap: wrap; gap: 8px; } - .panel-header-row > div { flex: 1 1 100%; } - .panel-header-row .btn-primary { width: 100%; } - .json-editor { min-height: 200px; font-size: 12px; } - .status-chip { font-size: 10px; padding: 3px 8px; } - .info-card { padding: 10px; } - } - `; - return ` - - - - - - - - -
-
-
-
- - OpenClaw Configuration -
-
${connectedChannels}/${channelCount} channels connected
-
- -
- - - -
- - -
-
-
-
-
-

Channels

-
Manage your communication channels
-
- -
-
- ${channelCards || '
No channels configured. Add your first channel to get started.
'} -
-
- -
-
- - -
-
-
-
-
-

Configuration JSON

-
Edit ~/.openclaw/openclaw.json directly
-
-
- - -
-
-
- Loading... - Supports JSON5 (comments + trailing commas) -
- -
- -
-
- - -
-
-
-

Command Console

-
Run OpenClaw CLI commands
-
- - -
-
- Recent: -
-
- -
-
-
-
- - - -`; - } -} -exports.ConfigPanel = ConfigPanel; -//# sourceMappingURL=setup.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/setup.js.map b/apps/editor/extensions/openclaw/out/panels/setup.js.map deleted file mode 100644 index 2b768ee1..00000000 --- a/apps/editor/extensions/openclaw/out/panels/setup.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/panels/setup.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/status.js b/apps/editor/extensions/openclaw/out/panels/status.js deleted file mode 100644 index e2816909..00000000 --- a/apps/editor/extensions/openclaw/out/panels/status.js +++ /dev/null @@ -1,909 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StatusPanel = void 0; -const vscode = __importStar(require("vscode")); -const cp = __importStar(require("child_process")); -const fs = __importStar(require("fs")); -const os = __importStar(require("os")); -const path = __importStar(require("path")); -class StatusPanel { - constructor(panel) { - this._disposables = []; - this._refreshing = false; - this._refreshQueued = false; - this._lastStatusAt = 0; - this._isVisible = true; - this._panel = panel; - this._isVisible = panel.visible; - this._panel.webview.html = this._getLoadingHtml(); - void this._update(); - this._panel.onDidDispose(() => this.dispose(), null, this._disposables); - this._panel.onDidChangeViewState(e => { - this._isVisible = e.webviewPanel.visible; - if (this._isVisible) { - void this._update(); - } - }, null, this._disposables); - this._panel.webview.onDidReceiveMessage(msg => { - if (msg.command === 'refresh') { - if (!this._isVisible) - return; - void this._update(); - } - else if (msg.command === 'gateway-start') { - void this._runGateway('start'); - } - else if (msg.command === 'gateway-stop') { - void this._runGateway('stop'); - } - else if (msg.command === 'gateway-restart') { - void this._runGateway('restart'); - } - else if (msg.command === 'install') { - vscode.commands.executeCommand('openclaw.install'); - } - else if (msg.command === 'configure') { - vscode.commands.executeCommand('openclaw.configure'); - } - else if (msg.command === 'open-dashboard' && msg.url) { - vscode.env.openExternal(vscode.Uri.parse(msg.url)); - } - else if (msg.command === 'open-logs' && msg.path) { - let p = msg.path; - if (process.platform === 'win32' && !/^[a-zA-Z]:/.test(p) && /^[\\/]/.test(p)) { - const drive = process.env.SystemDrive || 'C:'; - p = `${drive}${p}`; - } - const uri = vscode.Uri.file(p); - vscode.workspace.openTextDocument(uri).then(doc => vscode.window.showTextDocument(doc)); - } - }, null, this._disposables); - } - static createOrShow(extensionUri) { - if (StatusPanel.currentPanel) { - StatusPanel.currentPanel._panel.reveal(); - return; - } - const panel = vscode.window.createWebviewPanel('openclawStatus', 'OpenClaw Status', vscode.ViewColumn.One, { enableScripts: true }); - StatusPanel.currentPanel = new StatusPanel(panel); - } - dispose() { - StatusPanel.currentPanel = undefined; - this._panel.dispose(); - this._disposables.forEach(d => d.dispose()); - } - async _runGateway(action) { - if (process.platform === 'win32') { - // Windows: Use terminal-based approach with openclaw gateway and Ctrl+C - const terminal = this._ensureGatewayTerminal(); - terminal.show(); - if (action === 'restart') { - const startCmd = 'openclaw gateway'; - terminal.sendText('\u0003', false); - await new Promise(r => setTimeout(r, 1500)); - terminal.sendText(startCmd, true); - vscode.window.showInformationMessage(`Sent: Ctrl+C then ${startCmd}`); - } - else { - if (action === 'start') { - const cmd = 'openclaw gateway'; - terminal.sendText(cmd, true); - vscode.window.showInformationMessage(`Sent: ${cmd}`); - } - else { - terminal.sendText('\u0003', false); - vscode.window.showInformationMessage('Sent: Ctrl+C'); - } - } - } - else { - // Linux/Mac: Use CLI commands (openclaw gateway start/stop/restart) - const cmd = `openclaw gateway ${action}`; - const terminal = this._ensureGatewayTerminal(); - terminal.show(); - terminal.sendText(cmd, true); - vscode.window.showInformationMessage(`Sent: ${cmd}`); - } - await this._update(); - await this._pollStatus(20000, 2000); - } - async _update() { - if (this._refreshing) { - this._refreshQueued = true; - return; - } - this._refreshing = true; - try { - const status = await this._getStatus(); - this._panel.webview.html = this._getHtml(status); - } - finally { - this._refreshing = false; - if (this._refreshQueued) { - this._refreshQueued = false; - void this._update(); - } - } - } - async _getStatus() { - const now = Date.now(); - if (this._lastStatus && now - this._lastStatusAt < 3000) { - return this._lastStatus; - } - const status = await this._getStatusFresh(); - this._lastStatus = status; - this._lastStatusAt = now; - return status; - } - async _getStatusFresh() { - const updatedAt = new Date().toLocaleTimeString(); - const { command, result, cliPath } = await this._runOpenClaw(['gateway', 'status'], 4000); - const out = (result.stdout || result.stderr).trim(); - if (out.length > 0) { - const parsed = this._parseStatus(out); - const trimmedErr = result.stderr.trim(); - const genericFail = result.error && result.error.toLowerCase().startsWith('command failed'); - const error = trimmedErr || (!genericFail ? result.error : undefined); - return { - installed: parsed.installed || !result.notFound, - running: parsed.running, - pid: parsed.pid, - port: parsed.port, - uptime: parsed.uptime, - service: parsed.service, - dashboard: parsed.dashboard, - probe: parsed.probe, - logFile: parsed.logFile, - configPath: parsed.configPath, - issues: parsed.issues, - exitCode: result.code, - cliPath, - command, - stderr: trimmedErr || undefined, - pathEnv: result.pathEnv, - raw: out, - error, - updatedAt, - }; - } - if (result.notFound) { - return { - installed: false, - running: false, - exitCode: result.code, - cliPath, - command, - stderr: result.stderr.trim() || undefined, - pathEnv: result.pathEnv, - raw: 'OpenClaw CLI not detected.', - error: result.error, - updatedAt, - }; - } - if (result.timedOut) { - return { - installed: !result.notFound, - running: false, - exitCode: result.code, - cliPath, - command, - stderr: result.stderr.trim() || undefined, - pathEnv: result.pathEnv, - raw: 'Status command timed out.', - error: result.error, - updatedAt, - }; - } - return { - installed: !result.notFound, - running: false, - exitCode: result.code, - cliPath, - command, - stderr: result.stderr.trim() || undefined, - pathEnv: result.pathEnv, - raw: 'Failed to read gateway status.', - error: result.error, - updatedAt, - }; - } - async _pollStatus(maxMs, intervalMs) { - const deadline = Date.now() + maxMs; - while (Date.now() < deadline) { - if (!this._isVisible) - return; - const status = await this._getStatusFresh(); - this._panel.webview.html = this._getHtml(status); - if (status.running) - return; - await new Promise(r => setTimeout(r, intervalMs)); - } - } - _ensureGatewayTerminal() { - if (this._gatewayTerminal) - return this._gatewayTerminal; - const existing = vscode.window.terminals.find(t => t.name === 'OpenClaw Gateway'); - if (existing) { - this._gatewayTerminal = existing; - return existing; - } - this._gatewayTerminal = vscode.window.createTerminal('OpenClaw Gateway'); - return this._gatewayTerminal; - } - _runCommand(cmd, timeoutMs) { - const env = this._buildExecEnv(); - return new Promise(resolve => { - cp.exec(cmd, { - timeout: timeoutMs, - windowsHide: true, - maxBuffer: 1024 * 1024, - env, - }, (error, stdout, stderr) => { - const result = { - stdout: stdout?.toString() || '', - stderr: stderr?.toString() || '', - pathEnv: env.PATH, - command: cmd, - }; - if (error) { - result.error = error.message || 'Command failed'; - const errCode = error.code; - result.code = errCode ? String(errCode) : undefined; - result.timedOut = errCode === 'ETIMEDOUT'; - const text = `${result.stderr}\n${result.error}`.toLowerCase(); - result.notFound = - errCode === 'ENOENT' || - text.includes('not recognized as an internal or external command') || - text.includes('command not found'); - } - resolve(result); - }); - }); - } - _execFile(command, args, timeoutMs) { - const env = this._buildExecEnv(); - return new Promise(resolve => { - cp.execFile(command, args, { - timeout: timeoutMs, - windowsHide: true, - maxBuffer: 1024 * 1024, - env, - }, (error, stdout, stderr) => { - const result = { - stdout: stdout?.toString() || '', - stderr: stderr?.toString() || '', - pathEnv: env.PATH, - command: [command, ...args].join(' '), - }; - if (error) { - result.error = error.message || 'Command failed'; - const errCode = error.code; - result.code = errCode ? String(errCode) : undefined; - result.timedOut = errCode === 'ETIMEDOUT'; - const text = `${result.stderr}\n${result.error}`.toLowerCase(); - result.notFound = - errCode === 'ENOENT' || - text.includes('not recognized as an internal or external command') || - text.includes('command not found'); - } - resolve(result); - }); - }); - } - async _runOpenClaw(args, timeoutMs = 30000) { - if (process.platform !== 'win32') { - const cliPath = await this._findOpenClawPath(); - if (!cliPath) { - return { - result: { - stdout: '', - stderr: '', - error: 'openclaw not found', - notFound: true, - }, - command: `openclaw ${args.join(' ')}`, - }; - } - const result = await this._execFile(cliPath, args, timeoutMs); - return { result, command: `${cliPath} ${args.join(' ')}`, cliPath }; - } - const mjs = path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'npm', 'node_modules', 'openclaw', 'openclaw.mjs'); - // Find node.exe - let nodeExe; - const candidates = [ - process.env.ProgramFiles ? path.join(process.env.ProgramFiles, 'nodejs', 'node.exe') : '', - 'C:\\Program Files\\nodejs\\node.exe', - 'C:\\Program Files (x86)\\nodejs\\node.exe', - process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Programs', 'nodejs', 'node.exe') : '', - ].filter(Boolean); - nodeExe = candidates.find(p => fs.existsSync(p)); - if (!nodeExe) { - try { - const result = cp.execSync('where node.exe', { timeout: 3000, encoding: 'utf8', windowsHide: true }); - const found = result.trim().split(/\r?\n/)[0]?.trim(); - if (found && fs.existsSync(found)) - nodeExe = found; - } - catch { } - } - if (!nodeExe || !fs.existsSync(mjs)) { - const cliPath = await this._findOpenClawPath(); - if (cliPath) { - const result = await this._execFile(cliPath, args, timeoutMs); - return { result, command: `${cliPath} ${args.join(' ')}`, cliPath }; - } - return { - result: { - stdout: '', - stderr: '', - error: 'node.exe or openclaw.mjs not found', - exitCode: -1, - notFound: true, - }, - command: 'openclaw ' + args.join(' '), - }; - } - const display = `node "${mjs}" ${args.join(' ')}`; - const cmdLine = `node "${mjs}" ${args.join(' ')}`; - const result = await new Promise((resolve) => { - const child = cp.spawn(cmdLine, [], { - timeout: timeoutMs, - windowsHide: true, - shell: true, - stdio: ['ignore', 'pipe', 'pipe'], - env: process.env, - }); - let stdout = ''; - let stderr = ''; - child.stdout?.on('data', data => (stdout += data)); - child.stderr?.on('data', data => (stderr += data)); - const timer = setTimeout(() => { - child.kill('SIGTERM'); - }, timeoutMs); - child.on('close', (code, signal) => { - clearTimeout(timer); - if (signal === 'SIGTERM' || code === null) { - resolve({ error: 'Timed out after 30s', stdout, stderr, exitCode: null }); - } - else if (code !== 0) { - resolve({ error: stderr.trim() || `Exit ${code}`, stdout, stderr, exitCode: code ?? undefined }); - } - else { - resolve({ stdout, stderr, exitCode: 0 }); - } - }); - child.on('error', err => { - clearTimeout(timer); - resolve({ error: err.message, stdout, stderr, exitCode: undefined }); - }); - }); - return { result, command: display, cliPath: mjs }; - } - /** Find the full path to node.exe on Windows */ - _findNodeExe() { - if (process.platform !== 'win32') - return 'node'; - // Check common install paths - const candidates = [ - process.env.ProgramFiles ? path.join(process.env.ProgramFiles, 'nodejs', 'node.exe') : '', - 'C:\\Program Files\\nodejs\\node.exe', - 'C:\\Program Files (x86)\\nodejs\\node.exe', - process.env.LOCALAPPDATA ? path.join(process.env.LOCALAPPDATA, 'Programs', 'nodejs', 'node.exe') : '', - ].filter(Boolean); - for (const p of candidates) { - if (fs.existsSync(p)) - return p; - } - // Try where command - try { - const result = cp.execSync('where node.exe', { timeout: 3000, encoding: 'utf8', windowsHide: true }); - const found = result.trim().split(/\r?\n/)[0]?.trim(); - if (found && fs.existsSync(found)) - return found; - } - catch { } - return undefined; - } - _buildExecEnv() { - const env = { ...process.env }; - const basePath = env.PATH || env.Path || ''; - const extra = []; - if (process.platform === 'win32') { - if (env.APPDATA) - extra.push(path.join(env.APPDATA, 'npm')); - if (env.ProgramFiles) - extra.push(path.join(env.ProgramFiles, 'nodejs')); - // Common Node.js install locations on Windows (nvm-windows, volta, fnm, scoop, etc.) - const home = os.homedir(); - const localAppData = env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'); - extra.push(path.join(localAppData, 'Volta', 'bin')); - extra.push(path.join(localAppData, 'fnm', 'node-versions')); - extra.push(path.join(env.APPDATA || '', 'nvm')); - extra.push(path.join(home, 'scoop', 'shims')); - // Try to find node.exe from the extension host's own process - const nodeDir = this._findNodeDir(); - if (nodeDir) - extra.push(nodeDir); - const systemRoot = env.SystemRoot || env.WINDIR; - if (systemRoot) - extra.push(path.join(systemRoot, 'System32')); - } - else { - extra.push('/usr/local/bin', '/opt/homebrew/bin'); - extra.push(path.join(os.homedir(), '.local', 'bin')); - extra.push(path.join(os.homedir(), '.npm-global', 'bin')); - } - const sep = process.platform === 'win32' ? ';' : ':'; - env.PATH = [...extra, basePath].filter(Boolean).join(sep); - env.Path = env.PATH; - return env; - } - /** Find the directory containing node.exe by checking common locations */ - _findNodeDir() { - if (process.platform !== 'win32') - return undefined; - // 1. Check if node.exe is alongside npm in APPDATA - const appData = process.env.APPDATA; - if (appData) { - const npmDir = path.join(appData, 'npm'); - // npm .cmd shims use %~dp0\node.exe or fall back to 'node' on PATH - // Check the nodejs install dir referenced by the shim - } - // 2. Check common install paths - const candidates = [ - process.env.ProgramFiles && path.join(process.env.ProgramFiles, 'nodejs'), - process.env['ProgramFiles(x86)'] && path.join(process.env['ProgramFiles(x86)'], 'nodejs'), - path.join(os.homedir(), '.nvm', 'versions'), - ].filter(Boolean); - for (const dir of candidates) { - if (fs.existsSync(path.join(dir, 'node.exe'))) - return dir; - } - // 3. Try to extract node location from NVM_HOME or NVM_SYMLINK - const nvmSymlink = process.env.NVM_SYMLINK; - if (nvmSymlink && fs.existsSync(path.join(nvmSymlink, 'node.exe'))) - return nvmSymlink; - const nvmHome = process.env.NVM_HOME; - if (nvmHome && fs.existsSync(nvmHome)) { - // nvm-windows creates a symlink or uses a current version dir - try { - const entries = fs.readdirSync(nvmHome).filter(e => /^v?\d/.test(e)); - for (const entry of entries) { - const p = path.join(nvmHome, entry); - if (fs.existsSync(path.join(p, 'node.exe'))) - return p; - } - } - catch { } - } - return undefined; - } - async _findOpenClawPath() { - for (const candidate of this._getWorkspaceCliCandidates()) { - if (fs.existsSync(candidate)) - return candidate; - } - const envPath = process.env.OPENCLAW_CLI; - if (envPath && fs.existsSync(envPath)) - return envPath; - if (process.platform === 'win32') { - const appData = process.env.APPDATA; - if (appData) { - const p = path.join(appData, 'npm', 'openclaw.cmd'); - if (fs.existsSync(p)) - return p; - } - } - const cfgPath = vscode.workspace.getConfiguration('openclaw').get('cliPath'); - if (cfgPath && fs.existsSync(cfgPath)) - return cfgPath; - let cmd = process.platform === 'win32' ? 'where openclaw' : 'which openclaw'; - if (process.platform === 'win32') { - const systemRoot = process.env.SystemRoot || process.env.WINDIR || 'C:\\Windows'; - const whereExe = path.join(systemRoot, 'System32', 'where.exe'); - cmd = `"${whereExe}" openclaw`; - } - const result = await this._runCommand(cmd, 2000); - if (!result.error && !result.notFound) { - const out = (result.stdout || '').trim(); - if (out) { - const candidates = out - .split(/\r?\n/) - .map(l => l.trim().replace(/^"+|"+$/g, '')) - .filter(Boolean); - for (const candidate of candidates) { - const resolved = this._resolveWindowsCliPath(candidate); - if (fs.existsSync(resolved)) - return resolved; - } - } - } - if (process.platform === 'win32') { - const psPath = await this._findOpenClawViaPowerShell(); - if (psPath && fs.existsSync(psPath)) - return psPath; - } - const npmCandidates = await this._getNpmGlobalCliCandidates(); - for (const candidate of npmCandidates) { - if (fs.existsSync(candidate)) - return candidate; - } - const candidates = this._getCandidateCliPaths(); - for (const candidate of candidates) { - if (fs.existsSync(candidate)) - return candidate; - } - return undefined; - } - _getWorkspaceCliCandidates() { - const exts = process.platform === 'win32' - ? ['openclaw.cmd', 'openclaw.exe', 'openclaw.ps1', 'openclaw.bat', 'openclaw'] - : ['openclaw']; - const folders = vscode.workspace.workspaceFolders?.map(f => f.uri.fsPath) ?? []; - const candidates = []; - for (const root of folders) { - for (const name of exts) { - candidates.push(path.join(root, 'node_modules', '.bin', name)); - } - } - return candidates; - } - async _findOpenClawViaPowerShell() { - const ps = 'powershell.exe'; - const cmd = [ - '-NoProfile', - '-Command', - '($c = Get-Command openclaw -ErrorAction SilentlyContinue | Select-Object -First 1); ' + - 'if ($c) { $c.Path; if (-not $c.Path) { $c.Source }; if (-not $c.Path -and -not $c.Source) { $c.Definition } }', - ]; - const result = await this._execFile(ps, cmd, 2000); - const out = (result.stdout || '').trim(); - if (!out) - return undefined; - return out.split(/\r?\n/)[0].trim(); - } - _getCandidateCliPaths() { - const home = os.homedir(); - if (process.platform === 'win32') { - const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming'); - const localAppData = process.env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'); - const programFiles = process.env.ProgramFiles || 'C:\\Program Files'; - return [ - path.join(appData, 'npm', 'openclaw.cmd'), - path.join(appData, 'npm', 'openclaw.exe'), - path.join(appData, 'npm', 'openclaw.ps1'), - path.join(appData, 'npm', 'openclaw.bat'), - path.join(localAppData, 'Programs', 'OpenClaw', 'openclaw.exe'), - path.join(localAppData, 'OpenClaw', 'openclaw.exe'), - path.join(programFiles, 'OpenClaw', 'openclaw.exe'), - path.join(programFiles, 'OpenClaw', 'bin', 'openclaw.exe'), - path.join(localAppData, 'Microsoft', 'WindowsApps', 'openclaw.exe'), - path.join(home, '.openclaw', 'bin', 'openclaw.exe'), - ]; - } - return [ - '/usr/local/bin/openclaw', - '/opt/homebrew/bin/openclaw', - path.join(home, '.local', 'bin', 'openclaw'), - path.join(home, '.npm-global', 'bin', 'openclaw'), - path.join(home, '.openclaw', 'bin', 'openclaw'), - ]; - } - async _getNpmGlobalCliCandidates() { - const result = await this._runCommand('npm config get prefix', 2000); - const prefix = (result.stdout || '').trim(); - if (!prefix) - return []; - if (process.platform === 'win32') { - const base = this._resolveWindowsCliPath(path.join(prefix, 'openclaw')); - const withExts = [ - `${base}.cmd`, - `${base}.exe`, - `${base}.ps1`, - `${base}.bat`, - base, - ]; - return withExts; - } - return [path.join(prefix, 'bin', 'openclaw')]; - } - _resolveWindowsCliPath(candidate) { - if (process.platform !== 'win32') - return candidate; - const cleaned = candidate.replace(/^"+|"+$/g, ''); - if (fs.existsSync(cleaned)) - return cleaned; - if (path.extname(cleaned)) - return cleaned; - const exts = ['.cmd', '.exe', '.bat', '.ps1']; - for (const ext of exts) { - const withExt = `${cleaned}${ext}`; - if (fs.existsSync(withExt)) - return withExt; - } - return cleaned; - } - _parseStatus(out) { - const lower = out.toLowerCase(); - let running = /rpc probe:\s*ok/.test(lower); - if (/rpc probe:\s*failed/.test(lower)) - running = false; - if (!/rpc probe:\s*(ok|failed)/.test(lower)) { - running = /runtime:\s*running|gateway:\s*running/.test(lower) || /running|active|started/.test(lower); - if (/not running|stopped|inactive|down|runtime:\s*stopped/.test(lower)) - running = false; - } - const pid = out.match(/pid[:\s]+(\d+)/i)?.[1]; - const port = out.match(/port[:=\s]+(\d+)/i)?.[1]; - const uptime = out.match(/uptime[:\s]+([^\n]+)/i)?.[1]; - const service = out.match(/service:\s*([^\n]+)/i)?.[1]?.trim(); - const dashboard = out.match(/dashboard:\s*(https?:\/\/[^\s]+)/i)?.[1]; - const probe = out.match(/probe target:\s*([^\n]+)/i)?.[1]?.trim(); - const logFile = out.match(/file logs:\s*([^\n]+)/i)?.[1]?.trim(); - const configPath = out.match(/config \(cli\):\s*([^\n]+)/i)?.[1]?.trim(); - const installed = /openclaw\s+\d{4}\./i.test(out) || /openclaw/gi.test(out); - const issues = this._extractIssues(out); - return { running, pid, port, uptime, service, dashboard, probe, logFile, configPath, installed, issues }; - } - _extractIssues(out) { - const lines = out.split(/\r?\n/).map(l => l.trim()).filter(Boolean); - const issues = []; - for (const line of lines) { - const lower = line.toLowerCase(); - if (lower.startsWith('fix:') || lower.startsWith('troubles:') || lower.startsWith('troubleshooting:')) { - issues.push(line); - continue; - } - if (lower.includes('missing') && lower.includes('config')) { - issues.push(line); - continue; - } - if (lower.startsWith('rpc probe:') || lower.startsWith('service is loaded but not running')) { - issues.push(line); - continue; - } - if (lower.startsWith('runtime:') && lower.includes('stopped')) { - issues.push(line); - continue; - } - if (lower.includes('requires explicit credentials') || lower.includes('pass --token') || lower.includes('pass --password')) { - issues.push(line); - continue; - } - } - return issues; - } - _escapeHtml(input) { - return input - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); - } - _getLoadingHtml() { - return ` - - - - - - - -

OpenClaw Gateway

-
- Fetching status - -`; - } - _getHtml(status) { - const { running, installed, dashboard, updatedAt } = status; - const safeDashboard = this._escapeHtml(dashboard || '—'); - return ` - - - - - - - -

OpenClaw Gateway

-
Last updated: ${updatedAt}
-
- - ${running ? 'Running' : installed ? 'Stopped' : 'Not Installed'} - ${running ? 'Healthy' : installed ? 'Offline' : 'Missing'} -
-
-
Status${running ? 'Running' : installed ? 'Stopped' : 'Missing'}
-
-
-
- Dashboard - ${dashboard ? `${safeDashboard}` : `${safeDashboard}`} -
-
-
- ${installed - ? (running - ? '' - : '') - : ''} - ${installed ? '' : ''} - -
- - -`; - } -} -exports.StatusPanel = StatusPanel; -//# sourceMappingURL=status.js.map \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/out/panels/status.js.map b/apps/editor/extensions/openclaw/out/panels/status.js.map deleted file mode 100644 index 021ccd8c..00000000 --- a/apps/editor/extensions/openclaw/out/panels/status.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/panels/status.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/editor/extensions/openclaw/package-lock.json b/apps/editor/extensions/openclaw/package-lock.json deleted file mode 100644 index 687d28e1..00000000 --- a/apps/editor/extensions/openclaw/package-lock.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "home", - "version": "0.2.2", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "home", - "version": "0.2.2", - "license": "MIT", - "devDependencies": { - "@types/node": "^20.19.35", - "@types/vscode": "^1.85.0", - "typescript": "^5.9.3" - }, - "engines": { - "vscode": "^1.85.0" - } - }, - "node_modules/@types/node": { - "version": "20.19.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.35.tgz", - "integrity": "sha512-Uarfe6J91b9HAUXxjvSOdiO2UPOKLm07Q1oh0JHxoZ1y8HoqxDAu3gVrsrOHeiio0kSsoVBt4wFrKOm0dKxVPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/vscode": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.85.0.tgz", - "integrity": "sha512-CF/RBon/GXwdfmnjZj0WTUMZN5H6YITOfBCP4iEZlOtVQXuzw6t7Le7+cR+7JzdMrnlm7Mfp49Oj2TuSXIWo3g==", - "dev": true, - "license": "MIT" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - } - } -} From 452ccaf59840f83bdf5ab0544024eace50456b5e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 31 Mar 2026 01:20:10 +0000 Subject: [PATCH 08/11] chore(release): 3.2.38 --- CHANGELOG.md | 2 ++ package.json | 2 +- version.txt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5024119..d1486611 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [3.2.38](https://github.com/damoahdominic/occ/compare/v3.2.39...v3.2.38) (2026-03-31) + ## [3.2.39](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.39) (2026-03-31) ## [3.2.37](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.37) (2026-03-31) diff --git a/package.json b/package.json index 415be5d5..a7321b3d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "occode", - "version": "3.2.37", + "version": "3.2.38", "private": true, "description": "OCcode — branded cross-platform IDE wrapper with OpenClaw extension", "workspaces": [ diff --git a/version.txt b/version.txt index 00645c83..7834f421 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -3.2.39 \ No newline at end of file +3.2.38 \ No newline at end of file From d6b0300d08deb2c9e4c7eb71550ae5a9bfb9aff0 Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 21:20:45 -0400 Subject: [PATCH 09/11] chore(release): 3.2.40 --- CHANGELOG.md | 2 ++ package.json | 2 +- version.txt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1486611..7a1aa8ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [3.2.40](https://github.com/damoahdominic/occ/compare/v3.2.39...v3.2.40) (2026-03-31) + ## [3.2.38](https://github.com/damoahdominic/occ/compare/v3.2.39...v3.2.38) (2026-03-31) ## [3.2.39](https://github.com/damoahdominic/occ/compare/v3.2.38...v3.2.39) (2026-03-31) diff --git a/package.json b/package.json index a7321b3d..bd151f35 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "occode", - "version": "3.2.38", + "version": "3.2.40", "private": true, "description": "OCcode — branded cross-platform IDE wrapper with OpenClaw extension", "workspaces": [ diff --git a/version.txt b/version.txt index 7834f421..84d050d7 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -3.2.38 \ No newline at end of file +3.2.40 \ No newline at end of file From 0803fdb3b933ef615739d97dda6f74eb81e0e138 Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 21:21:50 -0400 Subject: [PATCH 10/11] chore:clean up --- Dockerfile | 11 +- docker-compose.test.yml | 188 ------------------------------ docker/test-fnm.Dockerfile | 31 ----- docker/test-node-only.Dockerfile | 18 --- docker/test-node-setup.Dockerfile | 33 ------ docker/test-nvm.Dockerfile | 33 ------ 6 files changed, 9 insertions(+), 305 deletions(-) delete mode 100644 docker-compose.test.yml delete mode 100644 docker/test-fnm.Dockerfile delete mode 100644 docker/test-node-only.Dockerfile delete mode 100644 docker/test-node-setup.Dockerfile delete mode 100644 docker/test-nvm.Dockerfile diff --git a/Dockerfile b/Dockerfile index bafb2983..bbb0ecdc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,12 @@ -# Use Node.js LTS as base image -FROM node:18-alpine +# Use Node.js 20 LTS as base image +FROM node:20-alpine + +# Install build dependencies and Python for native modules +RUN apk add --no-cache \ + python3 \ + make \ + g++ \ + gcc # Set working directory WORKDIR /app diff --git a/docker-compose.test.yml b/docker-compose.test.yml deleted file mode 100644 index d5ced4d1..00000000 --- a/docker-compose.test.yml +++ /dev/null @@ -1,188 +0,0 @@ -version: '3.8' - -# Docker Compose test environments for OCcode Node version detection -# -# Services: -# - test-fnm: Fast Node Manager test scenario -# - test-nvm: Node Version Manager test scenario -# - test-node-only: System Node only (no version manager) -# - test-node-setup: Auto-install/setup from base OS (Ubuntu) -# - test-runner: Orchestrator to run all tests sequentially -# -# Usage: -# docker-compose -f docker-compose.test.yml up test-runner -# docker-compose -f docker-compose.test.yml run test-fnm -# docker-compose -f docker-compose.test.yml run test-nvm -# docker-compose -f docker-compose.test.yml run test-node-only -# docker-compose -f docker-compose.test.yml run test-node-setup - -services: - # Test fnm scenario - test-fnm: - build: - context: . - dockerfile: docker/test-fnm.Dockerfile - image: occ-test-fnm:latest - container_name: occ-test-fnm - working_dir: /app - volumes: - - .:/app - - node_modules_fnm:/app/node_modules - command: > - bash -c " - curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir /usr/local && - export PATH=/root/.local/bin:$$PATH && - npm ci --ignore-scripts && - cd apps/editor && - npm ci && - cd /app && - source ./scripts/activate_env.sh && - ./launch-editor.sh --version-check - " - environment: - NODE_ENV: test - networks: - - test-network - - # Test nvm scenario - test-nvm: - build: - context: . - dockerfile: docker/test-nvm.Dockerfile - image: occ-test-nvm:latest - container_name: occ-test-nvm - working_dir: /app - volumes: - - .:/app - - node_modules_nvm:/app/node_modules - - nvm_cache:/root/.nvm - command: > - bash -c " - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && - export NVM_DIR=/root/.nvm && - echo 'export NVM_DIR=\"$$HOME/.nvm\"' >> ~/.bashrc && - echo '[ -s \"$$NVM_DIR/nvm.sh\" ] && source \"$$NVM_DIR/nvm.sh\"' >> ~/.bashrc && - npm ci --ignore-scripts && - cd apps/editor && - npm ci && - cd /app && - . ~/.bashrc && - source ./scripts/activate_env.sh && - ./launch-editor.sh --version-check - " - environment: - NVM_DIR: /root/.nvm - NODE_ENV: test - networks: - - test-network - - # Test system Node only scenario - test-node-only: - build: - context: . - dockerfile: docker/test-node-only.Dockerfile - image: occ-test-node-only:latest - container_name: occ-test-node-only - working_dir: /app - volumes: - - .:/app - - node_modules_node_only:/app/node_modules - command: > - bash -c " - npm ci --ignore-scripts && - cd apps/editor && - npm ci && - cd /app && - source ./scripts/activate_env.sh && - ./launch-editor.sh --version-check - " - environment: - NODE_ENV: test - networks: - - test-network - - # Test auto-install scenario (starts from base OS) - test-node-setup: - build: - context: . - dockerfile: docker/test-node-setup.Dockerfile - image: occ-test-node-setup:latest - container_name: occ-test-node-setup - working_dir: /app - volumes: - - .:/app - - node_modules_setup:/app/node_modules - - nvm_cache:/root/.nvm - command: > - bash -c " - apt-get update && - apt-get install -y curl wget git && - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && - export NVM_DIR=/root/.nvm && - echo 'export NVM_DIR=\"$$HOME/.nvm\"' >> ~/.bashrc && - echo '[ -s \"$$NVM_DIR/nvm.sh\" ] && source \"$$NVM_DIR/nvm.sh\"' >> ~/.bashrc && - npm ci --ignore-scripts && - cd apps/editor && - npm ci && - cd /app && - . ~/.bashrc && - source ./scripts/activate_env.sh && - ./launch-editor.sh --setup-and-run - " - environment: - NVM_DIR: /root/.nvm - NODE_ENV: test - networks: - - test-network - - # Test orchestrator service - runs all tests sequentially - test-runner: - image: docker:latest - depends_on: - - test-fnm - - test-nvm - - test-node-only - - test-node-setup - working_dir: /app - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - .:/app - command: > - sh -c " - echo '========================================' && - echo 'Running OCcode Test Suite' && - echo '========================================' && - echo '' && - echo '[1/4] Testing FNM scenario...' && - docker-compose -f docker-compose.test.yml run --rm test-fnm && - echo '' && - echo '[2/4] Testing NVM scenario...' && - docker-compose -f docker-compose.test.yml run --rm test-nvm && - echo '' && - echo '[3/4] Testing Node-only scenario...' && - docker-compose -f docker-compose.test.yml run --rm test-node-only && - echo '' && - echo '[4/4] Testing Node-setup scenario...' && - docker-compose -f docker-compose.test.yml run --rm test-node-setup && - echo '' && - echo '========================================' && - echo 'All tests completed!' && - echo '========================================'" - networks: - - test-network - -volumes: - node_modules_fnm: - driver: local - node_modules_nvm: - driver: local - node_modules_node_only: - driver: local - node_modules_setup: - driver: local - nvm_cache: - driver: local - -networks: - test-network: - driver: bridge diff --git a/docker/test-fnm.Dockerfile b/docker/test-fnm.Dockerfile deleted file mode 100644 index 23aee8ec..00000000 --- a/docker/test-fnm.Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM node:22 - -# Install system dependencies for native modules -RUN apt-get update && apt-get install -y \ - build-essential \ - python3 \ - libx11-dev \ - libxkbfile-dev \ - && rm -rf /var/lib/apt/lists/* - -# Install fnm -RUN curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir /usr/local - -# Add fnm to path for this layer -ENV PATH="/root/.local/bin:${PATH}" - -# Create project directory -WORKDIR /app - -# Copy package.json to leverage layer caching -COPY package*.json ./ -RUN npm ci --ignore-scripts - -# Copy rest of project -COPY . . - -# Install editor dependencies (required for launch-editor.sh) -RUN cd apps/editor && npm ci - -# Entrypoint to test launch-editor.sh with version detection -CMD ["bash", "-c", "source ./scripts/activate_env.sh && ./launch-editor.sh --version-check"] \ No newline at end of file diff --git a/docker/test-node-only.Dockerfile b/docker/test-node-only.Dockerfile deleted file mode 100644 index b10dbbfd..00000000 --- a/docker/test-node-only.Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM node:22 - -# Install system dependencies for native modules -RUN apt-get update && apt-get install -y \ - build-essential \ - python3 \ - libx11-dev \ - libxkbfile-dev \ - && rm -rf /var/lib/apt/lists/* - -# System node only - no fnm, no nvm -WORKDIR /app -COPY package*.json ./ -RUN npm ci --ignore-scripts -COPY . . -# Install editor dependencies (required for launch-editor.sh) -RUN cd apps/editor && npm ci -CMD ["bash", "-c", "source ./scripts/activate_env.sh && ./launch-editor.sh --version-check"] \ No newline at end of file diff --git a/docker/test-node-setup.Dockerfile b/docker/test-node-setup.Dockerfile deleted file mode 100644 index 5061026f..00000000 --- a/docker/test-node-setup.Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM ubuntu:22.04 - -# Install dependencies needed for nvm, Node.js, and native modules -RUN apt-get update && apt-get install -y \ - curl wget git \ - build-essential \ - python3 \ - libx11-dev \ - libxkbfile-dev - -# Install nvm -RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - -# Add nvm to path -ENV NVM_DIR="/root/.nvm" -RUN echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \ - echo '[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"' >> ~/.bashrc - -# Create project directory -WORKDIR /app - -# Copy package.json to leverage layer caching -COPY package*.json ./ -RUN source ~/.bashrc && npm ci --ignore-scripts - -# Copy rest of project -COPY . . - -# Install editor dependencies (required for launch-editor.sh) -RUN cd apps/editor && source ~/.bashrc && npm ci - -# Entrypoint to run launch-editor.sh with setup and run -CMD ["bash", "-c", "source ~/.bashrc && source ./scripts/activate_env.sh && ./launch-editor.sh --setup-and-run"] \ No newline at end of file diff --git a/docker/test-nvm.Dockerfile b/docker/test-nvm.Dockerfile deleted file mode 100644 index 98301060..00000000 --- a/docker/test-nvm.Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM node:22 - -# Install system dependencies for native modules -RUN apt-get update && apt-get install -y \ - build-essential \ - python3 \ - libx11-dev \ - libxkbfile-dev \ - && rm -rf /var/lib/apt/lists/* - -# Install nvm -RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - -# Add nvm to path -ENV NVM_DIR="/root/.nvm" -RUN echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \ - echo '[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"' >> ~/.bashrc - -# Create project directory -WORKDIR /app - -# Copy package.json to leverage layer caching -COPY package*.json ./ -RUN npm ci --ignore-scripts - -# Copy rest of project -COPY . . - -# Install editor dependencies (required for launch-editor.sh) -RUN cd apps/editor && npm ci - -# Entrypoint to test launch-editor.sh with version detection -CMD ["bash", "-c", "source ~/.bashrc && source ./scripts/activate_env.sh && ./launch-editor.sh --version-check"] \ No newline at end of file From f296265cef5ba97d8ee3433afb82b4f1e172a08b Mon Sep 17 00:00:00 2001 From: linuxdev Date: Mon, 30 Mar 2026 21:28:24 -0400 Subject: [PATCH 11/11] chore(release): 3.2.42 --- CHANGELOG.md | 4 ++++ package.json | 2 +- version.txt | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a1aa8ad..581c637a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [3.2.42](https://github.com/damoahdominic/occ/compare/v3.2.40...v3.2.42) (2026-03-31) + +## [3.2.41](https://github.com/damoahdominic/occ/compare/v3.2.40...v3.2.41) (2026-03-31) + ## [3.2.40](https://github.com/damoahdominic/occ/compare/v3.2.39...v3.2.40) (2026-03-31) ## [3.2.38](https://github.com/damoahdominic/occ/compare/v3.2.39...v3.2.38) (2026-03-31) diff --git a/package.json b/package.json index bd151f35..68202858 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "occode", - "version": "3.2.40", + "version": "3.2.42", "private": true, "description": "OCcode — branded cross-platform IDE wrapper with OpenClaw extension", "workspaces": [ diff --git a/version.txt b/version.txt index 84d050d7..cbccdeb8 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -3.2.40 \ No newline at end of file +3.2.42 \ No newline at end of file