@agentled/cli 0.7.5 → 0.7.7
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 +19 -1
- package/dist/commands/clients.d.ts +2 -0
- package/dist/commands/clients.js +408 -0
- package/dist/commands/clients.js.map +1 -0
- package/dist/commands/do.js +1 -1
- package/dist/commands/do.js.map +1 -1
- package/dist/commands/examples.d.ts +5 -5
- package/dist/commands/examples.js +8 -2
- package/dist/commands/examples.js.map +1 -1
- package/dist/commands/onboarding.js +43 -15
- package/dist/commands/onboarding.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/agentled-home-content.d.ts +1 -1
- package/dist/utils/agentled-home-content.js +6 -3
- package/dist/utils/agentled-home-content.js.map +1 -1
- package/dist/utils/browser-auth.d.ts +1 -0
- package/dist/utils/browser-auth.js +3 -3
- package/dist/utils/browser-auth.js.map +1 -1
- package/dist/utils/pipeline-lint.js +3 -1
- package/dist/utils/pipeline-lint.js.map +1 -1
- package/dist/utils/workspace-folder.d.ts +4 -0
- package/dist/utils/workspace-folder.js +76 -1
- package/dist/utils/workspace-folder.js.map +1 -1
- package/dist/utils/workspace-meta.d.ts +4 -3
- package/dist/utils/workspace-meta.js +27 -5
- package/dist/utils/workspace-meta.js.map +1 -1
- package/llms-full.txt +4 -2
- package/llms.txt +17 -0
- package/package.json +1 -1
- package/patterns/v1/00-design-principles.md +161 -0
- package/patterns/v1/12-event-driven-workflow-groups.md +21 -0
- package/patterns/v1/13-entity-pipeline-lifecycle.md +319 -0
- package/scaffolds/README.md +7 -1
- package/scaffolds/child-with-return.json +71 -0
- package/scaffolds/funnel-orchestrator.json +134 -0
- package/scaffolds/kg-process-update.json +88 -0
- package/scaffolds/orchestrator-kg-loop.json +96 -0
- package/scaffolds/source-from-platform.json +78 -0
- package/scaffolds/source-to-kg.json +88 -0
- package/skills/agentled/SKILL.md +24 -1
package/README.md
CHANGED
|
@@ -133,13 +133,14 @@ agentled schema --step-type aiAction
|
|
|
133
133
|
# Human-readable instead of JSON
|
|
134
134
|
agentled schema --format table
|
|
135
135
|
|
|
136
|
-
# List the
|
|
136
|
+
# List the bundled workflow patterns
|
|
137
137
|
agentled examples
|
|
138
138
|
|
|
139
139
|
# Print one pattern (by slug, number, or keyword)
|
|
140
140
|
agentled examples trigger-design
|
|
141
141
|
agentled examples 04 # loops
|
|
142
142
|
agentled examples dedup
|
|
143
|
+
agentled examples 13-entity-pipeline-lifecycle
|
|
143
144
|
|
|
144
145
|
# Summary + link to the canonical public repo
|
|
145
146
|
agentled best-practices
|
|
@@ -163,6 +164,18 @@ agentled workflows scaffold --list
|
|
|
163
164
|
# Print a scaffold to stdout
|
|
164
165
|
agentled workflows scaffold lead-scoring-kg
|
|
165
166
|
|
|
167
|
+
# Build the common sourcing-to-outreach lifecycle from known-good starters
|
|
168
|
+
agentled workflows scaffold source-from-platform --out 01-source.json
|
|
169
|
+
agentled workflows scaffold lead-scoring-kg --out 02-score-qualify.json
|
|
170
|
+
agentled workflows scaffold list-match-email --out 04-outreach.json
|
|
171
|
+
agentled workflows scaffold funnel-orchestrator --out 99-orchestrator.json
|
|
172
|
+
|
|
173
|
+
# Mark contacted only after send/queue succeeds; add event/polling workflows
|
|
174
|
+
# for replies, bounces, opens, and clicks when the channel supports them.
|
|
175
|
+
# For outreach, add business metrics for contacted prospects, positive replies,
|
|
176
|
+
# and PCPL. Literal PCPL is a ratio metric with ratioMode:"raw":
|
|
177
|
+
# prospects_contacted / positive_replies. Reply rate uses the default percent ratio.
|
|
178
|
+
|
|
166
179
|
# Write a scaffold to a file to start editing from
|
|
167
180
|
agentled workflows scaffold list-match-email --out pipeline.json
|
|
168
181
|
|
|
@@ -185,8 +198,10 @@ to add a new one.
|
|
|
185
198
|
|------|----------|-------|
|
|
186
199
|
| `minimal` | — | trigger → milestone |
|
|
187
200
|
| `email-polling-dedup` | 02 + 13 | schedule → fetch emails (label dedup) → loop process → add label |
|
|
201
|
+
| `source-from-platform` | 13 | schedule → source app → normalize → kg.upsert-rows(status:new) |
|
|
188
202
|
| `lead-scoring-kg` | 04 + 09 | trigger → kg.read-list → AI scoring loop → knowledgeSync |
|
|
189
203
|
| `list-match-email` | 08 | trigger → kg.read-list → AI match → composed email (approval gate) → knowledgeSync |
|
|
204
|
+
| `funnel-orchestrator` | 05 + 13 | schedule → read KG statuses → call child workflows → digest |
|
|
190
205
|
| `extract-threshold-alert` | 06 + 09 | trigger → AI extract → threshold check → external update → conditional Slack alert → knowledgeSync |
|
|
191
206
|
|
|
192
207
|
Each bundled scaffold passes `workflows validate --file` out of the box.
|
|
@@ -221,6 +236,7 @@ The CLI now includes dedicated command groups matching MCP domains:
|
|
|
221
236
|
- `agentled intent do ...`
|
|
222
237
|
- `agentled proactive-agents ...`
|
|
223
238
|
- `agentled models list`
|
|
239
|
+
- `agentled clients feedback add|reply|validate|sync`
|
|
224
240
|
|
|
225
241
|
## Running workflows
|
|
226
242
|
|
|
@@ -239,6 +255,8 @@ agentled wf start <workflowId> --input '{...}' --use-mocks
|
|
|
239
255
|
|
|
240
256
|
Under the hood, `--no-mocks` sets `metadata.mockConfig.disabled = true`, which the orchestrator reads to bypass `step.mock.enabledByDefault` for every step. You can also pass that directly via `--metadata '{"mockConfig":{"disabled":true}}'` if you need to combine it with other metadata fields.
|
|
241
257
|
|
|
258
|
+
`agentled wf start` always returns `executionInputId`, which identifies the submitted input/run record. It may also return `executionId` when the async execution row has already been created. Commands such as `agentled executions get` require the real `executionId`. If start only returns `executionInputId`, run `agentled executions list <workflowId> --limit 5` and find the row whose `pipelineExecutionInputId` matches; use that row's `id` as the execution ID.
|
|
259
|
+
|
|
242
260
|
### Admin execution patch commands
|
|
243
261
|
|
|
244
262
|
The CLI exposes the same exception-only admin patch surface as MCP. These
|
|
@@ -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/commands/do.js
CHANGED
|
@@ -60,7 +60,7 @@ export function registerDoCommand(program) {
|
|
|
60
60
|
}
|
|
61
61
|
if (result.action === 'executed') {
|
|
62
62
|
console.log(`\nExecution started:`);
|
|
63
|
-
console.log(` Execution ID: ${result.execution?.executionInputId}`);
|
|
63
|
+
console.log(` Execution input ID: ${result.execution?.executionInputId}`);
|
|
64
64
|
console.log(` Workflow ID: ${result.execution?.pipelineId}`);
|
|
65
65
|
}
|
|
66
66
|
if (result.action === 'confirmation_needed') {
|
package/dist/commands/do.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAE3E,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAC9C,OAAO;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CACR,wEAAwE,CAC3E;SACA,MAAM,CAAC,WAAW,EAAE,mCAAmC,EAAE,KAAK,CAAC;SAC/D,MAAM,CAAC,cAAc,EAAE,sDAAsD,CAAC;SAC9E,MAAM,CAAC,gBAAgB,EAAE,qCAAqC,EAAE,MAAM,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAI,EAAE,EAAE;QACnC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YAEpC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC1B,UAAU,CACN,uEAAuE,CAC1E,CAAC;gBACF,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,+BAA+B;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACzB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5B,OAAO;YACX,CAAC;YAED,0CAA0C;YAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC;gBAC7D,OAAO;YACX,CAAC;YAED,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,eAAe,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAE3C,IAAI,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,kBAAkB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;gBACrF,CAAC;YACL,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAE3E,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAC9C,OAAO;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CACR,wEAAwE,CAC3E;SACA,MAAM,CAAC,WAAW,EAAE,mCAAmC,EAAE,KAAK,CAAC;SAC/D,MAAM,CAAC,cAAc,EAAE,sDAAsD,CAAC;SAC9E,MAAM,CAAC,gBAAgB,EAAE,qCAAqC,EAAE,MAAM,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAI,EAAE,EAAE;QACnC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YAEpC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC1B,UAAU,CACN,uEAAuE,CAC1E,CAAC;gBACF,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,+BAA+B;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACzB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5B,OAAO;YACX,CAAC;YAED,0CAA0C;YAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC;gBAC7D,OAAO;YACX,CAAC;YAED,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,eAAe,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAE3C,IAAI,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,kBAAkB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;gBACrF,CAAC;YACL,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CACP,8BAA8B,CAAC,CAAC,UAAU,aAAa,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,GAAG,CACpG,CAAC;YACN,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CACP,0EAA0E,CAAC,CAAC,UAAU,gBAAgB,CACzG,CAAC;YACN,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `agentled examples` — surface
|
|
2
|
+
* `agentled examples` — surface workflow patterns bundled with the CLI.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
4
|
+
* Canonical platform-agnostic patterns are mirrored from the public
|
|
5
|
+
* `agentled/agentic-ops` repo. CLI-only patterns live in
|
|
6
|
+
* `packages/cli/patterns/v1/` when the guidance is specific to Agentled CLI
|
|
7
|
+
* workflow authoring.
|
|
8
8
|
*
|
|
9
9
|
* Usage:
|
|
10
10
|
* agentled examples # list all patterns
|
|
@@ -3,6 +3,7 @@ import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
|
3
3
|
import { join, dirname, resolve } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
const PUBLIC_REPO_URL = 'https://github.com/agentled/agentic-ops';
|
|
6
|
+
const CLI_ONLY_PATTERN_SLUGS = new Set(['13-entity-pipeline-lifecycle']);
|
|
6
7
|
function resolveBundledPatternsDir() {
|
|
7
8
|
const here = fileURLToPath(import.meta.url);
|
|
8
9
|
// dist/commands/examples.js → package root is two levels up
|
|
@@ -64,7 +65,7 @@ export function registerExamplesCommand(program) {
|
|
|
64
65
|
process.exit(1);
|
|
65
66
|
}
|
|
66
67
|
if (!pattern || opts.list) {
|
|
67
|
-
console.log('Available patterns (
|
|
68
|
+
console.log('Available patterns (bundled with the Agentled CLI):\n');
|
|
68
69
|
for (const p of patterns) {
|
|
69
70
|
console.log(` ${p.slug.padEnd(30)} ${p.title}`);
|
|
70
71
|
}
|
|
@@ -78,7 +79,12 @@ export function registerExamplesCommand(program) {
|
|
|
78
79
|
process.exit(1);
|
|
79
80
|
}
|
|
80
81
|
console.log(readFileSync(found.path, 'utf-8'));
|
|
81
|
-
|
|
82
|
+
if (CLI_ONLY_PATTERN_SLUGS.has(found.slug)) {
|
|
83
|
+
console.log(`\n---\nSource: bundled CLI pattern (${found.slug}.md)`);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(`\n---\nSource: ${PUBLIC_REPO_URL}/blob/main/patterns/v1/${found.slug}.md`);
|
|
87
|
+
}
|
|
82
88
|
});
|
|
83
89
|
program
|
|
84
90
|
.command('best-practices')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/commands/examples.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAiB/B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,eAAe,GAAG,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/commands/examples.ts"],"names":[],"mappings":"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"}
|