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.
Files changed (124) hide show
  1. package/README.md +239 -122
  2. package/dist/cli/commands/channel.d.ts +19 -0
  3. package/dist/cli/commands/channel.d.ts.map +1 -1
  4. package/dist/cli/commands/channel.js +152 -13
  5. package/dist/cli/commands/channel.js.map +1 -1
  6. package/dist/cli/commands/check.d.ts.map +1 -1
  7. package/dist/cli/commands/check.js +61 -1
  8. package/dist/cli/commands/check.js.map +1 -1
  9. package/dist/cli/commands/index.d.ts +2 -0
  10. package/dist/cli/commands/index.d.ts.map +1 -1
  11. package/dist/cli/commands/index.js +2 -0
  12. package/dist/cli/commands/index.js.map +1 -1
  13. package/dist/cli/commands/personas.d.ts +3 -0
  14. package/dist/cli/commands/personas.d.ts.map +1 -0
  15. package/dist/cli/commands/personas.js +402 -0
  16. package/dist/cli/commands/personas.js.map +1 -0
  17. package/dist/cli/commands/projects.d.ts +3 -0
  18. package/dist/cli/commands/projects.d.ts.map +1 -0
  19. package/dist/cli/commands/projects.js +138 -0
  20. package/dist/cli/commands/projects.js.map +1 -0
  21. package/dist/cli/commands/run.d.ts.map +1 -1
  22. package/dist/cli/commands/run.js +4 -5
  23. package/dist/cli/commands/run.js.map +1 -1
  24. package/dist/cli/index.js +3 -11
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/lib/runner.d.ts +2 -0
  27. package/dist/cli/lib/runner.d.ts.map +1 -1
  28. package/dist/cli/lib/runner.js +67 -8
  29. package/dist/cli/lib/runner.js.map +1 -1
  30. package/dist/daemon/daemon.d.ts +10 -3
  31. package/dist/daemon/daemon.d.ts.map +1 -1
  32. package/dist/daemon/daemon.js +19 -21
  33. package/dist/daemon/daemon.js.map +1 -1
  34. package/dist/daemon/lib/executor.d.ts +0 -4
  35. package/dist/daemon/lib/executor.d.ts.map +1 -1
  36. package/dist/daemon/lib/executor.js +48 -135
  37. package/dist/daemon/lib/executor.js.map +1 -1
  38. package/dist/lib/channel.d.ts +53 -1
  39. package/dist/lib/channel.d.ts.map +1 -1
  40. package/dist/lib/channel.js +221 -30
  41. package/dist/lib/channel.js.map +1 -1
  42. package/dist/lib/channel.test.d.ts +2 -0
  43. package/dist/lib/channel.test.d.ts.map +1 -0
  44. package/dist/lib/channel.test.js +33 -0
  45. package/dist/lib/channel.test.js.map +1 -0
  46. package/dist/lib/daemon-status.d.ts +26 -0
  47. package/dist/lib/daemon-status.d.ts.map +1 -0
  48. package/dist/lib/daemon-status.js +64 -0
  49. package/dist/lib/daemon-status.js.map +1 -0
  50. package/dist/lib/environment.d.ts +87 -0
  51. package/dist/lib/environment.d.ts.map +1 -0
  52. package/dist/lib/environment.js +224 -0
  53. package/dist/lib/environment.js.map +1 -0
  54. package/dist/lib/frontmatter.d.ts +8 -0
  55. package/dist/lib/frontmatter.d.ts.map +1 -1
  56. package/dist/lib/frontmatter.js +16 -3
  57. package/dist/lib/frontmatter.js.map +1 -1
  58. package/dist/lib/frontmatter.test.d.ts +2 -0
  59. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  60. package/dist/lib/frontmatter.test.js +60 -0
  61. package/dist/lib/frontmatter.test.js.map +1 -0
  62. package/dist/lib/index.d.ts +7 -0
  63. package/dist/lib/index.d.ts.map +1 -1
  64. package/dist/lib/index.js +7 -0
  65. package/dist/lib/index.js.map +1 -1
  66. package/dist/lib/integration.test.d.ts +2 -0
  67. package/dist/lib/integration.test.d.ts.map +1 -0
  68. package/dist/lib/integration.test.js +445 -0
  69. package/dist/lib/integration.test.js.map +1 -0
  70. package/dist/lib/invoke.d.ts +23 -0
  71. package/dist/lib/invoke.d.ts.map +1 -0
  72. package/dist/lib/invoke.js +158 -0
  73. package/dist/lib/invoke.js.map +1 -0
  74. package/dist/lib/invoke.test.d.ts +2 -0
  75. package/dist/lib/invoke.test.d.ts.map +1 -0
  76. package/dist/lib/invoke.test.js +82 -0
  77. package/dist/lib/invoke.test.js.map +1 -0
  78. package/dist/lib/persona.d.ts +22 -1
  79. package/dist/lib/persona.d.ts.map +1 -1
  80. package/dist/lib/persona.js +176 -31
  81. package/dist/lib/persona.js.map +1 -1
  82. package/dist/lib/persona.test.d.ts +2 -0
  83. package/dist/lib/persona.test.d.ts.map +1 -0
  84. package/dist/lib/persona.test.js +324 -0
  85. package/dist/lib/persona.test.js.map +1 -0
  86. package/dist/lib/processor.d.ts +50 -0
  87. package/dist/lib/processor.d.ts.map +1 -0
  88. package/dist/lib/processor.js +135 -0
  89. package/dist/lib/processor.js.map +1 -0
  90. package/dist/lib/processor.test.d.ts +2 -0
  91. package/dist/lib/processor.test.d.ts.map +1 -0
  92. package/dist/lib/processor.test.js +134 -0
  93. package/dist/lib/processor.test.js.map +1 -0
  94. package/dist/lib/registry.d.ts +109 -0
  95. package/dist/lib/registry.d.ts.map +1 -0
  96. package/dist/lib/registry.js +192 -0
  97. package/dist/lib/registry.js.map +1 -0
  98. package/dist/lib/registry.test.d.ts +2 -0
  99. package/dist/lib/registry.test.d.ts.map +1 -0
  100. package/dist/lib/registry.test.js +236 -0
  101. package/dist/lib/registry.test.js.map +1 -0
  102. package/dist/lib/session-thread.d.ts +75 -0
  103. package/dist/lib/session-thread.d.ts.map +1 -0
  104. package/dist/lib/session-thread.js +132 -0
  105. package/dist/lib/session-thread.js.map +1 -0
  106. package/dist/lib/session-thread.test.d.ts +2 -0
  107. package/dist/lib/session-thread.test.d.ts.map +1 -0
  108. package/dist/lib/session-thread.test.js +235 -0
  109. package/dist/lib/session-thread.test.js.map +1 -0
  110. package/dist/lib/session.d.ts +150 -0
  111. package/dist/lib/session.d.ts.map +1 -0
  112. package/dist/lib/session.js +183 -0
  113. package/dist/lib/session.js.map +1 -0
  114. package/dist/lib/session.test.d.ts +2 -0
  115. package/dist/lib/session.test.d.ts.map +1 -0
  116. package/dist/lib/session.test.js +336 -0
  117. package/dist/lib/session.test.js.map +1 -0
  118. package/dist/lib/types/channel.d.ts +4 -0
  119. package/dist/lib/types/channel.d.ts.map +1 -1
  120. package/dist/lib/types/persona.d.ts +49 -6
  121. package/dist/lib/types/persona.d.ts.map +1 -1
  122. package/internal/personas/_base/PERSONA.md +222 -39
  123. package/internal/skills/channels/list/SKILL.md +76 -0
  124. package/package.json +6 -2
