@theokit/sdk 4.57.0 → 4.59.0

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.
Files changed (101) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/dist/{agent-ZIYCVEZL.js → agent-ST27RIJE.js} +10 -9
  3. package/dist/{agent-ZIYCVEZL.js.map → agent-ST27RIJE.js.map} +1 -1
  4. package/dist/{agent-2T2EJIP6.cjs → agent-VHRX7XGW.cjs} +11 -10
  5. package/dist/{agent-2T2EJIP6.cjs.map → agent-VHRX7XGW.cjs.map} +1 -1
  6. package/dist/{chunk-E7JHD6QJ.cjs → chunk-554J7UQH.cjs} +44 -27
  7. package/dist/chunk-554J7UQH.cjs.map +1 -0
  8. package/dist/{chunk-E3WZ6Y4H.cjs → chunk-7BG5UH3T.cjs} +8 -8
  9. package/dist/{chunk-E3WZ6Y4H.cjs.map → chunk-7BG5UH3T.cjs.map} +1 -1
  10. package/dist/{chunk-X7O4255I.cjs → chunk-7GUIET73.cjs} +4 -4
  11. package/dist/{chunk-X7O4255I.cjs.map → chunk-7GUIET73.cjs.map} +1 -1
  12. package/dist/{chunk-7TCRNXNK.js → chunk-7LOIUIQZ.js} +69 -29
  13. package/dist/chunk-7LOIUIQZ.js.map +1 -0
  14. package/dist/chunk-AQO3NSRG.cjs +41 -0
  15. package/dist/chunk-AQO3NSRG.cjs.map +1 -0
  16. package/dist/{chunk-LEM2GOMI.js → chunk-D5NWEOCO.js} +3 -3
  17. package/dist/{chunk-LEM2GOMI.js.map → chunk-D5NWEOCO.js.map} +1 -1
  18. package/dist/{chunk-U2AC6JUP.cjs → chunk-J2UROOIG.cjs} +2 -27
  19. package/dist/chunk-J2UROOIG.cjs.map +1 -0
  20. package/dist/{chunk-ZNW6V4Y6.cjs → chunk-LKFET5A3.cjs} +23 -2
  21. package/dist/chunk-LKFET5A3.cjs.map +1 -0
  22. package/dist/{chunk-YMA4S2WO.js → chunk-MZ2FGBLZ.js} +33 -11
  23. package/dist/chunk-MZ2FGBLZ.js.map +1 -0
  24. package/dist/{chunk-53CBTBWO.cjs → chunk-P6H23T43.cjs} +33 -11
  25. package/dist/chunk-P6H23T43.cjs.map +1 -0
  26. package/dist/{chunk-7FHZ4VQX.js → chunk-SAVIWMZB.js} +3 -3
  27. package/dist/{chunk-7FHZ4VQX.js.map → chunk-SAVIWMZB.js.map} +1 -1
  28. package/dist/{chunk-M2JWHKO6.cjs → chunk-SMUAG2DY.cjs} +103 -63
  29. package/dist/chunk-SMUAG2DY.cjs.map +1 -0
  30. package/dist/{chunk-UPRJR6IP.js → chunk-UCBJBJ27.js} +3 -25
  31. package/dist/chunk-UCBJBJ27.js.map +1 -0
  32. package/dist/chunk-UFLD2HEV.js +35 -0
  33. package/dist/chunk-UFLD2HEV.js.map +1 -0
  34. package/dist/{chunk-GTKFV7O5.js → chunk-WFC26L6Y.js} +23 -2
  35. package/dist/chunk-WFC26L6Y.js.map +1 -0
  36. package/dist/{chunk-HJBMA5MB.cjs → chunk-WNTAPVU5.cjs} +47 -6
  37. package/dist/chunk-WNTAPVU5.cjs.map +1 -0
  38. package/dist/{chunk-G6EEYRDD.js → chunk-ZA255A62.js} +43 -26
  39. package/dist/chunk-ZA255A62.js.map +1 -0
  40. package/dist/{chunk-2QKTVKH3.js → chunk-ZHPWGIUX.js} +48 -8
  41. package/dist/chunk-ZHPWGIUX.js.map +1 -0
  42. package/dist/context/index.cjs +7 -7
  43. package/dist/context/index.js +3 -3
  44. package/dist/{context-VMIE4BMD.cjs → context-LCKNH2XI.cjs} +7 -6
  45. package/dist/{context-VMIE4BMD.cjs.map → context-LCKNH2XI.cjs.map} +1 -1
  46. package/dist/context-MZSKGKYR.js +7 -0
  47. package/dist/{context-FDOON2DB.js.map → context-MZSKGKYR.js.map} +1 -1
  48. package/dist/cron.cjs +10 -9
  49. package/dist/cron.js +9 -8
  50. package/dist/eval.cjs +9 -8
  51. package/dist/eval.cjs.map +1 -1
  52. package/dist/eval.js +8 -7
  53. package/dist/eval.js.map +1 -1
  54. package/dist/{index-manager-AO4LJQZ4.cjs → index-manager-A3XPHAWF.cjs} +5 -4
  55. package/dist/{index-manager-AO4LJQZ4.cjs.map → index-manager-A3XPHAWF.cjs.map} +1 -1
  56. package/dist/{index-manager-QDPIYIGV.js → index-manager-A64I7KYV.js} +4 -3
  57. package/dist/{index-manager-QDPIYIGV.js.map → index-manager-A64I7KYV.js.map} +1 -1
  58. package/dist/index.cjs +32 -33
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.d.cts +1 -1
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +12 -13
  63. package/dist/index.js.map +1 -1
  64. package/dist/internal/memory/storage/markdown-store.d.ts +34 -4
  65. package/dist/internal/persistence/index.cjs +17 -16
  66. package/dist/internal/persistence/index.cjs.map +1 -1
  67. package/dist/internal/persistence/index.js +2 -1
  68. package/dist/internal/persistence/index.js.map +1 -1
  69. package/dist/internal/persistence/paths.d.cts +42 -0
  70. package/dist/internal/persistence/paths.d.ts +42 -0
  71. package/dist/internal/persistence/session-dir.d.cts +15 -0
  72. package/dist/internal/persistence/session-dir.d.ts +15 -0
  73. package/dist/internal/runtime/memory/memory-store.d.ts +2 -2
  74. package/dist/internal/runtime/plugins/plugin-bundles.d.ts +19 -0
  75. package/dist/project.cjs +3 -3
  76. package/dist/project.js +1 -1
  77. package/dist/subagents-loader-6ATCDEKN.js +8 -0
  78. package/dist/{subagents-loader-J54ESLDV.js.map → subagents-loader-6ATCDEKN.js.map} +1 -1
  79. package/dist/subagents-loader-X5QKODCL.cjs +17 -0
  80. package/dist/{subagents-loader-AZIXJ7D3.cjs.map → subagents-loader-X5QKODCL.cjs.map} +1 -1
  81. package/dist/subagents-loader.cjs +3 -2
  82. package/dist/subagents-loader.cjs.map +1 -1
  83. package/dist/subagents-loader.js +2 -1
  84. package/dist/subagents-loader.js.map +1 -1
  85. package/docs/error-codes.md +15 -15
  86. package/package.json +1 -1
  87. package/dist/chunk-2QKTVKH3.js.map +0 -1
  88. package/dist/chunk-53CBTBWO.cjs.map +0 -1
  89. package/dist/chunk-7TCRNXNK.js.map +0 -1
  90. package/dist/chunk-E7JHD6QJ.cjs.map +0 -1
  91. package/dist/chunk-G6EEYRDD.js.map +0 -1
  92. package/dist/chunk-GTKFV7O5.js.map +0 -1
  93. package/dist/chunk-HJBMA5MB.cjs.map +0 -1
  94. package/dist/chunk-M2JWHKO6.cjs.map +0 -1
  95. package/dist/chunk-U2AC6JUP.cjs.map +0 -1
  96. package/dist/chunk-UPRJR6IP.js.map +0 -1
  97. package/dist/chunk-YMA4S2WO.js.map +0 -1
  98. package/dist/chunk-ZNW6V4Y6.cjs.map +0 -1
  99. package/dist/context-FDOON2DB.js +0 -6
  100. package/dist/subagents-loader-AZIXJ7D3.cjs +0 -16
  101. package/dist/subagents-loader-J54ESLDV.js +0 -7
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkKKK3FZ4A_cjs = require('./chunk-KKK3FZ4A.cjs');
4
- var chunkE7JHD6QJ_cjs = require('./chunk-E7JHD6QJ.cjs');
5
- var chunk53CBTBWO_cjs = require('./chunk-53CBTBWO.cjs');
4
+ var chunk554J7UQH_cjs = require('./chunk-554J7UQH.cjs');
5
+ var chunkP6H23T43_cjs = require('./chunk-P6H23T43.cjs');
6
6
  var chunkBV2MWEMV_cjs = require('./chunk-BV2MWEMV.cjs');
