@cluesmith/codev 1.6.2 → 2.0.0-rc.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/bin/porch.js +7 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +23 -0
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/index.d.ts +1 -0
- package/dist/agent-farm/commands/index.d.ts.map +1 -1
- package/dist/agent-farm/commands/index.js +1 -0
- package/dist/agent-farm/commands/index.js.map +1 -1
- package/dist/agent-farm/commands/kickoff.d.ts +19 -0
- package/dist/agent-farm/commands/kickoff.d.ts.map +1 -0
- package/dist/agent-farm/commands/kickoff.js +269 -0
- package/dist/agent-farm/commands/kickoff.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +1 -43
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +29 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/pcheck/cache.d.ts +48 -0
- package/dist/commands/pcheck/cache.d.ts.map +1 -0
- package/dist/commands/pcheck/cache.js +170 -0
- package/dist/commands/pcheck/cache.js.map +1 -0
- package/dist/commands/pcheck/evaluator.d.ts +15 -0
- package/dist/commands/pcheck/evaluator.d.ts.map +1 -0
- package/dist/commands/pcheck/evaluator.js +246 -0
- package/dist/commands/pcheck/evaluator.js.map +1 -0
- package/dist/commands/pcheck/index.d.ts +12 -0
- package/dist/commands/pcheck/index.d.ts.map +1 -0
- package/dist/commands/pcheck/index.js +249 -0
- package/dist/commands/pcheck/index.js.map +1 -0
- package/dist/commands/pcheck/parser.d.ts +39 -0
- package/dist/commands/pcheck/parser.d.ts.map +1 -0
- package/dist/commands/pcheck/parser.js +155 -0
- package/dist/commands/pcheck/parser.js.map +1 -0
- package/dist/commands/pcheck/types.d.ts +82 -0
- package/dist/commands/pcheck/types.d.ts.map +1 -0
- package/dist/commands/pcheck/types.js +5 -0
- package/dist/commands/pcheck/types.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +42 -0
- package/dist/commands/porch/checks.d.ts.map +1 -0
- package/dist/commands/porch/checks.js +195 -0
- package/dist/commands/porch/checks.js.map +1 -0
- package/dist/commands/porch/consultation.d.ts +56 -0
- package/dist/commands/porch/consultation.d.ts.map +1 -0
- package/dist/commands/porch/consultation.js +330 -0
- package/dist/commands/porch/consultation.js.map +1 -0
- package/dist/commands/porch/index.d.ts +60 -0
- package/dist/commands/porch/index.d.ts.map +1 -0
- package/dist/commands/porch/index.js +828 -0
- package/dist/commands/porch/index.js.map +1 -0
- package/dist/commands/porch/notifications.d.ts +99 -0
- package/dist/commands/porch/notifications.d.ts.map +1 -0
- package/dist/commands/porch/notifications.js +223 -0
- package/dist/commands/porch/notifications.js.map +1 -0
- package/dist/commands/porch/plan-parser.d.ts +38 -0
- package/dist/commands/porch/plan-parser.d.ts.map +1 -0
- package/dist/commands/porch/plan-parser.js +166 -0
- package/dist/commands/porch/plan-parser.js.map +1 -0
- package/dist/commands/porch/protocol-loader.d.ts +46 -0
- package/dist/commands/porch/protocol-loader.d.ts.map +1 -0
- package/dist/commands/porch/protocol-loader.js +249 -0
- package/dist/commands/porch/protocol-loader.js.map +1 -0
- package/dist/commands/porch/signal-parser.d.ts +88 -0
- package/dist/commands/porch/signal-parser.d.ts.map +1 -0
- package/dist/commands/porch/signal-parser.js +148 -0
- package/dist/commands/porch/signal-parser.js.map +1 -0
- package/dist/commands/porch/state.d.ts +133 -0
- package/dist/commands/porch/state.d.ts.map +1 -0
- package/dist/commands/porch/state.js +760 -0
- package/dist/commands/porch/state.js.map +1 -0
- package/dist/commands/porch/types.d.ts +232 -0
- package/dist/commands/porch/types.d.ts.map +1 -0
- package/dist/commands/porch/types.js +7 -0
- package/dist/commands/porch/types.js.map +1 -0
- package/package.json +2 -1
- package/skeleton/porch/prompts/defend.md +103 -0
- package/skeleton/porch/prompts/diagnose.md +70 -0
- package/skeleton/porch/prompts/evaluate.md +132 -0
- package/skeleton/porch/prompts/fix.md +59 -0
- package/skeleton/porch/prompts/implement.md +79 -0
- package/skeleton/porch/prompts/plan.md +74 -0
- package/skeleton/porch/prompts/pr.md +84 -0
- package/skeleton/porch/prompts/review.md +179 -0
- package/skeleton/porch/prompts/specify.md +53 -0
- package/skeleton/porch/prompts/test.md +63 -0
- package/skeleton/porch/prompts/understand.md +61 -0
- package/skeleton/porch/prompts/verify.md +58 -0
- package/skeleton/porch/protocols/bugfix.json +85 -0
- package/skeleton/porch/protocols/spider.json +135 -0
- package/skeleton/porch/protocols/tick.json +76 -0
- package/skeleton/protocols/bugfix/protocol.json +127 -0
- package/skeleton/protocols/protocol-schema.json +237 -0
- package/skeleton/protocols/spider/protocol.json +204 -0
- package/skeleton/protocols/tick/protocol.json +151 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Consultation
|
|
3
|
+
*
|
|
4
|
+
* Runs parallel 3-way consultations with external AI models (gemini, codex, claude)
|
|
5
|
+
* and collects feedback with APPROVE/REQUEST_CHANGES verdicts.
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
/**
|
|
10
|
+
* Default consultation timeout (ms)
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_TIMEOUT = 300000; // 5 minutes
|
|
13
|
+
/**
|
|
14
|
+
* Run a single consultation with an AI model
|
|
15
|
+
*/
|
|
16
|
+
async function runConsultation(model, command, args, options = {}) {
|
|
17
|
+
const timeout = options.timeout || DEFAULT_TIMEOUT;
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
const proc = spawn(command, args, {
|
|
20
|
+
cwd: options.cwd,
|
|
21
|
+
shell: true,
|
|
22
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
23
|
+
});
|
|
24
|
+
let output = '';
|
|
25
|
+
let stderr = '';
|
|
26
|
+
let timedOut = false;
|
|
27
|
+
const timeoutId = setTimeout(() => {
|
|
28
|
+
timedOut = true;
|
|
29
|
+
proc.kill('SIGTERM');
|
|
30
|
+
}, timeout);
|
|
31
|
+
proc.stdout.on('data', (data) => {
|
|
32
|
+
output += data.toString();
|
|
33
|
+
});
|
|
34
|
+
proc.stderr.on('data', (data) => {
|
|
35
|
+
stderr += data.toString();
|
|
36
|
+
});
|
|
37
|
+
proc.on('close', (code) => {
|
|
38
|
+
clearTimeout(timeoutId);
|
|
39
|
+
if (timedOut) {
|
|
40
|
+
resolve({
|
|
41
|
+
output,
|
|
42
|
+
error: `Consultation timed out after ${timeout}ms`,
|
|
43
|
+
success: false,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
resolve({
|
|
48
|
+
output: output + stderr,
|
|
49
|
+
error: code !== 0 ? `Exit code: ${code}` : undefined,
|
|
50
|
+
success: code === 0,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
proc.on('error', (err) => {
|
|
55
|
+
clearTimeout(timeoutId);
|
|
56
|
+
resolve({
|
|
57
|
+
output: '',
|
|
58
|
+
error: err.message,
|
|
59
|
+
success: false,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Parse verdict from consultation output
|
|
66
|
+
* Looks for APPROVE or REQUEST_CHANGES markers
|
|
67
|
+
*/
|
|
68
|
+
export function parseVerdict(output) {
|
|
69
|
+
// Look for explicit verdict markers
|
|
70
|
+
if (/verdict:\s*approve/i.test(output) || /\[APPROVE\]/i.test(output)) {
|
|
71
|
+
return 'APPROVE';
|
|
72
|
+
}
|
|
73
|
+
if (/verdict:\s*request_changes/i.test(output) || /\[REQUEST_CHANGES\]/i.test(output)) {
|
|
74
|
+
return 'REQUEST_CHANGES';
|
|
75
|
+
}
|
|
76
|
+
// Look for implicit approval signals
|
|
77
|
+
if (/looks good/i.test(output) && !/but|however|should|could/i.test(output.slice(output.search(/looks good/i), output.search(/looks good/i) + 100))) {
|
|
78
|
+
return 'APPROVE';
|
|
79
|
+
}
|
|
80
|
+
if (/approved?/i.test(output) && !/not approved/i.test(output)) {
|
|
81
|
+
return 'APPROVE';
|
|
82
|
+
}
|
|
83
|
+
// Look for implicit change request signals
|
|
84
|
+
if (/must\s+(be\s+)?fix|should\s+(be\s+)?fix|need(s)?\s+to\s+fix|critical\s+issue|blocking\s+issue/i.test(output)) {
|
|
85
|
+
return 'REQUEST_CHANGES';
|
|
86
|
+
}
|
|
87
|
+
// Default to approve if no clear signal (lenient mode)
|
|
88
|
+
return 'APPROVE';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Extract summary from consultation output
|
|
92
|
+
* Takes the first paragraph or bullet points
|
|
93
|
+
*/
|
|
94
|
+
export function extractSummary(output, maxLength = 500) {
|
|
95
|
+
// Try to find a summary section
|
|
96
|
+
const summaryMatch = output.match(/##?\s*Summary\s*\n([\s\S]*?)(?=\n##|\n\*\*|$)/i);
|
|
97
|
+
if (summaryMatch) {
|
|
98
|
+
return truncate(summaryMatch[1].trim(), maxLength);
|
|
99
|
+
}
|
|
100
|
+
// Try to find verdict section
|
|
101
|
+
const verdictMatch = output.match(/##?\s*Verdict\s*\n([\s\S]*?)(?=\n##|\n\*\*|$)/i);
|
|
102
|
+
if (verdictMatch) {
|
|
103
|
+
return truncate(verdictMatch[1].trim(), maxLength);
|
|
104
|
+
}
|
|
105
|
+
// Fall back to first paragraph
|
|
106
|
+
const paragraphs = output.split(/\n\n+/);
|
|
107
|
+
for (const p of paragraphs) {
|
|
108
|
+
const trimmed = p.trim();
|
|
109
|
+
if (trimmed.length > 50 && !trimmed.startsWith('#') && !trimmed.startsWith('```')) {
|
|
110
|
+
return truncate(trimmed, maxLength);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return truncate(output.trim(), maxLength);
|
|
114
|
+
}
|
|
115
|
+
function truncate(text, maxLength) {
|
|
116
|
+
if (text.length <= maxLength)
|
|
117
|
+
return text;
|
|
118
|
+
return text.slice(0, maxLength - 3) + '...';
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Build the consult command for a model
|
|
122
|
+
*/
|
|
123
|
+
function buildConsultCommand(model, subcommand, identifier, reviewType) {
|
|
124
|
+
const args = ['--model', model, subcommand, identifier];
|
|
125
|
+
if (reviewType) {
|
|
126
|
+
args.push('--type', reviewType);
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
command: 'consult',
|
|
130
|
+
args,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Run parallel 3-way consultation
|
|
135
|
+
*/
|
|
136
|
+
export async function runParallelConsultation(config, context) {
|
|
137
|
+
const { subcommand, identifier, cwd, timeout = DEFAULT_TIMEOUT, dryRun } = context;
|
|
138
|
+
const { models, type: reviewType, parallel = true } = config;
|
|
139
|
+
if (dryRun) {
|
|
140
|
+
console.log(chalk.yellow(`[consultation] [DRY RUN] Would run ${models.length}-way consultation:`));
|
|
141
|
+
for (const model of models) {
|
|
142
|
+
const { command, args } = buildConsultCommand(model, subcommand, identifier, reviewType);
|
|
143
|
+
console.log(chalk.yellow(` ${command} ${args.join(' ')}`));
|
|
144
|
+
}
|
|
145
|
+
return models.map(model => ({
|
|
146
|
+
model,
|
|
147
|
+
verdict: 'APPROVE',
|
|
148
|
+
summary: '[DRY RUN] Simulated approval',
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
console.log(chalk.blue(`[consultation] Running ${models.length}-way parallel consultation...`));
|
|
152
|
+
const startTime = Date.now();
|
|
153
|
+
// Build commands for each model
|
|
154
|
+
const consultations = models.map(model => {
|
|
155
|
+
const { command, args } = buildConsultCommand(model, subcommand, identifier, reviewType);
|
|
156
|
+
console.log(chalk.blue(`[consultation] Starting ${model}...`));
|
|
157
|
+
return {
|
|
158
|
+
model,
|
|
159
|
+
promise: runConsultation(model, command, args, { timeout, cwd }),
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
// Run in parallel or sequentially based on config
|
|
163
|
+
const results = [];
|
|
164
|
+
if (parallel) {
|
|
165
|
+
// Run all in parallel
|
|
166
|
+
const outputs = await Promise.all(consultations.map(c => c.promise));
|
|
167
|
+
for (let i = 0; i < consultations.length; i++) {
|
|
168
|
+
const { model } = consultations[i];
|
|
169
|
+
const output = outputs[i];
|
|
170
|
+
if (!output.success) {
|
|
171
|
+
console.log(chalk.yellow(`[consultation] ${model} failed: ${output.error}`));
|
|
172
|
+
results.push({
|
|
173
|
+
model,
|
|
174
|
+
verdict: 'APPROVE', // Default to approve on failure (lenient)
|
|
175
|
+
summary: `Consultation failed: ${output.error}`,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
const verdict = parseVerdict(output.output);
|
|
180
|
+
const summary = extractSummary(output.output);
|
|
181
|
+
const duration = Date.now() - startTime;
|
|
182
|
+
console.log(chalk.blue(`[consultation] ${model} completed (${duration}ms): ${verdict}`));
|
|
183
|
+
results.push({ model, verdict, summary });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// Run sequentially
|
|
189
|
+
for (const { model, promise } of consultations) {
|
|
190
|
+
const output = await promise;
|
|
191
|
+
const duration = Date.now() - startTime;
|
|
192
|
+
if (!output.success) {
|
|
193
|
+
console.log(chalk.yellow(`[consultation] ${model} failed: ${output.error}`));
|
|
194
|
+
results.push({
|
|
195
|
+
model,
|
|
196
|
+
verdict: 'APPROVE',
|
|
197
|
+
summary: `Consultation failed: ${output.error}`,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
const verdict = parseVerdict(output.output);
|
|
202
|
+
const summary = extractSummary(output.output);
|
|
203
|
+
console.log(chalk.blue(`[consultation] ${model} completed (${duration}ms): ${verdict}`));
|
|
204
|
+
results.push({ model, verdict, summary });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const totalDuration = Date.now() - startTime;
|
|
209
|
+
console.log(chalk.blue(`[consultation] All consultations complete (${totalDuration}ms)`));
|
|
210
|
+
return results;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Run consultation loop with revision support
|
|
214
|
+
*
|
|
215
|
+
* If any model returns REQUEST_CHANGES, allows revision and re-consultation
|
|
216
|
+
* up to max_rounds times.
|
|
217
|
+
*/
|
|
218
|
+
export async function runConsultationLoop(config, context) {
|
|
219
|
+
const maxRounds = config.max_rounds || 3;
|
|
220
|
+
let round = 1;
|
|
221
|
+
while (round <= maxRounds) {
|
|
222
|
+
console.log(chalk.blue(`[consultation] Round ${round}/${maxRounds}`));
|
|
223
|
+
const feedback = await runParallelConsultation(config, context);
|
|
224
|
+
// Check if all approved
|
|
225
|
+
const allApproved = feedback.every(f => f.verdict === 'APPROVE');
|
|
226
|
+
if (allApproved) {
|
|
227
|
+
console.log(chalk.green(`[consultation] All models approved!`));
|
|
228
|
+
return { round, feedback, allApproved: true };
|
|
229
|
+
}
|
|
230
|
+
// Some models requested changes
|
|
231
|
+
const changeRequests = feedback.filter(f => f.verdict === 'REQUEST_CHANGES');
|
|
232
|
+
console.log(chalk.yellow(`[consultation] ${changeRequests.length} model(s) requested changes:`));
|
|
233
|
+
for (const req of changeRequests) {
|
|
234
|
+
console.log(chalk.yellow(` ${req.model}: ${req.summary}`));
|
|
235
|
+
}
|
|
236
|
+
// Check if we've reached max rounds
|
|
237
|
+
if (round >= maxRounds) {
|
|
238
|
+
console.log(chalk.red(`[consultation] Max rounds (${maxRounds}) reached without full approval`));
|
|
239
|
+
return { round, feedback, allApproved: false };
|
|
240
|
+
}
|
|
241
|
+
// Call revision callback if provided
|
|
242
|
+
if (context.onRevisionNeeded) {
|
|
243
|
+
const shouldContinue = await context.onRevisionNeeded(feedback);
|
|
244
|
+
if (!shouldContinue) {
|
|
245
|
+
console.log(chalk.yellow(`[consultation] Revision declined, stopping consultation loop`));
|
|
246
|
+
return { round, feedback, allApproved: false };
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// No revision callback - just report and exit
|
|
251
|
+
console.log(chalk.yellow(`[consultation] Changes requested but no revision handler`));
|
|
252
|
+
return { round, feedback, allApproved: false };
|
|
253
|
+
}
|
|
254
|
+
round++;
|
|
255
|
+
}
|
|
256
|
+
// Should not reach here
|
|
257
|
+
return { round, feedback: [], allApproved: false };
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Format consultation results for display
|
|
261
|
+
*/
|
|
262
|
+
export function formatConsultationResults(result) {
|
|
263
|
+
const lines = [
|
|
264
|
+
`Consultation Results (Round ${result.round}):`,
|
|
265
|
+
result.allApproved ? chalk.green(' ✓ All models approved') : chalk.yellow(' ⚠ Not all models approved'),
|
|
266
|
+
'',
|
|
267
|
+
];
|
|
268
|
+
for (const feedback of result.feedback) {
|
|
269
|
+
const icon = feedback.verdict === 'APPROVE' ? '✓' : '✗';
|
|
270
|
+
const color = feedback.verdict === 'APPROVE' ? chalk.green : chalk.yellow;
|
|
271
|
+
lines.push(color(` ${icon} ${feedback.model}: ${feedback.verdict}`));
|
|
272
|
+
if (feedback.summary) {
|
|
273
|
+
lines.push(` ${feedback.summary.slice(0, 100)}...`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return lines.join('\n');
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Check if a phase has consultation configured
|
|
280
|
+
*/
|
|
281
|
+
export function hasConsultation(phaseConfig) {
|
|
282
|
+
return phaseConfig.consultation !== undefined &&
|
|
283
|
+
phaseConfig.consultation.models !== undefined &&
|
|
284
|
+
phaseConfig.consultation.models.length > 0;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get the default consultation config for common review types
|
|
288
|
+
*/
|
|
289
|
+
export function getDefaultConsultationConfig(type) {
|
|
290
|
+
const defaultModels = ['gemini', 'codex', 'claude'];
|
|
291
|
+
switch (type) {
|
|
292
|
+
case 'spec-review':
|
|
293
|
+
return {
|
|
294
|
+
on: 'review',
|
|
295
|
+
models: defaultModels,
|
|
296
|
+
type: 'spec-review',
|
|
297
|
+
parallel: true,
|
|
298
|
+
max_rounds: 3,
|
|
299
|
+
next: 'plan',
|
|
300
|
+
};
|
|
301
|
+
case 'plan-review':
|
|
302
|
+
return {
|
|
303
|
+
on: 'review',
|
|
304
|
+
models: defaultModels,
|
|
305
|
+
type: 'plan-review',
|
|
306
|
+
parallel: true,
|
|
307
|
+
max_rounds: 3,
|
|
308
|
+
next: 'implement',
|
|
309
|
+
};
|
|
310
|
+
case 'impl-review':
|
|
311
|
+
return {
|
|
312
|
+
on: 'complete',
|
|
313
|
+
models: defaultModels,
|
|
314
|
+
type: 'impl-review',
|
|
315
|
+
parallel: true,
|
|
316
|
+
max_rounds: 2,
|
|
317
|
+
next: 'defend',
|
|
318
|
+
};
|
|
319
|
+
default:
|
|
320
|
+
return {
|
|
321
|
+
on: 'review',
|
|
322
|
+
models: defaultModels,
|
|
323
|
+
type: type,
|
|
324
|
+
parallel: true,
|
|
325
|
+
max_rounds: 2,
|
|
326
|
+
next: '',
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=consultation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consultation.js","sourceRoot":"","sources":["../../../src/commands/porch/consultation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;GAEG;AACH,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,YAAY;AAE5C;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAa,EACb,OAAe,EACf,IAAc,EACd,UAGI,EAAE;IAEN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC;oBACN,MAAM;oBACN,KAAK,EAAE,gCAAgC,OAAO,IAAI;oBAClD,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC;oBACN,MAAM,EAAE,MAAM,GAAG,MAAM;oBACvB,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;oBACpD,OAAO,EAAE,IAAI,KAAK,CAAC;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,OAAO;gBAClB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,oCAAoC;IACpC,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,qCAAqC;IACrC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACpJ,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2CAA2C;IAC3C,IAAI,gGAAgG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,uDAAuD;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,YAAoB,GAAG;IACpE,gCAAgC;IAChC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,OAAO,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAiB;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,KAAa,EACb,UAAkB,EAClB,UAAkB,EAClB,UAAmB;IAEnB,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAExD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA0B,EAC1B,OAMC;IAED,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,MAAM,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC;QACnG,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1B,KAAK;YACL,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,8BAA8B;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,MAAM,+BAA+B,CAAC,CAAC,CAAC;IAEhG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACvC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,KAAK,KAAK,CAAC,CAAC,CAAC;QAC/D,OAAO;YACL,KAAK;YACL,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,QAAQ,EAAE,CAAC;QACb,sBAAsB;QACtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAE1B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,KAAK,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7E,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK;oBACL,OAAO,EAAE,SAAS,EAAE,0CAA0C;oBAC9D,OAAO,EAAE,wBAAwB,MAAM,CAAC,KAAK,EAAE;iBAChD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAExC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,eAAe,QAAQ,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,aAAa,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,KAAK,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7E,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK;oBACL,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE,wBAAwB,MAAM,CAAC,KAAK,EAAE;iBAChD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,eAAe,QAAQ,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,aAAa,KAAK,CAAC,CAAC,CAAC;IAE1F,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAA0B,EAC1B,OAOC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,IAAI,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEhE,wBAAwB;QACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QAEjE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAChE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,gCAAgC;QAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,iBAAiB,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,cAAc,CAAC,MAAM,8BAA8B,CAAC,CAAC,CAAC;QAEjG,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,oCAAoC;QACpC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,SAAS,iCAAiC,CAAC,CAAC,CAAC;YACjG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;gBAC1F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACtF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,KAAK,EAAE,CAAC;IACV,CAAC;IAED,wBAAwB;IACxB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAA0B;IAClE,MAAM,KAAK,GAAa;QACtB,+BAA+B,MAAM,CAAC,KAAK,IAAI;QAC/C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC;QACzG,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAkD;IAChF,OAAO,WAAW,CAAC,YAAY,KAAK,SAAS;QAC3C,WAAW,CAAC,YAAY,CAAC,MAAM,KAAK,SAAS;QAC7C,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAY;IACvD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,MAAM;aACb,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,WAAW;aAClB,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO;gBACL,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,QAAQ;aACf,CAAC;QACJ;YACE,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,EAAE;aACT,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porch - Protocol Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Generic loop orchestrator that reads protocol definitions from JSON
|
|
5
|
+
* and executes them with Claude. Implements the Ralph pattern: fresh
|
|
6
|
+
* context per iteration with state persisted to files.
|
|
7
|
+
*/
|
|
8
|
+
import type { Protocol, PorchRunOptions, PorchInitOptions } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* List available protocols
|
|
11
|
+
* Delegates to protocol-loader.ts for proper conversion
|
|
12
|
+
*/
|
|
13
|
+
export declare function listProtocols(projectRoot?: string): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Load a protocol definition
|
|
16
|
+
* Delegates to protocol-loader.ts which properly converts steps→substates
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadProtocol(name: string, projectRoot?: string): Protocol;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize a new project with a protocol
|
|
21
|
+
*/
|
|
22
|
+
export declare function init(protocolName: string, projectId: string, projectName: string, options?: PorchInitOptions): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Run the protocol loop for a project
|
|
25
|
+
*/
|
|
26
|
+
export declare function run(projectId: string, options?: PorchRunOptions): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Approve a gate
|
|
29
|
+
*/
|
|
30
|
+
export declare function approve(projectId: string, gateId: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Show project status
|
|
33
|
+
*/
|
|
34
|
+
export declare function status(projectId?: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* List available protocols
|
|
37
|
+
*/
|
|
38
|
+
export declare function list(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Show protocol definition
|
|
41
|
+
*/
|
|
42
|
+
export declare function show(protocolName: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Show pending gates across all projects
|
|
45
|
+
*/
|
|
46
|
+
export declare function pending(): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Main porch entry point - handles subcommands
|
|
49
|
+
*/
|
|
50
|
+
export interface PorchOptions {
|
|
51
|
+
subcommand: string;
|
|
52
|
+
args: string[];
|
|
53
|
+
dryRun?: boolean;
|
|
54
|
+
noClaude?: boolean;
|
|
55
|
+
pollInterval?: number;
|
|
56
|
+
description?: string;
|
|
57
|
+
worktree?: string;
|
|
58
|
+
}
|
|
59
|
+
export declare function porch(options: PorchOptions): Promise<void>;
|
|
60
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EACV,QAAQ,EAGR,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA+CpB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAG5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CASzE;AA8MD;;GAEG;AACH,wBAAsB,IAAI,CACxB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAgFD;;GAEG;AACH,wBAAsB,GAAG,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwUf;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E9D;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB1C;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9D;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAe7C;AAyDD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEhE"}
|