@agntk/agent-harness 0.1.7 → 0.1.8

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 (107) hide show
  1. package/README.md +25 -0
  2. package/defaults/agents/summarizer.md +4 -0
  3. package/dist/{auto-processor-QIRUOGEI.js → auto-processor-KLEP2NMV.js} +3 -3
  4. package/dist/{chunk-UXCHAS3Z.js → chunk-2GPXPU6U.js} +4 -4
  5. package/dist/{chunk-PMFAYKBD.js → chunk-36W2VC3L.js} +2 -2
  6. package/dist/{chunk-EC42HQQH.js → chunk-44R2VV33.js} +2 -2
  7. package/dist/{chunk-AN6Y4MDD.js → chunk-5QME3GHF.js} +6 -6
  8. package/dist/{chunk-QMOIVORH.js → chunk-6DIHJF2A.js} +3 -3
  9. package/dist/{chunk-IFVCU33I.js → chunk-CKLJTFMV.js} +6 -6
  10. package/dist/{chunk-5O5OGOOQ.js → chunk-CNOHSYI5.js} +2 -2
  11. package/dist/{chunk-D7AWV24Z.js → chunk-ESBLYOXU.js} +3 -3
  12. package/dist/{chunk-4TQQZILG.js → chunk-EXO47RET.js} +4 -2
  13. package/dist/chunk-EXO47RET.js.map +1 -0
  14. package/dist/{chunk-LBT43BZA.js → chunk-MASZOYMQ.js} +3 -3
  15. package/dist/{chunk-7MSZVP7A.js → chunk-NGF7UZY5.js} +4 -4
  16. package/dist/{chunk-Z4HEHWFM.js → chunk-O2YV52TH.js} +3 -3
  17. package/dist/{chunk-7GZ4D6V6.js → chunk-P7EFJ7CN.js} +2 -2
  18. package/dist/{chunk-LACZLSC4.js → chunk-QILHQNSM.js} +4 -4
  19. package/dist/{chunk-NVC2WY4K.js → chunk-WHRYPI2T.js} +2 -2
  20. package/dist/{chunk-5CO5JTYT.js → chunk-X47HHTNV.js} +2 -2
  21. package/dist/{chunk-2UVWCTAY.js → chunk-XPEDVA35.js} +2 -2
  22. package/dist/{chunk-QU566LZE.js → chunk-XTV7HH5M.js} +29 -5
  23. package/dist/chunk-XTV7HH5M.js.map +1 -0
  24. package/dist/cli/index.js +101 -101
  25. package/dist/{config-PYSS3QY6.js → config-KRGEWBPM.js} +3 -3
  26. package/dist/context-loader-GKLLIDVC.js +12 -0
  27. package/dist/{conversation-OKBO4L66.js → conversation-EU47O5MU.js} +6 -6
  28. package/dist/{delegate-YOGVA3HB.js → delegate-BPTJVYU3.js} +7 -7
  29. package/dist/{export-GYLWROMB.js → export-OPR3SVVJ.js} +3 -3
  30. package/dist/graph-VW5GH2FZ.js +13 -0
  31. package/dist/{harness-NU2UU6J4.js → harness-FZR52COJ.js} +8 -8
  32. package/dist/{indexer-L5UC6J2V.js → indexer-SEALD6HO.js} +4 -4
  33. package/dist/{instinct-learner-EECG4L24.js → instinct-learner-MNROY6L4.js} +5 -5
  34. package/dist/{intake-SVJKFHTL.js → intake-BU2WHPWF.js} +5 -5
  35. package/dist/{intelligence-BANUEAI4.js → intelligence-TUNH5ZMA.js} +10 -10
  36. package/dist/{journal-O4SEANIC.js → journal-E2DJGCNS.js} +5 -5
  37. package/dist/{loader-27PLDCOJ.js → loader-NVVXVFBH.js} +3 -3
  38. package/dist/{mcp-installer-X2TJ2S2G.js → mcp-installer-4LOYB3PP.js} +3 -3
  39. package/dist/{primitive-registry-ZMGGXSO5.js → primitive-registry-KQOL7LNU.js} +3 -3
  40. package/dist/{rule-engine-DM26S77N.js → rule-engine-EPFMNBEG.js} +3 -3
  41. package/dist/{scaffold-LA54KYKJ.js → scaffold-FBUNVFYQ.js} +4 -4
  42. package/dist/{scheduler-MFBVGFZQ.js → scheduler-UCFJU4BF.js} +11 -11
  43. package/dist/{search-6Y6NCOLQ.js → search-7RAQA6UV.js} +3 -3
  44. package/dist/{semantic-search-FN6FZIXI.js → semantic-search-OSRMCW2H.js} +3 -3
  45. package/dist/{serve-TQLN4OTP.js → serve-2QUR74CS.js} +9 -9
  46. package/dist/{telemetry-RS2JZUZP.js → telemetry-R34GXFVW.js} +4 -4
  47. package/dist/{tool-executor-6I5PHQDY.js → tool-executor-URY2ZB6G.js} +5 -5
  48. package/dist/{tools-NDFJNVHK.js → tools-2HWMJ5CJ.js} +4 -4
  49. package/dist/{types-NPJZAI72.js → types-KSGYUZZO.js} +2 -2
  50. package/dist/{universal-installer-LCAZHFZR.js → universal-installer-ZNA3HA2S.js} +6 -6
  51. package/dist/validator-JNIHKGWA.js +21 -0
  52. package/dist/{verification-gate-2O6DF2B7.js → verification-gate-FFKVJN5N.js} +3 -3
  53. package/dist/{watcher-GZWQSWZ6.js → watcher-L5SJGTZ2.js} +5 -5
  54. package/dist/{web-server-SJ6NS5IX.js → web-server-N3YIT47Z.js} +8 -8
  55. package/package.json +1 -1
  56. package/dist/chunk-4TQQZILG.js.map +0 -1
  57. package/dist/chunk-QU566LZE.js.map +0 -1
  58. package/dist/context-loader-RSXXFW5R.js +0 -12
  59. package/dist/graph-LEEO37L3.js +0 -13
  60. package/dist/validator-LM7RZWSH.js +0 -21
  61. /package/dist/{auto-processor-QIRUOGEI.js.map → auto-processor-KLEP2NMV.js.map} +0 -0
  62. /package/dist/{chunk-UXCHAS3Z.js.map → chunk-2GPXPU6U.js.map} +0 -0
  63. /package/dist/{chunk-PMFAYKBD.js.map → chunk-36W2VC3L.js.map} +0 -0
  64. /package/dist/{chunk-EC42HQQH.js.map → chunk-44R2VV33.js.map} +0 -0
  65. /package/dist/{chunk-AN6Y4MDD.js.map → chunk-5QME3GHF.js.map} +0 -0
  66. /package/dist/{chunk-QMOIVORH.js.map → chunk-6DIHJF2A.js.map} +0 -0
  67. /package/dist/{chunk-IFVCU33I.js.map → chunk-CKLJTFMV.js.map} +0 -0
  68. /package/dist/{chunk-5O5OGOOQ.js.map → chunk-CNOHSYI5.js.map} +0 -0
  69. /package/dist/{chunk-D7AWV24Z.js.map → chunk-ESBLYOXU.js.map} +0 -0
  70. /package/dist/{chunk-LBT43BZA.js.map → chunk-MASZOYMQ.js.map} +0 -0
  71. /package/dist/{chunk-7MSZVP7A.js.map → chunk-NGF7UZY5.js.map} +0 -0
  72. /package/dist/{chunk-Z4HEHWFM.js.map → chunk-O2YV52TH.js.map} +0 -0
  73. /package/dist/{chunk-7GZ4D6V6.js.map → chunk-P7EFJ7CN.js.map} +0 -0
  74. /package/dist/{chunk-LACZLSC4.js.map → chunk-QILHQNSM.js.map} +0 -0
  75. /package/dist/{chunk-NVC2WY4K.js.map → chunk-WHRYPI2T.js.map} +0 -0
  76. /package/dist/{chunk-5CO5JTYT.js.map → chunk-X47HHTNV.js.map} +0 -0
  77. /package/dist/{chunk-2UVWCTAY.js.map → chunk-XPEDVA35.js.map} +0 -0
  78. /package/dist/{config-PYSS3QY6.js.map → config-KRGEWBPM.js.map} +0 -0
  79. /package/dist/{context-loader-RSXXFW5R.js.map → context-loader-GKLLIDVC.js.map} +0 -0
  80. /package/dist/{conversation-OKBO4L66.js.map → conversation-EU47O5MU.js.map} +0 -0
  81. /package/dist/{delegate-YOGVA3HB.js.map → delegate-BPTJVYU3.js.map} +0 -0
  82. /package/dist/{export-GYLWROMB.js.map → export-OPR3SVVJ.js.map} +0 -0
  83. /package/dist/{graph-LEEO37L3.js.map → graph-VW5GH2FZ.js.map} +0 -0
  84. /package/dist/{harness-NU2UU6J4.js.map → harness-FZR52COJ.js.map} +0 -0
  85. /package/dist/{indexer-L5UC6J2V.js.map → indexer-SEALD6HO.js.map} +0 -0
  86. /package/dist/{instinct-learner-EECG4L24.js.map → instinct-learner-MNROY6L4.js.map} +0 -0
  87. /package/dist/{intake-SVJKFHTL.js.map → intake-BU2WHPWF.js.map} +0 -0
  88. /package/dist/{intelligence-BANUEAI4.js.map → intelligence-TUNH5ZMA.js.map} +0 -0
  89. /package/dist/{journal-O4SEANIC.js.map → journal-E2DJGCNS.js.map} +0 -0
  90. /package/dist/{loader-27PLDCOJ.js.map → loader-NVVXVFBH.js.map} +0 -0
  91. /package/dist/{mcp-installer-X2TJ2S2G.js.map → mcp-installer-4LOYB3PP.js.map} +0 -0
  92. /package/dist/{primitive-registry-ZMGGXSO5.js.map → primitive-registry-KQOL7LNU.js.map} +0 -0
  93. /package/dist/{rule-engine-DM26S77N.js.map → rule-engine-EPFMNBEG.js.map} +0 -0
  94. /package/dist/{scaffold-LA54KYKJ.js.map → scaffold-FBUNVFYQ.js.map} +0 -0
  95. /package/dist/{scheduler-MFBVGFZQ.js.map → scheduler-UCFJU4BF.js.map} +0 -0
  96. /package/dist/{search-6Y6NCOLQ.js.map → search-7RAQA6UV.js.map} +0 -0
  97. /package/dist/{semantic-search-FN6FZIXI.js.map → semantic-search-OSRMCW2H.js.map} +0 -0
  98. /package/dist/{serve-TQLN4OTP.js.map → serve-2QUR74CS.js.map} +0 -0
  99. /package/dist/{telemetry-RS2JZUZP.js.map → telemetry-R34GXFVW.js.map} +0 -0
  100. /package/dist/{tool-executor-6I5PHQDY.js.map → tool-executor-URY2ZB6G.js.map} +0 -0
  101. /package/dist/{tools-NDFJNVHK.js.map → tools-2HWMJ5CJ.js.map} +0 -0
  102. /package/dist/{types-NPJZAI72.js.map → types-KSGYUZZO.js.map} +0 -0
  103. /package/dist/{universal-installer-LCAZHFZR.js.map → universal-installer-ZNA3HA2S.js.map} +0 -0
  104. /package/dist/{validator-LM7RZWSH.js.map → validator-JNIHKGWA.js.map} +0 -0
  105. /package/dist/{verification-gate-2O6DF2B7.js.map → verification-gate-FFKVJN5N.js.map} +0 -0
  106. /package/dist/{watcher-GZWQSWZ6.js.map → watcher-L5SJGTZ2.js.map} +0 -0
  107. /package/dist/{web-server-SJ6NS5IX.js.map → web-server-N3YIT47Z.js.map} +0 -0
