@agentled/cli 0.7.4 → 0.7.6

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 CHANGED
@@ -221,6 +221,7 @@ The CLI now includes dedicated command groups matching MCP domains:
221
221
  - `agentled intent do ...`
222
222
  - `agentled proactive-agents ...`
223
223
  - `agentled models list`
224
+ - `agentled clients feedback add|reply|validate|sync`
224
225
 
225
226
  ## Running workflows
226
227
 
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerClientsCommands(program: Command): void;
@@ -0,0 +1,408 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { AgentledClient } from '../client.js';
4
+ import { findWorkspaceDir } from '../utils/workspace-folder.js';
5
+ import { printError, printOutput } from '../utils/output.js';
6
+ const defaultClient = (slug, name) => ({
7
+ name: name ?? slug,
8
+ stage: 'active-sprint',
9
+ workspaceAlias: slug,
10
+ primaryWorkflowIds: [],
11
+ goals: [],
12
+ risks: [],
13
+ nextActions: [],
14
+ lastClientUpdate: null,
15
+ });
16
+ const DOSSIER_GUIDANCE = `# Client Dossier Operating Guide
17
+
18
+ This dossier is local-first and DFE-facing. Keep it practical and execution-oriented.
19
+
20
+ ## What goes here (DFE operating trail)
21
+ - Client context in \`client.json\`
22
+ - POCs in \`contacts.json\`
23
+ - Meeting notes in \`meetings/\`
24
+ - Decisions and approvals in \`decisions/\`
25
+ - Feedback snapshots in \`feedback/\`
26
+ - Draft replies/emails in \`replies/\`
27
+ - Validation evidence in \`validation/\`
28
+
29
+ ## What should NOT go here
30
+ - Full implementation design docs for reusable platform architecture
31
+ - Long-form ADRs or general system design notes
32
+ - Prompt experiments unrelated to this specific client outcome
33
+
34
+ ## Separation from KG text / design docs
35
+ - \`kg.text\` should contain durable, reusable product or workflow knowledge.
36
+ - Client dossiers should contain engagement execution context (who asked what, when, and what was approved).
37
+ - If a client-specific decision becomes reusable, summarize it into a design doc/KG entry and link back to the originating meeting or decision file.
38
+ `;
39
+ function slugify(s) {
40
+ return s.toLowerCase().trim().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
41
+ }
42
+ function normalizeClientSlug(slug) {
43
+ if (slug.includes('..') || /[\\/]/.test(slug)) {
44
+ printError(`Invalid client slug: ${slug}`);
45
+ }
46
+ const normalized = slugify(slug);
47
+ if (!normalized)
48
+ printError(`Invalid client slug: ${slug}`);
49
+ return normalized;
50
+ }
51
+ function requireWorkspace() {
52
+ const wsDir = findWorkspaceDir(process.cwd());
53
+ if (!wsDir)
54
+ printError('No Agentled workspace folder found. Run this from an agentled_<slug> folder.');
55
+ return wsDir;
56
+ }
57
+ function resolveClientsRoot() {
58
+ return join(requireWorkspace(), 'clients');
59
+ }
60
+ function resolveClientDir(slug) {
61
+ return join(resolveClientsRoot(), normalizeClientSlug(slug));
62
+ }
63
+ function ensureClientDir(slug) {
64
+ const dir = resolveClientDir(slug);
65
+ mkdirSync(dir, { recursive: true });
66
+ return dir;
67
+ }
68
+ function readJson(path) {
69
+ if (!existsSync(path))
70
+ return null;
71
+ return JSON.parse(readFileSync(path, 'utf-8'));
72
+ }
73
+ function readJsonArray(path) {
74
+ const raw = readJson(path);
75
+ return Array.isArray(raw) ? raw : [];
76
+ }
77
+ function dateStamp() {
78
+ return new Date().toISOString().slice(0, 10);
79
+ }
80
+ function latestFile(dir, extensions = ['.md', '.json']) {
81
+ if (!existsSync(dir))
82
+ return null;
83
+ const files = readdirSync(dir).filter((f) => extensions.some((ext) => f.endsWith(ext))).sort();
84
+ return files.length ? files[files.length - 1] : null;
85
+ }
86
+ function latestFilePath(dir, extensions = ['.md', '.json']) {
87
+ const file = latestFile(dir, extensions);
88
+ return file ? join(dir, file) : null;
89
+ }
90
+ function readOptionalFile(path) {
91
+ if (!path || !existsSync(path))
92
+ return null;
93
+ return readFileSync(path, 'utf-8').trim();
94
+ }
95
+ function countDepartmentPocProfiles(clientDir) {
96
+ const departmentsDir = join(clientDir, 'departments');
97
+ if (!existsSync(departmentsDir))
98
+ return { departments: 0, pocProfiles: 0 };
99
+ const departmentDirs = readdirSync(departmentsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory());
100
+ let profiles = 0;
101
+ for (const dep of departmentDirs) {
102
+ const pocDir = join(departmentsDir, dep.name, 'pocs');
103
+ if (!existsSync(pocDir))
104
+ continue;
105
+ profiles += readdirSync(pocDir).filter((file) => file.endsWith('_poc_profile.md')).length;
106
+ }
107
+ return { departments: departmentDirs.length, pocProfiles: profiles };
108
+ }
109
+ function buildSyncContent(params) {
110
+ const clientName = typeof params.client?.name === 'string' ? params.client.name : params.clientSlug;
111
+ const lines = [
112
+ `# Client Dossier Sync: ${clientName}`,
113
+ '',
114
+ `Client slug: ${params.clientSlug}`,
115
+ `Synced at: ${new Date().toISOString()}`,
116
+ '',
117
+ '## Client context',
118
+ '```json',
119
+ JSON.stringify(params.client ?? {}, null, 2),
120
+ '```',
121
+ '',
122
+ '## Linked workflows',
123
+ '```json',
124
+ JSON.stringify(params.workflows, null, 2),
125
+ '```',
126
+ '',
127
+ ];
128
+ if (params.includeDecisions) {
129
+ lines.push('## Latest decision', readOptionalFile(params.decisionPath) ?? '_No decision file found._', '');
130
+ }
131
+ if (params.includeSummary) {
132
+ lines.push('## Latest validation summary', readOptionalFile(params.validationPath) ?? '_No validation file found._', '');
133
+ }
134
+ return lines.join('\n');
135
+ }
136
+ export function registerClientsCommands(program) {
137
+ const clients = program.command('clients').description('Manage local client dossiers and delivery ops in agentled workspace folders.');
138
+ clients
139
+ .command('init')
140
+ .argument('<slug>')
141
+ .option('--name <name>')
142
+ .option('--force', 'Overwrite existing files', false)
143
+ .option('--format <fmt>', 'Output format', 'json')
144
+ .action((slug, opts) => {
145
+ const clientSlug = normalizeClientSlug(slug);
146
+ const dir = resolveClientDir(clientSlug);
147
+ if (existsSync(dir) && !opts.force)
148
+ printError(`Client dossier already exists: ${dir}. Use --force to overwrite.`);
149
+ mkdirSync(join(dir, 'meetings'), { recursive: true });
150
+ mkdirSync(join(dir, 'decisions'), { recursive: true });
151
+ mkdirSync(join(dir, 'feedback'), { recursive: true });
152
+ mkdirSync(join(dir, 'replies'), { recursive: true });
153
+ mkdirSync(join(dir, 'validation'), { recursive: true });
154
+ mkdirSync(join(dir, 'departments', 'general', 'pocs'), { recursive: true });
155
+ writeFileSync(join(dir, 'client.json'), JSON.stringify(defaultClient(clientSlug, opts.name), null, 2) + '\n');
156
+ writeFileSync(join(dir, 'contacts.json'), JSON.stringify([], null, 2) + '\n');
157
+ writeFileSync(join(dir, 'workflows.json'), JSON.stringify([], null, 2) + '\n');
158
+ writeFileSync(join(dir, 'README.md'), DOSSIER_GUIDANCE + '\n');
159
+ writeFileSync(join(dir, 'replies', 'README.md'), '# Reply drafts\n\nStore draft client replies and emails as Markdown files.\n');
160
+ writeFileSync(join(dir, 'validation', 'README.md'), '# Validation notes\n\nTrack validation evidence and blockers with links to execution IDs/timelines.\n');
161
+ writeFileSync(join(dir, 'departments', 'README.md'), '# Departments and POCs\n\nUse one folder per client department/team.\n\nExample structure:\n- departments/sales/pocs/sales_poc_profile.md\n- departments/ops/pocs/ops_poc_profile.md\n');
162
+ writeFileSync(join(dir, 'departments', 'general', 'README.md'), '# General department\n\nDefault area for cross-team context before splitting into team folders.\n');
163
+ writeFileSync(join(dir, 'departments', 'general', 'pocs', 'general_poc_profile.md'), '# General POC Profile\n\n## Name\n\n## Team / Department\n\n## Role\n\n## Email\n\n## Decision Scope\n\n## Communication Style\n\n## Notes\n');
164
+ printOutput({ slug: clientSlug, path: dir, created: true }, (opts.format ?? 'json'));
165
+ });
166
+ clients.command('list').option('--format <fmt>', 'Output format', 'json').action((opts) => {
167
+ const root = resolveClientsRoot();
168
+ if (!existsSync(root))
169
+ return printOutput([], (opts.format ?? 'json'));
170
+ const rows = readdirSync(root, { withFileTypes: true })
171
+ .filter((e) => e.isDirectory())
172
+ .filter((e) => existsSync(join(root, e.name, 'client.json')))
173
+ .map((e) => {
174
+ const dir = join(root, e.name);
175
+ const c = readJson(join(dir, 'client.json'));
176
+ return { slug: e.name, name: c?.name ?? e.name, stage: c?.stage ?? 'unknown', lastMeeting: latestFile(join(dir, 'meetings')), openNextActions: c?.nextActions?.length ?? 0 };
177
+ });
178
+ printOutput(rows, (opts.format ?? 'json'));
179
+ });
180
+ clients.command('status').argument('<slug>').option('--format <fmt>', 'Output format', 'json').action((slug, opts) => {
181
+ const clientSlug = normalizeClientSlug(slug);
182
+ const dir = resolveClientDir(clientSlug);
183
+ if (!existsSync(dir))
184
+ printError(`Client dossier not found: ${clientSlug}`);
185
+ const client = readJson(join(dir, 'client.json'));
186
+ const contacts = readJsonArray(join(dir, 'contacts.json'));
187
+ const workflows = readJsonArray(join(dir, 'workflows.json'));
188
+ const pocStats = countDepartmentPocProfiles(dir);
189
+ printOutput({
190
+ client,
191
+ contactsCount: contacts.length,
192
+ latestMeeting: latestFile(join(dir, 'meetings')),
193
+ departmentsRoot: join(dir, 'departments'),
194
+ latestFeedback: latestFile(join(dir, 'feedback')),
195
+ openDecisions: existsSync(join(dir, 'decisions')) ? readdirSync(join(dir, 'decisions')).length : 0,
196
+ linkedWorkflows: workflows.length,
197
+ departments: pocStats.departments,
198
+ pocProfiles: pocStats.pocProfiles,
199
+ }, (opts.format ?? 'json'));
200
+ });
201
+ clients.command('brief').argument('<slug>').option('--format <fmt>', 'Output format', 'json').action((slug, opts) => {
202
+ const clientSlug = normalizeClientSlug(slug);
203
+ const dir = resolveClientDir(clientSlug);
204
+ if (!existsSync(dir))
205
+ printError(`Client dossier not found: ${clientSlug}`);
206
+ const client = readJson(join(dir, 'client.json'));
207
+ const contacts = readJsonArray(join(dir, 'contacts.json'));
208
+ const lines = [
209
+ `Client: ${client?.name ?? clientSlug} (${clientSlug})`,
210
+ `Stage: ${client?.stage ?? 'unknown'}`,
211
+ `Goals: ${client?.goals?.join('; ') || 'none'}`,
212
+ `Risks: ${client?.risks?.join('; ') || 'none'}`,
213
+ `Next actions: ${client?.nextActions?.join('; ') || 'none'}`,
214
+ `Primary contacts: ${contacts.map((c) => `${c.name} (${c.role})`).join('; ') || 'none'}`,
215
+ `Latest meeting: ${latestFile(join(dir, 'meetings')) ?? 'none'}`,
216
+ 'Scope: This brief is DFE client-operations context (not a platform design doc).',
217
+ ];
218
+ printOutput({ brief: lines.join('\n') }, (opts.format ?? 'json'));
219
+ });
220
+ const meeting = clients.command('meeting').description('Manage client meeting notes.');
221
+ meeting
222
+ .command('new')
223
+ .argument('<slug>')
224
+ .requiredOption('--title <title>')
225
+ .option('--date <date>')
226
+ .option('--format <fmt>', 'Output format', 'json')
227
+ .action((slug, opts) => {
228
+ const clientSlug = normalizeClientSlug(slug);
229
+ const dir = resolveClientDir(clientSlug);
230
+ if (!existsSync(dir))
231
+ printError(`Client dossier not found: ${clientSlug}`);
232
+ const client = readJson(join(dir, 'client.json'));
233
+ const d = opts.date ?? dateStamp();
234
+ const file = `${d}-${slugify(opts.title)}.md`;
235
+ const body = `# ${opts.title}\n\nDate: ${d}\nClient: ${client?.name ?? clientSlug}\nAttendees:\n- \n\n## Summary\n\n## Client Feedback\n\n## Decisions\n\n## Action Items\n\n## Workflow Changes Requested\n\n## Follow-Up Email Draft\n`;
236
+ const path = join(dir, 'meetings', file);
237
+ writeFileSync(path, body);
238
+ printOutput({ created: path }, (opts.format ?? 'json'));
239
+ });
240
+ const feedback = clients.command('feedback').description('Feedback capture for a client dossier');
241
+ feedback
242
+ .command('add <slug>')
243
+ .requiredOption('--from <name>', 'Feedback source/contact')
244
+ .option('--workflow <id...>', 'Linked workflow ID(s)')
245
+ .option('--step <id...>', 'Linked step ID(s)')
246
+ .option('--file <path>', 'Path to markdown notes to embed')
247
+ .option('--requested <text...>', 'Requested changes')
248
+ .option('--acceptance <text...>', 'Acceptance notes')
249
+ .option('--question <text...>', 'Open questions')
250
+ .option('--format <fmt>', 'Output format', 'json')
251
+ .action(async (slug, opts) => {
252
+ try {
253
+ const clientDir = ensureClientDir(slug);
254
+ const feedbackDir = join(clientDir, 'feedback');
255
+ mkdirSync(feedbackDir, { recursive: true });
256
+ const fileName = `${dateStamp()}-${slugify(opts.from)}.md`;
257
+ const outPath = join(feedbackDir, fileName);
258
+ const imported = opts.file ? readFileSync(opts.file, 'utf-8').trim() : '';
259
+ const body = [
260
+ '# Client Feedback',
261
+ '',
262
+ `- Source: ${opts.from}`,
263
+ `- Date: ${dateStamp()}`,
264
+ `- Workflow IDs: ${(opts.workflow ?? []).join(', ') || 'N/A'}`,
265
+ `- Step IDs: ${(opts.step ?? []).join(', ') || 'N/A'}`,
266
+ '',
267
+ '## Requested changes',
268
+ ...((opts.requested ?? ['None provided']).map((x) => `- ${x}`)),
269
+ '',
270
+ '## Acceptance notes',
271
+ ...((opts.acceptance ?? ['None provided']).map((x) => `- ${x}`)),
272
+ '',
273
+ '## Open questions',
274
+ ...((opts.question ?? ['None provided']).map((x) => `- ${x}`)),
275
+ '',
276
+ '## Raw notes',
277
+ imported || '_No raw notes attached._',
278
+ '',
279
+ ].join('\n');
280
+ writeFileSync(outPath, body);
281
+ printOutput({ ok: true, path: outPath }, (opts.format ?? 'json'));
282
+ }
283
+ catch (error) {
284
+ printError(error instanceof Error ? error.message : String(error));
285
+ }
286
+ });
287
+ clients.command('reply <slug>').option('--about <topic>', 'Reply topic/context').option('--out <path>', 'Write draft reply to a file').option('--format <fmt>', 'Output format', 'json').action(async (slug, opts) => {
288
+ try {
289
+ const clientSlug = normalizeClientSlug(slug);
290
+ const clientDir = ensureClientDir(clientSlug);
291
+ const client = readJson(join(clientDir, 'client.json'));
292
+ const contacts = readJsonArray(join(clientDir, 'contacts.json'));
293
+ const decisionsPath = latestFilePath(join(clientDir, 'decisions'));
294
+ const feedbackPath = latestFilePath(join(clientDir, 'feedback'), ['.md']);
295
+ const draft = [
296
+ `# Draft reply (${dateStamp()})`,
297
+ '',
298
+ `Hi ${contacts[0]?.name ?? 'team'},`,
299
+ '',
300
+ `Thanks for the latest feedback${opts.about ? ` about ${opts.about}` : ''}.`,
301
+ '',
302
+ '## What we changed',
303
+ '- Reviewed latest workflow/test status and incorporated requested updates.',
304
+ '',
305
+ '## What is pending validation',
306
+ '- Final client-side confirmation and any browser/manual verification notes.',
307
+ '',
308
+ '## What we need from you',
309
+ '- Confirm acceptance criteria and any priority changes for the next sprint.',
310
+ '',
311
+ `Context: client=${client?.name ?? clientSlug}; latestFeedback=${feedbackPath ?? 'none'}; latestDecision=${decisionsPath ?? 'none'}.`,
312
+ '',
313
+ ].join('\n');
314
+ if (opts.out)
315
+ writeFileSync(opts.out, draft);
316
+ printOutput({ ok: true, draft, out: opts.out ?? null }, (opts.format ?? 'json'));
317
+ }
318
+ catch (error) {
319
+ printError(error instanceof Error ? error.message : String(error));
320
+ }
321
+ });
322
+ clients.command('validate <slug>').option('--notes <path>', 'Manual/browser validation notes file').option('--format <fmt>', 'Output format', 'json').action(async (slug, opts) => {
323
+ try {
324
+ const clientSlug = normalizeClientSlug(slug);
325
+ const clientDir = ensureClientDir(clientSlug);
326
+ const workflows = readJsonArray(join(clientDir, 'workflows.json'));
327
+ const testsDir = join(requireWorkspace(), 'tests');
328
+ const testFiles = existsSync(testsDir) ? readdirSync(testsDir).filter((f) => f.endsWith('.test.json')) : [];
329
+ const notes = opts.notes && existsSync(opts.notes) ? readFileSync(opts.notes, 'utf-8').trim() : 'No manual notes provided.';
330
+ const outDir = join(clientDir, 'validation');
331
+ mkdirSync(outDir, { recursive: true });
332
+ const outPath = join(outDir, `${dateStamp()}-validation-report.md`);
333
+ const md = [
334
+ `# Validation report (${dateStamp()})`,
335
+ '',
336
+ '## What was tested',
337
+ `- Linked workflows: ${workflows.length}`,
338
+ `- Local test files: ${testFiles.length}`,
339
+ '',
340
+ '## Passed/failed summary',
341
+ '- Local report generation succeeded. Run `agentled test <workflowId>` for assertion-level pass/fail.',
342
+ '',
343
+ '## Needs client confirmation',
344
+ '- UI/browser walkthrough and business acceptance review.',
345
+ '',
346
+ '## Evidence',
347
+ ...workflows.map((w) => `- Workflow: ${w.workflowId ?? w.id ?? 'unknown'}; latestExecutionId: ${w.latestExecutionId ?? 'n/a'}`),
348
+ '',
349
+ '## Manual/browser notes',
350
+ notes,
351
+ '',
352
+ '## DFE recommendation',
353
+ '- Proceed with selective sync after client confirms acceptance criteria.',
354
+ '',
355
+ ].join('\n');
356
+ writeFileSync(outPath, md);
357
+ printOutput({ ok: true, path: outPath }, (opts.format ?? 'json'));
358
+ }
359
+ catch (error) {
360
+ printError(error instanceof Error ? error.message : String(error));
361
+ }
362
+ });
363
+ clients.command('sync <slug>')
364
+ .option('--include-decisions', 'Include latest decisions file in synced knowledge text')
365
+ .option('--include-summary', 'Include latest validation summary in synced knowledge text')
366
+ .option('--format <fmt>', 'Output format', 'json')
367
+ .action(async (slug, opts) => {
368
+ try {
369
+ const clientSlug = normalizeClientSlug(slug);
370
+ const clientDir = resolveClientDir(clientSlug);
371
+ if (!existsSync(clientDir))
372
+ printError(`Client dossier not found: ${clientSlug}`);
373
+ const client = readJson(join(clientDir, 'client.json'));
374
+ const workflows = readJsonArray(join(clientDir, 'workflows.json'));
375
+ const decisionPath = opts.includeDecisions ? latestFilePath(join(clientDir, 'decisions')) : null;
376
+ const validationPath = opts.includeSummary ? latestFilePath(join(clientDir, 'validation')) : null;
377
+ const content = buildSyncContent({
378
+ clientSlug,
379
+ client,
380
+ workflows,
381
+ decisionPath,
382
+ validationPath,
383
+ includeDecisions: Boolean(opts.includeDecisions),
384
+ includeSummary: Boolean(opts.includeSummary),
385
+ });
386
+ const key = `client-dossier/${clientSlug}`;
387
+ const remote = await new AgentledClient().upsertKnowledgeText({
388
+ key,
389
+ title: `Client dossier: ${typeof client?.name === 'string' ? client.name : clientSlug}`,
390
+ content,
391
+ tags: ['client-dossier', clientSlug],
392
+ });
393
+ printOutput({
394
+ ok: true,
395
+ key,
396
+ remote,
397
+ included: {
398
+ decisions: decisionPath,
399
+ validationSummary: validationPath,
400
+ },
401
+ }, (opts.format ?? 'json'));
402
+ }
403
+ catch (error) {
404
+ printError(error instanceof Error ? error.message : String(error));
405
+ }
406
+ });
407
+ }
408
+ //# sourceMappingURL=clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../src/commands/clients.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -32,6 +32,7 @@ import { registerAgentCommands } from './commands/agents.js';
32
32
  import { registerBrandingCommands } from './commands/branding.js';
