@agntk/agent-harness 0.1.3 → 0.1.5
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.
- package/dist/{agent-framework-K4GUIICH.js → agent-framework-CMFC3VJM.js} +8 -8
- package/dist/{auto-processor-OLE45UI3.js → auto-processor-SDAJF67T.js} +3 -3
- package/dist/{chunk-XTBKL5BI.js → chunk-2ENYRENZ.js} +2 -2
- package/dist/{chunk-UPLBF4RZ.js → chunk-2UVWCTAY.js} +2 -2
- package/dist/{chunk-4CWAGBNS.js → chunk-4TQQZILG.js} +73 -3
- package/dist/chunk-4TQQZILG.js.map +1 -0
- package/dist/{chunk-A7BJPQQ6.js → chunk-5O5OGOOQ.js} +2 -2
- package/dist/{chunk-UWQTZMNI.js → chunk-7GZ4D6V6.js} +2 -2
- package/dist/{chunk-FLZU44SV.js → chunk-AN6Y4MDD.js} +6 -6
- package/dist/{chunk-4FDUOGSZ.js → chunk-D7AWV24Z.js} +3 -3
- package/dist/{chunk-CHJ5GNZC.js → chunk-EC42HQQH.js} +2 -2
- package/dist/{chunk-274RV3YO.js → chunk-GX2RCSFJ.js} +3 -3
- package/dist/{chunk-GJNNR2RA.js → chunk-M6PDMK2O.js} +3 -3
- package/dist/{chunk-GUJTBGVS.js → chunk-MSO7DKBK.js} +99 -188
- package/dist/chunk-MSO7DKBK.js.map +1 -0
- package/dist/{chunk-CSL3ERUI.js → chunk-NBEAK63K.js} +3 -3
- package/dist/{chunk-DA7IKHC4.js → chunk-NOJW5KG2.js} +2 -2
- package/dist/{chunk-M7NXUK55.js → chunk-NVC2WY4K.js} +2 -2
- package/dist/{chunk-YIJY5DBV.js → chunk-P74KXHA4.js} +4 -4
- package/dist/{chunk-YUFNYN2H.js → chunk-PTQ37NRI.js} +4 -4
- package/dist/{chunk-KFX54TQM.js → chunk-RPBC2QOA.js} +73 -3
- package/dist/chunk-RPBC2QOA.js.map +1 -0
- package/dist/{chunk-RY3ZFII7.js → chunk-SEHAQTBO.js} +6 -6
- package/dist/{chunk-MPZ3BPUI.js → chunk-UMXPOYZR.js} +4 -4
- package/dist/{chunk-W4T7PGI2.js → chunk-UXCHAS3Z.js} +4 -4
- package/dist/chunk-XVFVTDE6.js +98 -0
- package/dist/chunk-XVFVTDE6.js.map +1 -0
- package/dist/cli/index.js +105 -104
- package/dist/cli/index.js.map +1 -1
- package/dist/{config-WVMRUOCA.js → config-2O6S2YJO.js} +3 -3
- package/dist/config-LLQZYN2Q.js +11 -0
- package/dist/{context-loader-3ORBPMHJ.js → context-loader-XCZ5EXNG.js} +4 -4
- package/dist/{conversation-QDEIDQPH.js → conversation-OPLE23IM.js} +6 -6
- package/dist/{delegate-VJCJLYEK.js → delegate-ZJCIADNN.js} +7 -7
- package/dist/{export-6GCYHEHQ.js → export-2HEAAOUF.js} +3 -3
- package/dist/{graph-YUIPOSOO.js → graph-5MKRTC3J.js} +4 -4
- package/dist/harness-ABKZWP47.js +11 -0
- package/dist/{harness-WE4SLCML.js → harness-XSBQBY7T.js} +8 -8
- package/dist/index.d.ts +22 -0
- package/dist/index.js +226 -6
- package/dist/index.js.map +1 -1
- package/dist/{indexer-LONANRRM.js → indexer-YKSGUVYT.js} +4 -4
- package/dist/{instinct-learner-SRM72DHF.js → instinct-learner-CWVMLUWX.js} +5 -5
- package/dist/{intake-4M3HNU43.js → intake-M5NRR6QR.js} +5 -5
- package/dist/{intelligence-HJOCA4SJ.js → intelligence-UW4TCOC7.js} +10 -10
- package/dist/{journal-WANJL3MI.js → journal-KN265YLU.js} +5 -5
- package/dist/{loader-C3TKIKZR.js → loader-BOCVXVCH.js} +3 -3
- package/dist/{mcp-installer-6O2XXD3V.js → mcp-installer-KV3XZRRF.js} +3 -3
- package/dist/{primitive-registry-I6VTIR4W.js → primitive-registry-HOJMUFBT.js} +3 -3
- package/dist/{rule-engine-YGQ3RYZM.js → rule-engine-I4AFQSSR.js} +3 -3
- package/dist/{scaffold-A3VRRCBV.js → scaffold-ZY4XWINP.js} +4 -4
- package/dist/{scheduler-XHHIVHRI.js → scheduler-TYOQKO4C.js} +11 -11
- package/dist/{search-V3W5JMJG.js → search-4IYM525O.js} +3 -3
- package/dist/{semantic-search-2DTOO5UX.js → semantic-search-G624D6CI.js} +3 -3
- package/dist/{serve-DTQ3HENY.js → serve-QFUZWOU3.js} +9 -9
- package/dist/{telemetry-UC6PBXC7.js → telemetry-MVDNGJEC.js} +4 -4
- package/dist/{tool-executor-MJ7IG7PQ.js → tool-executor-KEYQLO4M.js} +5 -5
- package/dist/{tools-DZ4KETET.js → tools-EB3BHRRF.js} +4 -4
- package/dist/{types-EW7AIB3R.js → types-NYKB2DN3.js} +2 -2
- package/dist/{types-WGDLSPO6.js → types-VRSXU4AM.js} +2 -2
- package/dist/{universal-installer-EVBDGOWM.js → universal-installer-7MFCJUW7.js} +228 -6
- package/dist/universal-installer-7MFCJUW7.js.map +1 -0
- package/dist/{validator-7WXMDIHH.js → validator-LZXBFEPV.js} +8 -8
- package/dist/{verification-gate-FYXUX6LH.js → verification-gate-ALSJVKSW.js} +3 -3
- package/dist/{watcher-ISJC7YKL.js → watcher-CSHVDOCM.js} +5 -5
- package/dist/{web-server-DD7ZOP46.js → web-server-7NGOTK7J.js} +8 -8
- package/dist/web-server-7NGOTK7J.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-4CWAGBNS.js.map +0 -1
- package/dist/chunk-GUJTBGVS.js.map +0 -1
- package/dist/chunk-KFX54TQM.js.map +0 -1
- package/dist/harness-LCHA3DWP.js +0 -10
- package/dist/universal-installer-EVBDGOWM.js.map +0 -1
- /package/dist/{agent-framework-K4GUIICH.js.map → agent-framework-CMFC3VJM.js.map} +0 -0
- /package/dist/{auto-processor-OLE45UI3.js.map → auto-processor-SDAJF67T.js.map} +0 -0
- /package/dist/{chunk-XTBKL5BI.js.map → chunk-2ENYRENZ.js.map} +0 -0
- /package/dist/{chunk-UPLBF4RZ.js.map → chunk-2UVWCTAY.js.map} +0 -0
- /package/dist/{chunk-A7BJPQQ6.js.map → chunk-5O5OGOOQ.js.map} +0 -0
- /package/dist/{chunk-UWQTZMNI.js.map → chunk-7GZ4D6V6.js.map} +0 -0
- /package/dist/{chunk-FLZU44SV.js.map → chunk-AN6Y4MDD.js.map} +0 -0
- /package/dist/{chunk-4FDUOGSZ.js.map → chunk-D7AWV24Z.js.map} +0 -0
- /package/dist/{chunk-CHJ5GNZC.js.map → chunk-EC42HQQH.js.map} +0 -0
- /package/dist/{chunk-274RV3YO.js.map → chunk-GX2RCSFJ.js.map} +0 -0
- /package/dist/{chunk-GJNNR2RA.js.map → chunk-M6PDMK2O.js.map} +0 -0
- /package/dist/{chunk-CSL3ERUI.js.map → chunk-NBEAK63K.js.map} +0 -0
- /package/dist/{chunk-DA7IKHC4.js.map → chunk-NOJW5KG2.js.map} +0 -0
- /package/dist/{chunk-M7NXUK55.js.map → chunk-NVC2WY4K.js.map} +0 -0
- /package/dist/{chunk-YIJY5DBV.js.map → chunk-P74KXHA4.js.map} +0 -0
- /package/dist/{chunk-YUFNYN2H.js.map → chunk-PTQ37NRI.js.map} +0 -0
- /package/dist/{chunk-RY3ZFII7.js.map → chunk-SEHAQTBO.js.map} +0 -0
- /package/dist/{chunk-MPZ3BPUI.js.map → chunk-UMXPOYZR.js.map} +0 -0
- /package/dist/{chunk-W4T7PGI2.js.map → chunk-UXCHAS3Z.js.map} +0 -0
- /package/dist/{config-WVMRUOCA.js.map → config-2O6S2YJO.js.map} +0 -0
- /package/dist/{context-loader-3ORBPMHJ.js.map → config-LLQZYN2Q.js.map} +0 -0
- /package/dist/{conversation-QDEIDQPH.js.map → context-loader-XCZ5EXNG.js.map} +0 -0
- /package/dist/{delegate-VJCJLYEK.js.map → conversation-OPLE23IM.js.map} +0 -0
- /package/dist/{graph-YUIPOSOO.js.map → delegate-ZJCIADNN.js.map} +0 -0
- /package/dist/{export-6GCYHEHQ.js.map → export-2HEAAOUF.js.map} +0 -0
- /package/dist/{harness-LCHA3DWP.js.map → graph-5MKRTC3J.js.map} +0 -0
- /package/dist/{harness-WE4SLCML.js.map → harness-ABKZWP47.js.map} +0 -0
- /package/dist/{indexer-LONANRRM.js.map → harness-XSBQBY7T.js.map} +0 -0
- /package/dist/{instinct-learner-SRM72DHF.js.map → indexer-YKSGUVYT.js.map} +0 -0
- /package/dist/{intake-4M3HNU43.js.map → instinct-learner-CWVMLUWX.js.map} +0 -0
- /package/dist/{journal-WANJL3MI.js.map → intake-M5NRR6QR.js.map} +0 -0
- /package/dist/{intelligence-HJOCA4SJ.js.map → intelligence-UW4TCOC7.js.map} +0 -0
- /package/dist/{loader-C3TKIKZR.js.map → journal-KN265YLU.js.map} +0 -0
- /package/dist/{telemetry-UC6PBXC7.js.map → loader-BOCVXVCH.js.map} +0 -0
- /package/dist/{mcp-installer-6O2XXD3V.js.map → mcp-installer-KV3XZRRF.js.map} +0 -0
- /package/dist/{primitive-registry-I6VTIR4W.js.map → primitive-registry-HOJMUFBT.js.map} +0 -0
- /package/dist/{rule-engine-YGQ3RYZM.js.map → rule-engine-I4AFQSSR.js.map} +0 -0
- /package/dist/{scaffold-A3VRRCBV.js.map → scaffold-ZY4XWINP.js.map} +0 -0
- /package/dist/{scheduler-XHHIVHRI.js.map → scheduler-TYOQKO4C.js.map} +0 -0
- /package/dist/{search-V3W5JMJG.js.map → search-4IYM525O.js.map} +0 -0
- /package/dist/{semantic-search-2DTOO5UX.js.map → semantic-search-G624D6CI.js.map} +0 -0
- /package/dist/{serve-DTQ3HENY.js.map → serve-QFUZWOU3.js.map} +0 -0
- /package/dist/{tool-executor-MJ7IG7PQ.js.map → telemetry-MVDNGJEC.js.map} +0 -0
- /package/dist/{tools-DZ4KETET.js.map → tool-executor-KEYQLO4M.js.map} +0 -0
- /package/dist/{types-EW7AIB3R.js.map → tools-EB3BHRRF.js.map} +0 -0
- /package/dist/{types-WGDLSPO6.js.map → types-NYKB2DN3.js.map} +0 -0
- /package/dist/{validator-7WXMDIHH.js.map → types-VRSXU4AM.js.map} +0 -0
- /package/dist/{web-server-DD7ZOP46.js.map → validator-LZXBFEPV.js.map} +0 -0
- /package/dist/{verification-gate-FYXUX6LH.js.map → verification-gate-ALSJVKSW.js.map} +0 -0
- /package/dist/{watcher-ISJC7YKL.js.map → watcher-CSHVDOCM.js.map} +0 -0
package/dist/cli/index.js
CHANGED
|
@@ -101,7 +101,7 @@ function askQuestion(rl, question, defaultValue) {
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
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) => {
|
|
104
|
-
const { scaffoldHarness, generateCoreMd, listTemplates } = await import("../scaffold-
|
|
104
|
+
const { scaffoldHarness, generateCoreMd, listTemplates } = await import("../scaffold-ZY4XWINP.js");
|
|
105
105
|
const isInteractive = !name || opts.interactive;
|
|
106
106
|
let agentName = name ?? "";
|
|
107
107
|
let purpose = opts.purpose ?? "";
|
|
@@ -250,7 +250,7 @@ The agent gets better the more you use it. See README.md inside`);
|
|
|
250
250
|
}
|
|
251
251
|
});
|
|
252
252
|
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) => {
|
|
253
|
-
const { createHarness } = await import("../harness-
|
|
253
|
+
const { createHarness } = await import("../harness-XSBQBY7T.js");
|
|
254
254
|
const dir = resolve(opts.dir);
|
|
255
255
|
loadEnvFromDir(dir);
|
|
256
256
|
requireHarness(dir);
|
|
@@ -291,9 +291,9 @@ program.command("run <prompt>").description("Run a prompt through the agent").op
|
|
|
291
291
|
}
|
|
292
292
|
});
|
|
293
293
|
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) => {
|
|
294
|
-
const { Conversation } = await import("../conversation-
|
|
295
|
-
const { loadConfig } = await import("../config-
|
|
296
|
-
const { buildToolSet } = await import("../tool-executor-
|
|
294
|
+
const { Conversation } = await import("../conversation-OPLE23IM.js");
|
|
295
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
296
|
+
const { buildToolSet } = await import("../tool-executor-KEYQLO4M.js");
|
|
297
297
|
const { createMcpManager } = await import("../mcp-WTQJJZAO.js");
|
|
298
298
|
const readline = await import("readline");
|
|
299
299
|
const dir = resolve(opts.dir);
|
|
@@ -392,8 +392,8 @@ ${config.agent.name} is ready. ${history.length > 0 ? `(${history.length} messag
|
|
|
392
392
|
ask();
|
|
393
393
|
});
|
|
394
394
|
program.command("info").description("Show harness info and loaded context").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
|
|
395
|
-
const { loadConfig } = await import("../config-
|
|
396
|
-
const { buildSystemPrompt } = await import("../context-loader-
|
|
395
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
396
|
+
const { buildSystemPrompt } = await import("../context-loader-XCZ5EXNG.js");
|
|
397
397
|
const { loadState } = await import("../state-GMXILIHW.js");
|
|
398
398
|
const dir = resolve(opts.dir);
|
|
399
399
|
requireHarness(dir);
|
|
@@ -452,8 +452,8 @@ MCP servers: ${mcpEntries.length} configured (${enabledCount} enabled)`);
|
|
|
452
452
|
}
|
|
453
453
|
});
|
|
454
454
|
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) => {
|
|
455
|
-
const { loadConfig } = await import("../config-
|
|
456
|
-
const { buildSystemPrompt } = await import("../context-loader-
|
|
455
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
456
|
+
const { buildSystemPrompt } = await import("../context-loader-XCZ5EXNG.js");
|
|
457
457
|
const dir = resolve(opts.dir);
|
|
458
458
|
requireHarness(dir);
|
|
459
459
|
try {
|
|
@@ -475,12 +475,12 @@ program.command("prompt").description("Show the full assembled system prompt").o
|
|
|
475
475
|
}
|
|
476
476
|
});
|
|
477
477
|
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) => {
|
|
478
|
-
const { loadConfig } = await import("../config-
|
|
479
|
-
const { rebuildAllIndexes } = await import("../indexer-
|
|
480
|
-
const { createWatcher } = await import("../watcher-
|
|
481
|
-
const { Scheduler } = await import("../scheduler-
|
|
482
|
-
const { autoProcessAll } = await import("../auto-processor-
|
|
483
|
-
const { generateSystemMd } = await import("../scaffold-
|
|
478
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
479
|
+
const { rebuildAllIndexes } = await import("../indexer-YKSGUVYT.js");
|
|
480
|
+
const { createWatcher } = await import("../watcher-CSHVDOCM.js");
|
|
481
|
+
const { Scheduler } = await import("../scheduler-TYOQKO4C.js");
|
|
482
|
+
const { autoProcessAll } = await import("../auto-processor-SDAJF67T.js");
|
|
483
|
+
const { generateSystemMd } = await import("../scaffold-ZY4XWINP.js");
|
|
484
484
|
const { writeFileSync } = await import("fs");
|
|
485
485
|
const dir = resolve(opts.dir);
|
|
486
486
|
loadEnvFromDir(dir);
|
|
@@ -548,7 +548,7 @@ program.command("dev").description("Start dev mode \u2014 watches for file chang
|
|
|
548
548
|
}
|
|
549
549
|
let webServer = null;
|
|
550
550
|
if (opts.web) {
|
|
551
|
-
const { startWebServer } = await import("../web-server-
|
|
551
|
+
const { startWebServer } = await import("../web-server-7NGOTK7J.js");
|
|
552
552
|
const port = parseInt(opts.port, 10) || 3e3;
|
|
553
553
|
webServer = await startWebServer({
|
|
554
554
|
harnessDir: dir,
|
|
@@ -609,8 +609,8 @@ program.command("dev").description("Start dev mode \u2014 watches for file chang
|
|
|
609
609
|
process.on("SIGTERM", cleanup);
|
|
610
610
|
});
|
|
611
611
|
program.command("index").description("Rebuild all index files").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
612
|
-
const { rebuildAllIndexes } = await import("../indexer-
|
|
613
|
-
const { loadConfig } = await import("../config-
|
|
612
|
+
const { rebuildAllIndexes } = await import("../indexer-YKSGUVYT.js");
|
|
613
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
614
614
|
const dir = resolve(opts.dir);
|
|
615
615
|
let extDirs = [];
|
|
616
616
|
try {
|
|
@@ -623,7 +623,7 @@ program.command("index").description("Rebuild all index files").option("-d, --di
|
|
|
623
623
|
console.log(`\u2713 All indexes rebuilt in ${dir}`);
|
|
624
624
|
});
|
|
625
625
|
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) => {
|
|
626
|
-
const { autoProcessAll } = await import("../auto-processor-
|
|
626
|
+
const { autoProcessAll } = await import("../auto-processor-SDAJF67T.js");
|
|
627
627
|
const dir = resolve(opts.dir);
|
|
628
628
|
requireHarness(dir);
|
|
629
629
|
const results = autoProcessAll(dir, {
|
|
@@ -649,8 +649,8 @@ Processed ${modified} file(s)${errors > 0 ? `, ${errors} error(s)` : ""}`);
|
|
|
649
649
|
}
|
|
650
650
|
});
|
|
651
651
|
program.command("system").description("Regenerate SYSTEM.md from current directory structure").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
652
|
-
const { loadConfig } = await import("../config-
|
|
653
|
-
const { generateSystemMd } = await import("../scaffold-
|
|
652
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
653
|
+
const { generateSystemMd } = await import("../scaffold-ZY4XWINP.js");
|
|
654
654
|
const { writeFileSync } = await import("fs");
|
|
655
655
|
const dir = resolve(opts.dir);
|
|
656
656
|
requireHarness(dir);
|
|
@@ -665,7 +665,7 @@ program.command("journal").description("Synthesize sessions into journal entries
|
|
|
665
665
|
loadEnvFromDir(dir);
|
|
666
666
|
requireHarness(dir);
|
|
667
667
|
if (opts.pending) {
|
|
668
|
-
const { listUnjournaled } = await import("../journal-
|
|
668
|
+
const { listUnjournaled } = await import("../journal-KN265YLU.js");
|
|
669
669
|
const dates = listUnjournaled(dir);
|
|
670
670
|
if (dates.length === 0) {
|
|
671
671
|
console.log("All sessions have been journaled.");
|
|
@@ -681,7 +681,7 @@ Run "harness journal --all" to synthesize them.
|
|
|
681
681
|
return;
|
|
682
682
|
}
|
|
683
683
|
if (opts.from || opts.all) {
|
|
684
|
-
const { synthesizeJournalRange } = await import("../journal-
|
|
684
|
+
const { synthesizeJournalRange } = await import("../journal-KN265YLU.js");
|
|
685
685
|
try {
|
|
686
686
|
const label = opts.all ? "all dates" : `${opts.from}${opts.to ? ` to ${opts.to}` : " to today"}`;
|
|
687
687
|
console.log(`Synthesizing journals for ${label}${opts.force ? " (force)" : ""}...`);
|
|
@@ -705,7 +705,7 @@ Run "harness journal --all" to synthesize them.
|
|
|
705
705
|
}
|
|
706
706
|
console.log();
|
|
707
707
|
if (opts.autoHarvest) {
|
|
708
|
-
const { harvestInstincts } = await import("../instinct-learner-
|
|
708
|
+
const { harvestInstincts } = await import("../instinct-learner-CWVMLUWX.js");
|
|
709
709
|
const dates = entries.map((e) => e.date).sort();
|
|
710
710
|
const harvest = harvestInstincts(dir, {
|
|
711
711
|
from: dates[0],
|
|
@@ -724,7 +724,7 @@ Run "harness journal --all" to synthesize them.
|
|
|
724
724
|
}
|
|
725
725
|
return;
|
|
726
726
|
}
|
|
727
|
-
const { synthesizeJournal } = await import("../journal-
|
|
727
|
+
const { synthesizeJournal } = await import("../journal-KN265YLU.js");
|
|
728
728
|
try {
|
|
729
729
|
console.log(`Synthesizing journal...`);
|
|
730
730
|
const entry = await synthesizeJournal(dir, opts.date);
|
|
@@ -736,7 +736,7 @@ Run "harness journal --all" to synthesize them.
|
|
|
736
736
|
console.log(` Instinct candidates:`);
|
|
737
737
|
entry.instinct_candidates.forEach((c) => console.log(` - ${c}`));
|
|
738
738
|
if (opts.autoHarvest) {
|
|
739
|
-
const { harvestInstincts } = await import("../instinct-learner-
|
|
739
|
+
const { harvestInstincts } = await import("../instinct-learner-CWVMLUWX.js");
|
|
740
740
|
const harvest = harvestInstincts(dir, {
|
|
741
741
|
from: entry.date,
|
|
742
742
|
to: entry.date,
|
|
@@ -756,7 +756,7 @@ ${entry.synthesis}`);
|
|
|
756
756
|
}
|
|
757
757
|
});
|
|
758
758
|
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) => {
|
|
759
|
-
const { compressJournals } = await import("../journal-
|
|
759
|
+
const { compressJournals } = await import("../journal-KN265YLU.js");
|
|
760
760
|
const dir = resolve(opts.dir);
|
|
761
761
|
requireHarness(dir);
|
|
762
762
|
const results = compressJournals(dir, { force: opts.force });
|
|
@@ -776,7 +776,7 @@ program.command("compress").description("Compress daily journals into weekly rol
|
|
|
776
776
|
console.log();
|
|
777
777
|
});
|
|
778
778
|
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) => {
|
|
779
|
-
const { learnFromSessions } = await import("../instinct-learner-
|
|
779
|
+
const { learnFromSessions } = await import("../instinct-learner-CWVMLUWX.js");
|
|
780
780
|
const dir = resolve(opts.dir);
|
|
781
781
|
requireHarness(dir);
|
|
782
782
|
try {
|
|
@@ -802,7 +802,7 @@ ${result.candidates.length} instinct candidate(s):
|
|
|
802
802
|
}
|
|
803
803
|
});
|
|
804
804
|
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) => {
|
|
805
|
-
const { harvestInstincts } = await import("../instinct-learner-
|
|
805
|
+
const { harvestInstincts } = await import("../instinct-learner-CWVMLUWX.js");
|
|
806
806
|
const dir = resolve(opts.dir);
|
|
807
807
|
requireHarness(dir);
|
|
808
808
|
const result = harvestInstincts(dir, {
|
|
@@ -832,7 +832,7 @@ Scanned ${result.journalsScanned} journal(s)`);
|
|
|
832
832
|
}
|
|
833
833
|
});
|
|
834
834
|
program.command("intake").description("Process all pending files in the intake/ directory").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
835
|
-
const { processIntake } = await import("../intake-
|
|
835
|
+
const { processIntake } = await import("../intake-M5NRR6QR.js");
|
|
836
836
|
const dir = resolve(opts.dir);
|
|
837
837
|
const results = processIntake(dir);
|
|
838
838
|
if (results.length === 0) {
|
|
@@ -848,7 +848,7 @@ program.command("intake").description("Process all pending files in the intake/
|
|
|
848
848
|
}
|
|
849
849
|
});
|
|
850
850
|
program.command("validate").description("Validate harness structure and configuration").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
|
|
851
|
-
const { validateHarness } = await import("../validator-
|
|
851
|
+
const { validateHarness } = await import("../validator-LZXBFEPV.js");
|
|
852
852
|
const dir = resolve(opts.dir);
|
|
853
853
|
const result = validateHarness(dir);
|
|
854
854
|
if (opts.json) {
|
|
@@ -885,7 +885,7 @@ Summary: ${result.ok.length} passed, ${result.warnings.length} warnings, ${resul
|
|
|
885
885
|
}
|
|
886
886
|
});
|
|
887
887
|
program.command("doctor").description("Validate harness and auto-fix all fixable issues in one pass").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
888
|
-
const { doctorHarness } = await import("../validator-
|
|
888
|
+
const { doctorHarness } = await import("../validator-LZXBFEPV.js");
|
|
889
889
|
const dir = resolve(opts.dir);
|
|
890
890
|
console.log(`
|
|
891
891
|
Running doctor on: ${dir}
|
|
@@ -925,7 +925,7 @@ Summary: ${result.ok.length} ok, ${result.warnings.length} warnings, ${result.er
|
|
|
925
925
|
}
|
|
926
926
|
});
|
|
927
927
|
program.command("fix <file>").description("Auto-fix common issues in a capability markdown file (missing id, status, L0/L1)").action(async (file) => {
|
|
928
|
-
const { fixCapability } = await import("../intake-
|
|
928
|
+
const { fixCapability } = await import("../intake-M5NRR6QR.js");
|
|
929
929
|
const filePath = resolve(file);
|
|
930
930
|
const result = fixCapability(filePath);
|
|
931
931
|
if (result.fixes_applied.length > 0) {
|
|
@@ -951,7 +951,7 @@ Remaining errors (manual fix required):`);
|
|
|
951
951
|
}
|
|
952
952
|
});
|
|
953
953
|
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) => {
|
|
954
|
-
const { loadConfig } = await import("../config-
|
|
954
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
955
955
|
const dir = resolve(opts.dir);
|
|
956
956
|
requireHarness(dir);
|
|
957
957
|
const config = loadConfig(dir);
|
|
@@ -999,8 +999,8 @@ Archived ${result.sessionsArchived} session(s), ${result.journalsArchived} journ
|
|
|
999
999
|
});
|
|
1000
1000
|
program.command("status").description("Show harness status: primitives, sessions, config, state").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
1001
1001
|
const { existsSync: existsSync2, readdirSync } = await import("fs");
|
|
1002
|
-
const { validateHarness } = await import("../validator-
|
|
1003
|
-
const { loadConfig } = await import("../config-
|
|
1002
|
+
const { validateHarness } = await import("../validator-LZXBFEPV.js");
|
|
1003
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1004
1004
|
const { loadState } = await import("../state-GMXILIHW.js");
|
|
1005
1005
|
const { listSessions } = await import("../sessions-CZGVXKQE.js");
|
|
1006
1006
|
const dir = resolve(opts.dir);
|
|
@@ -1118,7 +1118,7 @@ program.command("scratch").description("Write a note to scratch.md (working memo
|
|
|
1118
1118
|
});
|
|
1119
1119
|
var workflowCmd = program.command("workflow").description("Manage workflows");
|
|
1120
1120
|
workflowCmd.command("list").description("List all workflows and their schedules").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
1121
|
-
const { loadDirectory } = await import("../loader-
|
|
1121
|
+
const { loadDirectory } = await import("../loader-BOCVXVCH.js");
|
|
1122
1122
|
const dir = resolve(opts.dir);
|
|
1123
1123
|
requireHarness(dir);
|
|
1124
1124
|
const workflowDir = join(dir, "workflows");
|
|
@@ -1145,7 +1145,7 @@ ${docs.length} workflow(s):
|
|
|
1145
1145
|
console.log();
|
|
1146
1146
|
});
|
|
1147
1147
|
workflowCmd.command("run <id>").description("Execute a workflow by ID (bypasses quiet hours)").option("-d, --dir <path>", "Harness directory", ".").action(async (workflowId, opts) => {
|
|
1148
|
-
const { Scheduler } = await import("../scheduler-
|
|
1148
|
+
const { Scheduler } = await import("../scheduler-TYOQKO4C.js");
|
|
1149
1149
|
const dir = resolve(opts.dir);
|
|
1150
1150
|
loadEnvFromDir(dir);
|
|
1151
1151
|
requireHarness(dir);
|
|
@@ -1174,8 +1174,8 @@ Executing workflow: ${workflowId}...`);
|
|
|
1174
1174
|
}
|
|
1175
1175
|
});
|
|
1176
1176
|
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) => {
|
|
1177
|
-
const { searchPrimitives } = await import("../search-
|
|
1178
|
-
const { loadConfig } = await import("../config-
|
|
1177
|
+
const { searchPrimitives } = await import("../search-4IYM525O.js");
|
|
1178
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1179
1179
|
const dir = resolve(opts.dir);
|
|
1180
1180
|
requireHarness(dir);
|
|
1181
1181
|
let config;
|
|
@@ -1222,7 +1222,7 @@ ${results.length} result(s):
|
|
|
1222
1222
|
});
|
|
1223
1223
|
var configCmd = program.command("config").description("Show or inspect configuration");
|
|
1224
1224
|
configCmd.command("show").description("Show full resolved configuration (merged defaults + file + env)").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
1225
|
-
const { loadConfig } = await import("../config-
|
|
1225
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1226
1226
|
const YAML = await import("yaml");
|
|
1227
1227
|
const dir = resolve(opts.dir);
|
|
1228
1228
|
requireHarness(dir);
|
|
@@ -1239,7 +1239,7 @@ configCmd.command("show").description("Show full resolved configuration (merged
|
|
|
1239
1239
|
}
|
|
1240
1240
|
});
|
|
1241
1241
|
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) => {
|
|
1242
|
-
const { loadConfig } = await import("../config-
|
|
1242
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1243
1243
|
const dir = resolve(opts.dir);
|
|
1244
1244
|
requireHarness(dir);
|
|
1245
1245
|
try {
|
|
@@ -1289,7 +1289,7 @@ configCmd.command("set <key> <value>").description("Set a config value (writes t
|
|
|
1289
1289
|
const parts = key.split(".");
|
|
1290
1290
|
doc.setIn(parts, parsed);
|
|
1291
1291
|
writeFileSync(configPath, doc.toString(), "utf-8");
|
|
1292
|
-
const { loadConfig } = await import("../config-
|
|
1292
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1293
1293
|
try {
|
|
1294
1294
|
loadConfig(dir);
|
|
1295
1295
|
console.log(`\u2713 ${key} = ${String(parsed)}`);
|
|
@@ -1396,7 +1396,7 @@ function formatDuration(ms) {
|
|
|
1396
1396
|
}
|
|
1397
1397
|
var toolsCmd = program.command("tools").description("List and inspect tool definitions");
|
|
1398
1398
|
toolsCmd.command("list").description("List all defined tools with auth status").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
1399
|
-
const { listToolSummaries } = await import("../tools-
|
|
1399
|
+
const { listToolSummaries } = await import("../tools-EB3BHRRF.js");
|
|
1400
1400
|
const dir = resolve(opts.dir);
|
|
1401
1401
|
requireHarness(dir);
|
|
1402
1402
|
const tools = listToolSummaries(dir);
|
|
@@ -1417,7 +1417,7 @@ ${tools.length} tool(s):
|
|
|
1417
1417
|
console.log();
|
|
1418
1418
|
});
|
|
1419
1419
|
toolsCmd.command("show <id>").description("Show detailed info for a specific tool").option("-d, --dir <path>", "Harness directory", ".").action(async (toolId, opts) => {
|
|
1420
|
-
const { getToolById } = await import("../tools-
|
|
1420
|
+
const { getToolById } = await import("../tools-EB3BHRRF.js");
|
|
1421
1421
|
const dir = resolve(opts.dir);
|
|
1422
1422
|
requireHarness(dir);
|
|
1423
1423
|
const tool = getToolById(dir, toolId);
|
|
@@ -1461,7 +1461,7 @@ Tool: ${tool.id}`);
|
|
|
1461
1461
|
console.log();
|
|
1462
1462
|
});
|
|
1463
1463
|
toolsCmd.command("auth").description("Check auth status for all tools").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
1464
|
-
const { checkToolAuth } = await import("../tools-
|
|
1464
|
+
const { checkToolAuth } = await import("../tools-EB3BHRRF.js");
|
|
1465
1465
|
const dir = resolve(opts.dir);
|
|
1466
1466
|
requireHarness(dir);
|
|
1467
1467
|
const results = checkToolAuth(dir);
|
|
@@ -1485,7 +1485,7 @@ toolsCmd.command("auth").description("Check auth status for all tools").option("
|
|
|
1485
1485
|
console.log();
|
|
1486
1486
|
});
|
|
1487
1487
|
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) => {
|
|
1488
|
-
const { exportHarness, writeBundle } = await import("../export-
|
|
1488
|
+
const { exportHarness, writeBundle } = await import("../export-2HEAAOUF.js");
|
|
1489
1489
|
const dir = resolve(opts.dir);
|
|
1490
1490
|
requireHarness(dir);
|
|
1491
1491
|
const bundle = exportHarness(dir, {
|
|
@@ -1503,7 +1503,7 @@ Exported "${bundle.agent_name}" to ${outputPath}`);
|
|
|
1503
1503
|
`);
|
|
1504
1504
|
});
|
|
1505
1505
|
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) => {
|
|
1506
|
-
const { readBundle, importBundle } = await import("../export-
|
|
1506
|
+
const { readBundle, importBundle } = await import("../export-2HEAAOUF.js");
|
|
1507
1507
|
const dir = resolve(opts.dir);
|
|
1508
1508
|
try {
|
|
1509
1509
|
const bundle = readBundle(resolve(bundlePath));
|
|
@@ -1527,7 +1527,7 @@ Importing bundle: "${bundle.agent_name}" (exported ${bundle.exported_at})`);
|
|
|
1527
1527
|
}
|
|
1528
1528
|
});
|
|
1529
1529
|
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) => {
|
|
1530
|
-
const { packBundle, writeBundleDir } = await import("../primitive-registry-
|
|
1530
|
+
const { packBundle, writeBundleDir } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1531
1531
|
const dir = resolve(opts.dir);
|
|
1532
1532
|
requireHarness(dir);
|
|
1533
1533
|
const bundleName = opts.name ?? basename(dir);
|
|
@@ -1555,8 +1555,8 @@ Bundled "${bundleName}" v${opts.version}`);
|
|
|
1555
1555
|
}
|
|
1556
1556
|
});
|
|
1557
1557
|
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) => {
|
|
1558
|
-
const { readBundleDir, installBundle, fetchRemoteBundle } = await import("../primitive-registry-
|
|
1559
|
-
const { readBundle } = await import("../export-
|
|
1558
|
+
const { readBundleDir, installBundle, fetchRemoteBundle } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1559
|
+
const { readBundle } = await import("../export-2HEAAOUF.js");
|
|
1560
1560
|
const dir = resolve(opts.dir);
|
|
1561
1561
|
try {
|
|
1562
1562
|
let bundle;
|
|
@@ -1569,7 +1569,7 @@ program.command("bundle-install <source>").description("Install primitives from
|
|
|
1569
1569
|
bundle = readBundleDir(sourcePath);
|
|
1570
1570
|
} else if (source.endsWith(".json")) {
|
|
1571
1571
|
const jsonBundle = readBundle(sourcePath);
|
|
1572
|
-
const { CORE_PRIMITIVE_DIRS } = await import("../types-
|
|
1572
|
+
const { CORE_PRIMITIVE_DIRS } = await import("../types-NYKB2DN3.js");
|
|
1573
1573
|
const files = jsonBundle.entries;
|
|
1574
1574
|
const types = /* @__PURE__ */ new Set();
|
|
1575
1575
|
for (const entry of files) {
|
|
@@ -1622,7 +1622,7 @@ Installation failed:`);
|
|
|
1622
1622
|
}
|
|
1623
1623
|
});
|
|
1624
1624
|
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) => {
|
|
1625
|
-
const { uninstallBundle } = await import("../primitive-registry-
|
|
1625
|
+
const { uninstallBundle } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1626
1626
|
const dir = resolve(opts.dir);
|
|
1627
1627
|
requireHarness(dir);
|
|
1628
1628
|
const result = uninstallBundle(dir, bundleName, { hard: opts.hard });
|
|
@@ -1646,7 +1646,7 @@ Uninstall failed:`);
|
|
|
1646
1646
|
}
|
|
1647
1647
|
});
|
|
1648
1648
|
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) => {
|
|
1649
|
-
const { readBundleDir, diffBundle, updateBundle, fetchRemoteBundle } = await import("../primitive-registry-
|
|
1649
|
+
const { readBundleDir, diffBundle, updateBundle, fetchRemoteBundle } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1650
1650
|
const dir = resolve(opts.dir);
|
|
1651
1651
|
requireHarness(dir);
|
|
1652
1652
|
try {
|
|
@@ -1705,7 +1705,7 @@ Update "${bundle.manifest.name}" to v${bundle.manifest.bundle_version}:`);
|
|
|
1705
1705
|
}
|
|
1706
1706
|
});
|
|
1707
1707
|
program.command("installed").description("List installed bundles").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON", false).action(async (opts) => {
|
|
1708
|
-
const { listInstalledBundles } = await import("../primitive-registry-
|
|
1708
|
+
const { listInstalledBundles } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1709
1709
|
const dir = resolve(opts.dir);
|
|
1710
1710
|
requireHarness(dir);
|
|
1711
1711
|
const bundles = listInstalledBundles(dir);
|
|
@@ -1728,8 +1728,8 @@ ${bundles.length} bundle(s) installed:
|
|
|
1728
1728
|
});
|
|
1729
1729
|
var registryCmd = program.command("registry").description("Search and install bundles from configured registries");
|
|
1730
1730
|
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) => {
|
|
1731
|
-
const { searchConfiguredRegistries } = await import("../primitive-registry-
|
|
1732
|
-
const { loadConfig } = await import("../config-
|
|
1731
|
+
const { searchConfiguredRegistries } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1732
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1733
1733
|
const dir = resolve(opts.dir);
|
|
1734
1734
|
requireHarness(dir);
|
|
1735
1735
|
const config = loadConfig(dir);
|
|
@@ -1770,8 +1770,8 @@ Searched ${result.registriesSearched} registry(ies) for "${query}"
|
|
|
1770
1770
|
}
|
|
1771
1771
|
});
|
|
1772
1772
|
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) => {
|
|
1773
|
-
const { installFromRegistry } = await import("../primitive-registry-
|
|
1774
|
-
const { loadConfig } = await import("../config-
|
|
1773
|
+
const { installFromRegistry } = await import("../primitive-registry-HOJMUFBT.js");
|
|
1774
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1775
1775
|
const dir = resolve(opts.dir);
|
|
1776
1776
|
requireHarness(dir);
|
|
1777
1777
|
const config = loadConfig(dir);
|
|
@@ -1813,7 +1813,7 @@ Installation failed:`);
|
|
|
1813
1813
|
}
|
|
1814
1814
|
});
|
|
1815
1815
|
registryCmd.command("list").description("List configured registries").option("-d, --dir <path>", "Harness directory", ".").option("--json", "Output as JSON", false).action(async (opts) => {
|
|
1816
|
-
const { loadConfig } = await import("../config-
|
|
1816
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1817
1817
|
const dir = resolve(opts.dir);
|
|
1818
1818
|
requireHarness(dir);
|
|
1819
1819
|
const config = loadConfig(dir);
|
|
@@ -1842,8 +1842,8 @@ ${registries.length} registry(ies) configured:
|
|
|
1842
1842
|
console.log();
|
|
1843
1843
|
});
|
|
1844
1844
|
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) => {
|
|
1845
|
-
const { buildDependencyGraph, getGraphStats } = await import("../graph-
|
|
1846
|
-
const { loadConfig } = await import("../config-
|
|
1845
|
+
const { buildDependencyGraph, getGraphStats } = await import("../graph-5MKRTC3J.js");
|
|
1846
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
1847
1847
|
const dir = resolve(opts.dir);
|
|
1848
1848
|
requireHarness(dir);
|
|
1849
1849
|
let config;
|
|
@@ -1970,7 +1970,7 @@ Session Analytics
|
|
|
1970
1970
|
console.log();
|
|
1971
1971
|
});
|
|
1972
1972
|
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) => {
|
|
1973
|
-
const { autoPromoteInstincts } = await import("../intelligence-
|
|
1973
|
+
const { autoPromoteInstincts } = await import("../intelligence-UW4TCOC7.js");
|
|
1974
1974
|
const dir = resolve(opts.dir);
|
|
1975
1975
|
requireHarness(dir);
|
|
1976
1976
|
const result = autoPromoteInstincts(dir, {
|
|
@@ -2004,8 +2004,8 @@ function behaviorToCliId(behavior) {
|
|
|
2004
2004
|
return behavior.toLowerCase().replace(/[^a-z0-9\s-]/g, "").replace(/\s+/g, "-").slice(0, 50).replace(/-+$/, "");
|
|
2005
2005
|
}
|
|
2006
2006
|
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) => {
|
|
2007
|
-
const { detectDeadPrimitives } = await import("../intelligence-
|
|
2008
|
-
const { loadConfig } = await import("../config-
|
|
2007
|
+
const { detectDeadPrimitives } = await import("../intelligence-UW4TCOC7.js");
|
|
2008
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2009
2009
|
const dir = resolve(opts.dir);
|
|
2010
2010
|
requireHarness(dir);
|
|
2011
2011
|
let config;
|
|
@@ -2037,7 +2037,7 @@ Scanned ${result.totalScanned} primitive(s) (threshold: ${result.thresholdDays}
|
|
|
2037
2037
|
}
|
|
2038
2038
|
});
|
|
2039
2039
|
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) => {
|
|
2040
|
-
const { detectContradictions } = await import("../intelligence-
|
|
2040
|
+
const { detectContradictions } = await import("../intelligence-UW4TCOC7.js");
|
|
2041
2041
|
const dir = resolve(opts.dir);
|
|
2042
2042
|
requireHarness(dir);
|
|
2043
2043
|
const result = detectContradictions(dir);
|
|
@@ -2062,8 +2062,8 @@ Checked ${result.rulesChecked} rule(s) and ${result.instinctsChecked} instinct(s
|
|
|
2062
2062
|
}
|
|
2063
2063
|
});
|
|
2064
2064
|
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) => {
|
|
2065
|
-
const { enrichSessions } = await import("../intelligence-
|
|
2066
|
-
const { loadConfig } = await import("../config-
|
|
2065
|
+
const { enrichSessions } = await import("../intelligence-UW4TCOC7.js");
|
|
2066
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2067
2067
|
const dir = resolve(opts.dir);
|
|
2068
2068
|
requireHarness(dir);
|
|
2069
2069
|
let config;
|
|
@@ -2094,8 +2094,8 @@ Enriched ${result.sessionsScanned} session(s)
|
|
|
2094
2094
|
}
|
|
2095
2095
|
});
|
|
2096
2096
|
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) => {
|
|
2097
|
-
const { suggestCapabilities } = await import("../intelligence-
|
|
2098
|
-
const { loadConfig } = await import("../config-
|
|
2097
|
+
const { suggestCapabilities } = await import("../intelligence-UW4TCOC7.js");
|
|
2098
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2099
2099
|
const dir = resolve(opts.dir);
|
|
2100
2100
|
requireHarness(dir);
|
|
2101
2101
|
let config;
|
|
@@ -2127,7 +2127,7 @@ Analyzed ${result.topicsAnalyzed} topic(s) from ${result.sessionsScanned} sessio
|
|
|
2127
2127
|
}
|
|
2128
2128
|
});
|
|
2129
2129
|
program.command("agents").description("List available sub-agents").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
2130
|
-
const { listAgents } = await import("../delegate-
|
|
2130
|
+
const { listAgents } = await import("../delegate-ZJCIADNN.js");
|
|
2131
2131
|
const dir = resolve(opts.dir);
|
|
2132
2132
|
const agents = listAgents(dir);
|
|
2133
2133
|
if (agents.length === 0) {
|
|
@@ -2160,7 +2160,7 @@ program.command("delegate <agent-id> <prompt>").description("Delegate a prompt t
|
|
|
2160
2160
|
try {
|
|
2161
2161
|
console.error(`[delegate] Invoking agent "${agentId}"${opts.stream ? " (streaming)" : ""}...`);
|
|
2162
2162
|
if (opts.stream) {
|
|
2163
|
-
const { delegateStream } = await import("../delegate-
|
|
2163
|
+
const { delegateStream } = await import("../delegate-ZJCIADNN.js");
|
|
2164
2164
|
const result = delegateStream(delegateOpts);
|
|
2165
2165
|
process.stdout.write("\n");
|
|
2166
2166
|
for await (const chunk of result.textStream) {
|
|
@@ -2171,7 +2171,7 @@ program.command("delegate <agent-id> <prompt>").description("Delegate a prompt t
|
|
|
2171
2171
|
`[delegate] Agent: ${result.agentId} | session: ${result.sessionId}`
|
|
2172
2172
|
);
|
|
2173
2173
|
} else {
|
|
2174
|
-
const { delegateTo } = await import("../delegate-
|
|
2174
|
+
const { delegateTo } = await import("../delegate-ZJCIADNN.js");
|
|
2175
2175
|
const result = await delegateTo(delegateOpts);
|
|
2176
2176
|
console.log("\n" + result.text + "\n");
|
|
2177
2177
|
console.error(
|
|
@@ -2356,7 +2356,7 @@ rateLimitCmd.command("clear").description("Clear rate limit events").option("-d,
|
|
|
2356
2356
|
});
|
|
2357
2357
|
var mcpCmd = program.command("mcp").description("Manage MCP (Model Context Protocol) server connections");
|
|
2358
2358
|
mcpCmd.command("list").description("List configured MCP servers and their status").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
2359
|
-
const { loadConfig } = await import("../config-
|
|
2359
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2360
2360
|
const { validateMcpConfig } = await import("../mcp-WTQJJZAO.js");
|
|
2361
2361
|
const dir = resolve(opts.dir);
|
|
2362
2362
|
requireHarness(dir);
|
|
@@ -2398,7 +2398,7 @@ ${entries.length} MCP server(s) configured:
|
|
|
2398
2398
|
console.log();
|
|
2399
2399
|
});
|
|
2400
2400
|
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) => {
|
|
2401
|
-
const { loadConfig } = await import("../config-
|
|
2401
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2402
2402
|
const { createMcpManager } = await import("../mcp-WTQJJZAO.js");
|
|
2403
2403
|
const dir = resolve(opts.dir);
|
|
2404
2404
|
loadEnvFromDir(dir);
|
|
@@ -2492,7 +2492,7 @@ ${discovery.totalServers} unique server(s) after dedup:
|
|
|
2492
2492
|
}
|
|
2493
2493
|
});
|
|
2494
2494
|
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) => {
|
|
2495
|
-
const { searchRegistry, formatRegistryServer } = await import("../mcp-installer-
|
|
2495
|
+
const { searchRegistry, formatRegistryServer } = await import("../mcp-installer-KV3XZRRF.js");
|
|
2496
2496
|
try {
|
|
2497
2497
|
const result = await searchRegistry(query, { limit: parseInt(opts.limit, 10) });
|
|
2498
2498
|
if (opts.json) {
|
|
@@ -2518,7 +2518,7 @@ ${result.servers.length} server(s) found for "${query}":
|
|
|
2518
2518
|
}
|
|
2519
2519
|
});
|
|
2520
2520
|
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) => {
|
|
2521
|
-
const { installMcpServer } = await import("../mcp-installer-
|
|
2521
|
+
const { installMcpServer } = await import("../mcp-installer-KV3XZRRF.js");
|
|
2522
2522
|
const dir = resolve(opts.dir);
|
|
2523
2523
|
loadEnvFromDir(dir);
|
|
2524
2524
|
requireHarness(dir);
|
|
@@ -2665,10 +2665,10 @@ Suggestions:
|
|
|
2665
2665
|
});
|
|
2666
2666
|
var generateCmd = program.command("generate").description("Auto-generate harness files");
|
|
2667
2667
|
generateCmd.command("system").description("Regenerate SYSTEM.md from actual directory structure").option("-d, --dir <path>", "Harness directory", ".").action(async (opts) => {
|
|
2668
|
-
const { generateSystemMd } = await import("../scaffold-
|
|
2668
|
+
const { generateSystemMd } = await import("../scaffold-ZY4XWINP.js");
|
|
2669
2669
|
const dir = resolve(opts.dir);
|
|
2670
2670
|
requireHarness(dir);
|
|
2671
|
-
const { loadConfig } = await import("../config-
|
|
2671
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2672
2672
|
const config = loadConfig(dir);
|
|
2673
2673
|
const content = generateSystemMd(dir, config.agent.name);
|
|
2674
2674
|
const { writeFileSync } = await import("fs");
|
|
@@ -2678,7 +2678,7 @@ generateCmd.command("system").description("Regenerate SYSTEM.md from actual dire
|
|
|
2678
2678
|
`);
|
|
2679
2679
|
});
|
|
2680
2680
|
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) => {
|
|
2681
|
-
const { collectSnapshot, formatDashboard } = await import("../telemetry-
|
|
2681
|
+
const { collectSnapshot, formatDashboard } = await import("../telemetry-MVDNGJEC.js");
|
|
2682
2682
|
const dir = resolve(opts.dir);
|
|
2683
2683
|
requireHarness(dir);
|
|
2684
2684
|
if (opts.json) {
|
|
@@ -2719,7 +2719,7 @@ var intelligenceCmd = program.command("intelligence").description("Intelligence
|
|
|
2719
2719
|
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) => {
|
|
2720
2720
|
const dir = resolve(opts.dir);
|
|
2721
2721
|
loadEnvFromDir(dir);
|
|
2722
|
-
const { autoPromoteInstincts } = await import("../intelligence-
|
|
2722
|
+
const { autoPromoteInstincts } = await import("../intelligence-UW4TCOC7.js");
|
|
2723
2723
|
const result = autoPromoteInstincts(dir, {
|
|
2724
2724
|
threshold: parseInt(opts.threshold, 10),
|
|
2725
2725
|
install: opts.install ?? false
|
|
@@ -2750,8 +2750,8 @@ Promoted: ${result.promoted.join(", ")}`);
|
|
|
2750
2750
|
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) => {
|
|
2751
2751
|
const dir = resolve(opts.dir);
|
|
2752
2752
|
loadEnvFromDir(dir);
|
|
2753
|
-
const { detectDeadPrimitives } = await import("../intelligence-
|
|
2754
|
-
const { loadConfig } = await import("../config-
|
|
2753
|
+
const { detectDeadPrimitives } = await import("../intelligence-UW4TCOC7.js");
|
|
2754
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2755
2755
|
let config;
|
|
2756
2756
|
try {
|
|
2757
2757
|
config = loadConfig(dir);
|
|
@@ -2780,7 +2780,7 @@ Dead primitives (${result.dead.length}):`);
|
|
|
2780
2780
|
intelligenceCmd.command("contradictions").description("Detect contradictions between rules and instincts").option("-d, --dir <dir>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
|
|
2781
2781
|
const dir = resolve(opts.dir);
|
|
2782
2782
|
loadEnvFromDir(dir);
|
|
2783
|
-
const { detectContradictions } = await import("../intelligence-
|
|
2783
|
+
const { detectContradictions } = await import("../intelligence-UW4TCOC7.js");
|
|
2784
2784
|
const result = detectContradictions(dir);
|
|
2785
2785
|
if (opts.json) {
|
|
2786
2786
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -2801,8 +2801,8 @@ Contradictions (${result.contradictions.length}):`);
|
|
|
2801
2801
|
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) => {
|
|
2802
2802
|
const dir = resolve(opts.dir);
|
|
2803
2803
|
loadEnvFromDir(dir);
|
|
2804
|
-
const { enrichSessions } = await import("../intelligence-
|
|
2805
|
-
const { loadConfig } = await import("../config-
|
|
2804
|
+
const { enrichSessions } = await import("../intelligence-UW4TCOC7.js");
|
|
2805
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2806
2806
|
let config;
|
|
2807
2807
|
try {
|
|
2808
2808
|
config = loadConfig(dir);
|
|
@@ -2828,8 +2828,8 @@ intelligenceCmd.command("enrich").description("Enrich sessions with topics, toke
|
|
|
2828
2828
|
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) => {
|
|
2829
2829
|
const dir = resolve(opts.dir);
|
|
2830
2830
|
loadEnvFromDir(dir);
|
|
2831
|
-
const { suggestCapabilities } = await import("../intelligence-
|
|
2832
|
-
const { loadConfig } = await import("../config-
|
|
2831
|
+
const { suggestCapabilities } = await import("../intelligence-UW4TCOC7.js");
|
|
2832
|
+
const { loadConfig } = await import("../config-2O6S2YJO.js");
|
|
2833
2833
|
let config;
|
|
2834
2834
|
try {
|
|
2835
2835
|
config = loadConfig(dir);
|
|
@@ -2858,7 +2858,7 @@ Suggestions (${result.suggestions.length}):`);
|
|
|
2858
2858
|
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) => {
|
|
2859
2859
|
const dir = resolve(opts.dir);
|
|
2860
2860
|
loadEnvFromDir(dir);
|
|
2861
|
-
const { analyzeFailures } = await import("../intelligence-
|
|
2861
|
+
const { analyzeFailures } = await import("../intelligence-UW4TCOC7.js");
|
|
2862
2862
|
const result = analyzeFailures(dir, { days: parseInt(opts.days, 10) });
|
|
2863
2863
|
if (opts.json) {
|
|
2864
2864
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -2883,7 +2883,7 @@ intelligenceCmd.command("failures").description("Analyze recent failure patterns
|
|
|
2883
2883
|
}
|
|
2884
2884
|
});
|
|
2885
2885
|
intelligenceCmd.command("classify <error>").description("Classify an error message into a failure mode").action(async (errorMsg) => {
|
|
2886
|
-
const { classifyFailure, getRecoveryStrategies, FAILURE_TAXONOMY } = await import("../intelligence-
|
|
2886
|
+
const { classifyFailure, getRecoveryStrategies, FAILURE_TAXONOMY } = await import("../intelligence-UW4TCOC7.js");
|
|
2887
2887
|
const mode = classifyFailure(errorMsg);
|
|
2888
2888
|
const info = FAILURE_TAXONOMY.modes[mode];
|
|
2889
2889
|
const strategies = getRecoveryStrategies(mode);
|
|
@@ -2900,7 +2900,7 @@ var gateCmd = program.command("gate").description("Run verification gates");
|
|
|
2900
2900
|
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) => {
|
|
2901
2901
|
const dir = resolve(opts.dir);
|
|
2902
2902
|
loadEnvFromDir(dir);
|
|
2903
|
-
const { runGate, runAllGates } = await import("../intelligence-
|
|
2903
|
+
const { runGate, runAllGates } = await import("../intelligence-UW4TCOC7.js");
|
|
2904
2904
|
if (name) {
|
|
2905
2905
|
const result = runGate(name, dir);
|
|
2906
2906
|
if (opts.json) {
|
|
@@ -2930,7 +2930,7 @@ gateCmd.command("run [name]").description("Run a verification gate (or all gates
|
|
|
2930
2930
|
}
|
|
2931
2931
|
});
|
|
2932
2932
|
gateCmd.command("list").description("List available verification gates").action(async () => {
|
|
2933
|
-
const { listGates } = await import("../intelligence-
|
|
2933
|
+
const { listGates } = await import("../intelligence-UW4TCOC7.js");
|
|
2934
2934
|
const gates = listGates();
|
|
2935
2935
|
for (const g of gates) {
|
|
2936
2936
|
console.log(` ${g.name}: ${g.description}`);
|
|
@@ -2939,7 +2939,7 @@ gateCmd.command("list").description("List available verification gates").action(
|
|
|
2939
2939
|
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) => {
|
|
2940
2940
|
const dir = resolve(opts.dir);
|
|
2941
2941
|
loadEnvFromDir(dir);
|
|
2942
|
-
const { enforceRules } = await import("../rule-engine-
|
|
2942
|
+
const { enforceRules } = await import("../rule-engine-I4AFQSSR.js");
|
|
2943
2943
|
const tags = opts.tags ? opts.tags.split(",").map((t) => t.trim()) : void 0;
|
|
2944
2944
|
const result = enforceRules(dir, {
|
|
2945
2945
|
action,
|
|
@@ -2962,7 +2962,7 @@ program.command("check-rules").description("Check an action against loaded rules
|
|
|
2962
2962
|
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) => {
|
|
2963
2963
|
const dir = resolve(opts.dir);
|
|
2964
2964
|
loadEnvFromDir(dir);
|
|
2965
|
-
const { loadRules } = await import("../rule-engine-
|
|
2965
|
+
const { loadRules } = await import("../rule-engine-I4AFQSSR.js");
|
|
2966
2966
|
const rules = loadRules(dir);
|
|
2967
2967
|
if (opts.json) {
|
|
2968
2968
|
console.log(JSON.stringify(rules, null, 2));
|
|
@@ -2982,7 +2982,7 @@ program.command("list-rules").description("List all parsed rules from the harnes
|
|
|
2982
2982
|
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) => {
|
|
2983
2983
|
const dir = resolve(opts.dir);
|
|
2984
2984
|
loadEnvFromDir(dir);
|
|
2985
|
-
const { loadGates, getGatesForPlaybook } = await import("../verification-gate-
|
|
2985
|
+
const { loadGates, getGatesForPlaybook } = await import("../verification-gate-ALSJVKSW.js");
|
|
2986
2986
|
if (playbookId) {
|
|
2987
2987
|
const gates = getGatesForPlaybook(dir, playbookId);
|
|
2988
2988
|
if (opts.json) {
|
|
@@ -3123,7 +3123,7 @@ emoCmd.command("reset").description("Reset emotional state to defaults").option(
|
|
|
3123
3123
|
program.command("check-action").description("Check if an action is allowed by harness rules (agent-framework guardrails)").argument("<action>", "Action description to check").option("-d, --dir <dir>", "Harness directory", ".").option("--tags <tags>", "Filter by rule tags (comma-separated)").option("--json", "Output as JSON").action(async (action, opts) => {
|
|
3124
3124
|
const dir = resolve(opts.dir);
|
|
3125
3125
|
loadEnvFromDir(dir);
|
|
3126
|
-
const { checkAction } = await import("../agent-framework-
|
|
3126
|
+
const { checkAction } = await import("../agent-framework-CMFC3VJM.js");
|
|
3127
3127
|
const tags = opts.tags ? opts.tags.split(",").map((t) => t.trim()) : void 0;
|
|
3128
3128
|
const result = checkAction(dir, action, { ruleTags: tags });
|
|
3129
3129
|
if (opts.json) {
|
|
@@ -3137,7 +3137,7 @@ program.command("check-action").description("Check if an action is allowed by ha
|
|
|
3137
3137
|
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) => {
|
|
3138
3138
|
const dir = resolve(opts.dir);
|
|
3139
3139
|
loadEnvFromDir(dir);
|
|
3140
|
-
const { startServe } = await import("../serve-
|
|
3140
|
+
const { startServe } = await import("../serve-QFUZWOU3.js");
|
|
3141
3141
|
const port = parseInt(opts.port, 10);
|
|
3142
3142
|
const result = startServe({
|
|
3143
3143
|
harnessDir: dir,
|
|
@@ -3303,7 +3303,7 @@ program.command("browse").description("Browse available community content \u2014
|
|
|
3303
3303
|
loadEnvFromDir(dir);
|
|
3304
3304
|
const { listStarterPacks } = await import("../starter-packs-76YUVHEU.js");
|
|
3305
3305
|
const { loadAllSources, getSourcesSummary } = await import("../sources-RW5DT56F.js");
|
|
3306
|
-
const { listInstalledBundles } = await import("../primitive-registry-
|
|
3306
|
+
const { listInstalledBundles } = await import("../primitive-registry-HOJMUFBT.js");
|
|
3307
3307
|
const filter = opts.type;
|
|
3308
3308
|
const sections = [];
|
|
3309
3309
|
if (!filter || filter === "packs") {
|
|
@@ -3400,7 +3400,7 @@ var semanticCmd = program.command("semantic").description("Semantic search over
|
|
|
3400
3400
|
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) => {
|
|
3401
3401
|
const dir = resolve(opts.dir);
|
|
3402
3402
|
loadEnvFromDir(dir);
|
|
3403
|
-
const { getEmbeddingStats } = await import("../semantic-search-
|
|
3403
|
+
const { getEmbeddingStats } = await import("../semantic-search-G624D6CI.js");
|
|
3404
3404
|
const stats = getEmbeddingStats(dir);
|
|
3405
3405
|
if (opts.json) {
|
|
3406
3406
|
console.log(JSON.stringify(stats, null, 2));
|
|
@@ -3416,7 +3416,7 @@ semanticCmd.command("index").description("Index all primitives for semantic sear
|
|
|
3416
3416
|
semanticCmd.command("stats").description("Show embedding store statistics").option("-d, --dir <dir>", "Harness directory", ".").option("--json", "Output as JSON").action(async (opts) => {
|
|
3417
3417
|
const dir = resolve(opts.dir);
|
|
3418
3418
|
loadEnvFromDir(dir);
|
|
3419
|
-
const { getEmbeddingStats, detectStalePrimitives, loadEmbeddingStore } = await import("../semantic-search-
|
|
3419
|
+
const { getEmbeddingStats, detectStalePrimitives, loadEmbeddingStore } = await import("../semantic-search-G624D6CI.js");
|
|
3420
3420
|
const stats = getEmbeddingStats(dir);
|
|
3421
3421
|
const store = loadEmbeddingStore(dir);
|
|
3422
3422
|
const stale = detectStalePrimitives(dir, store, stats.modelId ?? "");
|
|
@@ -3432,7 +3432,7 @@ semanticCmd.command("stats").description("Show embedding store statistics").opti
|
|
|
3432
3432
|
console.log(` Store size: ${(stats.storeSize / 1024).toFixed(1)} KB`);
|
|
3433
3433
|
}
|
|
3434
3434
|
});
|
|
3435
|
-
program.command("install").description("Install a primitive from any source (file, URL, or name)").argument("<source>", "File path, HTTPS URL, or source name to install").option("-d, --dir <dir>", "Harness directory", ".").option("-t, --type <type>", "Override detected type (skill, rule, agent, playbook, workflow, tool)").option("--id <id>", "Override generated ID").option("--force", "Force install despite validation warnings").option("--skip-fix", "Skip auto-fix (no frontmatter/L0/L1 generation)").option("--tags <tags...>", "Additional tags to add").option("--json", "Output as JSON").action(async (source, opts) => {
|
|
3435
|
+
program.command("install").description("Install a primitive from any source (file, URL, or name)").argument("<source>", "File path, HTTPS URL, or source name to install").option("-d, --dir <dir>", "Harness directory", ".").option("-t, --type <type>", "Override detected type (skill, rule, agent, playbook, workflow, tool)").option("--id <id>", "Override generated ID").option("--force", "Force install despite validation warnings").option("--skip-fix", "Skip auto-fix (no frontmatter/L0/L1 generation)").option("--tags <tags...>", "Additional tags to add").option("--force-license <spdx>", 'Override license policy for this install (SPDX id, e.g. "MIT")').option("--json", "Output as JSON").action(async (source, opts) => {
|
|
3436
3436
|
const dir = resolve(opts.dir);
|
|
3437
3437
|
loadEnvFromDir(dir);
|
|
3438
3438
|
const { isPackReference, parsePackName, getStarterPack, listStarterPacks } = await import("../starter-packs-76YUVHEU.js");
|
|
@@ -3458,7 +3458,7 @@ Available packs: ${available}`);
|
|
|
3458
3458
|
process.exitCode = 1;
|
|
3459
3459
|
return;
|
|
3460
3460
|
}
|
|
3461
|
-
const { installBundle } = await import("../primitive-registry-
|
|
3461
|
+
const { installBundle } = await import("../primitive-registry-HOJMUFBT.js");
|
|
3462
3462
|
const bundleResult = installBundle(dir, bundle, {
|
|
3463
3463
|
overwrite: opts.force,
|
|
3464
3464
|
force: opts.force
|
|
@@ -3490,13 +3490,14 @@ Customize the workflows in your workflows/ directory.`);
|
|
|
3490
3490
|
}
|
|
3491
3491
|
return;
|
|
3492
3492
|
}
|
|
3493
|
-
const { universalInstall } = await import("../universal-installer-
|
|
3493
|
+
const { universalInstall } = await import("../universal-installer-7MFCJUW7.js");
|
|
3494
3494
|
const result = await universalInstall(dir, source, {
|
|
3495
3495
|
type: opts.type,
|
|
3496
3496
|
id: opts.id,
|
|
3497
3497
|
force: opts.force,
|
|
3498
3498
|
skipFix: opts.skipFix,
|
|
3499
|
-
tags: opts.tags
|
|
3499
|
+
tags: opts.tags,
|
|
3500
|
+
forceLicense: opts.forceLicense
|
|
3500
3501
|
});
|
|
3501
3502
|
if (opts.json) {
|
|
3502
3503
|
console.log(JSON.stringify(result, null, 2));
|