@cortexkit/pi-magic-context 0.21.6 → 0.21.7

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.
@@ -8909,6 +8909,22 @@ var MIGRATIONS = [
8909
8909
  db.exec("ALTER TABLE session_meta ADD COLUMN pending_pi_compaction_marker_state TEXT");
8910
8910
  }
8911
8911
  }
8912
+ },
8913
+ {
8914
+ version: 19,
8915
+ description: "Add compartment state lease table",
8916
+ up: (db) => {
8917
+ db.exec(`
8918
+ CREATE TABLE IF NOT EXISTS compartment_state_lease (
8919
+ session_id TEXT PRIMARY KEY NOT NULL,
8920
+ holder_id TEXT NOT NULL,
8921
+ acquired_at INTEGER NOT NULL,
8922
+ expires_at INTEGER NOT NULL
8923
+ );
8924
+ CREATE INDEX IF NOT EXISTS idx_compartment_state_lease_expires
8925
+ ON compartment_state_lease(expires_at);
8926
+ `);
8927
+ }
8912
8928
  }
8913
8929
  ];
8914
8930
  function ensureMigrationsTable(db) {
@@ -141956,6 +141972,15 @@ function initializeDatabase(db) {
141956
141972
  );
141957
141973
  CREATE INDEX IF NOT EXISTS idx_compartments_session ON compartments(session_id);
141958
141974
 
141975
+ CREATE TABLE IF NOT EXISTS compartment_state_lease (
141976
+ session_id TEXT PRIMARY KEY NOT NULL,
141977
+ holder_id TEXT NOT NULL,
141978
+ acquired_at INTEGER NOT NULL,
141979
+ expires_at INTEGER NOT NULL
141980
+ );
141981
+ CREATE INDEX IF NOT EXISTS idx_compartment_state_lease_expires
141982
+ ON compartment_state_lease(expires_at);
141983
+
141959
141984
  CREATE TABLE IF NOT EXISTS compression_depth (
141960
141985
  session_id TEXT NOT NULL,
141961
141986
  message_ordinal INTEGER NOT NULL,
@@ -142384,6 +142409,56 @@ import { existsSync as existsSync6, readFileSync as readFileSync3 } from "node:f
142384
142409
  import { homedir as homedir3 } from "node:os";
142385
142410
  import { join as join6 } from "node:path";
142386
142411
 
142412
+ // ../plugin/src/config/agent-disable.ts
142413
+ function isDreamerRunnable(config) {
142414
+ return !!config.dreamer && config.dreamer.disable !== true;
142415
+ }
142416
+ function clonePlainObject(value) {
142417
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
142418
+ return;
142419
+ }
142420
+ return { ...value };
142421
+ }
142422
+ function migrateLegacyEnabledForAgent(args) {
142423
+ const agent = clonePlainObject(args.patched[args.agentName]);
142424
+ if (!agent || !("enabled" in agent))
142425
+ return;
142426
+ const enabled = agent.enabled;
142427
+ const disable = agent.disable;
142428
+ delete agent.enabled;
142429
+ if (args.agentName === "historian") {
142430
+ args.warnings.push('Removed invalid "historian.enabled" in-memory (run doctor to persist).');
142431
+ args.patched.historian = agent;
142432
+ return;
142433
+ }
142434
+ if (args.agentName === "dreamer") {
142435
+ if (disable !== true && enabled === false) {
142436
+ agent.disable = true;
142437
+ args.warnings.push('Migrated "dreamer.enabled=false" → "dreamer.disable=true" in-memory (run doctor to persist). This now also disables manual /ctx-dream; for manual-only remove disable and set schedule="".');
142438
+ }
142439
+ args.patched.dreamer = agent;
142440
+ return;
142441
+ }
142442
+ if (disable !== true && enabled === false) {
142443
+ agent.disable = true;
142444
+ args.warnings.push('Migrated "sidekick.enabled=false" → "sidekick.disable=true" in-memory (run doctor to persist).');
142445
+ }
142446
+ args.patched.sidekick = agent;
142447
+ }
142448
+ function migrateLegacyAgentEnabledInMemory(rawConfig, warnings) {
142449
+ const shouldPatch = ["dreamer", "sidekick", "historian"].some((key) => {
142450
+ const agent = rawConfig[key];
142451
+ return typeof agent === "object" && agent !== null && !Array.isArray(agent) && "enabled" in agent;
142452
+ });
142453
+ if (!shouldPatch)
142454
+ return rawConfig;
142455
+ const patched = { ...rawConfig };
142456
+ migrateLegacyEnabledForAgent({ patched, agentName: "dreamer", warnings });
142457
+ migrateLegacyEnabledForAgent({ patched, agentName: "sidekick", warnings });
142458
+ migrateLegacyEnabledForAgent({ patched, agentName: "historian", warnings });
142459
+ return patched;
142460
+ }
142461
+
142387
142462
  // ../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
142388
142463
  var exports_external = {};
142389
142464
  __export(exports_external, {
@@ -156723,7 +156798,6 @@ var DEFAULT_DREAMER_TASKS = [
156723
156798
  ];
156724
156799
  var PiThinkingLevelSchema = exports_external.enum(["off", "minimal", "low", "medium", "high", "xhigh"]).optional();
156725
156800
  var DreamerConfigSchema = AgentOverrideConfigSchema.merge(exports_external.object({
156726
- enabled: exports_external.boolean().default(false),
156727
156801
  schedule: exports_external.string().default("02:00-06:00"),
156728
156802
  max_runtime_minutes: exports_external.number().min(10).default(120),
156729
156803
  tasks: exports_external.array(DreamingTaskSchema).default(DEFAULT_DREAMER_TASKS),
@@ -156741,7 +156815,6 @@ var DreamerConfigSchema = AgentOverrideConfigSchema.merge(exports_external.objec
156741
156815
  thinking_level: PiThinkingLevelSchema
156742
156816
  }));
156743
156817
  var SidekickConfigSchema = AgentOverrideConfigSchema.extend({
156744
- enabled: exports_external.boolean().default(false),
156745
156818
  timeout_ms: exports_external.number().default(30000),
156746
156819
  system_prompt: exports_external.string().optional(),
156747
156820
  thinking_level: PiThinkingLevelSchema
@@ -157131,9 +157204,11 @@ function mergeRawConfigs(base, override) {
157131
157204
  return merged;
157132
157205
  }
157133
157206
  function parsePiConfig(rawConfig, recoveredTopLevelKeys = []) {
157134
- const parsed = MagicContextConfigSchema.safeParse(rawConfig);
157207
+ const preMigrationWarnings = [];
157208
+ const migrated = migrateLegacyAgentEnabledInMemory(rawConfig, preMigrationWarnings);
157209
+ const parsed = MagicContextConfigSchema.safeParse(migrated);
157135
157210
  if (parsed.success) {
157136
- return { config: parsed.data, warnings: [] };
157211
+ return { config: parsed.data, warnings: preMigrationWarnings };
157137
157212
  }
157138
157213
  const defaults = MagicContextConfigSchema.parse({});
157139
157214
  const errorPaths = new Set;
@@ -157143,8 +157218,8 @@ function parsePiConfig(rawConfig, recoveredTopLevelKeys = []) {
157143
157218
  errorPaths.add(String(topKey));
157144
157219
  }
157145
157220
  }
157146
- const patched = { ...rawConfig };
157147
- const warnings = [];
157221
+ const patched = { ...migrated };
157222
+ const warnings = [...preMigrationWarnings];
157148
157223
  for (const key of errorPaths) {
157149
157224
  recoveredTopLevelKeys.push(key);
157150
157225
  const isAgentConfig = key === "historian" || key === "dreamer" || key === "sidekick";
@@ -163148,7 +163223,7 @@ function convertEntriesToRawMessages(entries) {
163148
163223
  if (pendingToolParts.length > 0) {
163149
163224
  result.push({
163150
163225
  ordinal: nextOrdinal++,
163151
- id: pendingFirstRealId,
163226
+ id: `synth-user-${pendingFirstRealId}`,
163152
163227
  role: "user",
163153
163228
  parts: pendingToolParts
163154
163229
  });
@@ -163173,7 +163248,7 @@ function convertEntriesToRawMessages(entries) {
163173
163248
  if (pendingToolParts.length > 0) {
163174
163249
  result.push({
163175
163250
  ordinal: nextOrdinal,
163176
- id: pendingFirstRealId,
163251
+ id: `synth-user-${pendingFirstRealId}`,
163177
163252
  role: "user",
163178
163253
  parts: pendingToolParts
163179
163254
  });
@@ -163325,6 +163400,99 @@ function createCtxExpandTool(_deps) {
163325
163400
  }
163326
163401
  };
163327
163402
  }
163403
+ // ../plugin/src/features/magic-context/compartment-lease.ts
163404
+ var COMPARTMENT_LEASE_TTL_MS = 5 * 60 * 1000;
163405
+ var COMPARTMENT_LEASE_RENEWAL_MS = 60 * 1000;
163406
+ function acquireCompartmentLease(db, sessionId, holderId) {
163407
+ const acquiredAt = Date.now();
163408
+ const expiresAt = acquiredAt + COMPARTMENT_LEASE_TTL_MS;
163409
+ const result = db.prepare(`INSERT INTO compartment_state_lease (session_id, holder_id, acquired_at, expires_at)
163410
+ VALUES (?, ?, ?, ?)
163411
+ ON CONFLICT(session_id) DO UPDATE SET
163412
+ holder_id = excluded.holder_id,
163413
+ acquired_at = excluded.acquired_at,
163414
+ expires_at = excluded.expires_at
163415
+ WHERE compartment_state_lease.holder_id = excluded.holder_id
163416
+ OR compartment_state_lease.expires_at <= ?`).run(sessionId, holderId, acquiredAt, expiresAt, acquiredAt);
163417
+ if (result.changes !== 1) {
163418
+ return null;
163419
+ }
163420
+ return { sessionId, holderId, acquiredAt, expiresAt };
163421
+ }
163422
+ function renewCompartmentLease(db, sessionId, holderId) {
163423
+ const now = Date.now();
163424
+ const expiresAt = now + COMPARTMENT_LEASE_TTL_MS;
163425
+ const result = db.prepare(`UPDATE compartment_state_lease
163426
+ SET expires_at = ?, acquired_at = ?
163427
+ WHERE session_id = ? AND holder_id = ? AND expires_at > ?`).run(expiresAt, now, sessionId, holderId, now);
163428
+ return result.changes === 1;
163429
+ }
163430
+ function releaseCompartmentLease(db, sessionId, holderId) {
163431
+ db.prepare("DELETE FROM compartment_state_lease WHERE session_id = ? AND holder_id = ?").run(sessionId, holderId);
163432
+ }
163433
+ function isCompartmentLeaseHeld(db, sessionId, holderId) {
163434
+ const row = db.prepare("SELECT 1 FROM compartment_state_lease WHERE session_id = ? AND holder_id = ? AND expires_at > ?").get(sessionId, holderId, Date.now());
163435
+ return row != null;
163436
+ }
163437
+
163438
+ // ../plugin/src/features/magic-context/compression-depth-storage.ts
163439
+ var incrementDepthStatements = new WeakMap;
163440
+ var totalDepthStatements = new WeakMap;
163441
+ var maxDepthStatements = new WeakMap;
163442
+ var clearDepthStatements = new WeakMap;
163443
+ function getIncrementDepthStatement(db) {
163444
+ let stmt = incrementDepthStatements.get(db);
163445
+ if (!stmt) {
163446
+ stmt = db.prepare("INSERT INTO compression_depth (session_id, message_ordinal, depth, harness) VALUES (?, ?, 1, ?) ON CONFLICT(session_id, message_ordinal) DO UPDATE SET depth = depth + 1");
163447
+ incrementDepthStatements.set(db, stmt);
163448
+ }
163449
+ return stmt;
163450
+ }
163451
+ function getTotalDepthStatement(db) {
163452
+ let stmt = totalDepthStatements.get(db);
163453
+ if (!stmt) {
163454
+ stmt = db.prepare("SELECT COALESCE(SUM(depth), 0) AS total_depth FROM compression_depth WHERE session_id = ? AND message_ordinal BETWEEN ? AND ?");
163455
+ totalDepthStatements.set(db, stmt);
163456
+ }
163457
+ return stmt;
163458
+ }
163459
+ function getClearDepthStatement(db) {
163460
+ let stmt = clearDepthStatements.get(db);
163461
+ if (!stmt) {
163462
+ stmt = db.prepare("DELETE FROM compression_depth WHERE session_id = ?");
163463
+ clearDepthStatements.set(db, stmt);
163464
+ }
163465
+ return stmt;
163466
+ }
163467
+ function incrementCompressionDepth(db, sessionId, startOrdinal, endOrdinal) {
163468
+ if (endOrdinal < startOrdinal) {
163469
+ return;
163470
+ }
163471
+ db.transaction(() => {
163472
+ const stmt = getIncrementDepthStatement(db);
163473
+ for (let ordinal = startOrdinal;ordinal <= endOrdinal; ordinal += 1) {
163474
+ stmt.run(sessionId, ordinal, getHarness());
163475
+ }
163476
+ })();
163477
+ }
163478
+ function getAverageCompressionDepth(db, sessionId, startOrdinal, endOrdinal) {
163479
+ if (endOrdinal < startOrdinal) {
163480
+ return 0;
163481
+ }
163482
+ const row = getTotalDepthStatement(db).get(sessionId, startOrdinal, endOrdinal);
163483
+ const totalDepth = typeof row?.total_depth === "number" ? row.total_depth : 0;
163484
+ const messageCount = endOrdinal - startOrdinal + 1;
163485
+ return totalDepth / messageCount;
163486
+ }
163487
+ function clearCompressionDepth(db, sessionId) {
163488
+ getClearDepthStatement(db).run(sessionId);
163489
+ }
163490
+ function clearCompressionDepthRange(db, sessionId, startOrdinal, endOrdinal) {
163491
+ if (endOrdinal < startOrdinal) {
163492
+ return;
163493
+ }
163494
+ db.prepare("DELETE FROM compression_depth WHERE session_id = ? AND message_ordinal BETWEEN ? AND ?").run(sessionId, startOrdinal, endOrdinal);
163495
+ }
163328
163496
 
163329
163497
  // ../plugin/src/features/magic-context/compartment-storage.ts
163330
163498
  var insertCompartmentStatements = new WeakMap;
@@ -163435,6 +163603,38 @@ function replaceAllCompartmentState(db, sessionId, compartments, facts) {
163435
163603
  db.prepare("UPDATE session_meta SET memory_block_cache = '', memory_block_ids = '' WHERE session_id = ?").run(sessionId);
163436
163604
  })();
163437
163605
  }
163606
+ function replaceAllCompartmentStateAndBumpDepth(db, holderId, sessionId, compartments, facts, depthStartOrdinal, depthEndOrdinal) {
163607
+ const now = Date.now();
163608
+ db.exec("BEGIN IMMEDIATE");
163609
+ let finished = false;
163610
+ try {
163611
+ if (!isCompartmentLeaseHeld(db, sessionId, holderId)) {
163612
+ db.exec("ROLLBACK");
163613
+ finished = true;
163614
+ return false;
163615
+ }
163616
+ db.prepare("DELETE FROM compartments WHERE session_id = ?").run(sessionId);
163617
+ db.prepare("DELETE FROM session_facts WHERE session_id = ?").run(sessionId);
163618
+ insertCompartmentRows(db, sessionId, compartments, now);
163619
+ insertFactRows(db, sessionId, facts, now);
163620
+ db.prepare("UPDATE session_meta SET memory_block_cache = '', memory_block_ids = '' WHERE session_id = ?").run(sessionId);
163621
+ if (depthEndOrdinal >= depthStartOrdinal) {
163622
+ const stmt = getIncrementDepthStatement(db);
163623
+ for (let ordinal = depthStartOrdinal;ordinal <= depthEndOrdinal; ordinal += 1) {
163624
+ stmt.run(sessionId, ordinal, getHarness());
163625
+ }
163626
+ }
163627
+ db.exec("COMMIT");
163628
+ finished = true;
163629
+ return true;
163630
+ } finally {
163631
+ if (!finished) {
163632
+ try {
163633
+ db.exec("ROLLBACK");
163634
+ } catch {}
163635
+ }
163636
+ }
163637
+ }
163438
163638
  function buildCompartmentBlock(compartments, facts, memoryBlock, dateRanges) {
163439
163639
  const lines = [];
163440
163640
  if (memoryBlock) {
@@ -163502,12 +163702,37 @@ function getRecompStaging(db, sessionId) {
163502
163702
  lastEndMessage: lastEnd
163503
163703
  };
163504
163704
  }
163505
- function promoteRecompStaging(db, sessionId) {
163705
+ function promoteRecompStaging(db, sessionId, holderId) {
163506
163706
  const now = Date.now();
163507
- return db.transaction(() => {
163707
+ if (!holderId) {
163708
+ return db.transaction(() => {
163709
+ const staging = getRecompStaging(db, sessionId);
163710
+ if (!staging || staging.compartments.length === 0)
163711
+ return null;
163712
+ db.prepare("DELETE FROM compartments WHERE session_id = ?").run(sessionId);
163713
+ db.prepare("DELETE FROM session_facts WHERE session_id = ?").run(sessionId);
163714
+ insertCompartmentRows(db, sessionId, staging.compartments, now);
163715
+ insertFactRows(db, sessionId, staging.facts, now);
163716
+ db.prepare("DELETE FROM recomp_compartments WHERE session_id = ?").run(sessionId);
163717
+ db.prepare("DELETE FROM recomp_facts WHERE session_id = ?").run(sessionId);
163718
+ db.prepare("UPDATE session_meta SET memory_block_cache = '', memory_block_ids = '' WHERE session_id = ?").run(sessionId);
163719
+ return { compartments: staging.compartments, facts: staging.facts };
163720
+ })();
163721
+ }
163722
+ db.exec("BEGIN IMMEDIATE");
163723
+ let finished = false;
163724
+ try {
163725
+ if (!isCompartmentLeaseHeld(db, sessionId, holderId)) {
163726
+ db.exec("ROLLBACK");
163727
+ finished = true;
163728
+ return null;
163729
+ }
163508
163730
  const staging = getRecompStaging(db, sessionId);
163509
- if (!staging || staging.compartments.length === 0)
163731
+ if (!staging || staging.compartments.length === 0) {
163732
+ db.exec("ROLLBACK");
163733
+ finished = true;
163510
163734
  return null;
163735
+ }
163511
163736
  db.prepare("DELETE FROM compartments WHERE session_id = ?").run(sessionId);
163512
163737
  db.prepare("DELETE FROM session_facts WHERE session_id = ?").run(sessionId);
163513
163738
  insertCompartmentRows(db, sessionId, staging.compartments, now);
@@ -163515,8 +163740,16 @@ function promoteRecompStaging(db, sessionId) {
163515
163740
  db.prepare("DELETE FROM recomp_compartments WHERE session_id = ?").run(sessionId);
163516
163741
  db.prepare("DELETE FROM recomp_facts WHERE session_id = ?").run(sessionId);
163517
163742
  db.prepare("UPDATE session_meta SET memory_block_cache = '', memory_block_ids = '' WHERE session_id = ?").run(sessionId);
163743
+ db.exec("COMMIT");
163744
+ finished = true;
163518
163745
  return { compartments: staging.compartments, facts: staging.facts };
163519
- })();
163746
+ } finally {
163747
+ if (!finished) {
163748
+ try {
163749
+ db.exec("ROLLBACK");
163750
+ } catch {}
163751
+ }
163752
+ }
163520
163753
  }
163521
163754
  function invalidateAllMemoryBlockCaches(db) {
163522
163755
  try {
@@ -164376,64 +164609,6 @@ function createCtxMemoryTool(deps) {
164376
164609
  }
164377
164610
  };
164378
164611
  }
164379
- // ../plugin/src/features/magic-context/compression-depth-storage.ts
164380
- var incrementDepthStatements = new WeakMap;
164381
- var totalDepthStatements = new WeakMap;
164382
- var maxDepthStatements = new WeakMap;
164383
- var clearDepthStatements = new WeakMap;
164384
- function getIncrementDepthStatement(db) {
164385
- let stmt = incrementDepthStatements.get(db);
164386
- if (!stmt) {
164387
- stmt = db.prepare("INSERT INTO compression_depth (session_id, message_ordinal, depth, harness) VALUES (?, ?, 1, ?) ON CONFLICT(session_id, message_ordinal) DO UPDATE SET depth = depth + 1");
164388
- incrementDepthStatements.set(db, stmt);
164389
- }
164390
- return stmt;
164391
- }
164392
- function getTotalDepthStatement(db) {
164393
- let stmt = totalDepthStatements.get(db);
164394
- if (!stmt) {
164395
- stmt = db.prepare("SELECT COALESCE(SUM(depth), 0) AS total_depth FROM compression_depth WHERE session_id = ? AND message_ordinal BETWEEN ? AND ?");
164396
- totalDepthStatements.set(db, stmt);
164397
- }
164398
- return stmt;
164399
- }
164400
- function getClearDepthStatement(db) {
164401
- let stmt = clearDepthStatements.get(db);
164402
- if (!stmt) {
164403
- stmt = db.prepare("DELETE FROM compression_depth WHERE session_id = ?");
164404
- clearDepthStatements.set(db, stmt);
164405
- }
164406
- return stmt;
164407
- }
164408
- function incrementCompressionDepth(db, sessionId, startOrdinal, endOrdinal) {
164409
- if (endOrdinal < startOrdinal) {
164410
- return;
164411
- }
164412
- db.transaction(() => {
164413
- const stmt = getIncrementDepthStatement(db);
164414
- for (let ordinal = startOrdinal;ordinal <= endOrdinal; ordinal += 1) {
164415
- stmt.run(sessionId, ordinal, getHarness());
164416
- }
164417
- })();
164418
- }
164419
- function getAverageCompressionDepth(db, sessionId, startOrdinal, endOrdinal) {
164420
- if (endOrdinal < startOrdinal) {
164421
- return 0;
164422
- }
164423
- const row = getTotalDepthStatement(db).get(sessionId, startOrdinal, endOrdinal);
164424
- const totalDepth = typeof row?.total_depth === "number" ? row.total_depth : 0;
164425
- const messageCount = endOrdinal - startOrdinal + 1;
164426
- return totalDepth / messageCount;
164427
- }
164428
- function clearCompressionDepth(db, sessionId) {
164429
- getClearDepthStatement(db).run(sessionId);
164430
- }
164431
- function clearCompressionDepthRange(db, sessionId, startOrdinal, endOrdinal) {
164432
- if (endOrdinal < startOrdinal) {
164433
- return;
164434
- }
164435
- db.prepare("DELETE FROM compression_depth WHERE session_id = ? AND message_ordinal BETWEEN ? AND ?").run(sessionId, startOrdinal, endOrdinal);
164436
- }
164437
164612
  // ../plugin/src/features/magic-context/message-index.ts
164438
164613
  var lastIndexedStatements = new WeakMap;
164439
164614
  var insertMessageStatements = new WeakMap;
@@ -165077,6 +165252,7 @@ function getPendingPiCompactionMarkerState(db, sessionId) {
165077
165252
  return parsed;
165078
165253
  }
165079
165254
  } catch {}
165255
+ db.prepare("UPDATE session_meta SET pending_pi_compaction_marker_state = NULL WHERE session_id = ? AND pending_pi_compaction_marker_state = ?").run(sessionId, raw);
165080
165256
  return null;
165081
165257
  }
165082
165258
  function setPendingPiCompactionMarkerState(db, sessionId, state) {
@@ -167367,8 +167543,7 @@ function magicContextSubagentExtension(pi) {
167367
167543
  try {
167368
167544
  const db = openDatabase();
167369
167545
  if (!db) {
167370
- log("[pi-subagent] storage open failed; tools will not register");
167371
- return;
167546
+ throw new Error("storage open failed; refusing to start without Magic Context tools");
167372
167547
  }
167373
167548
  openedDb = db;
167374
167549
  const directory = process.cwd();
@@ -167382,7 +167557,10 @@ function magicContextSubagentExtension(pi) {
167382
167557
  });
167383
167558
  log(`[pi-subagent] registered tools: ctx_search, ctx_memory, ctx_note, ctx_expand` + ` (memory=${cfg.memory.enabled}, embedding=${cfg.embedding.provider !== "off"},` + ` git_commits=${cfg.experimental.git_commit_indexing.enabled}, dreamer_actions=${dreamerActionsEnabled})`);
167384
167559
  } catch (err5) {
167385
- log(`[pi-subagent] startup failed: ${err5 instanceof Error ? err5.message : String(err5)}`);
167560
+ const message = err5 instanceof Error ? err5.message : String(err5);
167561
+ log(`[pi-subagent] startup failed: ${message}`);
167562
+ process.exitCode = 1;
167563
+ throw err5;
167386
167564
  }
167387
167565
  });
167388
167566
  pi.on("session_shutdown", () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/pi-magic-context",
3
- "version": "0.21.6",
3
+ "version": "0.21.7",
4
4
  "type": "module",
5
5
  "description": "Pi coding agent extension for Magic Context — cross-session memory and context management",
6
6
  "main": "dist/index.js",