7
7
  var chunkNGESVVJN_cjs = require('./chunk-NGESVVJN.cjs');
8
8
  var chunkEI2Q7SJ5_cjs = require('./chunk-EI2Q7SJ5.cjs');
9
9
  var chunkQI7WE46I_cjs = require('./chunk-QI7WE46I.cjs');
10
10
  var chunk43GFJ5SD_cjs = require('./chunk-43GFJ5SD.cjs');
11
11
  var chunk2ZPEDVLM_cjs = require('./chunk-2ZPEDVLM.cjs');
12
- var chunkE3WZ6Y4H_cjs = require('./chunk-E3WZ6Y4H.cjs');
13
- var chunkU2AC6JUP_cjs = require('./chunk-U2AC6JUP.cjs');
12
+ var chunk7BG5UH3T_cjs = require('./chunk-7BG5UH3T.cjs');
13
+ var chunkJ2UROOIG_cjs = require('./chunk-J2UROOIG.cjs');
14
14
  var chunkWJVHMTKB_cjs = require('./chunk-WJVHMTKB.cjs');
15
15
  var chunk6JSIEDKL_cjs = require('./chunk-6JSIEDKL.cjs');
16
16
  var chunk4O5TGQBW_cjs = require('./chunk-4O5TGQBW.cjs');