33
33
  import { registerMemoryCommands } from './commands/memory.js';
34
34
  import { registerFeedbackCommands } from './commands/feedback.js';
35
+ import { registerClientsCommands } from './commands/clients.js';
35
36
  import { registerIntentCommands } from './commands/intent.js';
36
37
  import { registerProactiveAgentCommands } from './commands/proactive-agents.js';
37
38
  import { registerModelCommands } from './commands/models.js';
@@ -87,6 +88,7 @@ registerAgentCommands(program);
87
88
  registerBrandingCommands(program);
88
89
  registerMemoryCommands(program);
89
90
  registerFeedbackCommands(program);
91
+ registerClientsCommands(program);
90
92
  registerIntentCommands(program);
91
93
  registerProactiveAgentCommands(program);
92
94
  registerModelCommands(program);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * agentled_<slug>/
8
8
  * ├── README.md # agent-facing guide
9
+ * ├── AGENTS.md # Codex/agent guidance for this client workspace
9
10
  * ├── .agentled/
10
11
  * │ ├── workspace.json # workspaceId, slug, apiBase, syncedAt
11
12
  * │ └── cache/
@@ -20,6 +21,7 @@
20
21
  * ├── fixtures/
21
22
  * │ └── step-outputs/ # captured step outputs (zero-credit replay)