package/dist/cli/index.js CHANGED
@@ -100,7 +100,7 @@ function askQuestion(rl, question, defaultValue) {
100
100
  });
101
101
  }
102
102
  program.command("init [name]").description("Scaffold a new agent harness directory (interactive if no name given)").option("-d, --dir <path>", "Parent directory", ".").option("-t, --template <name>", "Config template (base, claude-opus, gpt4, local)", "base").option("-p, --purpose <description>", "Agent purpose description").option("-i, --interactive", "Force interactive mode", false).option("--generate", "Generate CORE.md using LLM (requires API key)", false).option("--no-discover-mcp", "Skip MCP server auto-discovery").option("--no-discover-env", "Skip environment variable scanning").option("--no-discover-project", "Skip project context detection").option("-y, --yes", "Accept defaults for all prompts (skip MCP confirmation)", false).action(async (name, opts) => {
103
- const { scaffoldHarness, generateCoreMd, listTemplates } = await import("../scaffold-LA54KYKJ.js");
103
+ const { scaffoldHarness, generateCoreMd, listTemplates } = await import("../scaffold-FBUNVFYQ.js");
104
104
  const isInteractive = !name || opts.interactive;
105
105
  let agentName = name ?? "";
106
106
  let purpose = opts.purpose ?? "";
@@ -249,7 +249,7 @@ The agent gets better the more you use it. See README.md inside`);
249
249
  }
250
250
  });
251
251
  program.command("run <prompt>").description("Run a prompt through the agent").option("-d, --dir <path>", "Harness directory", ".").option("-s, --stream", "Stream output", false).option("-m, --model <model>", "Model override (or alias: gemma, qwen, glm, claude)").option("-p, --provider <provider>", "Provider override (openrouter, anthropic, openai)").option("-k, --api-key <key>", "API key override (default: from environment)").action(async (prompt, opts) => {
252
- const { createHarness } = await import("../harness-NU2UU6J4.js");
252
+ const { createHarness } = await import("../harness-FZR52COJ.js");
253
253
  const dir = resolve(opts.dir);
254
254
  loadEnvFromDir(dir);
255
255
  requireHarness(dir);
@@ -290,9 +290,9 @@ program.command("run <prompt>").description("Run a prompt through the agent").op
290
290
  }
291
291
  });
292
292
  program.command("chat").description("Start an interactive chat session with conversation memory").option("-d, --dir <path>", "Harness directory", ".").option("-m, --model <model>", "Model override").option("-p, --provider <provider>", "Provider override (openrouter, anthropic, openai)").option("-k, --api-key <key>", "API key override (default: from environment)").option("--fresh", "Start fresh (clear conversation history)", false).action(async (opts) => {
293
- const { Conversation } = await import("../conversation-OKBO4L66.js");
294
- const { loadConfig } = await import("../config-PYSS3QY6.js");
295
- const { buildToolSet } = await import("../tool-executor-6I5PHQDY.js");
293
+ const { Conversation } = await import("../conversation-EU47O5MU.js");
294
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
295
+ const { buildToolSet } = await import("../tool-executor-URY2ZB6G.js");
296
296
  const { createMcpManager } = await import("../mcp-JSIUJJZV.js");
297
297
  const readline = await import("readline");
298
298
  const dir = resolve(opts.dir);
@@ -391,8 +391,8 @@ ${config.agent.name} is ready. ${history.length > 0 ? `(${history.length} messag
391
391
  ask();
392
392
  });
393
393
  program.command("info").description("Show harness info and loaded context").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
394
- const { loadConfig } = await import("../config-PYSS3QY6.js");
395
- const { buildSystemPrompt } = await import("../context-loader-RSXXFW5R.js");
394
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
395
+ const { buildSystemPrompt } = await import("../context-loader-GKLLIDVC.js");
396
396
  const { loadState } = await import("../state-25IQEC5C.js");
397
397
  const dir = resolve(opts.dir);
398
398
  requireHarness(dir);
@@ -451,8 +451,8 @@ MCP servers: ${mcpEntries.length} configured (${enabledCount} enabled)`);
451
451
  }
452
452
  });
453
453
  program.command("prompt").description("Show the full assembled system prompt").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output metadata as JSON (includes prompt, budget, warnings)").action(async (opts) => {
454
- const { loadConfig } = await import("../config-PYSS3QY6.js");
455
- const { buildSystemPrompt } = await import("../context-loader-RSXXFW5R.js");
454
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
455
+ const { buildSystemPrompt } = await import("../context-loader-GKLLIDVC.js");
456
456
  const dir = resolve(opts.dir);
457
457
  requireHarness(dir);
458
458
  try {
@@ -474,12 +474,12 @@ program.command("prompt").description("Show the full assembled system prompt").o
474
474
  }
475
475
  });
476
476
  program.command("dev").description("Start dev mode \u2014 watches for file changes, rebuilds indexes, runs scheduled workflows, serves dashboard").option("-d, --dir <path>", "Harness directory", ".").option("-k, --api-key <key>", "API key override (default: from environment)").option("--no-schedule", "Disable workflow scheduler").option("--no-auto-process", "Disable auto-processing of primitives on save").option("--no-web", "Disable web dashboard server").option("-p, --port <number>", "Web dashboard port", "3000").action(async (opts) => {
477
- const { loadConfig } = await import("../config-PYSS3QY6.js");
478
- const { rebuildAllIndexes } = await import("../indexer-L5UC6J2V.js");
479
- const { createWatcher } = await import("../watcher-GZWQSWZ6.js");
480
- const { Scheduler } = await import("../scheduler-MFBVGFZQ.js");
481
- const { autoProcessAll } = await import("../auto-processor-QIRUOGEI.js");
482
- const { generateSystemMd } = await import("../scaffold-LA54KYKJ.js");
477
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
478
+ const { rebuildAllIndexes } = await import("../indexer-SEALD6HO.js");
479
+ const { createWatcher } = await import("../watcher-L5SJGTZ2.js");
480
+ const { Scheduler } = await import("../scheduler-UCFJU4BF.js");
481
+ const { autoProcessAll } = await import("../auto-processor-KLEP2NMV.js");
482
+ const { generateSystemMd } = await import("../scaffold-FBUNVFYQ.js");
483
483
  const { writeFileSync } = await import("fs");
484
484
  const dir = resolve(opts.dir);
485
485
  loadEnvFromDir(dir);
@@ -547,7 +547,7 @@ program.command("dev").description("Start dev mode \u2014 watches for file chang
547
547
  }
548
548
  let webServer = null;
549
549
  if (opts.web) {
550
- const { startWebServer } = await import("../web-server-SJ6NS5IX.js");
550
+ const { startWebServer } = await import("../web-server-N3YIT47Z.js");
551
551
  const port = parseInt(opts.port, 10) || 3e3;
552
552
  webServer = await startWebServer({
553
553
  harnessDir: dir,
@@ -608,8 +608,8 @@ program.command("dev").description("Start dev mode \u2014 watches for file chang
608
608
  process.on("SIGTERM", cleanup);
609
609
  });
610
610
  program.command("index").description("Rebuild all index files").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
611
- const { rebuildAllIndexes } = await import("../indexer-L5UC6J2V.js");
612
- const { loadConfig } = await import("../config-PYSS3QY6.js");
611
+ const { rebuildAllIndexes } = await import("../indexer-SEALD6HO.js");
612
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
613
613
  const dir = resolve(opts.dir);
614
614
  let extDirs = [];
615
615
  try {
@@ -622,7 +622,7 @@ program.command("index").description("Rebuild all index files").option("-d, --di
622
622
  console.log(`\u2713 All indexes rebuilt in ${dir}`);
623
623
  });
624
624
  program.command("process").description("Auto-process all primitives: fill missing frontmatter and generate L0/L1 summaries").option("-d, --dir <path>", "Harness directory", ".").option("--no-frontmatter", "Skip frontmatter generation").option("--no-summaries", "Skip L0/L1 summary generation").action(async (opts) => {
625
- const { autoProcessAll } = await import("../auto-processor-QIRUOGEI.js");
625
+ const { autoProcessAll } = await import("../auto-processor-KLEP2NMV.js");
626
626
  const dir = resolve(opts.dir);
627
627
  requireHarness(dir);
628
628
  const results = autoProcessAll(dir, {
@@ -648,8 +648,8 @@ Processed ${modified} file(s)${errors > 0 ? `, ${errors} error(s)` : ""}`);
648
648
  }
