compact-agent 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +394 -0
- package/bin/anycode.js +2 -0
- package/bin/crowcoder.js +19 -0
- package/bin/ecc-hooks.cjs +138 -0
- package/dist/agents.d.ts +17 -0
- package/dist/agents.js +1603 -0
- package/dist/agents.js.map +1 -0
- package/dist/api.d.ts +16 -0
- package/dist/api.js +115 -0
- package/dist/api.js.map +1 -0
- package/dist/autonomous-loops.d.ts +108 -0
- package/dist/autonomous-loops.js +526 -0
- package/dist/autonomous-loops.js.map +1 -0
- package/dist/codemaps.d.ts +53 -0
- package/dist/codemaps.js +325 -0
- package/dist/codemaps.js.map +1 -0
- package/dist/compaction.d.ts +30 -0
- package/dist/compaction.js +125 -0
- package/dist/compaction.js.map +1 -0
- package/dist/config.d.ts +5 -0
- package/dist/config.js +79 -0
- package/dist/config.js.map +1 -0
- package/dist/content-engine.d.ts +97 -0
- package/dist/content-engine.js +721 -0
- package/dist/content-engine.js.map +1 -0
- package/dist/cost-tracker.d.ts +49 -0
- package/dist/cost-tracker.js +150 -0
- package/dist/cost-tracker.js.map +1 -0
- package/dist/counter-button.d.ts +35 -0
- package/dist/counter-button.js +48 -0
- package/dist/counter-button.js.map +1 -0
- package/dist/counter.d.ts +21 -0
- package/dist/counter.js +31 -0
- package/dist/counter.js.map +1 -0
- package/dist/coverage.d.ts +23 -0
- package/dist/coverage.js +215 -0
- package/dist/coverage.js.map +1 -0
- package/dist/docs-sync.d.ts +23 -0
- package/dist/docs-sync.js +266 -0
- package/dist/docs-sync.js.map +1 -0
- package/dist/ecc.d.ts +41 -0
- package/dist/ecc.js +644 -0
- package/dist/ecc.js.map +1 -0
- package/dist/evaluation.d.ts +24 -0
- package/dist/evaluation.js +412 -0
- package/dist/evaluation.js.map +1 -0
- package/dist/export.d.ts +22 -0
- package/dist/export.js +109 -0
- package/dist/export.js.map +1 -0
- package/dist/git-workflow.d.ts +22 -0
- package/dist/git-workflow.js +197 -0
- package/dist/git-workflow.js.map +1 -0
- package/dist/hook-controls.d.ts +34 -0
- package/dist/hook-controls.js +90 -0
- package/dist/hook-controls.js.map +1 -0
- package/dist/hooks.d.ts +30 -0
- package/dist/hooks.js +130 -0
- package/dist/hooks.js.map +1 -0
- package/dist/html-parser.d.ts +18 -0
- package/dist/html-parser.js +101 -0
- package/dist/html-parser.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +1230 -0
- package/dist/index.js.map +1 -0
- package/dist/learning.d.ts +35 -0
- package/dist/learning.js +238 -0
- package/dist/learning.js.map +1 -0
- package/dist/login.d.ts +37 -0
- package/dist/login.js +191 -0
- package/dist/login.js.map +1 -0
- package/dist/memory.d.ts +39 -0
- package/dist/memory.js +183 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-router.d.ts +23 -0
- package/dist/model-router.js +145 -0
- package/dist/model-router.js.map +1 -0
- package/dist/modes.d.ts +17 -0
- package/dist/modes.js +217 -0
- package/dist/modes.js.map +1 -0
- package/dist/orchestration.d.ts +37 -0
- package/dist/orchestration.js +139 -0
- package/dist/orchestration.js.map +1 -0
- package/dist/package-detect.d.ts +36 -0
- package/dist/package-detect.js +529 -0
- package/dist/package-detect.js.map +1 -0
- package/dist/permissions.d.ts +25 -0
- package/dist/permissions.js +50 -0
- package/dist/permissions.js.map +1 -0
- package/dist/pm2-manager.d.ts +40 -0
- package/dist/pm2-manager.js +127 -0
- package/dist/pm2-manager.js.map +1 -0
- package/dist/query.d.ts +15 -0
- package/dist/query.js +278 -0
- package/dist/query.js.map +1 -0
- package/dist/refactor.d.ts +22 -0
- package/dist/refactor.js +226 -0
- package/dist/refactor.js.map +1 -0
- package/dist/retry.d.ts +20 -0
- package/dist/retry.js +88 -0
- package/dist/retry.js.map +1 -0
- package/dist/rules.d.ts +34 -0
- package/dist/rules.js +942 -0
- package/dist/rules.js.map +1 -0
- package/dist/schema.d.ts +23 -0
- package/dist/schema.js +12 -0
- package/dist/schema.js.map +1 -0
- package/dist/search-first.d.ts +17 -0
- package/dist/search-first.js +301 -0
- package/dist/search-first.js.map +1 -0
- package/dist/security.d.ts +10 -0
- package/dist/security.js +145 -0
- package/dist/security.js.map +1 -0
- package/dist/sessions.d.ts +21 -0
- package/dist/sessions.js +112 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skill-create.d.ts +38 -0
- package/dist/skill-create.js +389 -0
- package/dist/skill-create.js.map +1 -0
- package/dist/skills.d.ts +34 -0
- package/dist/skills.js +161 -0
- package/dist/skills.js.map +1 -0
- package/dist/strategic-compaction.d.ts +24 -0
- package/dist/strategic-compaction.js +144 -0
- package/dist/strategic-compaction.js.map +1 -0
- package/dist/system-prompt.d.ts +3 -0
- package/dist/system-prompt.js +101 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.js +220 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools/bash.d.ts +2 -0
- package/dist/tools/bash.js +49 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +2 -0
- package/dist/tools/edit.js +76 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +2 -0
- package/dist/tools/glob.js +54 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +2 -0
- package/dist/tools/grep.js +64 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.js +27 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-dir.d.ts +2 -0
- package/dist/tools/list-dir.js +51 -0
- package/dist/tools/list-dir.js.map +1 -0
- package/dist/tools/read.d.ts +2 -0
- package/dist/tools/read.js +56 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/types.d.ts +45 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +2 -0
- package/dist/tools/web-fetch.js +41 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +27 -0
- package/dist/tools/web-search.js +139 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/write.d.ts +2 -0
- package/dist/tools/write.js +36 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.js +57 -0
- package/dist/types.js.map +1 -0
- package/dist/users.d.ts +51 -0
- package/dist/users.js +193 -0
- package/dist/users.js.map +1 -0
- package/dist/verification.d.ts +73 -0
- package/dist/verification.js +269 -0
- package/dist/verification.js.map +1 -0
- package/dist/walkthrough.d.ts +10 -0
- package/dist/walkthrough.js +121 -0
- package/dist/walkthrough.js.map +1 -0
- package/package.json +58 -0
- package/resources/ecc/agents/architect.json +16 -0
- package/resources/ecc/agents/architect.md +212 -0
- package/resources/ecc/agents/build-error-resolver.json +17 -0
- package/resources/ecc/agents/build-error-resolver.md +116 -0
- package/resources/ecc/agents/chief-of-staff.json +17 -0
- package/resources/ecc/agents/chief-of-staff.md +153 -0
- package/resources/ecc/agents/code-reviewer.json +16 -0
- package/resources/ecc/agents/code-reviewer.md +238 -0
- package/resources/ecc/agents/database-reviewer.json +16 -0
- package/resources/ecc/agents/database-reviewer.md +92 -0
- package/resources/ecc/agents/doc-updater.json +16 -0
- package/resources/ecc/agents/doc-updater.md +108 -0
- package/resources/ecc/agents/e2e-runner.json +17 -0
- package/resources/ecc/agents/e2e-runner.md +109 -0
- package/resources/ecc/agents/go-build-resolver.json +17 -0
- package/resources/ecc/agents/go-build-resolver.md +96 -0
- package/resources/ecc/agents/go-reviewer.json +16 -0
- package/resources/ecc/agents/go-reviewer.md +77 -0
- package/resources/ecc/agents/harness-optimizer.json +15 -0
- package/resources/ecc/agents/harness-optimizer.md +34 -0
- package/resources/ecc/agents/loop-operator.json +16 -0
- package/resources/ecc/agents/loop-operator.md +36 -0
- package/resources/ecc/agents/planner.json +15 -0
- package/resources/ecc/agents/planner.md +212 -0
- package/resources/ecc/agents/python-reviewer.json +16 -0
- package/resources/ecc/agents/python-reviewer.md +99 -0
- package/resources/ecc/agents/refactor-cleaner.json +17 -0
- package/resources/ecc/agents/refactor-cleaner.md +87 -0
- package/resources/ecc/agents/security-reviewer.json +16 -0
- package/resources/ecc/agents/security-reviewer.md +109 -0
- package/resources/ecc/agents/tdd-guide.json +17 -0
- package/resources/ecc/agents/tdd-guide.md +93 -0
- package/resources/ecc/commands/add-language-rules.md +39 -0
- package/resources/ecc/commands/database-migration.md +36 -0
- package/resources/ecc/commands/feature-development.md +38 -0
- package/resources/ecc/prompts/build-fix.prompt.md +47 -0
- package/resources/ecc/prompts/code-review.prompt.md +56 -0
- package/resources/ecc/prompts/plan.prompt.md +52 -0
- package/resources/ecc/prompts/refactor.prompt.md +50 -0
- package/resources/ecc/prompts/security-review.prompt.md +70 -0
- package/resources/ecc/prompts/tdd.prompt.md +47 -0
- package/resources/ecc/rules/common-agents.md +53 -0
- package/resources/ecc/rules/common-coding-style.md +52 -0
- package/resources/ecc/rules/common-development-workflow.md +33 -0
- package/resources/ecc/rules/common-git-workflow.md +28 -0
- package/resources/ecc/rules/common-hooks.md +34 -0
- package/resources/ecc/rules/common-patterns.md +35 -0
- package/resources/ecc/rules/common-performance.md +59 -0
- package/resources/ecc/rules/common-security.md +33 -0
- package/resources/ecc/rules/common-testing.md +33 -0
- package/resources/ecc/rules/golang-coding-style.md +31 -0
- package/resources/ecc/rules/golang-hooks.md +16 -0
- package/resources/ecc/rules/golang-patterns.md +44 -0
- package/resources/ecc/rules/golang-security.md +33 -0
- package/resources/ecc/rules/golang-testing.md +30 -0
- package/resources/ecc/rules/kotlin-coding-style.md +39 -0
- package/resources/ecc/rules/kotlin-hooks.md +16 -0
- package/resources/ecc/rules/kotlin-patterns.md +50 -0
- package/resources/ecc/rules/kotlin-security.md +58 -0
- package/resources/ecc/rules/kotlin-testing.md +38 -0
- package/resources/ecc/rules/php-coding-style.md +25 -0
- package/resources/ecc/rules/php-hooks.md +21 -0
- package/resources/ecc/rules/php-patterns.md +23 -0
- package/resources/ecc/rules/php-security.md +24 -0
- package/resources/ecc/rules/php-testing.md +26 -0
- package/resources/ecc/rules/python-coding-style.md +42 -0
- package/resources/ecc/rules/python-hooks.md +19 -0
- package/resources/ecc/rules/python-patterns.md +39 -0
- package/resources/ecc/rules/python-security.md +30 -0
- package/resources/ecc/rules/python-testing.md +38 -0
- package/resources/ecc/rules/swift-coding-style.md +47 -0
- package/resources/ecc/rules/swift-hooks.md +20 -0
- package/resources/ecc/rules/swift-patterns.md +66 -0
- package/resources/ecc/rules/swift-security.md +33 -0
- package/resources/ecc/rules/swift-testing.md +45 -0
- package/resources/ecc/rules/typescript-coding-style.md +63 -0
- package/resources/ecc/rules/typescript-hooks.md +20 -0
- package/resources/ecc/rules/typescript-patterns.md +50 -0
- package/resources/ecc/rules/typescript-security.md +26 -0
- package/resources/ecc/rules/typescript-testing.md +16 -0
- package/resources/ecc/skills/agent-introspection-debugging/SKILL.md +152 -0
- package/resources/ecc/skills/agent-introspection-debugging/agents/openai.yaml +7 -0
- package/resources/ecc/skills/agent-sort/SKILL.md +214 -0
- package/resources/ecc/skills/agent-sort/agents/openai.yaml +7 -0
- package/resources/ecc/skills/api-design/SKILL.md +522 -0
- package/resources/ecc/skills/api-design/agents/openai.yaml +7 -0
- package/resources/ecc/skills/article-writing/SKILL.md +78 -0
- package/resources/ecc/skills/article-writing/agents/openai.yaml +7 -0
- package/resources/ecc/skills/backend-patterns/SKILL.md +597 -0
- package/resources/ecc/skills/backend-patterns/agents/openai.yaml +7 -0
- package/resources/ecc/skills/brand-voice/SKILL.md +96 -0
- package/resources/ecc/skills/brand-voice/agents/openai.yaml +7 -0
- package/resources/ecc/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/resources/ecc/skills/bun-runtime/SKILL.md +83 -0
- package/resources/ecc/skills/bun-runtime/agents/openai.yaml +7 -0
- package/resources/ecc/skills/coding-standards/SKILL.md +548 -0
- package/resources/ecc/skills/coding-standards/agents/openai.yaml +7 -0
- package/resources/ecc/skills/content-engine/SKILL.md +130 -0
- package/resources/ecc/skills/content-engine/agents/openai.yaml +7 -0
- package/resources/ecc/skills/crosspost/SKILL.md +110 -0
- package/resources/ecc/skills/crosspost/agents/openai.yaml +7 -0
- package/resources/ecc/skills/deep-research/SKILL.md +154 -0
- package/resources/ecc/skills/deep-research/agents/openai.yaml +7 -0
- package/resources/ecc/skills/dmux-workflows/SKILL.md +143 -0
- package/resources/ecc/skills/dmux-workflows/agents/openai.yaml +7 -0
- package/resources/ecc/skills/documentation-lookup/SKILL.md +89 -0
- package/resources/ecc/skills/documentation-lookup/agents/openai.yaml +7 -0
- package/resources/ecc/skills/e2e-testing/SKILL.md +325 -0
- package/resources/ecc/skills/e2e-testing/agents/openai.yaml +7 -0
- package/resources/ecc/skills/eval-harness/SKILL.md +235 -0
- package/resources/ecc/skills/eval-harness/agents/openai.yaml +7 -0
- package/resources/ecc/skills/everything-claude-code/SKILL.md +442 -0
- package/resources/ecc/skills/everything-claude-code/agents/openai.yaml +7 -0
- package/resources/ecc/skills/exa-search/SKILL.md +169 -0
- package/resources/ecc/skills/exa-search/agents/openai.yaml +7 -0
- package/resources/ecc/skills/fal-ai-media/SKILL.md +276 -0
- package/resources/ecc/skills/fal-ai-media/agents/openai.yaml +7 -0
- package/resources/ecc/skills/frontend-patterns/SKILL.md +647 -0
- package/resources/ecc/skills/frontend-patterns/agents/openai.yaml +7 -0
- package/resources/ecc/skills/frontend-slides/SKILL.md +183 -0
- package/resources/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/resources/ecc/skills/frontend-slides/agents/openai.yaml +7 -0
- package/resources/ecc/skills/investor-materials/SKILL.md +95 -0
- package/resources/ecc/skills/investor-materials/agents/openai.yaml +7 -0
- package/resources/ecc/skills/investor-outreach/SKILL.md +90 -0
- package/resources/ecc/skills/investor-outreach/agents/openai.yaml +7 -0
- package/resources/ecc/skills/market-research/SKILL.md +74 -0
- package/resources/ecc/skills/market-research/agents/openai.yaml +7 -0
- package/resources/ecc/skills/mcp-server-patterns/SKILL.md +66 -0
- package/resources/ecc/skills/mcp-server-patterns/agents/openai.yaml +7 -0
- package/resources/ecc/skills/mle-workflow/SKILL.md +346 -0
- package/resources/ecc/skills/mle-workflow/agents/openai.yaml +7 -0
- package/resources/ecc/skills/nextjs-turbopack/SKILL.md +43 -0
- package/resources/ecc/skills/nextjs-turbopack/agents/openai.yaml +7 -0
- package/resources/ecc/skills/product-capability/SKILL.md +140 -0
- package/resources/ecc/skills/product-capability/agents/openai.yaml +7 -0
- package/resources/ecc/skills/security-review/SKILL.md +494 -0
- package/resources/ecc/skills/security-review/agents/openai.yaml +7 -0
- package/resources/ecc/skills/strategic-compact/SKILL.md +102 -0
- package/resources/ecc/skills/strategic-compact/agents/openai.yaml +7 -0
- package/resources/ecc/skills/tdd-workflow/SKILL.md +409 -0
- package/resources/ecc/skills/tdd-workflow/agents/openai.yaml +7 -0
- package/resources/ecc/skills/verification-loop/SKILL.md +125 -0
- package/resources/ecc/skills/verification-loop/agents/openai.yaml +7 -0
- package/resources/ecc/skills/video-editing/SKILL.md +307 -0
- package/resources/ecc/skills/video-editing/agents/openai.yaml +7 -0
- package/resources/ecc/skills/x-api/SKILL.md +229 -0
- package/resources/ecc/skills/x-api/agents/openai.yaml +7 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../src/modes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Message, CrowcoderConfig } from './types.js';
|
|
2
|
+
export interface SubAgent {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
model: string;
|
|
6
|
+
task: string;
|
|
7
|
+
status: 'pending' | 'running' | 'done' | 'error';
|
|
8
|
+
result?: string;
|
|
9
|
+
startedAt?: number;
|
|
10
|
+
finishedAt?: number;
|
|
11
|
+
tokenCount?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface OrchestrationPlan {
|
|
14
|
+
mainTask: string;
|
|
15
|
+
agents: SubAgent[];
|
|
16
|
+
strategy: 'parallel' | 'sequential' | 'cascade';
|
|
17
|
+
}
|
|
18
|
+
declare function createSubAgent(name: string, task: string, model: string): SubAgent;
|
|
19
|
+
/**
|
|
20
|
+
* Run multiple sub-agents in parallel.
|
|
21
|
+
*/
|
|
22
|
+
export declare function runParallel(agents: SubAgent[], config: CrowcoderConfig, contextMessages: Message[]): Promise<SubAgent[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Run sub-agents sequentially, each seeing prior results.
|
|
25
|
+
*/
|
|
26
|
+
export declare function runSequential(agents: SubAgent[], config: CrowcoderConfig, contextMessages: Message[]): Promise<SubAgent[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Cascade: run fast model first, escalate to powerful if needed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runCascade(task: string, config: CrowcoderConfig, contextMessages: Message[], fastModel: string, powerModel: string): Promise<SubAgent[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Build an orchestration prompt for the AI to decompose a task.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildOrchestrationPrompt(task: string): string;
|
|
35
|
+
export declare function mergeResults(agents: SubAgent[]): string;
|
|
36
|
+
export declare function printOrchestrationStatus(agents: SubAgent[]): void;
|
|
37
|
+
export { createSubAgent };
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-agent orchestration — spawn parallel sub-tasks with different models.
|
|
3
|
+
* Each sub-agent gets its own API call and can use a different model.
|
|
4
|
+
* Results are collected and merged back into the main conversation.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { streamChat } from './api.js';
|
|
8
|
+
import { ALL_TOOLS } from './tools/index.js';
|
|
9
|
+
let agentCounter = 0;
|
|
10
|
+
function createSubAgent(name, task, model) {
|
|
11
|
+
return {
|
|
12
|
+
id: `agent-${++agentCounter}`,
|
|
13
|
+
name,
|
|
14
|
+
model,
|
|
15
|
+
task,
|
|
16
|
+
status: 'pending',
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Run a single sub-agent to completion.
|
|
21
|
+
*/
|
|
22
|
+
async function runSubAgent(agent, config, contextMessages) {
|
|
23
|
+
agent.status = 'running';
|
|
24
|
+
agent.startedAt = Date.now();
|
|
25
|
+
console.log(chalk.cyan(` [${agent.name}] Starting: ${agent.task.slice(0, 80)}...`));
|
|
26
|
+
const subConfig = { ...config, model: agent.model };
|
|
27
|
+
const messages = [
|
|
28
|
+
...contextMessages.slice(-5), // last 5 messages for context
|
|
29
|
+
{ role: 'user', content: agent.task },
|
|
30
|
+
];
|
|
31
|
+
try {
|
|
32
|
+
let result = '';
|
|
33
|
+
for await (const event of streamChat(subConfig, messages, ALL_TOOLS)) {
|
|
34
|
+
if (event.type === 'text' && event.content) {
|
|
35
|
+
result += event.content;
|
|
36
|
+
}
|
|
37
|
+
if (event.type === 'done' && event.usage) {
|
|
38
|
+
agent.tokenCount = event.usage.total;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
agent.result = result;
|
|
42
|
+
agent.status = 'done';
|
|
43
|
+
agent.finishedAt = Date.now();
|
|
44
|
+
const elapsed = ((agent.finishedAt - agent.startedAt) / 1000).toFixed(1);
|
|
45
|
+
console.log(chalk.green(` [${agent.name}] Done (${elapsed}s, ${agent.tokenCount || '?'} tokens)`));
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
agent.status = 'error';
|
|
49
|
+
agent.result = `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
50
|
+
agent.finishedAt = Date.now();
|
|
51
|
+
console.log(chalk.red(` [${agent.name}] Error: ${agent.result}`));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Run multiple sub-agents in parallel.
|
|
56
|
+
*/
|
|
57
|
+
export async function runParallel(agents, config, contextMessages) {
|
|
58
|
+
console.log(chalk.cyan(`\n Orchestrating ${agents.length} agents in parallel...\n`));
|
|
59
|
+
await Promise.all(agents.map((a) => runSubAgent(a, config, contextMessages)));
|
|
60
|
+
return agents;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Run sub-agents sequentially, each seeing prior results.
|
|
64
|
+
*/
|
|
65
|
+
export async function runSequential(agents, config, contextMessages) {
|
|
66
|
+
console.log(chalk.cyan(`\n Orchestrating ${agents.length} agents sequentially...\n`));
|
|
67
|
+
const messages = [...contextMessages];
|
|
68
|
+
for (const agent of agents) {
|
|
69
|
+
await runSubAgent(agent, config, messages);
|
|
70
|
+
if (agent.result) {
|
|
71
|
+
messages.push({ role: 'assistant', content: agent.result });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return agents;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Cascade: run fast model first, escalate to powerful if needed.
|
|
78
|
+
*/
|
|
79
|
+
export async function runCascade(task, config, contextMessages, fastModel, powerModel) {
|
|
80
|
+
console.log(chalk.cyan('\n Cascade: trying fast model first...\n'));
|
|
81
|
+
const fast = createSubAgent('fast-pass', task, fastModel);
|
|
82
|
+
await runSubAgent(fast, config, contextMessages);
|
|
83
|
+
// If fast result is short or contains "I don't know" / error signals, escalate
|
|
84
|
+
const needsEscalation = !fast.result ||
|
|
85
|
+
fast.result.length < 50 ||
|
|
86
|
+
/i('m| am) not sure|i don't know|cannot|unable to/i.test(fast.result);
|
|
87
|
+
if (needsEscalation) {
|
|
88
|
+
console.log(chalk.yellow(' Escalating to powerful model...'));
|
|
89
|
+
const power = createSubAgent('power-pass', task, powerModel);
|
|
90
|
+
await runSubAgent(power, config, contextMessages);
|
|
91
|
+
return [fast, power];
|
|
92
|
+
}
|
|
93
|
+
return [fast];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Build an orchestration prompt for the AI to decompose a task.
|
|
97
|
+
*/
|
|
98
|
+
export function buildOrchestrationPrompt(task) {
|
|
99
|
+
return `Decompose this task into 2-4 parallel sub-tasks that can be executed independently:
|
|
100
|
+
|
|
101
|
+
Task: ${task}
|
|
102
|
+
|
|
103
|
+
For each sub-task, specify:
|
|
104
|
+
1. A short name (e.g., "frontend-changes")
|
|
105
|
+
2. The specific task description
|
|
106
|
+
3. Whether it needs a "fast" model (simple/lookup) or "powerful" model (complex/creative)
|
|
107
|
+
|
|
108
|
+
Format as JSON array:
|
|
109
|
+
[
|
|
110
|
+
{"name": "sub-task-name", "task": "description", "tier": "fast|powerful"},
|
|
111
|
+
...
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
Only output the JSON, no explanation.`;
|
|
115
|
+
}
|
|
116
|
+
export function mergeResults(agents) {
|
|
117
|
+
const parts = [];
|
|
118
|
+
for (const a of agents) {
|
|
119
|
+
if (a.result && a.status === 'done') {
|
|
120
|
+
parts.push(`## ${a.name}\n${a.result}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return parts.join('\n\n---\n\n');
|
|
124
|
+
}
|
|
125
|
+
export function printOrchestrationStatus(agents) {
|
|
126
|
+
console.log(chalk.cyan('\n Agent Status:'));
|
|
127
|
+
for (const a of agents) {
|
|
128
|
+
const icon = a.status === 'done' ? chalk.green('✓') :
|
|
129
|
+
a.status === 'error' ? chalk.red('✗') :
|
|
130
|
+
a.status === 'running' ? chalk.yellow('⟳') : chalk.dim('○');
|
|
131
|
+
const elapsed = a.startedAt && a.finishedAt
|
|
132
|
+
? `${((a.finishedAt - a.startedAt) / 1000).toFixed(1)}s`
|
|
133
|
+
: '';
|
|
134
|
+
console.log(` ${icon} ${a.name.padEnd(20)} ${a.model.padEnd(30)} ${elapsed}`);
|
|
135
|
+
}
|
|
136
|
+
console.log();
|
|
137
|
+
}
|
|
138
|
+
export { createSubAgent };
|
|
139
|
+
//# sourceMappingURL=orchestration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../src/orchestration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface PackageManagerInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
command: string;
|
|
4
|
+
installCmd: string;
|
|
5
|
+
runCmd: string;
|
|
6
|
+
lockFile?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TestRunnerInfo {
|
|
9
|
+
name: string;
|
|
10
|
+
command: string;
|
|
11
|
+
coverageCommand: string;
|
|
12
|
+
framework: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BuildToolInfo {
|
|
15
|
+
name: string;
|
|
16
|
+
command: string;
|
|
17
|
+
watchCommand?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Detects the package manager used in the project.
|
|
21
|
+
* Priority order:
|
|
22
|
+
* 1. CROWCODER_PACKAGE_MANAGER env var
|
|
23
|
+
* 2. .crowcoder/package-manager.json in cwd
|
|
24
|
+
* 3. package.json packageManager field
|
|
25
|
+
* 4. Lock file detection
|
|
26
|
+
* 5. Fallback: which command check
|
|
27
|
+
*/
|
|
28
|
+
export declare function detectPackageManager(cwd: string): PackageManagerInfo;
|
|
29
|
+
/**
|
|
30
|
+
* Detects the test runner used in the project
|
|
31
|
+
*/
|
|
32
|
+
export declare function detectTestRunner(cwd: string): TestRunnerInfo;
|
|
33
|
+
/**
|
|
34
|
+
* Detects the build tool used in the project
|
|
35
|
+
*/
|
|
36
|
+
export declare function detectBuildTool(cwd: string): BuildToolInfo;
|