22
23
  * ├── tests/ # <wfId>.test.json declarative test files
24
+ * ├── tasks/ # local FDE task tracking, not workspace KG
23
25
  * └── drafts/ # in-progress pipeline JSON files
24
26
  */
25
27
  import type { WorkspaceMeta } from './workspace-meta.js';
@@ -30,6 +32,8 @@ export declare function writeWorkspaceMeta(wsDir: string, meta: WorkspaceMeta):
30
32
  export declare function bundledScaffoldsDir(): string;
31
33
  export declare function bundledSkillMd(): string;
32
34
  export declare const GOTCHAS_MD = "# Agentled \u2014 Documented Failure Modes (GOTCHAS)\n\nThese pass JSON syntax validation but silently misbehave at runtime.\nRun `agentled workflows lint <file>` to catch them statically before deploying.\n\n---\n\n## 1. `criteria` not `conditions` in entryConditions [CRITERIA_NOT_CONDITIONS]\n\n**Wrong:** `{ \"entryConditions\": { \"conditions\": [...] } }`\n**Correct:** `{ \"entryConditions\": { \"criteria\": [...] } }`\n\nThe executor reads `entryConditions.criteria`. The key `conditions` is silently ignored.\n\n---\n\n## 2. `variable` not `field` in criteria items [VARIABLE_NOT_FIELD]\n\n**Wrong:** `{ \"field\": \"{{steps.x.score}}\", \"operator\": \">\", \"value\": 70 }`\n**Correct:** `{ \"variable\": \"{{steps.x.score}}\", \"operator\": \">\", \"value\": 70 }`\n\nUsing `field` causes the criterion to be silently skipped.\n\n---\n\n## 3. Gmail label_id must be the internal Label_XXXX ID [GMAIL_LABEL_DISPLAY_NAME]\n\nGmail's API requires `Label_XXXXXXXXXX` IDs, not display names.\nAdd a `GMAIL_CREATE_LABEL` step before and use `{{steps.ensure-label.id}}`.\n\n---\n\n## 4. `aiActionWithTools` with no tools [AI_STEP_TOOLS_REQUIRED]\n\nA step with `type: \"aiActionWithTools\"` must have at least one tool in\n`step.tools` or `step.agent.tools`.\n\nValid `builtinType` values: `web_search`, `file_search`, `code_interpreter`,\n`fetch_website_content`, `kg_search`, `kg_traverse`, `kg_nodes`, `kg_write`,\n`workspace_memory`.\n\n---\n\n## 5. Email steps need type + approval action + outreachProfile [EMAIL_MISSING_*]\n\nThree required pieces:\n- `pipelineStepPrompt.type: \"email\"`\n- `onApproval.action: \"schedule-email\"`\n- `outreachProfile` input page in `context.inputPages`\n\nMissing the schedule-email action means the email is drafted but never sent.\n\n---\n\n## 6. Only the first step in a loop gets `loopConfig` [LOOP_CONFIG_MULTIPLE_STEPS]\n\n`loopConfig` must be on the first step in the loop chain only. Subsequent\nsteps inside the loop iterate automatically.\n\n---\n\n## 7. Don't pass raw `{{input.*}}` directly to search APIs [RAW_INPUT_TO_SEARCH]\n\nAdd an aiAction step before the search that generates optimized queries.\nRaw user input makes poor search queries.\n\n---\n\n## 8. Child workflows must use `return` step, not `milestone` [CHILD_WORKFLOW_NO_RETURN]\n\nIf a workflow is called via `agentled.call-workflow`, use `type: \"return\"`.\n`milestone` produces no return data. Also set `context.executionInputConfig.internal: true`.\n\n---\n\n## 9. Model IDs are internal format, not Anthropic format [MODEL_ID_FORMAT]\n\nWrong: `claude-sonnet-4-6`. Correct: `claude-4-6-sonnet`.\nRun `agentled models list` for valid internal IDs.\n\n---\n\n## 10. Native app actionId must include appId prefix [ACTION_ID_MISSING_PREFIX]\n\nWrong: `{ \"id\": \"kg\", \"actionId\": \"read-list\" }`\nCorrect: `{ \"id\": \"kg\", \"actionId\": \"kg.read-list\" }`\n\n---\n\n## 11. `loop_completion` criteria requires `onCriteriaFail: \"wait\"` [LOOP_COMPLETION_NOT_WAIT]\n\nWithout `onCriteriaFail: \"wait\"`, the step skips instead of blocking until\nthe loop finishes. The `stepId` field is also required.\n\n---\n\n## 12. Arrays in JSON template strings \u2014 don't JSON.stringify\n\nThe serializer detects when a template variable is the sole content of a JSON\nfield and inlines the raw value. Pass `{ \"items\": \"{{steps.x.items}}\" }`\ndirectly \u2014 no stringify needed.\n\n---\n\n## 13. `kg.upsert-rows` needs `userKey` for dedup; `kg.add-rows` always inserts\n\n`kg.upsert-rows` with `userKey`: same key = same row, cross-run dedup O(1).\n`kg.add-rows`: always inserts a new row, duplicates accumulate.\nUse `mergeStrategy: \"merge\"` to preserve downstream-added fields.\n";
