@fractary/faber 0.1.1
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/LICENSE +21 -0
- package/README.md +146 -0
- package/dist/api.d.ts +81 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +261 -0
- package/dist/api.js.map +1 -0
- package/dist/bindings/claude-code/transformer.d.ts +55 -0
- package/dist/bindings/claude-code/transformer.d.ts.map +1 -0
- package/dist/bindings/claude-code/transformer.js +271 -0
- package/dist/bindings/claude-code/transformer.js.map +1 -0
- package/dist/bindings/index.d.ts +21 -0
- package/dist/bindings/index.d.ts.map +1 -0
- package/dist/bindings/index.js +43 -0
- package/dist/bindings/index.js.map +1 -0
- package/dist/core/concepts/base.d.ts +89 -0
- package/dist/core/concepts/base.d.ts.map +1 -0
- package/dist/core/concepts/base.js +230 -0
- package/dist/core/concepts/base.js.map +1 -0
- package/dist/core/concepts/eval.d.ts +90 -0
- package/dist/core/concepts/eval.d.ts.map +1 -0
- package/dist/core/concepts/eval.js +118 -0
- package/dist/core/concepts/eval.js.map +1 -0
- package/dist/core/concepts/index.d.ts +9 -0
- package/dist/core/concepts/index.d.ts.map +1 -0
- package/dist/core/concepts/index.js +36 -0
- package/dist/core/concepts/index.js.map +1 -0
- package/dist/core/concepts/role.d.ts +19 -0
- package/dist/core/concepts/role.d.ts.map +1 -0
- package/dist/core/concepts/role.js +227 -0
- package/dist/core/concepts/role.js.map +1 -0
- package/dist/core/concepts/team.d.ts +57 -0
- package/dist/core/concepts/team.d.ts.map +1 -0
- package/dist/core/concepts/team.js +106 -0
- package/dist/core/concepts/team.js.map +1 -0
- package/dist/core/concepts/tool.d.ts +43 -0
- package/dist/core/concepts/tool.d.ts.map +1 -0
- package/dist/core/concepts/tool.js +104 -0
- package/dist/core/concepts/tool.js.map +1 -0
- package/dist/core/concepts/workflow.d.ts +87 -0
- package/dist/core/concepts/workflow.d.ts.map +1 -0
- package/dist/core/concepts/workflow.js +114 -0
- package/dist/core/concepts/workflow.js.map +1 -0
- package/dist/core/config/index.d.ts +34 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +80 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/loader.d.ts +53 -0
- package/dist/core/config/loader.d.ts.map +1 -0
- package/dist/core/config/loader.js +234 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/contexts/index.d.ts +36 -0
- package/dist/core/contexts/index.d.ts.map +1 -0
- package/dist/core/contexts/index.js +75 -0
- package/dist/core/contexts/index.js.map +1 -0
- package/dist/core/contexts/loader.d.ts +66 -0
- package/dist/core/contexts/loader.d.ts.map +1 -0
- package/dist/core/contexts/loader.js +261 -0
- package/dist/core/contexts/loader.js.map +1 -0
- package/dist/core/overlays/index.d.ts +31 -0
- package/dist/core/overlays/index.d.ts.map +1 -0
- package/dist/core/overlays/index.js +82 -0
- package/dist/core/overlays/index.js.map +1 -0
- package/dist/core/overlays/resolver.d.ts +65 -0
- package/dist/core/overlays/resolver.d.ts.map +1 -0
- package/dist/core/overlays/resolver.js +249 -0
- package/dist/core/overlays/resolver.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/types/bindings.d.ts +59 -0
- package/dist/types/bindings.d.ts.map +1 -0
- package/dist/types/bindings.js +6 -0
- package/dist/types/bindings.js.map +1 -0
- package/dist/types/concepts.d.ts +131 -0
- package/dist/types/concepts.d.ts.map +1 -0
- package/dist/types/concepts.js +29 -0
- package/dist/types/concepts.js.map +1 -0
- package/dist/types/config.d.ts +42 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/contexts.d.ts +59 -0
- package/dist/types/contexts.d.ts.map +1 -0
- package/dist/types/contexts.js +17 -0
- package/dist/types/contexts.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +30 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/overlays.d.ts +28 -0
- package/dist/types/overlays.d.ts.map +1 -0
- package/dist/types/overlays.js +15 -0
- package/dist/types/overlays.js.map +1 -0
- package/dist/utils/file-system.d.ts +40 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +105 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/template.d.ts +28 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/utils/template.js +107 -0
- package/dist/utils/template.js.map +1 -0
- package/dist/utils/validation.d.ts +42 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +94 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Role concept loader and validator
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.RoleLoader = void 0;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const yaml = __importStar(require("js-yaml"));
|
|
42
|
+
const zod_1 = require("zod");
|
|
43
|
+
const base_1 = require("./base");
|
|
44
|
+
const types_1 = require("../../types");
|
|
45
|
+
// Role metadata schema
|
|
46
|
+
const RoleMetadataSchema = base_1.BaseMetadataSchema.extend({
|
|
47
|
+
type: zod_1.z.literal(types_1.ConceptType.ROLE),
|
|
48
|
+
platforms: zod_1.z.array(zod_1.z.string()),
|
|
49
|
+
default_platform: zod_1.z.string().optional(),
|
|
50
|
+
platform_config_key: zod_1.z.string().optional(),
|
|
51
|
+
color: zod_1.z.string().optional(),
|
|
52
|
+
agent_type: zod_1.z.enum(['autonomous', 'interactive', 'batch']).optional()
|
|
53
|
+
});
|
|
54
|
+
class RoleLoader extends base_1.BaseConceptLoader {
|
|
55
|
+
constructor() {
|
|
56
|
+
super(types_1.ConceptType.ROLE);
|
|
57
|
+
}
|
|
58
|
+
getMetadataSchema() {
|
|
59
|
+
return RoleMetadataSchema;
|
|
60
|
+
}
|
|
61
|
+
async loadConceptContent(conceptPath, metadata) {
|
|
62
|
+
// Load prompt
|
|
63
|
+
const promptPath = path.join(conceptPath, 'prompt.md');
|
|
64
|
+
const prompt = await this.loadPrompt(promptPath);
|
|
65
|
+
// Load tasks
|
|
66
|
+
const tasks = await this.loadTasks(path.join(conceptPath, 'tasks'));
|
|
67
|
+
// Load flows
|
|
68
|
+
const flows = await this.loadFlows(path.join(conceptPath, 'flows'));
|
|
69
|
+
// Load contexts
|
|
70
|
+
const contexts = await this.loadContexts(path.join(conceptPath, 'contexts'));
|
|
71
|
+
// Load custom bindings
|
|
72
|
+
const bindings = await this.loadBindings(path.join(conceptPath, 'bindings'));
|
|
73
|
+
return {
|
|
74
|
+
name: metadata.name,
|
|
75
|
+
type: types_1.ConceptType.ROLE,
|
|
76
|
+
metadata,
|
|
77
|
+
path: conceptPath,
|
|
78
|
+
prompt,
|
|
79
|
+
tasks,
|
|
80
|
+
flows,
|
|
81
|
+
contexts,
|
|
82
|
+
bindings
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
async validateSpecific(role) {
|
|
86
|
+
const errors = [];
|
|
87
|
+
// Must have prompt.md
|
|
88
|
+
if (!role.prompt) {
|
|
89
|
+
errors.push({
|
|
90
|
+
path: 'prompt.md',
|
|
91
|
+
message: 'Role must have a prompt.md file',
|
|
92
|
+
type: 'error'
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// Must have at least one task or flow
|
|
96
|
+
if (role.tasks.size === 0 && role.flows.size === 0) {
|
|
97
|
+
errors.push({
|
|
98
|
+
path: 'tasks|flows',
|
|
99
|
+
message: 'Role must have at least one task or flow',
|
|
100
|
+
type: 'error'
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Platform validation
|
|
104
|
+
if (role.metadata.platforms && role.metadata.platforms.length > 0) {
|
|
105
|
+
// Must have platform context for each declared platform
|
|
106
|
+
for (const platform of role.metadata.platforms) {
|
|
107
|
+
const platformContext = `platform-${platform}`;
|
|
108
|
+
const hasContext = Array.from(role.contexts.values()).some(ctx => ctx.category === types_1.ContextCategory.PLATFORM && ctx.name === platformContext);
|
|
109
|
+
if (!hasContext) {
|
|
110
|
+
errors.push({
|
|
111
|
+
path: `contexts/platforms/platform-${platform}.md`,
|
|
112
|
+
message: `Missing platform context for declared platform: ${platform}`,
|
|
113
|
+
type: 'error'
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Default platform must be in platforms list
|
|
118
|
+
if (role.metadata.default_platform &&
|
|
119
|
+
!role.metadata.platforms.includes(role.metadata.default_platform)) {
|
|
120
|
+
errors.push({
|
|
121
|
+
path: 'agent.yml',
|
|
122
|
+
message: 'default_platform must be in platforms list',
|
|
123
|
+
type: 'error'
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Validate context references in prompt
|
|
128
|
+
const contextRefs = this.extractContextReferences(role.prompt);
|
|
129
|
+
for (const ref of contextRefs) {
|
|
130
|
+
const refPath = ref.replace(/^\//, '');
|
|
131
|
+
const hasContext = Array.from(role.contexts.values()).some(ctx => ctx.path === refPath || ctx.path?.endsWith(refPath));
|
|
132
|
+
if (!hasContext && !ref.includes('/.faber/overlays/')) {
|
|
133
|
+
errors.push({
|
|
134
|
+
path: 'prompt.md',
|
|
135
|
+
message: `Referenced context not found: ${ref}`,
|
|
136
|
+
type: 'warning'
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return errors;
|
|
141
|
+
}
|
|
142
|
+
async loadPrompt(promptPath) {
|
|
143
|
+
if (await this.fileExists(promptPath)) {
|
|
144
|
+
return this.readFile(promptPath);
|
|
145
|
+
}
|
|
146
|
+
return '';
|
|
147
|
+
}
|
|
148
|
+
async loadTasks(tasksDir) {
|
|
149
|
+
const tasks = new Map();
|
|
150
|
+
const taskFiles = await this.listFiles(tasksDir, '.md');
|
|
151
|
+
for (const file of taskFiles) {
|
|
152
|
+
const name = path.basename(file, '.md');
|
|
153
|
+
const content = await this.readFile(path.join(tasksDir, file));
|
|
154
|
+
tasks.set(name, {
|
|
155
|
+
name,
|
|
156
|
+
content,
|
|
157
|
+
path: path.join(tasksDir, file)
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return tasks;
|
|
161
|
+
}
|
|
162
|
+
async loadFlows(flowsDir) {
|
|
163
|
+
const flows = new Map();
|
|
164
|
+
const flowFiles = await this.listFiles(flowsDir, '.md');
|
|
165
|
+
for (const file of flowFiles) {
|
|
166
|
+
const name = path.basename(file, '.md');
|
|
167
|
+
const content = await this.readFile(path.join(flowsDir, file));
|
|
168
|
+
flows.set(name, {
|
|
169
|
+
name,
|
|
170
|
+
content,
|
|
171
|
+
path: path.join(flowsDir, file)
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return flows;
|
|
175
|
+
}
|
|
176
|
+
async loadContexts(contextsDir) {
|
|
177
|
+
const contexts = new Map();
|
|
178
|
+
const categories = Object.values(types_1.ContextCategory);
|
|
179
|
+
for (const category of categories) {
|
|
180
|
+
const categoryDir = path.join(contextsDir, category);
|
|
181
|
+
const contextFiles = await this.listFiles(categoryDir, '.md');
|
|
182
|
+
for (const file of contextFiles) {
|
|
183
|
+
const name = path.basename(file, '.md');
|
|
184
|
+
const filePath = path.join(categoryDir, file);
|
|
185
|
+
const content = await this.readFile(filePath);
|
|
186
|
+
const { metadata, body } = this.parseFrontmatter(content);
|
|
187
|
+
const context = {
|
|
188
|
+
category,
|
|
189
|
+
name,
|
|
190
|
+
content: body,
|
|
191
|
+
metadata: metadata,
|
|
192
|
+
path: filePath
|
|
193
|
+
};
|
|
194
|
+
contexts.set(`${category}/${name}`, context);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return contexts;
|
|
198
|
+
}
|
|
199
|
+
async loadBindings(bindingsDir) {
|
|
200
|
+
const bindingFiles = await this.listFiles(bindingsDir, '.binding.yml');
|
|
201
|
+
if (bindingFiles.length === 0) {
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
const bindings = new Map();
|
|
205
|
+
for (const file of bindingFiles) {
|
|
206
|
+
const framework = path.basename(file, '.binding.yml');
|
|
207
|
+
const content = await this.readFile(path.join(bindingsDir, file));
|
|
208
|
+
try {
|
|
209
|
+
const config = yaml.load(content);
|
|
210
|
+
bindings.set(framework, config);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
console.error(`Failed to parse binding ${file}: ${error}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return bindings;
|
|
217
|
+
}
|
|
218
|
+
extractContextReferences(prompt) {
|
|
219
|
+
// Extract context references from prompt
|
|
220
|
+
// Matches patterns like: /contexts/platforms/platform-linear.md
|
|
221
|
+
const regex = /\/contexts\/[a-z-]+\/[a-z-]+\.md/g;
|
|
222
|
+
const matches = prompt.match(regex);
|
|
223
|
+
return matches || [];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
exports.RoleLoader = RoleLoader;
|
|
227
|
+
//# sourceMappingURL=role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../../src/core/concepts/role.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Team concept loader
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { BaseConceptLoader } from './base';
|
|
6
|
+
import { Team, CoordinationType } from '../../types';
|
|
7
|
+
export declare class TeamLoader extends BaseConceptLoader<Team> {
|
|
8
|
+
constructor();
|
|
9
|
+
protected getMetadataSchema(): z.ZodSchema;
|
|
10
|
+
protected loadConceptContent(conceptPath: string, metadata: any): Promise<Team>;
|
|
11
|
+
protected validateSpecific(concept: Team): Promise<any[]>;
|
|
12
|
+
protected loadMetadata(conceptPath: string): Promise<any>;
|
|
13
|
+
protected validateConcept(team: Team): Promise<void>;
|
|
14
|
+
getSchema(): z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
description: z.ZodOptional<z.ZodString>;
|
|
17
|
+
members: z.ZodArray<z.ZodObject<{
|
|
18
|
+
role: z.ZodString;
|
|
19
|
+
name: z.ZodOptional<z.ZodString>;
|
|
20
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
role?: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
config?: Record<string, unknown>;
|
|
25
|
+
}, {
|
|
26
|
+
role?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
config?: Record<string, unknown>;
|
|
29
|
+
}>, "many">;
|
|
30
|
+
coordination: z.ZodOptional<z.ZodNativeEnum<typeof CoordinationType>>;
|
|
31
|
+
leader: z.ZodOptional<z.ZodString>;
|
|
32
|
+
workflows: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
name?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
members?: {
|
|
37
|
+
role?: string;
|
|
38
|
+
name?: string;
|
|
39
|
+
config?: Record<string, unknown>;
|
|
40
|
+
}[];
|
|
41
|
+
coordination?: CoordinationType;
|
|
42
|
+
leader?: string;
|
|
43
|
+
workflows?: string[];
|
|
44
|
+
}, {
|
|
45
|
+
name?: string;
|
|
46
|
+
description?: string;
|
|
47
|
+
members?: {
|
|
48
|
+
role?: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
config?: Record<string, unknown>;
|
|
51
|
+
}[];
|
|
52
|
+
coordination?: CoordinationType;
|
|
53
|
+
leader?: string;
|
|
54
|
+
workflows?: string[];
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../src/core/concepts/team.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,IAAI,EAA2B,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoB9E,qBAAa,UAAW,SAAQ,iBAAiB,CAAC,IAAI,CAAC;;IAKrD,SAAS,CAAC,iBAAiB,IAAI,CAAC,CAAC,SAAS;cAI1B,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;cAcrE,gBAAgB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cAI/C,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;cAM/C,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1D,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGV"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Team concept loader
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.TeamLoader = void 0;
|
|
43
|
+
const zod_1 = require("zod");
|
|
44
|
+
const base_1 = require("./base");
|
|
45
|
+
const types_1 = require("../../types");
|
|
46
|
+
const yaml = __importStar(require("js-yaml"));
|
|
47
|
+
const fs_1 = require("fs");
|
|
48
|
+
const path_1 = __importDefault(require("path"));
|
|
49
|
+
const TeamMemberSchema = zod_1.z.object({
|
|
50
|
+
role: zod_1.z.string(),
|
|
51
|
+
name: zod_1.z.string().optional(),
|
|
52
|
+
config: zod_1.z.record(zod_1.z.unknown()).optional()
|
|
53
|
+
});
|
|
54
|
+
const TeamMetadataSchema = zod_1.z.object({
|
|
55
|
+
name: zod_1.z.string(),
|
|
56
|
+
description: zod_1.z.string().optional(),
|
|
57
|
+
members: zod_1.z.array(TeamMemberSchema),
|
|
58
|
+
coordination: zod_1.z.nativeEnum(types_1.CoordinationType).optional(),
|
|
59
|
+
leader: zod_1.z.string().optional(),
|
|
60
|
+
workflows: zod_1.z.array(zod_1.z.string()).optional()
|
|
61
|
+
});
|
|
62
|
+
class TeamLoader extends base_1.BaseConceptLoader {
|
|
63
|
+
constructor() {
|
|
64
|
+
super(types_1.ConceptType.TEAM);
|
|
65
|
+
}
|
|
66
|
+
getMetadataSchema() {
|
|
67
|
+
return TeamMetadataSchema;
|
|
68
|
+
}
|
|
69
|
+
async loadConceptContent(conceptPath, metadata) {
|
|
70
|
+
const teamMetadata = TeamMetadataSchema.parse(metadata);
|
|
71
|
+
return {
|
|
72
|
+
name: teamMetadata.name,
|
|
73
|
+
type: types_1.ConceptType.TEAM,
|
|
74
|
+
description: teamMetadata.description,
|
|
75
|
+
members: (teamMetadata.members || []),
|
|
76
|
+
coordination: teamMetadata.coordination,
|
|
77
|
+
leader: teamMetadata.leader,
|
|
78
|
+
workflows: teamMetadata.workflows || []
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async validateSpecific(concept) {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
async loadMetadata(conceptPath) {
|
|
85
|
+
const metadataPath = path_1.default.join(conceptPath, 'team.yml');
|
|
86
|
+
const content = await fs_1.promises.readFile(metadataPath, 'utf-8');
|
|
87
|
+
return yaml.load(content);
|
|
88
|
+
}
|
|
89
|
+
async validateConcept(team) {
|
|
90
|
+
// Validate team structure
|
|
91
|
+
if (team.members.length === 0) {
|
|
92
|
+
throw new Error('Team must have at least one member');
|
|
93
|
+
}
|
|
94
|
+
if (team.leader) {
|
|
95
|
+
const leaderExists = team.members.some(m => m.name === team.leader);
|
|
96
|
+
if (!leaderExists) {
|
|
97
|
+
throw new Error(`Leader ${team.leader} not found in team members`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
getSchema() {
|
|
102
|
+
return TeamMetadataSchema;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.TeamLoader = TeamLoader;
|
|
106
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../../src/core/concepts/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool concept loader
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { BaseConceptLoader } from './base';
|
|
6
|
+
import { Tool, ToolType } from '../../types';
|
|
7
|
+
export declare class ToolLoader extends BaseConceptLoader<Tool> {
|
|
8
|
+
constructor();
|
|
9
|
+
protected getMetadataSchema(): z.ZodSchema;
|
|
10
|
+
protected loadConceptContent(conceptPath: string, metadata: any): Promise<Tool>;
|
|
11
|
+
protected validateSpecific(concept: Tool): Promise<any[]>;
|
|
12
|
+
protected loadMetadata(conceptPath: string): Promise<any>;
|
|
13
|
+
protected validateConcept(tool: Tool): Promise<void>;
|
|
14
|
+
getSchema(): z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
description: z.ZodOptional<z.ZodString>;
|
|
17
|
+
tool_type: z.ZodNativeEnum<typeof ToolType>;
|
|
18
|
+
mcp_server: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
+
protocols: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
20
|
+
command: z.ZodOptional<z.ZodString>;
|
|
21
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
22
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
name?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
tool_type?: ToolType;
|
|
27
|
+
mcp_server?: boolean;
|
|
28
|
+
protocols?: string[];
|
|
29
|
+
command?: string;
|
|
30
|
+
args?: string[];
|
|
31
|
+
env?: Record<string, string>;
|
|
32
|
+
}, {
|
|
33
|
+
name?: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
tool_type?: ToolType;
|
|
36
|
+
mcp_server?: boolean;
|
|
37
|
+
protocols?: string[];
|
|
38
|
+
command?: string;
|
|
39
|
+
args?: string[];
|
|
40
|
+
env?: Record<string, string>;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/core/concepts/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAe,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgB1D,qBAAa,UAAW,SAAQ,iBAAiB,CAAC,IAAI,CAAC;;IAKrD,SAAS,CAAC,iBAAiB,IAAI,CAAC,CAAC,SAAS;cAI1B,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;cAgBrE,gBAAgB,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cAI/C,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;cAM/C,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGV"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tool concept loader
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.ToolLoader = void 0;
|
|
43
|
+
const zod_1 = require("zod");
|
|
44
|
+
const base_1 = require("./base");
|
|
45
|
+
const types_1 = require("../../types");
|
|
46
|
+
const yaml = __importStar(require("js-yaml"));
|
|
47
|
+
const fs_1 = require("fs");
|
|
48
|
+
const path_1 = __importDefault(require("path"));
|
|
49
|
+
const ToolMetadataSchema = zod_1.z.object({
|
|
50
|
+
name: zod_1.z.string(),
|
|
51
|
+
description: zod_1.z.string().optional(),
|
|
52
|
+
tool_type: zod_1.z.nativeEnum(types_1.ToolType),
|
|
53
|
+
mcp_server: zod_1.z.boolean().optional(),
|
|
54
|
+
protocols: zod_1.z.array(zod_1.z.string()).optional(),
|
|
55
|
+
command: zod_1.z.string().optional(),
|
|
56
|
+
args: zod_1.z.array(zod_1.z.string()).optional(),
|
|
57
|
+
env: zod_1.z.record(zod_1.z.string()).optional()
|
|
58
|
+
});
|
|
59
|
+
class ToolLoader extends base_1.BaseConceptLoader {
|
|
60
|
+
constructor() {
|
|
61
|
+
super(types_1.ConceptType.TOOL);
|
|
62
|
+
}
|
|
63
|
+
getMetadataSchema() {
|
|
64
|
+
return ToolMetadataSchema;
|
|
65
|
+
}
|
|
66
|
+
async loadConceptContent(conceptPath, metadata) {
|
|
67
|
+
const toolMetadata = ToolMetadataSchema.parse(metadata);
|
|
68
|
+
return {
|
|
69
|
+
name: toolMetadata.name,
|
|
70
|
+
type: types_1.ConceptType.TOOL,
|
|
71
|
+
description: toolMetadata.description,
|
|
72
|
+
tool_type: toolMetadata.tool_type,
|
|
73
|
+
mcp_server: toolMetadata.mcp_server || false,
|
|
74
|
+
protocols: toolMetadata.protocols || [],
|
|
75
|
+
command: toolMetadata.command,
|
|
76
|
+
args: toolMetadata.args,
|
|
77
|
+
env: toolMetadata.env
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async validateSpecific(concept) {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
async loadMetadata(conceptPath) {
|
|
84
|
+
const metadataPath = path_1.default.join(conceptPath, 'tool.yml');
|
|
85
|
+
const content = await fs_1.promises.readFile(metadataPath, 'utf-8');
|
|
86
|
+
return yaml.load(content);
|
|
87
|
+
}
|
|
88
|
+
async validateConcept(tool) {
|
|
89
|
+
// Validate tool configuration
|
|
90
|
+
if (tool.mcp_server) {
|
|
91
|
+
if (!tool.command) {
|
|
92
|
+
throw new Error('MCP server tools must have a command');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (tool.tool_type === types_1.ToolType.MCP_SERVER && !tool.mcp_server) {
|
|
96
|
+
throw new Error('Tool type mcp-server must have mcp_server: true');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getSchema() {
|
|
100
|
+
return ToolMetadataSchema;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.ToolLoader = ToolLoader;
|
|
104
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/core/concepts/tool.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6BAAwB;AACxB,iCAA2C;AAC3C,uCAA0D;AAC1D,8CAAgC;AAChC,2BAAoC;AACpC,gDAAwB;AAExB,MAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,OAAC,CAAC,UAAU,CAAC,gBAAQ,CAAC;IACjC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAEH,MAAa,UAAW,SAAQ,wBAAuB;IACrD;QACE,KAAK,CAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAES,iBAAiB;QACzB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,QAAa;QACnE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExD,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,IAAI,EAAE,mBAAW,CAAC,IAAI;YACtB,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,KAAK;YAC5C,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,EAAE;YACvC,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,GAAG,EAAE,YAAY,CAAC,GAAG;SACtB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,OAAa;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,WAAmB;QAC9C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,IAAU;QACxC,8BAA8B;QAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,gBAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAnDD,gCAmDC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow concept loader
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { BaseConceptLoader } from './base';
|
|
6
|
+
import { Workflow } from '../../types';
|
|
7
|
+
export declare class WorkflowLoader extends BaseConceptLoader<Workflow> {
|
|
8
|
+
constructor();
|
|
9
|
+
protected getMetadataSchema(): z.ZodSchema;
|
|
10
|
+
protected loadConceptContent(conceptPath: string, metadata: any): Promise<Workflow>;
|
|
11
|
+
protected validateSpecific(concept: Workflow): Promise<any[]>;
|
|
12
|
+
protected loadMetadata(conceptPath: string): Promise<any>;
|
|
13
|
+
protected validateConcept(workflow: Workflow): Promise<void>;
|
|
14
|
+
getSchema(): z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
description: z.ZodOptional<z.ZodString>;
|
|
17
|
+
stages: z.ZodArray<z.ZodObject<{
|
|
18
|
+
name: z.ZodString;
|
|
19
|
+
team: z.ZodString;
|
|
20
|
+
entry_criteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
21
|
+
tasks: z.ZodArray<z.ZodString, "many">;
|
|
22
|
+
exit_criteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
23
|
+
on_failure: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
team?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
tasks?: string[];
|
|
28
|
+
entry_criteria?: string[];
|
|
29
|
+
exit_criteria?: string[];
|
|
30
|
+
on_failure?: string[];
|
|
31
|
+
}, {
|
|
32
|
+
team?: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
tasks?: string[];
|
|
35
|
+
entry_criteria?: string[];
|
|
36
|
+
exit_criteria?: string[];
|
|
37
|
+
on_failure?: string[];
|
|
38
|
+
}>, "many">;
|
|
39
|
+
teams: z.ZodArray<z.ZodString, "many">;
|
|
40
|
+
triggers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
41
|
+
type: z.ZodEnum<["manual", "scheduled", "event"]>;
|
|
42
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
type?: "manual" | "scheduled" | "event";
|
|
45
|
+
config?: Record<string, unknown>;
|
|
46
|
+
}, {
|
|
47
|
+
type?: "manual" | "scheduled" | "event";
|
|
48
|
+
config?: Record<string, unknown>;
|
|
49
|
+
}>, "many">>;
|
|
50
|
+
conditions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
name?: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
stages?: {
|
|
55
|
+
team?: string;
|
|
56
|
+
name?: string;
|
|
57
|
+
tasks?: string[];
|
|
58
|
+
entry_criteria?: string[];
|
|
59
|
+
exit_criteria?: string[];
|
|
60
|
+
on_failure?: string[];
|
|
61
|
+
}[];
|
|
62
|
+
teams?: string[];
|
|
63
|
+
triggers?: {
|
|
64
|
+
type?: "manual" | "scheduled" | "event";
|
|
65
|
+
config?: Record<string, unknown>;
|
|
66
|
+
}[];
|
|
67
|
+
conditions?: Record<string, unknown>;
|
|
68
|
+
}, {
|
|
69
|
+
name?: string;
|
|
70
|
+
description?: string;
|
|
71
|
+
stages?: {
|
|
72
|
+
team?: string;
|
|
73
|
+
name?: string;
|
|
74
|
+
tasks?: string[];
|
|
75
|
+
entry_criteria?: string[];
|
|
76
|
+
exit_criteria?: string[];
|
|
77
|
+
on_failure?: string[];
|
|
78
|
+
}[];
|
|
79
|
+
teams?: string[];
|
|
80
|
+
triggers?: {
|
|
81
|
+
type?: "manual" | "scheduled" | "event";
|
|
82
|
+
config?: Record<string, unknown>;
|
|
83
|
+
}[];
|
|
84
|
+
conditions?: Record<string, unknown>;
|
|
85
|
+
}>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/core/concepts/workflow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAA+B,MAAM,aAAa,CAAC;AA4BpE,qBAAa,cAAe,SAAQ,iBAAiB,CAAC,QAAQ,CAAC;;IAK7D,SAAS,CAAC,iBAAiB,IAAI,CAAC,CAAC,SAAS;cAI1B,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;cAczE,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cAInD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;cAM/C,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGV"}
|