@@ -0,0 +1,402 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { execa } from "execa";
4
+ import { relative } from "node:path";
5
+ import { writeFile, mkdir } from "node:fs/promises";
6
+ import { tmpdir } from "node:os";
7
+ import { join } from "node:path";
8
+ import { requireConfig, listPersonas, loadPersona, resolvePersona, expandVariables, createExecutionContext,
9
+ // Legacy session support (for --session-id backwards compatibility)
10
+ readSession,
11
+ // New session-as-thread support
12
+ startSession, endSession,
13
+ // Project registry for FROM_ADDRESS
14
+ getProjectNameByPath,
15
+ // Environment discovery
16
+ getEnvironmentContextMarkdown, } from "../../lib/index.js";
17
+ export const personasCommand = new Command("personas")
18
+ .description("Manage and run personas")
19
+ .action(() => {
20
+ personasCommand.help();
21
+ });
22
+ personasCommand
23
+ .command("list")
24
+ .description("List available personas")
25
+ .option("-v, --verbose", "Show detailed information")
26
+ .action(async (options) => {
27
+ try {
28
+ const config = await requireConfig();
29
+ // Check for root persona (.agents/PERSONA.md)
30
+ const { loadRootPersona } = await import("../../lib/persona.js");
31
+ const rootPersona = await loadRootPersona(config.agentsDir);
32
+ const personaPaths = await listPersonas(config.personasDir);
33
+ const totalCount = personaPaths.length + (rootPersona ? 1 : 0);
34
+ if (totalCount === 0) {
35
+ console.log(chalk.yellow("No personas found"));
36
+ return;
37
+ }
38
+ console.log(chalk.blue(`Personas (${totalCount}):\n`));
39
+ // Show root persona first if it exists
40
+ if (rootPersona) {
41
+ console.log(chalk.green(` root (default)`));
42
+ if (rootPersona.description) {
43
+ console.log(chalk.dim(` ${rootPersona.description}`));
44
+ }
45
+ if (options.verbose) {
46
+ const cmd = Array.isArray(rootPersona.cmd)
47
+ ? rootPersona.cmd[0]
48
+ : typeof rootPersona.cmd === "object" && rootPersona.cmd !== null
49
+ ? rootPersona.cmd.interactive?.[0] || rootPersona.cmd.headless?.[0]
50
+ : rootPersona.cmd;
51
+ if (cmd) {
52
+ console.log(chalk.dim(` Command: ${cmd}`));
53
+ }
54
+ }
55
+ console.log();
56
+ }
57
+ for (const personaPath of personaPaths) {
58
+ try {
59
+ const persona = await loadPersona(personaPath);
60
+ const relPath = relative(config.personasDir, personaPath);
61
+ // Skip _project if root persona came from there (avoid duplicate)
62
+ if (relPath === "_project" && rootPersona?.path === personaPath) {
63
+ continue;
64
+ }
65
+ console.log(chalk.white(` ${relPath}`));
66
+ if (persona.description) {
67
+ console.log(chalk.dim(` ${persona.description}`));
68
+ }
69
+ if (options.verbose) {
70
+ const cmd = Array.isArray(persona.cmd)
71
+ ? persona.cmd[0]
72
+ : typeof persona.cmd === "object" && persona.cmd !== null
73
+ ? persona.cmd.interactive?.[0] || persona.cmd.headless?.[0]
74
+ : persona.cmd;
75
+ if (cmd) {
76
+ console.log(chalk.dim(` Command: ${cmd}`));
77
+ }
78
+ if (persona.skills && persona.skills.length > 0) {
79
+ console.log(chalk.dim(` Skills: ${persona.skills.join(", ")}`));
80
+ }
81
+ if (persona.env && Object.keys(persona.env).length > 0) {
82
+ console.log(chalk.dim(` Env: ${Object.keys(persona.env).join(", ")}`));
83
+ }
84
+ }
85
+ console.log();
86
+ }
87
+ catch (error) {
88
+ console.log(chalk.red(` ${personaPath} (invalid)`));
89
+ if (options.verbose) {
90
+ console.log(chalk.red(` Error: ${error.message}`));
91
+ }
92
+ console.log();
93
+ }
94
+ }
95
+ }
96
+ catch (error) {
97
+ console.error(chalk.red(`Error: ${error.message}`));
98
+ process.exit(1);
99
+ }
100
+ });
101
+ personasCommand
102
+ .command("run")
103
+ .description("Run a persona directly (defaults to root persona if no name given)")
104
+ .argument("[name]", "Persona name/path (e.g., developer, claude/autonomous). Defaults to 'root'")
105
+ .option("-p, --prompt <text>", "Prompt to pass to the persona")
106
+ .option("--interactive", "Run in interactive mode (default)")
107
+ .option("--headless", "Run in headless/print mode")
108
+ .option("-w, --working-dir <path>", "Working directory")
109
+ .option("-s, --session-id <id>", "Resume an existing session")
110
+ .option("--upstream <address>", "Upstream return address (e.g., @odin:dottie --session-id abc)")
111
+ .option("-v, --verbose", "Verbose output")
112
+ .action(async (name, options) => {
113
+ const startedAt = new Date();
114
+ try {
115
+ const config = await requireConfig();
116
+ // Resolve persona path
117
+ let personaPath;
118
+ if (!name || name === "root") {
119
+ // No name or "root" - use root persona (.agents/PERSONA.md)
120
+ personaPath = config.agentsDir;
121
+ }
122
+ else if (name.startsWith("/")) {
123
+ personaPath = name;
124
+ }
125
+ else {
126
+ personaPath = `${config.personasDir}/${name}`;
127
+ }
128
+ if (options.verbose) {
129
+ console.log(chalk.dim(`Resolving persona: ${personaPath}`));
130
+ }
131
+ // Resolve persona with inheritance
132
+ const persona = await resolvePersona(personaPath, config.personasDir);
133
+ if (options.verbose) {
134
+ console.log(chalk.dim(`Found persona: ${persona.name}`));
135
+ console.log(chalk.dim(`Inheritance chain: ${persona.inheritanceChain.join(" → ")}`));
136
+ }
137
+ // Determine execution mode
138
+ let interactive = true; // Default to interactive
139
+ if (options.interactive && options.headless) {
140
+ console.error(chalk.red("Cannot specify both --interactive and --headless"));
141
+ process.exit(1);
142
+ }
143
+ else if (options.headless) {
144
+ interactive = false;
145
+ }
146
+ else if (options.interactive) {
147
+ interactive = true;
148
+ }
149
+ // Validate mode support
150
+ if (interactive && !persona.commands.interactive) {
151
+ console.error(chalk.red(`Persona '${persona.name}' does not support interactive mode`));
152
+ process.exit(1);
153
+ }
154
+ if (!interactive && !persona.commands.headless) {
155
+ console.error(chalk.red(`Persona '${persona.name}' does not support headless mode`));
156
+ process.exit(1);
157
+ }
158
+ // Select command
159
+ const cmds = interactive
160
+ ? persona.commands.interactive
161
+ : persona.commands.headless;
162
+ if (!cmds || cmds.length === 0) {
163
+ console.error(chalk.red(`No commands configured for ${interactive ? "interactive" : "headless"} mode`));
164
+ process.exit(1);
165
+ }
166
+ // Determine working directory
167
+ const workingDir = options.workingDir ?? process.cwd();
168
+ // Handle session: resume legacy session or create new thread-based session
169
+ let legacySession = null;
170
+ let sessionThread = null;
171
+ let sessionId;
172
+ let workspacePath;
173
+ if (options.sessionId) {
174
+ // Try to resume existing legacy session (backwards compatibility)
175
+ legacySession = await readSession(config.sessionsDir, options.sessionId);
176
+ if (!legacySession) {
177
+ // TODO: In future, also check #sessions channel for thread-based sessions
178
+ console.error(chalk.red(`Session not found: ${options.sessionId}`));
179
+ process.exit(1);
180
+ }
181
+ sessionId = legacySession.id;
182
+ workspacePath = legacySession.path;
183
+ if (options.verbose) {
184
+ console.log(chalk.dim(`Resuming legacy session: ${sessionId}`));
185
+ }
186
+ }
187
+ else {
188
+ // Create new thread-based session
189
+ sessionThread = await startSession({
190
+ channelsDir: config.channelsDir,
191
+ persona: persona.name,
192
+ mode: interactive ? "interactive" : "headless",
193
+ trigger: "manual",
194
+ goal: options.prompt ? `${options.prompt.substring(0, 100)}...` : undefined,
195
+ upstream: options.upstream,
196
+ });
197
+ sessionId = sessionThread.id;
198
+ workspacePath = sessionThread.workspacePath;
199
+ if (options.verbose) {
200
+ console.log(chalk.dim(`Created session thread: ${sessionId}`));
201
+ }
202
+ }
203
+ // Build FROM_ADDRESS for callback routing
204
+ // Format: #project/sessions:session-id (if registered project) or #sessions:session-id (local)
205
+ let fromAddress = `#sessions:${sessionId}`;
206
+ const projectName = await getProjectNameByPath(config.agentsDir);
207
+ if (projectName) {
208
+ fromAddress = `#${projectName}/sessions:${sessionId}`;
209
+ }
210
+ // Create execution context with session
211
+ const context = createExecutionContext({
212
+ PERSONA_NAME: persona.name,
213
+ PERSONA_DIR: persona.path,
214
+ SESSION_ID: sessionId,
215
+ SESSION_THREAD_ID: sessionId, // Alias for clarity
216
+ SESSION_WORKSPACE: workspacePath,
217
+ FROM_ADDRESS: fromAddress,
218
+ });
219
+ // Build environment
220
+ // Note: We set both prefixed (DOT_AGENTS_*) and unprefixed versions
221
+ // The unprefixed versions match what _base persona documents ($SESSION_ID, etc.)
222
+ const env = {
223
+ ...process.env,
224
+ ...persona.env,
225
+ DOT_AGENTS_PERSONA: persona.path,
226
+ DOT_AGENTS_SESSION_ID: sessionId,
227
+ DOT_AGENTS_SESSION_THREAD_ID: sessionId,
228
+ DOT_AGENTS_SESSION_WORKSPACE: workspacePath,
229
+ // Unprefixed versions for persona use (matches _base documentation)
230
+ SESSION_ID: sessionId,
231
+ SESSION_THREAD_ID: sessionId,
232
+ SESSION_WORKSPACE: workspacePath,
233
+ FROM_ADDRESS: fromAddress,
234
+ };
235
+ // Expand environment variable values
236
+ for (const [key, value] of Object.entries(env)) {
237
+ if (value) {
238
+ env[key] = expandVariables(value, context, env);
239
+ }
240
+ }
241
+ // Write MCP config to temp file if present
242
+ let mcpConfigPath;
243
+ if (persona.mcpConfig) {
244
+ const mcpDir = join(tmpdir(), "dot-agents-mcp");
245
+ await mkdir(mcpDir, { recursive: true });
246
+ mcpConfigPath = join(mcpDir, `${persona.name}-${Date.now()}.json`);
247
+ await writeFile(mcpConfigPath, JSON.stringify(persona.mcpConfig, null, 2));
248
+ if (options.verbose) {
249
+ console.log(chalk.dim(`MCP config: ${mcpConfigPath}`));
250
+ }
251
+ }
252
+ // Write hooks config to temp settings file if present (Claude-specific)
253
+ // Claude Code reads hooks from settings.local.json in the project .claude directory
254
+ let hooksConfigPath;
255
+ if (persona.hooksConfig) {
256
+ const hooksDir = join(tmpdir(), "dot-agents-hooks");
257
+ await mkdir(hooksDir, { recursive: true });
258
+ hooksConfigPath = join(hooksDir, `${persona.name}-${Date.now()}.json`);
259
+ const settingsContent = { hooks: persona.hooksConfig };
260
+ await writeFile(hooksConfigPath, JSON.stringify(settingsContent, null, 2));
261
+ if (options.verbose) {
262
+ console.log(chalk.dim(`Hooks config: ${hooksConfigPath}`));
263
+ }
264
+ }
265
+ // Build the full prompt (system prompt + environment + session context + user prompt)
266
+ const promptParts = [];
267
+ if (persona.prompt) {
268
+ promptParts.push(persona.prompt);
269
+ }
270
+ // Inject environment discovery context
271
+ const environmentContext = await getEnvironmentContextMarkdown(config);
272
+ if (promptParts.length > 0) {
273
+ promptParts.push("\n---\n");
274
+ }
275
+ promptParts.push(environmentContext);
276
+ // Include session context when resuming legacy session
277
+ if (legacySession?.content) {
278
+ if (promptParts.length > 0) {
279
+ promptParts.push("\n---\n");
280
+ }
281
+ promptParts.push("# Previous Session Context\n");
282
+ promptParts.push("You are resuming a previous session. Here is the context from that session:\n");
283
+ promptParts.push(legacySession.content);
284
+ }
285
+ if (options.prompt) {
286
+ if (promptParts.length > 0) {
287
+ promptParts.push("\n---\n");
288
+ }
289
+ promptParts.push(options.prompt);
290
+ }
291
+ const fullPrompt = promptParts.join("\n");
292
+ if (options.verbose) {
293
+ console.log(chalk.dim(`Execution mode: ${interactive ? "interactive" : "headless"}`));
294
+ console.log(chalk.dim(`Working dir: ${workingDir}`));
295
+ console.log(chalk.dim(`Command: ${cmds[0]}`));
296
+ if (persona.prompt) {
297
+ console.log(chalk.dim(`System prompt: ${persona.prompt.substring(0, 100)}...`));
298
+ }
299
+ }
300
+ // Try each command in order
301
+ let lastError = null;
302
+ let success = false;
303
+ let stdout = "";
304
+ let stderr = "";
305
+ let exitCode = 1;
306
+ for (const cmd of cmds) {
307
+ try {
308
+ const expandedCmd = expandVariables(cmd, context, env);
309
+ let [command, ...args] = expandedCmd.split(/\s+/);
310
+ // Inject MCP config if present (Claude-specific for now)
311
+ if (mcpConfigPath && command === "claude") {
312
+ args = ["--mcp-config", mcpConfigPath, ...args];
313
+ }
314
+ // Inject hooks config if present (Claude-specific for now)
315
+ if (hooksConfigPath && command === "claude") {
316
+ args = ["--settings", hooksConfigPath, ...args];
317
+ }
318
+ if (options.verbose) {
319
+ console.log(chalk.dim(`Executing: ${command} ${args.join(" ")}`));
320
+ }
321
+ if (interactive) {
322
+ // Interactive mode: pass full prompt as CLI argument, inherit stdio
323
+ // Show session info before starting
324
+ console.log(chalk.dim(`Session: ${sessionId}`));
325
+ console.log(chalk.dim(`Workspace: ${workspacePath}`));
326
+ console.log();
327
+ const execArgs = fullPrompt ? [...args, fullPrompt] : args;
328
+ const result = await execa(command, execArgs, {
329
+ cwd: workingDir,
330
+ env,
331
+ stdio: "inherit",
332
+ reject: false,
333
+ });
334
+ exitCode = result.exitCode ?? 1;
335
+ if (exitCode === 0) {
336
+ success = true;
337
+ break;
338
+ }
339
+ lastError = new Error(`Command exited with code ${exitCode}`);
340
+ }
341
+ else {
342
+ // Headless mode: pass full prompt via stdin
343
+ if (fullPrompt) {
344
+ const result = await execa(command, args, {
345
+ input: fullPrompt,
346
+ cwd: workingDir,
347
+ env,
348
+ reject: false,
349
+ });
350
+ stdout = result.stdout ?? "";
351
+ stderr = result.stderr ?? "";
352
+ exitCode = result.exitCode ?? 1;
353
+ if (stdout) {
354
+ console.log(stdout);
355
+ }
356
+ if (exitCode === 0) {
357
+ success = true;
358
+ break;
359
+ }
360
+ if (stderr) {
361
+ console.error(stderr);
362
+ }
363
+ lastError = new Error(`Command exited with code ${exitCode}`);
364
+ }
365
+ else {
366
+ console.error(chalk.red("Headless mode requires --prompt or a persona with a system prompt"));
367
+ process.exit(1);
368
+ }
369
+ }
370
+ }
371
+ catch (error) {
372
+ lastError = error;
373
+ }
374
+ }
375
+ const endedAt = new Date();
376
+ const duration = endedAt.getTime() - startedAt.getTime();
377
+ // Finalize session for headless mode (interactive sessions are managed by the user/persona)
378
+ if (!interactive && sessionThread) {
379
+ await endSession(sessionThread, {
380
+ success,
381
+ exitCode,
382
+ duration,
383
+ error: lastError?.message,
384
+ });
385
+ }
386
+ if (!success) {
387
+ console.error(chalk.red(`Failed to run persona: ${lastError?.message ?? "unknown error"}`));
388
+ process.exit(exitCode);
389
+ }
390
+ // Show session info after interactive session ends
391
+ if (interactive) {
392
+ console.log();
393
+ console.log(chalk.dim(`Session ended: ${sessionId}`));
394
+ console.log(chalk.dim(`Thread: #sessions/${sessionId}`));
395
+ }
396
+ }
397
+ catch (error) {
398
+ console.error(chalk.red(`Error: ${error.message}`));
399
+ process.exit(1);
400
+ }
401
+ });
402
+ //# sourceMappingURL=personas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../../src/cli/commands/personas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const projectsCommand: Command;
3
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,eAAO,MAAM,eAAe,SAIxB,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { stat } from "node:fs/promises";
4
+ import { join } from "node:path";
5
+ import { homedir } from "node:os";
6
+ import { registerProject, unregisterProject, listProjects, getRegistryPath, getDaemonStatus, } from "../../lib/index.js";
7
+ /**
8
+ * Resolve a path, expanding ~ and auto-discovering .agents directory
9
+ */
10
+ async function resolveProjectPath(inputPath) {
11
+ // Expand ~ to home directory
12
+ const expandedPath = inputPath.startsWith("~")
13
+ ? join(homedir(), inputPath.slice(1))
14
+ : inputPath;
15
+ // Check if path ends with .agents
16
+ if (expandedPath.endsWith(".agents")) {
17
+ // Verify it exists
18
+ try {
19
+ const stats = await stat(expandedPath);
20
+ if (!stats.isDirectory()) {
21
+ throw new Error(`Path is not a directory: ${expandedPath}`);
22
+ }
23
+ return expandedPath;
24
+ }
25
+ catch (error) {
26
+ if (error.code === "ENOENT") {
27
+ throw new Error(`Directory not found: ${expandedPath}`);
28
+ }
29
+ throw error;
30
+ }
31
+ }
32
+ // Try auto-discovering .agents directory
33
+ const agentsPath = join(expandedPath, ".agents");
34
+ try {
35
+ const stats = await stat(agentsPath);
36
+ if (stats.isDirectory()) {
37
+ return agentsPath;
38
+ }
39
+ }
40
+ catch {
41
+ // .agents doesn't exist, check if user path itself exists
42
+ try {
43
+ await stat(expandedPath);
44
+ throw new Error(`No .agents directory found at ${agentsPath}. Create one or specify the full path.`);
45
+ }
46
+ catch (innerError) {
47
+ if (innerError.code === "ENOENT") {
48
+ throw new Error(`Directory not found: ${expandedPath}`);
49
+ }
50
+ throw innerError;
51
+ }
52
+ }
53
+ throw new Error(`No .agents directory found at ${agentsPath}`);
54
+ }
55
+ export const projectsCommand = new Command("projects")
56
+ .description("Manage registered projects for cross-project channel routing")
57
+ .action(() => {
58
+ projectsCommand.help();
59
+ });
60
+ projectsCommand
61
+ .command("add")
62
+ .description("Register a project for cross-project channel routing")
63
+ .argument("<name>", "Project name (used in channel addresses like @project/persona)")
64
+ .argument("<path>", "Path to the project (auto-discovers .agents directory)")
65
+ .action(async (name, path) => {
66
+ try {
67
+ const resolvedPath = await resolveProjectPath(path);
68
+ await registerProject(name, resolvedPath);
69
+ console.log(chalk.green(`Registered project: ${name}`));
70
+ console.log(chalk.dim(` Path: ${resolvedPath}`));
71
+ console.log();
72
+ console.log(chalk.cyan("Usage:"));
73
+ console.log(chalk.dim(` npx dot-agents channels publish "@${name}/persona" "message"`));
74
+ console.log(chalk.dim(` npx dot-agents channels read "@${name}/persona"`));
75
+ }
76
+ catch (error) {
77
+ console.error(chalk.red(`Error: ${error.message}`));
78
+ process.exit(1);
79
+ }
80
+ });
81
+ projectsCommand
82
+ .command("remove")
83
+ .description("Remove a project from the registry")
84
+ .argument("<name>", "Project name to remove")
85
+ .action(async (name) => {
86
+ try {
87
+ const removed = await unregisterProject(name);
88
+ if (removed) {
89
+ console.log(chalk.green(`Removed project: ${name}`));
90
+ }
91
+ else {
92
+ console.log(chalk.yellow(`Project not found: ${name}`));
93
+ }
94
+ }
95
+ catch (error) {
96
+ console.error(chalk.red(`Error: ${error.message}`));
97
+ process.exit(1);
98
+ }
99
+ });
100
+ projectsCommand
101
+ .command("list")
102
+ .description("List all registered projects")
103
+ .action(async () => {
104
+ try {
105
+ const projects = await listProjects();
106
+ console.log(chalk.dim(`Registry: ${getRegistryPath()}`));
107
+ console.log();
108
+ if (projects.length === 0) {
109
+ console.log(chalk.yellow("No projects registered"));
110
+ console.log();
111
+ console.log(chalk.cyan("To register a project:"));
112
+ console.log(chalk.dim(" npx dot-agents projects add <name> /path/to/project"));
113
+ return;
114
+ }
115
+ console.log(chalk.blue(`Registered projects (${projects.length}):\n`));
116
+ // Calculate max name length for alignment
117
+ const maxNameLength = Math.max(...projects.map((p) => p.name.length));
118
+ for (const { name, path } of projects) {
119
+ const daemonStatus = await getDaemonStatus(path);
120
+ const padding = " ".repeat(maxNameLength - name.length + 2);
121
+ let statusStr;
122
+ if (daemonStatus.running) {
123
+ statusStr = chalk.green(`● running (pid ${daemonStatus.pid})`);
124
+ }
125
+ else {
126
+ statusStr = chalk.dim("○ stopped");
127
+ }
128
+ console.log(chalk.white(` ${name}`) + padding + statusStr);
129
+ console.log(chalk.dim(` ${path}`));
130
+ console.log();
131
+ }
132
+ }
133
+ catch (error) {
134
+ console.error(chalk.red(`Error: ${error.message}`));
135
+ process.exit(1);
136
+ }
137
+ });
138
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/cli/commands/projects.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,UAAU,SAoJnB,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,UAAU,SA8InB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Command } from "commander";
2
2
  import chalk from "chalk";
