diff --git a/eslint.config.js b/eslint.config.js index dc05e6ab42..8a8fa6bcda 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -53,6 +53,10 @@ export default tseslint.config( '.gemini/skills/**', '**/*.d.ts', 'packages/core/src/teleportation/trajectory_teleporter.min.js', + 'old_teleporter.js', + 'test_file_tmp.js', + 'test_pb.js', + 'packages/core/test_ws.ts', ], }, eslint.configs.recommended, diff --git a/packages/core/src/teleportation/TELEPORTATION.md b/packages/core/src/teleportation/TELEPORTATION.md index 117e71fd76..ae3f5c350a 100644 --- a/packages/core/src/teleportation/TELEPORTATION.md +++ b/packages/core/src/teleportation/TELEPORTATION.md @@ -27,6 +27,12 @@ dedicated teleporter bundle: - **Process**: The binary `.pb` file is read into a Buffer and passed to the teleporter's `trajectoryToJson` function, which outputs a standard JavaScript object. +- **Generation**: To ensure the CLI stays in sync with Jetski's protobuf schema + (`cortex.proto`), this bundle isn't written entirely by hand. It is + auto-generated by compiling the latest schema via `esbuild`. You can rebuild + it anytime by running `npm run build:teleporter` from the CLI root. _(See + [How to Regenerate the Bundle](#how-to-regenerate-the-bundle) for exact + steps)._ ## 3. Workspace Identification @@ -135,8 +141,7 @@ is skipped. This includes: Once converted: 1. The record is injected into the CLI's `ChatRecordingService`. -2. Users can continue the conversation seamlessly via the `/chat resume` - command. +2. Users can continue the conversation seamlessly via the `/resume` command. ## Maintenance & Updates @@ -200,9 +205,9 @@ addressed: ### 3. User Experience (UX) -- **Clear UI Indicators:** In the CLI's `/chat resume` menu, Jetski sessions - should be visually distinct from native CLI sessions (e.g., using a 🛸 icon - and a "Jetski" tag next to the session name). +- **Clear UI Indicators:** In the CLI's `/resume` menu, Jetski sessions should + be visually distinct from native CLI sessions (e.g., using a 🛸 icon and a + "Jetski" tag next to the session name). - **Missing Context Warnings:** Because we intentionally drop 75+ step types (browser actions, IDE UI clicks, etc.), the CLI conversation history might look like it has "gaps." The UI should render a small placeholder like: @@ -226,10 +231,10 @@ addressed: ### 5. Performance - **Lazy Loading / Streaming:** When populating the list of sessions for - `/chat resume`, the CLI shouldn’t decrypt and parse the _entire_ history of - every file. It should only read the `metadata` headers to render the UI - picker, and only parse the full multi-megabyte `ConversationRecord` when a - specific session is selected. + `/resume`, the CLI shouldn’t decrypt and parse the _entire_ history of every + file. It should only read the `metadata` headers to render the UI picker, and + only parse the full multi-megabyte `ConversationRecord` when a specific + session is selected. - **Memory Limits:** Set an upper limit on how many historical tool turns the CLI loads into memory when teleporting to avoid OOM (Out of Memory) crashes in Node.js. diff --git a/scripts/clean.js b/scripts/clean.js index dbb3849b15..a681f4517e 100644 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -24,15 +24,17 @@ import { fileURLToPath } from 'node:url'; const __dirname = dirname(fileURLToPath(import.meta.url)); const root = join(__dirname, '..'); -// remove npm install/build artifacts -rmSync(join(root, 'node_modules'), { recursive: true, force: true }); -rmSync(join(root, 'bundle'), { recursive: true, force: true }); -rmSync(join(root, 'packages/cli/src/generated/'), { +const RMRF_OPTIONS = { recursive: true, force: true, -}); -const RMRF_OPTIONS = { recursive: true, force: true }; + maxRetries: 10, + retryDelay: 100, +}; + +// remove npm install/build artifacts +rmSync(join(root, 'node_modules'), RMRF_OPTIONS); rmSync(join(root, 'bundle'), RMRF_OPTIONS); +rmSync(join(root, 'packages/cli/src/generated/'), RMRF_OPTIONS); // Dynamically clean dist directories in all workspaces const rootPackageJson = JSON.parse( readFileSync(join(root, 'package.json'), 'utf-8'), @@ -57,10 +59,7 @@ for (const workspace of rootPackageJson.workspaces) { } // Clean up vscode-ide-companion package -rmSync(join(root, 'packages/vscode-ide-companion/node_modules'), { - recursive: true, - force: true, -}); +rmSync(join(root, 'packages/vscode-ide-companion/node_modules'), RMRF_OPTIONS); const vscodeCompanionDir = join(root, 'packages/vscode-ide-companion'); try {