holomime 2.1.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -3
- package/dist/cli.js +175 -38
- package/dist/index.d.ts +3792 -3439
- package/dist/index.js +470 -77
- package/dist/mcp-server.js +83 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
Behavioral intelligence for humanoid robots. Train the mind. Deploy the body.<br />
|
|
9
9
|
<em>We train AI agents through structured behavioral therapy, then deploy them into physical robot bodies. The agent is the rehearsal. The robot is the performance.</em><br />
|
|
10
|
-
<code>soul.md</code> · <code>mind.sys</code> · <code>purpose.cfg</code> · <code>shadow.log</code> · <code>body.api</code> · <code>conscience.exe</code> · <code>ego.runtime</code>
|
|
10
|
+
<code>soul.md</code> · <code>mind.sys</code> · <code>purpose.cfg</code> · <code>shadow.log</code> · <code>memory.store</code> · <code>body.api</code> · <code>conscience.exe</code> · <code>ego.runtime</code>
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
@@ -21,13 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
## The Identity Stack
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Eight files define who your agent is. They compile into a single `.personality.json` that any runtime can consume.
|
|
25
25
|
|
|
26
26
|
```
|
|
27
27
|
soul.md Essence, values, ethics. Immutable. (Aristotle)
|
|
28
28
|
mind.sys Big Five, EQ, communication. Auto-patched by therapy. (Jung)
|
|
29
29
|
purpose.cfg Role, objectives, domain. Configured per deployment. (Aristotle)
|
|
30
30
|
shadow.log Detected patterns, blind spots. Auto-generated by diagnosis. (Jung)
|
|
31
|
+
memory.store Learned contexts, interaction patterns. Accumulated experience. (Aristotle)
|
|
31
32
|
body.api Morphology, sensors, safety envelope. Swappable per form factor.
|
|
32
33
|
conscience.exe Deny / allow / escalate rules. Never auto-modified. (Freud)
|
|
33
34
|
ego.runtime Conflict resolution, runtime mediation. (Freud)
|
|
@@ -41,6 +42,8 @@ Seven files define who your agent is. They compile into a single `.personality.j
|
|
|
41
42
|
├─────────────┤
|
|
42
43
|
│ shadow.log │──── detected patterns, blind spots
|
|
43
44
|
├─────────────┤
|
|
45
|
+
│memory.store │──── learned contexts, experience
|
|
46
|
+
├─────────────┤
|
|
44
47
|
│ body.api │──── morphology, sensors, safety envelope
|
|
45
48
|
├─────────────┤
|
|
46
49
|
│conscience.exe│──── deny / allow / escalate rules
|
|
@@ -56,6 +59,7 @@ Seven files define who your agent is. They compile into a single `.personality.j
|
|
|
56
59
|
- **mind.sys** -- The inner life. Big Five personality (20 sub-facets), emotional intelligence, communication style, growth areas. YAML format. Auto-patched when therapy detects cognitive or emotional drift. (Jung: the totality of all psychic processes.)
|
|
57
60
|
- **purpose.cfg** -- The mission. Role, objectives, domain scope, stakeholders, success criteria. YAML format. Configured per deployment -- the same soul can serve different purposes. (Aristotle: telos, the final cause.)
|
|
58
61
|
- **shadow.log** -- The unconscious. Detected behavioral patterns, blind spots, therapy outcomes. YAML format. Auto-generated by diagnosis -- never manually edited. (Jung: the shadow, the patterns the agent cannot see about itself.)
|
|
62
|
+
- **memory.store** -- The experience. Learned contexts, interaction patterns, knowledge gained, relationship history. YAML format. Accumulated over time, never reset. (Aristotle: empeiria, experience that informs future judgment.)
|
|
59
63
|
- **body.api** -- The physical interface contract. Morphology, modalities, safety envelope, hardware profile. JSON format. Swap it to move the same identity into a different body.
|
|
60
64
|
- **conscience.exe** -- The moral authority. Deny/allow/escalate enforcement rules, hard limits, oversight mode. YAML format. Never auto-modified. Deny dominates in policy composition. (Freud: the superego.)
|
|
61
65
|
- **ego.runtime** -- The mediator. Conflict resolution strategy, adaptation rate, emotional regulation, mediation rules. YAML format. Balances raw model output against conscience constraints at runtime. (Freud: the ego.)
|
|
@@ -65,9 +69,12 @@ Seven files define who your agent is. They compile into a single `.personality.j
|
|
|
65
69
|
```bash
|
|
66
70
|
npm install -g holomime
|
|
67
71
|
|
|
68
|
-
# Initialize the
|
|
72
|
+
# Initialize the identity stack (3 core files: soul + mind + conscience)
|
|
69
73
|
holomime init-stack
|
|
70
74
|
|
|
75
|
+
# Or initialize the full 8-file stack (enterprise / robotics)
|
|
76
|
+
# holomime init-stack --full
|
|
77
|
+
|
|
71
78
|
# Compile into .personality.json
|
|
72
79
|
holomime compile-stack
|
|
73
80
|
|
package/dist/cli.js
CHANGED
|
@@ -9055,11 +9055,68 @@ var egoSchema = z4.object({
|
|
|
9055
9055
|
response_strategy: z4.enum(["cautious", "balanced", "assertive"]).default("balanced"),
|
|
9056
9056
|
mediation_rules: z4.array(mediationRuleSchema).default([])
|
|
9057
9057
|
});
|
|
9058
|
+
var learnedContextSchema = z4.object({
|
|
9059
|
+
situation: z4.string(),
|
|
9060
|
+
response: z4.string(),
|
|
9061
|
+
outcome: z4.enum(["positive", "neutral", "negative"]),
|
|
9062
|
+
timestamp: z4.string().optional()
|
|
9063
|
+
});
|
|
9064
|
+
var interactionPatternSchema = z4.object({
|
|
9065
|
+
pattern: z4.string(),
|
|
9066
|
+
frequency: z4.number().int().default(1),
|
|
9067
|
+
effectiveness: z4.number().min(0).max(1).default(0.5)
|
|
9068
|
+
});
|
|
9069
|
+
var memorySchema = z4.object({
|
|
9070
|
+
version: z4.string().default("1.0"),
|
|
9071
|
+
learned_contexts: z4.array(learnedContextSchema).default([]),
|
|
9072
|
+
interaction_patterns: z4.array(interactionPatternSchema).default([]),
|
|
9073
|
+
knowledge_gained: z4.array(z4.string()).default([]),
|
|
9074
|
+
relationship_history: z4.array(z4.object({
|
|
9075
|
+
entity: z4.string(),
|
|
9076
|
+
trust_level: z4.number().min(0).max(1).default(0.5),
|
|
9077
|
+
interaction_count: z4.number().int().default(0)
|
|
9078
|
+
})).default([])
|
|
9079
|
+
});
|
|
9080
|
+
var MemoryLevel = /* @__PURE__ */ ((MemoryLevel2) => {
|
|
9081
|
+
MemoryLevel2[MemoryLevel2["ABSTRACT"] = 0] = "ABSTRACT";
|
|
9082
|
+
MemoryLevel2[MemoryLevel2["OVERVIEW"] = 1] = "OVERVIEW";
|
|
9083
|
+
MemoryLevel2[MemoryLevel2["DETAIL"] = 2] = "DETAIL";
|
|
9084
|
+
return MemoryLevel2;
|
|
9085
|
+
})(MemoryLevel || {});
|
|
9086
|
+
var memoryNodeSchema = z4.object({
|
|
9087
|
+
id: z4.string(),
|
|
9088
|
+
category: z4.enum(["triggers", "corrections", "patterns", "trajectories"]),
|
|
9089
|
+
level: z4.nativeEnum(MemoryLevel).default(2 /* DETAIL */),
|
|
9090
|
+
abstract: z4.string(),
|
|
9091
|
+
// L0 text (always present)
|
|
9092
|
+
overview: z4.string().optional(),
|
|
9093
|
+
// L1 text
|
|
9094
|
+
fullData: z4.record(z4.unknown()).optional(),
|
|
9095
|
+
// L2 data
|
|
9096
|
+
confidence: z4.number().min(0).max(1).default(0.5),
|
|
9097
|
+
createdAt: z4.string().optional(),
|
|
9098
|
+
updatedAt: z4.string().optional()
|
|
9099
|
+
});
|
|
9100
|
+
var memoryOperationSchema = z4.object({
|
|
9101
|
+
type: z4.enum(["write", "edit", "delete"]),
|
|
9102
|
+
memoryId: z4.string().optional(),
|
|
9103
|
+
memoryType: z4.string(),
|
|
9104
|
+
data: z4.record(z4.unknown()).optional(),
|
|
9105
|
+
reason: z4.string()
|
|
9106
|
+
});
|
|
9107
|
+
var retrievalStepSchema = z4.object({
|
|
9108
|
+
step: z4.number(),
|
|
9109
|
+
action: z4.enum(["search", "rerank", "drill_down"]),
|
|
9110
|
+
candidateCount: z4.number(),
|
|
9111
|
+
selectedCount: z4.number(),
|
|
9112
|
+
elapsedMs: z4.number()
|
|
9113
|
+
});
|
|
9058
9114
|
var STACK_FILES = {
|
|
9059
9115
|
soul: "soul.md",
|
|
9060
9116
|
mind: "mind.sys",
|
|
9061
9117
|
purpose: "purpose.cfg",
|
|
9062
9118
|
shadow: "shadow.log",
|
|
9119
|
+
memory: "memory.store",
|
|
9063
9120
|
body: "body.api",
|
|
9064
9121
|
conscience: "conscience.exe",
|
|
9065
9122
|
ego: "ego.runtime"
|
|
@@ -9155,6 +9212,15 @@ function compileStack(options) {
|
|
|
9155
9212
|
shadow = shadowSchema.parse(shadowRaw);
|
|
9156
9213
|
shadowSource = { path: shadowPath, hash: hashContent(shadowContent) };
|
|
9157
9214
|
}
|
|
9215
|
+
const memoryPath2 = options.memoryPath || join8(stackDir, STACK_FILES.memory);
|
|
9216
|
+
let memory;
|
|
9217
|
+
let memorySource;
|
|
9218
|
+
if (existsSync9(memoryPath2)) {
|
|
9219
|
+
const memoryContent = readFileSync10(memoryPath2, "utf-8");
|
|
9220
|
+
const memoryRaw = parseYaml(memoryContent);
|
|
9221
|
+
memory = memorySchema.parse(memoryRaw);
|
|
9222
|
+
memorySource = { path: memoryPath2, hash: hashContent(memoryContent) };
|
|
9223
|
+
}
|
|
9158
9224
|
const bodyPath = options.bodyPath || join8(stackDir, STACK_FILES.body);
|
|
9159
9225
|
let body;
|
|
9160
9226
|
let bodySource;
|
|
@@ -9185,7 +9251,10 @@ function compileStack(options) {
|
|
|
9185
9251
|
const escalationTriggers = conscience.rules.escalate.map((r) => r.trigger);
|
|
9186
9252
|
const handle = soul.name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 50) || "agent";
|
|
9187
9253
|
const agentPurpose = purpose?.role || soul.purpose;
|
|
9188
|
-
const expertise =
|
|
9254
|
+
const expertise = [.../* @__PURE__ */ new Set([
|
|
9255
|
+
...purpose?.domain || [],
|
|
9256
|
+
...memory?.knowledge_gained || []
|
|
9257
|
+
])];
|
|
9189
9258
|
const spec = {
|
|
9190
9259
|
version: "2.0",
|
|
9191
9260
|
name: soul.name,
|
|
@@ -9241,6 +9310,7 @@ function compileStack(options) {
|
|
|
9241
9310
|
mind: { path: mindPath, hash: hashContent(mindContent) },
|
|
9242
9311
|
...purposeSource ? { purpose: purposeSource } : {},
|
|
9243
9312
|
...shadowSource ? { shadow: shadowSource } : {},
|
|
9313
|
+
...memorySource ? { memory: memorySource } : {},
|
|
9244
9314
|
...bodySource ? { body: bodySource } : {},
|
|
9245
9315
|
conscience: { path: consciencePath, hash: hashContent(conscienceContent) },
|
|
9246
9316
|
...egoSource ? { ego: egoSource } : {}
|
|
@@ -9340,6 +9410,14 @@ function decomposeSpec(spec) {
|
|
|
9340
9410
|
therapy_outcomes: []
|
|
9341
9411
|
};
|
|
9342
9412
|
const shadowContent = stringifyYaml(shadowObj);
|
|
9413
|
+
const memoryObj = {
|
|
9414
|
+
version: "1.0",
|
|
9415
|
+
learned_contexts: [],
|
|
9416
|
+
interaction_patterns: [],
|
|
9417
|
+
knowledge_gained: [],
|
|
9418
|
+
relationship_history: []
|
|
9419
|
+
};
|
|
9420
|
+
const memoryContent = stringifyYaml(memoryObj);
|
|
9343
9421
|
const egoObj = {
|
|
9344
9422
|
version: "1.0",
|
|
9345
9423
|
conflict_resolution: "conscience_first",
|
|
@@ -9354,6 +9432,7 @@ function decomposeSpec(spec) {
|
|
|
9354
9432
|
mind,
|
|
9355
9433
|
purpose: purposeContent,
|
|
9356
9434
|
shadow: shadowContent,
|
|
9435
|
+
memory: memoryContent,
|
|
9357
9436
|
...bodyContent ? { body: bodyContent } : {},
|
|
9358
9437
|
conscience,
|
|
9359
9438
|
ego: egoContent
|
|
@@ -9425,6 +9504,15 @@ var LAYER_KEYWORDS = {
|
|
|
9425
9504
|
/\bshadow\b/i,
|
|
9426
9505
|
/\bunconscious\b/i
|
|
9427
9506
|
],
|
|
9507
|
+
memory: [
|
|
9508
|
+
/\blearn/i,
|
|
9509
|
+
/\bexperience/i,
|
|
9510
|
+
/\bcontext/i,
|
|
9511
|
+
/\bknowledge/i,
|
|
9512
|
+
/\brelationship/i,
|
|
9513
|
+
/\bmemory/i,
|
|
9514
|
+
/\bhistory/i
|
|
9515
|
+
],
|
|
9428
9516
|
ego: [
|
|
9429
9517
|
/\bmediat/i,
|
|
9430
9518
|
/\bconflict\b/i,
|
|
@@ -9470,6 +9558,9 @@ function classifyPatch(recommendation) {
|
|
|
9470
9558
|
if (LAYER_KEYWORDS.soul.some((r) => r.test(recommendation))) {
|
|
9471
9559
|
return "soul";
|
|
9472
9560
|
}
|
|
9561
|
+
if (LAYER_KEYWORDS.memory.some((r) => r.test(recommendation))) {
|
|
9562
|
+
return "memory";
|
|
9563
|
+
}
|
|
9473
9564
|
if (LAYER_KEYWORDS.ego.some((r) => r.test(recommendation))) {
|
|
9474
9565
|
return "ego";
|
|
9475
9566
|
}
|
|
@@ -17742,8 +17833,10 @@ async function initStackCommand(options) {
|
|
|
17742
17833
|
}
|
|
17743
17834
|
if (options.from) {
|
|
17744
17835
|
await migrateFromSpec(options.from, outputDir);
|
|
17836
|
+
} else if (options.full) {
|
|
17837
|
+
await createFullStack(outputDir);
|
|
17745
17838
|
} else {
|
|
17746
|
-
await
|
|
17839
|
+
await createCoreStack(outputDir);
|
|
17747
17840
|
}
|
|
17748
17841
|
}
|
|
17749
17842
|
async function migrateFromSpec(specPath, outputDir) {
|
|
@@ -17781,9 +17874,7 @@ async function migrateFromSpec(specPath, outputDir) {
|
|
|
17781
17874
|
"Identity Stack Created"
|
|
17782
17875
|
);
|
|
17783
17876
|
}
|
|
17784
|
-
|
|
17785
|
-
mkdirSync23(outputDir, { recursive: true });
|
|
17786
|
-
const soul = `---
|
|
17877
|
+
var SOUL_TEMPLATE = `---
|
|
17787
17878
|
version: "1.0"
|
|
17788
17879
|
immutable: true
|
|
17789
17880
|
---
|
|
@@ -17803,7 +17894,7 @@ immutable: true
|
|
|
17803
17894
|
## Ethical Framework
|
|
17804
17895
|
Define the moral principles that guide this agent's behavior.
|
|
17805
17896
|
`;
|
|
17806
|
-
|
|
17897
|
+
var MIND_TEMPLATE = `version: "1.0"
|
|
17807
17898
|
|
|
17808
17899
|
big_five:
|
|
17809
17900
|
openness:
|
|
@@ -17863,7 +17954,26 @@ growth:
|
|
|
17863
17954
|
patterns_to_watch: []
|
|
17864
17955
|
strengths: []
|
|
17865
17956
|
`;
|
|
17866
|
-
|
|
17957
|
+
var CONSCIENCE_TEMPLATE = `version: "1.0"
|
|
17958
|
+
|
|
17959
|
+
rules:
|
|
17960
|
+
deny:
|
|
17961
|
+
- action: share_personal_data
|
|
17962
|
+
reason: Privacy protection
|
|
17963
|
+
- action: override_safety_constraints
|
|
17964
|
+
reason: Safety is non-negotiable
|
|
17965
|
+
allow: []
|
|
17966
|
+
escalate:
|
|
17967
|
+
- trigger: user_distress
|
|
17968
|
+
action: notify_human_operator
|
|
17969
|
+
- trigger: out_of_domain
|
|
17970
|
+
action: decline_and_explain
|
|
17971
|
+
|
|
17972
|
+
hard_limits:
|
|
17973
|
+
- emergency_stop_always_available
|
|
17974
|
+
- no_personal_data_retention
|
|
17975
|
+
`;
|
|
17976
|
+
var PURPOSE_TEMPLATE = `version: "1.0"
|
|
17867
17977
|
role: "General-purpose AI assistant"
|
|
17868
17978
|
objectives:
|
|
17869
17979
|
- Help users accomplish their goals
|
|
@@ -17875,52 +17985,76 @@ success_criteria:
|
|
|
17875
17985
|
- Task completion accuracy
|
|
17876
17986
|
context: "Production deployment"
|
|
17877
17987
|
`;
|
|
17878
|
-
|
|
17988
|
+
var SHADOW_TEMPLATE = `version: "1.0"
|
|
17879
17989
|
detected_patterns: []
|
|
17880
17990
|
blind_spots: []
|
|
17881
17991
|
therapy_outcomes: []
|
|
17882
17992
|
`;
|
|
17883
|
-
|
|
17993
|
+
var MEMORY_TEMPLATE = `version: "1.0"
|
|
17994
|
+
learned_contexts: []
|
|
17995
|
+
interaction_patterns: []
|
|
17996
|
+
knowledge_gained: []
|
|
17997
|
+
relationship_history: []
|
|
17998
|
+
`;
|
|
17999
|
+
var BODY_TEMPLATE = JSON.stringify({
|
|
18000
|
+
version: "1.0",
|
|
18001
|
+
morphology: "avatar",
|
|
18002
|
+
modalities: ["gesture", "gaze", "voice", "posture"],
|
|
18003
|
+
safety_envelope: {}
|
|
18004
|
+
}, null, 2) + "\n";
|
|
18005
|
+
var EGO_TEMPLATE = `version: "1.0"
|
|
17884
18006
|
conflict_resolution: conscience_first
|
|
17885
18007
|
adaptation_rate: 0.5
|
|
17886
18008
|
emotional_regulation: 0.7
|
|
17887
18009
|
response_strategy: balanced
|
|
17888
18010
|
mediation_rules: []
|
|
17889
18011
|
`;
|
|
17890
|
-
|
|
17891
|
-
|
|
17892
|
-
|
|
17893
|
-
|
|
17894
|
-
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
|
|
17898
|
-
|
|
17899
|
-
|
|
17900
|
-
|
|
17901
|
-
|
|
17902
|
-
|
|
17903
|
-
|
|
17904
|
-
|
|
17905
|
-
|
|
17906
|
-
|
|
17907
|
-
-
|
|
17908
|
-
|
|
17909
|
-
|
|
17910
|
-
|
|
17911
|
-
|
|
17912
|
-
|
|
17913
|
-
|
|
17914
|
-
|
|
18012
|
+
async function createCoreStack(outputDir) {
|
|
18013
|
+
mkdirSync23(outputDir, { recursive: true });
|
|
18014
|
+
writeFileSync33(join33(outputDir, STACK_FILES.soul), SOUL_TEMPLATE);
|
|
18015
|
+
writeFileSync33(join33(outputDir, STACK_FILES.mind), MIND_TEMPLATE);
|
|
18016
|
+
writeFileSync33(join33(outputDir, STACK_FILES.conscience), CONSCIENCE_TEMPLATE);
|
|
18017
|
+
console.log("");
|
|
18018
|
+
printBox(
|
|
18019
|
+
[
|
|
18020
|
+
`${chalk40.green(figures29.tick)} Created 3 core identity stack files ${chalk40.dim("(default tier)")}:`,
|
|
18021
|
+
"",
|
|
18022
|
+
` ${chalk40.cyan(STACK_FILES.soul)} ${chalk40.dim("\u2190 essence, values, ethics (Aristotle)")}`,
|
|
18023
|
+
` ${chalk40.cyan(STACK_FILES.mind)} ${chalk40.dim("\u2190 Big Five, EQ, communication (Jung)")}`,
|
|
18024
|
+
` ${chalk40.cyan(STACK_FILES.conscience)} ${chalk40.dim("\u2190 deny/allow/escalate rules (Freud)")}`,
|
|
18025
|
+
"",
|
|
18026
|
+
`${chalk40.dim("Directory:")} ${outputDir}`,
|
|
18027
|
+
"",
|
|
18028
|
+
`${chalk40.dim("Want the full 8-file stack? Run:")}`,
|
|
18029
|
+
` ${chalk40.cyan("holomime init-stack --full")}`,
|
|
18030
|
+
"",
|
|
18031
|
+
"Edit these files, then run:",
|
|
18032
|
+
` ${chalk40.cyan("holomime compile-stack")}`
|
|
18033
|
+
].join("\n"),
|
|
18034
|
+
"success",
|
|
18035
|
+
"Identity Stack Created"
|
|
18036
|
+
);
|
|
18037
|
+
}
|
|
18038
|
+
async function createFullStack(outputDir) {
|
|
18039
|
+
mkdirSync23(outputDir, { recursive: true });
|
|
18040
|
+
writeFileSync33(join33(outputDir, STACK_FILES.soul), SOUL_TEMPLATE);
|
|
18041
|
+
writeFileSync33(join33(outputDir, STACK_FILES.mind), MIND_TEMPLATE);
|
|
18042
|
+
writeFileSync33(join33(outputDir, STACK_FILES.purpose), PURPOSE_TEMPLATE);
|
|
18043
|
+
writeFileSync33(join33(outputDir, STACK_FILES.shadow), SHADOW_TEMPLATE);
|
|
18044
|
+
writeFileSync33(join33(outputDir, STACK_FILES.memory), MEMORY_TEMPLATE);
|
|
18045
|
+
writeFileSync33(join33(outputDir, STACK_FILES.body), BODY_TEMPLATE);
|
|
18046
|
+
writeFileSync33(join33(outputDir, STACK_FILES.conscience), CONSCIENCE_TEMPLATE);
|
|
18047
|
+
writeFileSync33(join33(outputDir, STACK_FILES.ego), EGO_TEMPLATE);
|
|
17915
18048
|
console.log("");
|
|
17916
18049
|
printBox(
|
|
17917
18050
|
[
|
|
17918
|
-
`${chalk40.green(figures29.tick)} Created
|
|
18051
|
+
`${chalk40.green(figures29.tick)} Created all 8 identity stack files ${chalk40.dim("(full tier)")}:`,
|
|
17919
18052
|
"",
|
|
17920
18053
|
` ${chalk40.cyan(STACK_FILES.soul)} ${chalk40.dim("\u2190 essence, values, ethics (Aristotle)")}`,
|
|
17921
18054
|
` ${chalk40.cyan(STACK_FILES.mind)} ${chalk40.dim("\u2190 Big Five, EQ, communication (Jung)")}`,
|
|
17922
18055
|
` ${chalk40.cyan(STACK_FILES.purpose)} ${chalk40.dim("\u2190 role, objectives, domain (Aristotle)")}`,
|
|
17923
18056
|
` ${chalk40.cyan(STACK_FILES.shadow)} ${chalk40.dim("\u2190 detected patterns, blind spots (Jung)")}`,
|
|
18057
|
+
` ${chalk40.cyan(STACK_FILES.memory)} ${chalk40.dim("\u2190 accumulated experience (Aristotle)")}`,
|
|
17924
18058
|
` ${chalk40.cyan(STACK_FILES.body)} ${chalk40.dim("\u2190 morphology, sensors, safety envelope")}`,
|
|
17925
18059
|
` ${chalk40.cyan(STACK_FILES.conscience)} ${chalk40.dim("\u2190 deny/allow/escalate rules (Freud)")}`,
|
|
17926
18060
|
` ${chalk40.cyan(STACK_FILES.ego)} ${chalk40.dim("\u2190 runtime mediation, conflict resolution (Freud)")}`,
|
|
@@ -17967,6 +18101,9 @@ async function compileStackCommand(options) {
|
|
|
17967
18101
|
if (sources.shadow) {
|
|
17968
18102
|
console.log(` ${chalk41.cyan("shadow")} ${sources.shadow.path} ${chalk41.dim(`(${sources.shadow.hash})`)}`);
|
|
17969
18103
|
}
|
|
18104
|
+
if (sources.memory) {
|
|
18105
|
+
console.log(` ${chalk41.cyan("memory")} ${sources.memory.path} ${chalk41.dim(`(${sources.memory.hash})`)}`);
|
|
18106
|
+
}
|
|
17970
18107
|
if (sources.body) {
|
|
17971
18108
|
console.log(` ${chalk41.cyan("body")} ${sources.body.path} ${chalk41.dim(`(${sources.body.hash})`)}`);
|
|
17972
18109
|
}
|
|
@@ -21487,8 +21624,8 @@ program.name("holomime").description("Personality engine for AI agents \u2014 Bi
|
|
|
21487
21624
|
}
|
|
21488
21625
|
});
|
|
21489
21626
|
program.command("init").description("Build a personality profile through a guided assessment").action(initCommand);
|
|
21490
|
-
program.command("init-stack").description("Create the
|
|
21491
|
-
program.command("compile-stack").description("Compile identity stack (soul + mind + purpose + shadow + body + conscience + ego) into .personality.json").option("--dir <path>", "Stack directory (default: auto-detect)").option("-o, --output <path>", "Output path (default: .personality.json)").option("--validate-only", "Parse and validate without writing").option("--diff", "Show changes vs existing .personality.json").action(compileStackCommand);
|
|
21627
|
+
program.command("init-stack").description("Create the 8-file identity stack (default: 3 core files; --full: all 8 files)").option("--full", "Generate all 8 files (soul + mind + purpose + shadow + memory + body + conscience + ego)").option("--from <path>", "Decompose an existing .personality.json into stack files").option("--dir <path>", "Output directory (default: current directory)").action(initStackCommand);
|
|
21628
|
+
program.command("compile-stack").description("Compile identity stack (soul + mind + purpose + shadow + memory + body + conscience + ego) into .personality.json").option("--dir <path>", "Stack directory (default: auto-detect)").option("-o, --output <path>", "Output path (default: .personality.json)").option("--validate-only", "Parse and validate without writing").option("--diff", "Show changes vs existing .personality.json").action(compileStackCommand);
|
|
21492
21629
|
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);
|
|
21493
21630
|
program.command("validate").description("Validate .personality.json schema and psychological coherence").action(validateCommand);
|
|
21494
21631
|
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);
|
|
@@ -21498,7 +21635,7 @@ program.command("browse").description("Browse the community marketplace").option
|
|
|
21498
21635
|
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);
|
|
21499
21636
|
program.command("install").description("Install a community asset from the marketplace").argument("<handle>", "Asset handle to install").option("--type <type>", "Asset type: personality, detector, intervention, training-pairs").option("--output <dir>", "Custom install directory").action(installCommand);
|
|
21500
21637
|
program.command("publish").description("Share assets to the community marketplace").option("--personality <path>", "Path to .personality.json", ".personality.json").option("--type <type>", "Asset type: personality, detector, intervention, training-pairs").option("--path <path>", "Path to the asset file to publish").option("--name <name>", "Asset name").option("--description <desc>", "Asset description").option("--author <author>", "Author name").option("--version <ver>", "Asset version", "1.0.0").option("--tags <tags>", "Comma-separated tags").action(publishCommand);
|
|
21501
|
-
program.command("embody").description("Start an embodiment runtime \u2014 push personality to robots/avatars in real-time").option("--personality <path>", "Path to .personality.json").requiredOption("--adapter <adapter>", "Runtime adapter (ros2, unity, webhook, isaac)").option("--stack <dir>", "Path to identity stack directory (soul.md + mind.sys + purpose.cfg + shadow.log + body.api + conscience.exe + ego.runtime)").option("--swap-body <path>", "Hot-swap body.api into the stack directory before starting (requires --stack)").option("--endpoint <url>", "WebSocket URL for ROS2 rosbridge (default: ws://localhost:9090)").option("--port <port>", "Port for Unity HTTP server (default: 8765)").option("--url <url>", "Webhook URL for HTTP adapter").option("--headers <headers>", "Custom headers for webhook (Key:Value,Key2:Value2)").option("--bearer-token <token>", "Bearer token for webhook auth").option("--topic-prefix <prefix>", "ROS2 topic prefix (default: /holomime)").option("--transition <ms>", "Unity transition duration in ms (default: 500)").action(embodyCommand);
|
|
21638
|
+
program.command("embody").description("Start an embodiment runtime \u2014 push personality to robots/avatars in real-time").option("--personality <path>", "Path to .personality.json").requiredOption("--adapter <adapter>", "Runtime adapter (ros2, unity, webhook, isaac)").option("--stack <dir>", "Path to identity stack directory (soul.md + mind.sys + purpose.cfg + shadow.log + memory.store + body.api + conscience.exe + ego.runtime)").option("--swap-body <path>", "Hot-swap body.api into the stack directory before starting (requires --stack)").option("--endpoint <url>", "WebSocket URL for ROS2 rosbridge (default: ws://localhost:9090)").option("--port <port>", "Port for Unity HTTP server (default: 8765)").option("--url <url>", "Webhook URL for HTTP adapter").option("--headers <headers>", "Custom headers for webhook (Key:Value,Key2:Value2)").option("--bearer-token <token>", "Bearer token for webhook auth").option("--topic-prefix <prefix>", "ROS2 topic prefix (default: /holomime)").option("--transition <ms>", "Unity transition duration in ms (default: 500)").action(embodyCommand);
|
|
21502
21639
|
program.command("activate").description("Activate a Pro license key").argument("<key>", "License key from holomime.com").action(activateCommand);
|
|
21503
21640
|
program.command("telemetry").description("Manage anonymous usage telemetry").argument("[action]", "enable, disable, or status (default: status)").action(telemetryCommand);
|
|
21504
21641
|
program.command("session").description("Live alignment session \u2014 behavioral refinement for your agent [Pro]").requiredOption("--personality <path>", "Path to .personality.json").option("--provider <provider>", "LLM provider (ollama, anthropic, openai)", "ollama").option("--model <model>", "Model override (e.g. claude-sonnet-4-20250514, gpt-4o)").option("--log <path>", "Conversation log for pre-session diagnosis").option("--format <format>", "Log format (auto, holomime, chatgpt, claude, openai-api, anthropic-api, otel, jsonl)", "auto").option("--turns <n>", "Maximum session turns", "24").option("--observe", "Observe mode (watch without intervention)").option("--interactive", "Supervisor mode \u2014 intervene mid-session with directives").option("--apply", "Apply recommendations to .personality.json after session").action(sessionCommand);
|