3
3
  import { requireConfig, findWorkflow, resolvePersona, validateInputs, } from "../../lib/index.js";
4
- import { runWorkflow, writeExecutionLog } from "../lib/runner.js";
4
+ import { runWorkflow } from "../lib/runner.js";
5
5
  export const runCommand = new Command("run")
6
6
  .description("Run a workflow")
7
7
  .argument("<name>", "Workflow name to run")
@@ -96,18 +96,17 @@ export const runCommand = new Command("run")
96
96
  timeout: options.timeout,
97
97
  dryRun: options.dryRun,
98
98
  interactive,
99
+ sessionsDir: config.sessionsDir,
99
100
  });
100
101
  if (options.dryRun) {
101
102
  console.log(result.stdout);
102
103
  return;
103
104
  }
104
- // Write log
105
- const logPath = await writeExecutionLog(config.sessionsDir, { workflowName: workflow.name, personaName: persona.name }, result);
106
105
  if (result.success) {
107
106
  console.log(chalk.green(`\n✓ Workflow completed successfully`));
108
107
  console.log(chalk.dim(` Run ID: ${result.runId}`));
109
108
  console.log(chalk.dim(` Duration: ${result.duration}ms`));
110
- console.log(chalk.dim(` Log: ${logPath}`));
109
+ console.log(chalk.dim(` Session: ${config.sessionsDir}`));
111
110
  if (options.verbose && result.stdout) {
112
111
  console.log(chalk.dim("\n--- Output ---"));
113
112
  console.log(result.stdout);
@@ -117,7 +116,7 @@ export const runCommand = new Command("run")
117
116
  console.error(chalk.red(`\n✗ Workflow failed`));
118
117
  console.error(chalk.dim(` Run ID: ${result.runId}`));
119
118
  console.error(chalk.dim(` Exit code: ${result.exitCode}`));
120
- console.error(chalk.dim(` Log: ${logPath}`));
119
+ console.error(chalk.dim(` Session: ${config.sessionsDir}`));
121
120
  if (result.stderr) {
122
121
  console.error(chalk.red("\n--- Error ---"));
123
122
  console.error(result.stderr);