649
649
  });
650
650
  program.command("system").description("Regenerate SYSTEM.md from current directory structure").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
651
- const { loadConfig } = await import("../config-PYSS3QY6.js");
652
- const { generateSystemMd } = await import("../scaffold-LA54KYKJ.js");
651
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
652
+ const { generateSystemMd } = await import("../scaffold-FBUNVFYQ.js");
653
653
  const { writeFileSync } = await import("fs");
654
654
  const dir = resolve(opts.dir);
655
655
  requireHarness(dir);
@@ -664,7 +664,7 @@ program.command("journal").description("Synthesize sessions into journal entries
664
664
  loadEnvFromDir(dir);
665
665
  requireHarness(dir);
666
666
  if (opts.pending) {
667
- const { listUnjournaled } = await import("../journal-O4SEANIC.js");
667
+ const { listUnjournaled } = await import("../journal-E2DJGCNS.js");
668
668
  const dates = listUnjournaled(dir);
669
669
  if (dates.length === 0) {
670
670
  console.log("All sessions have been journaled.");
@@ -680,7 +680,7 @@ Run "harness journal --all" to synthesize them.
680
680
  return;
681
681
  }
682
682
  if (opts.from || opts.all) {
683
- const { synthesizeJournalRange } = await import("../journal-O4SEANIC.js");
683
+ const { synthesizeJournalRange } = await import("../journal-E2DJGCNS.js");
684
684
  try {
685
685
  const label = opts.all ? "all dates" : `${opts.from}${opts.to ? ` to ${opts.to}` : " to today"}`;
686
686
  console.log(`Synthesizing journals for ${label}${opts.force ? " (force)" : ""}...`);
@@ -704,7 +704,7 @@ Run "harness journal --all" to synthesize them.
704
704
  }
705
705
  console.log();
706
706
  if (opts.autoHarvest) {
707
- const { harvestInstincts } = await import("../instinct-learner-EECG4L24.js");
707
+ const { harvestInstincts } = await import("../instinct-learner-MNROY6L4.js");
708
708
  const dates = entries.map((e) => e.date).sort();
709
709
  const harvest = harvestInstincts(dir, {
710
710
  from: dates[0],
@@ -723,7 +723,7 @@ Run "harness journal --all" to synthesize them.
723
723
  }
724
724
  return;
725
725
  }
726
- const { synthesizeJournal } = await import("../journal-O4SEANIC.js");
726
+ const { synthesizeJournal } = await import("../journal-E2DJGCNS.js");
727
727
  try {
728
728
  console.log(`Synthesizing journal...`);
729
729
  const entry = await synthesizeJournal(dir, opts.date);
@@ -735,7 +735,7 @@ Run "harness journal --all" to synthesize them.
735
735
  console.log(` Instinct candidates:`);
736
736
  entry.instinct_candidates.forEach((c) => console.log(` - ${c}`));
737
737
  if (opts.autoHarvest) {
738
- const { harvestInstincts } = await import("../instinct-learner-EECG4L24.js");
738
+ const { harvestInstincts } = await import("../instinct-learner-MNROY6L4.js");
739
739
  const harvest = harvestInstincts(dir, {
740
740
  from: entry.date,
741
741
  to: entry.date,
@@ -755,7 +755,7 @@ ${entry.synthesis}`);
755
755
  }
756
756
  });
757
757
  program.command("compress").description("Compress daily journals into weekly roll-up summaries").option("-d, --dir <path>", "Harness directory", ".").option("--force", "Overwrite existing weekly summaries", false).action(async (opts) => {
758
- const { compressJournals } = await import("../journal-O4SEANIC.js");
758
+ const { compressJournals } = await import("../journal-E2DJGCNS.js");
759
759
  const dir = resolve(opts.dir);
760
760
  requireHarness(dir);
761
761
  const results = compressJournals(dir, { force: opts.force });
@@ -775,7 +775,7 @@ program.command("compress").description("Compress daily journals into weekly rol
775
775
  console.log();
776
776
  });
777
777
  program.command("learn").description("Analyze sessions and propose new instincts").option("-d, --dir <path>", "Harness directory", ".").option("--install", "Auto-install proposed instincts", false).action(async (opts) => {
778
- const { learnFromSessions } = await import("../instinct-learner-EECG4L24.js");
778
+ const { learnFromSessions } = await import("../instinct-learner-MNROY6L4.js");
779
779
  const dir = resolve(opts.dir);
780
780
  requireHarness(dir);
781
781
  try {
@@ -801,7 +801,7 @@ ${result.candidates.length} instinct candidate(s):
801
801
  }
802
802
  });
803
803
  program.command("harvest").description("Extract instinct candidates from journal entries and optionally install them").option("-d, --dir <path>", "Harness directory", ".").option("--from <date>", "Start date (YYYY-MM-DD)").option("--to <date>", "End date (YYYY-MM-DD)").option("--install", "Auto-install candidates as draft instincts", false).action(async (opts) => {
804
- const { harvestInstincts } = await import("../instinct-learner-EECG4L24.js");
804
+ const { harvestInstincts } = await import("../instinct-learner-MNROY6L4.js");
805
805
  const dir = resolve(opts.dir);
806
806
  requireHarness(dir);
807
807
  const result = harvestInstincts(dir, {
@@ -831,7 +831,7 @@ Scanned ${result.journalsScanned} journal(s)`);
831
831
  }
832
832
  });
833
833
  program.command("intake").description("Process all pending files in the intake/ directory").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
834
- const { processIntake } = await import("../intake-SVJKFHTL.js");
834
+ const { processIntake } = await import("../intake-BU2WHPWF.js");
835
835
  const dir = resolve(opts.dir);
836
836
  const results = processIntake(dir);
837
837
  if (results.length === 0) {
@@ -847,7 +847,7 @@ program.command("intake").description("Process all pending files in the intake/
847
847
  }
848
848
  });
849
849
  program.command("validate").description("Validate harness structure and configuration").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
850
- const { validateHarness } = await import("../validator-LM7RZWSH.js");
850
+ const { validateHarness } = await import("../validator-JNIHKGWA.js");
851
851
  const dir = resolve(opts.dir);
852
852
  const result = validateHarness(dir);
853
853
  if (opts.json) {
@@ -884,7 +884,7 @@ Summary: ${result.ok.length} passed, ${result.warnings.length} warnings, ${resul
884
884
  }
885
885
  });
886
886
  program.command("doctor").description("Validate harness and auto-fix all fixable issues in one pass").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
887
- const { doctorHarness } = await import("../validator-LM7RZWSH.js");
887
+ const { doctorHarness } = await import("../validator-JNIHKGWA.js");
888
888
  const dir = resolve(opts.dir);
889
889
  console.log(`
890
890
  Running doctor on: ${dir}
@@ -924,7 +924,7 @@ Summary: ${result.ok.length} ok, ${result.warnings.length} warnings, ${result.er
924
924
  }
925
925
  });
926
926
  program.command("fix <file>").description("Auto-fix common issues in a capability markdown file (missing id, status, L0/L1)").action(async (file) => {
927
- const { fixCapability } = await import("../intake-SVJKFHTL.js");
927
+ const { fixCapability } = await import("../intake-BU2WHPWF.js");
928
928
  const filePath = resolve(file);
929
929
  const result = fixCapability(filePath);
930
930
  if (result.fixes_applied.length > 0) {
@@ -950,7 +950,7 @@ Remaining errors (manual fix required):`);
950
950
  }
951
951
  });
