dot-agents 0.5.0 → 0.6.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 +239 -122
- package/dist/cli/commands/channel.d.ts +19 -0
- package/dist/cli/commands/channel.d.ts.map +1 -1
- package/dist/cli/commands/channel.js +152 -13
- package/dist/cli/commands/channel.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +61 -1
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/personas.d.ts +3 -0
- package/dist/cli/commands/personas.d.ts.map +1 -0
- package/dist/cli/commands/personas.js +402 -0
- package/dist/cli/commands/personas.js.map +1 -0
- package/dist/cli/commands/projects.d.ts +3 -0
- package/dist/cli/commands/projects.d.ts.map +1 -0
- package/dist/cli/commands/projects.js +138 -0
- package/dist/cli/commands/projects.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +4 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.js +3 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/runner.d.ts +2 -0
- package/dist/cli/lib/runner.d.ts.map +1 -1
- package/dist/cli/lib/runner.js +67 -8
- package/dist/cli/lib/runner.js.map +1 -1
- package/dist/daemon/daemon.d.ts +10 -3
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +19 -21
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/lib/executor.d.ts +0 -4
- package/dist/daemon/lib/executor.d.ts.map +1 -1
- package/dist/daemon/lib/executor.js +48 -135
- package/dist/daemon/lib/executor.js.map +1 -1
- package/dist/lib/channel.d.ts +53 -1
- package/dist/lib/channel.d.ts.map +1 -1
- package/dist/lib/channel.js +221 -30
- package/dist/lib/channel.js.map +1 -1
- package/dist/lib/channel.test.d.ts +2 -0
- package/dist/lib/channel.test.d.ts.map +1 -0
- package/dist/lib/channel.test.js +33 -0
- package/dist/lib/channel.test.js.map +1 -0
- package/dist/lib/daemon-status.d.ts +26 -0
- package/dist/lib/daemon-status.d.ts.map +1 -0
- package/dist/lib/daemon-status.js +64 -0
- package/dist/lib/daemon-status.js.map +1 -0
- package/dist/lib/environment.d.ts +87 -0
- package/dist/lib/environment.d.ts.map +1 -0
- package/dist/lib/environment.js +224 -0
- package/dist/lib/environment.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +8 -0
- package/dist/lib/frontmatter.d.ts.map +1 -1
- package/dist/lib/frontmatter.js +16 -3
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/frontmatter.test.d.ts +2 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +60 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +7 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/integration.test.d.ts +2 -0
- package/dist/lib/integration.test.d.ts.map +1 -0
- package/dist/lib/integration.test.js +445 -0
- package/dist/lib/integration.test.js.map +1 -0
- package/dist/lib/invoke.d.ts +23 -0
- package/dist/lib/invoke.d.ts.map +1 -0
- package/dist/lib/invoke.js +158 -0
- package/dist/lib/invoke.js.map +1 -0
- package/dist/lib/invoke.test.d.ts +2 -0
- package/dist/lib/invoke.test.d.ts.map +1 -0
- package/dist/lib/invoke.test.js +82 -0
- package/dist/lib/invoke.test.js.map +1 -0
- package/dist/lib/persona.d.ts +22 -1
- package/dist/lib/persona.d.ts.map +1 -1
- package/dist/lib/persona.js +176 -31
- package/dist/lib/persona.js.map +1 -1
- package/dist/lib/persona.test.d.ts +2 -0
- package/dist/lib/persona.test.d.ts.map +1 -0
- package/dist/lib/persona.test.js +324 -0
- package/dist/lib/persona.test.js.map +1 -0
- package/dist/lib/processor.d.ts +50 -0
- package/dist/lib/processor.d.ts.map +1 -0
- package/dist/lib/processor.js +135 -0
- package/dist/lib/processor.js.map +1 -0
- package/dist/lib/processor.test.d.ts +2 -0
- package/dist/lib/processor.test.d.ts.map +1 -0
- package/dist/lib/processor.test.js +134 -0
- package/dist/lib/processor.test.js.map +1 -0
- package/dist/lib/registry.d.ts +109 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +192 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/registry.test.d.ts +2 -0
- package/dist/lib/registry.test.d.ts.map +1 -0
- package/dist/lib/registry.test.js +236 -0
- package/dist/lib/registry.test.js.map +1 -0
- package/dist/lib/session-thread.d.ts +75 -0
- package/dist/lib/session-thread.d.ts.map +1 -0
- package/dist/lib/session-thread.js +132 -0
- package/dist/lib/session-thread.js.map +1 -0
- package/dist/lib/session-thread.test.d.ts +2 -0
- package/dist/lib/session-thread.test.d.ts.map +1 -0
- package/dist/lib/session-thread.test.js +235 -0
- package/dist/lib/session-thread.test.js.map +1 -0
- package/dist/lib/session.d.ts +150 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +183 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/session.test.d.ts +2 -0
- package/dist/lib/session.test.d.ts.map +1 -0
- package/dist/lib/session.test.js +336 -0
- package/dist/lib/session.test.js.map +1 -0
- package/dist/lib/types/channel.d.ts +4 -0
- package/dist/lib/types/channel.d.ts.map +1 -1
- package/dist/lib/types/persona.d.ts +49 -6
- package/dist/lib/types/persona.d.ts.map +1 -1
- package/internal/personas/_base/PERSONA.md +222 -39
- package/internal/skills/channels/list/SKILL.md +76 -0
- package/package.json +6 -2
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { hostname } from "node:os";
|
|
3
|
+
import { execa } from "execa";
|
|
4
|
+
import { resolvePersona, createExecutionContext, processTemplate, expandVariables, createSession, finalizeSession, } from "./index.js";
|
|
5
|
+
import { getEnvironmentContextMarkdown } from "./environment.js";
|
|
6
|
+
/**
|
|
7
|
+
* Invoke a persona directly with a message (no workflow required)
|
|
8
|
+
*
|
|
9
|
+
* This is the shared implementation used by:
|
|
10
|
+
* - daemon/lib/executor.ts for DM-triggered invocations
|
|
11
|
+
* - lib/processor.ts for one-shot channel processing
|
|
12
|
+
*/
|
|
13
|
+
export async function invokePersona(config, personaName, message, options = {}) {
|
|
14
|
+
const startedAt = new Date();
|
|
15
|
+
const { context: extraContext = {}, source = "dm", goal = `DM invocation: ${personaName}`, timeoutMs = 10 * 60 * 1000, } = options;
|
|
16
|
+
// Resolve persona path - handle root persona specially
|
|
17
|
+
const personaPath = personaName === "root"
|
|
18
|
+
? config.agentsDir
|
|
19
|
+
: join(config.personasDir, personaName);
|
|
20
|
+
const persona = await resolvePersona(personaPath, config.personasDir);
|
|
21
|
+
// Create session for DM invocation
|
|
22
|
+
const session = await createSession({
|
|
23
|
+
sessionsDir: config.sessionsDir,
|
|
24
|
+
runtime: {
|
|
25
|
+
hostname: hostname(),
|
|
26
|
+
executionMode: "headless",
|
|
27
|
+
triggerType: "dm",
|
|
28
|
+
workingDir: config.agentsDir,
|
|
29
|
+
},
|
|
30
|
+
goal,
|
|
31
|
+
persona: {
|
|
32
|
+
name: persona.name,
|
|
33
|
+
inheritanceChain: persona.inheritanceChain,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const context = createExecutionContext({
|
|
37
|
+
PERSONA_NAME: persona.name,
|
|
38
|
+
PERSONA_DIR: persona.path,
|
|
39
|
+
AGENTS_DIR: config.agentsDir,
|
|
40
|
+
SESSION_DIR: session.path,
|
|
41
|
+
INVOCATION_SOURCE: source,
|
|
42
|
+
...extraContext,
|
|
43
|
+
});
|
|
44
|
+
// Merge environment
|
|
45
|
+
// Include FROM_ADDRESS, FROM_CHANNEL, FROM_THREAD from context if provided
|
|
46
|
+
const env = {
|
|
47
|
+
...process.env,
|
|
48
|
+
...persona.env,
|
|
49
|
+
DOT_AGENTS_PERSONA: persona.name,
|
|
50
|
+
DOT_AGENTS_INVOCATION: "dm",
|
|
51
|
+
// Pass session env vars from legacy session
|
|
52
|
+
SESSION_DIR: session.path,
|
|
53
|
+
// Pass callback routing from context (for cross-project delegation)
|
|
54
|
+
...(extraContext.FROM_ADDRESS && { FROM_ADDRESS: extraContext.FROM_ADDRESS }),
|
|
55
|
+
...(extraContext.FROM_CHANNEL && { FROM_CHANNEL: extraContext.FROM_CHANNEL }),
|
|
56
|
+
...(extraContext.FROM_THREAD && { FROM_THREAD: extraContext.FROM_THREAD }),
|
|
57
|
+
};
|
|
58
|
+
for (const [key, value] of Object.entries(env)) {
|
|
59
|
+
if (value) {
|
|
60
|
+
env[key] = expandVariables(value, context, env);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Build prompt: persona prompt + environment context + message
|
|
64
|
+
const parts = [];
|
|
65
|
+
if (persona.prompt) {
|
|
66
|
+
const expandedPrompt = processTemplate(persona.prompt, context, persona.env);
|
|
67
|
+
parts.push(expandedPrompt);
|
|
68
|
+
parts.push("\n---\n");
|
|
69
|
+
}
|
|
70
|
+
// Inject environment discovery context
|
|
71
|
+
const environmentContext = await getEnvironmentContextMarkdown(config);
|
|
72
|
+
parts.push(environmentContext);
|
|
73
|
+
parts.push("\n---\n");
|
|
74
|
+
parts.push(`You received a direct message:\n\n${message}`);
|
|
75
|
+
const prompt = parts.join("\n");
|
|
76
|
+
// Use headless commands for DM-triggered invocations
|
|
77
|
+
const cmds = persona.commands.headless;
|
|
78
|
+
if (!cmds) {
|
|
79
|
+
const endedAt = new Date();
|
|
80
|
+
const result = {
|
|
81
|
+
success: false,
|
|
82
|
+
exitCode: 1,
|
|
83
|
+
stdout: "",
|
|
84
|
+
stderr: `Persona '${persona.name}' does not support headless mode`,
|
|
85
|
+
duration: endedAt.getTime() - startedAt.getTime(),
|
|
86
|
+
runId: context.RUN_ID,
|
|
87
|
+
startedAt,
|
|
88
|
+
endedAt,
|
|
89
|
+
error: "Persona does not support headless mode",
|
|
90
|
+
};
|
|
91
|
+
await finalizeSession(session, {
|
|
92
|
+
success: result.success,
|
|
93
|
+
exitCode: result.exitCode,
|
|
94
|
+
duration: result.duration,
|
|
95
|
+
error: result.error,
|
|
96
|
+
stderr: result.stderr,
|
|
97
|
+
});
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
// Try each command
|
|
101
|
+
let lastError = null;
|
|
102
|
+
let result = null;
|
|
103
|
+
for (const cmd of cmds) {
|
|
104
|
+
try {
|
|
105
|
+
const expandedCmd = expandVariables(cmd, context, env);
|
|
106
|
+
const [command, ...args] = expandedCmd.split(/\s+/);
|
|
107
|
+
const execResult = await execa(command, args, {
|
|
108
|
+
input: prompt,
|
|
109
|
+
cwd: config.agentsDir,
|
|
110
|
+
env,
|
|
111
|
+
timeout: timeoutMs,
|
|
112
|
+
reject: false,
|
|
113
|
+
});
|
|
114
|
+
const endedAt = new Date();
|
|
115
|
+
result = {
|
|
116
|
+
success: execResult.exitCode === 0,
|
|
117
|
+
exitCode: execResult.exitCode ?? 1,
|
|
118
|
+
stdout: execResult.stdout,
|
|
119
|
+
stderr: execResult.stderr,
|
|
120
|
+
duration: endedAt.getTime() - startedAt.getTime(),
|
|
121
|
+
runId: context.RUN_ID,
|
|
122
|
+
startedAt,
|
|
123
|
+
endedAt,
|
|
124
|
+
};
|
|
125
|
+
if (result.success)
|
|
126
|
+
break;
|
|
127
|
+
lastError = new Error(`Command failed with exit code ${result.exitCode}: ${execResult.stderr}`);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
lastError = error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!result) {
|
|
134
|
+
const endedAt = new Date();
|
|
135
|
+
result = {
|
|
136
|
+
success: false,
|
|
137
|
+
exitCode: 1,
|
|
138
|
+
stdout: "",
|
|
139
|
+
stderr: lastError?.message ?? "All commands failed",
|
|
140
|
+
duration: endedAt.getTime() - startedAt.getTime(),
|
|
141
|
+
runId: context.RUN_ID,
|
|
142
|
+
startedAt,
|
|
143
|
+
endedAt,
|
|
144
|
+
error: lastError?.message,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
// Finalize session
|
|
148
|
+
await finalizeSession(session, {
|
|
149
|
+
success: result.success,
|
|
150
|
+
exitCode: result.exitCode,
|
|
151
|
+
duration: result.duration,
|
|
152
|
+
error: result.error,
|
|
153
|
+
stdout: result.stdout,
|
|
154
|
+
stderr: result.stderr,
|
|
155
|
+
});
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=invoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/lib/invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.test.d.ts","sourceRoot":"","sources":["../../src/lib/invoke.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Tests for invokePersona root persona handling
|
|
6
|
+
*
|
|
7
|
+
* The invokePersona function has special logic for the "root" persona:
|
|
8
|
+
* - For "root": uses config.agentsDir as the persona path
|
|
9
|
+
* - For other personas: uses config.personasDir/name as the persona path
|
|
10
|
+
*
|
|
11
|
+
* This mirrors the logic from invoke.ts:51-53
|
|
12
|
+
*/
|
|
13
|
+
// Inline the persona path resolution logic for testing
|
|
14
|
+
function resolvePersonaPath(personaName, agentsDir, personasDir) {
|
|
15
|
+
// Root persona lives at agentsDir, not personasDir/root
|
|
16
|
+
if (personaName === "root") {
|
|
17
|
+
return agentsDir;
|
|
18
|
+
}
|
|
19
|
+
return join(personasDir, personaName);
|
|
20
|
+
}
|
|
21
|
+
describe("invokePersona path resolution", () => {
|
|
22
|
+
const agentsDir = "/project/.agents";
|
|
23
|
+
const personasDir = "/project/.agents/personas";
|
|
24
|
+
describe("root persona handling", () => {
|
|
25
|
+
it("resolves 'root' persona to agentsDir (not personasDir/root)", () => {
|
|
26
|
+
const path = resolvePersonaPath("root", agentsDir, personasDir);
|
|
27
|
+
assert.strictEqual(path, "/project/.agents");
|
|
28
|
+
});
|
|
29
|
+
it("does NOT resolve 'root' to personasDir/root", () => {
|
|
30
|
+
const path = resolvePersonaPath("root", agentsDir, personasDir);
|
|
31
|
+
assert.notStrictEqual(path, "/project/.agents/personas/root");
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe("named persona handling", () => {
|
|
35
|
+
it("resolves 'developer' to personasDir/developer", () => {
|
|
36
|
+
const path = resolvePersonaPath("developer", agentsDir, personasDir);
|
|
37
|
+
assert.strictEqual(path, "/project/.agents/personas/developer");
|
|
38
|
+
});
|
|
39
|
+
it("resolves 'reviewer' to personasDir/reviewer", () => {
|
|
40
|
+
const path = resolvePersonaPath("reviewer", agentsDir, personasDir);
|
|
41
|
+
assert.strictEqual(path, "/project/.agents/personas/reviewer");
|
|
42
|
+
});
|
|
43
|
+
it("handles hyphenated persona names", () => {
|
|
44
|
+
const path = resolvePersonaPath("code-reviewer", agentsDir, personasDir);
|
|
45
|
+
assert.strictEqual(path, "/project/.agents/personas/code-reviewer");
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe("edge cases", () => {
|
|
49
|
+
it("paths with trailing slashes work correctly", () => {
|
|
50
|
+
// Ensure join handles this gracefully
|
|
51
|
+
const path = resolvePersonaPath("developer", "/project/.agents/", "/project/.agents/personas/");
|
|
52
|
+
assert.ok(path.includes("personas"));
|
|
53
|
+
assert.ok(path.includes("developer"));
|
|
54
|
+
});
|
|
55
|
+
it("root persona at different project locations", () => {
|
|
56
|
+
// Different project structures should work
|
|
57
|
+
const customAgentsDir = "/home/user/myproject/custom-agents";
|
|
58
|
+
const customPersonasDir = "/home/user/myproject/custom-agents/personas";
|
|
59
|
+
const rootPath = resolvePersonaPath("root", customAgentsDir, customPersonasDir);
|
|
60
|
+
assert.strictEqual(rootPath, "/home/user/myproject/custom-agents");
|
|
61
|
+
const devPath = resolvePersonaPath("developer", customAgentsDir, customPersonasDir);
|
|
62
|
+
assert.strictEqual(devPath, "/home/user/myproject/custom-agents/personas/developer");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe("invokePersona channel-to-persona mapping", () => {
|
|
67
|
+
/**
|
|
68
|
+
* When a DM channel like @root is processed, the processor extracts the
|
|
69
|
+
* persona name by removing the @ prefix. This ensures the mapping is correct.
|
|
70
|
+
*/
|
|
71
|
+
it("@root channel maps to 'root' persona name", () => {
|
|
72
|
+
const channel = "@root";
|
|
73
|
+
const personaName = channel.slice(1);
|
|
74
|
+
assert.strictEqual(personaName, "root");
|
|
75
|
+
});
|
|
76
|
+
it("@developer channel maps to 'developer' persona name", () => {
|
|
77
|
+
const channel = "@developer";
|
|
78
|
+
const personaName = channel.slice(1);
|
|
79
|
+
assert.strictEqual(personaName, "developer");
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=invoke.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.test.js","sourceRoot":"","sources":["../../src/lib/invoke.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/persona.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export declare function getInternalSkillsPath(): string;
|
|
|
17
17
|
* Resolve cmd field to ResolvedCommands structure
|
|
18
18
|
*/
|
|
19
19
|
export declare function resolveCommands(cmd: CommandSpec | CommandModes | undefined): ResolvedCommands;
|
|
20
|
+
/**
|
|
21
|
+
* Check if a directory contains a PERSONA.md file
|
|
22
|
+
*/
|
|
23
|
+
declare function hasPersonaFile(dirPath: string): Promise<boolean>;
|
|
20
24
|
/**
|
|
21
25
|
* Load a single persona file
|
|
22
26
|
*/
|
|
@@ -26,6 +30,18 @@ export declare function loadPersona(personaPath: string): Promise<Persona>;
|
|
|
26
30
|
* Returns null if not found (graceful degradation)
|
|
27
31
|
*/
|
|
28
32
|
export declare function loadInternalBase(): Promise<Persona | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Load the project's _project persona if it exists
|
|
35
|
+
* Returns null if not found (graceful degradation)
|
|
36
|
+
* @deprecated Use loadRootPersona() instead
|
|
37
|
+
*/
|
|
38
|
+
export declare function loadProjectBase(personasRoot: string): Promise<Persona | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Load the root persona from .agents/PERSONA.md if it exists
|
|
41
|
+
* Falls back to _project for backwards compatibility
|
|
42
|
+
* Returns null if neither found
|
|
43
|
+
*/
|
|
44
|
+
export declare function loadRootPersona(agentsRoot: string): Promise<Persona | null>;
|
|
29
45
|
/**
|
|
30
46
|
* Build the inheritance chain for a persona path
|
|
31
47
|
* Returns paths from root to leaf (e.g., ["claude", "claude/autonomous"])
|
|
@@ -44,9 +60,14 @@ export declare function deepMerge<T extends Record<string, unknown>>(parent: T,
|
|
|
44
60
|
* Merge two personas (child inherits from parent)
|
|
45
61
|
*/
|
|
46
62
|
export declare function mergePersonas(parent: Persona, child: Persona): Persona;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a directory contains a PERSONA.md file (exported for use in resolvePersona)
|
|
65
|
+
*/
|
|
66
|
+
export { hasPersonaFile };
|
|
47
67
|
/**
|
|
48
68
|
* Resolve a persona with full inheritance chain
|
|
49
|
-
*
|
|
69
|
+
* Uses directory-based inheritance: child inherits from parent directories
|
|
70
|
+
* Includes implicit inheritance from internal _base persona and root persona
|
|
50
71
|
*/
|
|
51
72
|
export declare function resolvePersona(personaPath: string, personasRoot: string): Promise<ResolvedPersona>;
|
|
52
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/lib/persona.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/lib/persona.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAM5B;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAsBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,gBAAgB,CA0B7F;AAED;;GAEG;AACH,iBAAe,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AA6ED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBvE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAOhE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAMnF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAkBjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,CAaV;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,EAAE,CAkBV;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAChB,CAAC,CA4BH;AAYD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAkBtE;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAmF1B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB1E"}
|
package/dist/lib/persona.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { readdir, stat } from "node:fs/promises";
|
|
1
|
+
import { readdir, stat, readFile } from "node:fs/promises";
|
|
2
2
|
import { join, dirname, relative } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { loadMarkdownFile } from "./frontmatter.js";
|
|
5
5
|
const PERSONA_FILENAME = "PERSONA.md";
|
|
6
|
+
const MCP_FILENAME = "mcp.json";
|
|
7
|
+
const HOOKS_FILENAME = "hooks.json";
|
|
6
8
|
/**
|
|
7
9
|
* Get the path to internal personas bundled with the package.
|
|
8
10
|
* Resolves relative to this module's location.
|
|
@@ -88,6 +90,73 @@ async function hasPersonaFile(dirPath) {
|
|
|
88
90
|
return false;
|
|
89
91
|
}
|
|
90
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Load mcp.json from a persona directory if it exists
|
|
95
|
+
*/
|
|
96
|
+
async function loadMcpConfig(personaPath) {
|
|
97
|
+
try {
|
|
98
|
+
const filePath = join(personaPath, MCP_FILENAME);
|
|
99
|
+
const content = await readFile(filePath, "utf-8");
|
|
100
|
+
return JSON.parse(content);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Merge MCP configs (child overrides parent for same server name)
|
|
108
|
+
*/
|
|
109
|
+
function mergeMcpConfigs(parent, child) {
|
|
110
|
+
if (!parent && !child)
|
|
111
|
+
return null;
|
|
112
|
+
if (!parent)
|
|
113
|
+
return child;
|
|
114
|
+
if (!child)
|
|
115
|
+
return parent;
|
|
116
|
+
return {
|
|
117
|
+
mcpServers: {
|
|
118
|
+
...parent.mcpServers,
|
|
119
|
+
...child.mcpServers,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Load hooks.json from a persona directory if it exists
|
|
125
|
+
*/
|
|
126
|
+
async function loadHooksConfig(personaPath) {
|
|
127
|
+
try {
|
|
128
|
+
const filePath = join(personaPath, HOOKS_FILENAME);
|
|
129
|
+
const content = await readFile(filePath, "utf-8");
|
|
130
|
+
return JSON.parse(content);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Merge hooks configs (child hooks are appended to parent hooks for each event)
|
|
138
|
+
*/
|
|
139
|
+
function mergeHooksConfigs(parent, child) {
|
|
140
|
+
if (!parent && !child)
|
|
141
|
+
return null;
|
|
142
|
+
if (!parent)
|
|
143
|
+
return child;
|
|
144
|
+
if (!child)
|
|
145
|
+
return parent;
|
|
146
|
+
const merged = {};
|
|
147
|
+
// Get all hook event types from both configs
|
|
148
|
+
const allEvents = new Set([
|
|
149
|
+
...Object.keys(parent),
|
|
150
|
+
...Object.keys(child),
|
|
151
|
+
]);
|
|
152
|
+
for (const event of allEvents) {
|
|
153
|
+
const parentHooks = parent[event] ?? [];
|
|
154
|
+
const childHooks = child[event] ?? [];
|
|
155
|
+
// Child hooks are appended (run after parent hooks)
|
|
156
|
+
merged[event] = [...parentHooks, ...childHooks];
|
|
157
|
+
}
|
|
158
|
+
return merged;
|
|
159
|
+
}
|
|
91
160
|
/**
|
|
92
161
|
* Load a single persona file
|
|
93
162
|
*/
|
|
@@ -118,6 +187,40 @@ export async function loadInternalBase() {
|
|
|
118
187
|
}
|
|
119
188
|
return null;
|
|
120
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Load the project's _project persona if it exists
|
|
192
|
+
* Returns null if not found (graceful degradation)
|
|
193
|
+
* @deprecated Use loadRootPersona() instead
|
|
194
|
+
*/
|
|
195
|
+
export async function loadProjectBase(personasRoot) {
|
|
196
|
+
const projectPath = join(personasRoot, "_project");
|
|
197
|
+
if (await hasPersonaFile(projectPath)) {
|
|
198
|
+
return await loadPersona(projectPath);
|
|
199
|
+
}
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Load the root persona from .agents/PERSONA.md if it exists
|
|
204
|
+
* Falls back to _project for backwards compatibility
|
|
205
|
+
* Returns null if neither found
|
|
206
|
+
*/
|
|
207
|
+
export async function loadRootPersona(agentsRoot) {
|
|
208
|
+
// First try .agents/PERSONA.md (new pattern)
|
|
209
|
+
const rootPath = agentsRoot;
|
|
210
|
+
if (await hasPersonaFile(rootPath)) {
|
|
211
|
+
const persona = await loadPersona(rootPath);
|
|
212
|
+
// Override name to 'root' for consistency
|
|
213
|
+
return { ...persona, name: "root" };
|
|
214
|
+
}
|
|
215
|
+
// Fall back to .agents/personas/_project (legacy pattern)
|
|
216
|
+
const personasRoot = join(agentsRoot, "personas");
|
|
217
|
+
const projectPath = join(personasRoot, "_project");
|
|
218
|
+
if (await hasPersonaFile(projectPath)) {
|
|
219
|
+
const persona = await loadPersona(projectPath);
|
|
220
|
+
return persona;
|
|
221
|
+
}
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
121
224
|
/**
|
|
122
225
|
* Build the inheritance chain for a persona path
|
|
123
226
|
* Returns paths from root to leaf (e.g., ["claude", "claude/autonomous"])
|
|
@@ -180,6 +283,18 @@ export function deepMerge(parent, child) {
|
|
|
180
283
|
}
|
|
181
284
|
return result;
|
|
182
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* Combine prompts from parent and child with separator
|
|
288
|
+
*/
|
|
289
|
+
function combinePrompts(parent, child) {
|
|
290
|
+
if (!parent && !child)
|
|
291
|
+
return undefined;
|
|
292
|
+
if (!parent)
|
|
293
|
+
return child;
|
|
294
|
+
if (!child)
|
|
295
|
+
return parent;
|
|
296
|
+
return parent + "\n\n---\n\n" + child;
|
|
297
|
+
}
|
|
183
298
|
/**
|
|
184
299
|
* Merge two personas (child inherits from parent)
|
|
185
300
|
*/
|
|
@@ -195,47 +310,75 @@ export function mergePersonas(parent, child) {
|
|
|
195
310
|
env: deepMerge(parent.env ?? {}, child.env ?? {}),
|
|
196
311
|
// Arrays: merge with negation
|
|
197
312
|
skills: mergeArraysWithNegation(parent.skills ?? [], child.skills ?? []),
|
|
198
|
-
// Prompt:
|
|
199
|
-
prompt:
|
|
313
|
+
// Prompt: combine parent and child prompts
|
|
314
|
+
prompt: combinePrompts(parent.prompt, child.prompt),
|
|
200
315
|
};
|
|
201
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Check if a directory contains a PERSONA.md file (exported for use in resolvePersona)
|
|
319
|
+
*/
|
|
320
|
+
export { hasPersonaFile };
|
|
202
321
|
/**
|
|
203
322
|
* Resolve a persona with full inheritance chain
|
|
204
|
-
*
|
|
323
|
+
* Uses directory-based inheritance: child inherits from parent directories
|
|
324
|
+
* Includes implicit inheritance from internal _base persona and root persona
|
|
205
325
|
*/
|
|
206
326
|
export async function resolvePersona(personaPath, personasRoot) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
327
|
+
// Load the target persona
|
|
328
|
+
if (!(await hasPersonaFile(personaPath))) {
|
|
329
|
+
throw new Error(`No persona found at path: ${personaPath}`);
|
|
330
|
+
}
|
|
331
|
+
// Build directory-based inheritance chain (parent directories first)
|
|
332
|
+
const directoryChain = buildInheritanceChain(personaPath, personasRoot);
|
|
333
|
+
// Load personas from each directory in the chain (if they have PERSONA.md)
|
|
334
|
+
const personaChain = [];
|
|
335
|
+
for (const dirPath of directoryChain) {
|
|
336
|
+
if (await hasPersonaFile(dirPath)) {
|
|
337
|
+
const persona = await loadPersona(dirPath);
|
|
338
|
+
personaChain.push(persona);
|
|
220
339
|
}
|
|
221
340
|
}
|
|
222
|
-
|
|
341
|
+
// Must have at least the target persona
|
|
342
|
+
if (personaChain.length === 0) {
|
|
223
343
|
throw new Error(`No persona found at path: ${personaPath}`);
|
|
224
344
|
}
|
|
225
|
-
//
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
345
|
+
// Merge personas from root to leaf
|
|
346
|
+
let resolved = personaChain[0];
|
|
347
|
+
for (let i = 1; i < personaChain.length; i++) {
|
|
348
|
+
resolved = mergePersonas(resolved, personaChain[i]);
|
|
349
|
+
}
|
|
350
|
+
// Build inheritance chain paths
|
|
351
|
+
const inheritanceChain = personaChain.map((p) => p.path);
|
|
352
|
+
// Load and merge MCP configs from inheritance chain
|
|
353
|
+
let mcpConfig = null;
|
|
354
|
+
for (const persona of personaChain) {
|
|
355
|
+
const personaMcp = await loadMcpConfig(persona.path);
|
|
356
|
+
mcpConfig = mergeMcpConfigs(mcpConfig, personaMcp);
|
|
357
|
+
}
|
|
358
|
+
// Load and merge hooks configs from inheritance chain
|
|
359
|
+
let hooksConfig = null;
|
|
360
|
+
for (const persona of personaChain) {
|
|
361
|
+
const personaHooks = await loadHooksConfig(persona.path);
|
|
362
|
+
hooksConfig = mergeHooksConfigs(hooksConfig, personaHooks);
|
|
363
|
+
}
|
|
230
364
|
let finalPrompt = resolved.prompt;
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
365
|
+
// Auto-inherit root persona (project conventions) - prepended after _base
|
|
366
|
+
// Supports both new pattern (.agents/PERSONA.md) and legacy (_project)
|
|
367
|
+
const agentsRoot = dirname(personasRoot);
|
|
368
|
+
const rootPersonaConfig = await loadRootPersona(agentsRoot);
|
|
369
|
+
if (rootPersonaConfig?.prompt) {
|
|
370
|
+
// Prepend root prompt with separator
|
|
371
|
+
finalPrompt = rootPersonaConfig.prompt + (finalPrompt ? "\n\n---\n\n" + finalPrompt : "");
|
|
372
|
+
// Add root to the start of inheritance chain
|
|
373
|
+
inheritanceChain.unshift(rootPersonaConfig.path);
|
|
374
|
+
}
|
|
375
|
+
// Auto-inherit _base (dot-agents system knowledge) - prepended first
|
|
376
|
+
const base = await loadInternalBase();
|
|
377
|
+
if (base?.prompt) {
|
|
378
|
+
// Prepend base prompt with separator
|
|
379
|
+
finalPrompt = base.prompt + (finalPrompt ? "\n\n---\n\n" + finalPrompt : "");
|
|
380
|
+
// Add base to the start of inheritance chain
|
|
381
|
+
inheritanceChain.unshift(base.path);
|
|
239
382
|
}
|
|
240
383
|
// Resolve commands to normalized structure
|
|
241
384
|
const commands = resolveCommands(resolved.cmd);
|
|
@@ -248,6 +391,8 @@ export async function resolvePersona(personaPath, personasRoot) {
|
|
|
248
391
|
prompt: finalPrompt,
|
|
249
392
|
path: resolved.path,
|
|
250
393
|
inheritanceChain,
|
|
394
|
+
mcpConfig: mcpConfig ?? undefined,
|
|
395
|
+
hooksConfig: hooksConfig ?? undefined,
|
|
251
396
|
};
|
|
252
397
|
}
|
|
253
398
|
/**
|
package/dist/lib/persona.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../src/lib/persona.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../src/lib/persona.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.test.d.ts","sourceRoot":"","sources":["../../src/lib/persona.test.ts"],"names":[],"mappings":""}
|