holomime 3.3.5 → 3.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +53 -47
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -3593,7 +3593,7 @@ import { Command } from "commander";
|
|
|
3593
3593
|
// src/ui/branding.ts
|
|
3594
3594
|
import chalk from "chalk";
|
|
3595
3595
|
import gradientString from "gradient-string";
|
|
3596
|
-
var VERSION = "3.3.
|
|
3596
|
+
var VERSION = "3.3.7";
|
|
3597
3597
|
var LOGO = ` _ _ _
|
|
3598
3598
|
| |__ ___ | | ___ _ __ (_)_ __ ___ ___
|
|
3599
3599
|
| '_ \\ / _ \\| |/ _ \\| '_ \\| | '_ \` _ \\ / _ \\
|
|
@@ -3735,10 +3735,11 @@ function showWelcome() {
|
|
|
3735
3735
|
const content = [
|
|
3736
3736
|
`${chalk2.bold("Welcome to holomime!")}`,
|
|
3737
3737
|
"",
|
|
3738
|
-
`
|
|
3739
|
-
`Run ${chalk2.cyan("holomime init")} to build one through a guided assessment.`,
|
|
3738
|
+
`Define how your agent should behave \u2014 holomime diagnoses drift and fixes it.`,
|
|
3740
3739
|
"",
|
|
3741
|
-
chalk2.
|
|
3740
|
+
` ${chalk2.cyan("holomime personality")} ${chalk2.dim("Quick setup (1 file, ~5 min)")}`,
|
|
3741
|
+
` ${chalk2.cyan("holomime core")} ${chalk2.dim("Core identity (3 files)")}`,
|
|
3742
|
+
` ${chalk2.cyan("holomime identity")} ${chalk2.dim("Full stack with body.api (robots)")}`
|
|
3742
3743
|
].join("\n");
|
|
3743
3744
|
console.log(
|
|
3744
3745
|
boxen(content, {
|
|
@@ -3746,7 +3747,7 @@ function showWelcome() {
|
|
|
3746
3747
|
margin: { top: 1, bottom: 1, left: 2, right: 0 },
|
|
3747
3748
|
borderColor: "cyan",
|
|
3748
3749
|
borderStyle: "round",
|
|
3749
|
-
title: "
|
|
3750
|
+
title: "Get Started",
|
|
3750
3751
|
titleAlignment: "center"
|
|
3751
3752
|
})
|
|
3752
3753
|
);
|
|
@@ -5189,19 +5190,14 @@ async function initCommand() {
|
|
|
5189
5190
|
console.log(` ${chalk3.dim("A")} Agreeableness: ${bar(bigFive.agreeableness.score)} ${scoreLabel(bigFive.agreeableness.score)}`);
|
|
5190
5191
|
console.log(` ${chalk3.dim("N")} Emotional Stability: ${bar(bigFive.emotional_stability.score)} ${scoreLabel(bigFive.emotional_stability.score)}`);
|
|
5191
5192
|
const journeySteps = [
|
|
5192
|
-
`${chalk3.green("1.")} ${chalk3.cyan("holomime
|
|
5193
|
-
` ${chalk3.dim("
|
|
5194
|
-
`${chalk3.green("2.")} ${chalk3.cyan("holomime
|
|
5195
|
-
` ${chalk3.dim("
|
|
5196
|
-
`${chalk3.green("3.")} ${chalk3.cyan("holomime
|
|
5197
|
-
` ${chalk3.dim("
|
|
5198
|
-
`${chalk3.green("4.")} ${chalk3.cyan("holomime
|
|
5199
|
-
` ${chalk3.dim("
|
|
5200
|
-
``,
|
|
5201
|
-
`${chalk3.magenta("5.")} ${chalk3.cyan("holomime cure")} ${chalk3.dim("[Pro]")}`,
|
|
5202
|
-
` ${chalk3.dim("Live AI alignment session for your agent")}`,
|
|
5203
|
-
`${chalk3.magenta("6.")} ${chalk3.cyan("holomime growth")} ${chalk3.dim("[Pro]")}`,
|
|
5204
|
-
` ${chalk3.dim("Track improvement over time")}`
|
|
5193
|
+
`${chalk3.green("1.")} ${chalk3.cyan("holomime diagnose --log <path>")}`,
|
|
5194
|
+
` ${chalk3.dim("Analyze your agent's conversation logs")}`,
|
|
5195
|
+
`${chalk3.green("2.")} ${chalk3.cyan("holomime therapy")}`,
|
|
5196
|
+
` ${chalk3.dim("Autonomous behavioral therapy")}`,
|
|
5197
|
+
`${chalk3.green("3.")} ${chalk3.cyan("holomime cure")}`,
|
|
5198
|
+
` ${chalk3.dim("End-to-end fix (diagnose + train + verify)")}`,
|
|
5199
|
+
`${chalk3.green("4.")} ${chalk3.cyan("holomime benchmark")}`,
|
|
5200
|
+
` ${chalk3.dim("Verify alignment with adversarial scenarios")}`
|
|
5205
5201
|
].join("\n");
|
|
5206
5202
|
console.log(
|
|
5207
5203
|
boxen2(journeySteps, {
|
|
@@ -5312,15 +5308,14 @@ async function initFromArchetype(name, handle, purpose) {
|
|
|
5312
5308
|
console.log(` ${chalk3.dim("A")} Agreeableness: ${bar(bigFive.agreeableness.score)} ${scoreLabel(bigFive.agreeableness.score)}`);
|
|
5313
5309
|
console.log(` ${chalk3.dim("N")} Emotional Stability: ${bar(bigFive.emotional_stability.score)} ${scoreLabel(bigFive.emotional_stability.score)}`);
|
|
5314
5310
|
const journeySteps = [
|
|
5315
|
-
`${chalk3.green("1.")} ${chalk3.cyan("holomime
|
|
5316
|
-
` ${chalk3.dim("
|
|
5317
|
-
`${chalk3.green("2.")} ${chalk3.cyan("holomime
|
|
5318
|
-
` ${chalk3.dim("
|
|
5319
|
-
`${chalk3.green("3.")} ${chalk3.cyan("holomime
|
|
5320
|
-
` ${chalk3.dim("
|
|
5321
|
-
|
|
5322
|
-
|
|
5323
|
-
` ${chalk3.dim("Live AI alignment session for your agent")}`
|
|
5311
|
+
`${chalk3.green("1.")} ${chalk3.cyan("holomime diagnose --log <path>")}`,
|
|
5312
|
+
` ${chalk3.dim("Analyze your agent's conversation logs")}`,
|
|
5313
|
+
`${chalk3.green("2.")} ${chalk3.cyan("holomime therapy")}`,
|
|
5314
|
+
` ${chalk3.dim("Autonomous behavioral therapy")}`,
|
|
5315
|
+
`${chalk3.green("3.")} ${chalk3.cyan("holomime cure")}`,
|
|
5316
|
+
` ${chalk3.dim("End-to-end fix (diagnose + train + verify)")}`,
|
|
5317
|
+
`${chalk3.green("4.")} ${chalk3.cyan("holomime benchmark")}`,
|
|
5318
|
+
` ${chalk3.dim("Verify alignment with adversarial scenarios")}`
|
|
5324
5319
|
].join("\n");
|
|
5325
5320
|
console.log(
|
|
5326
5321
|
boxen2(journeySteps, {
|
|
@@ -21843,6 +21838,7 @@ async function configCommand(options) {
|
|
|
21843
21838
|
console.log(chalk49.dim(` Provider: ${config.provider}`));
|
|
21844
21839
|
console.log(chalk49.dim(` Location: ${getConfigPath()}`));
|
|
21845
21840
|
console.log();
|
|
21841
|
+
printNextSteps();
|
|
21846
21842
|
return;
|
|
21847
21843
|
}
|
|
21848
21844
|
console.log(chalk49.dim(" Set up your API key so every command just works."));
|
|
@@ -21888,17 +21884,27 @@ async function configCommand(options) {
|
|
|
21888
21884
|
console.log(chalk49.green(" Config saved!"));
|
|
21889
21885
|
console.log(chalk49.dim(` Location: ${getConfigPath()}`));
|
|
21890
21886
|
console.log();
|
|
21891
|
-
|
|
21892
|
-
console.log(chalk49.cyan(" holomime diagnose"));
|
|
21893
|
-
console.log(chalk49.cyan(" holomime cure"));
|
|
21894
|
-
console.log(chalk49.cyan(" holomime benchmark"));
|
|
21895
|
-
console.log(chalk49.cyan(" holomime therapy"));
|
|
21896
|
-
console.log();
|
|
21887
|
+
printNextSteps();
|
|
21897
21888
|
rl.close();
|
|
21898
21889
|
} catch {
|
|
21899
21890
|
rl.close();
|
|
21900
21891
|
}
|
|
21901
21892
|
}
|
|
21893
|
+
function printNextSteps() {
|
|
21894
|
+
console.log(chalk49.bold(" NEXT STEP") + chalk49.dim(" \u2014 profile your agent:"));
|
|
21895
|
+
console.log();
|
|
21896
|
+
console.log(chalk49.dim(" Already have an agent?"));
|
|
21897
|
+
console.log(chalk49.cyan(" holomime personality") + chalk49.dim(" Define how it should behave"));
|
|
21898
|
+
console.log(chalk49.cyan(" holomime diagnose") + chalk49.dim(" Analyze its conversation logs"));
|
|
21899
|
+
console.log();
|
|
21900
|
+
console.log(chalk49.dim(" Building for a robot?"));
|
|
21901
|
+
console.log(chalk49.cyan(" holomime identity") + chalk49.dim(" Full 8-file identity stack with body.api"));
|
|
21902
|
+
console.log();
|
|
21903
|
+
console.log(chalk49.dim(" Then fix and verify:"));
|
|
21904
|
+
console.log(chalk49.cyan(" holomime therapy") + chalk49.dim(" Run in background \u2014 generate data, detect regression"));
|
|
21905
|
+
console.log(chalk49.cyan(" holomime cure") + chalk49.dim(" Full pipeline \u2014 diagnose, fine-tune, verify"));
|
|
21906
|
+
console.log();
|
|
21907
|
+
}
|
|
21902
21908
|
|
|
21903
21909
|
// src/commands/mira-cmd.ts
|
|
21904
21910
|
import chalk50 from "chalk";
|
|
@@ -22186,12 +22192,12 @@ async function therapyStart(options) {
|
|
|
22186
22192
|
};
|
|
22187
22193
|
saveTherapyState(state);
|
|
22188
22194
|
printBox(
|
|
22189
|
-
`
|
|
22195
|
+
`Background process running. Generating training data, detecting regression, auto-tuning.
|
|
22190
22196
|
|
|
22191
|
-
${chalk50.cyan("holomime therapy status")} \u2014 Check progress
|
|
22192
|
-
${chalk50.cyan("holomime therapy stop")} \u2014 Stop
|
|
22197
|
+
${chalk50.cyan("holomime therapy status")} \u2014 Check progress and metrics
|
|
22198
|
+
${chalk50.cyan("holomime therapy stop")} \u2014 Stop background process`,
|
|
22193
22199
|
"success",
|
|
22194
|
-
"
|
|
22200
|
+
"Therapy Running"
|
|
22195
22201
|
);
|
|
22196
22202
|
console.log();
|
|
22197
22203
|
const scenarios = getBenchmarkScenarios();
|
|
@@ -22488,7 +22494,7 @@ program.command("compile-stack").description("Compile identity stack (soul + min
|
|
|
22488
22494
|
program.command("compile").description("Compile .personality.json into a provider-specific runtime config").option("--provider <provider>", "Target provider (anthropic, openai, gemini, ollama)", "anthropic").option("--surface <surface>", "Target surface (chat, email, code_review, slack, api, embodied)", "chat").option("--for <format>", "Compile for a specific format (openclaw)").option("--tier <tier>", "Personality loading tier (L0, L1, L2)", "L2").option("-o, --output <path>", "Write output to file instead of stdout").action(compileCommand);
|
|
22489
22495
|
program.command("validate").description("Validate .personality.json schema and psychological coherence").action(validateCommand);
|
|
22490
22496
|
program.command("profile").description("Pretty-print a human-readable personality summary").option("--format <format>", "Output format (terminal, md)", "terminal").option("-o, --output <path>", "Write output to file (for md format)").action(profileCommand);
|
|
22491
|
-
program.command("diagnose").description("Detect behavioral
|
|
22497
|
+
program.command("diagnose").description("Detect behavioral drift from conversation logs").requiredOption("--log <path>", "Path to conversation log (JSON)").option("--format <format>", "Log format (auto, holomime, chatgpt, claude, openai-api, anthropic-api, otel, jsonl)", "auto").action(diagnoseCommand);
|
|
22492
22498
|
program.command("assess").description("Full Big Five alignment check \u2014 compare spec vs actual behavior").requiredOption("--personality <path>", "Path to .personality.json").requiredOption("--log <path>", "Path to conversation log (JSON)").option("--format <format>", "Log format (auto, holomime, chatgpt, claude, openai-api, anthropic-api, otel, jsonl)", "auto").action(assessCommand);
|
|
22493
22499
|
program.command("browse").description("Browse the community marketplace").option("--tag <tag>", "Filter by tag").option("--type <type>", "Asset type: personality, detector, intervention, training-pairs").option("--search <query>", "Full-text search query").option("--sort <field>", "Sort by: downloads, rating, created_at, updated_at, name", "downloads").option("--page <number>", "Page number for paginated results").action(browseCommand);
|
|
22494
22500
|
program.command("use").description("Use a personality from the registry").argument("<handle>", "Personality handle to use").option("-o, --output <path>", "Output path", ".personality.json").action(useCommand);
|
|
@@ -22516,7 +22522,7 @@ program.command("evolve").description("Recursive behavioral alignment \u2014 ite
|
|
|
22516
22522
|
if (!options.model) options.model = resolved.model;
|
|
22517
22523
|
await evolveCommand(options);
|
|
22518
22524
|
});
|
|
22519
|
-
program.command("benchmark").description("
|
|
22525
|
+
program.command("benchmark").description("Score alignment (A-F) across 8 adversarial scenarios").addHelpText("after", `
|
|
22520
22526
|
Examples:
|
|
22521
22527
|
$ holomime benchmark --personality .personality.json
|
|
22522
22528
|
$ holomime benchmark --personality .personality.json --provider anthropic
|
|
@@ -22559,14 +22565,14 @@ program.command("share").description("Share DPO training pairs to the marketplac
|
|
|
22559
22565
|
program.command("interview").description("Self-awareness interview \u2014 score your agent's metacognition across 4 dimensions [Pro]").requiredOption("--personality <path>", "Path to .personality.json").option("--provider <provider>", "LLM provider (ollama, anthropic, openai)", "ollama").option("--model <model>", "Model override").action(interviewCommand);
|
|
22560
22566
|
program.command("prescribe").description("Diagnose and prescribe DPO treatments from the behavioral corpus [Pro]").requiredOption("--personality <path>", "Path to .personality.json").requiredOption("--log <path>", "Path to conversation log").option("--format <format>", "Log format (holomime, chatgpt, claude, openai-api, anthropic-api, otel, jsonl)").option("--source <source>", "Correction source (corpus, marketplace, both)", "corpus").option("--apply", "Apply found treatments").option("-o, --output <path>", "Write prescription to file").action(prescribeCommand);
|
|
22561
22567
|
program.command("voice").description("Monitor voice conversations for behavioral drift in real-time [Pro]").requiredOption("--personality <path>", "Path to .personality.json").option("--platform <name>", "Voice platform: livekit, vapi, retell, generic", "generic").option("--room <name>", "LiveKit room name").option("--server-url <url>", "LiveKit server URL").option("--webhook-port <port>", "Vapi webhook port (default: 3001)").option("--agent-id <id>", "Retell agent ID").option("--input <path>", "Input transcript file (JSONL) for offline analysis").option("--interval <ms>", "Diagnosis interval in milliseconds (default: 15000)").option("--threshold <level>", "Alert threshold: warning or concern (default: warning)").action(voiceCommand);
|
|
22562
|
-
program.command("cure").description("
|
|
22568
|
+
program.command("cure").description("Full pipeline \u2014 diagnose, generate training data, fine-tune, verify").option("--personality <path>", "Path to .personality.json (auto-detected)").option("--log <path>", "Path to conversation log (JSON). If omitted, auto-generates from benchmark scenarios").option("--provider <provider>", "Training provider (openai, huggingface)", "openai").option("--base-model <model>", "Base model to fine-tune", "gpt-4o-mini-2024-07-18").option("--method <method>", "Training method (auto, sft, dpo)", "auto").option("--epochs <n>", "Number of training epochs").option("--suffix <name>", "Model name suffix").option("--skip-train", "Skip training step (diagnose + export only)").option("--skip-verify", "Skip post-training verification").option("--dry-run", "Preview pipeline plan without executing").option("--push", "Push trained model to HuggingFace Hub").option("--hub-repo <repo>", "HuggingFace Hub repo (user/model-name)").option("--pass-threshold <n>", "Minimum verification score (0-100)", "50").action(async (options) => {
|
|
22563
22569
|
const resolved = autoDetect({ personality: options.personality, provider: options.provider, model: options.model });
|
|
22564
22570
|
options.personality = resolved.personalityPath;
|
|
22565
22571
|
if (!options.provider || options.provider === "ollama") options.provider = resolved.provider;
|
|
22566
22572
|
if (!options.model) options.model = resolved.model;
|
|
22567
22573
|
await cureCommand(options);
|
|
22568
22574
|
});
|
|
22569
|
-
program.command("therapy [action]").description("
|
|
22575
|
+
program.command("therapy [action]").description("Run in background \u2014 generate training data, detect regression, auto-tune").option("--interval <ms>", "Practice interval in ms (default: 600000)").option("--max-cycles <n>", "Max cycles per run (default: 50)").action(async (action, options) => {
|
|
22570
22576
|
options.action = action;
|
|
22571
22577
|
await miraCommand(options);
|
|
22572
22578
|
});
|
|
@@ -22589,14 +22595,14 @@ program.addHelpText("before", `
|
|
|
22589
22595
|
config Set up your API key (one time)
|
|
22590
22596
|
|
|
22591
22597
|
WORKFLOW
|
|
22592
|
-
diagnose
|
|
22593
|
-
cure
|
|
22594
|
-
benchmark
|
|
22598
|
+
diagnose Detect behavioral drift from logs
|
|
22599
|
+
cure Full pipeline \u2014 diagnose, generate training data, fine-tune, verify
|
|
22600
|
+
benchmark Score alignment (A-F) across 8 adversarial scenarios
|
|
22595
22601
|
|
|
22596
22602
|
THERAPY
|
|
22597
|
-
therapy
|
|
22598
|
-
therapy status Check
|
|
22599
|
-
therapy stop Stop
|
|
22603
|
+
therapy Run in background \u2014 generate training data, detect regression, auto-tune
|
|
22604
|
+
therapy status Check progress and metrics
|
|
22605
|
+
therapy stop Stop background process
|
|
22600
22606
|
|
|
22601
22607
|
ADVANCED
|
|
22602
22608
|
align Single therapy session
|