952
952
  program.command("cleanup").description("Archive sessions and journals older than retention period").option("-d, --dir <path>", "Harness directory", ".").option("--dry-run", "Show what would be archived without acting", false).option("--delete", "Permanently delete instead of archiving", false).action(async (opts) => {
953
- const { loadConfig } = await import("../config-PYSS3QY6.js");
953
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
954
954
  const dir = resolve(opts.dir);
955
955
  requireHarness(dir);
956
956
  const config = loadConfig(dir);
@@ -998,8 +998,8 @@ Archived ${result.sessionsArchived} session(s), ${result.journalsArchived} journ
998
998
  });
999
999
  program.command("status").description("Show harness status: primitives, sessions, config, state").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
1000
1000
  const { existsSync: existsSync2, readdirSync } = await import("fs");
1001
- const { validateHarness } = await import("../validator-LM7RZWSH.js");
1002
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1001
+ const { validateHarness } = await import("../validator-JNIHKGWA.js");
1002
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1003
1003
  const { loadState } = await import("../state-25IQEC5C.js");
1004
1004
  const { listSessions } = await import("../sessions-G6SZZXWS.js");
1005
1005
  const dir = resolve(opts.dir);
@@ -1117,7 +1117,7 @@ program.command("scratch").description("Write a note to scratch.md (working memo
1117
1117
  });
1118
1118
  var workflowCmd = program.command("workflow").description("Manage workflows");
1119
1119
  workflowCmd.command("list").description("List all workflows and their schedules").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
1120
- const { loadDirectory } = await import("../loader-27PLDCOJ.js");
1120
+ const { loadDirectory } = await import("../loader-NVVXVFBH.js");
1121
1121
  const dir = resolve(opts.dir);
1122
1122
  requireHarness(dir);
1123
1123
  const workflowDir = join(dir, "workflows");
@@ -1144,7 +1144,7 @@ ${docs.length} workflow(s):
1144
1144
  console.log();
1145
1145
  });
1146
1146
  workflowCmd.command("run <id>").description("Execute a workflow by ID (bypasses quiet hours)").option("-d, --dir <path>", "Harness directory", ".").action(async (workflowId, opts) => {
1147
- const { Scheduler } = await import("../scheduler-MFBVGFZQ.js");
1147
+ const { Scheduler } = await import("../scheduler-UCFJU4BF.js");
1148
1148
  const dir = resolve(opts.dir);
1149
1149
  loadEnvFromDir(dir);
1150
1150
  requireHarness(dir);
@@ -1173,8 +1173,8 @@ Executing workflow: ${workflowId}...`);
1173
1173
  }
1174
1174
  });
1175
1175
  program.command("search [query]").description("Search primitives by text query and/or filters").option("-d, --dir <path>", "Harness directory", ".").option("-t, --tag <tag>", "Filter by tag").option("--type <type>", "Filter by primitive type (e.g., rules, skills)").option("--status <status>", "Filter by status (active, draft, archived, deprecated)").option("--author <author>", "Filter by author (human, agent, infrastructure)").option("--json", "Output as JSON").action(async (query, opts) => {
1176
- const { searchPrimitives } = await import("../search-6Y6NCOLQ.js");
1177
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1176
+ const { searchPrimitives } = await import("../search-7RAQA6UV.js");
1177
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1178
1178
  const dir = resolve(opts.dir);
1179
1179
  requireHarness(dir);
1180
1180
  let config;
@@ -1221,7 +1221,7 @@ ${results.length} result(s):
1221
1221
  });
1222
1222
  var configCmd = program.command("config").description("Show or inspect configuration");
1223
1223
  configCmd.command("show").description("Show full resolved configuration (merged defaults + file + env)").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
1224
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1224
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1225
1225
  const YAML = await import("yaml");
1226
1226
  const dir = resolve(opts.dir);
1227
1227
  requireHarness(dir);
@@ -1238,7 +1238,7 @@ configCmd.command("show").description("Show full resolved configuration (merged
1238
1238
  }
1239
1239
  });
1240
1240
  configCmd.command("get <key>").description("Get a specific config value (dot-notation, e.g. model.id)").option("-d, --dir <path>", "Harness directory", ".").action(async (key, opts) => {
1241
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1241
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1242
1242
  const dir = resolve(opts.dir);
1243
1243
  requireHarness(dir);
1244
1244
  try {
@@ -1288,7 +1288,7 @@ configCmd.command("set <key> <value>").description("Set a config value (writes t
1288
1288
  const parts = key.split(".");
1289
1289
  doc.setIn(parts, parsed);
1290
1290
  writeFileSync(configPath, doc.toString(), "utf-8");
1291
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1291
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1292
1292
  try {
1293
1293
  loadConfig(dir);
1294
1294
  console.log(`\u2713 ${key} = ${String(parsed)}`);
@@ -1395,7 +1395,7 @@ function formatDuration(ms) {
1395
1395
  }
1396
1396
  var toolsCmd = program.command("tools").description("List and inspect tool definitions");
1397
1397
  toolsCmd.command("list").description("List all defined tools with auth status").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
1398
- const { listToolSummaries } = await import("../tools-NDFJNVHK.js");
1398
+ const { listToolSummaries } = await import("../tools-2HWMJ5CJ.js");
1399
1399
  const dir = resolve(opts.dir);
1400
1400
  requireHarness(dir);
1401
1401
  const tools = listToolSummaries(dir);
@@ -1416,7 +1416,7 @@ ${tools.length} tool(s):
1416
1416
  console.log();
1417
1417
  });
1418
1418
  toolsCmd.command("show <id>").description("Show detailed info for a specific tool").option("-d, --dir <path>", "Harness directory", ".").action(async (toolId, opts) => {
1419
- const { getToolById } = await import("../tools-NDFJNVHK.js");
1419
+ const { getToolById } = await import("../tools-2HWMJ5CJ.js");
1420
1420
  const dir = resolve(opts.dir);
1421
1421
  requireHarness(dir);
1422
1422
  const tool = getToolById(dir, toolId);
@@ -1460,7 +1460,7 @@ Tool: ${tool.id}`);
1460
1460
  console.log();
1461
1461
  });
