@ariaflowagents/config 0.5.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -5
- package/dist/agent-architect/index.d.ts +10 -0
- package/dist/agent-architect/index.d.ts.map +1 -0
- package/dist/agent-architect/index.js +131 -0
- package/dist/agent-architect/index.js.map +1 -0
- package/dist/agent-architect/prompt-generator.d.ts +9 -0
- package/dist/agent-architect/prompt-generator.d.ts.map +1 -0
- package/dist/agent-architect/prompt-generator.js +155 -0
- package/dist/agent-architect/prompt-generator.js.map +1 -0
- package/dist/agent-architect/rfc-emitter.d.ts +18 -0
- package/dist/agent-architect/rfc-emitter.d.ts.map +1 -0
- package/dist/agent-architect/rfc-emitter.js +350 -0
- package/dist/agent-architect/rfc-emitter.js.map +1 -0
- package/dist/agent-architect/tool-recommender.d.ts +8 -0
- package/dist/agent-architect/tool-recommender.d.ts.map +1 -0
- package/dist/agent-architect/tool-recommender.js +87 -0
- package/dist/agent-architect/tool-recommender.js.map +1 -0
- package/dist/agent-architect/types.d.ts +904 -0
- package/dist/agent-architect/types.d.ts.map +1 -0
- package/dist/agent-architect/types.js +89 -0
- package/dist/agent-architect/types.js.map +1 -0
- package/dist/agent-architect/use-case-analyzer.d.ts +8 -0
- package/dist/agent-architect/use-case-analyzer.d.ts.map +1 -0
- package/dist/agent-architect/use-case-analyzer.js +76 -0
- package/dist/agent-architect/use-case-analyzer.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1226 -3
- package/dist/cli.js.map +1 -1
- package/dist/flow-codegen.d.ts +6 -0
- package/dist/flow-codegen.d.ts.map +1 -0
- package/dist/flow-codegen.js +31 -0
- package/dist/flow-codegen.js.map +1 -0
- package/dist/flow-generator.d.ts +17 -0
- package/dist/flow-generator.d.ts.map +1 -0
- package/dist/flow-generator.js +202 -0
- package/dist/flow-generator.js.map +1 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/llm-flow-generator.d.ts +10 -0
- package/dist/llm-flow-generator.d.ts.map +1 -0
- package/dist/llm-flow-generator.js +244 -0
- package/dist/llm-flow-generator.js.map +1 -0
- package/dist/loader.d.ts +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +175 -45
- package/dist/loader.js.map +1 -1
- package/dist/prompt-lint.d.ts +18 -0
- package/dist/prompt-lint.d.ts.map +1 -0
- package/dist/prompt-lint.js +180 -0
- package/dist/prompt-lint.js.map +1 -0
- package/dist/types.d.ts +19 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -11
package/README.md
CHANGED
|
@@ -311,14 +311,49 @@ Define reusable workflow patterns:
|
|
|
311
311
|
{
|
|
312
312
|
"flows": {
|
|
313
313
|
"booking-flow": {
|
|
314
|
-
"
|
|
314
|
+
"entry": "start",
|
|
315
|
+
"defaultRolePrompt": "You are a booking assistant.",
|
|
316
|
+
"nodes": [
|
|
315
317
|
{
|
|
316
|
-
"id": "
|
|
317
|
-
"
|
|
318
|
+
"id": "start",
|
|
319
|
+
"nodeType": "start",
|
|
320
|
+
"addGlobalPrompt": true,
|
|
321
|
+
"prompt": "Welcome. What date would you like to book?"
|
|
318
322
|
},
|
|
319
323
|
{
|
|
320
|
-
"id": "
|
|
321
|
-
"
|
|
324
|
+
"id": "collect_time",
|
|
325
|
+
"nodeType": "agent",
|
|
326
|
+
"prompt": "What time works for you?"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"id": "end_call",
|
|
330
|
+
"nodeType": "end",
|
|
331
|
+
"addGlobalPrompt": false,
|
|
332
|
+
"prompt": "Thanks, your booking is complete."
|
|
333
|
+
}
|
|
334
|
+
],
|
|
335
|
+
"transitions": [
|
|
336
|
+
{
|
|
337
|
+
"from": "start",
|
|
338
|
+
"to": "collect_time",
|
|
339
|
+
"on": "to_collect_time",
|
|
340
|
+
"contract": {
|
|
341
|
+
"label": "Move to collect time",
|
|
342
|
+
"conditionText": "After user provides a valid date.",
|
|
343
|
+
"toolOnly": true,
|
|
344
|
+
"requiresUserTurn": true
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"from": "collect_time",
|
|
349
|
+
"to": "end_call",
|
|
350
|
+
"on": "to_end_call",
|
|
351
|
+
"contract": {
|
|
352
|
+
"label": "Finish booking",
|
|
353
|
+
"conditionText": "After user confirms final booking details.",
|
|
354
|
+
"toolOnly": true,
|
|
355
|
+
"requiresUserTurn": true
|
|
356
|
+
}
|
|
322
357
|
}
|
|
323
358
|
]
|
|
324
359
|
}
|
|
@@ -326,6 +361,44 @@ Define reusable workflow patterns:
|
|
|
326
361
|
}
|
|
327
362
|
```
|
|
328
363
|
|
|
364
|
+
Flow validation is enforced at load time:
|
|
365
|
+
- `nodes` must exist and have unique ids
|
|
366
|
+
- node prompts must be non-empty
|
|
367
|
+
- transition `from`/`to` must reference existing nodes
|
|
368
|
+
- transition must define `on` or `condition`
|
|
369
|
+
- at most one `nodeType: "start"` and one `nodeType: "global"`
|
|
370
|
+
|
|
371
|
+
### Generate a Flow Scaffold (CLI)
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
ariaflow flow generate --use-case "medical appointment scheduling" --out ./.ariaflow/flow/appointments.json
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Useful options:
|
|
378
|
+
- `--id <flow-id>`
|
|
379
|
+
- `--direction inbound|outbound`
|
|
380
|
+
- `--agent-name <name>`
|
|
381
|
+
- `--llm` (enable model-authored prompts)
|
|
382
|
+
- `--model <id>` (default: `gpt-5-mini`; OpenAI models such as `gpt-5-mini`, `gpt-4.1`, or `openai:gpt-4.1`)
|
|
383
|
+
- `--llm-mode hybrid|full` (default: `hybrid`)
|
|
384
|
+
- `--context-file <path>` (YAML/MD/TXT domain context)
|
|
385
|
+
- `--timeout-ms <n>`
|
|
386
|
+
- `--out-ts <path>` (emit typed TypeScript flow module for code-first agents)
|
|
387
|
+
- `--ts-const <name>` (const name in emitted TS module)
|
|
388
|
+
- `--force`
|
|
389
|
+
|
|
390
|
+
Hybrid mode behavior:
|
|
391
|
+
- Static sections remain fixed (structure, critical rules, transitions).
|
|
392
|
+
- Only domain-specific blocks vary (overall use-case details and main-agenda tasks/questions).
|
|
393
|
+
- This keeps outputs closer to production templates while still adapting per use case.
|
|
394
|
+
|
|
395
|
+
Code-first usage:
|
|
396
|
+
- Use `--out-ts` to generate a typed `FlowConfig` module you can import directly in TypeScript agents.
|
|
397
|
+
- This keeps generator output use-case agnostic and reusable across config-first and code-first paths.
|
|
398
|
+
|
|
399
|
+
LLM provider env var:
|
|
400
|
+
- OpenAI models require `OPENAI_API_KEY`
|
|
401
|
+
|
|
329
402
|
## Providers
|
|
330
403
|
|
|
331
404
|
Configure API providers:
|
|
@@ -481,6 +554,7 @@ my-agent/
|
|
|
481
554
|
| `runtime` | object | Yes | Runtime configuration |
|
|
482
555
|
| `models` | object | Yes | Model registry |
|
|
483
556
|
| `agents` | object | Yes | Agent definitions |
|
|
557
|
+
| `flows` | object | No | Reusable flow definitions (`nodes` + `transitions`) |
|
|
484
558
|
| `tools` | object | No | Tool definitions |
|
|
485
559
|
| `providers` | object | No | Provider configurations |
|
|
486
560
|
| `permissions` | object | No | Permission settings |
|
|
@@ -505,6 +579,20 @@ my-agent/
|
|
|
505
579
|
| `flowRef` | string | Flow reference (flow only) |
|
|
506
580
|
| `mode` | string | Flow mode: `guided`, `hybrid` (flow only) |
|
|
507
581
|
|
|
582
|
+
### Flow Properties
|
|
583
|
+
|
|
584
|
+
| Property | Type | Description |
|
|
585
|
+
|----------|------|-------------|
|
|
586
|
+
| `entry` / `initialNode` | string | Initial node id |
|
|
587
|
+
| `defaultRolePrompt` | string | Global flow prompt applied to nodes by default |
|
|
588
|
+
| `nodes` | array | Flow nodes (`id`, `prompt`, optional `nodeType`, `addGlobalPrompt`) |
|
|
589
|
+
| `transitions` | array | Edges (`from`, `to`, `on`/`condition`, optional `contract`) |
|
|
590
|
+
| `contextStrategy` | string | `append`, `reset`, `reset_with_summary` |
|
|
591
|
+
| `summaryPrompt` | string | Prompt used when summarizing context |
|
|
592
|
+
| `summaryMaxTokens` | number | Max tokens for summary generation |
|
|
593
|
+
| `summaryTimeoutMs` | number | Summary timeout guardrail |
|
|
594
|
+
| `maxSteps` | number | Default max tool-call steps in stream loop |
|
|
595
|
+
|
|
508
596
|
### Prompt Properties
|
|
509
597
|
|
|
510
598
|
| Property | Type | Description |
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ArchitectOptions, type ArchitectResult, type AgentMode, type DomainAnalysis, type ToolRecommendation, type SixLayerPrompt, type DetailLevel } from './types.js';
|
|
2
|
+
export interface RunArchitectOptions extends ArchitectOptions {
|
|
3
|
+
model?: string;
|
|
4
|
+
timeoutMs?: number;
|
|
5
|
+
mode?: AgentMode;
|
|
6
|
+
detailLevel?: DetailLevel;
|
|
7
|
+
}
|
|
8
|
+
export declare function runArchitect(options: RunArchitectOptions): Promise<ArchitectResult>;
|
|
9
|
+
export { type DomainAnalysis, type ToolRecommendation, type SixLayerPrompt };
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-architect/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AA4BpB,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CA+H1B;AAED,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { analyzeUseCase } from './use-case-analyzer.js';
|
|
2
|
+
import { recommendTools, getToolPolicy } from './tool-recommender.js';
|
|
3
|
+
import { generateSixLayerPrompt, renderSixLayerPromptAsMarkdown, renderSixLayerPromptAsTypeScript } from './prompt-generator.js';
|
|
4
|
+
import { generateRfcMarkdown } from './rfc-emitter.js';
|
|
5
|
+
import { generateFlowTemplateWithLLM } from '../llm-flow-generator.js';
|
|
6
|
+
import { emitFlowTypeScriptModule } from '../flow-codegen.js';
|
|
7
|
+
import { AgentBlueprintSchema, } from './types.js';
|
|
8
|
+
function toSlug(value) {
|
|
9
|
+
return value
|
|
10
|
+
.toLowerCase()
|
|
11
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
12
|
+
.replace(/^-+|-+$/g, '')
|
|
13
|
+
.slice(0, 64) || 'generated-agent';
|
|
14
|
+
}
|
|
15
|
+
function toTitleCase(value) {
|
|
16
|
+
return value
|
|
17
|
+
.replace(/[_-]+/g, ' ')
|
|
18
|
+
.replace(/\s+/g, ' ')
|
|
19
|
+
.trim()
|
|
20
|
+
.split(' ')
|
|
21
|
+
.map(word => (word ? word[0].toUpperCase() + word.slice(1) : ''))
|
|
22
|
+
.join(' ');
|
|
23
|
+
}
|
|
24
|
+
function toTsConstCase(value) {
|
|
25
|
+
const clean = value.replace(/[^a-zA-Z0-9]+/g, ' ').trim();
|
|
26
|
+
const words = clean.split(/\s+/).filter(Boolean);
|
|
27
|
+
if (words.length === 0)
|
|
28
|
+
return 'generatedAgent';
|
|
29
|
+
const [head, ...tail] = words;
|
|
30
|
+
return `${head.toLowerCase()}${tail.map(word => word[0].toUpperCase() + word.slice(1).toLowerCase()).join('')}`;
|
|
31
|
+
}
|
|
32
|
+
export async function runArchitect(options) {
|
|
33
|
+
const { useCase, mode = 'hybrid', target = 'both', name, model, contextText, timeoutMs = 120000, detailLevel = 'detailed', } = options;
|
|
34
|
+
console.log('\n🔍 Analyzing use case with LLM...');
|
|
35
|
+
const domainAnalysis = await analyzeUseCase(useCase, {
|
|
36
|
+
model,
|
|
37
|
+
contextText,
|
|
38
|
+
timeoutMs,
|
|
39
|
+
});
|
|
40
|
+
console.log(' Domain:', domainAnalysis.domain);
|
|
41
|
+
console.log(' Entities:', domainAnalysis.entities.join(', '));
|
|
42
|
+
console.log(' Workflows:', domainAnalysis.workflows.join(', '));
|
|
43
|
+
console.log('\n🛠️ Recommending tools with LLM...');
|
|
44
|
+
const toolRecommendations = await recommendTools(useCase, domainAnalysis, {
|
|
45
|
+
model,
|
|
46
|
+
timeoutMs,
|
|
47
|
+
});
|
|
48
|
+
console.log(' Recommended tools:');
|
|
49
|
+
for (const tool of toolRecommendations) {
|
|
50
|
+
console.log(` - ${tool.toolName} (${tool.priority})`);
|
|
51
|
+
}
|
|
52
|
+
const blueprintId = toSlug(name ?? useCase);
|
|
53
|
+
const displayName = name ? toTitleCase(name) : toTitleCase(blueprintId);
|
|
54
|
+
console.log('\n📝 Generating 6-layer prompt with LLM...');
|
|
55
|
+
const promptLayers = await generateSixLayerPrompt(displayName, useCase, domainAnalysis, toolRecommendations, mode, { model, timeoutMs });
|
|
56
|
+
let flowJson;
|
|
57
|
+
let flowTs;
|
|
58
|
+
if (mode !== 'llm') {
|
|
59
|
+
console.log('\n🔀 Generating flow for ' + mode + ' mode...');
|
|
60
|
+
try {
|
|
61
|
+
flowJson = await generateFlowTemplateWithLLM({
|
|
62
|
+
useCase,
|
|
63
|
+
direction: 'inbound',
|
|
64
|
+
agentName: displayName,
|
|
65
|
+
model: model ?? 'gpt-5-mini',
|
|
66
|
+
llmMode: mode === 'flow' ? 'full' : 'hybrid',
|
|
67
|
+
contextText,
|
|
68
|
+
timeoutMs,
|
|
69
|
+
});
|
|
70
|
+
console.log(' Flow nodes:', flowJson?.nodes?.length ?? 0);
|
|
71
|
+
if (target === 'code' || target === 'both') {
|
|
72
|
+
flowTs = emitFlowTypeScriptModule(flowJson, { constName: `${toTsConstCase(blueprintId)}Flow` });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.warn(' Flow generation failed, continuing without flow:', error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const blueprint = {
|
|
80
|
+
id: blueprintId,
|
|
81
|
+
name: displayName,
|
|
82
|
+
useCase,
|
|
83
|
+
mode,
|
|
84
|
+
target,
|
|
85
|
+
domainAnalysis: {
|
|
86
|
+
...domainAnalysis,
|
|
87
|
+
constraints: domainAnalysis.constraints ?? [],
|
|
88
|
+
},
|
|
89
|
+
selectedTools: toolRecommendations.map(t => t.toolName),
|
|
90
|
+
toolRecommendations,
|
|
91
|
+
toolPolicy: getToolPolicy(toolRecommendations),
|
|
92
|
+
promptLayers,
|
|
93
|
+
evalPlan: {
|
|
94
|
+
scenarios: [
|
|
95
|
+
'happy_path_conversation',
|
|
96
|
+
'tool_failure_recovery',
|
|
97
|
+
'invalid_user_input',
|
|
98
|
+
'policy_refusal',
|
|
99
|
+
'edge_case_handling',
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
generationMeta: {
|
|
103
|
+
generatedAt: new Date().toISOString(),
|
|
104
|
+
model: model ?? 'gpt-5-mini',
|
|
105
|
+
llmRequired: true,
|
|
106
|
+
llmEnabled: true,
|
|
107
|
+
llmMode: mode,
|
|
108
|
+
interactive: options.interactive ?? false,
|
|
109
|
+
clarificationCount: 0,
|
|
110
|
+
clarifications: [],
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const promptMarkdown = renderSixLayerPromptAsMarkdown(displayName, promptLayers);
|
|
114
|
+
const promptConstName = toTsConstCase(blueprintId);
|
|
115
|
+
const promptTypeScript = renderSixLayerPromptAsTypeScript(promptConstName, promptLayers);
|
|
116
|
+
const artifacts = {
|
|
117
|
+
prompt: promptMarkdown,
|
|
118
|
+
flow: flowJson,
|
|
119
|
+
code: {
|
|
120
|
+
prompt: promptTypeScript,
|
|
121
|
+
flow: flowTs,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
const rfcMarkdown = generateRfcMarkdown(blueprint, artifacts, detailLevel);
|
|
125
|
+
artifacts.rfc = rfcMarkdown;
|
|
126
|
+
return {
|
|
127
|
+
blueprint: AgentBlueprintSchema.parse(blueprint),
|
|
128
|
+
artifacts,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-architect/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DomainAnalysis, type ToolRecommendation, type SixLayerPrompt } from './types.js';
|
|
2
|
+
export interface PromptGeneratorOptions {
|
|
3
|
+
model?: string;
|
|
4
|
+
timeoutMs?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function generateSixLayerPrompt(agentName: string, useCase: string, domainAnalysis: DomainAnalysis, toolRecommendations: ToolRecommendation[], mode: 'llm' | 'flow' | 'hybrid', options?: PromptGeneratorOptions): Promise<SixLayerPrompt>;
|
|
7
|
+
export declare function renderSixLayerPromptAsMarkdown(agentName: string, prompt: SixLayerPrompt): string;
|
|
8
|
+
export declare function renderSixLayerPromptAsTypeScript(constName: string, prompt: SixLayerPrompt): string;
|
|
9
|
+
//# sourceMappingURL=prompt-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-generator.d.ts","sourceRoot":"","sources":["../../src/agent-architect/prompt-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAwB,MAAM,YAAY,CAAC;AAqGrH,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,EAC/B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,cAAc,CAAC,CA8BzB;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,GACrB,MAAM,CA6BR;AAED,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,GACrB,MAAM,CAMR"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { generateObject } from 'ai';
|
|
2
|
+
import { openai } from '@ai-sdk/openai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { SixLayerPromptSchema } from './types.js';
|
|
5
|
+
const SixLayerPromptLLMSchema = z.object({
|
|
6
|
+
identityAndRole: z.object({
|
|
7
|
+
name: z.string().describe('Layer identifier'),
|
|
8
|
+
content: z.string().describe('The actual prompt text for this layer'),
|
|
9
|
+
purpose: z.string().describe('Why this layer exists'),
|
|
10
|
+
}),
|
|
11
|
+
safetyAndGuardrails: z.object({
|
|
12
|
+
name: z.string().describe('Layer identifier'),
|
|
13
|
+
content: z.string().describe('The actual prompt text for this layer'),
|
|
14
|
+
purpose: z.string().describe('Why this layer exists'),
|
|
15
|
+
}),
|
|
16
|
+
toolContract: z.object({
|
|
17
|
+
name: z.string().describe('Layer identifier'),
|
|
18
|
+
content: z.string().describe('The actual prompt text for this layer'),
|
|
19
|
+
purpose: z.string().describe('Why this layer exists'),
|
|
20
|
+
}),
|
|
21
|
+
reasoningWorkflow: z.object({
|
|
22
|
+
name: z.string().describe('Layer identifier'),
|
|
23
|
+
content: z.string().describe('The actual prompt text for this layer'),
|
|
24
|
+
purpose: z.string().describe('Why this layer exists'),
|
|
25
|
+
}),
|
|
26
|
+
executionPolicy: z.object({
|
|
27
|
+
name: z.string().describe('Layer identifier'),
|
|
28
|
+
content: z.string().describe('The actual prompt text for this layer'),
|
|
29
|
+
purpose: z.string().describe('Why this layer exists'),
|
|
30
|
+
}),
|
|
31
|
+
outputConstraints: z.object({
|
|
32
|
+
name: z.string().describe('Layer identifier'),
|
|
33
|
+
content: z.string().describe('The actual prompt text for this layer'),
|
|
34
|
+
purpose: z.string().describe('Why this layer exists'),
|
|
35
|
+
}),
|
|
36
|
+
});
|
|
37
|
+
function resolveModel(modelInput) {
|
|
38
|
+
const requested = modelInput?.trim() || 'gpt-5-mini';
|
|
39
|
+
const modelId = requested.startsWith('openai:') ? requested.slice('openai:'.length).trim() : requested;
|
|
40
|
+
return openai(modelId || 'gpt-5-mini');
|
|
41
|
+
}
|
|
42
|
+
function buildPromptGenerationPrompt(agentName, useCase, domainAnalysis, toolRecommendations, mode) {
|
|
43
|
+
const toolsList = toolRecommendations.map(t => `- ${t.toolName}: ${t.description} (${t.priority})`).join('\n');
|
|
44
|
+
return `Generate a 6-layer system prompt for a conversational AI agent.
|
|
45
|
+
|
|
46
|
+
## Agent Identity
|
|
47
|
+
- Name: ${agentName}
|
|
48
|
+
- Use Case: ${useCase}
|
|
49
|
+
|
|
50
|
+
## Domain Analysis
|
|
51
|
+
- Domain: ${domainAnalysis.domain}
|
|
52
|
+
${domainAnalysis.subDomain ? `- Sub-domain: ${domainAnalysis.subDomain}` : ''}
|
|
53
|
+
- Entities: ${domainAnalysis.entities.join(', ')}
|
|
54
|
+
- Workflows: ${domainAnalysis.workflows.join(', ')}
|
|
55
|
+
- User Intents: ${domainAnalysis.userIntents.join(', ')}
|
|
56
|
+
- Key Outcomes: ${domainAnalysis.keyOutcomes.join(', ')}
|
|
57
|
+
|
|
58
|
+
## Recommended Tools
|
|
59
|
+
${toolsList}
|
|
60
|
+
|
|
61
|
+
## Agent Mode
|
|
62
|
+
${mode === 'llm' ? 'Pure LLM agent - uses tools but no structured flow' : mode === 'flow' ? 'Flow-based agent - follows structured conversation flow' : 'Hybrid agent - flow with LLM detours'}
|
|
63
|
+
|
|
64
|
+
## Your Task
|
|
65
|
+
Generate each of the 6 prompt layers:
|
|
66
|
+
|
|
67
|
+
### Layer 1: Identity and Role
|
|
68
|
+
Who is the agent? What is its purpose? What tone should it use?
|
|
69
|
+
|
|
70
|
+
### Layer 2: Safety and Guardrails
|
|
71
|
+
What should the agent NEVER do? What are the safety constraints? When should it escalate?
|
|
72
|
+
|
|
73
|
+
### Layer 3: Tool Contract
|
|
74
|
+
What tools are available? When should each be used? What happens on tool failure?
|
|
75
|
+
|
|
76
|
+
### Layer 4: Reasoning Workflow
|
|
77
|
+
How should the agent think through conversations? What questions to ask? In what order?
|
|
78
|
+
|
|
79
|
+
### Layer 5: Execution Policy
|
|
80
|
+
How does the agent behave in ${mode} mode? What are the rules for tool calls vs user messages?
|
|
81
|
+
|
|
82
|
+
### Layer 6: Output Constraints
|
|
83
|
+
How should responses be formatted? What verification steps before final actions?
|
|
84
|
+
|
|
85
|
+
For each layer, provide:
|
|
86
|
+
- name: Layer identifier
|
|
87
|
+
- content: The actual prompt text
|
|
88
|
+
- purpose: Why this layer exists
|
|
89
|
+
|
|
90
|
+
Make the prompts specific to this use case, not generic templates.`;
|
|
91
|
+
}
|
|
92
|
+
export async function generateSixLayerPrompt(agentName, useCase, domainAnalysis, toolRecommendations, mode, options = {}) {
|
|
93
|
+
const model = resolveModel(options.model);
|
|
94
|
+
const timeoutMs = options.timeoutMs ?? 60000;
|
|
95
|
+
if (!process.env.OPENAI_API_KEY) {
|
|
96
|
+
throw new Error('OPENAI_API_KEY is required for LLM prompt generation');
|
|
97
|
+
}
|
|
98
|
+
const result = await Promise.race([
|
|
99
|
+
generateObject({
|
|
100
|
+
model,
|
|
101
|
+
schema: SixLayerPromptLLMSchema,
|
|
102
|
+
system: `You are an expert prompt engineer for conversational AI agents.
|
|
103
|
+
Generate 6-layer system prompts based on the OpenAI-inspired context model:
|
|
104
|
+
1. Identity and Role
|
|
105
|
+
2. Safety and Guardrails
|
|
106
|
+
3. Tool Contract
|
|
107
|
+
4. Reasoning Workflow
|
|
108
|
+
5. Execution Policy
|
|
109
|
+
6. Output Constraints
|
|
110
|
+
|
|
111
|
+
Each layer should be specific to the use case, not generic.`,
|
|
112
|
+
prompt: buildPromptGenerationPrompt(agentName, useCase, domainAnalysis, toolRecommendations, mode),
|
|
113
|
+
}),
|
|
114
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Prompt generation timed out after ${timeoutMs}ms`)), timeoutMs)),
|
|
115
|
+
]);
|
|
116
|
+
return SixLayerPromptSchema.parse(result.object);
|
|
117
|
+
}
|
|
118
|
+
export function renderSixLayerPromptAsMarkdown(agentName, prompt) {
|
|
119
|
+
return [
|
|
120
|
+
`# ${agentName} System Prompt`,
|
|
121
|
+
'',
|
|
122
|
+
`## 1. Identity and Role`,
|
|
123
|
+
'',
|
|
124
|
+
prompt.identityAndRole.content,
|
|
125
|
+
'',
|
|
126
|
+
`## 2. Safety and Guardrails`,
|
|
127
|
+
'',
|
|
128
|
+
prompt.safetyAndGuardrails.content,
|
|
129
|
+
'',
|
|
130
|
+
`## 3. Tool Contract`,
|
|
131
|
+
'',
|
|
132
|
+
prompt.toolContract.content,
|
|
133
|
+
'',
|
|
134
|
+
`## 4. Reasoning Workflow`,
|
|
135
|
+
'',
|
|
136
|
+
prompt.reasoningWorkflow.content,
|
|
137
|
+
'',
|
|
138
|
+
`## 5. Execution Policy`,
|
|
139
|
+
'',
|
|
140
|
+
prompt.executionPolicy.content,
|
|
141
|
+
'',
|
|
142
|
+
`## 6. Output Constraints`,
|
|
143
|
+
'',
|
|
144
|
+
prompt.outputConstraints.content,
|
|
145
|
+
'',
|
|
146
|
+
].join('\n');
|
|
147
|
+
}
|
|
148
|
+
export function renderSixLayerPromptAsTypeScript(constName, prompt) {
|
|
149
|
+
const serialized = JSON.stringify(prompt, null, 2);
|
|
150
|
+
return `export const ${constName}SystemPrompt = ${serialized} as const;
|
|
151
|
+
|
|
152
|
+
export default ${constName}SystemPrompt;
|
|
153
|
+
`;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=prompt-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../src/agent-architect/prompt-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAErH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;IACF,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;IACF,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,CAAC;CACH,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,UAAmB;IACvC,MAAM,SAAS,GAAG,UAAU,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;IACrD,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,OAAO,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAiB,EACjB,OAAe,EACf,cAA8B,EAC9B,mBAAyC,EACzC,IAA+B;IAE/B,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC5C,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,QAAQ,GAAG,CACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO;;;UAGC,SAAS;cACL,OAAO;;;YAGT,cAAc,CAAC,MAAM;EAC/B,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;cAC/D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;eACjC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;kBAChC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;kBACrC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGrD,SAAS;;;EAGT,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,sCAAsC;;;;;;;;;;;;;;;;;;+BAkB/J,IAAI;;;;;;;;;;mEAUgC,CAAC;AACpE,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAiB,EACjB,OAAe,EACf,cAA8B,EAC9B,mBAAyC,EACzC,IAA+B,EAC/B,UAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QAChC,cAAc,CAAC;YACb,KAAK;YACL,MAAM,EAAE,uBAAuB;YAC/B,MAAM,EAAE;;;;;;;;;4DAS8C;YACtD,MAAM,EAAE,2BAA2B,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,IAAI,CAAC;SACnG,CAAC;QACF,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,SAAS,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CACnG;KACF,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,SAAiB,EACjB,MAAsB;IAEtB,OAAO;QACL,KAAK,SAAS,gBAAgB;QAC9B,EAAE;QACF,yBAAyB;QACzB,EAAE;QACF,MAAM,CAAC,eAAe,CAAC,OAAO;QAC9B,EAAE;QACF,6BAA6B;QAC7B,EAAE;QACF,MAAM,CAAC,mBAAmB,CAAC,OAAO;QAClC,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,MAAM,CAAC,YAAY,CAAC,OAAO;QAC3B,EAAE;QACF,0BAA0B;QAC1B,EAAE;QACF,MAAM,CAAC,iBAAiB,CAAC,OAAO;QAChC,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,MAAM,CAAC,eAAe,CAAC,OAAO;QAC9B,EAAE;QACF,0BAA0B;QAC1B,EAAE;QACF,MAAM,CAAC,iBAAiB,CAAC,OAAO;QAChC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,SAAiB,EACjB,MAAsB;IAEtB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,gBAAgB,SAAS,kBAAkB,UAAU;;iBAE7C,SAAS;CACzB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type AgentBlueprint, type DetailLevel } from './types.js';
|
|
2
|
+
export declare function generateRfcMarkdown(blueprint: AgentBlueprint, artifacts: {
|
|
3
|
+
prompt?: string;
|
|
4
|
+
flow?: object;
|
|
5
|
+
}, detailLevel?: DetailLevel): string;
|
|
6
|
+
export declare function generateToolSpecifications(recommendations: {
|
|
7
|
+
toolName: string;
|
|
8
|
+
description: string;
|
|
9
|
+
whenToUse: string;
|
|
10
|
+
onError?: string;
|
|
11
|
+
}[]): Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
inputSchema: Record<string, unknown>;
|
|
15
|
+
outputSchema: Record<string, unknown>;
|
|
16
|
+
integrationSteps: string[];
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=rfc-emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rfc-emitter.d.ts","sourceRoot":"","sources":["../../src/agent-architect/rfc-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAgHnE,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,WAAW,GAAE,WAAwB,GACpC,MAAM,CAmIR;AAED,wBAAgB,0BAA0B,CACxC,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAChG,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC,CAQD"}
|