dot-agents 0.4.1 → 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 +5 -12
- 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 +102 -25
- package/dist/cli/lib/runner.js.map +1 -1
- package/dist/daemon/api/server.d.ts.map +1 -1
- package/dist/daemon/api/server.js +4 -2
- package/dist/daemon/api/server.js.map +1 -1
- package/dist/daemon/daemon.d.ts +12 -3
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +138 -35
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/lib/executor.d.ts +12 -2
- package/dist/daemon/lib/executor.d.ts.map +1 -1
- package/dist/daemon/lib/executor.js +52 -34
- package/dist/daemon/lib/executor.js.map +1 -1
- package/dist/daemon/lib/watcher.d.ts +14 -2
- package/dist/daemon/lib/watcher.d.ts.map +1 -1
- package/dist/daemon/lib/watcher.js +43 -3
- package/dist/daemon/lib/watcher.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 +8 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +8 -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 +41 -0
- package/dist/lib/persona.d.ts.map +1 -1
- package/dist/lib/persona.js +233 -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 +51 -0
- package/dist/lib/types/persona.d.ts.map +1 -1
- package/dist/lib/types/triggers.d.ts +11 -0
- package/dist/lib/types/triggers.d.ts.map +1 -1
- package/dist/lib/version.d.ts +26 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +61 -0
- package/dist/lib/version.js.map +1 -0
- package/internal/personas/_base/PERSONA.md +251 -0
- package/internal/skills/channels/list/SKILL.md +76 -0
- package/internal/skills/channels/publish/SKILL.md +129 -0
- package/internal/skills/channels/read/SKILL.md +124 -0
- package/internal/skills/channels/reply/SKILL.md +138 -0
- package/package.json +7 -2
|
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;;GAQG;AAEH,uDAAuD;AACvD,SAAS,kBAAkB,CACzB,WAAmB,EACnB,SAAiB,EACjB,WAAmB;IAEnB,wDAAwD;IACxD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACrC,MAAM,WAAW,GAAG,2BAA2B,CAAC;IAEhD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACrE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACpE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,oCAAoC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,kBAAkB,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACzE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,yCAAyC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,sCAAsC;YACtC,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;YAChG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,2CAA2C;YAC3C,MAAM,eAAe,GAAG,oCAAoC,CAAC;YAC7D,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;YAExE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;YAChF,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;YAEnE,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;YACpF,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,uDAAuD,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD;;;OAGG;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC;QACxB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG,YAAY,CAAC;QAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/lib/persona.d.ts
CHANGED
|
@@ -1,12 +1,47 @@
|
|
|
1
1
|
import type { Persona, ResolvedPersona, ResolvedCommands, CommandSpec, CommandModes } from "./types/persona.js";
|
|
2
|
+
/**
|
|
3
|
+
* Get the path to internal personas bundled with the package.
|
|
4
|
+
* Resolves relative to this module's location.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getInternalPersonasPath(): string;
|
|
7
|
+
/**
|
|
8
|
+
* Get the path to the internal _base persona
|
|
9
|
+
*/
|
|
10
|
+
export declare function getInternalBasePath(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Get the path to internal skills bundled with the package.
|
|
13
|
+
* Resolves relative to this module's location.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getInternalSkillsPath(): string;
|
|
2
16
|
/**
|
|
3
17
|
* Resolve cmd field to ResolvedCommands structure
|
|
4
18
|
*/
|
|
5
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>;
|
|
6
24
|
/**
|
|
7
25
|
* Load a single persona file
|
|
8
26
|
*/
|
|
9
27
|
export declare function loadPersona(personaPath: string): Promise<Persona>;
|
|
28
|
+
/**
|
|
29
|
+
* Load the internal _base persona if it exists
|
|
30
|
+
* Returns null if not found (graceful degradation)
|
|
31
|
+
*/
|
|
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>;
|
|
10
45
|
/**
|
|
11
46
|
* Build the inheritance chain for a persona path
|
|
12
47
|
* Returns paths from root to leaf (e.g., ["claude", "claude/autonomous"])
|
|
@@ -25,8 +60,14 @@ export declare function deepMerge<T extends Record<string, unknown>>(parent: T,
|
|
|
25
60
|
* Merge two personas (child inherits from parent)
|
|
26
61
|
*/
|
|
27
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 };
|
|
28
67
|
/**
|
|
29
68
|
* Resolve a persona with full inheritance chain
|
|
69
|
+
* Uses directory-based inheritance: child inherits from parent directories
|
|
70
|
+
* Includes implicit inheritance from internal _base persona and root persona
|
|
30
71
|
*/
|
|
31
72
|
export declare function resolvePersona(personaPath: string, personasRoot: string): Promise<ResolvedPersona>;
|
|
32
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/lib/persona.ts"],"names":[],"mappings":"
|
|
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,7 +1,38 @@
|
|
|
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
|
+
import { fileURLToPath } from "node:url";
|
|
3
4
|
import { loadMarkdownFile } from "./frontmatter.js";
|
|
4
5
|
const PERSONA_FILENAME = "PERSONA.md";
|
|
6
|
+
const MCP_FILENAME = "mcp.json";
|
|
7
|
+
const HOOKS_FILENAME = "hooks.json";
|
|
8
|
+
/**
|
|
9
|
+
* Get the path to internal personas bundled with the package.
|
|
10
|
+
* Resolves relative to this module's location.
|
|
11
|
+
*/
|
|
12
|
+
export function getInternalPersonasPath() {
|
|
13
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
14
|
+
const libDir = dirname(currentFile);
|
|
15
|
+
// From dist/lib or src/lib -> root -> internal/personas
|
|
16
|
+
const packageRoot = dirname(dirname(libDir));
|
|
17
|
+
return join(packageRoot, "internal", "personas");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get the path to the internal _base persona
|
|
21
|
+
*/
|
|
22
|
+
export function getInternalBasePath() {
|
|
23
|
+
return join(getInternalPersonasPath(), "_base");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the path to internal skills bundled with the package.
|
|
27
|
+
* Resolves relative to this module's location.
|
|
28
|
+
*/
|
|
29
|
+
export function getInternalSkillsPath() {
|
|
30
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
31
|
+
const libDir = dirname(currentFile);
|
|
32
|
+
// From dist/lib or src/lib -> root -> internal/skills
|
|
33
|
+
const packageRoot = dirname(dirname(libDir));
|
|
34
|
+
return join(packageRoot, "internal", "skills");
|
|
35
|
+
}
|
|
5
36
|
/**
|
|
6
37
|
* Normalize a CommandSpec to string array
|
|
7
38
|
*/
|
|
@@ -46,6 +77,86 @@ export function resolveCommands(cmd) {
|
|
|
46
77
|
interactive: undefined,
|
|
47
78
|
};
|
|
48
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if a directory contains a PERSONA.md file
|
|
82
|
+
*/
|
|
83
|
+
async function hasPersonaFile(dirPath) {
|
|
84
|
+
try {
|
|
85
|
+
const filePath = join(dirPath, PERSONA_FILENAME);
|
|
86
|
+
const stats = await stat(filePath);
|
|
87
|
+
return stats.isFile();
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
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
|
+
}
|
|
49
160
|
/**
|
|
50
161
|
* Load a single persona file
|
|
51
162
|
*/
|
|
@@ -64,6 +175,52 @@ export async function loadPersona(personaPath) {
|
|
|
64
175
|
prompt: body || undefined,
|
|
65
176
|
};
|
|
66
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Load the internal _base persona if it exists
|
|
180
|
+
* Returns null if not found (graceful degradation)
|
|
181
|
+
*/
|
|
182
|
+
export async function loadInternalBase() {
|
|
183
|
+
const basePath = getInternalBasePath();
|
|
184
|
+
if (await hasPersonaFile(basePath)) {
|
|
185
|
+
const persona = await loadPersona(basePath);
|
|
186
|
+
return { ...persona, internal: true };
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
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
|
+
}
|
|
67
224
|
/**
|
|
68
225
|
* Build the inheritance chain for a persona path
|
|
69
226
|
* Returns paths from root to leaf (e.g., ["claude", "claude/autonomous"])
|
|
@@ -79,19 +236,6 @@ export function buildInheritanceChain(personaPath, personasRoot) {
|
|
|
79
236
|
}
|
|
80
237
|
return chain;
|
|
81
238
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Check if a directory contains a PERSONA.md file
|
|
84
|
-
*/
|
|
85
|
-
async function hasPersonaFile(dirPath) {
|
|
86
|
-
try {
|
|
87
|
-
const filePath = join(dirPath, PERSONA_FILENAME);
|
|
88
|
-
const stats = await stat(filePath);
|
|
89
|
-
return stats.isFile();
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
239
|
/**
|
|
96
240
|
* Merge arrays with gitignore-style negation support
|
|
97
241
|
* Items prefixed with ! remove matching items from the array
|
|
@@ -139,6 +283,18 @@ export function deepMerge(parent, child) {
|
|
|
139
283
|
}
|
|
140
284
|
return result;
|
|
141
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
|
+
}
|
|
142
298
|
/**
|
|
143
299
|
* Merge two personas (child inherits from parent)
|
|
144
300
|
*/
|
|
@@ -154,32 +310,76 @@ export function mergePersonas(parent, child) {
|
|
|
154
310
|
env: deepMerge(parent.env ?? {}, child.env ?? {}),
|
|
155
311
|
// Arrays: merge with negation
|
|
156
312
|
skills: mergeArraysWithNegation(parent.skills ?? [], child.skills ?? []),
|
|
157
|
-
// Prompt:
|
|
158
|
-
prompt:
|
|
313
|
+
// Prompt: combine parent and child prompts
|
|
314
|
+
prompt: combinePrompts(parent.prompt, child.prompt),
|
|
159
315
|
};
|
|
160
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Check if a directory contains a PERSONA.md file (exported for use in resolvePersona)
|
|
319
|
+
*/
|
|
320
|
+
export { hasPersonaFile };
|
|
161
321
|
/**
|
|
162
322
|
* Resolve a persona with full inheritance chain
|
|
323
|
+
* Uses directory-based inheritance: child inherits from parent directories
|
|
324
|
+
* Includes implicit inheritance from internal _base persona and root persona
|
|
163
325
|
*/
|
|
164
326
|
export async function resolvePersona(personaPath, personasRoot) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
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);
|
|
178
339
|
}
|
|
179
340
|
}
|
|
180
|
-
|
|
341
|
+
// Must have at least the target persona
|
|
342
|
+
if (personaChain.length === 0) {
|
|
181
343
|
throw new Error(`No persona found at path: ${personaPath}`);
|
|
182
344
|
}
|
|
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
|
+
}
|
|
364
|
+
let finalPrompt = resolved.prompt;
|
|
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);
|
|
382
|
+
}
|
|
183
383
|
// Resolve commands to normalized structure
|
|
184
384
|
const commands = resolveCommands(resolved.cmd);
|
|
185
385
|
return {
|
|
@@ -188,9 +388,11 @@ export async function resolvePersona(personaPath, personasRoot) {
|
|
|
188
388
|
commands,
|
|
189
389
|
env: resolved.env ?? {},
|
|
190
390
|
skills: resolved.skills ?? [],
|
|
191
|
-
prompt:
|
|
391
|
+
prompt: finalPrompt,
|
|
192
392
|
path: resolved.path,
|
|
193
393
|
inheritanceChain,
|
|
394
|
+
mcpConfig: mcpConfig ?? undefined,
|
|
395
|
+
hooksConfig: hooksConfig ?? undefined,
|
|
194
396
|
};
|
|
195
397
|
}
|
|
196
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":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAapD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,sDAAsD;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,GAA4B;IACxD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAA2C;IACjE,OAAO,CACL,GAAG,KAAK,SAAS;QACjB,OAAO,GAAG,KAAK,QAAQ;QACvB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAA2C;IACzE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ,IAAI,WAAY;YAClC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE,QAAS;QACnB,WAAW,EAAE,SAAS;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,WAAmB;IAC9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,MAAwB,EACxB,KAAuB;IAEvB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO;QACL,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,GAAG,KAAK,CAAC,UAAU;SACpB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,MAA0B,EAC1B,KAAyB;IAEzB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,6CAA6C;IAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAA0B;QAC/C,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAA0B;KAC/C,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,oDAAoD;QACpD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAsB,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACrD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAExC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAClD,QAAQ,CACT,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,6DAA6D;IAE7D,OAAO;QACL,GAAG,WAAW;QACd,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;QACvB,MAAM,EAAE,IAAI,IAAI,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,IAAI,MAAM,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,YAAoB;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,MAAM,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAkB;IACtD,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC5B,IAAI,MAAM,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,0CAA0C;QAC1C,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,0DAA0D;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,MAAM,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,YAAY,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAgB,EAChB,KAAe;IAEf,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,gBAAgB;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,MAAS,EACT,KAAiB;IAEjB,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAgB,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,IACE,UAAU,KAAK,SAAS;YACxB,OAAO,UAAU,KAAK,QAAQ;YAC9B,UAAU,KAAK,IAAI;YACnB,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1B,OAAO,WAAW,KAAK,QAAQ;YAC/B,WAAW,KAAK,IAAI;YACpB,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,CAAC;YACD,4BAA4B;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,WAAsC,EACtC,UAAqC,CACxB,CAAC;QAClB,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,yBAAyB;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,UAAwB,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAe,EAAE,KAAc;IACrD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe,EAAE,KAAc;IAC3D,OAAO;QACL,2BAA2B;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;QACpD,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,+BAA+B;QAC7D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,MAAM,CAAC,IAAI;QAEnB,sBAAsB;QACtB,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QAEjD,8BAA8B;QAC9B,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAExE,2CAA2C;QAC3C,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;KACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,YAAoB;IAEpB,0BAA0B;IAC1B,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,qEAAqE;IACrE,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAExE,2EAA2E;IAC3E,MAAM,YAAY,GAAc,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,mCAAmC;IACnC,IAAI,QAAQ,GAAY,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzD,oDAAoD;IACpD,IAAI,SAAS,GAAqB,IAAI,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,sDAAsD;IACtD,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;IAElC,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC9B,qCAAqC;QACrC,WAAW,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,6CAA6C;QAC7C,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACtC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,qCAAqC;QACrC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,6CAA6C;QAC7C,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,QAAQ;QACR,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QAC7B,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,gBAAgB;QAChB,SAAS,EAAE,SAAS,IAAI,SAAS;QACjC,WAAW,EAAE,WAAW,IAAI,SAAS;KACtC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB;IACrD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,UAAU,OAAO,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxB,CAAC;oBACD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.test.d.ts","sourceRoot":"","sources":["../../src/lib/persona.test.ts"],"names":[],"mappings":""}
|