1462
1462
  toolsCmd.command("auth").description("Check auth status for all tools").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
1463
- const { checkToolAuth } = await import("../tools-NDFJNVHK.js");
1463
+ const { checkToolAuth } = await import("../tools-2HWMJ5CJ.js");
1464
1464
  const dir = resolve(opts.dir);
1465
1465
  requireHarness(dir);
1466
1466
  const results = checkToolAuth(dir);
@@ -1484,7 +1484,7 @@ toolsCmd.command("auth").description("Check auth status for all tools").option("
1484
1484
  console.log();
1485
1485
  });
1486
1486
  program.command("export [output]").description("Export harness to a portable JSON bundle").option("-d, --dir <path>", "Harness directory", ".").option("--no-sessions", "Exclude session files").option("--no-journals", "Exclude journal files").option("--no-metrics", "Exclude metrics").option("--no-state", "Exclude state and scratch").action(async (output, opts) => {
1487
- const { exportHarness, writeBundle } = await import("../export-GYLWROMB.js");
1487
+ const { exportHarness, writeBundle } = await import("../export-OPR3SVVJ.js");
1488
1488
  const dir = resolve(opts.dir);
1489
1489
  requireHarness(dir);
1490
1490
  const bundle = exportHarness(dir, {
@@ -1502,7 +1502,7 @@ Exported "${bundle.agent_name}" to ${outputPath}`);
1502
1502
  `);
1503
1503
  });
1504
1504
  program.command("import <bundle>").description("Import a harness bundle into current directory").option("-d, --dir <path>", "Harness directory", ".").option("--overwrite", "Overwrite existing files", false).action(async (bundlePath, opts) => {
1505
- const { readBundle, importBundle } = await import("../export-GYLWROMB.js");
1505
+ const { readBundle, importBundle } = await import("../export-OPR3SVVJ.js");
1506
1506
  const dir = resolve(opts.dir);
1507
1507
  try {
1508
1508
  const bundle = readBundle(resolve(bundlePath));
@@ -1526,7 +1526,7 @@ Importing bundle: "${bundle.agent_name}" (exported ${bundle.exported_at})`);
1526
1526
  }
1527
1527
  });
1528
1528
  program.command("bundle <output>").description("Pack primitives into a shareable bundle with manifest.yaml").option("-d, --dir <path>", "Harness directory", ".").option("-n, --name <name>", "Bundle name").option("--description <text>", "Bundle description", "").option("--author <name>", "Author name").option("--version <ver>", "Bundle version", "1.0.0").option("-t, --types <types...>", "Primitive types to include (e.g., rules instincts)").option("-f, --files <files...>", "Specific files to include (relative paths)").option("--tags <tags...>", "Tags for search/discovery").option("--license <id>", "License identifier (e.g., MIT)").option("--json", "Output as JSON", false).action(async (output, opts) => {
1529
- const { packBundle, writeBundleDir } = await import("../primitive-registry-ZMGGXSO5.js");
1529
+ const { packBundle, writeBundleDir } = await import("../primitive-registry-KQOL7LNU.js");
1530
1530
  const dir = resolve(opts.dir);
1531
1531
  requireHarness(dir);
1532
1532
  const bundleName = opts.name ?? basename(dir);
@@ -1554,8 +1554,8 @@ Bundled "${bundleName}" v${opts.version}`);
1554
1554
  }
1555
1555
  });
1556
1556
  program.command("bundle-install <source>").description("Install primitives from a bundle directory, JSON file, or URL").option("-d, --dir <path>", "Harness directory", ".").option("--overwrite", "Overwrite existing files", false).option("--force", "Skip dependency checks", false).option("--json", "Output as JSON", false).action(async (source, opts) => {
1557
- const { readBundleDir, installBundle, fetchRemoteBundle } = await import("../primitive-registry-ZMGGXSO5.js");
1558
- const { readBundle } = await import("../export-GYLWROMB.js");
1557
+ const { readBundleDir, installBundle, fetchRemoteBundle } = await import("../primitive-registry-KQOL7LNU.js");
1558
+ const { readBundle } = await import("../export-OPR3SVVJ.js");
1559
1559
  const dir = resolve(opts.dir);
1560
1560
  try {
1561
1561
  let bundle;
@@ -1568,7 +1568,7 @@ program.command("bundle-install <source>").description("Install primitives from
1568
1568
  bundle = readBundleDir(sourcePath);
1569
1569
  } else if (source.endsWith(".json")) {
1570
1570
  const jsonBundle = readBundle(sourcePath);
1571
- const { CORE_PRIMITIVE_DIRS } = await import("../types-NPJZAI72.js");
1571
+ const { CORE_PRIMITIVE_DIRS } = await import("../types-KSGYUZZO.js");
1572
1572
  const files = jsonBundle.entries;
1573
1573
  const types = /* @__PURE__ */ new Set();
1574
1574
  for (const entry of files) {
@@ -1621,7 +1621,7 @@ Installation failed:`);
1621
1621
  }
1622
1622
  });
1623
1623
  program.command("uninstall <bundle-name>").description("Uninstall a previously installed bundle (moves files to archive/)").option("-d, --dir <path>", "Harness directory", ".").option("--hard", "Permanently delete files instead of archiving", false).option("--json", "Output as JSON", false).action(async (bundleName, opts) => {
1624
- const { uninstallBundle } = await import("../primitive-registry-ZMGGXSO5.js");
1624
+ const { uninstallBundle } = await import("../primitive-registry-KQOL7LNU.js");
1625
1625
  const dir = resolve(opts.dir);
1626
1626
  requireHarness(dir);
1627
1627
  const result = uninstallBundle(dir, bundleName, { hard: opts.hard });
@@ -1645,7 +1645,7 @@ Uninstall failed:`);
1645
1645
  }
1646
1646
  });
1647
1647
  program.command("update <source>").description("Update an installed bundle from a new version").option("-d, --dir <path>", "Harness directory", ".").option("--remove-deleted", "Archive files removed in new version", false).option("--json", "Output as JSON", false).action(async (source, opts) => {
1648
- const { readBundleDir, diffBundle, updateBundle, fetchRemoteBundle } = await import("../primitive-registry-ZMGGXSO5.js");
1648
+ const { readBundleDir, diffBundle, updateBundle, fetchRemoteBundle } = await import("../primitive-registry-KQOL7LNU.js");
1649
1649
  const dir = resolve(opts.dir);
1650
1650
  requireHarness(dir);
1651
1651
  try {
@@ -1704,7 +1704,7 @@ Update "${bundle.manifest.name}" to v${bundle.manifest.bundle_version}:`);
1704
1704
  }
1705
1705
  });
1706
1706
  program.command("installed").description("List installed bundles").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON", false).action(async (opts) => {
1707
- const { listInstalledBundles } = await import("../primitive-registry-ZMGGXSO5.js");
1707
+ const { listInstalledBundles } = await import("../primitive-registry-KQOL7LNU.js");
1708
1708
  const dir = resolve(opts.dir);
1709
1709
  requireHarness(dir);
1710
1710
  const bundles = listInstalledBundles(dir);
@@ -1727,8 +1727,8 @@ ${bundles.length} bundle(s) installed:
1727
1727
  });
1728
1728
  var registryCmd = program.command("registry").description("Search and install bundles from configured registries");
1729
1729
  registryCmd.command("search <query>").description("Search all configured registries for bundles").option("-d, --dir <path>", "Harness directory", ".").option("--limit <n>", "Max results", "20").option("--json", "Output as JSON", false).action(async (query, opts) => {
1730
- const { searchConfiguredRegistries } = await import("../primitive-registry-ZMGGXSO5.js");
1731
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1730
+ const { searchConfiguredRegistries } = await import("../primitive-registry-KQOL7LNU.js");
1731
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1732
1732
  const dir = resolve(opts.dir);
1733
1733
  requireHarness(dir);
1734
1734
  const config = loadConfig(dir);
@@ -1769,8 +1769,8 @@ Searched ${result.registriesSearched} registry(ies) for "${query}"
1769
1769
  }
1770
1770
  });
1771
1771
  registryCmd.command("install <bundle-name>").description("Install a bundle from configured registries").option("-d, --dir <path>", "Harness directory", ".").option("--version <ver>", "Specific version to install").option("--overwrite", "Overwrite existing files", false).option("--force", "Skip dependency checks", false).option("--json", "Output as JSON", false).action(async (bundleName, opts) => {
1772
- const { installFromRegistry } = await import("../primitive-registry-ZMGGXSO5.js");
1773
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1772
+ const { installFromRegistry } = await import("../primitive-registry-KQOL7LNU.js");
1773
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1774
1774
  const dir = resolve(opts.dir);
1775
1775
  requireHarness(dir);
1776
1776
  const config = loadConfig(dir);
@@ -1812,7 +1812,7 @@ Installation failed:`);
1812
1812
  }
1813
1813
  });
