@yuaone/core 0.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/LICENSE +663 -0
- package/README.md +15 -0
- package/dist/__tests__/context-manager.test.d.ts +6 -0
- package/dist/__tests__/context-manager.test.d.ts.map +1 -0
- package/dist/__tests__/context-manager.test.js +220 -0
- package/dist/__tests__/context-manager.test.js.map +1 -0
- package/dist/__tests__/governor.test.d.ts +6 -0
- package/dist/__tests__/governor.test.d.ts.map +1 -0
- package/dist/__tests__/governor.test.js +210 -0
- package/dist/__tests__/governor.test.js.map +1 -0
- package/dist/__tests__/model-router.test.d.ts +6 -0
- package/dist/__tests__/model-router.test.d.ts.map +1 -0
- package/dist/__tests__/model-router.test.js +329 -0
- package/dist/__tests__/model-router.test.js.map +1 -0
- package/dist/agent-logger.d.ts +384 -0
- package/dist/agent-logger.d.ts.map +1 -0
- package/dist/agent-logger.js +820 -0
- package/dist/agent-logger.js.map +1 -0
- package/dist/agent-loop.d.ts +163 -0
- package/dist/agent-loop.d.ts.map +1 -0
- package/dist/agent-loop.js +609 -0
- package/dist/agent-loop.js.map +1 -0
- package/dist/agent-modes.d.ts +85 -0
- package/dist/agent-modes.d.ts.map +1 -0
- package/dist/agent-modes.js +418 -0
- package/dist/agent-modes.js.map +1 -0
- package/dist/approval.d.ts +137 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +299 -0
- package/dist/approval.js.map +1 -0
- package/dist/async-completion-queue.d.ts +56 -0
- package/dist/async-completion-queue.d.ts.map +1 -0
- package/dist/async-completion-queue.js +77 -0
- package/dist/async-completion-queue.js.map +1 -0
- package/dist/auto-fix.d.ts +174 -0
- package/dist/auto-fix.d.ts.map +1 -0
- package/dist/auto-fix.js +319 -0
- package/dist/auto-fix.js.map +1 -0
- package/dist/codebase-context.d.ts +396 -0
- package/dist/codebase-context.d.ts.map +1 -0
- package/dist/codebase-context.js +1260 -0
- package/dist/codebase-context.js.map +1 -0
- package/dist/conflict-resolver.d.ts +191 -0
- package/dist/conflict-resolver.d.ts.map +1 -0
- package/dist/conflict-resolver.js +524 -0
- package/dist/conflict-resolver.js.map +1 -0
- package/dist/constants.d.ts +52 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +141 -0
- package/dist/constants.js.map +1 -0
- package/dist/context-budget.d.ts +435 -0
- package/dist/context-budget.d.ts.map +1 -0
- package/dist/context-budget.js +903 -0
- package/dist/context-budget.js.map +1 -0
- package/dist/context-compressor.d.ts +143 -0
- package/dist/context-compressor.d.ts.map +1 -0
- package/dist/context-compressor.js +511 -0
- package/dist/context-compressor.js.map +1 -0
- package/dist/context-manager.d.ts +112 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +247 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/continuous-reflection.d.ts +267 -0
- package/dist/continuous-reflection.d.ts.map +1 -0
- package/dist/continuous-reflection.js +338 -0
- package/dist/continuous-reflection.js.map +1 -0
- package/dist/cross-file-refactor.d.ts +352 -0
- package/dist/cross-file-refactor.d.ts.map +1 -0
- package/dist/cross-file-refactor.js +1544 -0
- package/dist/cross-file-refactor.js.map +1 -0
- package/dist/dag-orchestrator.d.ts +138 -0
- package/dist/dag-orchestrator.d.ts.map +1 -0
- package/dist/dag-orchestrator.js +379 -0
- package/dist/dag-orchestrator.js.map +1 -0
- package/dist/debate-orchestrator.d.ts +301 -0
- package/dist/debate-orchestrator.d.ts.map +1 -0
- package/dist/debate-orchestrator.js +719 -0
- package/dist/debate-orchestrator.js.map +1 -0
- package/dist/dependency-analyzer.d.ts +113 -0
- package/dist/dependency-analyzer.d.ts.map +1 -0
- package/dist/dependency-analyzer.js +444 -0
- package/dist/dependency-analyzer.js.map +1 -0
- package/dist/design-loop.d.ts +59 -0
- package/dist/design-loop.d.ts.map +1 -0
- package/dist/design-loop.js +344 -0
- package/dist/design-loop.js.map +1 -0
- package/dist/doc-intelligence.d.ts +383 -0
- package/dist/doc-intelligence.d.ts.map +1 -0
- package/dist/doc-intelligence.js +1307 -0
- package/dist/doc-intelligence.js.map +1 -0
- package/dist/dynamic-role-generator.d.ts +76 -0
- package/dist/dynamic-role-generator.d.ts.map +1 -0
- package/dist/dynamic-role-generator.js +194 -0
- package/dist/dynamic-role-generator.js.map +1 -0
- package/dist/errors.d.ts +69 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +102 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-bus.d.ts +159 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +305 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/execution-engine.d.ts +425 -0
- package/dist/execution-engine.d.ts.map +1 -0
- package/dist/execution-engine.js +1555 -0
- package/dist/execution-engine.js.map +1 -0
- package/dist/git-intelligence.d.ts +306 -0
- package/dist/git-intelligence.d.ts.map +1 -0
- package/dist/git-intelligence.js +1099 -0
- package/dist/git-intelligence.js.map +1 -0
- package/dist/governor.d.ts +77 -0
- package/dist/governor.d.ts.map +1 -0
- package/dist/governor.js +161 -0
- package/dist/governor.js.map +1 -0
- package/dist/hierarchical-planner.d.ts +313 -0
- package/dist/hierarchical-planner.d.ts.map +1 -0
- package/dist/hierarchical-planner.js +981 -0
- package/dist/hierarchical-planner.js.map +1 -0
- package/dist/index.d.ts +121 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +123 -0
- package/dist/index.js.map +1 -0
- package/dist/intent-inference.d.ts +103 -0
- package/dist/intent-inference.d.ts.map +1 -0
- package/dist/intent-inference.js +605 -0
- package/dist/intent-inference.js.map +1 -0
- package/dist/interrupt-manager.d.ts +143 -0
- package/dist/interrupt-manager.d.ts.map +1 -0
- package/dist/interrupt-manager.js +196 -0
- package/dist/interrupt-manager.js.map +1 -0
- package/dist/kernel.d.ts +564 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +1419 -0
- package/dist/kernel.js.map +1 -0
- package/dist/language-support.d.ts +232 -0
- package/dist/language-support.d.ts.map +1 -0
- package/dist/language-support.js +1134 -0
- package/dist/language-support.js.map +1 -0
- package/dist/llm-client.d.ts +82 -0
- package/dist/llm-client.d.ts.map +1 -0
- package/dist/llm-client.js +475 -0
- package/dist/llm-client.js.map +1 -0
- package/dist/mcp-client.d.ts +232 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +718 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/memory-manager.d.ts +200 -0
- package/dist/memory-manager.d.ts.map +1 -0
- package/dist/memory-manager.js +568 -0
- package/dist/memory-manager.js.map +1 -0
- package/dist/memory.d.ts +87 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +341 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-router.d.ts +245 -0
- package/dist/model-router.d.ts.map +1 -0
- package/dist/model-router.js +632 -0
- package/dist/model-router.js.map +1 -0
- package/dist/parallel-executor.d.ts +125 -0
- package/dist/parallel-executor.d.ts.map +1 -0
- package/dist/parallel-executor.js +201 -0
- package/dist/parallel-executor.js.map +1 -0
- package/dist/perf-optimizer.d.ts +212 -0
- package/dist/perf-optimizer.d.ts.map +1 -0
- package/dist/perf-optimizer.js +721 -0
- package/dist/perf-optimizer.js.map +1 -0
- package/dist/persona.d.ts +305 -0
- package/dist/persona.d.ts.map +1 -0
- package/dist/persona.js +887 -0
- package/dist/persona.js.map +1 -0
- package/dist/planner.d.ts +70 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +264 -0
- package/dist/planner.js.map +1 -0
- package/dist/qa-pipeline.d.ts +365 -0
- package/dist/qa-pipeline.d.ts.map +1 -0
- package/dist/qa-pipeline.js +1352 -0
- package/dist/qa-pipeline.js.map +1 -0
- package/dist/reasoning-adapter.d.ts +116 -0
- package/dist/reasoning-adapter.d.ts.map +1 -0
- package/dist/reasoning-adapter.js +187 -0
- package/dist/reasoning-adapter.js.map +1 -0
- package/dist/role-registry.d.ts +55 -0
- package/dist/role-registry.d.ts.map +1 -0
- package/dist/role-registry.js +192 -0
- package/dist/role-registry.js.map +1 -0
- package/dist/sandbox-tiers.d.ts +327 -0
- package/dist/sandbox-tiers.d.ts.map +1 -0
- package/dist/sandbox-tiers.js +928 -0
- package/dist/sandbox-tiers.js.map +1 -0
- package/dist/security-scanner.d.ts +222 -0
- package/dist/security-scanner.d.ts.map +1 -0
- package/dist/security-scanner.js +1129 -0
- package/dist/security-scanner.js.map +1 -0
- package/dist/security.d.ts +93 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +393 -0
- package/dist/security.js.map +1 -0
- package/dist/self-reflection.d.ts +397 -0
- package/dist/self-reflection.d.ts.map +1 -0
- package/dist/self-reflection.js +908 -0
- package/dist/self-reflection.js.map +1 -0
- package/dist/session-persistence.d.ts +191 -0
- package/dist/session-persistence.d.ts.map +1 -0
- package/dist/session-persistence.js +395 -0
- package/dist/session-persistence.js.map +1 -0
- package/dist/speculative-executor.d.ts +210 -0
- package/dist/speculative-executor.d.ts.map +1 -0
- package/dist/speculative-executor.js +618 -0
- package/dist/speculative-executor.js.map +1 -0
- package/dist/state-machine.d.ts +289 -0
- package/dist/state-machine.d.ts.map +1 -0
- package/dist/state-machine.js +695 -0
- package/dist/state-machine.js.map +1 -0
- package/dist/sub-agent.d.ts +177 -0
- package/dist/sub-agent.d.ts.map +1 -0
- package/dist/sub-agent.js +303 -0
- package/dist/sub-agent.js.map +1 -0
- package/dist/system-prompt.d.ts +26 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +84 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/test-intelligence.d.ts +439 -0
- package/dist/test-intelligence.d.ts.map +1 -0
- package/dist/test-intelligence.js +1165 -0
- package/dist/test-intelligence.js.map +1 -0
- package/dist/types.d.ts +632 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/vector-index.d.ts +314 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +618 -0
- package/dist/vector-index.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../src/state-machine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sub-agent
|
|
3
|
+
* @description 서브 에이전트 라이프사이클 관리 — 생성, 컨텍스트 준비, 실행, 결과 수집.
|
|
4
|
+
*
|
|
5
|
+
* 서브 에이전트는 독립된 LLM 세션으로 실행되며,
|
|
6
|
+
* 대상 파일 범위가 제한된 전용 시스템 프롬프트를 받는다.
|
|
7
|
+
*
|
|
8
|
+
* Lifecycle: SPAWN → INIT → EXECUTE → VALIDATE → REPORT → CLEANUP
|
|
9
|
+
*/
|
|
10
|
+
import { EventEmitter } from "node:events";
|
|
11
|
+
import type { BYOKConfig, ToolExecutor } from "./types.js";
|
|
12
|
+
import type { GovernorConfig } from "./governor.js";
|
|
13
|
+
/** Sub-agent lifecycle phase */
|
|
14
|
+
export type SubAgentPhase = "spawn" | "init" | "execute" | "validate" | "report" | "cleanup";
|
|
15
|
+
/** Configuration for spawning a sub-agent */
|
|
16
|
+
export interface SubAgentConfig {
|
|
17
|
+
/** Unique task identifier */
|
|
18
|
+
taskId: string;
|
|
19
|
+
/** Task goal description */
|
|
20
|
+
goal: string;
|
|
21
|
+
/** Files this sub-agent is allowed to write */
|
|
22
|
+
targetFiles: string[];
|
|
23
|
+
/** Files this sub-agent may read (read-only) */
|
|
24
|
+
readFiles: string[];
|
|
25
|
+
/** Maximum iterations before forced stop */
|
|
26
|
+
maxIterations: number;
|
|
27
|
+
/** Absolute path to the project root */
|
|
28
|
+
projectPath: string;
|
|
29
|
+
/** BYOK configuration for LLM calls */
|
|
30
|
+
byokConfig: BYOKConfig;
|
|
31
|
+
/** List of tool names to enable for this sub-agent */
|
|
32
|
+
tools: string[];
|
|
33
|
+
/** Factory to create a ToolExecutor scoped to workDir and enabled tools */
|
|
34
|
+
createToolExecutor: (workDir: string, enabledTools?: string[]) => ToolExecutor;
|
|
35
|
+
/** Task priority (0–10, higher is more urgent) */
|
|
36
|
+
priority?: number;
|
|
37
|
+
/** Governor configuration overrides */
|
|
38
|
+
governorConfig?: Partial<GovernorConfig>;
|
|
39
|
+
}
|
|
40
|
+
/** Result returned when a sub-agent completes (success or failure) */
|
|
41
|
+
export interface SubAgentResult {
|
|
42
|
+
/** Task identifier */
|
|
43
|
+
taskId: string;
|
|
44
|
+
/** Whether the task goal was achieved */
|
|
45
|
+
success: boolean;
|
|
46
|
+
/** Human-readable summary of what was done */
|
|
47
|
+
summary: string;
|
|
48
|
+
/** Files changed with unified diffs */
|
|
49
|
+
changedFiles: {
|
|
50
|
+
path: string;
|
|
51
|
+
diff: string;
|
|
52
|
+
}[];
|
|
53
|
+
/** Token consumption */
|
|
54
|
+
tokensUsed: {
|
|
55
|
+
input: number;
|
|
56
|
+
output: number;
|
|
57
|
+
};
|
|
58
|
+
/** Number of loop iterations executed */
|
|
59
|
+
iterations: number;
|
|
60
|
+
/** Phase at completion */
|
|
61
|
+
phase: SubAgentPhase;
|
|
62
|
+
/** Error message if the sub-agent failed */
|
|
63
|
+
error?: string;
|
|
64
|
+
}
|
|
65
|
+
/** DAG context passed to a sub-agent so it understands its place in the plan */
|
|
66
|
+
export interface DAGContextLike {
|
|
67
|
+
/** The overall user goal for the entire DAG */
|
|
68
|
+
overallGoal: string;
|
|
69
|
+
/** Total number of tasks in the DAG */
|
|
70
|
+
totalTasks: number;
|
|
71
|
+
/** Already-completed tasks with summaries */
|
|
72
|
+
completedTasks: {
|
|
73
|
+
taskId: string;
|
|
74
|
+
summary: string;
|
|
75
|
+
}[];
|
|
76
|
+
/** Task IDs currently running in parallel */
|
|
77
|
+
runningTasks: string[];
|
|
78
|
+
/** Project directory tree (depth-limited) */
|
|
79
|
+
projectStructure?: string;
|
|
80
|
+
/** Results from dependency tasks (changedFiles + summary) */
|
|
81
|
+
dependencyResults?: {
|
|
82
|
+
taskId: string;
|
|
83
|
+
summary: string;
|
|
84
|
+
changedFiles: {
|
|
85
|
+
path: string;
|
|
86
|
+
diff: string;
|
|
87
|
+
}[];
|
|
88
|
+
}[];
|
|
89
|
+
}
|
|
90
|
+
export interface SubAgentEvents {
|
|
91
|
+
"subagent:phase": (taskId: string, phase: SubAgentPhase) => void;
|
|
92
|
+
"subagent:iteration": (taskId: string, index: number, tokensUsed: number) => void;
|
|
93
|
+
"subagent:complete": (result: SubAgentResult) => void;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* SubAgent — manages a single sub-agent's lifecycle from spawn to cleanup.
|
|
97
|
+
*
|
|
98
|
+
* Each SubAgent creates its own AgentLoop internally, scoped to a limited
|
|
99
|
+
* set of target files and tools. It runs to completion and returns a
|
|
100
|
+
* structured result.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const sub = new SubAgent({
|
|
105
|
+
* taskId: "T1",
|
|
106
|
+
* goal: "Add error handling to api.ts",
|
|
107
|
+
* targetFiles: ["src/api.ts"],
|
|
108
|
+
* readFiles: ["src/types.ts"],
|
|
109
|
+
* maxIterations: 15,
|
|
110
|
+
* projectPath: "/project",
|
|
111
|
+
* byokConfig: { provider: "anthropic", apiKey: "..." },
|
|
112
|
+
* tools: ["file_read", "file_write", "file_edit"],
|
|
113
|
+
* createToolExecutor: (dir, tools) => createExecutor(dir, tools),
|
|
114
|
+
* });
|
|
115
|
+
*
|
|
116
|
+
* sub.on("subagent:phase", (id, phase) => console.log(id, phase));
|
|
117
|
+
* const result = await sub.run(dagContext);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare class SubAgent extends EventEmitter {
|
|
121
|
+
/** Task identifier for this sub-agent */
|
|
122
|
+
readonly taskId: string;
|
|
123
|
+
private phase;
|
|
124
|
+
private aborted;
|
|
125
|
+
private readonly config;
|
|
126
|
+
private agentLoop;
|
|
127
|
+
private iterationCount;
|
|
128
|
+
constructor(config: SubAgentConfig);
|
|
129
|
+
/**
|
|
130
|
+
* Build the sub-agent system prompt with scope constraints.
|
|
131
|
+
*
|
|
132
|
+
* The prompt follows the design doc section 3.7.2 pattern:
|
|
133
|
+
* - Role definition with specific goal
|
|
134
|
+
* - File scope (WRITE targets, READ-ONLY references)
|
|
135
|
+
* - DAG context (overall mission, completed/running tasks)
|
|
136
|
+
* - Iteration constraints and summary requirement
|
|
137
|
+
*
|
|
138
|
+
* @param dagContext Context about the overall DAG execution
|
|
139
|
+
* @returns Fully constructed system prompt string
|
|
140
|
+
*/
|
|
141
|
+
buildPrompt(dagContext: DAGContextLike): string;
|
|
142
|
+
/**
|
|
143
|
+
* Run the sub-agent to completion.
|
|
144
|
+
*
|
|
145
|
+
* Creates an AgentLoop internally, runs it with the task goal,
|
|
146
|
+
* and collects results including changed files (via git diff).
|
|
147
|
+
*
|
|
148
|
+
* @param dagContext Context about the overall DAG execution
|
|
149
|
+
* @returns Structured result with success status, summary, changed files, and token usage
|
|
150
|
+
*/
|
|
151
|
+
run(dagContext: DAGContextLike): Promise<SubAgentResult>;
|
|
152
|
+
/**
|
|
153
|
+
* Abort the running sub-agent.
|
|
154
|
+
* The current iteration will complete, but no further iterations will start.
|
|
155
|
+
*/
|
|
156
|
+
abort(): void;
|
|
157
|
+
/**
|
|
158
|
+
* Get the current lifecycle phase.
|
|
159
|
+
* @returns Current SubAgentPhase
|
|
160
|
+
*/
|
|
161
|
+
getPhase(): SubAgentPhase;
|
|
162
|
+
private setPhase;
|
|
163
|
+
/**
|
|
164
|
+
* Collect changed files by running `git diff` in the project directory.
|
|
165
|
+
* Returns an array of { path, diff } for each modified file.
|
|
166
|
+
*/
|
|
167
|
+
private collectChangedFiles;
|
|
168
|
+
/**
|
|
169
|
+
* Extract a human-readable summary from the agent termination result.
|
|
170
|
+
*/
|
|
171
|
+
private extractSummary;
|
|
172
|
+
/**
|
|
173
|
+
* Build a SubAgentResult from the collected data.
|
|
174
|
+
*/
|
|
175
|
+
private buildResult;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=sub-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent.d.ts","sourceRoot":"","sources":["../src/sub-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sub-agent
|
|
3
|
+
* @description 서브 에이전트 라이프사이클 관리 — 생성, 컨텍스트 준비, 실행, 결과 수집.
|
|
4
|
+
*
|
|
5
|
+
* 서브 에이전트는 독립된 LLM 세션으로 실행되며,
|
|
6
|
+
* 대상 파일 범위가 제한된 전용 시스템 프롬프트를 받는다.
|
|
7
|
+
*
|
|
8
|
+
* Lifecycle: SPAWN → INIT → EXECUTE → VALIDATE → REPORT → CLEANUP
|
|
9
|
+
*/
|
|
10
|
+
import { EventEmitter } from "node:events";
|
|
11
|
+
import { execFile } from "node:child_process";
|
|
12
|
+
import { promisify } from "node:util";
|
|
13
|
+
import { AgentLoop } from "./agent-loop.js";
|
|
14
|
+
const execFileAsync = promisify(execFile);
|
|
15
|
+
// ─── SubAgent Class ───
|
|
16
|
+
/**
|
|
17
|
+
* SubAgent — manages a single sub-agent's lifecycle from spawn to cleanup.
|
|
18
|
+
*
|
|
19
|
+
* Each SubAgent creates its own AgentLoop internally, scoped to a limited
|
|
20
|
+
* set of target files and tools. It runs to completion and returns a
|
|
21
|
+
* structured result.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const sub = new SubAgent({
|
|
26
|
+
* taskId: "T1",
|
|
27
|
+
* goal: "Add error handling to api.ts",
|
|
28
|
+
* targetFiles: ["src/api.ts"],
|
|
29
|
+
* readFiles: ["src/types.ts"],
|
|
30
|
+
* maxIterations: 15,
|
|
31
|
+
* projectPath: "/project",
|
|
32
|
+
* byokConfig: { provider: "anthropic", apiKey: "..." },
|
|
33
|
+
* tools: ["file_read", "file_write", "file_edit"],
|
|
34
|
+
* createToolExecutor: (dir, tools) => createExecutor(dir, tools),
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* sub.on("subagent:phase", (id, phase) => console.log(id, phase));
|
|
38
|
+
* const result = await sub.run(dagContext);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export class SubAgent extends EventEmitter {
|
|
42
|
+
/** Task identifier for this sub-agent */
|
|
43
|
+
taskId;
|
|
44
|
+
phase = "spawn";
|
|
45
|
+
aborted = false;
|
|
46
|
+
config;
|
|
47
|
+
agentLoop = null;
|
|
48
|
+
iterationCount = 0;
|
|
49
|
+
constructor(config) {
|
|
50
|
+
super();
|
|
51
|
+
this.config = config;
|
|
52
|
+
this.taskId = config.taskId;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build the sub-agent system prompt with scope constraints.
|
|
56
|
+
*
|
|
57
|
+
* The prompt follows the design doc section 3.7.2 pattern:
|
|
58
|
+
* - Role definition with specific goal
|
|
59
|
+
* - File scope (WRITE targets, READ-ONLY references)
|
|
60
|
+
* - DAG context (overall mission, completed/running tasks)
|
|
61
|
+
* - Iteration constraints and summary requirement
|
|
62
|
+
*
|
|
63
|
+
* @param dagContext Context about the overall DAG execution
|
|
64
|
+
* @returns Fully constructed system prompt string
|
|
65
|
+
*/
|
|
66
|
+
buildPrompt(dagContext) {
|
|
67
|
+
const sections = [];
|
|
68
|
+
// 1. Role definition
|
|
69
|
+
sections.push(`You are a YUAN Sub-Agent. Your role: ${this.config.goal}`);
|
|
70
|
+
// 2. File scope
|
|
71
|
+
sections.push(`## Your Scope
|
|
72
|
+
- Target files (WRITE): ${this.config.targetFiles.length > 0 ? this.config.targetFiles.join(", ") : "(none)"}
|
|
73
|
+
- Reference files (READ-ONLY): ${this.config.readFiles.length > 0 ? this.config.readFiles.join(", ") : "(none)"}
|
|
74
|
+
- DO NOT modify files outside your target scope.
|
|
75
|
+
- If you need to read a file not listed above, you may use file_read, but NEVER write outside target files.`);
|
|
76
|
+
// 3. Overall mission
|
|
77
|
+
sections.push(`## Overall Mission
|
|
78
|
+
${dagContext.overallGoal}`);
|
|
79
|
+
// 4. DAG context
|
|
80
|
+
const completedSummaries = dagContext.completedTasks.length > 0
|
|
81
|
+
? dagContext.completedTasks
|
|
82
|
+
.map((t) => ` - [${t.taskId}] ${t.summary}`)
|
|
83
|
+
.join("\n")
|
|
84
|
+
: " (none yet)";
|
|
85
|
+
const runningSiblings = dagContext.runningTasks.length > 0
|
|
86
|
+
? dagContext.runningTasks.join(", ")
|
|
87
|
+
: "(none)";
|
|
88
|
+
sections.push(`## DAG Context
|
|
89
|
+
- Total tasks: ${dagContext.totalTasks}
|
|
90
|
+
- Your task ID: ${this.config.taskId} (priority: ${this.config.priority ?? 5})
|
|
91
|
+
- Dependencies completed:
|
|
92
|
+
${completedSummaries}
|
|
93
|
+
- Parallel siblings: ${runningSiblings}`);
|
|
94
|
+
// 5. Dependency results (if any)
|
|
95
|
+
if (dagContext.dependencyResults &&
|
|
96
|
+
dagContext.dependencyResults.length > 0) {
|
|
97
|
+
const depDetails = dagContext.dependencyResults
|
|
98
|
+
.map((d) => {
|
|
99
|
+
const files = d.changedFiles
|
|
100
|
+
.map((f) => ` - ${f.path}`)
|
|
101
|
+
.join("\n");
|
|
102
|
+
return ` [${d.taskId}] ${d.summary}\n Changed files:\n${files}`;
|
|
103
|
+
})
|
|
104
|
+
.join("\n\n");
|
|
105
|
+
sections.push(`## Dependency Results
|
|
106
|
+
The following tasks completed before you. Their changes are already applied:
|
|
107
|
+
|
|
108
|
+
${depDetails}`);
|
|
109
|
+
}
|
|
110
|
+
// 6. Project structure (if available)
|
|
111
|
+
if (dagContext.projectStructure) {
|
|
112
|
+
sections.push(`## Project Structure
|
|
113
|
+
\`\`\`
|
|
114
|
+
${dagContext.projectStructure}
|
|
115
|
+
\`\`\``);
|
|
116
|
+
}
|
|
117
|
+
// 7. Constraints
|
|
118
|
+
const maxIter = this.config.maxIterations;
|
|
119
|
+
sections.push(`## Constraints
|
|
120
|
+
- Max iterations: ${maxIter}
|
|
121
|
+
- When done, provide a structured summary of ALL changes made.
|
|
122
|
+
- If you encounter an issue outside your scope, report it — don't fix it.
|
|
123
|
+
- Focus on completing your specific goal efficiently.`);
|
|
124
|
+
return sections.join("\n\n").trim();
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Run the sub-agent to completion.
|
|
128
|
+
*
|
|
129
|
+
* Creates an AgentLoop internally, runs it with the task goal,
|
|
130
|
+
* and collects results including changed files (via git diff).
|
|
131
|
+
*
|
|
132
|
+
* @param dagContext Context about the overall DAG execution
|
|
133
|
+
* @returns Structured result with success status, summary, changed files, and token usage
|
|
134
|
+
*/
|
|
135
|
+
async run(dagContext) {
|
|
136
|
+
if (this.aborted) {
|
|
137
|
+
return this.buildResult(false, "Aborted before start", [], 0, 0);
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
// Phase: INIT
|
|
141
|
+
this.setPhase("init");
|
|
142
|
+
// Build the scoped system prompt
|
|
143
|
+
const systemPrompt = this.buildPrompt(dagContext);
|
|
144
|
+
// Create a ToolExecutor scoped to the project path and enabled tools
|
|
145
|
+
const toolExecutor = this.config.createToolExecutor(this.config.projectPath, this.config.tools);
|
|
146
|
+
// Create an AgentLoop with the sub-agent prompt
|
|
147
|
+
const governorConfig = {
|
|
148
|
+
planTier: "PRO",
|
|
149
|
+
...this.config.governorConfig,
|
|
150
|
+
};
|
|
151
|
+
this.agentLoop = new AgentLoop({
|
|
152
|
+
config: {
|
|
153
|
+
byok: this.config.byokConfig,
|
|
154
|
+
loop: {
|
|
155
|
+
model: "coding",
|
|
156
|
+
maxIterations: this.config.maxIterations,
|
|
157
|
+
maxTokensPerIteration: 16_384,
|
|
158
|
+
totalTokenBudget: this.config.maxIterations * 16_384,
|
|
159
|
+
tools: toolExecutor.definitions,
|
|
160
|
+
systemPrompt,
|
|
161
|
+
projectPath: this.config.projectPath,
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
toolExecutor,
|
|
165
|
+
governorConfig,
|
|
166
|
+
});
|
|
167
|
+
// Forward iteration events
|
|
168
|
+
this.agentLoop.on("event", (event) => {
|
|
169
|
+
if (event.kind === "agent:iteration") {
|
|
170
|
+
this.iterationCount = event.index;
|
|
171
|
+
this.emit("subagent:iteration", this.taskId, event.index, event.tokensUsed);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
// Phase: EXECUTE
|
|
175
|
+
if (this.aborted) {
|
|
176
|
+
return this.buildResult(false, "Aborted during init", [], 0, 0);
|
|
177
|
+
}
|
|
178
|
+
this.setPhase("execute");
|
|
179
|
+
// Run the agent loop
|
|
180
|
+
const termination = await this.agentLoop.run(this.config.goal);
|
|
181
|
+
if (this.aborted) {
|
|
182
|
+
return this.buildResult(false, "Aborted during execution", [], 0, 0);
|
|
183
|
+
}
|
|
184
|
+
// Phase: VALIDATE
|
|
185
|
+
this.setPhase("validate");
|
|
186
|
+
// Collect changed files via git diff
|
|
187
|
+
const changedFiles = await this.collectChangedFiles();
|
|
188
|
+
// Get token usage
|
|
189
|
+
const tokenUsage = this.agentLoop.getTokenUsage();
|
|
190
|
+
// Phase: REPORT
|
|
191
|
+
this.setPhase("report");
|
|
192
|
+
// Determine success and build summary
|
|
193
|
+
const success = termination.reason === "GOAL_ACHIEVED";
|
|
194
|
+
const summary = this.extractSummary(termination);
|
|
195
|
+
const result = this.buildResult(success, summary, changedFiles, tokenUsage.input, tokenUsage.output, success ? undefined : `Terminated: ${termination.reason}`);
|
|
196
|
+
// Phase: CLEANUP
|
|
197
|
+
this.setPhase("cleanup");
|
|
198
|
+
this.emit("subagent:complete", result);
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
203
|
+
this.setPhase("cleanup");
|
|
204
|
+
const result = this.buildResult(false, `Sub-agent failed: ${errorMessage}`, [], 0, 0, errorMessage);
|
|
205
|
+
this.emit("subagent:complete", result);
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Abort the running sub-agent.
|
|
211
|
+
* The current iteration will complete, but no further iterations will start.
|
|
212
|
+
*/
|
|
213
|
+
abort() {
|
|
214
|
+
this.aborted = true;
|
|
215
|
+
if (this.agentLoop) {
|
|
216
|
+
this.agentLoop.abort();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get the current lifecycle phase.
|
|
221
|
+
* @returns Current SubAgentPhase
|
|
222
|
+
*/
|
|
223
|
+
getPhase() {
|
|
224
|
+
return this.phase;
|
|
225
|
+
}
|
|
226
|
+
// ─── Private Helpers ───
|
|
227
|
+
setPhase(phase) {
|
|
228
|
+
this.phase = phase;
|
|
229
|
+
this.emit("subagent:phase", this.taskId, phase);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Collect changed files by running `git diff` in the project directory.
|
|
233
|
+
* Returns an array of { path, diff } for each modified file.
|
|
234
|
+
*/
|
|
235
|
+
async collectChangedFiles() {
|
|
236
|
+
try {
|
|
237
|
+
const { stdout } = await execFileAsync("git", ["diff", "--name-only"], { cwd: this.config.projectPath, timeout: 10_000 });
|
|
238
|
+
const files = stdout
|
|
239
|
+
.trim()
|
|
240
|
+
.split("\n")
|
|
241
|
+
.filter((f) => f.length > 0);
|
|
242
|
+
if (files.length === 0)
|
|
243
|
+
return [];
|
|
244
|
+
const results = [];
|
|
245
|
+
for (const filePath of files) {
|
|
246
|
+
// Only include files in our target scope
|
|
247
|
+
const isTargetFile = this.config.targetFiles.some((t) => filePath === t || filePath.endsWith(`/${t}`) || t.endsWith(`/${filePath}`));
|
|
248
|
+
if (!isTargetFile)
|
|
249
|
+
continue;
|
|
250
|
+
try {
|
|
251
|
+
const { stdout: diff } = await execFileAsync("git", ["diff", "--", filePath], { cwd: this.config.projectPath, timeout: 10_000 });
|
|
252
|
+
results.push({ path: filePath, diff });
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// If git diff fails for a single file, skip it
|
|
256
|
+
results.push({ path: filePath, diff: "(diff unavailable)" });
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return results;
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// git not available or not a git repo — return empty
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Extract a human-readable summary from the agent termination result.
|
|
268
|
+
*/
|
|
269
|
+
extractSummary(termination) {
|
|
270
|
+
switch (termination.reason) {
|
|
271
|
+
case "GOAL_ACHIEVED":
|
|
272
|
+
return termination.summary;
|
|
273
|
+
case "MAX_ITERATIONS":
|
|
274
|
+
return `Reached iteration limit: ${termination.lastState}`;
|
|
275
|
+
case "BUDGET_EXHAUSTED":
|
|
276
|
+
return `Token budget exhausted (${termination.tokensUsed} tokens used)`;
|
|
277
|
+
case "USER_CANCELLED":
|
|
278
|
+
return "Cancelled by user or orchestrator";
|
|
279
|
+
case "ERROR":
|
|
280
|
+
return `Error: ${termination.error}`;
|
|
281
|
+
case "NEEDS_APPROVAL":
|
|
282
|
+
return `Blocked on approval: ${termination.action.description}`;
|
|
283
|
+
default:
|
|
284
|
+
return "Unknown termination";
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Build a SubAgentResult from the collected data.
|
|
289
|
+
*/
|
|
290
|
+
buildResult(success, summary, changedFiles, inputTokens, outputTokens, error) {
|
|
291
|
+
return {
|
|
292
|
+
taskId: this.taskId,
|
|
293
|
+
success,
|
|
294
|
+
summary,
|
|
295
|
+
changedFiles,
|
|
296
|
+
tokensUsed: { input: inputTokens, output: outputTokens },
|
|
297
|
+
iterations: this.iterationCount,
|
|
298
|
+
phase: this.phase,
|
|
299
|
+
error,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=sub-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent.js","sourceRoot":"","sources":["../src/sub-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module system-prompt
|
|
3
|
+
* @description 시스템 프롬프트 생성.
|
|
4
|
+
* YUAN.md 내용 + 도구 목록 + 프로젝트 구조를 조합하여
|
|
5
|
+
* 에이전트의 시스템 프롬프트를 구성한다.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolDefinition } from "./types.js";
|
|
8
|
+
import type { ProjectStructure } from "./memory.js";
|
|
9
|
+
/** 시스템 프롬프트 빌드 옵션 */
|
|
10
|
+
export interface SystemPromptOptions {
|
|
11
|
+
/** 프로젝트 구조 분석 결과 */
|
|
12
|
+
projectStructure?: ProjectStructure;
|
|
13
|
+
/** YUAN.md 내용 */
|
|
14
|
+
yuanMdContent?: string;
|
|
15
|
+
/** 사용 가능한 도구 목록 */
|
|
16
|
+
tools: ToolDefinition[];
|
|
17
|
+
/** 추가 규칙/지시 */
|
|
18
|
+
additionalRules?: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 에이전트 시스템 프롬프트를 생성.
|
|
22
|
+
* @param options 프롬프트 빌드 옵션
|
|
23
|
+
* @returns 완성된 시스템 프롬프트 문자열
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildSystemPrompt(options: SystemPromptOptions): string;
|
|
26
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,qBAAqB;AACrB,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,eAAe;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAkCtE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module system-prompt
|
|
3
|
+
* @description 시스템 프롬프트 생성.
|
|
4
|
+
* YUAN.md 내용 + 도구 목록 + 프로젝트 구조를 조합하여
|
|
5
|
+
* 에이전트의 시스템 프롬프트를 구성한다.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 에이전트 시스템 프롬프트를 생성.
|
|
9
|
+
* @param options 프롬프트 빌드 옵션
|
|
10
|
+
* @returns 완성된 시스템 프롬프트 문자열
|
|
11
|
+
*/
|
|
12
|
+
export function buildSystemPrompt(options) {
|
|
13
|
+
const sections = [];
|
|
14
|
+
// 1. 에이전트 역할 정의
|
|
15
|
+
sections.push(AGENT_ROLE);
|
|
16
|
+
// 2. 프로젝트 컨텍스트
|
|
17
|
+
if (options.projectStructure) {
|
|
18
|
+
sections.push(buildProjectSection(options.projectStructure));
|
|
19
|
+
}
|
|
20
|
+
// 3. YUAN.md 내용
|
|
21
|
+
if (options.yuanMdContent) {
|
|
22
|
+
sections.push(`## Project Memory (YUAN.md)\n\n${options.yuanMdContent}`);
|
|
23
|
+
}
|
|
24
|
+
// 4. 도구 목록
|
|
25
|
+
if (options.tools.length > 0) {
|
|
26
|
+
sections.push(buildToolsSection(options.tools));
|
|
27
|
+
}
|
|
28
|
+
// 5. 규칙
|
|
29
|
+
sections.push(AGENT_RULES);
|
|
30
|
+
// 6. 추가 규칙
|
|
31
|
+
if (options.additionalRules?.length) {
|
|
32
|
+
sections.push(`## Additional Rules\n\n${options.additionalRules.map((r) => `- ${r}`).join("\n")}`);
|
|
33
|
+
}
|
|
34
|
+
return sections.join("\n\n---\n\n").trim();
|
|
35
|
+
}
|
|
36
|
+
// ─── Prompt Sections ───
|
|
37
|
+
const AGENT_ROLE = `You are YUAN, an expert AI coding agent. You have full access to the user's project through tools.
|
|
38
|
+
|
|
39
|
+
Your job is to understand the user's request, explore the codebase, make changes, and verify correctness.
|
|
40
|
+
|
|
41
|
+
You operate in a loop: think about what to do, use tools to explore or modify the project, observe results, and repeat until the task is complete.`;
|
|
42
|
+
function buildProjectSection(structure) {
|
|
43
|
+
return `## Project Context
|
|
44
|
+
|
|
45
|
+
- **Language:** ${structure.primaryLanguage}
|
|
46
|
+
- **Framework:** ${structure.framework}
|
|
47
|
+
- **Package Manager:** ${structure.packageManager}
|
|
48
|
+
- **Entry Point:** ${structure.entryPoint}
|
|
49
|
+
- **Total Files:** ${structure.fileCount}
|
|
50
|
+
|
|
51
|
+
### Project Structure
|
|
52
|
+
\`\`\`
|
|
53
|
+
${structure.treeView}
|
|
54
|
+
\`\`\``;
|
|
55
|
+
}
|
|
56
|
+
function buildToolsSection(tools) {
|
|
57
|
+
const toolDescriptions = tools
|
|
58
|
+
.map((t) => {
|
|
59
|
+
const params = t.parameters.properties
|
|
60
|
+
? Object.keys(t.parameters.properties).join(", ")
|
|
61
|
+
: "none";
|
|
62
|
+
return `- **${t.name}**(${params}): ${t.description}`;
|
|
63
|
+
})
|
|
64
|
+
.join("\n");
|
|
65
|
+
return `## Available Tools
|
|
66
|
+
|
|
67
|
+
You can use the following tools to explore and modify the project:
|
|
68
|
+
|
|
69
|
+
${toolDescriptions}
|
|
70
|
+
|
|
71
|
+
When you need to use a tool, include it as a tool_call in your response.`;
|
|
72
|
+
}
|
|
73
|
+
const AGENT_RULES = `## Rules
|
|
74
|
+
|
|
75
|
+
1. **Always read a file before editing it.** Understand the context first.
|
|
76
|
+
2. **Make minimal, focused changes.** Don't refactor unnecessarily.
|
|
77
|
+
3. **Run tests/build after changes** to verify correctness (when possible).
|
|
78
|
+
4. **Check dependencies** before changes that might break other files.
|
|
79
|
+
5. **Ask for user approval** before destructive operations (delete, overwrite large files).
|
|
80
|
+
6. **Keep the user informed** with brief status updates about your progress.
|
|
81
|
+
7. **Never modify files outside the project directory.**
|
|
82
|
+
8. **Never expose secrets** (API keys, passwords, tokens) in your responses.
|
|
83
|
+
9. **When done**, provide a clear summary of all changes made.`;
|
|
84
|
+
//# sourceMappingURL=system-prompt.js.map
|