@ai-outfitter/outfitter 1.12.0 → 1.13.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/dist/cli/commands/DumpCommand.d.ts +1 -0
- package/dist/cli/commands/DumpCommand.js +12 -5
- package/dist/cli/commands/DumpCommand.js.map +1 -1
- package/dist/cli/commands/ListCommand.d.ts +9 -0
- package/dist/cli/commands/ListCommand.js +25 -9
- package/dist/cli/commands/ListCommand.js.map +1 -1
- package/dist/dump/WorkflowDump.d.ts +4 -0
- package/dist/dump/WorkflowDump.js +148 -0
- package/dist/dump/WorkflowDump.js.map +1 -0
- package/dist/resolver/Resolver.js +2 -0
- package/dist/resolver/Resolver.js.map +1 -1
- package/dist/resolver/ResolverValidation.js +156 -1
- package/dist/resolver/ResolverValidation.js.map +1 -1
- package/dist/resolver/Resource.d.ts +1 -1
- package/dist/resolver/Resource.js +1 -1
- package/dist/resolver/Resource.js.map +1 -1
- package/dist/resolver/WorkflowDefinition.d.ts +56 -0
- package/dist/resolver/WorkflowDefinition.js +23 -0
- package/dist/resolver/WorkflowDefinition.js.map +1 -0
- package/dist/schemas/workflow.schema.json +81 -0
- package/dist/setup/DefaultCatalog.js +1 -1
- package/dist/setup/DefaultCatalog.js.map +1 -1
- package/dist/validation/SchemaValidator.d.ts +1 -1
- package/dist/validation/SchemaValidator.js +2 -0
- package/dist/validation/SchemaValidator.js.map +1 -1
- package/docs/documentation/catalogs.md +9 -1
- package/docs/documentation/cli.md +13 -8
- package/docs/documentation/dump-and-bake.md +2 -0
- package/package.json +1 -1
- package/src/schemas/workflow.schema.json +81 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Provides `outfitter dump --agent <id> --out <dir>` over the effective resource set.
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { dumpAgent } from '../../dump/Dump.js';
|
|
4
|
+
import { dumpWorkflow } from '../../dump/WorkflowDump.js';
|
|
4
5
|
import { strictAmbiguityFailureMessage } from '../../resolver/AmbiguityWarnings.js';
|
|
5
6
|
import { resolveEffectiveSet } from '../../resolver/ResolverContext.js';
|
|
6
7
|
import { resolveHomeDirectory, resolveProjectDirectory } from './ProcessDefaults.js';
|
|
@@ -26,13 +27,17 @@ export const executeDumpCommand = (input) => {
|
|
|
26
27
|
ok: false,
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
if (input.agent !== undefined && input.workflow !== undefined)
|
|
31
|
+
throw new Error('Choose either --agent or --workflow, not both.');
|
|
32
|
+
const selected = input.workflow ?? resolveAgentSlug(settings, input.agent);
|
|
33
|
+
const result = input.workflow === undefined
|
|
34
|
+
? dumpAgent(set, selected, input.out, input.projectDirectory)
|
|
35
|
+
: dumpWorkflow(set, selected, input.out, input.projectDirectory);
|
|
31
36
|
const ok = result.errors.length === 0;
|
|
32
37
|
const messages = ok
|
|
33
38
|
? [
|
|
34
39
|
...syncWarnings,
|
|
35
|
-
`Dumped '${
|
|
40
|
+
`Dumped '${selected}' to ${input.out} (${result.writtenPaths.length} files).`,
|
|
36
41
|
...result.warnings,
|
|
37
42
|
]
|
|
38
43
|
: [...syncWarnings, ...result.errors, ...result.warnings];
|
|
@@ -40,11 +45,12 @@ export const executeDumpCommand = (input) => {
|
|
|
40
45
|
};
|
|
41
46
|
export const createDumpCommand = (dependencies = {}) => ({
|
|
42
47
|
name: 'dump',
|
|
43
|
-
description: 'Write the composed .agents tree for an agent to a directory.',
|
|
48
|
+
description: 'Write the composed .agents tree for an agent or workflow to a directory.',
|
|
44
49
|
register(program) {
|
|
45
50
|
program.addCommand(new Command('dump')
|
|
46
|
-
.description('Write the composed .agents tree for an agent to a directory.')
|
|
51
|
+
.description('Write the composed .agents tree for an agent or workflow to a directory.')
|
|
47
52
|
.option('--agent <id>', 'Agent slug to dump (default: settings default_agent).')
|
|
53
|
+
.option('--workflow <id>', 'Workflow slug whose complete non-executable closure should be dumped.')
|
|
48
54
|
.option('--out <dir>', 'Output directory.', './outfitter-dump')
|
|
49
55
|
.option('--strict', 'Treat ambiguous source resolution as fatal.')
|
|
50
56
|
.action((options) => {
|
|
@@ -53,6 +59,7 @@ export const createDumpCommand = (dependencies = {}) => ({
|
|
|
53
59
|
homeDirectory: resolveHomeDirectory(dependencies.homeDirectory),
|
|
54
60
|
projectDirectory: resolveProjectDirectory(dependencies.projectDirectory),
|
|
55
61
|
agent: options.agent,
|
|
62
|
+
workflow: options.workflow,
|
|
56
63
|
out: options.out,
|
|
57
64
|
strict: options.strict,
|
|
58
65
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DumpCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/DumpCommand.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DumpCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/DumpCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ResourceKind } from '../../resolver/Resource.js';
|
|
1
2
|
import type { CommandObject } from './CommandObject.js';
|
|
2
3
|
export interface ListInput {
|
|
3
4
|
readonly homeDirectory: string;
|
|
@@ -9,6 +10,14 @@ export interface ListInput {
|
|
|
9
10
|
export interface ListResult {
|
|
10
11
|
readonly exitCode: number;
|
|
11
12
|
readonly messages: readonly string[];
|
|
13
|
+
readonly resources: readonly ListResourceEntry[];
|
|
14
|
+
}
|
|
15
|
+
export interface ListResourceEntry {
|
|
16
|
+
readonly kind: ResourceKind;
|
|
17
|
+
readonly slug: string;
|
|
18
|
+
readonly layer: string;
|
|
19
|
+
readonly path: string;
|
|
20
|
+
readonly ownerAgent: string | null;
|
|
12
21
|
}
|
|
13
22
|
export interface ListCommandDependencies {
|
|
14
23
|
readonly homeDirectory?: string;
|
|
@@ -10,12 +10,14 @@ const kindByPlural = new Map([
|
|
|
10
10
|
['skills', 'skill'],
|
|
11
11
|
['knowledge', 'knowledge'],
|
|
12
12
|
['commands', 'command'],
|
|
13
|
+
['workflows', 'workflow'],
|
|
13
14
|
]);
|
|
14
15
|
const pluralByKind = new Map([
|
|
15
16
|
['agent', 'agents'],
|
|
16
17
|
['skill', 'skills'],
|
|
17
18
|
['knowledge', 'knowledge'],
|
|
18
19
|
['command', 'commands'],
|
|
20
|
+
['workflow', 'workflows'],
|
|
19
21
|
]);
|
|
20
22
|
const resolveKindFilter = (kind) => {
|
|
21
23
|
if (kind === undefined) {
|
|
@@ -40,9 +42,10 @@ export const executeListCommand = (input) => {
|
|
|
40
42
|
}
|
|
41
43
|
const messages = warnings.map((warning) => `warning: ${warning}`);
|
|
42
44
|
if (input.strict === true && ambiguityWarnings.length > 0) {
|
|
43
|
-
return { exitCode: 1, messages: [...messages, `error: ${strictAmbiguityFailureMessage}`] };
|
|
45
|
+
return { exitCode: 1, messages: [...messages, `error: ${strictAmbiguityFailureMessage}`], resources: [] };
|
|
44
46
|
}
|
|
45
47
|
assertKnownAgent(set, input.agent);
|
|
48
|
+
const entries = [];
|
|
46
49
|
for (const kind of resolveKindFilter(input.kind)) {
|
|
47
50
|
const hasAgentContext = input.agent !== undefined && agentLocalKinds.includes(kind);
|
|
48
51
|
const globalResources = listResources(set, kind);
|
|
@@ -50,6 +53,15 @@ export const executeListCommand = (input) => {
|
|
|
50
53
|
const resources = new Map(globalResources.map((resource) => [resource.slug, resource]));
|
|
51
54
|
for (const resource of localResources)
|
|
52
55
|
resources.set(resource.slug, resource);
|
|
56
|
+
entries.push(...[...resources.values()]
|
|
57
|
+
.sort((left, right) => compareSlugs(left.slug, right.slug))
|
|
58
|
+
.map((resource) => ({
|
|
59
|
+
kind: resource.kind,
|
|
60
|
+
slug: resource.slug,
|
|
61
|
+
layer: resource.winner.layer.label,
|
|
62
|
+
path: resource.winner.path,
|
|
63
|
+
ownerAgent: resource.winner.ownerAgent ?? null,
|
|
64
|
+
})));
|
|
53
65
|
messages.push(`${pluralByKind.get(kind)}${hasAgentContext ? ` (agent ${input.agent})` : ''}:`);
|
|
54
66
|
messages.push(...(resources.size === 0
|
|
55
67
|
? [' (none)']
|
|
@@ -57,16 +69,17 @@ export const executeListCommand = (input) => {
|
|
|
57
69
|
.sort((left, right) => compareSlugs(left.slug, right.slug))
|
|
58
70
|
.map((resource) => ` ${resource.slug} [${resource.winner.layer.label}${resource.winner.ownerAgent === undefined ? '' : '; agent-local'}]`)));
|
|
59
71
|
}
|
|
60
|
-
return { exitCode: 0, messages };
|
|
72
|
+
return { exitCode: 0, messages, resources: entries };
|
|
61
73
|
};
|
|
62
74
|
export const createListCommand = (dependencies = {}) => ({
|
|
63
75
|
name: 'list',
|
|
64
|
-
description: 'List resolvable resources (agents, skills, knowledge, commands).',
|
|
76
|
+
description: 'List resolvable resources (agents, skills, knowledge, commands, workflows).',
|
|
65
77
|
register(program) {
|
|
66
78
|
program.addCommand(new Command('list')
|
|
67
|
-
.description('List resolvable resources (agents, skills, knowledge, commands).')
|
|
68
|
-
.argument('[kind]', 'Restrict to one kind: agents, skills, knowledge, or
|
|
79
|
+
.description('List resolvable resources (agents, skills, knowledge, commands, workflows).')
|
|
80
|
+
.argument('[kind]', 'Restrict to one kind: agents, skills, knowledge, commands, or workflows.')
|
|
69
81
|
.option('--strict', 'Treat ambiguous source resolution as fatal.')
|
|
82
|
+
.option('--json', 'Emit stable machine-readable JSON with resource provenance.')
|
|
70
83
|
.option('--agent <id>', 'Resolve resources in an agent context, including its agent-local skills/knowledge/commands.')
|
|
71
84
|
.action((kind, options) => {
|
|
72
85
|
const result = executeListCommand({
|
|
@@ -77,10 +90,13 @@ export const createListCommand = (dependencies = {}) => ({
|
|
|
77
90
|
agent: options.agent,
|
|
78
91
|
strict: options.strict,
|
|
79
92
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
/* v8 ignore next -- console fallback is direct CLI behavior; tests inject a writer. */
|
|
94
|
+
const write = dependencies.writeLine ?? console.log;
|
|
95
|
+
if (options.json === true)
|
|
96
|
+
write(JSON.stringify({ ok: result.exitCode === 0, resources: result.resources, diagnostics: result.messages }, null, 2));
|
|
97
|
+
else
|
|
98
|
+
for (const message of result.messages)
|
|
99
|
+
write(message);
|
|
84
100
|
if (result.exitCode !== 0)
|
|
85
101
|
process.exitCode = result.exitCode;
|
|
86
102
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ListCommand.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAEpF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ListCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ListCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EffectiveResourceSet } from '../resolver/Resource.js';
|
|
2
|
+
import type { DumpResult } from './Dump.js';
|
|
3
|
+
/** Export a workflow and every nested workflow/agent closure. Workflows remain configuration only. */
|
|
4
|
+
export declare const dumpWorkflow: (set: EffectiveResourceSet, workflowSlug: string, outDirectory: string, projectDirectory?: string) => DumpResult;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { copyFileSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { dirname, join, relative } from 'node:path';
|
|
5
|
+
import { findResource } from '../resolver/Resource.js';
|
|
6
|
+
import { compareSlugs } from '../resolver/Resource.js';
|
|
7
|
+
import { isWorkflowDefinitionIssue, readWorkflowDefinition } from '../resolver/WorkflowDefinition.js';
|
|
8
|
+
import { dumpAgent } from './Dump.js';
|
|
9
|
+
import { escapesRoots } from './Containment.js';
|
|
10
|
+
const collectWorkflowClosure = (set, root) => {
|
|
11
|
+
const workflows = [];
|
|
12
|
+
const agents = new Set();
|
|
13
|
+
const errors = [];
|
|
14
|
+
const seen = new Set();
|
|
15
|
+
const queue = [root];
|
|
16
|
+
while (queue.length > 0) {
|
|
17
|
+
const slug = queue.shift();
|
|
18
|
+
if (seen.has(slug))
|
|
19
|
+
continue;
|
|
20
|
+
seen.add(slug);
|
|
21
|
+
const resource = findResource(set, 'workflow', slug);
|
|
22
|
+
if (resource === undefined) {
|
|
23
|
+
errors.push(`workflow '${root}' references unknown workflow '${slug}'.`);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const definition = readWorkflowDefinition(resource.winner.path);
|
|
27
|
+
if (isWorkflowDefinitionIssue(definition)) {
|
|
28
|
+
errors.push(`workflow '${slug}': ${definition.message}`);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (definition.id !== slug) {
|
|
32
|
+
errors.push(`workflow id '${definition.id}' must match its directory '${slug}'.`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
workflows.push(definition);
|
|
36
|
+
for (const actor of Object.values(definition.actors))
|
|
37
|
+
if (actor.kind === 'agent')
|
|
38
|
+
agents.add(actor.profile);
|
|
39
|
+
for (const node of definition.nodes)
|
|
40
|
+
if (node.workflow !== undefined)
|
|
41
|
+
queue.push(node.workflow);
|
|
42
|
+
}
|
|
43
|
+
return { workflows, agents: [...agents].sort(), errors };
|
|
44
|
+
};
|
|
45
|
+
const mergeTree = (source, target, written, errors) => {
|
|
46
|
+
/* v8 ignore next -- dumpAgent always creates its .agents output root. */
|
|
47
|
+
if (!existsSync(source))
|
|
48
|
+
return;
|
|
49
|
+
for (const entry of readdirSync(source, { withFileTypes: true })) {
|
|
50
|
+
const sourcePath = join(source, entry.name);
|
|
51
|
+
const targetPath = join(target, entry.name);
|
|
52
|
+
/* v8 ignore next -- dumpAgent copies resources and never emits symbolic links. */
|
|
53
|
+
if (lstatSync(sourcePath).isSymbolicLink())
|
|
54
|
+
continue;
|
|
55
|
+
if (entry.isDirectory()) {
|
|
56
|
+
mkdirSync(targetPath, { recursive: true });
|
|
57
|
+
mergeTree(sourcePath, targetPath, written, errors);
|
|
58
|
+
}
|
|
59
|
+
else if (entry.isFile()) {
|
|
60
|
+
if (existsSync(targetPath)) {
|
|
61
|
+
/* v8 ignore next 2 -- resolved closures can repeat only the same winning resource; this remains defensive. */
|
|
62
|
+
if (!lstatSync(targetPath).isFile() || !readFileSync(targetPath).equals(readFileSync(sourcePath)))
|
|
63
|
+
errors.push(`workflow closure contains conflicting file '${targetPath}'.`);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
mkdirSync(dirname(targetPath), { recursive: true });
|
|
67
|
+
copyFileSync(sourcePath, targetPath);
|
|
68
|
+
written.push(targetPath);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
/** Export a workflow and every nested workflow/agent closure. Workflows remain configuration only. */
|
|
73
|
+
export const dumpWorkflow = (set, workflowSlug, outDirectory, projectDirectory) => {
|
|
74
|
+
const closure = collectWorkflowClosure(set, workflowSlug);
|
|
75
|
+
if (closure.errors.length > 0)
|
|
76
|
+
return { writtenPaths: [], warnings: [], errors: closure.errors };
|
|
77
|
+
const outRoot = join(outDirectory, '.agents');
|
|
78
|
+
if (existsSync(outRoot))
|
|
79
|
+
return { writtenPaths: [], warnings: [], errors: [`workflow dump refuses existing destination '${outRoot}'.`] };
|
|
80
|
+
const temporary = mkdtempSync(join(tmpdir(), 'outfitter-workflow-'));
|
|
81
|
+
mkdirSync(outRoot, { recursive: true });
|
|
82
|
+
const written = [];
|
|
83
|
+
const warnings = [];
|
|
84
|
+
const errors = [];
|
|
85
|
+
const compositions = [];
|
|
86
|
+
try {
|
|
87
|
+
for (const agent of closure.agents) {
|
|
88
|
+
const agentDump = join(temporary, agent);
|
|
89
|
+
const result = dumpAgent(set, agent, agentDump, projectDirectory);
|
|
90
|
+
warnings.push(...result.warnings);
|
|
91
|
+
errors.push(...result.errors);
|
|
92
|
+
const composition = join(agentDump, '.agents', '.outfitter', 'composition.json');
|
|
93
|
+
/* v8 ignore next -- a successful dumpAgent always writes its composition manifest. */
|
|
94
|
+
if (existsSync(composition)) {
|
|
95
|
+
const parsed = JSON.parse(readFileSync(composition, 'utf8'));
|
|
96
|
+
compositions.push(...parsed.compositions);
|
|
97
|
+
rmSync(composition);
|
|
98
|
+
}
|
|
99
|
+
mergeTree(join(agentDump, '.agents'), outRoot, written, errors);
|
|
100
|
+
}
|
|
101
|
+
for (const workflow of closure.workflows) {
|
|
102
|
+
const resource = findResource(set, 'workflow', workflow.id);
|
|
103
|
+
if (escapesRoots(resource.winner.path, set.layers.map((layer) => layer.root))) {
|
|
104
|
+
errors.push(`workflow '${workflow.id}' resolves outside the tree and cannot be safely dumped.`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const target = join(outRoot, 'workflows', workflow.id, 'workflow.yaml');
|
|
108
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
109
|
+
copyFileSync(resource.winner.path, target);
|
|
110
|
+
written.push(target);
|
|
111
|
+
}
|
|
112
|
+
if (errors.length > 0) {
|
|
113
|
+
rmSync(outRoot, { recursive: true, force: true });
|
|
114
|
+
return { writtenPaths: [], warnings, errors };
|
|
115
|
+
}
|
|
116
|
+
const fileEntries = written
|
|
117
|
+
.map((path) => ({
|
|
118
|
+
path: path.slice(outRoot.length + 1),
|
|
119
|
+
sha256: createHash('sha256').update(readFileSync(path)).digest('hex'),
|
|
120
|
+
}))
|
|
121
|
+
.sort((a, b) => compareSlugs(a.path, b.path));
|
|
122
|
+
const manifestTarget = join(outRoot, '.outfitter', 'workflow-composition.json');
|
|
123
|
+
mkdirSync(dirname(manifestTarget), { recursive: true });
|
|
124
|
+
writeFileSync(manifestTarget, `${JSON.stringify({
|
|
125
|
+
version: 1,
|
|
126
|
+
root: workflowSlug,
|
|
127
|
+
workflows: closure.workflows.map((workflow) => {
|
|
128
|
+
const resource = findResource(set, 'workflow', workflow.id);
|
|
129
|
+
return {
|
|
130
|
+
id: workflow.id,
|
|
131
|
+
source: {
|
|
132
|
+
layer: resource.winner.layer.label,
|
|
133
|
+
path: relative(resource.winner.layer.root, resource.winner.path),
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}),
|
|
137
|
+
agents: closure.agents,
|
|
138
|
+
compositions,
|
|
139
|
+
files: fileEntries,
|
|
140
|
+
}, null, 2)}\n`);
|
|
141
|
+
written.push(manifestTarget);
|
|
142
|
+
return { writtenPaths: written.sort(), warnings: [...new Set(warnings)], errors: [] };
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
rmSync(temporary, { recursive: true, force: true });
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=WorkflowDump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowDump.js","sourceRoot":"","sources":["../../src/dump/WorkflowDump.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,12 @@ const resolvesToFile = (path) => {
|
|
|
23
23
|
const directoryResourceKinds = new Map([
|
|
24
24
|
['agent', 'agents'],
|
|
25
25
|
['skill', 'skills'],
|
|
26
|
+
['workflow', 'workflows'],
|
|
26
27
|
]);
|
|
27
28
|
const entryFileByKind = new Map([
|
|
28
29
|
['agent', 'agent.md'],
|
|
29
30
|
['skill', 'SKILL.md'],
|
|
31
|
+
['workflow', 'workflow.yaml'],
|
|
30
32
|
]);
|
|
31
33
|
const fileTreeResourceKinds = new Map([
|
|
32
34
|
['knowledge', 'knowledge'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolver/Resolver.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7E,+FAA+F;AAC/F,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE;IACpD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,0FAA0F;AAC1F,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE;IAC/C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAsC,IAAI,GAAG,CAAC;IACxE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,CAAC,OAAO,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolver/Resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { compose } from '../composer/Composer.js';
|
|
|
3
3
|
import { isSkillDocumentIssue, readSkillDocument } from '../skills/SkillDocument.js';
|
|
4
4
|
import { isAgentDefinitionIssue, readAgentDefinition } from './AgentDefinition.js';
|
|
5
5
|
import { agentLocalKinds, findResource, listAgentResources, listResources } from './Resource.js';
|
|
6
|
+
import { isWorkflowDefinitionIssue, readWorkflowDefinition } from './WorkflowDefinition.js';
|
|
6
7
|
// Matches the composer's top-level unresolved-loadout warning wording (see `compose` in Composer.ts).
|
|
7
8
|
// It is deliberately coupled to that message; `resolver-validation.test.ts` drives the real composer,
|
|
8
9
|
// so a wording drift fails that test rather than silently disabling deferral.
|
|
@@ -100,6 +101,154 @@ const validateAgentLocalResources = (set, agentSlug) => {
|
|
|
100
101
|
}
|
|
101
102
|
return findings;
|
|
102
103
|
};
|
|
104
|
+
const workflowError = (slug, message) => ({
|
|
105
|
+
severity: 'error',
|
|
106
|
+
resource: `workflow:${slug}`,
|
|
107
|
+
message,
|
|
108
|
+
});
|
|
109
|
+
const workflowDefinitions = (set) => {
|
|
110
|
+
const definitions = new Map();
|
|
111
|
+
const findings = [];
|
|
112
|
+
for (const resource of listResources(set, 'workflow')) {
|
|
113
|
+
const definition = readWorkflowDefinition(resource.winner.path);
|
|
114
|
+
if (isWorkflowDefinitionIssue(definition)) {
|
|
115
|
+
findings.push(workflowError(resource.slug, definition.message));
|
|
116
|
+
}
|
|
117
|
+
else if (definition.id !== resource.slug) {
|
|
118
|
+
findings.push(workflowError(resource.slug, `workflow id '${definition.id}' must match its directory '${resource.slug}'.`));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
definitions.set(resource.slug, definition);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { definitions, findings };
|
|
125
|
+
};
|
|
126
|
+
const nodeSkills = (node) => [
|
|
127
|
+
...(node.skill === undefined ? [] : [node.skill]),
|
|
128
|
+
...(node.skills ?? []),
|
|
129
|
+
];
|
|
130
|
+
const nodePrompts = (node) => [
|
|
131
|
+
...(node.prompt_fragment === undefined ? [] : [node.prompt_fragment]),
|
|
132
|
+
...(node.prompt_fragments ?? []),
|
|
133
|
+
];
|
|
134
|
+
const missingClosureFindings = (workflowId, nodeId, profile, kind, requested, available) => requested
|
|
135
|
+
.filter((slug) => !available.has(slug))
|
|
136
|
+
.map((slug) => workflowError(workflowId, `node '${nodeId}' references ${kind} '${slug}' outside agent '${profile}' composed closure.`));
|
|
137
|
+
const selectedMcpFindings = (workflow, node, profile, selected) => (node.uses ?? []).flatMap((integrationId) => {
|
|
138
|
+
const integration = workflow.integrations?.[integrationId];
|
|
139
|
+
return integration?.kind === 'mcp' && integration.server !== undefined && !selected.includes(integration.server)
|
|
140
|
+
? [
|
|
141
|
+
workflowError(workflow.id, `node '${node.id}' references MCP server '${integration.server}' outside agent '${profile}' composed closure.`),
|
|
142
|
+
]
|
|
143
|
+
: [];
|
|
144
|
+
});
|
|
145
|
+
const hasAgentClosureAssertions = (workflow, node) => nodeSkills(node).length > 0 ||
|
|
146
|
+
nodePrompts(node).length > 0 ||
|
|
147
|
+
(node.uses ?? []).some((integrationId) => workflow.integrations?.[integrationId]?.kind === 'mcp');
|
|
148
|
+
const validateWorkflowAgentNode = (set, workflow, node, projectDirectory) => {
|
|
149
|
+
const actor = node.actor === undefined ? undefined : workflow.actors[node.actor];
|
|
150
|
+
if (actor?.kind !== 'agent') {
|
|
151
|
+
return hasAgentClosureAssertions(workflow, node)
|
|
152
|
+
? [workflowError(workflow.id, `node '${node.id}' has agent-closure assertions but no agent actor.`)]
|
|
153
|
+
: [];
|
|
154
|
+
}
|
|
155
|
+
const composed = compose(set, actor.profile, { projectDirectory });
|
|
156
|
+
if (composed.plan === undefined) {
|
|
157
|
+
return composed.errors.map((message) => workflowError(workflow.id, `node '${node.id}' agent '${actor.profile}': ${message}`));
|
|
158
|
+
}
|
|
159
|
+
const availableSkills = new Set(composed.plan.loadout.skills.map((skill) => skill.slug));
|
|
160
|
+
const availablePrompts = new Set([
|
|
161
|
+
composed.plan.identity.systemPromptFragment,
|
|
162
|
+
composed.plan.identity.sharedContextFragment,
|
|
163
|
+
... /* v8 ignore next -- compose normalizes this optional source field to an array. */(composed.plan.identity.appendSystemPrompts ?? []),
|
|
164
|
+
composed.plan.identity.promptTemplate,
|
|
165
|
+
]
|
|
166
|
+
.filter((fragment) => fragment?.reference !== undefined)
|
|
167
|
+
.map((fragment) => fragment.reference));
|
|
168
|
+
return [
|
|
169
|
+
...missingClosureFindings(workflow.id, node.id, actor.profile, 'skill', [...(actor.skills ?? []), ...nodeSkills(node)], availableSkills),
|
|
170
|
+
...missingClosureFindings(workflow.id, node.id, actor.profile, 'prompt fragment', nodePrompts(node), availablePrompts),
|
|
171
|
+
...selectedMcpFindings(workflow, node, actor.profile, composed.plan.loadout.mcp),
|
|
172
|
+
];
|
|
173
|
+
};
|
|
174
|
+
const validateWorkflowActors = (set, workflow) => Object.entries(workflow.actors).flatMap(([actorId, actor]) => actor.kind === 'agent' && findResource(set, 'agent', actor.profile) === undefined
|
|
175
|
+
? [workflowError(workflow.id, `actor '${actorId}' references unknown agent '${actor.profile}'.`)]
|
|
176
|
+
: []);
|
|
177
|
+
const optionalReferenceFinding = (workflowId, nodeId, kind, reference, known) => reference !== undefined && !known(reference)
|
|
178
|
+
? [workflowError(workflowId, `node '${nodeId}' references unknown ${kind} '${reference}'.`)]
|
|
179
|
+
: [];
|
|
180
|
+
const unknownListFindings = (workflowId, nodeId, kind, references, known) => references
|
|
181
|
+
.filter((reference) => !known(reference))
|
|
182
|
+
.map((reference) => workflowError(workflowId, `node '${nodeId}' references unknown ${kind} '${reference}'.`));
|
|
183
|
+
const validateWorkflowNodeReferences = (workflow, node, nodeIds, definitions) => {
|
|
184
|
+
const needs = (node.needs ?? [])
|
|
185
|
+
.filter((dependency) => !nodeIds.has(dependency))
|
|
186
|
+
.map((dependency) => workflowError(workflow.id, `node '${node.id}' needs unknown node '${dependency}'.`));
|
|
187
|
+
return [
|
|
188
|
+
...optionalReferenceFinding(workflow.id, node.id, 'actor', node.actor, (actor) => workflow.actors[actor] !== undefined),
|
|
189
|
+
...optionalReferenceFinding(workflow.id, node.id, 'environment', node.environment, (environment) => workflow.environments?.[environment] !== undefined),
|
|
190
|
+
...needs,
|
|
191
|
+
...unknownListFindings(workflow.id, node.id, 'integration', node.uses ?? [], (integration) => workflow.integrations?.[integration] !== undefined),
|
|
192
|
+
...optionalReferenceFinding(workflow.id, node.id, 'workflow', node.workflow, (nested) => definitions.has(nested)),
|
|
193
|
+
];
|
|
194
|
+
};
|
|
195
|
+
const validateWorkflowArtifacts = (workflow) => Object.entries(workflow.integrations ?? {}).flatMap(([id, artifact]) => {
|
|
196
|
+
if (artifact.kind !== 'artifact')
|
|
197
|
+
return [];
|
|
198
|
+
const findings = [];
|
|
199
|
+
if (!/^[0-9a-f]{40}$/.test(artifact.ref ?? ''))
|
|
200
|
+
findings.push(workflowError(workflow.id, `artifact integration '${id}' must pin a full immutable Git commit.`));
|
|
201
|
+
if (!/^[0-9a-f]{64}$/.test(artifact.sha256 ?? ''))
|
|
202
|
+
findings.push(workflowError(workflow.id, `artifact integration '${id}' must declare a SHA-256 digest.`));
|
|
203
|
+
if (artifact.repository === undefined || artifact.path === undefined)
|
|
204
|
+
findings.push(workflowError(workflow.id, `artifact integration '${id}' must declare repository and path.`));
|
|
205
|
+
return findings;
|
|
206
|
+
});
|
|
207
|
+
const validateWorkflow = (set, workflow, definitions, projectDirectory) => {
|
|
208
|
+
const findings = [];
|
|
209
|
+
const nodeIds = new Set();
|
|
210
|
+
findings.push(...validateWorkflowActors(set, workflow));
|
|
211
|
+
for (const node of workflow.nodes) {
|
|
212
|
+
if (nodeIds.has(node.id))
|
|
213
|
+
findings.push(workflowError(workflow.id, `duplicate node id '${node.id}'.`));
|
|
214
|
+
nodeIds.add(node.id);
|
|
215
|
+
}
|
|
216
|
+
for (const node of workflow.nodes) {
|
|
217
|
+
findings.push(...validateWorkflowNodeReferences(workflow, node, nodeIds, definitions));
|
|
218
|
+
findings.push(...validateWorkflowAgentNode(set, workflow, node, projectDirectory));
|
|
219
|
+
}
|
|
220
|
+
for (const edge of workflow.feedback ?? []) {
|
|
221
|
+
if (!nodeIds.has(edge.from))
|
|
222
|
+
findings.push(workflowError(workflow.id, `feedback references unknown source node '${edge.from}'.`));
|
|
223
|
+
if (!nodeIds.has(edge.to))
|
|
224
|
+
findings.push(workflowError(workflow.id, `feedback references unknown target node '${edge.to}'.`));
|
|
225
|
+
}
|
|
226
|
+
findings.push(...validateWorkflowArtifacts(workflow));
|
|
227
|
+
return findings;
|
|
228
|
+
};
|
|
229
|
+
const workflowCycleFindings = (definitions) => {
|
|
230
|
+
const findings = [];
|
|
231
|
+
const visiting = new Set();
|
|
232
|
+
const visited = new Set();
|
|
233
|
+
const visit = (slug, path) => {
|
|
234
|
+
if (visiting.has(slug)) {
|
|
235
|
+
findings.push(workflowError(slug, `nested workflow cycle: ${[...path, slug].join(' -> ')}.`));
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (visited.has(slug))
|
|
239
|
+
return;
|
|
240
|
+
visiting.add(slug);
|
|
241
|
+
const nested = definitions.get(slug).nodes.flatMap((node) => (node.workflow === undefined ? [] : [node.workflow]));
|
|
242
|
+
for (const child of nested)
|
|
243
|
+
if (definitions.has(child))
|
|
244
|
+
visit(child, [...path, slug]);
|
|
245
|
+
visiting.delete(slug);
|
|
246
|
+
visited.add(slug);
|
|
247
|
+
};
|
|
248
|
+
for (const slug of definitions.keys())
|
|
249
|
+
visit(slug, []);
|
|
250
|
+
return findings;
|
|
251
|
+
};
|
|
103
252
|
/**
|
|
104
253
|
* Collects validation findings across the effective set. `error` findings always fail validation;
|
|
105
254
|
* `warning` findings (such as shadowed definitions) fail only under `--strict`.
|
|
@@ -112,10 +261,16 @@ export const validateEffectiveSet = (set, projectDirectory, options = {}) => {
|
|
|
112
261
|
for (const skill of listResources(set, 'skill')) {
|
|
113
262
|
findings.push(...validateSkill(skill));
|
|
114
263
|
}
|
|
264
|
+
const workflows = workflowDefinitions(set);
|
|
265
|
+
findings.push(...workflows.findings);
|
|
266
|
+
for (const workflow of workflows.definitions.values()) {
|
|
267
|
+
findings.push(...validateWorkflow(set, workflow, workflows.definitions, projectDirectory));
|
|
268
|
+
}
|
|
269
|
+
findings.push(...workflowCycleFindings(workflows.definitions));
|
|
115
270
|
for (const [agentSlug] of set.agentResources) {
|
|
116
271
|
findings.push(...validateAgentLocalResources(set, agentSlug));
|
|
117
272
|
}
|
|
118
|
-
for (const kind of ['agent', 'skill', 'knowledge', 'command']) {
|
|
273
|
+
for (const kind of ['agent', 'skill', 'knowledge', 'command', 'workflow']) {
|
|
119
274
|
for (const resource of listResources(set, kind)) {
|
|
120
275
|
findings.push(...shadowFindings(resource));
|
|
121
276
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolverValidation.js","sourceRoot":"","sources":["../../src/resolver/ResolverValidation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResolverValidation.js","sourceRoot":"","sources":["../../src/resolver/ResolverValidation.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAqB5F,sGAAsG;AACtG,sGAAsG;AACtG,8EAA8E;AAC9E,MAAM,4BAA4B,GAAG,CAAC,OAAe,EAAW,EAAE,CAChE,oEAAoE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAErF,MAAM,0BAA0B,GAAG,CAAC,OAAe,EAAE,OAA0B,EAAiC,EAAE,CAChH,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAEjG,MAAM,aAAa,GAAG,CACpB,GAAyB,EACzB,KAAuB,EACvB,OAA0B,EAC1B,gBAAyB,EACK,EAAE;IAChC,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAE7E,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO;YACL;gBACE,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE;gBAC/B,OAAO,EAAE,kBAAkB,UAAU,CAAC,IAAI,+BAA+B,KAAK,CAAC,IAAI,IAAI;aACxF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAChE,MAAM,mBAAmB,GAAwB;QAC/C,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAgB,EAAE,QAAQ,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/G,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrC,QAAQ,EAAE,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC;YACtD,QAAQ,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE;YAC/B,OAAO;SACR,CAAC,CAAC;KACJ,CAAC;IAEF,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,QAA0B,EAAU,EAAE,CAC3D,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;IACtC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;IACrC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AAE9E,MAAM,aAAa,GAAG,CAAC,KAAuB,EAAgC,EAAE;IAC9E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACjC,OAAO;YACL;gBACE,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,kBAAkB,QAAQ,CAAC,IAAI,+BAA+B,KAAK,CAAC,IAAI,IAAI;aACtF;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,QAA0B,EAAgC,EAAE,CAClF,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAkB;IAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;IACjC,OAAO,EAAE,0BAA0B,UAAU,CAAC,KAAK,CAAC,KAAK,qBAAqB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG;CAC7G,CAAC,CAAC,CAAC;AAEN,oGAAoG;AACpG,qGAAqG;AACrG,MAAM,yBAAyB,GAAG,CAAC,KAAuB,EAAgC,EAAE;IAC1F,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE;YAC/B,OAAO,EAAE,uEAAuE;SACjF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,QAAsC,EAAgC,EAAE;IACnG,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,gGAAgG;AAChG,mGAAmG;AACnG,MAAM,2BAA2B,GAAG,CAAC,GAAyB,EAAE,SAAiB,EAAgC,EAAE;IACjH,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,SAAS,SAAS,EAAE;YAC9B,OAAO,EAAE,0DAA0D;SACpE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAAe,EAAqB,EAAE,CAAC,CAAC;IAC3E,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,YAAY,IAAI,EAAE;IAC5B,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAC1B,GAAyB,EAIzB,EAAE;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC1D,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,UAAU,CAAC,EAAE,+BAA+B,QAAQ,CAAC,IAAI,IAAI,CAAC,CAC5G,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAkB,EAAqB,EAAE,CAAC;IAC5D,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAqB,EAAE,CAAC;IAC7D,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrE,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,UAAkB,EAClB,MAAc,EACd,OAAe,EACf,IAAiC,EACjC,SAA4B,EAC5B,SAA8B,EACA,EAAE,CAChC,SAAS;KACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,aAAa,CACX,UAAU,EACV,SAAS,MAAM,gBAAgB,IAAI,KAAK,IAAI,oBAAoB,OAAO,qBAAqB,CAC7F,CACF,CAAC;AAEN,MAAM,mBAAmB,GAAG,CAC1B,QAA4B,EAC5B,IAAkB,EAClB,OAAe,EACf,QAA2B,EACG,EAAE,CAChC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;IAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CAAC;IAC3D,OAAO,WAAW,EAAE,IAAI,KAAK,KAAK,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;QAC9G,CAAC,CAAC;YACE,aAAa,CACX,QAAQ,CAAC,EAAE,EACX,SAAS,IAAI,CAAC,EAAE,4BAA4B,WAAW,CAAC,MAAM,oBAAoB,OAAO,qBAAqB,CAC/G;SACF;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEL,MAAM,yBAAyB,GAAG,CAAC,QAA4B,EAAE,IAAkB,EAAW,EAAE,CAC9F,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;IAC3B,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;IAC5B,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC;AAEpG,MAAM,yBAAyB,GAAG,CAChC,GAAyB,EACzB,QAA4B,EAC5B,IAAkB,EAClB,gBAAyB,EACK,EAAE;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC9C,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,EAAE,oDAAoD,CAAC,CAAC;YACpG,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACrC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,EAAE,YAAY,KAAK,CAAC,OAAO,MAAM,OAAO,EAAE,CAAC,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B;QACE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB;QAC3C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB;QAC5C,IAAG,kFACH,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc;KACtC;SACE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;SACvD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAS,CAAC,SAAU,CAAC,CAC3C,CAAC;IACF,OAAO;QACL,GAAG,sBAAsB,CACvB,QAAQ,CAAC,EAAE,EACX,IAAI,CAAC,EAAE,EACP,KAAK,CAAC,OAAO,EACb,OAAO,EACP,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAC9C,eAAe,CAChB;QACD,GAAG,sBAAsB,CACvB,QAAQ,CAAC,EAAE,EACX,IAAI,CAAC,EAAE,EACP,KAAK,CAAC,OAAO,EACb,iBAAiB,EACjB,WAAW,CAAC,IAAI,CAAC,EACjB,gBAAgB,CACjB;QACD,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;KACjF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,GAAyB,EACzB,QAA4B,EACE,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAC3D,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS;IAC/E,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,OAAO,+BAA+B,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IACjG,CAAC,CAAC,EAAE,CACP,CAAC;AAEJ,MAAM,wBAAwB,GAAG,CAC/B,UAAkB,EAClB,MAAc,EACd,IAAY,EACZ,SAA6B,EAC7B,KAAqC,EACP,EAAE,CAChC,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC1C,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,MAAM,wBAAwB,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC;IAC5F,CAAC,CAAC,EAAE,CAAC;AAET,MAAM,mBAAmB,GAAG,CAC1B,UAAkB,EAClB,MAAc,EACd,IAAY,EACZ,UAA6B,EAC7B,KAAqC,EACP,EAAE,CAChC,UAAU;KACP,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KACxC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,MAAM,wBAAwB,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC;AAElH,MAAM,8BAA8B,GAAG,CACrC,QAA4B,EAC5B,IAAkB,EAClB,OAA4B,EAC5B,WAAoD,EACtB,EAAE;IAChC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,EAAE,yBAAyB,UAAU,IAAI,CAAC,CAAC,CAAC;IAC5G,OAAO;QACL,GAAG,wBAAwB,CACzB,QAAQ,CAAC,EAAE,EACX,IAAI,CAAC,EAAE,EACP,OAAO,EACP,IAAI,CAAC,KAAK,EACV,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAChD;QACD,GAAG,wBAAwB,CACzB,QAAQ,CAAC,EAAE,EACX,IAAI,CAAC,EAAE,EACP,aAAa,EACb,IAAI,CAAC,WAAW,EAChB,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,CACpE;QACD,GAAG,KAAK;QACR,GAAG,mBAAmB,CACpB,QAAQ,CAAC,EAAE,EACX,IAAI,CAAC,EAAE,EACP,aAAa,EACb,IAAI,CAAC,IAAI,IAAI,EAAE,EACf,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,CACpE;QACD,GAAG,wBAAwB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAClH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,QAA4B,EAAgC,EAAE,CAC/F,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;IACrE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,yBAAyB,EAAE,yCAAyC,CAAC,CAAC,CAAC;IAClH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,yBAAyB,EAAE,kCAAkC,CAAC,CAAC,CAAC;IAC3G,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;QAClE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,yBAAyB,EAAE,qCAAqC,CAAC,CAAC,CAAC;IAC9G,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,MAAM,gBAAgB,GAAG,CACvB,GAAyB,EACzB,QAA4B,EAC5B,WAAoD,EACpD,gBAAyB,EACK,EAAE;IAChC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,QAAQ,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QACvF,QAAQ,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,4CAA4C,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,4CAA4C,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,WAAoD,EAAgC,EAAE;IACnH,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAuB,EAAQ,EAAE;QAC5D,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,0BAA0B,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpH,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACtF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAyB,EACzB,gBAAyB,EACzB,UAA6B,EAAE,EACD,EAAE;IAChC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/D,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAU,EAAE,CAAC;QACnF,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Kinds of protocol resources Outfitter resolves by slug across `.agents` layers. */
|
|
2
|
-
export type ResourceKind = 'agent' | 'skill' | 'knowledge' | 'command';
|
|
2
|
+
export type ResourceKind = 'agent' | 'skill' | 'knowledge' | 'command' | 'workflow';
|
|
3
3
|
export declare const resourceKinds: readonly ResourceKind[];
|
|
4
4
|
/**
|
|
5
5
|
* Kinds that also resolve **agent-local** — discovered under `agents/<agent>/<container>/` and
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Core resource-model types shared across the resolver, list, validate, run, and dump paths.
|
|
2
|
-
export const resourceKinds = ['agent', 'skill', 'knowledge', 'command'];
|
|
2
|
+
export const resourceKinds = ['agent', 'skill', 'knowledge', 'command', 'workflow'];
|
|
3
3
|
/**
|
|
4
4
|
* Kinds that also resolve **agent-local** — discovered under `agents/<agent>/<container>/` and
|
|
5
5
|
* resolved local-first before catalog fallback. Excludes `agent` (no nested subagents; a delegate is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/resolver/Resource.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAK7F,MAAM,CAAC,MAAM,aAAa,GAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/resolver/Resource.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAK7F,MAAM,CAAC,MAAM,aAAa,GAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE7G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4B,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAyB1F,MAAM,CAAC,MAAM,YAAY,GAAG,GAAY,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,EAAE;IACb,GAAG,EAAE,EAAE;IACP,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC;AAgDH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAUhH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAyB,EAAE,IAAkB,EAA+B,EAAE;IAC1G,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAyB,EACzB,IAAkB,EAClB,IAAY,EACkB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAyB,EACzB,SAAiB,EACjB,IAAkB,EACW,EAAE;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACrH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAyB,EACzB,SAAiB,EACjB,IAAkB,EAClB,IAAY,EACkB,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAE3F,qGAAqG;AACrG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAyB,EACzB,SAAiB,EACjB,IAAkB,EAClB,IAAY,EACkB,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type WorkflowActor = {
|
|
2
|
+
readonly kind: 'agent';
|
|
3
|
+
readonly profile: string;
|
|
4
|
+
readonly skills?: readonly string[];
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'human' | 'tool' | 'system';
|
|
7
|
+
readonly profile?: never;
|
|
8
|
+
readonly skills?: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
export interface WorkflowIntegration {
|
|
11
|
+
readonly kind?: string;
|
|
12
|
+
readonly server?: string;
|
|
13
|
+
readonly tools?: readonly string[];
|
|
14
|
+
readonly repository?: string;
|
|
15
|
+
readonly ref?: string;
|
|
16
|
+
readonly path?: string;
|
|
17
|
+
readonly sha256?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface WorkflowNode {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly description: string;
|
|
22
|
+
readonly action?: string;
|
|
23
|
+
readonly workflow?: string;
|
|
24
|
+
readonly actor?: string;
|
|
25
|
+
readonly environment?: string;
|
|
26
|
+
readonly needs?: readonly string[];
|
|
27
|
+
readonly skill?: string;
|
|
28
|
+
readonly skills?: readonly string[];
|
|
29
|
+
readonly prompt_fragment?: string;
|
|
30
|
+
readonly prompt_fragments?: readonly string[];
|
|
31
|
+
readonly uses?: readonly string[];
|
|
32
|
+
readonly if?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface WorkflowDefinition {
|
|
35
|
+
readonly version: 1;
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly title: string;
|
|
38
|
+
readonly description: string;
|
|
39
|
+
readonly status?: string;
|
|
40
|
+
readonly actors: Readonly<Record<string, WorkflowActor>>;
|
|
41
|
+
readonly environments?: Readonly<Record<string, unknown>>;
|
|
42
|
+
readonly integrations?: Readonly<Record<string, WorkflowIntegration>>;
|
|
43
|
+
readonly checks?: Readonly<Record<string, unknown>>;
|
|
44
|
+
readonly triggers?: readonly Readonly<Record<string, unknown>>[];
|
|
45
|
+
readonly nodes: readonly WorkflowNode[];
|
|
46
|
+
readonly feedback?: readonly {
|
|
47
|
+
readonly from: string;
|
|
48
|
+
readonly to: string;
|
|
49
|
+
}[];
|
|
50
|
+
}
|
|
51
|
+
export interface WorkflowDefinitionIssue {
|
|
52
|
+
readonly path: string;
|
|
53
|
+
readonly message: string;
|
|
54
|
+
}
|
|
55
|
+
export declare const isWorkflowDefinitionIssue: (value: WorkflowDefinition | WorkflowDefinitionIssue) => value is WorkflowDefinitionIssue;
|
|
56
|
+
export declare const readWorkflowDefinition: (path: string) => WorkflowDefinition | WorkflowDefinitionIssue;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { validateSchema } from '../validation/SchemaValidator.js';
|
|
3
|
+
import { parseYamlDocument } from '../validation/YamlDocument.js';
|
|
4
|
+
export const isWorkflowDefinitionIssue = (value) => 'message' in value;
|
|
5
|
+
export const readWorkflowDefinition = (path) => {
|
|
6
|
+
let content;
|
|
7
|
+
try {
|
|
8
|
+
content = readFileSync(path, 'utf8');
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
return { path, message: `workflow.yaml is not readable: ${String(error)}` };
|
|
12
|
+
}
|
|
13
|
+
const parsed = parseYamlDocument(content, path);
|
|
14
|
+
if (!parsed.ok)
|
|
15
|
+
return { path, message: `workflow.yaml is not valid YAML: ${parsed.issue.message}` };
|
|
16
|
+
const validation = validateSchema('workflow', parsed.document);
|
|
17
|
+
if (!validation.valid) {
|
|
18
|
+
const issue = validation.issues[0];
|
|
19
|
+
return { path, message: `workflow.yaml is invalid at ${issue.path}: ${issue.message}.` };
|
|
20
|
+
}
|
|
21
|
+
return parsed.document;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=WorkflowDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowDefinition.js","sourceRoot":"","sources":["../../src/resolver/WorkflowDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAoDlE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,KAAmD,EACjB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAgD,EAAE;IACnG,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAErG,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IAC3F,CAAC;IAED,OAAO,MAAM,CAAC,QAA8B,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ai-outfitter.com/schemas/workflow.schema.json",
|
|
4
|
+
"title": "AI Outfitter workflow",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": ["version", "id", "title", "description", "actors", "nodes"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": { "const": 1 },
|
|
10
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
|
|
11
|
+
"title": { "type": "string", "minLength": 1 },
|
|
12
|
+
"description": { "type": "string", "minLength": 1 },
|
|
13
|
+
"status": { "type": "string" },
|
|
14
|
+
"actors": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": true,
|
|
19
|
+
"required": ["kind"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"kind": { "enum": ["human", "agent", "tool", "system"] },
|
|
22
|
+
"profile": { "type": "string" },
|
|
23
|
+
"skills": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
|
|
24
|
+
},
|
|
25
|
+
"allOf": [
|
|
26
|
+
{
|
|
27
|
+
"if": { "properties": { "kind": { "const": "agent" } }, "required": ["kind"] },
|
|
28
|
+
"then": { "required": ["profile"] }
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"environments": { "type": "object" },
|
|
34
|
+
"integrations": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": true,
|
|
39
|
+
"properties": {
|
|
40
|
+
"kind": { "type": "string" },
|
|
41
|
+
"server": { "type": "string" },
|
|
42
|
+
"tools": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
43
|
+
"repository": { "type": "string" },
|
|
44
|
+
"ref": { "type": "string" },
|
|
45
|
+
"path": { "type": "string" },
|
|
46
|
+
"sha256": { "type": "string" }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"checks": { "type": "object" },
|
|
51
|
+
"triggers": { "type": "array", "items": { "type": "object" } },
|
|
52
|
+
"feedback": { "type": "array", "items": { "type": "object", "required": ["from", "to"] } },
|
|
53
|
+
"nodes": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"minItems": 1,
|
|
56
|
+
"items": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": true,
|
|
59
|
+
"required": ["id", "description"],
|
|
60
|
+
"properties": {
|
|
61
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
|
|
62
|
+
"description": { "type": "string", "minLength": 1 },
|
|
63
|
+
"action": { "type": "string" },
|
|
64
|
+
"workflow": { "type": "string" },
|
|
65
|
+
"actor": { "type": "string" },
|
|
66
|
+
"environment": { "type": "string" },
|
|
67
|
+
"needs": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
68
|
+
"skill": { "type": "string" },
|
|
69
|
+
"skills": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
70
|
+
"prompt_fragment": { "type": "string" },
|
|
71
|
+
"prompt_fragments": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
72
|
+
"uses": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
|
|
73
|
+
},
|
|
74
|
+
"oneOf": [
|
|
75
|
+
{ "required": ["action"], "not": { "required": ["workflow"] } },
|
|
76
|
+
{ "required": ["workflow"], "not": { "required": ["action"] } }
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -23,7 +23,7 @@ const isDirectory = (path) => {
|
|
|
23
23
|
};
|
|
24
24
|
const hasAgentsDirectory = (root) => isDirectory(join(root, 'agents'));
|
|
25
25
|
// Any directory the resolver treats as a `.agents` payload container, colocated or at the root.
|
|
26
|
-
const hasAnyAgentsPayload = (root) => ['agents', 'skills', 'knowledge', 'commands'].some((directory) => isDirectory(join(root, directory))) ||
|
|
26
|
+
const hasAnyAgentsPayload = (root) => ['agents', 'skills', 'knowledge', 'commands', 'workflows'].some((directory) => isDirectory(join(root, directory))) ||
|
|
27
27
|
isDirectory(join(root, '.agents'));
|
|
28
28
|
const assertImmutableRef = (ref) => {
|
|
29
29
|
if (!isImmutableRef(ref)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultCatalog.js","sourceRoot":"","sources":["../../src/setup/DefaultCatalog.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAK7D,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,+BAA+B;IACvC,6FAA6F;IAC7F,gGAAgG;IAChG,GAAG,EAAE,QAAQ;CAC2B,CAAC;AAoB3C,oGAAoG;AACpG,0FAA0F;AAC1F,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExF,gGAAgG;AAChG,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE,CACpD,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultCatalog.js","sourceRoot":"","sources":["../../src/setup/DefaultCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,13 @@ const readSchema = (schemaFileName) => JSON.parse(readFileSync(new URL(`../schem
|
|
|
5
5
|
const settingsSchema = readSchema('settings.schema.json');
|
|
6
6
|
const agentSchema = readSchema('agent.schema.json');
|
|
7
7
|
const systemExtensionHookSchema = readSchema('system-extension-hook.schema.json');
|
|
8
|
+
const workflowSchema = readSchema('workflow.schema.json');
|
|
8
9
|
const ajv = new Ajv2020({ allErrors: true });
|
|
9
10
|
const validators = {
|
|
10
11
|
settings: ajv.compile(settingsSchema),
|
|
11
12
|
agent: ajv.compile(agentSchema),
|
|
12
13
|
'system-extension-hook': ajv.compile(systemExtensionHookSchema),
|
|
14
|
+
workflow: ajv.compile(workflowSchema),
|
|
13
15
|
};
|
|
14
16
|
export const createValidationResult = (issues) => ({
|
|
15
17
|
valid: issues.length === 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/validation/SchemaValidator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAc3C,MAAM,UAAU,GAAG,CAAC,cAAsB,EAAW,EAAE,CACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,cAAc,cAAc,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7F,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACpD,MAAM,yBAAyB,GAAG,UAAU,CAAC,mCAAmC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/validation/SchemaValidator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAc3C,MAAM,UAAU,GAAG,CAAC,cAAsB,EAAW,EAAE,CACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,cAAc,cAAc,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7F,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACpD,MAAM,yBAAyB,GAAG,UAAU,CAAC,mCAAmC,CAAC,CAAC;AAClF,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAE1D,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7C,MAAM,UAAU,GAAyC;IACvD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,cAA2B,CAAC;IAClD,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAwB,CAAC;IAC5C,uBAAuB,EAAE,GAAG,CAAC,OAAO,CAAC,yBAAsC,CAAC;IAC5E,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,cAA2B,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAkC,EAAoB,EAAE,CAAC,CAAC;IAC/F,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;IAC1B,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAE,QAAiB,EAAoB,EAAE;IAC5F,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAExC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,sBAAsB,CAAE,QAAQ,CAAC,MAAiC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAmB,EAAE,CAAC,CAAC;IAC/D,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;IAC1D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAC/B,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Catalogs
|
|
2
2
|
|
|
3
|
-
A catalog is a git repository that publishes a `.agents` payload — agents, skills, tasks, knowledge, commands — so a person, team, or organization can share it. You can bootstrap a machine or project from one, or add one as an ongoing source that Outfitter keeps synchronized.
|
|
3
|
+
A catalog is a git repository that publishes a `.agents` payload — agents, skills, workflows, tasks, knowledge, commands — so a person, team, or organization can share it. You can bootstrap a machine or project from one, or add one as an ongoing source that Outfitter keeps synchronized.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
outfitter setup https://github.com/ncrmro/.agents
|
|
@@ -33,6 +33,8 @@ ncrmro/.agents/ # repository root
|
|
|
33
33
|
tasks/
|
|
34
34
|
weekly-kpis/task.md
|
|
35
35
|
knowledge/
|
|
36
|
+
workflows/
|
|
37
|
+
engineer/workflow.yaml
|
|
36
38
|
settings.yml # Outfitter settings (optional; see settings.md)
|
|
37
39
|
settings.local.yml # gitignored machine-local overrides
|
|
38
40
|
```
|
|
@@ -83,6 +85,12 @@ Remote entries additionally accept:
|
|
|
83
85
|
|
|
84
86
|
Resources from all sources resolve by slug behind local layers, following [layer precedence](./concepts.md#layer-precedence). Agent-local skills keep their owning-agent namespace through cache and source merging. Outfitter reports shadowed IDs so consumers can see which source supplies a selected resource.
|
|
85
87
|
|
|
88
|
+
### Workflows are configuration, not an execution engine
|
|
89
|
+
|
|
90
|
+
Each `workflows/<slug>/workflow.yaml` is a typed graph that names its human, agent, tool, and system actors. Agent actors reference ordinary catalog profiles. Node-level skill, prompt, and MCP assertions must already belong to the selected agent's composed closure. Nested workflow references resolve by slug and may not form cycles.
|
|
91
|
+
|
|
92
|
+
`outfitter validate --strict` validates the graph and the complete composed dependency closure. `outfitter dump --workflow <slug>` produces a reviewable `.agents` bundle for distribution. Outfitter never schedules or executes the graph.
|
|
93
|
+
|
|
86
94
|
### Catalog dependencies (transitive sources)
|
|
87
95
|
|
|
88
96
|
A catalog can depend on other catalogs by declaring `sources` in its own settings file
|
|
@@ -71,13 +71,15 @@ resolution tells you to run `outfitter sync`.
|
|
|
71
71
|
|
|
72
72
|
List resolvable resources across all layers, with the winning source for each slug and any shadowed IDs.
|
|
73
73
|
|
|
74
|
-
| Argument | Description
|
|
75
|
-
| -------- |
|
|
76
|
-
| `[kind]` | Optional filter: `agents`, `skills`, `knowledge`, `commands`. |
|
|
74
|
+
| Argument | Description |
|
|
75
|
+
| -------- | -------------------------------------------------------------------------- |
|
|
76
|
+
| `[kind]` | Optional filter: `agents`, `skills`, `knowledge`, `commands`, `workflows`. |
|
|
77
|
+
|
|
78
|
+
`--json` emits an object containing `ok`, `resources`, and `diagnostics`; diagnostics remain available when strict mode fails.
|
|
77
79
|
|
|
78
80
|
## `outfitter validate`
|
|
79
81
|
|
|
80
|
-
Validate the effective resource set: protocol layout, frontmatter, unresolved slugs in agent loadouts, broken or escaping skill references, and settings schema.
|
|
82
|
+
Validate the effective resource set: protocol layout, frontmatter, unresolved slugs in agent loadouts, broken or escaping skill references, workflow graphs and composed closures, and settings schema.
|
|
81
83
|
|
|
82
84
|
| Option | Description |
|
|
83
85
|
| ---------- | ---------------------------------------- |
|
|
@@ -88,10 +90,13 @@ Validate the effective resource set: protocol layout, frontmatter, unresolved sl
|
|
|
88
90
|
|
|
89
91
|
Write the composed resource tree as a self-contained `.agents/` directory for review, vendoring, or air-gapped use. Identical sources, refs, and selections produce byte-identical output; dumps never contain credentials, sessions, caches, or other mutable runtime state.
|
|
90
92
|
|
|
91
|
-
| Option
|
|
92
|
-
|
|
|
93
|
-
| `--agent <id>`
|
|
94
|
-
| `--
|
|
93
|
+
| Option | Description |
|
|
94
|
+
| ----------------- | ------------------------------------------------------------------------------ |
|
|
95
|
+
| `--agent <id>` | Restrict the dump to one agent's transitive closure. |
|
|
96
|
+
| `--workflow <id>` | Export one workflow, its nested workflows, and every referenced agent closure. |
|
|
97
|
+
| `--out <dir>` | Destination directory (default `./.agents`). |
|
|
98
|
+
|
|
99
|
+
Workflow dumps are non-executable configuration bundles. They contain the canonical workflow YAML, composed agent resources, and a hash/provenance manifest. A workflow dump refuses an existing destination instead of replacing user files.
|
|
95
100
|
|
|
96
101
|
> **Tasks and `outfitter task bake`** — baking a task and its inputs into an immutable execution artifact — are the subject of a separate upcoming RFC and are not part of this command surface yet. See [Tasks](./tasks.md).
|
|
97
102
|
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
```bash
|
|
10
10
|
outfitter dump --out ./review
|
|
11
11
|
outfitter dump --agent engineer --out ./engineer # one agent's transitive closure only
|
|
12
|
+
outfitter dump --workflow engineer --out ./workflow # graph + nested graphs + agent closures
|
|
12
13
|
```
|
|
13
14
|
|
|
14
15
|
Use dumps to:
|
|
@@ -24,6 +25,7 @@ Use dumps to:
|
|
|
24
25
|
- **Safe** — a dump may include reviewable source provenance, but never credentials, auth state, sessions, transcripts, caches, backups, mutable harness state, or symlinks escaping the tree.
|
|
25
26
|
- **Protocol-shaped** — the output is a valid `.agents` payload usable by any protocol consumer, not just Outfitter. Any Outfitter-specific provenance metadata is namespaced, JSON-based, and removable without losing the underlying resources.
|
|
26
27
|
- **Harness-discoverable** — selected agent-local skills are flattened into top-level `skills/<id>/` in the closure output, with their packaged references, scripts, and assets intact.
|
|
28
|
+
- **Workflow-auditable** — workflow exports preserve canonical YAML and record every nested workflow, agent composition, file hash, and winning source in `.outfitter/workflow-composition.json`.
|
|
27
29
|
|
|
28
30
|
## Bake
|
|
29
31
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ai-outfitter.com/schemas/workflow.schema.json",
|
|
4
|
+
"title": "AI Outfitter workflow",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": ["version", "id", "title", "description", "actors", "nodes"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": { "const": 1 },
|
|
10
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
|
|
11
|
+
"title": { "type": "string", "minLength": 1 },
|
|
12
|
+
"description": { "type": "string", "minLength": 1 },
|
|
13
|
+
"status": { "type": "string" },
|
|
14
|
+
"actors": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": true,
|
|
19
|
+
"required": ["kind"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"kind": { "enum": ["human", "agent", "tool", "system"] },
|
|
22
|
+
"profile": { "type": "string" },
|
|
23
|
+
"skills": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
|
|
24
|
+
},
|
|
25
|
+
"allOf": [
|
|
26
|
+
{
|
|
27
|
+
"if": { "properties": { "kind": { "const": "agent" } }, "required": ["kind"] },
|
|
28
|
+
"then": { "required": ["profile"] }
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"environments": { "type": "object" },
|
|
34
|
+
"integrations": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": true,
|
|
39
|
+
"properties": {
|
|
40
|
+
"kind": { "type": "string" },
|
|
41
|
+
"server": { "type": "string" },
|
|
42
|
+
"tools": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
43
|
+
"repository": { "type": "string" },
|
|
44
|
+
"ref": { "type": "string" },
|
|
45
|
+
"path": { "type": "string" },
|
|
46
|
+
"sha256": { "type": "string" }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"checks": { "type": "object" },
|
|
51
|
+
"triggers": { "type": "array", "items": { "type": "object" } },
|
|
52
|
+
"feedback": { "type": "array", "items": { "type": "object", "required": ["from", "to"] } },
|
|
53
|
+
"nodes": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"minItems": 1,
|
|
56
|
+
"items": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": true,
|
|
59
|
+
"required": ["id", "description"],
|
|
60
|
+
"properties": {
|
|
61
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
|
|
62
|
+
"description": { "type": "string", "minLength": 1 },
|
|
63
|
+
"action": { "type": "string" },
|
|
64
|
+
"workflow": { "type": "string" },
|
|
65
|
+
"actor": { "type": "string" },
|
|
66
|
+
"environment": { "type": "string" },
|
|
67
|
+
"needs": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
68
|
+
"skill": { "type": "string" },
|
|
69
|
+
"skills": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
70
|
+
"prompt_fragment": { "type": "string" },
|
|
71
|
+
"prompt_fragments": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
|
|
72
|
+
"uses": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
|
|
73
|
+
},
|
|
74
|
+
"oneOf": [
|
|
75
|
+
{ "required": ["action"], "not": { "required": ["workflow"] } },
|
|
76
|
+
{ "required": ["workflow"], "not": { "required": ["action"] } }
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|