35
+ export declare const TASKS_README_MD = "# Tasks\n\nUse this folder for local FDE execution work for this client workspace:\n\n- active tasks and follow-ups\n- implementation notes\n- blockers and open questions\n- done logs and handoff notes\n\nKeep task-level details local. They are operational, may be noisy or provisional, and should not be synced wholesale into workspace knowledge.\n\nPromote only client-facing milestone recaps and alignment memory to workspace `kg.text`:\n\n- delivered milestones\n- agreed decisions\n- important blockers or risks\n- next client-facing follow-ups\n- context the client or future agent sessions need to stay aligned\n\nDo not store secrets or connector credentials in this folder.\n";
36
+ export declare function makeAgentsMd(meta: WorkspaceMeta): string;
33
37
  export declare function makeWorkspaceReadme(meta: WorkspaceMeta): string;
34
38
  export declare function createWorkspaceFolder(folderPath: string, meta: WorkspaceMeta, opts?: {
35
39
  appsList?: unknown;
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * agentled_<slug>/
8
8
  * ├── README.md # agent-facing guide
9
+ * ├── AGENTS.md # Codex/agent guidance for this client workspace
9
10
  * ├── .agentled/
10
11
  * │ ├── workspace.json # workspaceId, slug, apiBase, syncedAt
11
12
  * │ └── cache/
@@ -20,6 +21,7 @@
20
21
  * ├── fixtures/
21
22
  * │ └── step-outputs/ # captured step outputs (zero-credit replay)
22
23
  * ├── tests/ # <wfId>.test.json declarative test files
24
+ * ├── tasks/ # local FDE task tracking, not workspace KG
23
25
  * └── drafts/ # in-progress pipeline JSON files
24
26
  */
25
27
  import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync } from 'node:fs';
@@ -194,6 +196,69 @@ directly — no stringify needed.
194
196
  Use \`mergeStrategy: "merge"\` to preserve downstream-added fields.
195
197
  `;
196
198
  // ---------------------------------------------------------------------------
199
+ // tasks/README.md — local FDE task guidance for client workspace folders
200
+ // ---------------------------------------------------------------------------
201
+ export const TASKS_README_MD = `# Tasks
202
+
203
+ Use this folder for local FDE execution work for this client workspace:
204
+
205
+ - active tasks and follow-ups
206
+ - implementation notes
207
+ - blockers and open questions
208
+ - done logs and handoff notes
209
+
210
+ Keep task-level details local. They are operational, may be noisy or provisional, and should not be synced wholesale into workspace knowledge.
211
+
212
+ Promote only client-facing milestone recaps and alignment memory to workspace \`kg.text\`:
213
+
214
+ - delivered milestones
215
+ - agreed decisions
216
+ - important blockers or risks
217
+ - next client-facing follow-ups
218
+ - context the client or future agent sessions need to stay aligned
219
+
220
+ Do not store secrets or connector credentials in this folder.
221
+ `;
222
+ // ---------------------------------------------------------------------------
223
+ // AGENTS.md — Codex/agent guidance for client workspace folders
224
+ // ---------------------------------------------------------------------------
225
+ export function makeAgentsMd(meta) {
226
+ return `# AGENTS.md
227
+
228
+ This folder is a local Agentled client workspace for \`${meta.name}\`.
229
+
230
+ ## Scope
231
+
232
+ Use this folder to build, test, pull, and iterate on workflows for this workspace. Treat it as local FDE working state, not as the canonical client knowledge base.
233
+
234
+ ## Task And Client Alignment Memory
235
+
236
+ Manage task-level FDE work locally in \`tasks/\`. Do not sync granular todos, scratch notes, implementation task tracking, or in-flight execution details into workspace knowledge.
237
+
238
+ Use workspace \`kg.text\` only for client-facing milestone recaps and alignment memory:
239
+
240
+ - delivered milestones
241
+ - agreed decisions
242
+ - important blockers or risks
243
+ - next client-facing follow-ups
244
+ - context the client or future agent sessions need to stay aligned
245
+
246
+ ## Connectors And Plugins
247
+
248
+ Email, calendar, Drive, CRM, and other external integrations are configured by the user in their Codex or Agentled environment. Do not store connector credentials, OAuth tokens, or API keys in this folder.
249
+
250
+ When a workflow requires a connector, document the required connection and ask the user to connect it through the appropriate Codex or Agentled plugin/app.
251
+
252
+ ## Local Workflow Loop
253
+
254
+ - Pull live workflows into \`examples/live/\`.
255
+ - Draft new pipeline JSON in \`drafts/\`.
256
+ - Capture fixtures into \`fixtures/step-outputs/\`.
257
+ - Add declarative tests in \`tests/\`.
258
+ - Use \`agentled workflows lint <file>\` before validating or pushing workflow changes.
259
+ `;
260
+ }
261
+ // ---------------------------------------------------------------------------
197
262
  // README.md — agent-facing guide written into each new workspace folder
198
263
  // ---------------------------------------------------------------------------
199
264
  export function makeWorkspaceReadme(meta) {
@@ -216,6 +281,7 @@ Local working tree for building, testing, and iterating on workflows for the
216
281
  - **\`examples/live/\`** — pulled copies of real workspace workflows
217
282
  - **\`fixtures/step-outputs/\`** — captured step outputs for credit-free testing
218
283
  - **\`tests/\`** — declarative test files for each workflow
284
+ - **\`tasks/\`** — local FDE task tracking; only promote milestone recaps to \`kg.text\`
219
285
  - **\`drafts/\`** — in-progress pipelines before pushing to workspace
220
286
 
221
287
  ---
@@ -267,6 +333,7 @@ agentled workspace sync
267
333
  \`\`\`
268
334
  agentled_${meta.slug}/
269
335
  ├── README.md
336
+ ├── AGENTS.md
270
337
  ├── .agentled/
271
338
  │ ├── workspace.json
272
339
  │ └── cache/
@@ -281,7 +348,10 @@ agentled_${meta.slug}/
281
348
  ├── fixtures/
282
349
  │ └── step-outputs/
283
350
  ├── tests/
284
- └── drafts/
351
+ ├── tasks/
352
+ │ └── README.md
353
+ ├── drafts/
354
+ └── clients/
285
355
  \`\`\`
286
356
  `;
287
357
  }
@@ -297,7 +367,9 @@ export function createWorkspaceFolder(folderPath, meta, opts = {}) {
297
367
  join(folderPath, 'examples', 'live'),
298
368
  join(folderPath, 'fixtures', 'step-outputs'),
299
369
  join(folderPath, 'tests'),
370
+ join(folderPath, 'tasks'),
300
371
  join(folderPath, 'drafts'),
372
+ join(folderPath, 'clients'),
301
373
  ];
302
374
  for (const dir of dirs)
303
375
  mkdirSync(dir, { recursive: true });
@@ -325,6 +397,9 @@ export function createWorkspaceFolder(folderPath, meta, opts = {}) {
325
397
  }
326
398
  }
