@ekkos/cli 1.2.17 → 1.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -469,13 +469,12 @@ function getEkkosEnv() {
469
469
  env.EKKOS_PROXY_MODE = '1';
470
470
  // Enable ultra-minimal mode by default (30%→20% eviction for constant-cost infinite context)
471
471
  env.EKKOS_ULTRA_MINIMAL = '1';
472
- // Use a unique pending scope until Claude exposes its real session UUID.
473
- // run.ts binds this scope to the real session immediately on transcript detect.
472
+ // Generate a deterministic word-triple session name from a fresh UUID.
473
+ // This eliminates _pending-* placeholders proxy sees a real name from request #1.
474
474
  if (!cliSessionName) {
475
- const pendingToken = crypto.randomBytes(8).toString('hex');
476
- cliSessionName = `_pending-${pendingToken}`;
477
- cliSessionId = `pending-${pendingToken}`;
478
- console.log(chalk_1.default.gray(` 📂 Session: pending (will bind to Claude session)`));
475
+ cliSessionId = crypto.randomUUID();
476
+ cliSessionName = (0, state_1.uuidToWords)(cliSessionId);
477
+ console.log(chalk_1.default.gray(` 📂 Session: ${cliSessionName}`));
479
478
  }
480
479
  // Get full userId from config (NOT the truncated version from auth token)
481
480
  // Config has full UUID like "d4532ba0-0a86-42ce-bab4-22aa62b55ce6"
@@ -499,7 +498,7 @@ function getEkkosEnv() {
499
498
  // Project path is base64-encoded to handle special chars safely
500
499
  const projectPath = process.cwd();
501
500
  const projectPathEncoded = Buffer.from(projectPath).toString('base64url');
502
- const proxyUrl = `${EKKOS_PROXY_URL}/proxy/${encodeURIComponent(userId)}/${encodeURIComponent(cliSessionName)}?project=${projectPathEncoded}`;
501
+ const proxyUrl = `${EKKOS_PROXY_URL}/proxy/${encodeURIComponent(userId)}/${encodeURIComponent(cliSessionName)}?project=${projectPathEncoded}&sid=${encodeURIComponent(cliSessionId)}`;
503
502
  env.ANTHROPIC_BASE_URL = proxyUrl;
504
503
  // Proxy URL contains userId + project path — don't leak to terminal
505
504
  }
@@ -1352,7 +1351,7 @@ async function run(options) {
1352
1351
  }
1353
1352
  // Track state — only use explicit -s option; never inherit stale session from state.json
1354
1353
  // The real session name will be detected from Claude Code's output (line ~2552)
1355
- let currentSession = options.session || null;
1354
+ let currentSession = options.session || cliSessionName || null;
1356
1355
  // Write initial instance file
1357
1356
  const startedAt = new Date().toISOString();
1358
1357
  writeInstanceFile(instanceId, {
@@ -1657,7 +1656,7 @@ async function run(options) {
1657
1656
  return;
1658
1657
  if (boundProxySession === sessionName || bindingSessionInFlight === sessionName)
1659
1658
  return;
1660
- const pendingSession = cliSessionName?.startsWith('_pending') ? cliSessionName : undefined;
1659
+ const pendingSession = undefined; // CLI session names are real word-triples from the start
1661
1660
  const bindSessionId = sessionIdHint || currentSessionId || undefined;
1662
1661
  bindingSessionInFlight = sessionName;
1663
1662
  void (async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekkos/cli",
3
- "version": "1.2.17",
3
+ "version": "1.2.18",
4
4
  "description": "Setup ekkOS memory for AI coding assistants (Claude Code, Cursor, Windsurf)",
5
5
  "main": "dist/index.js",
6
6
  "bin": {