1814
1814
  registryCmd.command("list").description("List configured registries").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON", false).action(async (opts) => {
1815
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1815
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1816
1816
  const dir = resolve(opts.dir);
1817
1817
  requireHarness(dir);
1818
1818
  const config = loadConfig(dir);
@@ -1841,8 +1841,8 @@ ${registries.length} registry(ies) configured:
1841
1841
  console.log();
1842
1842
  });
1843
1843
  program.command("graph").description("Analyze primitive dependency graph (related:/with: fields)").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
1844
- const { buildDependencyGraph, getGraphStats } = await import("../graph-LEEO37L3.js");
1845
- const { loadConfig } = await import("../config-PYSS3QY6.js");
1844
+ const { buildDependencyGraph, getGraphStats } = await import("../graph-VW5GH2FZ.js");
1845
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
1846
1846
  const dir = resolve(opts.dir);
1847
1847
  requireHarness(dir);
1848
1848
  let config;
@@ -1969,7 +1969,7 @@ Session Analytics
1969
1969
  console.log();
1970
1970
  });
1971
1971
  program.command("auto-promote").description("Find instinct patterns appearing 3+ times across journals and optionally install them").option("-d, --dir <path>", "Harness directory", ".").option("--threshold <n>", "Minimum occurrences across different dates", "3").option("--install", "Auto-install promoted instincts", false).option("--json", "Output as JSON", false).action(async (opts) => {
1972
- const { autoPromoteInstincts } = await import("../intelligence-BANUEAI4.js");
1972
+ const { autoPromoteInstincts } = await import("../intelligence-TUNH5ZMA.js");
1973
1973
  const dir = resolve(opts.dir);
1974
1974
  requireHarness(dir);
1975
1975
  const result = autoPromoteInstincts(dir, {
@@ -2003,8 +2003,8 @@ function behaviorToCliId(behavior) {
2003
2003
  return behavior.toLowerCase().replace(/[^a-z0-9\s-]/g, "").replace(/\s+/g, "-").slice(0, 50).replace(/-+$/, "");
2004
2004
  }
2005
2005
  program.command("dead-primitives").description("Detect orphaned primitives not modified in 30+ days").option("-d, --dir <path>", "Harness directory", ".").option("--days <n>", "Threshold days since last modification", "30").option("--json", "Output as JSON", false).action(async (opts) => {
2006
- const { detectDeadPrimitives } = await import("../intelligence-BANUEAI4.js");
2007
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2006
+ const { detectDeadPrimitives } = await import("../intelligence-TUNH5ZMA.js");
2007
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2008
2008
  const dir = resolve(opts.dir);
2009
2009
  requireHarness(dir);
2010
2010
  let config;
@@ -2036,7 +2036,7 @@ Scanned ${result.totalScanned} primitive(s) (threshold: ${result.thresholdDays}
2036
2036
  }
2037
2037
  });
2038
2038
  program.command("contradictions").description("Detect contradictions between rules and instincts").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON", false).action(async (opts) => {
2039
- const { detectContradictions } = await import("../intelligence-BANUEAI4.js");
2039
+ const { detectContradictions } = await import("../intelligence-TUNH5ZMA.js");
2040
2040
  const dir = resolve(opts.dir);
2041
2041
  requireHarness(dir);
2042
2042
  const result = detectContradictions(dir);
@@ -2061,8 +2061,8 @@ Checked ${result.rulesChecked} rule(s) and ${result.instinctsChecked} instinct(s
2061
2061
  }
2062
2062
  });
2063
2063
  program.command("enrich").description("Enrich sessions with extracted topics, tools, and primitive references").option("-d, --dir <path>", "Harness directory", ".").option("--from <date>", "Start date (YYYY-MM-DD)").option("--to <date>", "End date (YYYY-MM-DD)").option("--json", "Output as JSON", false).action(async (opts) => {
2064
- const { enrichSessions } = await import("../intelligence-BANUEAI4.js");
2065
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2064
+ const { enrichSessions } = await import("../intelligence-TUNH5ZMA.js");
2065
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2066
2066
  const dir = resolve(opts.dir);
2067
2067
  requireHarness(dir);
2068
2068
  let config;
@@ -2093,8 +2093,8 @@ Enriched ${result.sessionsScanned} session(s)
2093
2093
  }
2094
2094
  });
2095
2095
  program.command("suggest").description("Suggest capabilities (skills/playbooks) for frequent uncovered session topics").option("-d, --dir <path>", "Harness directory", ".").option("--min-frequency <n>", "Minimum topic frequency", "3").option("--json", "Output as JSON", false).action(async (opts) => {
2096
- const { suggestCapabilities } = await import("../intelligence-BANUEAI4.js");
2097
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2096
+ const { suggestCapabilities } = await import("../intelligence-TUNH5ZMA.js");
2097
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2098
2098
  const dir = resolve(opts.dir);
2099
2099
  requireHarness(dir);
2100
2100
  let config;
@@ -2126,7 +2126,7 @@ Analyzed ${result.topicsAnalyzed} topic(s) from ${result.sessionsScanned} sessio
2126
2126
  }
2127
2127
  });
2128
2128
  program.command("agents").description("List available sub-agents").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
2129
- const { listAgents } = await import("../delegate-YOGVA3HB.js");
2129
+ const { listAgents } = await import("../delegate-BPTJVYU3.js");
2130
2130
  const dir = resolve(opts.dir);
2131
2131
  const agents = listAgents(dir);
