dot-agents 0.5.0 → 0.7.4
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 +220 -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/api/channels.d.ts +6 -0
- package/dist/daemon/api/channels.d.ts.map +1 -0
- package/dist/daemon/api/channels.js +143 -0
- package/dist/daemon/api/channels.js.map +1 -0
- package/dist/daemon/api/server.d.ts.map +1 -1
- package/dist/daemon/api/server.js +56 -0
- package/dist/daemon/api/server.js.map +1 -1
- package/dist/daemon/daemon.d.ts +28 -3
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +142 -26
- 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/daemon/lib/index.d.ts +1 -0
- package/dist/daemon/lib/index.d.ts.map +1 -1
- package/dist/daemon/lib/index.js +1 -0
- package/dist/daemon/lib/index.js.map +1 -1
- package/dist/daemon/lib/safeguards.d.ts +68 -0
- package/dist/daemon/lib/safeguards.d.ts.map +1 -0
- package/dist/daemon/lib/safeguards.js +135 -0
- package/dist/daemon/lib/safeguards.js.map +1 -0
- package/dist/daemon/lib/watcher.d.ts.map +1 -1
- package/dist/daemon/lib/watcher.js +48 -8
- package/dist/daemon/lib/watcher.js.map +1 -1
- package/dist/daemon/web/app.js +433 -0
- package/dist/daemon/web/index.html +68 -0
- package/dist/daemon/web/styles.css +452 -0
- 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/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 +88 -0
- package/dist/lib/environment.d.ts.map +1 -0
- package/dist/lib/environment.js +238 -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/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/invoke.d.ts +31 -0
- package/dist/lib/invoke.d.ts.map +1 -0
- package/dist/lib/invoke.js +170 -0
- package/dist/lib/invoke.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/processor.d.ts +58 -0
- package/dist/lib/processor.d.ts.map +1 -0
- package/dist/lib/processor.js +149 -0
- package/dist/lib/processor.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/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.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/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/dist/lib/validation/persona.d.ts.map +1 -1
- package/dist/lib/validation/persona.js +41 -4
- package/dist/lib/validation/persona.js.map +1 -1
- package/internal/personas/_base/PERSONA.md +222 -39
- package/internal/skills/channels/list/SKILL.md +76 -0
- package/package.json +15 -5
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,58 @@
|
|
|
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
|
+
import type { ExecutionMode } from "./invoke.js";
|
|
33
|
+
export type { ExecutionMode };
|
|
34
|
+
/**
|
|
35
|
+
* Options for processing channels
|
|
36
|
+
*/
|
|
37
|
+
export interface ProcessOptions {
|
|
38
|
+
/** Specific channel to process (e.g., @persona). If not provided, processes all DM channels. */
|
|
39
|
+
channel?: string;
|
|
40
|
+
/** Only process channels that have a matching persona */
|
|
41
|
+
requirePersona?: boolean;
|
|
42
|
+
/** Execution mode: headless (default) or interactive */
|
|
43
|
+
mode?: ExecutionMode;
|
|
44
|
+
/** Stream stdout/stderr during processing for visibility */
|
|
45
|
+
verbose?: boolean;
|
|
46
|
+
/** Callback for progress updates during processing */
|
|
47
|
+
onProgress?: (channel: string, status: "started" | "processing" | "complete", elapsedMs?: number) => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Process all pending messages in DM channels
|
|
51
|
+
*
|
|
52
|
+
* For each @persona channel with pending messages:
|
|
53
|
+
* 1. Check if persona exists
|
|
54
|
+
* 2. Invoke persona with each message
|
|
55
|
+
* 3. Mark channel as processed
|
|
56
|
+
*/
|
|
57
|
+
export declare function processChannels(config: DotAgentsConfig, options?: ProcessOptions): Promise<ProcessAllResult>;
|
|
58
|
+
//# 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,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wDAAwD;IACxD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3G;AAqGD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAuE3B"}
|
|
@@ -0,0 +1,149 @@
|
|
|
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, options = {}) {
|
|
27
|
+
const personaName = message.channel.slice(1); // Remove @ prefix
|
|
28
|
+
const { mode = "headless", verbose = false } = options;
|
|
29
|
+
try {
|
|
30
|
+
const context = buildMessageContext(message);
|
|
31
|
+
const result = await invokePersona(config, personaName, message.content, {
|
|
32
|
+
source: message.channel,
|
|
33
|
+
context,
|
|
34
|
+
goal: `Process DM: ${personaName}`,
|
|
35
|
+
mode,
|
|
36
|
+
verbose,
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
messageId: message.id,
|
|
40
|
+
channel: message.channel,
|
|
41
|
+
persona: personaName,
|
|
42
|
+
success: result.success,
|
|
43
|
+
duration: result.duration,
|
|
44
|
+
error: result.success ? undefined : (result.stderr || result.error),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
messageId: message.id,
|
|
50
|
+
channel: message.channel,
|
|
51
|
+
persona: personaName,
|
|
52
|
+
success: false,
|
|
53
|
+
duration: 0,
|
|
54
|
+
error: error.message,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check if a persona exists for a given DM channel
|
|
60
|
+
*/
|
|
61
|
+
async function personaExists(config, channelName) {
|
|
62
|
+
const personaName = channelName.slice(1); // Remove @ prefix
|
|
63
|
+
// Check for root persona (.agents/PERSONA.md)
|
|
64
|
+
if (personaName === "root") {
|
|
65
|
+
return await hasPersonaFile(config.agentsDir);
|
|
66
|
+
}
|
|
67
|
+
const personaPaths = await listPersonas(config.personasDir);
|
|
68
|
+
for (const path of personaPaths) {
|
|
69
|
+
// Extract persona name from path
|
|
70
|
+
const parts = path.split("/");
|
|
71
|
+
const name = parts[parts.length - 1];
|
|
72
|
+
if (name === personaName) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Process all pending messages in DM channels
|
|
80
|
+
*
|
|
81
|
+
* For each @persona channel with pending messages:
|
|
82
|
+
* 1. Check if persona exists
|
|
83
|
+
* 2. Invoke persona with each message
|
|
84
|
+
* 3. Mark channel as processed
|
|
85
|
+
*/
|
|
86
|
+
export async function processChannels(config, options = {}) {
|
|
87
|
+
const results = [];
|
|
88
|
+
let channelsChecked = 0;
|
|
89
|
+
// Get channels to process
|
|
90
|
+
let channels;
|
|
91
|
+
if (options.channel) {
|
|
92
|
+
// Process specific channel
|
|
93
|
+
if (!options.channel.startsWith("@")) {
|
|
94
|
+
return {
|
|
95
|
+
channelsChecked: 0,
|
|
96
|
+
messagesProcessed: 0,
|
|
97
|
+
results: [],
|
|
98
|
+
success: false,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
channels = [options.channel];
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// Process all DM channels
|
|
105
|
+
channels = await listDMChannels(config.channelsDir);
|
|
106
|
+
}
|
|
107
|
+
for (const channel of channels) {
|
|
108
|
+
channelsChecked++;
|
|
109
|
+
// Check if persona exists for this channel
|
|
110
|
+
const hasPersona = await personaExists(config, channel);
|
|
111
|
+
if (!hasPersona) {
|
|
112
|
+
if (options.requirePersona) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
// Skip channels without personas silently
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
// Get pending messages
|
|
119
|
+
const pending = await getPendingMessages(config.channelsDir, channel);
|
|
120
|
+
if (pending.length === 0) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
// Process each message
|
|
124
|
+
for (const message of pending) {
|
|
125
|
+
// Notify progress callback
|
|
126
|
+
if (options.onProgress) {
|
|
127
|
+
options.onProgress(channel, "started");
|
|
128
|
+
}
|
|
129
|
+
const result = await processMessage(config, message, {
|
|
130
|
+
mode: options.mode,
|
|
131
|
+
verbose: options.verbose,
|
|
132
|
+
});
|
|
133
|
+
results.push(result);
|
|
134
|
+
// Notify completion
|
|
135
|
+
if (options.onProgress) {
|
|
136
|
+
options.onProgress(channel, "complete", result.duration);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Mark channel as processed
|
|
140
|
+
await markChannelProcessed(config.channelsDir, channel);
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
channelsChecked,
|
|
144
|
+
messagesProcessed: results.length,
|
|
145
|
+
results,
|
|
146
|
+
success: results.every((r) => r.success),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# 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,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project registry structure
|
|
3
|
+
*/
|
|
4
|
+
export interface ProjectRegistry {
|
|
5
|
+
projects: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parsed cross-project channel address
|
|
9
|
+
*/
|
|
10
|
+
export interface CrossProjectAddress {
|
|
11
|
+
/** Project name from registry (null if local) */
|
|
12
|
+
project: string | null;
|
|
13
|
+
/** Channel type: # for public, @ for DM */
|
|
14
|
+
type: "#" | "@";
|
|
15
|
+
/** Channel or persona name */
|
|
16
|
+
name: string;
|
|
17
|
+
/** Full original address for display */
|
|
18
|
+
original: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get path to the projects registry file
|
|
22
|
+
*/
|
|
23
|
+
export declare function getRegistryPath(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Load the project registry
|
|
26
|
+
*/
|
|
27
|
+
export declare function loadRegistry(): Promise<ProjectRegistry>;
|
|
28
|
+
/**
|
|
29
|
+
* Save the project registry
|
|
30
|
+
*/
|
|
31
|
+
export declare function saveRegistry(registry: ProjectRegistry): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Register a project in the registry
|
|
34
|
+
*/
|
|
35
|
+
export declare function registerProject(name: string, path: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Unregister a project from the registry
|
|
38
|
+
*/
|
|
39
|
+
export declare function unregisterProject(name: string): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve a project name to its .agents path
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveProject(name: string): Promise<string | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Parse a channel address that may include a project prefix
|
|
46
|
+
*
|
|
47
|
+
* Formats:
|
|
48
|
+
* - @persona (local DM)
|
|
49
|
+
* - #channel (local public channel)
|
|
50
|
+
* - @project/persona (cross-project DM)
|
|
51
|
+
* - #project/channel (cross-project public channel)
|
|
52
|
+
*/
|
|
53
|
+
export declare function parseChannelAddress(address: string): CrossProjectAddress;
|
|
54
|
+
/**
|
|
55
|
+
* Result of resolving a channel address
|
|
56
|
+
*/
|
|
57
|
+
export interface ResolvedChannelAddress {
|
|
58
|
+
/** Path to the channels directory (local or remote) */
|
|
59
|
+
channelsDir: string;
|
|
60
|
+
/** Channel name within that directory (e.g., @persona, #channel, @root) */
|
|
61
|
+
localChannelName: string;
|
|
62
|
+
/** True if this resolved to a project's entry point */
|
|
63
|
+
isProjectEntryPoint?: boolean;
|
|
64
|
+
/** The project name if routed to a project */
|
|
65
|
+
projectName?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolve a channel address to a channels directory and local channel name
|
|
69
|
+
*
|
|
70
|
+
* Resolution order for @name (without /):
|
|
71
|
+
* 1. Check registered projects first - if found, routes to project's @root
|
|
72
|
+
* 2. Fall back to local persona lookup
|
|
73
|
+
*
|
|
74
|
+
* Returns:
|
|
75
|
+
* - channelsDir: The path to the channels directory (local or remote)
|
|
76
|
+
* - localChannelName: The channel name within that directory (e.g., @persona, #channel)
|
|
77
|
+
* - isProjectEntryPoint: True if routed to a project's entry point
|
|
78
|
+
* - projectName: The project name if routed to a project
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolveChannelAddress(address: string, localChannelsDir: string): Promise<ResolvedChannelAddress>;
|
|
81
|
+
/**
|
|
82
|
+
* List all registered projects
|
|
83
|
+
*/
|
|
84
|
+
export declare function listProjects(): Promise<Array<{
|
|
85
|
+
name: string;
|
|
86
|
+
path: string;
|
|
87
|
+
}>>;
|
|
88
|
+
/**
|
|
89
|
+
* Get the project name for a given agents directory path
|
|
90
|
+
* Returns null if the path doesn't match any registered project
|
|
91
|
+
*/
|
|
92
|
+
export declare function getProjectNameByPath(agentsDir: string): Promise<string | null>;
|
|
93
|
+
/**
|
|
94
|
+
* A collision between a project name and a local persona name
|
|
95
|
+
*/
|
|
96
|
+
export interface NameCollision {
|
|
97
|
+
/** The conflicting name */
|
|
98
|
+
name: string;
|
|
99
|
+
/** Path to the registered project */
|
|
100
|
+
projectPath: string;
|
|
101
|
+
/** Path to the local persona */
|
|
102
|
+
personaPath: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Detect collisions between registered project names and local persona names.
|
|
106
|
+
* When a collision exists, @name will route to the project (projects take priority).
|
|
107
|
+
*/
|
|
108
|
+
export declare function detectNameCollisions(personaNames: string[]): Promise<NameCollision[]>;
|
|
109
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2CAA2C;IAC3C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAS7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQtE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAyBxE;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,sBAAsB,CAAC,CAsCjC;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAC3C,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CACtC,CAMA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAkB1B"}
|