327
399
  writeFileSync(join(folderPath, 'README.md'), makeWorkspaceReadme(meta));
400
+ writeFileSync(join(folderPath, 'AGENTS.md'), makeAgentsMd(meta));
401
+ writeFileSync(join(folderPath, 'tasks', 'README.md'), TASKS_README_MD);
402
+ writeFileSync(join(folderPath, 'clients', '.gitkeep'), '');
328
403
  writeFileSync(join(folderPath, '.gitignore'), ['.agentled/cache/', 'fixtures/', 'tests/_runs/'].join('\n') + '\n');
329
404
  }
330
405
  export function refreshWorkspaceFolder(wsDir, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-folder.js","sourceRoot":"","sources":["../../src/utils/workspace-folder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-folder.js","sourceRoot":"","sources":["../../src/utils/workspace-folder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentled/cli",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "description": "CLI for Agentled — manage workflows, apps, and knowledge from the command line. Zero context-window cost for AI agents.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,7 +16,7 @@
16
16
  "prepublishOnly": "npm run build"
17
17
  },
18
18
  "dependencies": {
19
- "@agentled/core": "^0.2.2",
19
+ "@agentled/core": "^0.2.3",
20
20
  "commander": "^12.0.0"
21
21
  },
22
22
  "devDependencies": {
@@ -124,6 +124,7 @@ Before wiring a composed-email step into a workflow:
124
124
  - [ ] `onApproval.action: "schedule-email"` is set
125
125
  - [ ] `next.conditions.approvalRequired: true` on the outgoing edge
126
126
  - [ ] Recipient and subject are derived from prior step output, not hardcoded
127
+ - [ ] The output page has `displayConfig.executionNameTemplate` with the entity and outreach state. For single-entity outreach, use `{{entityName}} - Email Drafted` before approval and `{{entityName}} - Email Sent` or `{{entityName}} - Contacted` after the post-send status step, e.g. `Joe Dan - VC Firm Name - Email Drafted`; add `{{today}}` only when a short date helps. For batch runs, summarize counts instead, e.g. `26 May - 4 sourced - 3 contacted`.
127
128
 
128
129
  ## When to use a generic approval gate instead
129
130
 
@@ -32,6 +32,27 @@ Before creating any workflow, write a group manifest that describes the whole sy
32
32
 
33
33
  The example below is a generic two-list, seven-workflow group: continuous founder sourcing → self-serve paid booking → per-edition activation. The structure is template-shaped — fill in your group's identity and replace the workflows, lists, and states with your domain's vocabulary.
34
34
 
35
+ ## Client-readable KG guide
36
+
37
+ Alongside the group manifest, create a KG text document that explains the workflow group in plain language for the client and future operators. The manifest is for builders; the KG guide is for the workspace.
38
+
39
+ Use a stable key such as `<workspace-or-pipeline>.design`, `groups.<slug>.guide`, or `pipelines.<slug>.design`.
40
+
41
+ Recommended structure:
42
+
43
+ 1. What this workspace or pipeline does.
44
+ 2. How the process works end to end.
45
+ 3. Where records are sourced from.
46
+ 4. How records are reviewed, scored, enriched, or qualified.
47
+ 5. How outreach, approvals, or customer-visible actions work.
48
+ 6. How recurring entities are synced, such as events, campaigns, editions, or target accounts.
49
+ 7. What the current report or operating state shows.
50
+ 8. Which KG lists and fields are the source of truth.
51
+ 9. Which workflows belong to the group and what each one owns.
52
+ 10. Operator notes and known follow-up improvements.
53
+
54
+ Put the client-facing explanation first. Put workflow IDs, implementation caveats, and debug details in an "Operator Notes" section so the document is safe to share as a first-read overview.
55
+
35
56
  ```json
36
57
  {
37
58
  "$schema": "https://schemas.agentled.app/group-manifest/v0.json",
@@ -420,7 +420,7 @@ agentled_<slug>/
420
420
  - Decisions ("we chose theme X for next edition", "we picked OpenVC + Crunchbase as initial sources") need a paper trail with reasoning. KG entries should carry the *outcome*, not the deliberation.
421
421
  - Workflow drafts often go through 3-5 iterations before push — keep them local until ready.
422
422
 
423
- **Sync rule:** at the end of any meaningful working session — and explicitly when the user says "save", "wrap up", "we're done for now" — summarize what's *durable and reusable* (final decisions, current themes, active sources, workflow purpose statements) and write it to the workspace KG via `upsert_knowledge_text` (for narrative docs) or `upsert_knowledge_rows` (for structured data). Use stable, predictable keys: `decisions.current-theme`, `groups.<slug>.spec`, `workflows.<id>.purpose`. Append a one-line entry to `worklog.md` recording what was synced and when.
423
+ **Sync rule:** at the end of any meaningful working session — and explicitly when the user says "save", "wrap up", "we're done for now" — summarize what's *durable and reusable* (final decisions, current themes, active sources, workflow purpose statements) and write it to the workspace KG via `upsert_knowledge_text` (for narrative docs) or `upsert_knowledge_rows` (for structured data). Use stable, predictable keys: `decisions.current-theme`, `groups.<slug>.spec`, `workflows.<id>.purpose`. For any group of workflows that forms a client-facing workspace pipeline, also create or update a client-readable KG text guide such as `<workspace-or-pipeline>.design`, `groups.<slug>.guide`, or `pipelines.<slug>.design`. Put the client explanation first (what it does, how it works, where data comes from, how approvals/sync/reporting work), then put workflow IDs, caveats, and debug details under "Operator Notes." Append a one-line entry to `worklog.md` recording what was synced and when.
424
424
 
425
425
  **Don't sync:** raw debug bundles, full execution timelines, abandoned drafts, transcripts. Those stay local. Sync only what a future session — or another agent — will actually need to pick up the work.
426
426
 
@@ -686,6 +686,7 @@ When a workflow sends emails, add an outreach profile input page to `context.inp
686
686
  - `next.conditions.approvalRequired: true` — blocks the pipeline until human approval
687
687
  - Email body must be email-safe HTML (`<p>`, `<br>`, `<a>`, `<strong>` — no CSS, no scripts)
688
688
  - **Never** use separate "draft" + "gmail send" appAction steps for outreach
689
+ - Set an output page `displayConfig.executionNameTemplate` that names the entity and the outreach state. For single-entity outreach, use `{{entityName}} - Email Drafted` before approval and `{{entityName}} - Email Sent` or `{{entityName}} - Contacted` after the post-send status step, e.g. `Joe Dan - VC Firm Name - Email Drafted`; add `{{today}}` only when a short date helps. For batch runs, summarize counts instead, e.g. `26 May - 4 sourced - 3 contacted`.
689
690
 
690
691
  ## Entity Pipeline Pattern (Source → KG → Process)
691
692