@@ -24,7 +24,8 @@ var chunkBUIK7GUA_cjs = require('./chunk-BUIK7GUA.cjs');
24
24
  var chunk2ADR2GSO_cjs = require('./chunk-2ADR2GSO.cjs');
25
25
  var chunkZF2LDKQQ_cjs = require('./chunk-ZF2LDKQQ.cjs');
26
26
  var chunkI6TGFUCO_cjs = require('./chunk-I6TGFUCO.cjs');
27
- var chunkHJBMA5MB_cjs = require('./chunk-HJBMA5MB.cjs');
27
+ var chunkWNTAPVU5_cjs = require('./chunk-WNTAPVU5.cjs');
28
+ var chunkAQO3NSRG_cjs = require('./chunk-AQO3NSRG.cjs');
28
29
  var chunkIWBGCBR6_cjs = require('./chunk-IWBGCBR6.cjs');
29
30
  var chunkXSX2UU6Y_cjs = require('./chunk-XSX2UU6Y.cjs');
30
31
  var chunk3EE6LVWT_cjs = require('./chunk-3EE6LVWT.cjs');
@@ -453,7 +454,7 @@ function registryPath(cwd) {
453
454
  return path.join(cwd, REGISTRY_RELATIVE_PATH);
454
455
  }
455
456
  async function loadRegistry(cwd) {
456
- return chunkU2AC6JUP_cjs.readVersionedJson({
457
+ return chunkJ2UROOIG_cjs.readVersionedJson({
457
458
  path: registryPath(cwd),
458
459
  currentVersion: SCHEMA_VERSION,
459
460
  defaultValue: () => ({}),
@@ -477,7 +478,7 @@ async function saveRegistry(cwd, agents2) {
477
478
  }
478
479
  const path = registryPath(cwd);
479
480
  await chunkZF2LDKQQ_cjs.withCwdMutex(`registry:${cwd}`, async () => {
480
- await chunkU2AC6JUP_cjs.writeVersionedJson(path, serialized, SCHEMA_VERSION);
481
+ await chunkJ2UROOIG_cjs.writeVersionedJson(path, serialized, SCHEMA_VERSION);
481
482
  });
482
483
  }
483
484
  function toSerialized(agent) {
@@ -884,7 +885,7 @@ async function readLegacyFacts(jsonPath) {
884
885
  }
885
886
  async function writeMigratedFacts(cwd, jsonPath, facts) {
886
887
  try {
887
- for (const fact of facts) await chunkE7JHD6QJ_cjs.appendFactToMarkdown(cwd, fact);
888
+ for (const fact of facts) await chunk554J7UQH_cjs.appendFactToMarkdown(cwd, fact);
888
889
  await promises.unlink(jsonPath).catch(() => void 0);
889
890
  chunkNUKRL3I6_cjs.diag(`[theokit-sdk] migrated ${facts.length} fact(s) from ${jsonPath} to MEMORY.md
890
891
  `);
@@ -901,11 +902,11 @@ async function migrateLegacyJson(cwd, config) {
901
902
  const key = `${cwd}::${config.namespace ?? "default"}::${config.scope ?? "agent"}::${config.userId ?? "default"}`;
902
903
  if (migrationRun.has(key)) return { migrated: false, factCount: 0, reason: "already-migrated" };
903
904
  migrationRun.add(key);
904
- const jsonPath = chunkE7JHD6QJ_cjs.legacyMemoryJsonPath(cwd, config);
905
+ const jsonPath = chunk554J7UQH_cjs.legacyMemoryJsonPath(cwd, config);
905
906
  if (!await fileExists(jsonPath)) {
906
907
  return { migrated: false, factCount: 0, reason: "no-legacy-json" };
907
908
  }
908
- if (await fileExists(chunkE7JHD6QJ_cjs.memoryMdPath(cwd))) {
909
+ if (await fileExists(chunk554J7UQH_cjs.memoryMdPath(cwd))) {
909
910
  chunkNUKRL3I6_cjs.diag(
910
911
  `[theokit-sdk] memory migration skipped: both MEMORY.md and legacy JSON exist at ${jsonPath}; leaving both intact
911
912
  `
@@ -932,21 +933,21 @@ function extractMemoryKind(message) {
932
933
  const declared = match?.[1];
933
934
  if (declared === void 0) return void 0;
934
935
  const lowered = declared.toLowerCase();
935
- return chunkE7JHD6QJ_cjs.MEMORY_KINDS.includes(lowered) ? lowered : void 0;
936
+ return chunk554J7UQH_cjs.MEMORY_KINDS.includes(lowered) ? lowered : void 0;
936
937
  }
937
- async function readMemoryFacts(cwd, config) {
938
+ async function readMemoryFacts(cwd, config, memoryHome) {
938
939
  if (!config.enabled) return [];
939
940
  await migrateLegacyJson(cwd, config);
940
- return chunkE7JHD6QJ_cjs.readFacts(cwd, config);
941
+ return chunk554J7UQH_cjs.readFacts(cwd, config, memoryHome);
941
942
  }
942
- async function appendMemoryFact(cwd, config, fact) {
943
+ async function appendMemoryFact(cwd, config, fact, memoryHome) {
943
944
  if (!config.enabled) return;
944
945
  await migrateLegacyJson(cwd, config);
945
946
  const sanitized = {
946
947
  text: chunkJTB5Q42C_cjs.redactSecrets(fact.text),
947
948
  ...fact.kind === void 0 ? {} : { kind: fact.kind }
948
949
  };
949
- await chunkE7JHD6QJ_cjs.appendFact(cwd, config, sanitized);
950
+ await chunk554J7UQH_cjs.appendFact(cwd, config, sanitized, memoryHome);
950
951
  }
951
952
 
952
953
  // src/internal/runtime/fixtures/fixture-scripts.ts
@@ -2133,6 +2134,10 @@ function resolveSessionDir(local) {
2133
2134
  }
2134
2135
  return chunkBUIK7GUA_cjs.defaultBaseDir();
2135
2136
  }
2137
+ function explicitSessionDir(local) {
2138
+ if (local?.sessionDir === void 0 && local?.baseDir === void 0) return void 0;
2139
+ return resolveSessionDir(local);
2140
+ }
2136
2141
  var SCHEMA_VERSION2 = 1;
2137
2142
  var FILE_NAME = "personality.json";
2138
2143
  function emptyState() {
@@ -2158,14 +2163,14 @@ async function readState(filePath) {
2158
2163
  try {
2159
2164
  parsed = JSON.parse(raw);
2160
2165
  } catch {
2161
- chunk53CBTBWO_cjs.warnOnce(
2166
+ chunkP6H23T43_cjs.warnOnce(
2162
2167
  "personality-store-json-parse",
2163
2168
  "[theokit-sdk] personality.json is malformed; treating as empty"
2164
2169
  );
2165
2170
  return emptyState();
2166
2171
  }
2167
2172
  if (!isStateV1(parsed)) {
2168
- chunk53CBTBWO_cjs.warnOnce(
2173
+ chunkP6H23T43_cjs.warnOnce(
2169
2174
  "personality-store-bad-version",
2170
2175
  `[theokit-sdk] personality.json has unknown version; treating as empty (file kept untouched)`
2171
2176
  );
@@ -2196,7 +2201,7 @@ var PersonalityStore = class {
2196
2201
  try {
2197
2202
  await this.#persist(agentId, slug);
2198
2203
  } catch (err) {
2199
- chunk53CBTBWO_cjs.warnOnce(
2204
+ chunkP6H23T43_cjs.warnOnce(
2200
2205
  `personality-store-persist-failure-${agentId}`,
2201
2206
  `[theokit-sdk] personality persist failed for ${chunkJTB5Q42C_cjs.redactSecrets(agentId)}: ${chunkJTB5Q42C_cjs.redactSecrets(
2202
2207
  err.message
@@ -2213,7 +2218,7 @@ var PersonalityStore = class {
2213
2218
  try {
2214
2219
  state = await readState(filePath);
2215
2220
  } catch (err) {
2216
- chunk53CBTBWO_cjs.warnOnce(
2221
+ chunkP6H23T43_cjs.warnOnce(
2217
2222
  `personality-store-hydrate-failure-${agentId}`,
2218
2223
  `[theokit-sdk] personality hydrate failed for ${chunkJTB5Q42C_cjs.redactSecrets(agentId)}: ${chunkJTB5Q42C_cjs.redactSecrets(
2219
2224
  err.message
@@ -2242,7 +2247,7 @@ var PersonalityStore = class {
2242
2247
  });
2243
2248
  }
2244
2249
  #filePath() {
2245
- return path.join(chunkU2AC6JUP_cjs.getTheokitHome(this.#cwd), FILE_NAME);
2250
+ return path.join(chunkAQO3NSRG_cjs.getTheokitHome(this.#cwd), FILE_NAME);
2246
2251
  }
2247
2252
  };
2248
2253
 
@@ -2603,7 +2608,7 @@ var HooksExecutor = class {
2603
2608
  this.config = {};
2604
2609
  return;
2605
2610
  }
2606
- this.config = await chunk53CBTBWO_cjs.loadHookConfig(this.cwd);
2611
+ this.config = await chunkP6H23T43_cjs.loadHookConfig(this.cwd);
2607
2612
  }
2608
2613
  /** Fire every hook registered for `event` and aggregate the decisions. */
2609
2614
  async run(payload) {
@@ -2799,7 +2804,7 @@ async function runPostRunLifecycle(inputs) {
2799
2804
  if (memoryProvider?.recordSessionSummary !== void 0) {
2800
2805
  await memoryProvider.recordSessionSummary(summaryArgs);
2801
2806
  } else {
2802
- await chunkE7JHD6QJ_cjs.writeSessionSummary(summaryArgs);
2807
+ await chunk554J7UQH_cjs.writeSessionSummary(summaryArgs);
2803
2808
  }
2804
2809
  if (!shouldUsePortMemoryPath()) {
2805
2810
  void memoryGlue.syncIfReady();
@@ -2926,13 +2931,24 @@ var SkillsManager = class {
2926
2931
  await this.refresh();
2927
2932
  }
2928
2933
  async refresh() {
2929
- const skillsRoot = this.skillsDir ?? path.join(this.cwd, ".theokit", "skills");
2930
- const discovered = await chunk3YJNUKYN_cjs.discoverSkills(skillsRoot, {
2931
- onInvalidSkill: (info) => {
2932
- chunkNUKRL3I6_cjs.diag(`[theokit-sdk] skill ${info.name} skipped (${info.code}): ${info.message}
2934
+ const roots = this.skillsDir === void 0 ? [
2935
+ ...chunkAQO3NSRG_cjs.projectConfigRoots(this.cwd).map((root) => path.join(root, "skills")),
2936
+ ...(await chunkWNTAPVU5_cjs.pluginBundleDirs(this.cwd)).map((bundle) => path.join(bundle, "skills"))
2937
+ ] : [this.skillsDir];
2938
+ const discovered = [];
2939
+ const seen = /* @__PURE__ */ new Set();
2940
+ for (const root of roots) {
2941
+ for (const skill of await chunk3YJNUKYN_cjs.discoverSkills(root, {
2942
+ onInvalidSkill: (info) => {
2943
+ chunkNUKRL3I6_cjs.diag(`[theokit-sdk] skill ${info.name} skipped (${info.code}): ${info.message}
2933
2944
  `);
2945
+ }
2946
+ })) {
2947
+ if (seen.has(skill.name)) continue;
2948
+ seen.add(skill.name);
2949
+ discovered.push(skill);
2934
2950
  }
2935
- });
2951
+ }
2936
2952
  this.skills = this.mergeInline(discovered);
2937
2953
  }
2938
2954
  /** M22 — merge inline skills over discovered ones; inline wins on a name conflict. */
@@ -3412,7 +3428,7 @@ var HISTOGRAM_NAMES = {
3412
3428
  };
3413
3429
  function safeRequire(moduleName) {
3414
3430
  try {
3415
- const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-M2JWHKO6.cjs', document.baseURI).href)));
3431
+ const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-SMUAG2DY.cjs', document.baseURI).href)));
3416
3432
  return r(moduleName);
3417
3433
  } catch {
3418
3434
  return void 0;
@@ -3640,7 +3656,7 @@ var cachedOtel;
3640
3656
  function loadOtel() {
3641
3657
  if (cachedOtel === void 0) {
3642
3658
  try {
3643
- const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-M2JWHKO6.cjs', document.baseURI).href)));
3659
+ const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-SMUAG2DY.cjs', document.baseURI).href)));
3644
3660
  const mod = r("@opentelemetry/api");
3645
3661
  cachedOtel = mod;
3646
3662
  } catch {
@@ -3959,7 +3975,7 @@ function applyAggregateCap(sources, maxTotal) {
3959
3975
  }
3960
3976
  const remaining = maxTotal - totalBytes;
3961
3977
  if (remaining > 0) {
3962
- const { finalContent } = chunkE3WZ6Y4H_cjs.truncateWithMarker(s.content, remaining);
3978
+ const { finalContent } = chunk7BG5UH3T_cjs.truncateWithMarker(s.content, remaining);
3963
3979
  kept.push({ ...s, content: finalContent, truncated: true });
3964
3980
  totalBytes = maxTotal;
3965
3981
  } else {
@@ -4033,9 +4049,9 @@ var FileContextManager = class {
4033
4049
  this.lastScope = [...touchedFiles];
4034
4050
  const config = await loadContextConfig(this.cwd);
4035
4051
  const legacy = await loadSources(config, this.cwd);
4036
- const maxBytesPerFile = this.settings.maxBytesPerFile ?? chunkE3WZ6Y4H_cjs.DEFAULT_MAX_BYTES_PER_FILE;
4052
+ const maxBytesPerFile = this.settings.maxBytesPerFile ?? chunk7BG5UH3T_cjs.DEFAULT_MAX_BYTES_PER_FILE;
4037
4053
  const maxBytesTotal = this.settings.maxBytesTotal ?? DEFAULT_MAX_BYTES_TOTAL;
4038
- const discovered = await chunkE3WZ6Y4H_cjs.runDiscovery({
4054
+ const discovered = await chunk7BG5UH3T_cjs.runDiscovery({
4039
4055
  cwd: this.cwd,
4040
4056
  maxBytesPerFile,
4041
4057
  skipLegacyTheokitContext: true,
@@ -4104,7 +4120,7 @@ async function loadContextConfig(cwd) {
4104
4120
  });
4105
4121
  if (mdEntities.length > 0) {
4106
4122
  if (fs.existsSync(jsonPath)) {
4107
- chunk53CBTBWO_cjs.warnOnce(
4123
+ chunkP6H23T43_cjs.warnOnce(
4108
4124
  "context-both-present",
4109
4125
  "[theokit-sdk] both .theokit/context/ and .theokit/context.json detected \u2014 using markdown; remove context.json"
4110
4126
  );
@@ -4114,7 +4130,7 @@ async function loadContextConfig(cwd) {
4114
4130
  };
4115
4131
  }
4116
4132
  if (!fs.existsSync(jsonPath)) return { sources: [] };
4117
- chunk53CBTBWO_cjs.warnOnce(
4133
+ chunkP6H23T43_cjs.warnOnce(
4118
4134
  "context-json-deprecated",
4119
4135
  "[theokit-sdk] .theokit/context.json is deprecated; migrate to .theokit/context/<name>.md via theokit-migrate-config"
4120
4136
  );
@@ -4248,25 +4264,37 @@ var PluginsManager = class {
4248
4264
  }
4249
4265
  await this.refresh();
4250
4266
  }
4251
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: MD-first + JSON fallback + both-present detection per plugin folder — branch table is clearer inlined.
4252
4267
  async refresh() {
4253
4268
  this.plugins = [];
4254
- const pluginsRoot = path.join(this.cwd, ".theokit", "plugins");
4269
+ for (const pluginsRoot of chunkAQO3NSRG_cjs.pluginBundleRoots(this.cwd)) {
4270
+ await this.refreshRoot(pluginsRoot);
4271
+ }
4272
+ }
4273
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: MD-first + JSON fallback + CLI location + both-present detection per plugin folder — branch table is clearer inlined.
4274
+ async refreshRoot(pluginsRoot) {
4255
4275
  const entries = await chunkIWBGCBR6_cjs.readWorkspaceDir(pluginsRoot, "plugins_read_error", "plugins directory");
4256
4276
  for (const entry of entries) {
4257
4277
  if (!entry.isDirectory()) continue;
4258
4278
  const folderName = entry.name;
4279
+ const cliPath = path.join(pluginsRoot, folderName, ".claude-plugin", "plugin.json");
4280
+ if (fs.existsSync(cliPath)) {
4281
+ const cliMetadata = await loadPluginManifestFromJson(cliPath, folderName);
4282
+ if (this.enabled === void 0 || this.enabled.includes(cliMetadata.name)) {
4283
+ this.plugins.push(cliMetadata);
4284
+ }
4285
+ continue;
4286
+ }
4259
4287
  const mdPath = path.join(pluginsRoot, folderName, "PLUGIN.md");
4260
4288
  const jsonPath = path.join(pluginsRoot, folderName, "plugin.json");
4261
4289
  const metadata = fs.existsSync(mdPath) ? await loadPluginManifestFromMarkdown(pluginsRoot, folderName) : await loadPluginManifestFromJson(jsonPath, folderName);
4262
4290
  if (fs.existsSync(mdPath) && fs.existsSync(jsonPath)) {
4263
- chunk53CBTBWO_cjs.warnOnce(
4291
+ chunkP6H23T43_cjs.warnOnce(
4264
4292
  `plugin-${folderName}-both`,
4265
4293
  `[theokit-sdk] both ${folderName}/PLUGIN.md and ${folderName}/plugin.json detected \u2014 using markdown; remove plugin.json`
4266
4294
  );
4267
4295
  }
4268
4296
  if (!fs.existsSync(mdPath) && fs.existsSync(jsonPath)) {
4269
- chunk53CBTBWO_cjs.warnOnce(
4297
+ chunkP6H23T43_cjs.warnOnce(
4270
4298
  "plugin-json-deprecated",
4271
4299
  "[theokit-sdk] plugin.json manifests are deprecated; migrate to PLUGIN.md via theokit-migrate-config"
4272
4300
  );
@@ -7014,7 +7042,7 @@ function applyPersonalityFilter(exposedTools, whitelist, opts) {
7014
7042
  if (exposedSet.has(name)) continue;
7015
7043
  const hint = suggestClosest(name, exposedSet);
7016
7044
  const message = hint !== void 0 ? `[theokit-sdk] personality "${opts?.personalityName ?? "?"}" references unknown tool "${name}"; did you mean "${hint}"?` : `[theokit-sdk] personality "${opts?.personalityName ?? "?"}" references unknown tool "${name}" (not exposed)`;
7017
- chunk53CBTBWO_cjs.warnOnce(
7045
+ chunkP6H23T43_cjs.warnOnce(
7018
7046
  `personality-tool-missing|${opts?.agentId ?? "?"}|${opts?.personalityName ?? "?"}|${name}`,
7019
7047
  message
7020
7048
  );
@@ -7739,7 +7767,7 @@ async function reloadLocalAgent(agent) {
7739
7767
  if (agent.context !== void 0) await agent.context.refresh();
7740
7768
  if (agent.skillsManager !== void 0) await agent.skillsManager.refresh();
7741
7769
  if (agent.pluginsManager !== void 0) await agent.pluginsManager.refresh();
7742
- return await chunkHJBMA5MB_cjs.loadSubagents(
7770
+ return await chunkWNTAPVU5_cjs.loadSubagents(
7743
7771
  agent.workspaceCwd,
7744
7772
  agent.settingSourcesIncludeProject,
7745
7773
  agent.options.agents
@@ -7747,7 +7775,7 @@ async function reloadLocalAgent(agent) {
7747
7775
  }
7748
7776
  async function persistActiveMemoryTranscript(cwd, transcript) {
7749
7777
  try {
7750
- const dir = path.join(chunkE7JHD6QJ_cjs.memoryDir(cwd), "transcripts", "active-memory");
7778
+ const dir = path.join(chunk554J7UQH_cjs.memoryDir(cwd), "transcripts", "active-memory");
7751
7779
  const file = path.join(dir, `${transcript.runId}.json`);
7752
7780
  await chunkI6TGFUCO_cjs.atomicWriteJson(file, transcript);
7753
7781
  } catch (cause) {
@@ -8377,7 +8405,7 @@ function createMemorySearchTool(opts) {
8377
8405
  };
8378
8406
  }
8379
8407
  function createMemoryGetTool(opts) {
8380
- const memoryRoot = path.resolve(chunkE7JHD6QJ_cjs.memoryDir(opts.cwd));
8408
+ const memoryRoot = path.resolve(chunk554J7UQH_cjs.memoryDir(opts.cwd));
8381
8409
  return {
8382
8410
  name: "memory_get",
8383
8411
  description: GET_DESCRIPTION,
@@ -8483,7 +8511,7 @@ var LocalAgentMemory = class {
8483
8511
  const openOpts = { cwd: this.workspaceCwd };
8484
8512
  if (embedding !== void 0) openOpts.embedding = embedding;
8485
8513
  if (cfg?.backend !== void 0) openOpts.backend = cfg.backend;
8486
- this.index = await chunkE7JHD6QJ_cjs.IndexManager.open(openOpts);
8514
+ this.index = await chunk554J7UQH_cjs.IndexManager.open(openOpts);
8487
8515
  await this.index.sync();
8488
8516
  this.toolsCache = [
8489
8517
  createMemorySearchTool({ index: this.index }),
@@ -8741,7 +8769,7 @@ function createLocalAgentMemoryProvider(opts) {
8741
8769
  return { facts: [], systemPromptAdditions: summary };
8742
8770
  },
8743
8771
  async recordSessionSummary(args) {
8744
- await chunkE7JHD6QJ_cjs.writeSessionSummary(args);
8772
+ await chunk554J7UQH_cjs.writeSessionSummary(args);
8745
8773
  },
8746
8774
  async sync(handle) {
8747
8775
  const state = handle[INTERNAL_LAM_KEY];
@@ -8831,7 +8859,7 @@ function addEntity(byName, entity, origin, collisionMap) {
8831
8859
  );
8832
8860
  }
8833
8861
  if (origin === "project" && collisionMap?.has(fm.name)) {
8834
- chunk53CBTBWO_cjs.warnOnce(
8862
+ chunkP6H23T43_cjs.warnOnce(
8835
8863
  `personality-collision-${fm.name}`,
8836
8864
  `[theokit-sdk] personality "${fm.name}" overridden by project preset`
8837
8865
  );
@@ -8881,14 +8909,14 @@ async function performPersonalitySwitch(args) {
8881
8909
 
8882
8910
  // src/internal/local-agent/local-agent-personality-extensions.ts
8883
8911
  function resolveActivePersonalityPreset(args) {
8884
- const forkCtx = chunk53CBTBWO_cjs.currentPersonalityContext();
8912
+ const forkCtx = chunkP6H23T43_cjs.currentPersonalityContext();
8885
8913
  const slug = forkCtx !== void 0 ? forkCtx.slug : args.personalityStore.active(args.agentId);
8886
8914
  if (slug === void 0) return void 0;
8887
8915
  return args.personalityRegistry?.get(slug);
8888
8916
  }
8889
8917
  async function ensurePersonalityRegistryIfNeeded(args) {
8890
8918
  if (args.personalityRegistry !== void 0) return args.personalityRegistry;
8891
- const forkSlug = chunk53CBTBWO_cjs.currentPersonalityContext()?.slug;
8919
+ const forkSlug = chunkP6H23T43_cjs.currentPersonalityContext()?.slug;
8892
8920
  const ownSlug = args.personalityStore.active(args.agentId);
8893
8921
  if (forkSlug === void 0 && ownSlug === void 0) return void 0;
8894
8922
  return await PersonalityRegistry.load(args.workspaceCwd);
@@ -8902,8 +8930,8 @@ ${preset.systemPrompt}`;
8902
8930
  }
8903
8931
  async function localAgentUsePersonality(args) {
8904
8932
  if (args.disposed) throw new Error("Agent has been disposed");
8905
- if (chunk53CBTBWO_cjs.currentPersonalityContext() !== void 0) {
8906
- chunk53CBTBWO_cjs.warnPersonalitySwitchInsideFork(args.agentId);
8933
+ if (chunkP6H23T43_cjs.currentPersonalityContext() !== void 0) {
8934
+ chunkP6H23T43_cjs.warnPersonalitySwitchInsideFork(args.agentId);
8907
8935
  return null;
8908
8936
  }
8909
8937
  let registry = args.personalityRegistry;
@@ -8965,24 +8993,26 @@ async function* localAgentStreamToCompletion(agent, message, options) {
8965
8993
  async function localAgentFork(parent, options) {
8966
8994
  const { forkAgentImpl } = await import('./fork-agent-Y2IK2RYU.cjs');
8967
8995
  const { getAgentFacade } = await import('./agent-factory-registry-UU46BUMU.cjs');
8968
- const { withPersonalityContext } = await import('./context-VMIE4BMD.cjs');
8996
+ const { withPersonalityContext } = await import('./context-LCKNH2XI.cjs');
8969
8997
  const create = getAgentFacade().create;
8970
8998
  return withPersonalityContext(
8971
8999
  { slug: parent.personalitySlugSnapshot, isFork: true },
8972
9000
  () => forkAgentImpl(parent, options, { create })
8973
9001
  );
8974
9002
  }
8975
- async function persistMemoryFactIfWritePrompt(workspaceCwd, memoryConfig, userText) {
9003
+ async function persistMemoryFactIfWritePrompt(workspaceCwd, memoryConfig, userText, memoryHome) {
8976
9004
  if (memoryConfig?.enabled !== true) return;
8977
9005
  if (!isMemoryWritePrompt(userText)) return;
8978
9006
  const fact = extractMemoryFact(userText);
8979
9007
  if (fact.length === 0) return;
8980
9008
  const kind = extractMemoryKind(userText);
8981
9009
  await safeCall(
8982
- () => appendMemoryFact(workspaceCwd, memoryConfig, {
8983
- text: fact,
8984
- ...kind === void 0 ? {} : { kind }
8985
- }),
9010
+ () => appendMemoryFact(
9011
+ workspaceCwd,
9012
+ memoryConfig,
9013
+ { text: fact, ...kind === void 0 ? {} : { kind } },
9014
+ memoryHome
9015
+ ),
8986
9016
  void 0,
8987
9017
  "memory write"
8988
9018
  );
@@ -9308,8 +9338,18 @@ async function executeSendLocked(inputs, message, options) {
9308
9338
  });
9309
9339
  const priorMessages = [...chunkKKK3FZ4A_cjs.getSessionMessages(inputs.agentId)];
9310
9340
  chunkKKK3FZ4A_cjs.appendSessionMessage(inputs.agentId, { role: "user", text: userText });
9311
- await persistMemoryFactIfWritePrompt(inputs.workspaceCwd, inputs.options.memory, userText);
9312
- const memoryFacts = await readMemoryForSend(inputs.workspaceCwd, inputs.options.memory);
9341
+ const memoryHome = explicitSessionDir(inputs.options.local);
9342
+ await persistMemoryFactIfWritePrompt(
9343
+ inputs.workspaceCwd,
9344
+ inputs.options.memory,
9345
+ userText,
9346
+ memoryHome
9347
+ );
9348
+ const memoryFacts = await readMemoryForSend(
9349
+ inputs.workspaceCwd,
9350
+ inputs.options.memory,
9351
+ memoryHome
9352
+ );
9313
9353
  const portPathActive = shouldUsePortMemoryPath();
9314
9354
  const legacyTools = portPathActive ? void 0 : await inputs.memoryGlue.ensureTools();
9315
9355
  const legacySummary = portPathActive ? void 0 : await inputs.memoryGlue.runActiveMemoryIfEnabled(userText, priorMessages, inputs.telemetry);
@@ -9371,9 +9411,9 @@ function buildCompletionCheckDeps() {
9371
9411
  }
9372
9412
  };
9373
9413
  }
9374
- function readMemoryForSend(workspaceCwd, memoryConfig) {
9414
+ function readMemoryForSend(workspaceCwd, memoryConfig, memoryHome) {
9375
9415
  if (memoryConfig?.enabled !== true) return Promise.resolve([]);
9376
- return safeCall(() => readMemoryFacts(workspaceCwd, memoryConfig), [], "memory read");
9416
+ return safeCall(() => readMemoryFacts(workspaceCwd, memoryConfig, memoryHome), [], "memory read");
9377
9417
  }
9378
9418
 
9379
9419
  // src/internal/local-agent/local-agent-task-wrap.ts
@@ -9513,7 +9553,7 @@ var LocalAgent = class {
9513
9553
  if (this.pluginsManager !== void 0) await this.pluginsManager.initialize();
9514
9554
  const codePlugins = chunkBV2MWEMV_cjs.extractCodePlugins(this.options.plugins);
9515
9555
  await this.pluginManagerCode.initialize(codePlugins);
9516
- this.resolvedSubagents = await chunkHJBMA5MB_cjs.loadSubagents(
9556
+ this.resolvedSubagents = await chunkWNTAPVU5_cjs.loadSubagents(
9517
9557
  this.workspaceCwd,
9518
9558
  this.settingSourcesIncludeProject,
9519
9559
  this.options.agents
@@ -10475,7 +10515,7 @@ var Agent = class _Agent {
10475
10515
  */
10476
10516
  static async describe(agentId) {
10477
10517
  const agent = await getRegisteredAgentOrThrow(agentId);
10478
- const { loadSubagents: loadSubagents2 } = await import('./subagents-loader-AZIXJ7D3.cjs');
10518
+ const { loadSubagents: loadSubagents2 } = await import('./subagents-loader-X5QKODCL.cjs');
10479
10519
  const settingSources = agent.options.local?.settingSources;
10480
10520
  const subagents = await loadSubagents2(
10481
10521
  agent.cwd ?? process.cwd(),
@@ -10560,5 +10600,5 @@ exports.computeCost = computeCost;
10560
10600
  exports.generateCronId = generateCronId;
10561
10601
  exports.getPricingEntry = getPricingEntry;
10562
10602
  exports.openRouterMemoryEmbeddingProviderAdapter = openRouterMemoryEmbeddingProviderAdapter;
10563
- //# sourceMappingURL=chunk-M2JWHKO6.cjs.map
10564
- //# sourceMappingURL=chunk-M2JWHKO6.cjs.map
10603
+ //# sourceMappingURL=chunk-SMUAG2DY.cjs.map
10604
+ //# sourceMappingURL=chunk-SMUAG2DY.cjs.map