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,324 @@
|
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { join, relative } from "node:path";
|
|
4
|
+
// Pure functions copied from persona.ts for testing
|
|
5
|
+
// This avoids module resolution issues with .js imports
|
|
6
|
+
function buildInheritanceChain(personaPath, personasRoot) {
|
|
7
|
+
const relativePath = relative(personasRoot, personaPath);
|
|
8
|
+
const parts = relativePath.split("/").filter(Boolean);
|
|
9
|
+
const chain = [];
|
|
10
|
+
let currentPath = personasRoot;
|
|
11
|
+
for (const part of parts) {
|
|
12
|
+
currentPath = join(currentPath, part);
|
|
13
|
+
chain.push(currentPath);
|
|
14
|
+
}
|
|
15
|
+
return chain;
|
|
16
|
+
}
|
|
17
|
+
function mergeArraysWithNegation(parent, child) {
|
|
18
|
+
const result = [...parent];
|
|
19
|
+
for (const item of child) {
|
|
20
|
+
if (item.startsWith("!")) {
|
|
21
|
+
const pattern = item.slice(1);
|
|
22
|
+
const index = result.indexOf(pattern);
|
|
23
|
+
if (index !== -1) {
|
|
24
|
+
result.splice(index, 1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (!result.includes(item)) {
|
|
28
|
+
result.push(item);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
function deepMerge(parent, child) {
|
|
34
|
+
const result = { ...parent };
|
|
35
|
+
for (const key of Object.keys(child)) {
|
|
36
|
+
const childValue = child[key];
|
|
37
|
+
const parentValue = parent[key];
|
|
38
|
+
if (childValue !== undefined &&
|
|
39
|
+
typeof childValue === "object" &&
|
|
40
|
+
childValue !== null &&
|
|
41
|
+
!Array.isArray(childValue) &&
|
|
42
|
+
typeof parentValue === "object" &&
|
|
43
|
+
parentValue !== null &&
|
|
44
|
+
!Array.isArray(parentValue)) {
|
|
45
|
+
result[key] = deepMerge(parentValue, childValue);
|
|
46
|
+
}
|
|
47
|
+
else if (childValue !== undefined) {
|
|
48
|
+
result[key] = childValue;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
function combinePrompts(parent, child) {
|
|
54
|
+
if (!parent && !child)
|
|
55
|
+
return undefined;
|
|
56
|
+
if (!parent)
|
|
57
|
+
return child;
|
|
58
|
+
if (!child)
|
|
59
|
+
return parent;
|
|
60
|
+
return parent + "\n\n---\n\n" + child;
|
|
61
|
+
}
|
|
62
|
+
function mergePersonas(parent, child) {
|
|
63
|
+
return {
|
|
64
|
+
name: child.name,
|
|
65
|
+
description: child.description ?? parent.description,
|
|
66
|
+
cmd: child.cmd ?? parent.cmd,
|
|
67
|
+
path: child.path,
|
|
68
|
+
parent: parent.path,
|
|
69
|
+
env: deepMerge(parent.env ?? {}, child.env ?? {}),
|
|
70
|
+
skills: mergeArraysWithNegation(parent.skills ?? [], child.skills ?? []),
|
|
71
|
+
prompt: combinePrompts(parent.prompt, child.prompt),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function normalizeCommandSpec(cmd) {
|
|
75
|
+
if (cmd === undefined)
|
|
76
|
+
return undefined;
|
|
77
|
+
if (typeof cmd === "string")
|
|
78
|
+
return [cmd];
|
|
79
|
+
return cmd;
|
|
80
|
+
}
|
|
81
|
+
function isCommandModes(cmd) {
|
|
82
|
+
return (cmd !== undefined &&
|
|
83
|
+
typeof cmd === "object" &&
|
|
84
|
+
!Array.isArray(cmd));
|
|
85
|
+
}
|
|
86
|
+
function resolveCommands(cmd) {
|
|
87
|
+
if (!cmd) {
|
|
88
|
+
throw new Error("Persona must specify cmd");
|
|
89
|
+
}
|
|
90
|
+
if (isCommandModes(cmd)) {
|
|
91
|
+
const headless = normalizeCommandSpec(cmd.headless);
|
|
92
|
+
const interactive = normalizeCommandSpec(cmd.interactive);
|
|
93
|
+
if (!headless && !interactive) {
|
|
94
|
+
throw new Error("Persona cmd must specify at least headless or interactive");
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
headless: headless ?? interactive,
|
|
98
|
+
interactive,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const headless = normalizeCommandSpec(cmd);
|
|
102
|
+
return {
|
|
103
|
+
headless: headless,
|
|
104
|
+
interactive: undefined,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Tests
|
|
108
|
+
describe("buildInheritanceChain", () => {
|
|
109
|
+
it("builds chain from root to leaf", () => {
|
|
110
|
+
const chain = buildInheritanceChain("/project/.agents/personas/claude/autonomous", "/project/.agents/personas");
|
|
111
|
+
assert.deepStrictEqual(chain, [
|
|
112
|
+
"/project/.agents/personas/claude",
|
|
113
|
+
"/project/.agents/personas/claude/autonomous",
|
|
114
|
+
]);
|
|
115
|
+
});
|
|
116
|
+
it("returns single-element chain for top-level persona", () => {
|
|
117
|
+
const chain = buildInheritanceChain("/project/.agents/personas/developer", "/project/.agents/personas");
|
|
118
|
+
assert.deepStrictEqual(chain, ["/project/.agents/personas/developer"]);
|
|
119
|
+
});
|
|
120
|
+
it("handles deeply nested paths", () => {
|
|
121
|
+
const chain = buildInheritanceChain("/project/.agents/personas/a/b/c/d", "/project/.agents/personas");
|
|
122
|
+
assert.deepStrictEqual(chain, [
|
|
123
|
+
"/project/.agents/personas/a",
|
|
124
|
+
"/project/.agents/personas/a/b",
|
|
125
|
+
"/project/.agents/personas/a/b/c",
|
|
126
|
+
"/project/.agents/personas/a/b/c/d",
|
|
127
|
+
]);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe("mergeArraysWithNegation", () => {
|
|
131
|
+
it("combines arrays without duplicates", () => {
|
|
132
|
+
const result = mergeArraysWithNegation(["a", "b"], ["c", "d"]);
|
|
133
|
+
assert.deepStrictEqual(result, ["a", "b", "c", "d"]);
|
|
134
|
+
});
|
|
135
|
+
it("removes items with ! prefix", () => {
|
|
136
|
+
const result = mergeArraysWithNegation(["a", "b", "c"], ["!b"]);
|
|
137
|
+
assert.deepStrictEqual(result, ["a", "c"]);
|
|
138
|
+
});
|
|
139
|
+
it("can add and remove in same operation", () => {
|
|
140
|
+
const result = mergeArraysWithNegation(["a", "b", "c"], ["!b", "d"]);
|
|
141
|
+
assert.deepStrictEqual(result, ["a", "c", "d"]);
|
|
142
|
+
});
|
|
143
|
+
it("ignores removal of non-existent items", () => {
|
|
144
|
+
const result = mergeArraysWithNegation(["a", "b"], ["!z"]);
|
|
145
|
+
assert.deepStrictEqual(result, ["a", "b"]);
|
|
146
|
+
});
|
|
147
|
+
it("does not add duplicates", () => {
|
|
148
|
+
const result = mergeArraysWithNegation(["a", "b"], ["b", "c"]);
|
|
149
|
+
assert.deepStrictEqual(result, ["a", "b", "c"]);
|
|
150
|
+
});
|
|
151
|
+
it("handles empty arrays", () => {
|
|
152
|
+
assert.deepStrictEqual(mergeArraysWithNegation([], ["a"]), ["a"]);
|
|
153
|
+
assert.deepStrictEqual(mergeArraysWithNegation(["a"], []), ["a"]);
|
|
154
|
+
assert.deepStrictEqual(mergeArraysWithNegation([], []), []);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe("deepMerge", () => {
|
|
158
|
+
it("merges flat objects", () => {
|
|
159
|
+
const parent = { a: 1, b: 2, c: 0 };
|
|
160
|
+
const child = { b: 3, c: 4 };
|
|
161
|
+
const result = deepMerge(parent, child);
|
|
162
|
+
assert.deepStrictEqual(result, { a: 1, b: 3, c: 4 });
|
|
163
|
+
});
|
|
164
|
+
it("recursively merges nested objects", () => {
|
|
165
|
+
const parent = { outer: { a: 1, b: 2, c: 0 } };
|
|
166
|
+
const child = { outer: { a: 1, b: 3, c: 4 } };
|
|
167
|
+
const result = deepMerge(parent, child);
|
|
168
|
+
assert.deepStrictEqual(result, { outer: { a: 1, b: 3, c: 4 } });
|
|
169
|
+
});
|
|
170
|
+
it("child overrides parent for non-object values", () => {
|
|
171
|
+
const result = deepMerge({ a: "parent" }, { a: "child" });
|
|
172
|
+
assert.deepStrictEqual(result, { a: "child" });
|
|
173
|
+
});
|
|
174
|
+
it("child array replaces parent array (no merge)", () => {
|
|
175
|
+
const result = deepMerge({ arr: [1, 2] }, { arr: [3, 4] });
|
|
176
|
+
assert.deepStrictEqual(result, { arr: [3, 4] });
|
|
177
|
+
});
|
|
178
|
+
it("preserves parent values not in child", () => {
|
|
179
|
+
const result = deepMerge({ a: 1, b: 2 }, { a: 10 });
|
|
180
|
+
assert.deepStrictEqual(result, { a: 10, b: 2 });
|
|
181
|
+
});
|
|
182
|
+
it("handles undefined child values", () => {
|
|
183
|
+
const result = deepMerge({ a: 1 }, { a: undefined });
|
|
184
|
+
assert.deepStrictEqual(result, { a: 1 });
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe("mergePersonas", () => {
|
|
188
|
+
const parentPersona = {
|
|
189
|
+
name: "parent",
|
|
190
|
+
description: "Parent description",
|
|
191
|
+
cmd: ["parent-cmd"],
|
|
192
|
+
path: "/personas/parent",
|
|
193
|
+
skills: ["skill-a", "skill-b"],
|
|
194
|
+
env: { VAR1: "value1" },
|
|
195
|
+
prompt: "Parent prompt",
|
|
196
|
+
};
|
|
197
|
+
const childPersona = {
|
|
198
|
+
name: "child",
|
|
199
|
+
path: "/personas/parent/child",
|
|
200
|
+
skills: ["skill-c", "!skill-b"],
|
|
201
|
+
env: { VAR2: "value2" },
|
|
202
|
+
prompt: "Child prompt",
|
|
203
|
+
};
|
|
204
|
+
it("uses child name", () => {
|
|
205
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
206
|
+
assert.strictEqual(merged.name, "child");
|
|
207
|
+
});
|
|
208
|
+
it("uses child path", () => {
|
|
209
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
210
|
+
assert.strictEqual(merged.path, "/personas/parent/child");
|
|
211
|
+
});
|
|
212
|
+
it("sets parent reference", () => {
|
|
213
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
214
|
+
assert.strictEqual(merged.parent, "/personas/parent");
|
|
215
|
+
});
|
|
216
|
+
it("falls back to parent description", () => {
|
|
217
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
218
|
+
assert.strictEqual(merged.description, "Parent description");
|
|
219
|
+
});
|
|
220
|
+
it("child description overrides parent", () => {
|
|
221
|
+
const childWithDesc = {
|
|
222
|
+
...childPersona,
|
|
223
|
+
description: "Child description",
|
|
224
|
+
};
|
|
225
|
+
const merged = mergePersonas(parentPersona, childWithDesc);
|
|
226
|
+
assert.strictEqual(merged.description, "Child description");
|
|
227
|
+
});
|
|
228
|
+
it("inherits cmd from parent if not specified", () => {
|
|
229
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
230
|
+
assert.deepStrictEqual(merged.cmd, ["parent-cmd"]);
|
|
231
|
+
});
|
|
232
|
+
it("child cmd overrides parent", () => {
|
|
233
|
+
const childWithCmd = { ...childPersona, cmd: ["child-cmd"] };
|
|
234
|
+
const merged = mergePersonas(parentPersona, childWithCmd);
|
|
235
|
+
assert.deepStrictEqual(merged.cmd, ["child-cmd"]);
|
|
236
|
+
});
|
|
237
|
+
it("merges skills with negation support", () => {
|
|
238
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
239
|
+
assert.deepStrictEqual(merged.skills, ["skill-a", "skill-c"]);
|
|
240
|
+
});
|
|
241
|
+
it("deep merges env", () => {
|
|
242
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
243
|
+
assert.deepStrictEqual(merged.env, { VAR1: "value1", VAR2: "value2" });
|
|
244
|
+
});
|
|
245
|
+
it("combines prompts with separator", () => {
|
|
246
|
+
const merged = mergePersonas(parentPersona, childPersona);
|
|
247
|
+
assert.strictEqual(merged.prompt, "Parent prompt\n\n---\n\nChild prompt");
|
|
248
|
+
});
|
|
249
|
+
it("handles missing parent prompt", () => {
|
|
250
|
+
const parentNoPrompt = { ...parentPersona, prompt: undefined };
|
|
251
|
+
const merged = mergePersonas(parentNoPrompt, childPersona);
|
|
252
|
+
assert.strictEqual(merged.prompt, "Child prompt");
|
|
253
|
+
});
|
|
254
|
+
it("handles missing child prompt", () => {
|
|
255
|
+
const childNoPrompt = { ...childPersona, prompt: undefined };
|
|
256
|
+
const merged = mergePersonas(parentPersona, childNoPrompt);
|
|
257
|
+
assert.strictEqual(merged.prompt, "Parent prompt");
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
describe("resolveCommands", () => {
|
|
261
|
+
it("throws when cmd is undefined", () => {
|
|
262
|
+
assert.throws(() => resolveCommands(undefined), {
|
|
263
|
+
message: "Persona must specify cmd",
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
it("converts string to headless array", () => {
|
|
267
|
+
const result = resolveCommands("my-command");
|
|
268
|
+
assert.deepStrictEqual(result, {
|
|
269
|
+
headless: ["my-command"],
|
|
270
|
+
interactive: undefined,
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
it("keeps array as headless", () => {
|
|
274
|
+
const result = resolveCommands(["cmd", "--flag"]);
|
|
275
|
+
assert.deepStrictEqual(result, {
|
|
276
|
+
headless: ["cmd", "--flag"],
|
|
277
|
+
interactive: undefined,
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
it("handles object format with both modes", () => {
|
|
281
|
+
const result = resolveCommands({
|
|
282
|
+
headless: ["headless-cmd"],
|
|
283
|
+
interactive: ["interactive-cmd"],
|
|
284
|
+
});
|
|
285
|
+
assert.deepStrictEqual(result, {
|
|
286
|
+
headless: ["headless-cmd"],
|
|
287
|
+
interactive: ["interactive-cmd"],
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
it("converts string values in object format", () => {
|
|
291
|
+
const result = resolveCommands({
|
|
292
|
+
headless: "headless-cmd",
|
|
293
|
+
interactive: "interactive-cmd",
|
|
294
|
+
});
|
|
295
|
+
assert.deepStrictEqual(result, {
|
|
296
|
+
headless: ["headless-cmd"],
|
|
297
|
+
interactive: ["interactive-cmd"],
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
it("uses interactive as fallback for headless", () => {
|
|
301
|
+
const result = resolveCommands({
|
|
302
|
+
interactive: ["interactive-only"],
|
|
303
|
+
});
|
|
304
|
+
assert.deepStrictEqual(result, {
|
|
305
|
+
headless: ["interactive-only"],
|
|
306
|
+
interactive: ["interactive-only"],
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
it("allows headless-only mode", () => {
|
|
310
|
+
const result = resolveCommands({
|
|
311
|
+
headless: ["headless-only"],
|
|
312
|
+
});
|
|
313
|
+
assert.deepStrictEqual(result, {
|
|
314
|
+
headless: ["headless-only"],
|
|
315
|
+
interactive: undefined,
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
it("throws when object has neither mode", () => {
|
|
319
|
+
assert.throws(() => resolveCommands({}), {
|
|
320
|
+
message: "Persona cmd must specify at least headless or interactive",
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
//# sourceMappingURL=persona.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.test.js","sourceRoot":"","sources":["../../src/lib/persona.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type DotAgentsConfig } from "./index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Result of processing a single message
|
|
4
|
+
*/
|
|
5
|
+
export interface ProcessResult {
|
|
6
|
+
/** Message ID that was processed */
|
|
7
|
+
messageId: string;
|
|
8
|
+
/** Channel the message was in */
|
|
9
|
+
channel: string;
|
|
10
|
+
/** Persona that processed the message */
|
|
11
|
+
persona: string;
|
|
12
|
+
/** Whether processing succeeded */
|
|
13
|
+
success: boolean;
|
|
14
|
+
/** Duration in milliseconds */
|
|
15
|
+
duration: number;
|
|
16
|
+
/** Error message if failed */
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Result of processing all pending messages
|
|
21
|
+
*/
|
|
22
|
+
export interface ProcessAllResult {
|
|
23
|
+
/** Number of channels checked */
|
|
24
|
+
channelsChecked: number;
|
|
25
|
+
/** Number of messages processed */
|
|
26
|
+
messagesProcessed: number;
|
|
27
|
+
/** Results for each processed message */
|
|
28
|
+
results: ProcessResult[];
|
|
29
|
+
/** Overall success (all messages processed successfully) */
|
|
30
|
+
success: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Options for processing channels
|
|
34
|
+
*/
|
|
35
|
+
export interface ProcessOptions {
|
|
36
|
+
/** Specific channel to process (e.g., @persona). If not provided, processes all DM channels. */
|
|
37
|
+
channel?: string;
|
|
38
|
+
/** Only process channels that have a matching persona */
|
|
39
|
+
requirePersona?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Process all pending messages in DM channels
|
|
43
|
+
*
|
|
44
|
+
* For each @persona channel with pending messages:
|
|
45
|
+
* 1. Check if persona exists
|
|
46
|
+
* 2. Invoke persona with each message
|
|
47
|
+
* 3. Mark channel as processed
|
|
48
|
+
*/
|
|
49
|
+
export declare function processChannels(config: DotAgentsConfig, options?: ProcessOptions): Promise<ProcessAllResult>;
|
|
50
|
+
//# sourceMappingURL=processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/lib/processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EAOrB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAyFD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { getPendingMessages, markChannelProcessed, listDMChannels, listPersonas, invokePersona, } from "./index.js";
|
|
2
|
+
import { hasPersonaFile } from "./persona.js";
|
|
3
|
+
import { parseFromAddress } from "../cli/commands/channel.js";
|
|
4
|
+
/**
|
|
5
|
+
* Build context object from message metadata
|
|
6
|
+
* Extracts callback info from 'from' field if present
|
|
7
|
+
*/
|
|
8
|
+
function buildMessageContext(message) {
|
|
9
|
+
const context = {
|
|
10
|
+
DM_MESSAGE_ID: message.id,
|
|
11
|
+
};
|
|
12
|
+
// Parse from address for callback routing
|
|
13
|
+
if (message.meta.from) {
|
|
14
|
+
const parsed = parseFromAddress(message.meta.from);
|
|
15
|
+
context.FROM_ADDRESS = message.meta.from;
|
|
16
|
+
context.FROM_CHANNEL = parsed.address;
|
|
17
|
+
if (parsed.thread) {
|
|
18
|
+
context.FROM_THREAD = parsed.thread;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return context;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Process a single pending message by invoking the persona
|
|
25
|
+
*/
|
|
26
|
+
async function processMessage(config, message) {
|
|
27
|
+
const personaName = message.channel.slice(1); // Remove @ prefix
|
|
28
|
+
try {
|
|
29
|
+
const context = buildMessageContext(message);
|
|
30
|
+
const result = await invokePersona(config, personaName, message.content, {
|
|
31
|
+
source: message.channel,
|
|
32
|
+
context,
|
|
33
|
+
goal: `Process DM: ${personaName}`,
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
messageId: message.id,
|
|
37
|
+
channel: message.channel,
|
|
38
|
+
persona: personaName,
|
|
39
|
+
success: result.success,
|
|
40
|
+
duration: result.duration,
|
|
41
|
+
error: result.success ? undefined : (result.stderr || result.error),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
return {
|
|
46
|
+
messageId: message.id,
|
|
47
|
+
channel: message.channel,
|
|
48
|
+
persona: personaName,
|
|
49
|
+
success: false,
|
|
50
|
+
duration: 0,
|
|
51
|
+
error: error.message,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if a persona exists for a given DM channel
|
|
57
|
+
*/
|
|
58
|
+
async function personaExists(config, channelName) {
|
|
59
|
+
const personaName = channelName.slice(1); // Remove @ prefix
|
|
60
|
+
// Check for root persona (.agents/PERSONA.md)
|
|
61
|
+
if (personaName === "root") {
|
|
62
|
+
return await hasPersonaFile(config.agentsDir);
|
|
63
|
+
}
|
|
64
|
+
const personaPaths = await listPersonas(config.personasDir);
|
|
65
|
+
for (const path of personaPaths) {
|
|
66
|
+
// Extract persona name from path
|
|
67
|
+
const parts = path.split("/");
|
|
68
|
+
const name = parts[parts.length - 1];
|
|
69
|
+
if (name === personaName) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Process all pending messages in DM channels
|
|
77
|
+
*
|
|
78
|
+
* For each @persona channel with pending messages:
|
|
79
|
+
* 1. Check if persona exists
|
|
80
|
+
* 2. Invoke persona with each message
|
|
81
|
+
* 3. Mark channel as processed
|
|
82
|
+
*/
|
|
83
|
+
export async function processChannels(config, options = {}) {
|
|
84
|
+
const results = [];
|
|
85
|
+
let channelsChecked = 0;
|
|
86
|
+
// Get channels to process
|
|
87
|
+
let channels;
|
|
88
|
+
if (options.channel) {
|
|
89
|
+
// Process specific channel
|
|
90
|
+
if (!options.channel.startsWith("@")) {
|
|
91
|
+
return {
|
|
92
|
+
channelsChecked: 0,
|
|
93
|
+
messagesProcessed: 0,
|
|
94
|
+
results: [],
|
|
95
|
+
success: false,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
channels = [options.channel];
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Process all DM channels
|
|
102
|
+
channels = await listDMChannels(config.channelsDir);
|
|
103
|
+
}
|
|
104
|
+
for (const channel of channels) {
|
|
105
|
+
channelsChecked++;
|
|
106
|
+
// Check if persona exists for this channel
|
|
107
|
+
const hasPersona = await personaExists(config, channel);
|
|
108
|
+
if (!hasPersona) {
|
|
109
|
+
if (options.requirePersona) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// Skip channels without personas silently
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
// Get pending messages
|
|
116
|
+
const pending = await getPendingMessages(config.channelsDir, channel);
|
|
117
|
+
if (pending.length === 0) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
// Process each message
|
|
121
|
+
for (const message of pending) {
|
|
122
|
+
const result = await processMessage(config, message);
|
|
123
|
+
results.push(result);
|
|
124
|
+
}
|
|
125
|
+
// Mark channel as processed
|
|
126
|
+
await markChannelProcessed(config.channelsDir, channel);
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
channelsChecked,
|
|
130
|
+
messagesProcessed: results.length,
|
|
131
|
+
results,
|
|
132
|
+
success: results.every((r) => r.success),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/lib/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.test.d.ts","sourceRoot":"","sources":["../../src/lib/processor.test.ts"],"names":[],"mappings":""}
|