2132
2132
  if (agents.length === 0) {
@@ -2159,7 +2159,7 @@ program.command("delegate <agent-id> <prompt>").description("Delegate a prompt t
2159
2159
  try {
2160
2160
  console.error(`[delegate] Invoking agent "${agentId}"${opts.stream ? " (streaming)" : ""}...`);
2161
2161
  if (opts.stream) {
2162
- const { delegateStream } = await import("../delegate-YOGVA3HB.js");
2162
+ const { delegateStream } = await import("../delegate-BPTJVYU3.js");
2163
2163
  const result = delegateStream(delegateOpts);
2164
2164
  process.stdout.write("\n");
2165
2165
  for await (const chunk of result.textStream) {
@@ -2170,7 +2170,7 @@ program.command("delegate <agent-id> <prompt>").description("Delegate a prompt t
2170
2170
  `[delegate] Agent: ${result.agentId} | session: ${result.sessionId}`
2171
2171
  );
2172
2172
  } else {
2173
- const { delegateTo } = await import("../delegate-YOGVA3HB.js");
2173
+ const { delegateTo } = await import("../delegate-BPTJVYU3.js");
2174
2174
  const result = await delegateTo(delegateOpts);
2175
2175
  console.log("\n" + result.text + "\n");
2176
2176
  console.error(
@@ -2355,7 +2355,7 @@ rateLimitCmd.command("clear").description("Clear rate limit events").option("-d,
2355
2355
  });
2356
2356
  var mcpCmd = program.command("mcp").description("Manage MCP (Model Context Protocol) server connections");
2357
2357
  mcpCmd.command("list").description("List configured MCP servers and their status").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
2358
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2358
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2359
2359
  const { validateMcpConfig } = await import("../mcp-JSIUJJZV.js");
2360
2360
  const dir = resolve(opts.dir);
2361
2361
  requireHarness(dir);
@@ -2397,7 +2397,7 @@ ${entries.length} MCP server(s) configured:
2397
2397
  console.log();
2398
2398
  });
2399
2399
  mcpCmd.command("test").description("Test MCP server connections and list available tools").option("-d, --dir <path>", "Harness directory", ".").option("-s, --server <name>", "Test only a specific server").action(async (opts) => {
2400
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2400
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2401
2401
  const { createMcpManager } = await import("../mcp-JSIUJJZV.js");
2402
2402
  const dir = resolve(opts.dir);
2403
2403
  loadEnvFromDir(dir);
@@ -2491,7 +2491,7 @@ ${discovery.totalServers} unique server(s) after dedup:
2491
2491
  }
2492
2492
  });
2493
2493
  mcpCmd.command("search <query>").description("Search the MCP registry for available servers").option("-n, --limit <number>", "Max results", "10").option("--json", "Output raw JSON", false).action(async (query, opts) => {
2494
- const { searchRegistry, formatRegistryServer } = await import("../mcp-installer-X2TJ2S2G.js");
2494
+ const { searchRegistry, formatRegistryServer } = await import("../mcp-installer-4LOYB3PP.js");
2495
2495
  try {
2496
2496
  const result = await searchRegistry(query, { limit: parseInt(opts.limit, 10) });
2497
2497
  if (opts.json) {
@@ -2517,7 +2517,7 @@ ${result.servers.length} server(s) found for "${query}":
2517
2517
  }
2518
2518
  });
2519
2519
  mcpCmd.command("install <query>").description("Install an MCP server from the registry into config.yaml").option("-d, --dir <path>", "Harness directory", ".").option("-n, --name <name>", "Custom name for the server in config").option("--force", "Overwrite if server already exists", false).option("--skip-test", "Skip connection testing", false).option("--skip-docs", "Skip tool doc generation", false).option("--json", "Output raw JSON", false).action(async (query, opts) => {
2520
- const { installMcpServer } = await import("../mcp-installer-X2TJ2S2G.js");
2520
+ const { installMcpServer } = await import("../mcp-installer-4LOYB3PP.js");
2521
2521
  const dir = resolve(opts.dir);
2522
2522
  loadEnvFromDir(dir);
2523
2523
  requireHarness(dir);
@@ -2664,10 +2664,10 @@ Suggestions:
2664
2664
  });
2665
2665
  var generateCmd = program.command("generate").description("Auto-generate harness files");
2666
2666
  generateCmd.command("system").description("Regenerate SYSTEM.md from actual directory structure").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
2667
- const { generateSystemMd } = await import("../scaffold-LA54KYKJ.js");
2667
+ const { generateSystemMd } = await import("../scaffold-FBUNVFYQ.js");
2668
2668
  const dir = resolve(opts.dir);
2669
2669
  requireHarness(dir);
2670
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2670
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2671
2671
  const config = loadConfig(dir);
2672
2672
  const content = generateSystemMd(dir, config.agent.name);
2673
2673
  const { writeFileSync } = await import("fs");
@@ -2677,7 +2677,7 @@ generateCmd.command("system").description("Regenerate SYSTEM.md from actual dire
2677
2677
  `);
2678
2678
  });
2679
2679
  program.command("dashboard").description("Show a unified dashboard of health, costs, sessions, workflows, and storage").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output raw JSON snapshot", false).option("--watch", "Refresh every N seconds", false).option("--interval <seconds>", "Watch refresh interval in seconds", "5").action(async (opts) => {
2680
- const { collectSnapshot, formatDashboard } = await import("../telemetry-RS2JZUZP.js");
2680
+ const { collectSnapshot, formatDashboard } = await import("../telemetry-R34GXFVW.js");
2681
2681
  const dir = resolve(opts.dir);
2682
2682
  requireHarness(dir);
2683
2683
  if (opts.json) {
@@ -2718,7 +2718,7 @@ var intelligenceCmd = program.command("intelligence").description("Intelligence
2718
2718
  intelligenceCmd.command("promote").description("Auto-promote instinct candidates that appear 3+ times across journals").option("-d, --dir <dir>", "Harness directory", ".").option("--threshold <n>", "Minimum occurrences to promote", "3").option("--install", "Install promoted instincts as .md files").option("--json", "Output as JSON").action(async (opts) => {
2719
2719
  const dir = resolve(opts.dir);
2720
2720
  loadEnvFromDir(dir);
2721
- const { autoPromoteInstincts } = await import("../intelligence-BANUEAI4.js");
2721
+ const { autoPromoteInstincts } = await import("../intelligence-TUNH5ZMA.js");
2722
2722
  const result = autoPromoteInstincts(dir, {
2723
2723
  threshold: parseInt(opts.threshold, 10),
2724
2724
  install: opts.install ?? false
@@ -2749,8 +2749,8 @@ Promoted: ${result.promoted.join(", ")}`);
2749
2749
  intelligenceCmd.command("dead").description("Detect dead primitives (unreferenced and old)").option("-d, --dir <dir>", "Harness directory", ".").option("--threshold <days>", "Days since modification to consider dead", "30").option("--json", "Output as JSON").action(async (opts) => {
2750
2750
  const dir = resolve(opts.dir);
2751
2751
  loadEnvFromDir(dir);
2752
- const { detectDeadPrimitives } = await import("../intelligence-BANUEAI4.js");
2753
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2752
+ const { detectDeadPrimitives } = await import("../intelligence-TUNH5ZMA.js");
2753
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2754
2754
  let config;
2755
2755
  try {
2756
2756
  config = loadConfig(dir);
@@ -2779,7 +2779,7 @@ Dead primitives (${result.dead.length}):`);
2779
2779
  intelligenceCmd.command("contradictions").description("Detect contradictions between rules and instincts").option("-d, --dir <dir>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
2780
2780
  const dir = resolve(opts.dir);
2781
2781
  loadEnvFromDir(dir);
2782
- const { detectContradictions } = await import("../intelligence-BANUEAI4.js");
2782
+ const { detectContradictions } = await import("../intelligence-TUNH5ZMA.js");
2783
2783
  const result = detectContradictions(dir);
2784
2784
  if (opts.json) {
2785
2785
  console.log(JSON.stringify(result, null, 2));
@@ -2800,8 +2800,8 @@ Contradictions (${result.contradictions.length}):`);
2800
2800
  intelligenceCmd.command("enrich").description("Enrich sessions with topics, token counts, and related primitives").option("-d, --dir <dir>", "Harness directory", ".").option("--from <date>", "Start date (YYYY-MM-DD)").option("--to <date>", "End date (YYYY-MM-DD)").option("--json", "Output as JSON").action(async (opts) => {
2801
2801
  const dir = resolve(opts.dir);
2802
2802
  loadEnvFromDir(dir);
2803
- const { enrichSessions } = await import("../intelligence-BANUEAI4.js");
2804
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2803
+ const { enrichSessions } = await import("../intelligence-TUNH5ZMA.js");
2804
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2805
2805
  let config;
2806
2806
  try {
2807
2807
  config = loadConfig(dir);
@@ -2827,8 +2827,8 @@ intelligenceCmd.command("enrich").description("Enrich sessions with topics, toke
2827
2827
  intelligenceCmd.command("suggest").description("Suggest new skills/playbooks for frequent uncovered topics").option("-d, --dir <dir>", "Harness directory", ".").option("--min-frequency <n>", "Minimum topic frequency", "3").option("--json", "Output as JSON").action(async (opts) => {
2828
2828
  const dir = resolve(opts.dir);
2829
2829
  loadEnvFromDir(dir);
2830
- const { suggestCapabilities } = await import("../intelligence-BANUEAI4.js");
2831
- const { loadConfig } = await import("../config-PYSS3QY6.js");
2830
+ const { suggestCapabilities } = await import("../intelligence-TUNH5ZMA.js");
2831
+ const { loadConfig } = await import("../config-KRGEWBPM.js");
2832
2832
  let config;
2833
2833
  try {
2834
2834
  config = loadConfig(dir);
@@ -2857,7 +2857,7 @@ Suggestions (${result.suggestions.length}):`);
2857
2857
  intelligenceCmd.command("failures").description("Analyze recent failure patterns and suggest recovery strategies").option("-d, --dir <dir>", "Harness directory", ".").option("--days <n>", "Days to look back", "7").option("--json", "Output as JSON").action(async (opts) => {
2858
2858
  const dir = resolve(opts.dir);
2859
2859
  loadEnvFromDir(dir);
2860
- const { analyzeFailures } = await import("../intelligence-BANUEAI4.js");
2860
+ const { analyzeFailures } = await import("../intelligence-TUNH5ZMA.js");
2861
2861
  const result = analyzeFailures(dir, { days: parseInt(opts.days, 10) });
2862
2862
  if (opts.json) {
2863
2863
  console.log(JSON.stringify(result, null, 2));
@@ -2882,7 +2882,7 @@ intelligenceCmd.command("failures").description("Analyze recent failure patterns
2882
2882
  }
2883
2883
  });
2884
2884
  intelligenceCmd.command("classify <error>").description("Classify an error message into a failure mode").action(async (errorMsg) => {
2885
- const { classifyFailure, getRecoveryStrategies, FAILURE_TAXONOMY } = await import("../intelligence-BANUEAI4.js");
2885
+ const { classifyFailure, getRecoveryStrategies, FAILURE_TAXONOMY } = await import("../intelligence-TUNH5ZMA.js");
2886
2886
  const mode = classifyFailure(errorMsg);
2887
2887
  const info = FAILURE_TAXONOMY.modes[mode];
2888
2888
  const strategies = getRecoveryStrategies(mode);
@@ -2899,7 +2899,7 @@ var gateCmd = program.command("gate").description("Run verification gates");
2899
2899
  gateCmd.command("run [name]").description("Run a verification gate (or all gates if no name)").option("-d, --dir <dir>", "Harness directory", ".").option("--json", "Output as JSON").action(async (name, opts) => {
2900
2900
  const dir = resolve(opts.dir);
2901
2901
  loadEnvFromDir(dir);
2902
- const { runGate, runAllGates } = await import("../intelligence-BANUEAI4.js");
2902
+ const { runGate, runAllGates } = await import("../intelligence-TUNH5ZMA.js");
2903
2903
  if (name) {
2904
2904
  const result = runGate(name, dir);
2905
2905
  if (opts.json) {
@@ -2929,7 +2929,7 @@ gateCmd.command("run [name]").description("Run a verification gate (or all gates
2929
2929
  }
2930
2930
  });
2931
2931
  gateCmd.command("list").description("List available verification gates").action(async () => {
2932
- const { listGates } = await import("../intelligence-BANUEAI4.js");
2932
+ const { listGates } = await import("../intelligence-TUNH5ZMA.js");
2933
2933
  const gates = listGates();
2934
2934
  for (const g of gates) {
2935
2935
  console.log(` ${g.name}: ${g.description}`);
@@ -2938,7 +2938,7 @@ gateCmd.command("list").description("List available verification gates").action(
2938
2938
  program.command("check-rules").description("Check an action against loaded rules").argument("<action>", 'Action to check (e.g., "deploy", "run", "tool_call")').option("-d, --dir <path>", "Harness directory", process.cwd()).option("--description <text>", "Description of the action").option("--tags <tags>", "Comma-separated tags").option("--tool <name>", "Tool name (for tool_call actions)").option("--json", "Output as JSON").action(async (action, opts) => {
2939
2939
  const dir = resolve(opts.dir);
2940
2940
  loadEnvFromDir(dir);
2941
- const { enforceRules } = await import("../rule-engine-DM26S77N.js");
2941
+ const { enforceRules } = await import("../rule-engine-EPFMNBEG.js");
2942
2942
  const tags = opts.tags ? opts.tags.split(",").map((t) => t.trim()) : void 0;
2943
2943
  const result = enforceRules(dir, {
2944
2944
  action,
@@ -2961,7 +2961,7 @@ program.command("check-rules").description("Check an action against loaded rules
2961
2961
  program.command("list-rules").description("List all parsed rules from the harness").option("-d, --dir <path>", "Harness directory", process.cwd()).option("--json", "Output as JSON").action(async (opts) => {
2962
2962
  const dir = resolve(opts.dir);
2963
2963
  loadEnvFromDir(dir);
2964
- const { loadRules } = await import("../rule-engine-DM26S77N.js");
2964
+ const { loadRules } = await import("../rule-engine-EPFMNBEG.js");
2965
2965
  const rules = loadRules(dir);
2966
2966
  if (opts.json) {
2967
2967
  console.log(JSON.stringify(rules, null, 2));
@@ -2981,7 +2981,7 @@ program.command("list-rules").description("List all parsed rules from the harnes
2981
2981
  program.command("playbook-gates").description("Extract and check verification gates from playbooks/workflows").argument("[playbook-id]", "Specific playbook/workflow ID").option("-d, --dir <path>", "Harness directory", process.cwd()).option("--json", "Output as JSON").action(async (playbookId, opts) => {
2982
2982
  const dir = resolve(opts.dir);
2983
2983
  loadEnvFromDir(dir);
2984
- const { loadGates, getGatesForPlaybook } = await import("../verification-gate-2O6DF2B7.js");
2984
+ const { loadGates, getGatesForPlaybook } = await import("../verification-gate-FFKVJN5N.js");
2985
2985
  if (playbookId) {
2986
2986
  const gates = getGatesForPlaybook(dir, playbookId);
2987
2987
  if (opts.json) {
@@ -3122,7 +3122,7 @@ emoCmd.command("reset").description("Reset emotional state to defaults").option(
3122
3122
  program.command("serve").description("Start the harness HTTP API server for webhooks and integrations").option("-d, --dir <dir>", "Harness directory", ".").option("-p, --port <port>", "Port to listen on", "8080").option("--api-key <key>", "API key for LLM provider").option("--webhook-secret <secret>", "Secret for authenticating webhook management API").option("--no-cors", "Disable CORS").action(async (opts) => {
3123
3123
  const dir = resolve(opts.dir);
3124
3124
  loadEnvFromDir(dir);
3125
- const { startServe } = await import("../serve-TQLN4OTP.js");
3125
+ const { startServe } = await import("../serve-2QUR74CS.js");
3126
3126
  const port = parseInt(opts.port, 10);
3127
3127
  const result = startServe({
3128
3128
  harnessDir: dir,
@@ -3288,7 +3288,7 @@ program.command("browse").description("Browse available community content \u2014
3288
3288
  loadEnvFromDir(dir);
3289
3289
  const { listStarterPacks } = await import("../starter-packs-OR7NI5NA.js");
3290
3290
  const { loadAllSources, getSourcesSummary } = await import("../sources-7LDYO5GK.js");
3291
- const { listInstalledBundles } = await import("../primitive-registry-ZMGGXSO5.js");
3291
+ const { listInstalledBundles } = await import("../primitive-registry-KQOL7LNU.js");
3292
3292
  const filter = opts.type;
3293
3293
  const sections = [];
3294
3294
  if (!filter || filter === "packs") {
@@ -3385,7 +3385,7 @@ var semanticCmd = program.command("semantic").description("Semantic search over
3385
3385
  semanticCmd.command("index").description("Index all primitives for semantic search (requires an embed function at runtime \u2014 shows stats only from CLI)").option("-d, --dir <dir>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
3386
3386
  const dir = resolve(opts.dir);
3387
3387
  loadEnvFromDir(dir);
3388
- const { getEmbeddingStats } = await import("../semantic-search-FN6FZIXI.js");
3388
+ const { getEmbeddingStats } = await import("../semantic-search-OSRMCW2H.js");
3389
3389
  const stats = getEmbeddingStats(dir);
3390
3390
  if (opts.json) {
3391
3391
  console.log(JSON.stringify(stats, null, 2));
@@ -3401,7 +3401,7 @@ semanticCmd.command("index").description("Index all primitives for semantic sear
3401
3401
  semanticCmd.command("stats").description("Show embedding store statistics").option("-d, --dir <dir>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
3402
3402
  const dir = resolve(opts.dir);
3403
3403
  loadEnvFromDir(dir);
3404
- const { getEmbeddingStats, detectStalePrimitives, loadEmbeddingStore } = await import("../semantic-search-FN6FZIXI.js");
3404
+ const { getEmbeddingStats, detectStalePrimitives, loadEmbeddingStore } = await import("../semantic-search-OSRMCW2H.js");
3405
3405
  const stats = getEmbeddingStats(dir);
3406
3406
  const store = loadEmbeddingStore(dir);
3407
3407
  const stale = detectStalePrimitives(dir, store, stats.modelId ?? "");
@@ -3443,7 +3443,7 @@ Available packs: ${available}`);
3443
3443
  process.exitCode = 1;
3444
3444
  return;
3445
3445
  }
3446
- const { installBundle } = await import("../primitive-registry-ZMGGXSO5.js");
3446
+ const { installBundle } = await import("../primitive-registry-KQOL7LNU.js");
3447
3447
  const bundleResult = installBundle(dir, bundle, {
3448
3448
  overwrite: opts.force,
3449
3449
  force: opts.force
@@ -3475,7 +3475,7 @@ Customize the workflows in your workflows/ directory.`);
3475
3475
  }
3476
3476
  return;
3477
3477
  }
3478
- const { universalInstall } = await import("../universal-installer-LCAZHFZR.js");
3478
+ const { universalInstall } = await import("../universal-installer-ZNA3HA2S.js");
3479
3479
  const result = await universalInstall(dir, source, {
3480
3480
  type: opts.type,
3481
3481
  id: opts.id,